Imported Upstream version 1.12.1 upstream-tar upstream/1.12.1
authorAnas Nashif <anas.nashif@intel.com>
Tue, 30 Oct 2012 03:27:02 +0000 (20:27 -0700)
committerAnas Nashif <anas.nashif@intel.com>
Tue, 30 Oct 2012 03:27:02 +0000 (20:27 -0700)
1549 files changed:
.git-log-fix [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
GNUmakefile [new file with mode: 0644]
HACKING [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
THANKS [new file with mode: 0644]
aclocal.in [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
automake.in [new file with mode: 0644]
bootstrap.sh [new file with mode: 0755]
configure [new file with mode: 0755]
configure.ac [new file with mode: 0644]
contrib/README [new file with mode: 0644]
contrib/check-html.am [new file with mode: 0644]
contrib/multilib/README [new file with mode: 0644]
contrib/multilib/config-ml.in [new file with mode: 0644]
contrib/multilib/multi.m4 [new file with mode: 0644]
contrib/multilib/multilib.am [new file with mode: 0644]
contrib/multilib/symlink-tree [new file with mode: 0755]
defs [new file with mode: 0644]
defs-static.in [new file with mode: 0644]
doc/amhello-1.0.tar.gz [new file with mode: 0644]
doc/amhello/Makefile.am [new file with mode: 0644]
doc/amhello/README [new file with mode: 0644]
doc/amhello/configure.ac [new file with mode: 0644]
doc/amhello/src/Makefile.am [new file with mode: 0644]
doc/amhello/src/main.c [new file with mode: 0644]
doc/automake-history.info [new file with mode: 0644]
doc/automake-history.texi [new file with mode: 0644]
doc/automake.info [new file with mode: 0644]
doc/automake.info-1 [new file with mode: 0644]
doc/automake.info-2 [new file with mode: 0644]
doc/automake.info-3 [new file with mode: 0644]
doc/automake.texi [new file with mode: 0644]
doc/fdl.texi [new file with mode: 0644]
doc/help2man [new file with mode: 0755]
doc/stamp-vti [new file with mode: 0644]
doc/version.texi [new file with mode: 0644]
gen-testsuite-part [new file with mode: 0755]
lib/Automake/ChannelDefs.pm [new file with mode: 0644]
lib/Automake/Channels.pm [new file with mode: 0644]
lib/Automake/Condition.pm [new file with mode: 0644]
lib/Automake/Config.in [new file with mode: 0644]
lib/Automake/Configure_ac.pm [new file with mode: 0644]
lib/Automake/DisjConditions.pm [new file with mode: 0644]
lib/Automake/FileUtils.pm [new file with mode: 0644]
lib/Automake/General.pm [new file with mode: 0644]
lib/Automake/Getopt.pm [new file with mode: 0644]
lib/Automake/Item.pm [new file with mode: 0644]
lib/Automake/ItemDef.pm [new file with mode: 0644]
lib/Automake/Location.pm [new file with mode: 0644]
lib/Automake/Options.pm [new file with mode: 0644]
lib/Automake/Rule.pm [new file with mode: 0644]
lib/Automake/RuleDef.pm [new file with mode: 0644]
lib/Automake/VarDef.pm [new file with mode: 0644]
lib/Automake/Variable.pm [new file with mode: 0644]
lib/Automake/Version.pm [new file with mode: 0644]
lib/Automake/Wrap.pm [new file with mode: 0644]
lib/Automake/XFile.pm [new file with mode: 0644]
lib/COPYING [new file with mode: 0644]
lib/INSTALL [new file with mode: 0644]
lib/am/check.am [new file with mode: 0644]
lib/am/check2.am [new file with mode: 0644]
lib/am/clean-hdr.am [new file with mode: 0644]
lib/am/clean.am [new file with mode: 0644]
lib/am/compile.am [new file with mode: 0644]
lib/am/configure.am [new file with mode: 0644]
lib/am/data.am [new file with mode: 0644]
lib/am/dejagnu.am [new file with mode: 0644]
lib/am/depend.am [new file with mode: 0644]
lib/am/depend2.am [new file with mode: 0644]
lib/am/distdir.am [new file with mode: 0644]
lib/am/footer.am [new file with mode: 0644]
lib/am/header-vars.am [new file with mode: 0644]
lib/am/header.am [new file with mode: 0644]
lib/am/inst-vars.am [new file with mode: 0644]
lib/am/install.am [new file with mode: 0644]
lib/am/java.am [new file with mode: 0644]
lib/am/lang-compile.am [new file with mode: 0644]
lib/am/lex.am [new file with mode: 0644]
lib/am/library.am [new file with mode: 0644]
lib/am/libs.am [new file with mode: 0644]
lib/am/libtool.am [new file with mode: 0644]
lib/am/lisp.am [new file with mode: 0644]
lib/am/ltlib.am [new file with mode: 0644]
lib/am/ltlibrary.am [new file with mode: 0644]
lib/am/mans-vars.am [new file with mode: 0644]
lib/am/mans.am [new file with mode: 0644]
lib/am/program.am [new file with mode: 0644]
lib/am/progs.am [new file with mode: 0644]
lib/am/python.am [new file with mode: 0644]
lib/am/remake-hdr.am [new file with mode: 0644]
lib/am/scripts.am [new file with mode: 0644]
lib/am/subdirs.am [new file with mode: 0644]
lib/am/tags.am [new file with mode: 0644]
lib/am/texi-vers.am [new file with mode: 0644]
lib/am/texibuild.am [new file with mode: 0644]
lib/am/texinfos.am [new file with mode: 0644]
lib/am/vala.am [new file with mode: 0644]
lib/am/yacc.am [new file with mode: 0644]
lib/ar-lib [new file with mode: 0755]
lib/compile [new file with mode: 0755]
lib/config.guess [new file with mode: 0755]
lib/config.sub [new file with mode: 0755]
lib/depcomp [new file with mode: 0755]
lib/elisp-comp [new file with mode: 0755]
lib/gitlog-to-changelog [new file with mode: 0755]
lib/gnupload [new file with mode: 0755]
lib/install-sh [new file with mode: 0755]
lib/mdate-sh [new file with mode: 0755]
lib/missing [new file with mode: 0755]
lib/mkinstalldirs [new file with mode: 0755]
lib/py-compile [new file with mode: 0755]
lib/tap-driver.pl [new file with mode: 0755]
lib/tap-driver.sh [new file with mode: 0755]
lib/test-driver [new file with mode: 0755]
lib/texinfo.tex [new file with mode: 0644]
lib/update-copyright [new file with mode: 0755]
lib/ylwrap [new file with mode: 0755]
m4/acdir/README [new file with mode: 0644]
m4/amversion.in [new file with mode: 0644]
m4/amversion.m4 [new file with mode: 0644]
m4/ar-lib.m4 [new file with mode: 0644]
m4/as.m4 [new file with mode: 0644]
m4/auxdir.m4 [new file with mode: 0644]
m4/ccstdc.m4 [new file with mode: 0644]
m4/cond-if.m4 [new file with mode: 0644]
m4/cond.m4 [new file with mode: 0644]
m4/depend.m4 [new file with mode: 0644]
m4/depout.m4 [new file with mode: 0644]
m4/dmalloc.m4 [new file with mode: 0644]
m4/gcj.m4 [new file with mode: 0644]
m4/header.m4 [new file with mode: 0644]
m4/init.m4 [new file with mode: 0644]
m4/install-sh.m4 [new file with mode: 0644]
m4/lead-dot.m4 [new file with mode: 0644]
m4/lex.m4 [new file with mode: 0644]
m4/lispdir.m4 [new file with mode: 0644]
m4/maintainer.m4 [new file with mode: 0644]
m4/make.m4 [new file with mode: 0644]
m4/minuso.m4 [new file with mode: 0644]
m4/missing.m4 [new file with mode: 0644]
m4/mkdirp.m4 [new file with mode: 0644]
m4/obsol-gt.m4 [new file with mode: 0644]
m4/obsol-lt.m4 [new file with mode: 0644]
m4/obsolete.m4 [new file with mode: 0644]
m4/options.m4 [new file with mode: 0644]
m4/protos.m4 [new file with mode: 0644]
m4/python.m4 [new file with mode: 0644]
m4/runlog.m4 [new file with mode: 0644]
m4/sanity.m4 [new file with mode: 0644]
m4/silent.m4 [new file with mode: 0644]
m4/strip.m4 [new file with mode: 0644]
m4/substnot.m4 [new file with mode: 0644]
m4/tar.m4 [new file with mode: 0644]
m4/upc.m4 [new file with mode: 0644]
m4/vala.m4 [new file with mode: 0644]
old/ChangeLog-tests [new file with mode: 0644]
old/ChangeLog.00 [new file with mode: 0644]
old/ChangeLog.01 [new file with mode: 0644]
old/ChangeLog.02 [new file with mode: 0644]
old/ChangeLog.03 [new file with mode: 0644]
old/ChangeLog.04 [new file with mode: 0644]
old/ChangeLog.09 [new file with mode: 0644]
old/ChangeLog.11 [new file with mode: 0644]
old/ChangeLog.96 [new file with mode: 0644]
old/ChangeLog.98 [new file with mode: 0644]
old/TODO [new file with mode: 0644]
syntax-checks.mk [new file with mode: 0644]
t/CheckListOfTests.am [new file with mode: 0644]
t/README [new file with mode: 0644]
t/ac-output-old.tap [new file with mode: 0755]
t/acloca10.sh [new file with mode: 0755]
t/acloca11.sh [new file with mode: 0755]
t/acloca12.sh [new file with mode: 0755]
t/acloca13.sh [new file with mode: 0755]
t/acloca14.sh [new file with mode: 0755]
t/acloca15.sh [new file with mode: 0755]
t/acloca16.sh [new file with mode: 0755]
t/acloca17.sh [new file with mode: 0755]
t/acloca18.sh [new file with mode: 0755]
t/acloca19.sh [new file with mode: 0755]
t/acloca20.sh [new file with mode: 0755]
t/acloca21.sh [new file with mode: 0755]
t/acloca22.sh [new file with mode: 0755]
t/acloca23.sh [new file with mode: 0755]
t/aclocal-acdir.sh [new file with mode: 0755]
t/aclocal-install-absdir.sh [new file with mode: 0755]
t/aclocal-install-fail.sh [new file with mode: 0755]
t/aclocal-install-mkdir.sh [new file with mode: 0755]
t/aclocal-no-install-no-mkdir.sh [new file with mode: 0755]
t/aclocal-path-install-serial.sh [new file with mode: 0755]
t/aclocal-path-install.sh [new file with mode: 0755]
t/aclocal-path-nonexistent.sh [new file with mode: 0755]
t/aclocal-path-precedence.sh [new file with mode: 0755]
t/aclocal-path.sh [new file with mode: 0755]
t/aclocal-print-acdir.sh [new file with mode: 0755]
t/aclocal-verbose-install.sh [new file with mode: 0755]
t/aclocal.sh [new file with mode: 0755]
t/aclocal3.sh [new file with mode: 0755]
t/aclocal4.sh [new file with mode: 0755]
t/aclocal5.sh [new file with mode: 0755]
t/aclocal6.sh [new file with mode: 0755]
t/aclocal7.sh [new file with mode: 0755]
t/aclocal8.sh [new file with mode: 0755]
t/aclocal9.sh [new file with mode: 0755]
t/acsilent.sh [new file with mode: 0755]
t/acsubst.sh [new file with mode: 0755]
t/acsubst2.sh [new file with mode: 0755]
t/add-missing.tap [new file with mode: 0755]
t/all.sh [new file with mode: 0755]
t/all2.sh [new file with mode: 0755]
t/alloca.sh [new file with mode: 0755]
t/alloca2.sh [new file with mode: 0755]
t/alpha.sh [new file with mode: 0755]
t/alpha2.sh [new file with mode: 0755]
t/am-tests-environment.sh [new file with mode: 0755]
t/amassign.sh [new file with mode: 0755]
t/amhello-binpkg.sh [new file with mode: 0755]
t/amhello-cflags.sh [new file with mode: 0755]
t/amhello-cross-compile.sh [new file with mode: 0755]
t/aminit-moreargs-deprecation.sh [new file with mode: 0755]
t/ammissing.sh [new file with mode: 0755]
t/amopt.sh [new file with mode: 0755]
t/amopts-location.sh [new file with mode: 0755]
t/amopts-variable-expansion.sh [new file with mode: 0755]
t/amsubst.sh [new file with mode: 0755]
t/ansi2knr-no-more.sh [new file with mode: 0755]
t/ar-lib-w.sh [new file with mode: 0755]
t/ar-lib.sh [new file with mode: 0755]
t/ar-lib2.sh [new file with mode: 0755]
t/ar-lib3.sh [new file with mode: 0755]
t/ar-lib4.sh [new file with mode: 0755]
t/ar-lib5a.sh [new file with mode: 0755]
t/ar-lib5b.sh [new file with mode: 0755]
t/ar-lib6a.sh [new file with mode: 0755]
t/ar-lib6b.sh [new file with mode: 0755]
t/ar-lib7.sh [new file with mode: 0755]
t/ar.sh [new file with mode: 0755]
t/ar2.sh [new file with mode: 0755]
t/ar3.sh [new file with mode: 0755]
t/ar4.sh [new file with mode: 0755]
t/ar5.sh [new file with mode: 0755]
t/asm.sh [new file with mode: 0755]
t/asm2.sh [new file with mode: 0755]
t/asm3.sh [new file with mode: 0755]
t/autodist-acconfig-no-subdir.sh [new file with mode: 0755]
t/autodist-acconfig.sh [new file with mode: 0755]
t/autodist-aclocal-m4.sh [new file with mode: 0755]
t/autodist-config-headers.sh [new file with mode: 0755]
t/autodist-configure-no-subdir.sh [new file with mode: 0755]
t/autodist-no-duplicate.sh [new file with mode: 0755]
t/autodist-stamp-vti.sh [new file with mode: 0755]
t/autodist-subdir.sh [new file with mode: 0755]
t/autodist.sh [new file with mode: 0755]
t/autohdr.sh [new file with mode: 0755]
t/autohdr2.sh [new file with mode: 0755]
t/autohdr3.sh [new file with mode: 0755]
t/autohdr4.sh [new file with mode: 0755]
t/autohdrdry.sh [new file with mode: 0755]
t/automake-cmdline.tap [new file with mode: 0755]
t/auxdir-autodetect.sh [new file with mode: 0755]
t/auxdir-computed.tap [new file with mode: 0755]
t/auxdir-misplaced.sh [new file with mode: 0755]
t/auxdir-nonexistent.sh [new file with mode: 0755]
t/auxdir-unportable.tap [new file with mode: 0755]
t/auxdir.sh [new file with mode: 0755]
t/auxdir6.sh [new file with mode: 0755]
t/auxdir7.sh [new file with mode: 0755]
t/auxdir8.sh [new file with mode: 0755]
t/ax/depcomp.sh [new file with mode: 0644]
t/ax/distcheck-hook-m4.am [new file with mode: 0644]
t/ax/extract-testsuite-summary.pl [new file with mode: 0644]
t/ax/is [new file with mode: 0755]
t/ax/plain-functions.sh [new file with mode: 0644]
t/ax/tap-functions.sh [new file with mode: 0644]
t/ax/tap-setup.sh [new file with mode: 0644]
t/ax/tap-summary-aux.sh [new file with mode: 0644]
t/ax/testsuite-summary-checks.sh [new file with mode: 0644]
t/ax/trivial-test-driver [new file with mode: 0644]
t/backcompat.sh [new file with mode: 0755]
t/backcompat2.sh [new file with mode: 0755]
t/backcompat3.sh [new file with mode: 0755]
t/backcompat4.sh [new file with mode: 0755]
t/backcompat5.sh [new file with mode: 0755]
t/backcompat6.sh [new file with mode: 0755]
t/backsl.sh [new file with mode: 0755]
t/backsl2.sh [new file with mode: 0755]
t/backsl3.sh [new file with mode: 0755]
t/backsl4.sh [new file with mode: 0755]
t/badline.sh [new file with mode: 0755]
t/badopt.sh [new file with mode: 0755]
t/badprog.sh [new file with mode: 0755]
t/block.sh [new file with mode: 0755]
t/bsource.sh [new file with mode: 0755]
t/candist.sh [new file with mode: 0755]
t/canon-name.sh [new file with mode: 0755]
t/canon.sh [new file with mode: 0755]
t/canon2.sh [new file with mode: 0755]
t/canon3.sh [new file with mode: 0755]
t/canon4.sh [new file with mode: 0755]
t/canon5.sh [new file with mode: 0755]
t/canon6.sh [new file with mode: 0755]
t/canon7.sh [new file with mode: 0755]
t/canon8.sh [new file with mode: 0755]
t/ccnoco.sh [new file with mode: 0755]
t/ccnoco2.sh [new file with mode: 0755]
t/ccnoco3.sh [new file with mode: 0755]
t/check-concurrency-bug9245.sh [new file with mode: 0755]
t/check-exported-srcdir-w.sh [new file with mode: 0755]
t/check-exported-srcdir.sh [new file with mode: 0755]
t/check-fd-redirect-w.sh [new file with mode: 0755]
t/check-fd-redirect.sh [new file with mode: 0755]
t/check-no-test-driver.sh [new file with mode: 0755]
t/check-subst-prog-w.sh [new file with mode: 0755]
t/check-subst-prog.sh [new file with mode: 0755]
t/check-subst-w.sh [new file with mode: 0755]
t/check-subst.sh [new file with mode: 0755]
t/check-tests-in-builddir-w.sh [new file with mode: 0755]
t/check-tests-in-builddir.sh [new file with mode: 0755]
t/check-w.sh [new file with mode: 0755]
t/check.sh [new file with mode: 0755]
t/check10.sh [new file with mode: 0755]
t/check11-w.sh [new file with mode: 0755]
t/check11.sh [new file with mode: 0755]
t/check12-w.sh [new file with mode: 0755]
t/check12.sh [new file with mode: 0755]
t/check2-w.sh [new file with mode: 0755]
t/check2.sh [new file with mode: 0755]
t/check3-w.sh [new file with mode: 0755]
t/check3.sh [new file with mode: 0755]
t/check4-w.sh [new file with mode: 0755]
t/check4.sh [new file with mode: 0755]
t/check5-w.sh [new file with mode: 0755]
t/check5.sh [new file with mode: 0755]
t/check6-w.sh [new file with mode: 0755]
t/check6.sh [new file with mode: 0755]
t/check7-w.sh [new file with mode: 0755]
t/check7.sh [new file with mode: 0755]
t/check8-w.sh [new file with mode: 0755]
t/check8.sh [new file with mode: 0755]
t/checkall.sh [new file with mode: 0755]
t/clean.sh [new file with mode: 0755]
t/clean2.sh [new file with mode: 0755]
t/colneq.sh [new file with mode: 0755]
t/colneq2.sh [new file with mode: 0755]
t/colneq3.sh [new file with mode: 0755]
t/colon.sh [new file with mode: 0755]
t/colon2.sh [new file with mode: 0755]
t/colon3.sh [new file with mode: 0755]
t/colon4.sh [new file with mode: 0755]
t/colon5.sh [new file with mode: 0755]
t/colon6.sh [new file with mode: 0755]
t/colon7.sh [new file with mode: 0755]
t/color-w.sh [new file with mode: 0755]
t/color.sh [new file with mode: 0755]
t/color2-w.sh [new file with mode: 0755]
t/color2.sh [new file with mode: 0755]
t/commen10.sh [new file with mode: 0755]
t/commen11.sh [new file with mode: 0755]
t/comment.sh [new file with mode: 0755]
t/comment2.sh [new file with mode: 0755]
t/comment3.sh [new file with mode: 0755]
t/comment4.sh [new file with mode: 0755]
t/comment5.sh [new file with mode: 0755]
t/comment6.sh [new file with mode: 0755]
t/comment7.sh [new file with mode: 0755]
t/comment8.sh [new file with mode: 0755]
t/comment9.sh [new file with mode: 0755]
t/comments-in-var-def.sh [new file with mode: 0755]
t/compile-w.sh [new file with mode: 0755]
t/compile.sh [new file with mode: 0755]
t/compile2-w.sh [new file with mode: 0755]
t/compile2.sh [new file with mode: 0755]
t/compile3-w.sh [new file with mode: 0755]
t/compile3.sh [new file with mode: 0755]
t/compile4-w.sh [new file with mode: 0755]
t/compile4.sh [new file with mode: 0755]
t/compile5-w.sh [new file with mode: 0755]
t/compile5.sh [new file with mode: 0755]
t/compile6-w.sh [new file with mode: 0755]
t/compile6.sh [new file with mode: 0755]
t/compile_f90_c_cxx.sh [new file with mode: 0755]
t/compile_f_c_cxx.sh [new file with mode: 0755]
t/cond-basic.sh [new file with mode: 0755]
t/cond.sh [new file with mode: 0755]
t/cond10.sh [new file with mode: 0755]
t/cond11.sh [new file with mode: 0755]
t/cond13.sh [new file with mode: 0755]
t/cond14.sh [new file with mode: 0755]
t/cond15.sh [new file with mode: 0755]
t/cond16.sh [new file with mode: 0755]
t/cond17.sh [new file with mode: 0755]
t/cond18.sh [new file with mode: 0755]
t/cond19.sh [new file with mode: 0755]
t/cond2.sh [new file with mode: 0755]
t/cond20.sh [new file with mode: 0755]
t/cond21.sh [new file with mode: 0755]
t/cond22.sh [new file with mode: 0755]
t/cond23.sh [new file with mode: 0755]
t/cond24.sh [new file with mode: 0755]
t/cond25.sh [new file with mode: 0755]
t/cond26.sh [new file with mode: 0755]
t/cond27.sh [new file with mode: 0755]
t/cond28.sh [new file with mode: 0755]
t/cond3.sh [new file with mode: 0755]
t/cond30.sh [new file with mode: 0755]
t/cond31.sh [new file with mode: 0755]
t/cond32.sh [new file with mode: 0755]
t/cond33.sh [new file with mode: 0755]
t/cond34.sh [new file with mode: 0755]
t/cond35.sh [new file with mode: 0755]
t/cond36.sh [new file with mode: 0755]
t/cond37.sh [new file with mode: 0755]
t/cond38.sh [new file with mode: 0755]
t/cond39.sh [new file with mode: 0755]
t/cond4.sh [new file with mode: 0755]
t/cond40.sh [new file with mode: 0755]
t/cond41.sh [new file with mode: 0755]
t/cond42.sh [new file with mode: 0755]
t/cond43.sh [new file with mode: 0755]
t/cond44.sh [new file with mode: 0755]
t/cond45.sh [new file with mode: 0755]
t/cond46.sh [new file with mode: 0755]
t/cond5.sh [new file with mode: 0755]
t/cond6.sh [new file with mode: 0755]
t/cond7.sh [new file with mode: 0755]
t/cond8.sh [new file with mode: 0755]
t/cond9.sh [new file with mode: 0755]
t/condd.sh [new file with mode: 0755]
t/condhook.sh [new file with mode: 0755]
t/condhook2.sh [new file with mode: 0755]
t/condinc.sh [new file with mode: 0755]
t/condinc2.sh [new file with mode: 0755]
t/condlib.sh [new file with mode: 0755]
t/condman2.sh [new file with mode: 0755]
t/condman3.sh [new file with mode: 0755]
t/confdeps.sh [new file with mode: 0755]
t/conff.sh [new file with mode: 0755]
t/conff2.sh [new file with mode: 0755]
t/conffile-leading-dot.sh [new file with mode: 0755]
t/confh.sh [new file with mode: 0755]
t/confh4.sh [new file with mode: 0755]
t/confh5.sh [new file with mode: 0755]
t/confh6.sh [new file with mode: 0755]
t/confh7.sh [new file with mode: 0755]
t/confh8.sh [new file with mode: 0755]
t/configure.sh [new file with mode: 0755]
t/confincl.sh [new file with mode: 0755]
t/conflnk.sh [new file with mode: 0755]
t/conflnk2.sh [new file with mode: 0755]
t/conflnk3.sh [new file with mode: 0755]
t/conflnk4.sh [new file with mode: 0755]
t/confsub.sh [new file with mode: 0755]
t/confvar.sh [new file with mode: 0755]
t/confvar2.sh [new file with mode: 0755]
t/copy.sh [new file with mode: 0755]
t/cscope.tap [new file with mode: 0755]
t/cscope2.sh [new file with mode: 0755]
t/cscope3.sh [new file with mode: 0755]
t/cxx.sh [new file with mode: 0755]
t/cxx2.sh [new file with mode: 0755]
t/cxxcpp.sh [new file with mode: 0755]
t/cxxlibobj.sh [new file with mode: 0755]
t/cxxlink.sh [new file with mode: 0755]
t/cxxnoc.sh [new file with mode: 0755]
t/cxxo.sh [new file with mode: 0755]
t/cygnus-check-without-all.sh [new file with mode: 0755]
t/cygnus-dependency-tracking.sh [new file with mode: 0755]
t/cygnus-deprecation.sh [new file with mode: 0755]
t/cygnus-imply-foreign.sh [new file with mode: 0755]
t/cygnus-no-dist.sh [new file with mode: 0755]
t/cygnus-no-installinfo.sh [new file with mode: 0755]
t/cygnus-requires-maintainer-mode.sh [new file with mode: 0755]
t/cygwin32.sh [new file with mode: 0755]
t/dash.sh [new file with mode: 0755]
t/defun.sh [new file with mode: 0755]
t/defun2.sh [new file with mode: 0755]
t/dejagnu-absolute-builddir.sh [new file with mode: 0755]
t/dejagnu-relative-srcdir.sh [new file with mode: 0755]
t/dejagnu-siteexp-append.sh [new file with mode: 0755]
t/dejagnu-siteexp-extend.sh [new file with mode: 0755]
t/dejagnu-siteexp-useredit.sh [new file with mode: 0755]
t/dejagnu.sh [new file with mode: 0755]
t/dejagnu2.sh [new file with mode: 0755]
t/dejagnu3.sh [new file with mode: 0755]
t/dejagnu4.sh [new file with mode: 0755]
t/dejagnu5.sh [new file with mode: 0755]
t/dejagnu6.sh [new file with mode: 0755]
t/dejagnu7.sh [new file with mode: 0755]
t/deleted-am.sh [new file with mode: 0755]
t/deleted-m4.sh [new file with mode: 0755]
t/depacl2.sh [new file with mode: 0755]
t/depcomp-auto.tap [new file with mode: 0755]
t/depcomp-cpp.tap [new file with mode: 0755]
t/depcomp-dashmstdout.tap [new file with mode: 0755]
t/depcomp-disabled.tap [new file with mode: 0755]
t/depcomp-gcc.tap [new file with mode: 0755]
t/depcomp-lt-auto.tap [new file with mode: 0755]
t/depcomp-lt-cpp.tap [new file with mode: 0755]
t/depcomp-lt-dashmstdout.tap [new file with mode: 0755]
t/depcomp-lt-disabled.tap [new file with mode: 0755]
t/depcomp-lt-gcc.tap [new file with mode: 0755]
t/depcomp-lt-makedepend.tap [new file with mode: 0755]
t/depcomp-lt-msvcmsys.tap [new file with mode: 0755]
t/depcomp-lt-msvisualcpp.tap [new file with mode: 0755]
t/depcomp-makedepend.tap [new file with mode: 0755]
t/depcomp-msvcmsys.tap [new file with mode: 0755]
t/depcomp-msvisualcpp.tap [new file with mode: 0755]
t/depcomp.sh [new file with mode: 0755]
t/depcomp2.sh [new file with mode: 0755]
t/depcomp8a.sh [new file with mode: 0755]
t/depcomp8b.sh [new file with mode: 0755]
t/depdist.sh [new file with mode: 0755]
t/depend.sh [new file with mode: 0755]
t/depend3.sh [new file with mode: 0755]
t/depend4.sh [new file with mode: 0755]
t/depend5.sh [new file with mode: 0755]
t/depend6.sh [new file with mode: 0755]
t/deprecated-acinit.sh [new file with mode: 0755]
t/destdir.sh [new file with mode: 0755]
t/dirlist-abspath.sh [new file with mode: 0755]
t/dirlist.sh [new file with mode: 0755]
t/dirlist2.sh [new file with mode: 0755]
t/discover.sh [new file with mode: 0755]
t/dist-auxdir-many-subdirs.sh [new file with mode: 0755]
t/dist-auxfile-2.sh [new file with mode: 0755]
t/dist-auxfile.sh [new file with mode: 0755]
t/dist-formats.tap [new file with mode: 0755]
t/dist-included-parent-dir.sh [new file with mode: 0755]
t/dist-missing-am.sh [new file with mode: 0755]
t/dist-missing-included-m4.sh [new file with mode: 0755]
t/dist-missing-m4.sh [new file with mode: 0755]
t/dist-pr109765.sh [new file with mode: 0755]
t/dist-readonly.sh [new file with mode: 0755]
t/dist-repeated.sh [new file with mode: 0755]
t/distcheck-configure-flags-am.sh [new file with mode: 0755]
t/distcheck-configure-flags-subpkg.sh [new file with mode: 0755]
t/distcheck-configure-flags.sh [new file with mode: 0755]
t/distcheck-hook.sh [new file with mode: 0755]
t/distcheck-hook2.sh [new file with mode: 0755]
t/distcheck-missing-m4.sh [new file with mode: 0755]
t/distcheck-outdated-m4.sh [new file with mode: 0755]
t/distcheck-override-infodir.sh [new file with mode: 0755]
t/distcheck-pr10470.sh [new file with mode: 0755]
t/distcheck-pr9579.sh [new file with mode: 0755]
t/distcheck-writable-srcdir.sh [new file with mode: 0755]
t/distcleancheck.sh [new file with mode: 0755]
t/distcom-subdir.sh [new file with mode: 0755]
t/distcom2.sh [new file with mode: 0755]
t/distcom3.sh [new file with mode: 0755]
t/distcom4.sh [new file with mode: 0755]
t/distcom5.sh [new file with mode: 0755]
t/distdir.sh [new file with mode: 0755]
t/disthook.sh [new file with mode: 0755]
t/distlinks.sh [new file with mode: 0755]
t/distlinksbrk.sh [new file with mode: 0755]
t/distname.sh [new file with mode: 0755]
t/dmalloc.sh [new file with mode: 0755]
t/doc-parsing-buglets-colneq-subst.sh [new file with mode: 0755]
t/doc-parsing-buglets-tabs.sh [new file with mode: 0755]
t/dollar.sh [new file with mode: 0755]
t/dollarvar.sh [new file with mode: 0755]
t/dollarvar2.sh [new file with mode: 0755]
t/double.sh [new file with mode: 0755]
t/dup2.sh [new file with mode: 0755]
t/else.sh [new file with mode: 0755]
t/empty.sh [new file with mode: 0755]
t/empty2.sh [new file with mode: 0755]
t/empty3.sh [new file with mode: 0755]
t/empty4.sh [new file with mode: 0755]
t/exdir.sh [new file with mode: 0755]
t/exdir2.sh [new file with mode: 0755]
t/exdir3.sh [new file with mode: 0755]
t/exeext.sh [new file with mode: 0755]
t/exeext2.sh [new file with mode: 0755]
t/exeext3.sh [new file with mode: 0755]
t/exeext4-w.sh [new file with mode: 0755]
t/exeext4.sh [new file with mode: 0755]
t/exsource.sh [new file with mode: 0755]
t/ext.sh [new file with mode: 0755]
t/ext2.sh [new file with mode: 0755]
t/ext3.sh [new file with mode: 0755]
t/extra-portability.sh [new file with mode: 0755]
t/extra-portability2.sh [new file with mode: 0755]
t/extra-portability3.sh [new file with mode: 0755]
t/extra-programs-empty.sh [new file with mode: 0755]
t/extra.sh [new file with mode: 0755]
t/extra10.sh [new file with mode: 0755]
t/extra11.sh [new file with mode: 0755]
t/extra12.sh [new file with mode: 0755]
t/extra2.sh [new file with mode: 0755]
t/extra3.sh [new file with mode: 0755]
t/extra4.sh [new file with mode: 0755]
t/extra5.sh [new file with mode: 0755]
t/extra6.sh [new file with mode: 0755]
t/extra7.sh [new file with mode: 0755]
t/extra8.sh [new file with mode: 0755]
t/extra9.sh [new file with mode: 0755]
t/extradep.sh [new file with mode: 0755]
t/extradep2.sh [new file with mode: 0755]
t/f90only.sh [new file with mode: 0755]
t/flavor.sh [new file with mode: 0755]
t/flibs.sh [new file with mode: 0755]
t/fn99.sh [new file with mode: 0755]
t/fn99subdir.sh [new file with mode: 0755]
t/fnoc.sh [new file with mode: 0755]
t/fo.sh [new file with mode: 0755]
t/fonly.sh [new file with mode: 0755]
t/forcemiss.sh [new file with mode: 0755]
t/forcemiss2.sh [new file with mode: 0755]
t/fort1.sh [new file with mode: 0755]
t/fort2.sh [new file with mode: 0755]
t/fort4.sh [new file with mode: 0755]
t/fort5.sh [new file with mode: 0755]
t/fortdep.sh [new file with mode: 0755]
t/gcj.sh [new file with mode: 0755]
t/gcj2.sh [new file with mode: 0755]
t/gcj3.sh [new file with mode: 0755]
t/gcj4.sh [new file with mode: 0755]
t/gcj5.sh [new file with mode: 0755]
t/gcj6.sh [new file with mode: 0755]
t/get-sysconf.sh [new file with mode: 0755]
t/gettext-macros.sh [new file with mode: 0755]
t/gettext.sh [new file with mode: 0755]
t/gettext2.sh [new file with mode: 0755]
t/gettext3.sh [new file with mode: 0755]
t/gnits.sh [new file with mode: 0755]
t/gnits2.sh [new file with mode: 0755]
t/gnits3.sh [new file with mode: 0755]
t/gnumake.sh [new file with mode: 0755]
t/gnuwarn.sh [new file with mode: 0755]
t/gnuwarn2.sh [new file with mode: 0755]
t/hdr-vars-defined-once.sh [new file with mode: 0755]
t/header.sh [new file with mode: 0755]
t/help-depend.sh [new file with mode: 0755]
t/help-depend2.sh [new file with mode: 0755]
t/help-dmalloc.sh [new file with mode: 0755]
t/help-init.sh [new file with mode: 0755]
t/help-lispdir.sh [new file with mode: 0755]
t/help-multilib.sh [new file with mode: 0755]
t/help-python.sh [new file with mode: 0755]
t/help-silent.sh [new file with mode: 0755]
t/help-upc.sh [new file with mode: 0755]
t/help.sh [new file with mode: 0755]
t/help2.sh [new file with mode: 0755]
t/help3.sh [new file with mode: 0755]
t/help4.sh [new file with mode: 0755]
t/hfs.sh [new file with mode: 0755]
t/implicit.sh [new file with mode: 0755]
t/info.sh [new file with mode: 0755]
t/init.sh [new file with mode: 0755]
t/init2.sh [new file with mode: 0755]
t/insh2.sh [new file with mode: 0755]
t/install-info-dir.sh [new file with mode: 0755]
t/install2.sh [new file with mode: 0755]
t/installdir.sh [new file with mode: 0755]
t/instdat.sh [new file with mode: 0755]
t/instdat2.sh [new file with mode: 0755]
t/instdir-cond.sh [new file with mode: 0755]
t/instdir-cond2.sh [new file with mode: 0755]
t/instdir-java.sh [new file with mode: 0755]
t/instdir-lisp.sh [new file with mode: 0755]
t/instdir-ltlib.sh [new file with mode: 0755]
t/instdir-no-empty.sh [new file with mode: 0755]
t/instdir-prog.sh [new file with mode: 0755]
t/instdir-python.sh [new file with mode: 0755]
t/instdir-texi.sh [new file with mode: 0755]
t/instdir.sh [new file with mode: 0755]
t/instdir2.sh [new file with mode: 0755]
t/instexec.sh [new file with mode: 0755]
t/instfail-info.sh [new file with mode: 0755]
t/instfail-java.sh [new file with mode: 0755]
t/instfail-libtool.sh [new file with mode: 0755]
t/instfail.sh [new file with mode: 0755]
t/insthook.sh [new file with mode: 0755]
t/instman.sh [new file with mode: 0755]
t/instman2.sh [new file with mode: 0755]
t/instmany-mans.sh [new file with mode: 0755]
t/instmany-python.sh [new file with mode: 0755]
t/instmany.sh [new file with mode: 0755]
t/instsh.sh [new file with mode: 0755]
t/instsh2-w.sh [new file with mode: 0755]
t/instsh2.sh [new file with mode: 0755]
t/instsh3-w.sh [new file with mode: 0755]
t/instsh3.sh [new file with mode: 0755]
t/instspc.tap [new file with mode: 0755]
t/interp.sh [new file with mode: 0755]
t/interp2.sh [new file with mode: 0755]
t/java-check.sh [new file with mode: 0755]
t/java-clean.sh [new file with mode: 0755]
t/java-compile-install.sh [new file with mode: 0755]
t/java-compile-run-flat.sh [new file with mode: 0755]
t/java-compile-run-nested.sh [new file with mode: 0755]
t/java-empty-classpath.sh [new file with mode: 0755]
t/java-extra.sh [new file with mode: 0755]
t/java-mix.sh [new file with mode: 0755]
t/java-no-duplicate.sh [new file with mode: 0755]
t/java-nobase.sh [new file with mode: 0755]
t/java-noinst.sh [new file with mode: 0755]
t/java-rebuild.sh [new file with mode: 0755]
t/java-sources.sh [new file with mode: 0755]
t/java-uninstall.sh [new file with mode: 0755]
t/java.sh [new file with mode: 0755]
t/java2.sh [new file with mode: 0755]
t/java3.sh [new file with mode: 0755]
t/javadir-undefined.sh [new file with mode: 0755]
t/javaflags.sh [new file with mode: 0755]
t/javaprim.sh [new file with mode: 0755]
t/javasubst.sh [new file with mode: 0755]
t/ldadd.sh [new file with mode: 0755]
t/ldflags.sh [new file with mode: 0755]
t/lex-clean-cxx.sh [new file with mode: 0755]
t/lex-clean.sh [new file with mode: 0755]
t/lex-depend-cxx.sh [new file with mode: 0755]
t/lex-depend-grep.sh [new file with mode: 0755]
t/lex-depend.sh [new file with mode: 0755]
t/lex-lib-external.sh [new file with mode: 0755]
t/lex-lib.sh [new file with mode: 0755]
t/lex-libobj.sh [new file with mode: 0755]
t/lex-line.sh [new file with mode: 0755]
t/lex-nodist.sh [new file with mode: 0755]
t/lex-noyywrap.sh [new file with mode: 0755]
t/lex-pr204.sh [new file with mode: 0755]
t/lex-subobj-nodep.sh [new file with mode: 0755]
t/lex.sh [new file with mode: 0755]
t/lex2.sh [new file with mode: 0755]
t/lex3.sh [new file with mode: 0755]
t/lex5.sh [new file with mode: 0755]
t/lexcpp.sh [new file with mode: 0755]
t/lexvpath.sh [new file with mode: 0755]
t/lflags.sh [new file with mode: 0755]
t/lflags2.sh [new file with mode: 0755]
t/libexec.sh [new file with mode: 0755]
t/libobj-basic.sh [new file with mode: 0755]
t/libobj10.sh [new file with mode: 0755]
t/libobj12.sh [new file with mode: 0755]
t/libobj13.sh [new file with mode: 0755]
t/libobj14.sh [new file with mode: 0755]
t/libobj15a.sh [new file with mode: 0755]
t/libobj15b.sh [new file with mode: 0755]
t/libobj15c.sh [new file with mode: 0755]
t/libobj16a.sh [new file with mode: 0755]
t/libobj16b.sh [new file with mode: 0755]
t/libobj17.sh [new file with mode: 0755]
t/libobj18.sh [new file with mode: 0755]
t/libobj19.sh [new file with mode: 0755]
t/libobj2.sh [new file with mode: 0755]
t/libobj20a.sh [new file with mode: 0755]
t/libobj20b.sh [new file with mode: 0755]
t/libobj20c.sh [new file with mode: 0755]
t/libobj3.sh [new file with mode: 0755]
t/libobj4.sh [new file with mode: 0755]
t/libobj5.sh [new file with mode: 0755]
t/libobj7.sh [new file with mode: 0755]
t/library.sh [new file with mode: 0755]
t/library2.sh [new file with mode: 0755]
t/library3.sh [new file with mode: 0755]
t/libtoo10.sh [new file with mode: 0755]
t/libtoo11.sh [new file with mode: 0755]
t/libtool-macros.sh [new file with mode: 0755]
t/libtool.sh [new file with mode: 0755]
t/libtool2.sh [new file with mode: 0755]
t/libtool3.sh [new file with mode: 0755]
t/libtool4.sh [new file with mode: 0755]
t/libtool5.sh [new file with mode: 0755]
t/libtool6.sh [new file with mode: 0755]
t/libtool7.sh [new file with mode: 0755]
t/libtool8.sh [new file with mode: 0755]
t/libtool9.sh [new file with mode: 0755]
t/license.sh [new file with mode: 0755]
t/license2.sh [new file with mode: 0755]
t/link_c_cxx.sh [new file with mode: 0755]
t/link_cond.sh [new file with mode: 0755]
t/link_dist.sh [new file with mode: 0755]
t/link_f90_only.sh [new file with mode: 0755]
t/link_f_only.sh [new file with mode: 0755]
t/link_fc.sh [new file with mode: 0755]
t/link_fccxx.sh [new file with mode: 0755]
t/link_fcxx.sh [new file with mode: 0755]
t/link_override.sh [new file with mode: 0755]
t/lisp2.sh [new file with mode: 0755]
t/lisp3.sh [new file with mode: 0755]
t/lisp4.sh [new file with mode: 0755]
t/lisp5.sh [new file with mode: 0755]
t/lisp6.sh [new file with mode: 0755]
t/lisp7.sh [new file with mode: 0755]
t/lisp8.sh [new file with mode: 0755]
t/lispdry.sh [new file with mode: 0755]
t/list-of-tests.mk [new file with mode: 0644]
t/listval.sh [new file with mode: 0755]
t/location.sh [new file with mode: 0755]
t/longlin2.sh [new file with mode: 0755]
t/longline.sh [new file with mode: 0755]
t/ltcond.sh [new file with mode: 0755]
t/ltcond2.sh [new file with mode: 0755]
t/ltconv.sh [new file with mode: 0755]
t/ltdeps.sh [new file with mode: 0755]
t/ltinit.sh [new file with mode: 0755]
t/ltinstloc.sh [new file with mode: 0755]
t/ltlibobjs.sh [new file with mode: 0755]
t/ltlibsrc.sh [new file with mode: 0755]
t/ltorder.sh [new file with mode: 0755]
t/lzma.sh [new file with mode: 0755]
t/m4-inclusion.sh [new file with mode: 0755]
t/maintclean-vpath.sh [new file with mode: 0755]
t/maintclean.sh [new file with mode: 0755]
t/maintmode-configure-msg.sh [new file with mode: 0755]
t/make-dryrun.tap [new file with mode: 0755]
t/make.sh [new file with mode: 0755]
t/makefile-deps.sh [new file with mode: 0755]
t/makej.sh [new file with mode: 0755]
t/makej2.sh [new file with mode: 0755]
t/maken.sh [new file with mode: 0755]
t/maken3-w.sh [new file with mode: 0755]
t/maken3.sh [new file with mode: 0755]
t/makevars.sh [new file with mode: 0755]
t/man.sh [new file with mode: 0755]
t/man2.sh [new file with mode: 0755]
t/man3.sh [new file with mode: 0755]
t/man4.sh [new file with mode: 0755]
t/man5.sh [new file with mode: 0755]
t/man6.sh [new file with mode: 0755]
t/man7.sh [new file with mode: 0755]
t/man8.sh [new file with mode: 0755]
t/mdate.sh [new file with mode: 0755]
t/mdate2.sh [new file with mode: 0755]
t/mdate3.sh [new file with mode: 0755]
t/mdate4.sh [new file with mode: 0755]
t/mdate5-w.sh [new file with mode: 0755]
t/mdate5.sh [new file with mode: 0755]
t/mdate6-w.sh [new file with mode: 0755]
t/mdate6.sh [new file with mode: 0755]
t/missing-auxfile-stops-makefiles-creation.sh [new file with mode: 0755]
t/missing-w.sh [new file with mode: 0755]
t/missing.sh [new file with mode: 0755]
t/missing2-w.sh [new file with mode: 0755]
t/missing2.sh [new file with mode: 0755]
t/missing3-w.sh [new file with mode: 0755]
t/missing3.sh [new file with mode: 0755]
t/missing4.sh [new file with mode: 0755]
t/missing5-w.sh [new file with mode: 0755]
t/missing5.sh [new file with mode: 0755]
t/missing6.sh [new file with mode: 0755]
t/mkdirp-deprecation.sh [new file with mode: 0755]
t/mkinst2.sh [new file with mode: 0755]
t/mkinst3-w.sh [new file with mode: 0755]
t/mkinst3.sh [new file with mode: 0755]
t/mkinstall.sh [new file with mode: 0755]
t/mmode.sh [new file with mode: 0755]
t/mmodely.sh [new file with mode: 0755]
t/multlib.sh [new file with mode: 0755]
t/no-extra-makefile-code.sh [new file with mode: 0755]
t/no-outdir-option.sh [new file with mode: 0755]
t/nobase-libtool.sh [new file with mode: 0755]
t/nobase-nodist.sh [new file with mode: 0755]
t/nobase-python.sh [new file with mode: 0755]
t/nobase.sh [new file with mode: 0755]
t/nodef.sh [new file with mode: 0755]
t/nodef2.sh [new file with mode: 0755]
t/nodep.sh [new file with mode: 0755]
t/nodep2.sh [new file with mode: 0755]
t/nodepcomp.sh [new file with mode: 0755]
t/nodist.sh [new file with mode: 0755]
t/nodist2.sh [new file with mode: 0755]
t/nodist3.sh [new file with mode: 0755]
t/noinst.sh [new file with mode: 0755]
t/noinstdir.sh [new file with mode: 0755]
t/nolink.sh [new file with mode: 0755]
t/nostdinc.sh [new file with mode: 0755]
t/notrans.sh [new file with mode: 0755]
t/number.sh [new file with mode: 0755]
t/objc-basic.sh [new file with mode: 0755]
t/objc-deps.sh [new file with mode: 0755]
t/objc-flags.sh [new file with mode: 0755]
t/objc-megademo.sh [new file with mode: 0755]
t/objc-minidemo.sh [new file with mode: 0755]
t/objcxx-basic.sh [new file with mode: 0755]
t/objcxx-deps.sh [new file with mode: 0755]
t/objcxx-flags.sh [new file with mode: 0755]
t/objcxx-minidemo.sh [new file with mode: 0755]
t/objext-pr10128.sh [new file with mode: 0755]
t/obsolete.sh [new file with mode: 0755]
t/oldvars.sh [new file with mode: 0755]
t/order.sh [new file with mode: 0755]
t/output-order.sh [new file with mode: 0755]
t/output.sh [new file with mode: 0755]
t/output10.sh [new file with mode: 0755]
t/output11.sh [new file with mode: 0755]
t/output12.sh [new file with mode: 0755]
t/output13.sh [new file with mode: 0755]
t/output2.sh [new file with mode: 0755]
t/output3.sh [new file with mode: 0755]
t/output4.sh [new file with mode: 0755]
t/output5.sh [new file with mode: 0755]
t/output6.sh [new file with mode: 0755]
t/output7.sh [new file with mode: 0755]
t/output8.sh [new file with mode: 0755]
t/output9.sh [new file with mode: 0755]
t/override-conditional-1.sh [new file with mode: 0755]
t/override-conditional-2.sh [new file with mode: 0755]
t/override-html.sh [new file with mode: 0755]
t/override-suggest-local.sh [new file with mode: 0755]
t/parallel-am.sh [new file with mode: 0755]
t/parallel-am2.sh [new file with mode: 0755]
t/parallel-am3.sh [new file with mode: 0755]
t/parallel-tests-cmdline-override.sh [new file with mode: 0755]
t/parallel-tests-console-output.sh [new file with mode: 0755]
t/parallel-tests-driver-install.sh [new file with mode: 0755]
t/parallel-tests-dry-run-1.sh [new file with mode: 0755]
t/parallel-tests-dry-run-2.sh [new file with mode: 0755]
t/parallel-tests-empty-testlogs.sh [new file with mode: 0755]
t/parallel-tests-exeext.sh [new file with mode: 0755]
t/parallel-tests-exit-statuses.sh [new file with mode: 0755]
t/parallel-tests-extra-programs.sh [new file with mode: 0755]
t/parallel-tests-fd-redirect-exeext.sh [new file with mode: 0755]
t/parallel-tests-fd-redirect.sh [new file with mode: 0755]
t/parallel-tests-fork-bomb.sh [new file with mode: 0755]
t/parallel-tests-harderror.sh [new file with mode: 0755]
t/parallel-tests-interrupt.tap [new file with mode: 0755]
t/parallel-tests-log-compiler-1.sh [new file with mode: 0755]
t/parallel-tests-log-compiler-2.sh [new file with mode: 0755]
t/parallel-tests-log-compiler-example.sh [new file with mode: 0755]
t/parallel-tests-log-override-1.sh [new file with mode: 0755]
t/parallel-tests-log-override-2.sh [new file with mode: 0755]
t/parallel-tests-log-override-recheck.sh [new file with mode: 0755]
t/parallel-tests-many.sh [new file with mode: 0755]
t/parallel-tests-no-color-in-log.sh [new file with mode: 0755]
t/parallel-tests-no-spurious-summary.sh [new file with mode: 0755]
t/parallel-tests-once.sh [new file with mode: 0755]
t/parallel-tests-recheck-depends-on-all.sh [new file with mode: 0755]
t/parallel-tests-reset-term.sh [new file with mode: 0755]
t/parallel-tests-subdir.sh [new file with mode: 0755]
t/parallel-tests-suffix-prog.sh [new file with mode: 0755]
t/parallel-tests-suffix.sh [new file with mode: 0755]
t/parallel-tests-trailing-bslash.sh [new file with mode: 0755]
t/parallel-tests-unreadable.sh [new file with mode: 0755]
t/parallel-tests.sh [new file with mode: 0755]
t/parallel-tests10.sh [new file with mode: 0755]
t/parallel-tests2.sh [new file with mode: 0755]
t/parallel-tests3.sh [new file with mode: 0755]
t/parallel-tests5.sh [new file with mode: 0755]
t/parallel-tests6.sh [new file with mode: 0755]
t/parallel-tests8.sh [new file with mode: 0755]
t/parallel-tests9.sh [new file with mode: 0755]
t/parse.sh [new file with mode: 0755]
t/percent.sh [new file with mode: 0755]
t/percent2.sh [new file with mode: 0755]
t/perf/cond.sh [new file with mode: 0755]
t/perf/testsuite-recheck.sh [new file with mode: 0755]
t/perf/testsuite-summary.sh [new file with mode: 0755]
t/phony.sh [new file with mode: 0755]
t/pluseq.sh [new file with mode: 0755]
t/pluseq10.sh [new file with mode: 0755]
t/pluseq11.sh [new file with mode: 0755]
t/pluseq2.sh [new file with mode: 0755]
t/pluseq3.sh [new file with mode: 0755]
t/pluseq4.sh [new file with mode: 0755]
t/pluseq5.sh [new file with mode: 0755]
t/pluseq6.sh [new file with mode: 0755]
t/pluseq7.sh [new file with mode: 0755]
t/pluseq8.sh [new file with mode: 0755]
t/pluseq9.sh [new file with mode: 0755]
t/pm/Cond2.pl [new file with mode: 0644]
t/pm/Cond3.pl [new file with mode: 0644]
t/pm/Condition-t.pl [new file with mode: 0644]
t/pm/Condition.pl [new file with mode: 0644]
t/pm/DisjCon2.pl [new file with mode: 0644]
t/pm/DisjCon3.pl [new file with mode: 0644]
t/pm/DisjConditions-t.pl [new file with mode: 0644]
t/pm/DisjConditions.pl [new file with mode: 0644]
t/pm/Version.pl [new file with mode: 0644]
t/pm/Version2.pl [new file with mode: 0644]
t/pm/Version3.pl [new file with mode: 0644]
t/pm/Wrap.pl [new file with mode: 0644]
t/posixsubst-data.sh [new file with mode: 0755]
t/posixsubst-extradist.sh [new file with mode: 0755]
t/posixsubst-ldadd.sh [new file with mode: 0755]
t/posixsubst-libraries.sh [new file with mode: 0755]
t/posixsubst-ltlibraries.sh [new file with mode: 0755]
t/posixsubst-programs.sh [new file with mode: 0755]
t/posixsubst-scripts.sh [new file with mode: 0755]
t/posixsubst-sources.sh [new file with mode: 0755]
t/posixsubst-tests-w.sh [new file with mode: 0755]
t/posixsubst-tests.sh [new file with mode: 0755]
t/postproc.sh [new file with mode: 0755]
t/ppf77.sh [new file with mode: 0755]
t/pr2.sh [new file with mode: 0755]
t/pr211.sh [new file with mode: 0755]
t/pr220.sh [new file with mode: 0755]
t/pr224.sh [new file with mode: 0755]
t/pr229.sh [new file with mode: 0755]
t/pr243.sh [new file with mode: 0755]
t/pr266.sh [new file with mode: 0755]
t/pr279-2.sh [new file with mode: 0755]
t/pr279.sh [new file with mode: 0755]
t/pr287.sh [new file with mode: 0755]
t/pr300-lib.sh [new file with mode: 0755]
t/pr300-ltlib.sh [new file with mode: 0755]
t/pr300-prog.sh [new file with mode: 0755]
t/pr307.sh [new file with mode: 0755]
t/pr401.sh [new file with mode: 0755]
t/pr401b.sh [new file with mode: 0755]
t/pr401c.sh [new file with mode: 0755]
t/pr72.sh [new file with mode: 0755]
t/pr8365-remake-timing.sh [new file with mode: 0755]
t/pr87.sh [new file with mode: 0755]
t/pr9.sh [new file with mode: 0755]
t/prefix.sh [new file with mode: 0755]
t/primary-prefix-couples-documented-valid.sh [new file with mode: 0755]
t/primary-prefix-couples-force-valid.sh [new file with mode: 0755]
t/primary-prefix-invalid-couples.tap [new file with mode: 0755]
t/primary-prefix-valid-couples.sh [new file with mode: 0755]
t/primary.sh [new file with mode: 0755]
t/primary2.sh [new file with mode: 0755]
t/primary3.sh [new file with mode: 0755]
t/print-libdir.sh [new file with mode: 0755]
t/proginst.sh [new file with mode: 0755]
t/programs-primary-rewritten.sh [new file with mode: 0755]
t/py-compile-basedir.sh [new file with mode: 0755]
t/py-compile-basic.sh [new file with mode: 0755]
t/py-compile-basic2.sh [new file with mode: 0755]
t/py-compile-destdir.sh [new file with mode: 0755]
t/py-compile-env.sh [new file with mode: 0755]
t/py-compile-option-terminate.sh [new file with mode: 0755]
t/py-compile-usage.sh [new file with mode: 0755]
t/python-dist.sh [new file with mode: 0755]
t/python-pr10995.sh [new file with mode: 0755]
t/python-vars.sh [new file with mode: 0755]
t/python-virtualenv.sh [new file with mode: 0755]
t/python.sh [new file with mode: 0755]
t/python10.sh [new file with mode: 0755]
t/python11.sh [new file with mode: 0755]
t/python12.sh [new file with mode: 0755]
t/python2.sh [new file with mode: 0755]
t/python3.sh [new file with mode: 0755]
t/python4.sh [new file with mode: 0755]
t/python5.sh [new file with mode: 0755]
t/python5b.sh [new file with mode: 0755]
t/python6.sh [new file with mode: 0755]
t/python7.sh [new file with mode: 0755]
t/python8.sh [new file with mode: 0755]
t/python9.sh [new file with mode: 0755]
t/recurs.sh [new file with mode: 0755]
t/recurs2.sh [new file with mode: 0755]
t/relativize.tap [new file with mode: 0755]
t/remake-all-1.sh [new file with mode: 0755]
t/remake-all-2.sh [new file with mode: 0755]
t/remake-am-pr10111.sh [new file with mode: 0755]
t/remake-deleted-am-2.sh [new file with mode: 0755]
t/remake-deleted-am-subdir.sh [new file with mode: 0755]
t/remake-deleted-am.sh [new file with mode: 0755]
t/remake-deleted-m4-file.sh [new file with mode: 0755]
t/remake-gnulib-add-acsubst.sh [new file with mode: 0755]
t/remake-gnulib-add-header.sh [new file with mode: 0755]
t/remake-gnulib-remove-header.sh [new file with mode: 0755]
t/remake-m4-pr10111.sh [new file with mode: 0755]
t/remake-moved-m4-file.sh [new file with mode: 0755]
t/remake-renamed-am.sh [new file with mode: 0755]
t/remake-renamed-m4-file.sh [new file with mode: 0755]
t/remake-renamed-m4-macro-and-file.sh [new file with mode: 0755]
t/remake-renamed-m4-macro.sh [new file with mode: 0755]
t/remake-subdir-from-subdir.sh [new file with mode: 0755]
t/remake-subdir-gnu.sh [new file with mode: 0755]
t/remake-subdir-long-time.sh [new file with mode: 0755]
t/remake-subdir.sh [new file with mode: 0755]
t/remake-subdir2.sh [new file with mode: 0755]
t/remake.sh [new file with mode: 0755]
t/remake10a.sh [new file with mode: 0755]
t/remake10b.sh [new file with mode: 0755]
t/remake10c.sh [new file with mode: 0755]
t/remake11.sh [new file with mode: 0755]
t/remake12.sh [new file with mode: 0755]
t/remake1a.sh [new file with mode: 0755]
t/remake2.sh [new file with mode: 0755]
t/remake3.sh [new file with mode: 0755]
t/remake3a.sh [new file with mode: 0755]
t/remake4.sh [new file with mode: 0755]
t/remake5.sh [new file with mode: 0755]
t/remake6.sh [new file with mode: 0755]
t/remake7.sh [new file with mode: 0755]
t/remake8a.sh [new file with mode: 0755]
t/remake8b.sh [new file with mode: 0755]
t/remake9a.sh [new file with mode: 0755]
t/remake9b.sh [new file with mode: 0755]
t/remake9c.sh [new file with mode: 0755]
t/remake9d.sh [new file with mode: 0755]
t/repeated-options.sh [new file with mode: 0755]
t/req.sh [new file with mode: 0755]
t/reqd.sh [new file with mode: 0755]
t/reqd2.sh [new file with mode: 0755]
t/rulepat.sh [new file with mode: 0755]
t/sanity.sh [new file with mode: 0755]
t/scripts.sh [new file with mode: 0755]
t/seenc.sh [new file with mode: 0755]
t/self-check-cleanup.tap [new file with mode: 0755]
t/self-check-configure-help.sh [new file with mode: 0755]
t/self-check-dir.tap [new file with mode: 0755]
t/self-check-env-sanitize.tap [new file with mode: 0755]
t/self-check-exit.tap [new file with mode: 0755]
t/self-check-explicit-skips.sh [new file with mode: 0755]
t/self-check-is-blocked-signal.tap [new file with mode: 0755]
t/self-check-is_newest.tap [new file with mode: 0755]
t/self-check-me.tap [new file with mode: 0755]
t/self-check-reexec.tap [new file with mode: 0755]
t/self-check-report.sh [new file with mode: 0755]
t/self-check-sanity.sh [new file with mode: 0755]
t/self-check-seq.tap [new file with mode: 0755]
t/self-check-tap.sh [new file with mode: 0755]
t/self-check-unindent.tap [new file with mode: 0755]
t/serial-tests.sh [new file with mode: 0755]
t/silent-amopts.sh [new file with mode: 0755]
t/silent-configsite.sh [new file with mode: 0755]
t/silent-lex.sh [new file with mode: 0755]
t/silent-many-gcc.sh [new file with mode: 0755]
t/silent-many-generic.sh [new file with mode: 0755]
t/silent-nested-vars.sh [new file with mode: 0755]
t/silent-nowarn.sh [new file with mode: 0755]
t/silent-yacc-headers.sh [new file with mode: 0755]
t/silent-yacc.sh [new file with mode: 0755]
t/silent.sh [new file with mode: 0755]
t/silent2.sh [new file with mode: 0755]
t/silent3.sh [new file with mode: 0755]
t/silent4.sh [new file with mode: 0755]
t/silent6.sh [new file with mode: 0755]
t/silent7.sh [new file with mode: 0755]
t/silent8.sh [new file with mode: 0755]
t/silent9.sh [new file with mode: 0755]
t/silentcxx-gcc.sh [new file with mode: 0755]
t/silentcxx.sh [new file with mode: 0755]
t/silentf77.sh [new file with mode: 0755]
t/silentf90.sh [new file with mode: 0755]
t/space.sh [new file with mode: 0755]
t/specflg-dummy.sh [new file with mode: 0755]
t/specflg.sh [new file with mode: 0755]
t/specflg10.sh [new file with mode: 0755]
t/specflg2.sh [new file with mode: 0755]
t/specflg3.sh [new file with mode: 0755]
t/specflg6.sh [new file with mode: 0755]
t/specflg7.sh [new file with mode: 0755]
t/specflg8.sh [new file with mode: 0755]
t/specflg9.sh [new file with mode: 0755]
t/spell.sh [new file with mode: 0755]
t/spell2.sh [new file with mode: 0755]
t/spell3.sh [new file with mode: 0755]
t/spelling.sh [new file with mode: 0755]
t/spy-rm.tap [new file with mode: 0755]
t/spy.sh [new file with mode: 0755]
t/srcsub.sh [new file with mode: 0755]
t/srcsub2.sh [new file with mode: 0755]
t/stamph2.sh [new file with mode: 0755]
t/stdinc.sh [new file with mode: 0755]
t/stdlib.sh [new file with mode: 0755]
t/stdlib2.sh [new file with mode: 0755]
t/strictness-override.sh [new file with mode: 0755]
t/strictness-precedence.sh [new file with mode: 0755]
t/strip.sh [new file with mode: 0755]
t/strip2.sh [new file with mode: 0755]
t/strip3.sh [new file with mode: 0755]
t/subcond.sh [new file with mode: 0755]
t/subcond2.sh [new file with mode: 0755]
t/subcond3.sh [new file with mode: 0755]
t/subdir.sh [new file with mode: 0755]
t/subdir10.sh [new file with mode: 0755]
t/subdir2.sh [new file with mode: 0755]
t/subdir3.sh [new file with mode: 0755]
t/subdir4.sh [new file with mode: 0755]
t/subdir5.sh [new file with mode: 0755]
t/subdir6.sh [new file with mode: 0755]
t/subdir7.sh [new file with mode: 0755]
t/subdir8.sh [new file with mode: 0755]
t/subdir9.sh [new file with mode: 0755]
t/subdirbuiltsources.sh [new file with mode: 0755]
t/subobj.sh [new file with mode: 0755]
t/subobj10.sh [new file with mode: 0755]
t/subobj11a.sh [new file with mode: 0755]
t/subobj11b.sh [new file with mode: 0755]
t/subobj11c.sh [new file with mode: 0755]
t/subobj2.sh [new file with mode: 0755]
t/subobj4.sh [new file with mode: 0755]
t/subobj5.sh [new file with mode: 0755]
t/subobj6.sh [new file with mode: 0755]
t/subobj7.sh [new file with mode: 0755]
t/subobj8.sh [new file with mode: 0755]
t/subobj9.sh [new file with mode: 0755]
t/subobjname.sh [new file with mode: 0755]
t/subpkg-yacc.sh [new file with mode: 0755]
t/subpkg.sh [new file with mode: 0755]
t/subpkg2.sh [new file with mode: 0755]
t/subpkg3.sh [new file with mode: 0755]
t/subpkg4.sh [new file with mode: 0755]
t/subst-no-trailing-empty-line.sh [new file with mode: 0755]
t/subst.sh [new file with mode: 0755]
t/subst3.sh [new file with mode: 0755]
t/subst4.sh [new file with mode: 0755]
t/subst5.sh [new file with mode: 0755]
t/substre2.sh [new file with mode: 0755]
t/substref.sh [new file with mode: 0755]
t/substtarg.sh [new file with mode: 0755]
t/suffix-chain.tap [new file with mode: 0755]
t/suffix.sh [new file with mode: 0755]
t/suffix10.tap [new file with mode: 0755]
t/suffix11.tap [new file with mode: 0755]
t/suffix12.sh [new file with mode: 0755]
t/suffix13.sh [new file with mode: 0755]
t/suffix2.sh [new file with mode: 0755]
t/suffix3.tap [new file with mode: 0755]
t/suffix4.sh [new file with mode: 0755]
t/suffix5.sh [new file with mode: 0755]
t/suffix6.sh [new file with mode: 0755]
t/suffix6b.sh [new file with mode: 0755]
t/suffix6c.sh [new file with mode: 0755]
t/suffix7.sh [new file with mode: 0755]
t/suffix8.tap [new file with mode: 0755]
t/suffix9.sh [new file with mode: 0755]
t/symlink.sh [new file with mode: 0755]
t/symlink2.sh [new file with mode: 0755]
t/syntax.sh [new file with mode: 0755]
t/tags.sh [new file with mode: 0755]
t/tags2.sh [new file with mode: 0755]
t/tagsub.sh [new file with mode: 0755]
t/tap-ambiguous-directive-w.sh [new file with mode: 0755]
t/tap-ambiguous-directive.sh [new file with mode: 0755]
t/tap-autonumber-w.sh [new file with mode: 0755]
t/tap-autonumber.sh [new file with mode: 0755]
t/tap-bad-prog-w.tap [new file with mode: 0755]
t/tap-bad-prog.tap [new file with mode: 0755]
t/tap-bailout-and-logging-w.sh [new file with mode: 0755]
t/tap-bailout-and-logging.sh [new file with mode: 0755]
t/tap-bailout-leading-space.sh [new file with mode: 0755]
t/tap-bailout-suppress-badexit-w.sh [new file with mode: 0755]
t/tap-bailout-suppress-badexit.sh [new file with mode: 0755]
t/tap-bailout-suppress-later-diagnostic-w.sh [new file with mode: 0755]
t/tap-bailout-suppress-later-diagnostic.sh [new file with mode: 0755]
t/tap-bailout-suppress-later-errors-w.sh [new file with mode: 0755]
t/tap-bailout-suppress-later-errors.sh [new file with mode: 0755]
t/tap-bailout-w.sh [new file with mode: 0755]
t/tap-bailout.sh [new file with mode: 0755]
t/tap-basic-w.sh [new file with mode: 0755]
t/tap-basic.sh [new file with mode: 0755]
t/tap-color-w.sh [new file with mode: 0755]
t/tap-color.sh [new file with mode: 0755]
t/tap-common-setup.sh [new file with mode: 0755]
t/tap-deps-w.sh [new file with mode: 0755]
t/tap-deps.sh [new file with mode: 0755]
t/tap-diagnostic-custom-w.sh [new file with mode: 0755]
t/tap-diagnostic-custom.sh [new file with mode: 0755]
t/tap-diagnostic-w.sh [new file with mode: 0755]
t/tap-diagnostic.sh [new file with mode: 0755]
t/tap-doc-w.sh [new file with mode: 0755]
t/tap-doc.sh [new file with mode: 0755]
t/tap-doc2.sh [new file with mode: 0755]
t/tap-driver-stderr-w.sh [new file with mode: 0755]
t/tap-driver-stderr.sh [new file with mode: 0755]
t/tap-empty-diagnostic-w.sh [new file with mode: 0755]
t/tap-empty-diagnostic.sh [new file with mode: 0755]
t/tap-empty-w.sh [new file with mode: 0755]
t/tap-empty.sh [new file with mode: 0755]
t/tap-escape-directive-2-w.sh [new file with mode: 0755]
t/tap-escape-directive-2.sh [new file with mode: 0755]
t/tap-escape-directive-w.sh [new file with mode: 0755]
t/tap-escape-directive.sh [new file with mode: 0755]
t/tap-exit-w.sh [new file with mode: 0755]
t/tap-exit.sh [new file with mode: 0755]
t/tap-fancy-w.sh [new file with mode: 0755]
t/tap-fancy.sh [new file with mode: 0755]
t/tap-fancy2-w.sh [new file with mode: 0755]
t/tap-fancy2.sh [new file with mode: 0755]
t/tap-global-log-w.sh [new file with mode: 0755]
t/tap-global-log.sh [new file with mode: 0755]
t/tap-global-result-w.sh [new file with mode: 0755]
t/tap-global-result.sh [new file with mode: 0755]
t/tap-log-w.sh [new file with mode: 0755]
t/tap-log.sh [new file with mode: 0755]
t/tap-merge-stdout-stderr-w.sh [new file with mode: 0755]
t/tap-merge-stdout-stderr.sh [new file with mode: 0755]
t/tap-missing-plan-and-bad-exit-w.sh [new file with mode: 0755]
t/tap-missing-plan-and-bad-exit.sh [new file with mode: 0755]
t/tap-more-w.sh [new file with mode: 0755]
t/tap-more.sh [new file with mode: 0755]
t/tap-more2-w.sh [new file with mode: 0755]
t/tap-more2.sh [new file with mode: 0755]
t/tap-msg0-bailout-w.sh [new file with mode: 0755]
t/tap-msg0-bailout.sh [new file with mode: 0755]
t/tap-msg0-directive-w.sh [new file with mode: 0755]
t/tap-msg0-directive.sh [new file with mode: 0755]
t/tap-msg0-misc-w.sh [new file with mode: 0755]
t/tap-msg0-misc.sh [new file with mode: 0755]
t/tap-msg0-planskip-w.sh [new file with mode: 0755]
t/tap-msg0-planskip.sh [new file with mode: 0755]
t/tap-msg0-result-w.sh [new file with mode: 0755]
t/tap-msg0-result.sh [new file with mode: 0755]
t/tap-negative-numbers-w.sh [new file with mode: 0755]
t/tap-negative-numbers.sh [new file with mode: 0755]
t/tap-no-disable-hard-error-w.sh [new file with mode: 0755]
t/tap-no-disable-hard-error.sh [new file with mode: 0755]
t/tap-no-merge-stdout-stderr-w.sh [new file with mode: 0755]
t/tap-no-merge-stdout-stderr.sh [new file with mode: 0755]
t/tap-no-spurious-numbers-w.sh [new file with mode: 0755]
t/tap-no-spurious-numbers.sh [new file with mode: 0755]
t/tap-no-spurious-summary-w.sh [new file with mode: 0755]
t/tap-no-spurious-summary.sh [new file with mode: 0755]
t/tap-no-spurious-w.sh [new file with mode: 0755]
t/tap-no-spurious.sh [new file with mode: 0755]
t/tap-not-ok-skip-w.sh [new file with mode: 0755]
t/tap-not-ok-skip.sh [new file with mode: 0755]
t/tap-number-wordboundary-w.sh [new file with mode: 0755]
t/tap-number-wordboundary.sh [new file with mode: 0755]
t/tap-numbers-leading-zero-w.sh [new file with mode: 0755]
t/tap-numbers-leading-zero.sh [new file with mode: 0755]
t/tap-numeric-description-w.sh [new file with mode: 0755]
t/tap-numeric-description.sh [new file with mode: 0755]
t/tap-out-of-order-w.sh [new file with mode: 0755]
t/tap-out-of-order.sh [new file with mode: 0755]
t/tap-passthrough-exit-w.sh [new file with mode: 0755]
t/tap-passthrough-exit.sh [new file with mode: 0755]
t/tap-passthrough-w.sh [new file with mode: 0755]
t/tap-passthrough.sh [new file with mode: 0755]
t/tap-plan-corner-w.sh [new file with mode: 0755]
t/tap-plan-corner.sh [new file with mode: 0755]
t/tap-plan-errors-w.sh [new file with mode: 0755]
t/tap-plan-errors.sh [new file with mode: 0755]
t/tap-plan-leading-zero-w.sh [new file with mode: 0755]
t/tap-plan-leading-zero.sh [new file with mode: 0755]
t/tap-plan-malformed-w.sh [new file with mode: 0755]
t/tap-plan-malformed.sh [new file with mode: 0755]
t/tap-plan-middle-w.sh [new file with mode: 0755]
t/tap-plan-middle.sh [new file with mode: 0755]
t/tap-plan-w.sh [new file with mode: 0755]
t/tap-plan-whitespace-w.sh [new file with mode: 0755]
t/tap-plan-whitespace.sh [new file with mode: 0755]
t/tap-plan.sh [new file with mode: 0755]
t/tap-planskip-and-logging-w.sh [new file with mode: 0755]
t/tap-planskip-and-logging.sh [new file with mode: 0755]
t/tap-planskip-badexit-w.sh [new file with mode: 0755]
t/tap-planskip-badexit.sh [new file with mode: 0755]
t/tap-planskip-bailout-w.sh [new file with mode: 0755]
t/tap-planskip-bailout.sh [new file with mode: 0755]
t/tap-planskip-case-insensitive-w.sh [new file with mode: 0755]
t/tap-planskip-case-insensitive.sh [new file with mode: 0755]
t/tap-planskip-late-w.sh [new file with mode: 0755]
t/tap-planskip-late.sh [new file with mode: 0755]
t/tap-planskip-later-errors-w.sh [new file with mode: 0755]
t/tap-planskip-later-errors.sh [new file with mode: 0755]
t/tap-planskip-unplanned-corner-w.sh [new file with mode: 0755]
t/tap-planskip-unplanned-corner.sh [new file with mode: 0755]
t/tap-planskip-unplanned-w.sh [new file with mode: 0755]
t/tap-planskip-unplanned.sh [new file with mode: 0755]
t/tap-planskip-w.sh [new file with mode: 0755]
t/tap-planskip-whitespace-w.sh [new file with mode: 0755]
t/tap-planskip-whitespace.sh [new file with mode: 0755]
t/tap-planskip.sh [new file with mode: 0755]
t/tap-realtime-w.sh [new file with mode: 0755]
t/tap-realtime.sh [new file with mode: 0755]
t/tap-recheck-logs-w.sh [new file with mode: 0755]
t/tap-recheck-logs.sh [new file with mode: 0755]
t/tap-recheck-w.sh [new file with mode: 0755]
t/tap-recheck.sh [new file with mode: 0755]
t/tap-result-comment-w.sh [new file with mode: 0755]
t/tap-result-comment.sh [new file with mode: 0755]
t/tap-signal-w.tap [new file with mode: 0755]
t/tap-signal.tap [new file with mode: 0755]
t/tap-summary-color.sh [new file with mode: 0755]
t/tap-summary.sh [new file with mode: 0755]
t/tap-test-number-0-w.sh [new file with mode: 0755]
t/tap-test-number-0.sh [new file with mode: 0755]
t/tap-todo-skip-together-w.sh [new file with mode: 0755]
t/tap-todo-skip-together.sh [new file with mode: 0755]
t/tap-todo-skip-w.sh [new file with mode: 0755]
t/tap-todo-skip-whitespace-w.sh [new file with mode: 0755]
t/tap-todo-skip-whitespace.sh [new file with mode: 0755]
t/tap-todo-skip.sh [new file with mode: 0755]
t/tap-unplanned-w.sh [new file with mode: 0755]
t/tap-unplanned.sh [new file with mode: 0755]
t/tap-whitespace-normalization-w.sh [new file with mode: 0755]
t/tap-whitespace-normalization.sh [new file with mode: 0755]
t/tap-with-and-without-number-w.sh [new file with mode: 0755]
t/tap-with-and-without-number.sh [new file with mode: 0755]
t/tap-xfail-tests-w.sh [new file with mode: 0755]
t/tap-xfail-tests.sh [new file with mode: 0755]
t/tar-override.sh [new file with mode: 0755]
t/tar.sh [new file with mode: 0755]
t/tar2.sh [new file with mode: 0755]
t/tar3.sh [new file with mode: 0755]
t/target-cflags.sh [new file with mode: 0755]
t/targetclash.sh [new file with mode: 0755]
t/test-driver-acsubst.sh [new file with mode: 0755]
t/test-driver-cond.sh [new file with mode: 0755]
t/test-driver-create-log-dir.sh [new file with mode: 0755]
t/test-driver-custom-multitest-recheck.sh [new file with mode: 0755]
t/test-driver-custom-multitest-recheck2.sh [new file with mode: 0755]
t/test-driver-custom-multitest.sh [new file with mode: 0755]
t/test-driver-custom-no-extra-driver.sh [new file with mode: 0755]
t/test-driver-custom-xfail-tests.sh [new file with mode: 0755]
t/test-driver-custom.sh [new file with mode: 0755]
t/test-driver-fail.sh [new file with mode: 0755]
t/test-driver-is-distributed.sh [new file with mode: 0755]
t/test-driver-strip-vpath.sh [new file with mode: 0755]
t/test-driver-trs-suffix-registered.sh [new file with mode: 0755]
t/test-extensions-cond.sh [new file with mode: 0755]
t/test-extensions.sh [new file with mode: 0755]
t/test-harness-vpath-rewrite.sh [new file with mode: 0755]
t/test-log.sh [new file with mode: 0755]
t/test-logs-repeated.sh [new file with mode: 0755]
t/test-metadata-global-log.sh [new file with mode: 0755]
t/test-metadata-global-result.sh [new file with mode: 0755]
t/test-metadata-recheck.sh [new file with mode: 0755]
t/test-metadata-results.sh [new file with mode: 0755]
t/test-missing.sh [new file with mode: 0755]
t/test-missing2.sh [new file with mode: 0755]
t/test-trs-basic.sh [new file with mode: 0755]
t/test-trs-recover.sh [new file with mode: 0755]
t/test-trs-recover2.sh [new file with mode: 0755]
t/tests-environment-and-log-compiler.sh [new file with mode: 0755]
t/tests-environment-backcompat.sh [new file with mode: 0755]
t/tests-environment-fd-redirect.sh [new file with mode: 0755]
t/tests-environment.sh [new file with mode: 0755]
t/testsuite-part.am [new file with mode: 0644]
t/testsuite-summary-color.sh [new file with mode: 0755]
t/testsuite-summary-count-many.sh [new file with mode: 0755]
t/testsuite-summary-count.sh [new file with mode: 0755]
t/testsuite-summary-reference-log.sh [new file with mode: 0755]
t/transform.sh [new file with mode: 0755]
t/transform2.sh [new file with mode: 0755]
t/transform3.sh [new file with mode: 0755]
t/txinfo-no-clutter.sh [new file with mode: 0755]
t/txinfo-unrecognized-extension.sh [new file with mode: 0755]
t/txinfo.sh [new file with mode: 0755]
t/txinfo10.sh [new file with mode: 0755]
t/txinfo13.sh [new file with mode: 0755]
t/txinfo16.sh [new file with mode: 0755]
t/txinfo17.sh [new file with mode: 0755]
t/txinfo19.sh [new file with mode: 0755]
t/txinfo2.sh [new file with mode: 0755]
t/txinfo20.sh [new file with mode: 0755]
t/txinfo21.sh [new file with mode: 0755]
t/txinfo22.sh [new file with mode: 0755]
t/txinfo23.sh [new file with mode: 0755]
t/txinfo24.sh [new file with mode: 0755]
t/txinfo25.sh [new file with mode: 0755]
t/txinfo26.sh [new file with mode: 0755]
t/txinfo27.sh [new file with mode: 0755]
t/txinfo28.sh [new file with mode: 0755]
t/txinfo29.sh [new file with mode: 0755]
t/txinfo3.sh [new file with mode: 0755]
t/txinfo30.sh [new file with mode: 0755]
t/txinfo31.sh [new file with mode: 0755]
t/txinfo32.sh [new file with mode: 0755]
t/txinfo33.sh [new file with mode: 0755]
t/txinfo4.sh [new file with mode: 0755]
t/txinfo5.sh [new file with mode: 0755]
t/txinfo5b.sh [new file with mode: 0755]
t/txinfo6.sh [new file with mode: 0755]
t/txinfo7.sh [new file with mode: 0755]
t/txinfo8.sh [new file with mode: 0755]
t/txinfo9.sh [new file with mode: 0755]
t/uninstall-fail.sh [new file with mode: 0755]
t/uninstall-pr9578.sh [new file with mode: 0755]
t/unused.sh [new file with mode: 0755]
t/upc.sh [new file with mode: 0755]
t/upc2.sh [new file with mode: 0755]
t/upc3.sh [new file with mode: 0755]
t/vala-headers.sh [new file with mode: 0755]
t/vala-libs.sh [new file with mode: 0755]
t/vala-mix.sh [new file with mode: 0755]
t/vala-mix2.sh [new file with mode: 0755]
t/vala-parallel.sh [new file with mode: 0755]
t/vala-vapi.sh [new file with mode: 0755]
t/vala-vpath.sh [new file with mode: 0755]
t/vala.sh [new file with mode: 0755]
t/vala2.sh [new file with mode: 0755]
t/vala3.sh [new file with mode: 0755]
t/vala4.sh [new file with mode: 0755]
t/vala5.sh [new file with mode: 0755]
t/vars.sh [new file with mode: 0755]
t/vars3.sh [new file with mode: 0755]
t/vartar.sh [new file with mode: 0755]
t/vartypo2.sh [new file with mode: 0755]
t/vartypos.sh [new file with mode: 0755]
t/version.sh [new file with mode: 0755]
t/version2.sh [new file with mode: 0755]
t/version3.sh [new file with mode: 0755]
t/version4.sh [new file with mode: 0755]
t/version6.sh [new file with mode: 0755]
t/version7.sh [new file with mode: 0755]
t/version8.sh [new file with mode: 0755]
t/vpath.sh [new file with mode: 0755]
t/vtexi.sh [new file with mode: 0755]
t/vtexi2.sh [new file with mode: 0755]
t/vtexi3.sh [new file with mode: 0755]
t/vtexi4.sh [new file with mode: 0755]
t/warning-groups-win-over-strictness.sh [new file with mode: 0755]
t/warnings-override.sh [new file with mode: 0755]
t/warnings-precedence.sh [new file with mode: 0755]
t/warnings-strictness-interactions.sh [new file with mode: 0755]
t/warnings-unknown.sh [new file with mode: 0755]
t/warnings-win-over-strictness.sh [new file with mode: 0755]
t/warnopts.sh [new file with mode: 0755]
t/werror.sh [new file with mode: 0755]
t/werror2.sh [new file with mode: 0755]
t/werror3.sh [new file with mode: 0755]
t/werror4.sh [new file with mode: 0755]
t/whoami.sh [new file with mode: 0755]
t/wrap/aclocal.in [new file with mode: 0644]
t/wrap/automake.in [new file with mode: 0644]
t/xsource.sh [new file with mode: 0755]
t/yacc-auxdir.sh [new file with mode: 0755]
t/yacc-basic.sh [new file with mode: 0755]
t/yacc-bison-skeleton-cxx.sh [new file with mode: 0755]
t/yacc-bison-skeleton.sh [new file with mode: 0755]
t/yacc-clean-cxx.sh [new file with mode: 0755]
t/yacc-clean.sh [new file with mode: 0755]
t/yacc-cxx.sh [new file with mode: 0755]
t/yacc-d-basic.sh [new file with mode: 0755]
t/yacc-d-cxx.sh [new file with mode: 0755]
t/yacc-d-vpath.sh [new file with mode: 0755]
t/yacc-deleted-headers.sh [new file with mode: 0755]
t/yacc-depend.sh [new file with mode: 0755]
t/yacc-depend2.sh [new file with mode: 0755]
t/yacc-dist-nobuild-subdir.sh [new file with mode: 0755]
t/yacc-dist-nobuild.sh [new file with mode: 0755]
t/yacc-line.sh [new file with mode: 0755]
t/yacc-mix-c-cxx.sh [new file with mode: 0755]
t/yacc-nodist.sh [new file with mode: 0755]
t/yacc-pr204.sh [new file with mode: 0755]
t/yacc-weirdnames.sh [new file with mode: 0755]
t/yacc.sh [new file with mode: 0755]
t/yacc2.sh [new file with mode: 0755]
t/yacc4.sh [new file with mode: 0755]
t/yacc5.sh [new file with mode: 0755]
t/yacc7.sh [new file with mode: 0755]
t/yacc8.sh [new file with mode: 0755]
t/yaccdry.sh [new file with mode: 0755]
t/yaccpp.sh [new file with mode: 0755]
t/yaccvpath.sh [new file with mode: 0755]
t/yflags-cmdline-override.sh [new file with mode: 0755]
t/yflags-conditional.sh [new file with mode: 0755]
t/yflags-d-false-positives.sh [new file with mode: 0755]
t/yflags-force-conditional.sh [new file with mode: 0755]
t/yflags-force-override.sh [new file with mode: 0755]
t/yflags-var-expand.sh [new file with mode: 0755]
t/yflags.sh [new file with mode: 0755]
t/yflags2.sh [new file with mode: 0755]

diff --git a/.git-log-fix b/.git-log-fix
new file mode 100644 (file)
index 0000000..d87a0ec
--- /dev/null
@@ -0,0 +1,13 @@
+# This file is expected to be used via gitlog-to-changelog's --amend=FILE
+# option.  It specifies what changes to make to each given SHA1's commit
+# log and metadata, using Perl-eval'able expressions.
+
+3b369e6bbe0fb6d7359398935706c87dd9375cb6
+# Date:   Thu Feb 16 22:29:32 2012 +0100
+# Fix a typo.
+s| bur | bug |
+
+22729165f6bb902daeb8a4d8e7cb06982390f327
+# Date:   Fri Feb 17 10:13:15 2012 +0100
+# Fix a typo.
+s|.fix-git-log|.git-log-fix|
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..e63f8b7
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,21 @@
+Authors of GNU Automake.
+
+David Mackenzie
+  First version of most ".am" files.
+  Wrote sh version of automake.in.
+
+Tom Tromey
+  Touched all ".am" files.
+  Rewrote automake.in
+
+Alexandre Oliva
+  Some of the user-side dependency tracking system.
+  Some more random hacking.
+
+Alexandre Duret-Lutz
+  Major overhaul of everything.
+  Maintenance since 2002.
+
+Ralf Wildenhues
+  Random breakage.
+  Maintenance since 2006.
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..d511905
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, 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, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..43cea18
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,7932 @@
+2012-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       release: stable release 1.12.1
+
+       * configure.ac (AC_INIT): Bump version number to 1.12.1.
+       * m4/amversion.m4: Likewise (auto-updated by "./bootstrap").
+
+2012-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       copyright: update copyright years in a couple of files
+
+       * doc/help2man, t/aclocal-verbose-install.sh: Update copyright,
+       thanks to "make update-copyright".
+
+2012-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failures with Solaris 9 cscope program
+
+       * t/cscope.tap: Also check that the cscope program in use supports the
+       '-q' option; if this is not the case, some cscope usages in the generated
+       Makefiles would fail, so we must skip the checks involving those usages.
+
+2012-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix a spurious failure
+
+       * Makefile.am (test_subdirs): Add 't/perf'.  Fix spurious failure
+       of the 'maintainer-check-list-of-tests' target.
+
+2012-05-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       perf: beginning of a performance testsuite
+
+       Some tests in the Automake testsuite already aims only at verifying
+       the performance, rather than the correctness, of some operations.
+       Still, they are somewhat shoehorned and forced into the PASS/FAIL
+       framework (say, with the 'ulimit' shell builtin used to verify some
+       operation doesn't take up too much time or memory), but that is
+       conceptually a stretch, and has already caused problems in practice
+       (see automake bug#11512 for an example).
+
+       So we start moving the "performance tests" out of the testsuite proper,
+       and make them run only "on demand" (when the user exports the variable
+       'AM_TESTSUITE_PERF' to "yes").  Ideally, we should provide those tests
+       with a custom runner/driver that measures and displays the relevant
+       performance information, but doing that correctly and with the right
+       APIs is definitely more difficult, so we leave it for a later step
+       (an hope we'll take such a step eventually).
+
+       * t/cond29.sh: Move ...
+       * t/perf/cond.sh: ... here, and adjust.
+       * t/testsuite-recheck-speed.sh: Move ...
+       * t/perf/testsuite-recheck.sh: ... here.
+       * t/testsuite-summary-speed.sh: Move ...
+       * t/perf/testsuite-summary.sh: ... here.
+       * t/list-of-tests.mk (perf_TESTS): New variable, listing the tests in
+       the 't/perf' directory.
+       (handwritten_TESTS): Adjust.
+       * defs: Skip any tests in the 't/perf/' subdirectory unless the
+       'AM_TESTSUITE_PERF' variable is set to "yes" or "y".
+       * .gitignore: Update.
+
+2012-05-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'fix-pr11543' into maint
+
+       * fix-pr11543:
+         aclocal: declare function prototypes, do not use '&' in function calls
+
+2012-05-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: declare function prototypes, do not use '&' in function calls
+
+       This change will also fix automake bug#11543 (from a report by Matt
+       Burgess).
+
+       * aclocal.in: Declare prototypes for almost all functions early, before
+       any actual function definition (but omit the prototype for the dynamically
+       generated '&search' function).  Add prototypes to any function definition.
+       Remove '&' from function invocations (i.e., simply use "func(ARGS..)"
+       instead of "&func(ARGS...)").
+       * THANKS, NEWS: Update.
+
+2012-05-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: support for configure.in will be dropped in future automake versions
+
+       The use of configure.in as Autoconf input has been deprecated for a
+       very long time in the Autoconf documentation, and the next version of
+       Autoconf (2.70) will start warning about it ar runtime as well (see
+       commit 'v2.69-4-g560f16b' or 2012-05-23, "general: deprecate
+       'configure.in' as autoconf input", in the Autoconf's git repository).
+
+       * NEWS (Future backward-incompatibilities): Update.
+
+2012-05-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix botched heading comments in 'lex-clean-cxx.sh'
+
+       * t/lex-clean-cxx.sh: This file tests lex, not yacc.
+
+2012-05-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       [ng] maintcheck: some tweaks and fixlets
+
+       * syntax-checks.mk (sc_no_brace_variable_expansions): Do not complain
+       about ${MAKEVAR} usages in comments: they might be legitimate.  This
+       change is not strictly required for mainline automake, but will help
+       in the Automake-NG branch.
+       * sc_tests_here_document_format: Relax a bit, so that usages like
+       "cout << "string" << endl;" in the test scripts (usages which can be
+       used in here documents defining C++ sources) are not flagged as uses
+       of bad delimiters for here documents.  This change is not strictly
+       required for mainline automake, but will help in the Automake-NG
+       branch, and will anyway be more future proof w.r.t. possible future
+       testsuite additions.
+       (sc_tests_Exit_not_exit): Do not whitelist lines containing $PERL
+       explicitly (that was only required for one test); instead ...
+       * t/ext2.sh: ... use "exit (1)" instead of "exit 1" in the perl
+       invocation of the guilty script.
+
+2012-05-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       help: fix a typo in the list of warning categories
+
+       * lib/Automake/ChannelDefs.pm (usage): s/none'/none/.
+
+2012-05-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: version bump after beta release
+
+       * configure.ac (AC_INIT): Bump version number to 1.12.0c.
+       * m4/amversion.m4: Likewise (auto-updated by "./bootstrap").
+
+2012-05-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       release: beta release 1.12.0b (will become 1.12.1)
+
+       * configure.ac (AC_INIT): Bump version number to 1.12.0b.
+       * m4/amversion.m4: Likewise (auto-updated by "./bootstrap").
+
+2012-05-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       release: remove overly picky check
+
+       * Makefile.am (git-tag-release): Do not check that the version number
+       NEWS is updated w.r.t. $(VERSION); given the new way we manage NEWS,
+       that would cause gratuitous spurious failures.
+       * HACKING: Update.
+
+2012-05-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'ylwrap-line-filename' into maint
+
+       * ylwrap-line-filename:
+         ylwrap: preserve subdirectories in "#line" munging
+         ylwrap: preparatory refactoring
+
+2012-05-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: use 'parallel-tests' Automake option by default
+
+       This will help our transition from 'serial-tests' to 'parallel-tests'
+       as the default test suite driver enabled by a TESTS assignment in the
+       input Makefile.am.  Note that that change of default will only take
+       place in master, though.
+
+       * defs: Pass the 'parallel-tests' option to the AM_INIT_AUTOMAKE
+       invocation in the created 'configure.ac' stub, unless the variable
+       'am_serial_tests' is set to "yes".  Don't pay attention anymore to
+       the 'am_parallel_tests' variable, that's obsolete now.
+       * defs-static.in: Warn if the 'am_serial_tests' variable is set in the
+       environment; conversely, don't warn anymore about 'am_parallel_tests'
+       being set in the environment.
+       * Makefile.am (AM_TESTS_ENVIRONMENT): Nullify the 'am_serial_tests'
+       variable instead of the now-obsolete 'am_parallel_tests' one.
+       * syntax-checks.mk (sc_tests_obsolete_variables): Also warn against
+       uses of 'am_parallel_tests', which is now deprecated in favor of
+       'am_serial_tests'.  Similarly, if a use of 'parallel_tests' is seen,
+       suggest using 'am_serial_tests' instead, not 'am_parallel_tests'.
+       * gen-testsuite-part: Now that we use the 'parallel-tests' by default
+       in our tests, we need to completely change the logic and semantics of
+       generation of sibling tests for those tests that check the Automake
+       generated testsuite harness itself.  Do that, and give a complete
+       explanation of the new logic and semantics in the relevant comments.
+       * t/README: Update.
+       * Lots of test cases: Adjust.
+
+2012-05-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       doc: fix location of Automake's own test-suite.log file
+
+       * doc/automake.texi (Reporting Bugs): The global testsuite log of
+       Automake is now (basically since we have removed make recursion from
+       the Automake's build system) saved in the file 'test-suite.log', not
+       in the file 'tests/test-suite.log'.  Adjust accordingly.
+
+2012-05-16  Nikolai Weibull  <now@bitwi.se>  (tiny change)
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       ylwrap: preserve subdirectories in "#line" munging
+
+       If Automake is used in non-recursive mode and one of the inputs is a
+       yacc file, for example, "src/grammar.y", ylwrap will remove too many
+       directories from the output file when it adjusts the paths in it.
+       This results in #line directives referring to "grammar.y" instead of
+       "src/grammar.y".
+
+       This is a result of $input_rx simply taking all the directory
+       components of the absolute input path and removing them.
+
+       One solution is to store the path passed to ylwrap and replace
+       $input_rx with it.  This is what we do.
+
+       Suggestion and initial patch (without tests) by Nikolai Weibull:
+       <http://lists.gnu.org/archive/html/automake/2012-05/msg00013.html>
+       Final patch by Stefano Lattarini.
+
+       * lib/ylwrap ($input_sub_rx): New.
+       When munging the #line directives, substitute '$input_rx' with it,
+       instead of stripping it altogether.
+       Adjust comments.
+       * t/yacc-line.sh, t/lex-line: Adjust and extend.
+       * NEWS, THANKS: Update.
+
+2012-05-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       ylwrap: preparatory refactoring
+
+       This commit should cause no semantic change in the ylwrap behaviour.
+       It will only be needed in light of a future change.  See:
+       <http://lists.gnu.org/archive/html/automake/2012-05/msg00013.html>
+
+       * lib/ylwrap (get_dirname, quote_for_sed): New functions, factoring
+       out some non-trivial code.  Use them where appropriate.
+
+2012-05-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc tests: avoid a spurious failure with Sun C++ 5.9
+
+       * t/yacc-cxx.sh (parse1.yy): When calling the 'getchar' function declared
+       in the #included <cstdio>, fully qualify it as std::getchar', to avoid
+       Sun C++ 5.9 erroring out with:
+       "parse1.yy", line 5: Error: The function "getc" must have a prototype.
+       * t/yacc-clean-cxx.sh (sub1/parsefoo.yxx): Likewise.
+
+2012-05-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: cater for /bin/ksh symlinked to Zsh
+
+       * t/self-check-reexec.tap: When searching for a suitable non-Bash
+       shells, be sure to reject any shell that is Zsh "in disguise" (as
+       can be found on some Debian systems, where /bin/ksh can be symlinked
+       to /bin/zsh4).  This is required because our testsuite does not
+       support older versions of Zsh, and that was causing the test to fail
+       in the setup just described.
+
+2012-05-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures due to dpkg install-info
+
+       * t/install-info-dir.sh: Skip some checks if 'install-info' is the one
+       from dpkg, not the one from GNU info; the former might try to create
+       files in '/var/backups/', causing spurious failures like this for any
+       non-root user:
+
+           install-info(.../install-info-dir.dir/_inst/info/foo.info): \
+             creating new section `Dummy utilities'
+           cp: cannot create regular file `/var/backups/infodir.bak': \
+             Permission denied
+           install-info(.../install-info-dir.dir/_inst/info/foo.info): \
+             could not backup .../install-info-dir.dir/_inst/info/dir in \
+             /var/backups/infodir.bak: No such file or directory
+
+2012-05-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure due to i18n issue
+
+       Fixes automake bug#11452.
+
+       * t/parallel-tests-fork-bomb.sh: Export LANG, LANGUAGE and LC_ALL to
+       'C', to ensure error messages will be in English, and thus avoiding
+       possible false negatives in our grepping of them.
+
+2012-05-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add few missing 'cc' and 'c++' requirements
+
+       Without that requirements, the configure-time overrides of CC and CXX
+       wouldn't be honored in the affected tests.
+
+       * t/silent-yacc.sh ($required): Require 'cc'.
+       * t/silent-yacc-headers.sh: Likewise.
+       * t/silent-lex.sh: Likewise.
+       * t/lex-clean.sh: Likewise.
+       * t/lex-depend.sh: Likewise.
+       * t/lex-line.sh: Likewise.
+       * t/lex-depend.sh: Likewise.
+       * t/lex-pr204.sh: Likewise.
+       * t/yacc-deleted-headers.sh: Likewise.
+       * t/yacc-line.sh: Likewise.
+       * t/yacc-depend.sh: Likewise.
+       * t/yacc-depend2.sh: Likewise.
+       * t/yacc-dist-nobuild-subdir.sh: Likewise.
+       * t/yacc-bison-skeleton.sh: Likewise.
+       * t/yacc-bison-skeleton-cxx.sh ($required): Require 'c++'.
+       * t/yacc-clean-cxx.sh: Likewise.
+       * t/yacc-d-cxx.sh: Likewise.
+       * t/yacc-cxx.sh: Likewise.
+       * t/yacc-mix-c-cxx.sh ($required): Require 'cc' and 'c++'.
+
+2012-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'testsuite-saner-shell' into maint
+
+       * testsuite-saner-shell:
+         tests: fix a spurious failure with dash
+         test defs: fix indentation (cosmetic change)
+         tests: remove obsolete uses of $sh_errexit_works
+         configure: search a sturdy POSIX shell to be used in the testsuite
+         tests: shell running test scripts is now named AM_TEST_RUNNER_SHELL
+
+2012-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix a spurious failure with dash
+
+       The dash shell, at least version 0.5.5.1, doesn't always bail out
+       with a syntax error when a stray "fi" in encountered:
+
+         $ dash -c ":; fi"; echo stat = $?
+         stat = 0
+
+       See also the relevant bug report:
+
+         <http://permalink.gmane.org/gmane.comp.shells.dash/717>
+
+       This behaviour was causing a spurious error in our testsuite.  Fix it.
+
+       * t/self-check-exit.tap: Use a stray parentheses rather than a stray
+       'fi' to trigger a syntax error.
+
+2012-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: fix indentation (cosmetic change)
+
+       * defs (exit trap): Fix indentation left botched by previous
+       patch 'v1.11b-51-g626bf65'.
+
+2012-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove obsolete uses of $sh_errexit_works
+
+       After the last changes, configure will ensure that the shell
+       selected to run the test scripts can correctly propagate exit
+       status to the exit trap when 'set -e' is in effect.
+
+       * configure.ac (sh_errexit_works): Do not AC_SUBST it anymore.
+       * defs-static.in (sh_errexit_works): Do not initialize
+       from the AC_SUBST value anymore.
+       * defs (trap): Trap the EXIT signal unconditionally.
+       * t/self-check-explicit-skips.sh: Do not skip the test if
+       '$sh_errexit_works' is != "yes", this check doesn't make
+       sense anymore.
+       * t/self-check-cleanup.tap: Likewise.
+       * t/self-check-exit.tap: Assume the exit trap is always
+       installed by ./defs.
+
+2012-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       configure: search a sturdy POSIX shell to be used in the testsuite
+
+       * configure.ac: Add code (partially inspired to checks in gnulib's
+       'tests/init.sh') to search for a good-enough, not-buggy POSIX/XSI
+       shell to be used in our testsuite.  Accordingly AC_SUBSTitute the
+       variable 'AM_TEST_RUNNER_SHELL'.
+       * NEWS: Update.
+
+2012-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: shell running test scripts is now named AM_TEST_RUNNER_SHELL
+
+       This is just a preparatory refactoring for future changes.
+
+       * configure.ac (AM_TEST_RUNNER_SHELL): New variable, defined
+       to $SHELL', and AC_SUBST'd.
+       * Makefile.am (LOG_COMPILER): Redefine from $(SHELL) to
+       $(AM_TEST_RUNNER_SHELL).
+       * defs: Adjust to use $AM_TEST_RUNNER_SHELL instead
+       of $CONFIG_SHELL and/or $SHELL, where appropriate.  Minor
+       opportunistic changes.
+       * t/self-check-explicit-skips.sh: Likewise.
+       * t/self-check-sanity.sh: Likewise.
+       * t/self-check-tap.sh: Likewise.
+       * t/self-check-cleanup.tap: Likewise.
+       * t/self-check-dir.tap: Likewise.
+       * t/self-check-env-sanitize.tap: Likewise.
+       * t/self-check-exit.tap: Likewise.
+       * t/self-check-me.tap: Likewise.
+       * t/self-check-reexec.tap: Likewise.
+
+2012-05-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: distribute t/README
+
+       Since commit v1.11-2128-g8e02441 of 2012-04-06, "maint: no more make
+       recursion in Automake's build system" we haven't been distributing the
+       testsuite README file in our release tarballs.  Oops.
+
+       * Makefile.am (EXTRA_DIST): Add 't/README'.
+
+2012-05-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       init: warn against obsolete usage of AM_INIT_AUTOMAKE
+
+       Support for the two- and three-arguments invocation forms of the
+       AM_INIT_AUTOMAKE macro, as in:
+
+         AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+
+       or:
+
+         AM_INIT_AUTOMAKE($PACKAGE, $VERSION, NODEFINE)
+
+       will be removed in the next major Automake release (1.13).
+
+       Such usages have already been deprecated in the documentation
+       starting from commit v1.11-2015-ge99690a of 23-02-2012 "docs,
+       news: document planned removal of obsolete macros and features".
+
+       We now start giving runtime warnings as well (in the 'obsolete'
+       category).
+
+       * NEWS: Update.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Report the two- and three-arguments
+       form invocation.
+       * automake.in (scan_autoconf_traces): Likewise.
+       * doc/automake.texi: Minor adjustments.  Add an @anchor to the
+       location where it's described how to modernize outdated invocation
+       of AM_INIT_AUTOMAKE, so that it can be referenced from automake
+       warning/error messages.
+       * t/aminit-moreargs-deprecation.sh: New test.
+       * tests/list-of-tests.mk: Add it.
+       * tests/ac-output-old.tap: Adjust by calling automake with the
+       warnings in the 'obsolete' category disabled.
+       * t/backcompat.test: Likewise.
+       * t/backcompat3.test: Likewise.
+       * t/backcompat5.test: Likewise.
+       * t/backcompat6.test: Likewise.
+       * t/version.test: Likewise.
+       * t/version2.test: Likewise.
+       * t/pr2.test: Modernize style of AC_INIT and AM_INIT_AUTOMAKE
+       invocations, and use proper m4 quoting.
+       * t/pr87.test: Likewise.
+       * t/confsub.test: Likewise.
+       * t/install2.test: Likewise.
+
+2012-05-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       m4: prepend m4 builtins with "m4_"
+
+       The comments in 'lib/autoconf/autoconf.m4' from Autoconf 2.69 read:
+
+         We discourage the use of the non prefixed macro names: M4sugar maps
+         all the builtins into 'm4_'.  Autoconf has been converted to these
+         names too.  But users may still depend upon these, so reestablish
+         them.
+
+       Alas, in our init.m4 files, we were still using m4 builtins without
+       prefixing them with "m4_".  Not nice for a package that is one of the
+       major clients of Autoconf, and an integral part of the GNU Autotools!
+
+       Fix the issue.
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Use 'm4_define' and 'm4_defn' instead
+       of 'define' and 'defn'.
+
+2012-05-05  Nick Alcock  <nick.alcock@oracle.com>  (tiny change)
+
+       docs: fix clumsy grammar in the scripts-based testsuite chapter
+
+       * doc/automake.texi (Scripts-based Testsuites): "We'll have later" is
+       a rare example of English in the Automake manual clearly not written
+       by a native English-speaker: while comprehensible, it can be better
+       formulated.
+
+2012-05-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: use append mode to capture parallel make output
+
+       This should fix the spurious failure reported in automake bug#11413.
+
+       This is due to the fact that the redirected output of parallel make
+       can racily loose lines.  For example, if GNU make (3.82) is run on
+       a Makefile like this:
+
+         all = 0 1 2 3 4 5 6 7 8 9
+         default: $(all)
+         $(all):
+               @sleep 0.$$(($RANDOM % 10)); echo $@
+
+       and has its standard output redirected in overwrite-mode to a regular
+       file, it looses a line of that output every 15 runs or so on a Fedora
+       17 system with 64 ppc64 cores and Linux 3.3.1.  Redirection in append
+       mode does not suffer of this problem.
+
+       See also similar commit 'Release-1-10-280-g6426999' of 2009-03-10,
+       "Use append mode to capture parallel test output", which tackled a
+       similar problem for 't/parallel-tests3.sh' and 't/lisp8.sh'.
+
+       * t/tap-more.sh: Use append mode for output from "make -j", to avoid
+       dropped lines.
+       * t/parallel-tests3.sh, t/lisp8.sh: Enhance comments.
+
+2012-05-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'parallel-tests-performance' into maint
+
+       * parallel-tests-performance:
+         parallel-tests: separate different logs with an empty line
+
+2012-05-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: separate different logs with an empty line
+
+       After commit v1.12-21-g5eeb366 "parallel-tests: optimize global log
+       creation", the log files copied in the global log are not anymore
+       separated by a blank line, causing unclear output like this:
+
+         FAIL: test1
+         ===========
+
+         output from test 1
+         FAIL: test2
+         ===========
+
+         output from test 2
+
+       where we would want something like this:
+
+         FAIL: test1
+         ===========
+
+         output from test 1
+
+         FAIL: test2
+         ===========
+
+         output from test 2
+
+       Fix this regression.
+
+       * lib/am/check.am (am__create_global_log): Print an extra empty line
+       after having displayed the content of a '.log' file.
+
+2012-05-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: avoid a couple of spurious failures
+
+       * t/objcxx-deps.sh, t/objcxx-minidemo.sh: In C++ files, use
+       "std::cout <<", not "cout <<", to avoid triggering a spurious
+       failure by the syntax check 'sc_tests_here_document_format'.
+
+       Cherry-picked from yesterday's commit v1.12-81-g7f3f467, that
+       had erroneously been applied to 'master' only rather than to
+       'maint'.
+
+2012-05-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: reduce code duplication, increase coverage
+
+       * syntax-checks.mk: Move ...
+       (sc_tests_plain_aclocal,
+       sc_tests_plain_autoconf,
+       sc_tests_plain_perl,
+       sc_tests_plain_autoupdate,
+       sc_tests_plain_automake,
+       sc_tests_plain_make,
+       sc_tests_plain_autoheader,
+       sc_tests_plain_autoreconf,
+       sc_tests_plain_autom4te): ... all these targets ...
+       (sc_tests_plain_egrep_fgrep): ... and part of this target ...
+       (sc_tests_plain_check_rules): ... into this variable, and
+       reimplement their recipes ...
+       ($(sc_tests_plain_check_rules)): ... with this static pattern
+       rule.  Enhance the coverage they offer a little since we are
+       at it.
+       (sc_m4_am_plain_egrep_fgrep): New rule, the part of the old
+       'sc_tests_plain_egrep_fgrep' rule that checked for use of
+       'fgrep' and 'egrep' in *.am and *.m4 fragments (rather than
+       in test scripts).
+       (syntax_check_rules): Update.
+       * t/dist-formats.tap: Fix bad use of "make" instead of "$MAKE"
+       revealed by the extra coverage.
+       * t/cond5.sh, t/auxdir-autodetect.sh: Cosmetic changes to avoid
+       spuriously triggering the maintainer checks due to the
+       enhanced coverage.
+
+2012-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'objc++' into maint
+
+       * objc++:
+         tests: avoid spurious failure on missing Obj C/C++ compiler
+
+2012-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure on missing Obj C/C++ compiler
+
+       * t/objc-megademo.sh: Arrange the test to SKIP, not FAIL, if there is
+       no Objective C or no Objective C++ compiler.  Since we are at it, remove
+       some checks that were actually testing Autoconf (not Automake) behaviour.
+
+2012-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'objc++' into maint
+
+       * objc++:
+         objc, objc++: test support for compilation flags
+         objc, objc++: add stress test
+         objc, objc++: test automatic dependency tracking
+         objc: reorganize basic tests
+         objc++, objc: add first semantic tests
+         objc++: add first basic test
+         news: announce initial support for Objective C++
+         objc++: test support for '.mm' suffix in _SOURCES entries
+         objc++: add documentation
+         objc++: initial support for Objective C++
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: document improvement in parallel-tests performance
+
+       * NEWS: Document the improved performances of the parallel-tests targets
+       'check' and 'recheck'. See recent commits:
+
+         - v1.12-20-gf5733aa of 2012-04-26,
+           "parallel-tests: optimize 'recheck' target for speed"
+
+         - v1.12-21-g5eeb366 of 2012-02-26,
+           "parallel-tests: optimize global log creation"
+
+         - v1.12-22-g4c2dd6e of 2012-04-30,
+           "parallel-tests: save few forks when possible"
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+        tests: fix spurious failure due to autom4te caching
+
+       Reported by Peter Breitenlohner :
+       <http://lists.gnu.org/archive/html/automake-patches/2012-05/msg00045.html>
+
+       * t/suffix.sh: Remove stale autom4te.cache directories, to prevent racy,
+       spurious failures (using 'aclocal --force' was not enough, since the cache
+       was still picked up by the following automake call).
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       objc, objc++: test support for compilation flags
+
+       * t/objc-flags.sh, t/objcxx-flags.sh: New tests.
+       * t/list-of-tests.mk: Add them.
+
+2012-05-02  Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       objc, objc++: add stress test
+
+       * t/objc-megademo.sh: New test, trying out a package using all
+       of C, C++, Objective C and Objective C++ at the same time.
+       * t/list-of-tests.mk: Add it.
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       objc, objc++: test automatic dependency tracking
+
+       * t/objc-deps.sh, t/objcxx-deps.sh: New tests.
+       * t/list-of-tests.mk: Add them.
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       objc: reorganize basic tests
+
+       * t/objc.sh, t/objc2.sh: Removed, merged into ...
+       * t/objc-basic.sh: ... this new test.
+       * t/objcxx-basic.sh: Add reference to new sister test.
+       * t/list-of-tests.mk: Update.
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       objc++, objc: add first semantic tests
+
+       * t/objcxx-minidemo.sh: New test.
+       * t/objc-minidemo.sh: Likewise.
+       * t/list-of-tests.mk: Add them.
+
+2012-05-02  Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       objc++: add first basic test
+
+       * t/objcxx-basic.sh: New test.
+       * t/list-of-tests.mk: Add it.
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'parallel-tests-performance' into maint
+
+       * parallel-tests-performance:
+         parallel-tests: save few forks when possible
+         parallel-tests: optimize global log creation
+         parallel-tests: optimize 'recheck' target for speed
+         coverage: add performance tests on some parallel-tests aspects
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: fix typos
+
+       * NEWS (Bugs fixed in 1.12.1): Fix botched indentation of an entry,
+       add a forgotten "and", remove a redundant "the".
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: error out again on unrecognized arguments
+
+       Starting from commit v1.11-662-g52246cc of 2102-02-18, "cmdline parsing:
+       move into a dedicated perl module", aclocal has been silently ignoring
+       non-option arguments instead of correctly reporting them.
+       Fix this regression.
+
+       * t/aclocal.sh: Update to catch the regression.
+       * aclocal.in (parse_arguments): Explicitly reject non-option arguments.
+       * NEWS: Update.
+
+2012-05-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'cygnus-deprecate' into maint
+
+       * cygnus-deprecate:
+         cygnus: warn when it's used (flagged as 'obsolete' now)
+
+2012-05-01  Andrew Eikum  <aeikum@codeweavers.com>  (tiny change)
+
+       cosmetics: fix typo in aclocal m4 directory README
+
+       * m4/acdir/README: Add forgotten "if".
+       * THANKS: Update.
+
+2012-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: botched edit in bootstrap.sh
+
+       * bootstrap.sh (dosubst): Fix botched option ("G" instead of "g")
+       in a sed "s///" expression.  Issue introduced in today's commit
+       'v1.12-17-g5f810d0'.
+
+2012-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: fix confusing wording
+
+       Reported by Dave Hart.
+
+       * NEWS (Future backward-incompatibilities): Fix possibly confusing
+       wording about the upcoming requirement of Autoconf >= 2.65.
+
+2012-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: fixed weaknesses in build system and testsuite
+
+       * NEWS (Bugs fixed in 1.12.1): Report that several weaknesses in the
+       Automake's own build system and test suite have been fixed.  See for
+       example recent commits:
+         - commit v1.12-5-geb7e8f3, for bug#11345
+         - commit v1.12-5-g63e07a9, for bug#11346
+         - commit v1.12-5-gf31fe4f
+         - commit v1.12-10-gab14841
+         - commit v1.12-19-g807f3cf, for bug#11369
+         - commit v1.12-20-gd330368, for bug#11369
+         - bug#11387, pre-emptively solved by commit v1.12-4-g444618b
+
+2012-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       bootstrap: consistently use correct copyright year
+
+       Suggested by Peter Johansson in the discussion about automake bug#11356:
+       <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11356#41>
+
+       * boostrap.sh (dosubst): Don't initialize the substituted value for the
+       release year from the current year (using `date +%Y`); instead, do it
+       through ...
+       ($RELEASE_YEAR): ... this new statically-defined variable.  To ensure it
+       won't get out-of-sync, it will be automatically updated ...
+       * Makefile.am (update-copyright): ... by this target's recipe.
+       Since are at it, fix a botched output redirection for an error message,
+       i.e., use ">&2" instead of ">&1".
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: remove leftover "TERM=ansi" definition in 't/color.sh'
+
+       It should have actually be removed in commit 'v1.12-23-gb105d40'.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: save few forks when possible
+
+       * lib/am/check.am (am__check_pre): Save some forks, by analyzing more
+       carefully the value of '$@' to decide how to extract its dirname part,
+       and whether that should be created as a directory.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: Automake 1.13 will require Autoconf >= 2.65
+
+       Autoconf 2.65 is almost three years old now, so requiring it is
+       acceptable.  Also, the soon-to-appear support for Objective C++
+       in Automake will be simplified if we can assume that Autoconf
+       version (which is the one that introduced support for Objective
+       C++).
+
+       * NEWS (Planned future backward-incompatibilities): Automake 1.13
+       will require Autoconf 2.65 or later.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: put planned future backward-incompatibilities on top
+
+       * NEWS (New in 1.12): List of planned future backward-incompatibilities
+       moved from here ...
+       (New in 1.12.1): ... to here.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       readme: update INSTALL to latest version from Autoconf
+
+       * INSTALL: Updated to the version coming with Autoconf 2.69.  This
+       is warranted now that we use and require that same Autoconf version
+       in our build system.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       sync: some auxiliary files synced from upstream
+
+       * lib/config.sub: Synced from upstream, by "make fetch".
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: copyright notices must be updated before releasing
+
+       * HACKING (Release procedure): Suggest to use "make update-copyright".
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       color-tests: coloring can be forced on non-ANSI terminals as well
+
+       Before this change, colorization of testsuite output was suppressed
+       whenever the terminal was recognized to be a "dumb" one, incapable
+       of handling ANSI coloring (i.e., when the environment variable TERM
+       had a value of "dumb").  This happened even when the AM_COLOR_TESTS
+       variable was set to a value of "always".
+
+       Such a behaviour was suboptimal and slightly confusing; in fact, if
+       a user wants to force coloring of testsuite output that is being
+       redirected to a regular file, he should be able to do so even if his
+       terminal is not capable of handling ANSI colors -- in fact, such
+       terminal wouldn't be involved with the testsuite output in any way,
+       so why should it be allowed to influence it?
+
+       Thus, we now enable coloring of test output whenever AM_COLOR_TESTS
+       is set to "always", irrespective of the value of the TERM environment
+       variable.
+
+       * NEWS: Update.
+       * lib/am/check.am [%?COLOR%] (am__tty_colors): Activate colorization
+       of testsuite output whenever AM_COLOR_TESTS has the value of "always".
+       * t/ax/tap-summary-aux.sh: Export the TERM environment variable to
+       "dumb" when forcing colorization of the testsuite output; this should
+       *not* prevent such colorization from taking place, and we want to
+       check that this expectation really holds.
+       * t/ax/testsuite-summary-checks.sh: Likewise.
+       * t/color.sh: Likewise, and adjust some grepping checks.
+       * t/tap-color.sh: Likewise.  Also, remove redundant "make check"
+       invocation since we are at it.
+       * t/color2.sh: Likewise, and check that exporting TERM=dumb actually
+       prevents testsuite output colorization when AM_COLOR_TESTS is unset.
+       * t/parallel-tests-reset-term.sh: Relax, to prevent it from failing
+       spuriously due to the new semantic.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cygnus: warn when it's used (flagged as 'obsolete' now)
+
+       Support for "Cygnus-style" tree as enabled by the 'cygnus'
+       option is now reported as obsolete when the warnings in the
+       'obsolete' category are enabled.
+
+       See automake bug#11034.
+
+       * automake.in (check_cygnus): Report the use of 'cygnus' mode as
+       obsolete.
+       * NEWS: Update.
+       * docs/automake.texi: Minor adjustments.
+       * t/cygnus-deprecation.sh: New test.
+       * t/list-of-tests.mk: Add it.
+       * tests/cygnus-check-without-all.sh: Adjust by calling automake
+       with the warnings in the 'obsolete' category disabled.
+       * t/cygnus-requires-maintainer-mode.sh: Likewise.
+       * t/cygnus-dependency-tracking.sh: Likewise.
+       * t/cygnus-imply-foreign.sh: Likewise.
+       * t/cygnus-no-installinfo.sh: Likewise.
+       * t/cygnus-no-dist.sh: Likewise.
+       * t/clean2.sh: Likewise.
+       * t/flavor.sh: Likewise.
+       * t/txinfo5.sh: Likewise.
+       * t/txinfo5b.sh: Likewise.
+       * t/library.sh: Remove use of 'cygnus' and 'dejagnu' options,
+       and of AM_MAINTAINER_MODE macro.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: optimize global log creation
+
+       With this change, the time required to execute the test case
+       'testsuite-summary-speed.sh' has dropped as follows:
+
+         + Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
+           GNU make 3.81:
+             - 1 run: 4 minutes => 30/40 seconds
+
+         + Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
+           Solaris CCS make:
+            - 2 runs: 6 minutes => 30 seconds
+
+         + Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
+           GNU make 3.82:
+            - 5 runs: 7 minutes => 1 minute and 10 seconds
+
+       * lib/am/check.am ($(TEST_SUITE_LOG)): Optimize for speed, by avoiding
+       lots of forks with the help of ...
+       (am__create_global_log): ... this new internal variable, basically
+       defining a smart awk program, and ...
+       (am__global_test_result_rx, am__copy_in_global_log_rx): ... these new
+       internal variables, used by the one above.
+       (am__rst_section): Remove as obsolete
+       * t/rst-formatting.trs: Remove.
+       * t/list-of-tests.mk: Update.
+       * t/testsuite-summary-count-many.sh: Improve its stress testing by
+       using 1 million tests rather than just 5 thousands: we can afford
+       this with our new optimization, and still have the test completed
+       in a reasonable time.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: optimize 'recheck' target for speed
+
+       With this change, the time required to execute the test case
+       'testsuite-recheck-speed.sh' has dropped as follows:
+
+         + Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
+           GNU make 3.81:
+             - 1 run: 6 minutes => 40 seconds
+
+         + Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
+           Solaris CCS make:
+             - 4 runs: 3 minutes => 1 minute
+
+         + Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
+           GNU make 3.82:
+             - 5 runs: 4 minutes => 1 minute 30 seconds
+
+       * lib/am/check.am (recheck): Optimize for speed, by avoiding lots of
+       forks with the help of ...
+       (am__list_recheck_tests): ... this new internal variable, basically
+       defining a proper awk program, and ...
+       (am__recheck_rx): ... this other new internal variable, used by the
+       one above.
+       * t/test-trs-recover2.sh: Relax by not checking for a very corner
+       case ('.log' and '.trs' files both unreadable) that we don't handle
+       anymore.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: announce initial support for Objective C++
+
+2012-04-30  Peter Breitenlohner  <peb@mppmu.mpg.de>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       objc++: test support for '.mm' suffix in _SOURCES entries
+
+       * t/ext.sh: Enhance by adding a file with the '.mm' suffix in
+       the 'foo_SOURCES' definition.
+       * t/nodep2.sh: Likewise.
+
+2012-04-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: add performance tests on some parallel-tests aspects
+
+       * t/testsuite-recheck-speed.sh: New test.
+       * t/testsuite-summary-speed.sh: Likewise.
+       * t/list-of-tests.mk: Update.
+
+       The new tests are not meant to PASS/FAIL, but rather to help us to
+       obtain quantitative measurements of the performance improvements
+       offered by soon-to-appear optimization patches.
+
+       Timing before the optimizations implemented by following patches:
+
+         + Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
+           GNU make 3.81:
+            - testsuite-recheck-speed.sh: 1 run, ~ 6 minutes
+            - testsuite-summary-speed.sh: 1 run, ~ 4 minutes
+
+         + Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
+           Solaris CCS make:
+            - testsuite-recheck-speed.sh: 4 runs, ~ 3 minutes
+            - testsuite-summary-speed.sh: 2 runs, ~ 6 minutes
+
+         + Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
+           GNU make 3.82:
+            - testsuite-recheck-speed.sh: 5 runs, ~ 4 minutes
+            - testsuite-summary-speed.sh: 5 runs, ~ 7 minutes
+
+2012-04-30  Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       objc++: add documentation
+
+       * doc/automake.texi (Objective C++ Support): New node.
+       (How the Linker is Chosen, Support for Other Languages): Adjust.
+
+2012-04-30  Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       objc++: initial support for Objective C++
+
+       Original thread (dating back to almost three years ago):
+       <http://lists.gnu.org/archive/html/automake-patches/2009-07/msg00016.html>
+
+       * automake.in: Register new language 'objcxx'.
+       (lang_objcxx_rewrite): New subroutine.
+       (resolve_linker): Add OBJCXXLINK.
+       (%_am_macro_for_cond): Add am__fastdepOBJCXX and AC_PROG_OBJCXX.
+       (%_ac_macro_for_var): Add OBJCXX and OBJCXXFLAGS.
+       * m4/depend.m4 (_AM_DEPENDENCIES): Add OBJCXX.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Add AC_PROG_OBJCXX hook.
+
+2012-04-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'mkdirp-deprecate' into maint
+
+       * mkdirp-deprecate:
+         AM_PROG_MKDIR_P: deprecate, to be removed in Automake 1.13
+
+2012-04-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: root can write on files without write perms; cater for this
+
+       Fixes last part of automake bug#11369.
+
+       * t/dist-readonly.sh ($required): Add 'non-root'.
+
+2012-04-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: require lex, not yacc, in a lex test case
+
+       See automake bug#11369.
+
+       * t/lex-clean.sh ($required): Require 'lex', not 'yacc'.
+
+2012-04-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       AM_PROG_MKDIR_P: deprecate, to be removed in Automake 1.13
+
+       Support for the obsolescent 'AM_PROG_MKDIR_P' macro (and its
+       output variable '$(mkdir_p)') has already been deprecated in
+       the documentation.  It's now time to make its use actively
+       emit warnings in the 'obsolete' category as well.
+
+       * automake.in (scan_autoconf_traces): Warn about 'AM_PROG_MKDIR_P'
+       obsolescent if that macro is seen.
+       * m4/mkdirp.m4 (AM_PROG_MKDIR_P): Warn about its own obsolescence.
+       * m4/init.m4: Require 'AC_PROG_MKDIR_P', not 'AM_PROG_MKDIR_P'.
+       * t/mkdirp-deprecation.sh: New test.
+       * t/list-of-tests.mk: Add it.
+       * syntax-check.mk (sc_mkdir_p): Delete this check as obsolete.
+       (syntax_check_rules): Remove it.
+       * t/gettext-macros.sh: Ensure the gettext-requiring tests will
+       call aclocal and automake with the 'obsolete' warnings disabled,
+       since even recent versions of gettext used the now-deprecated
+       'AM_PROG_MKDIR_P' m4 macro.
+       * NEWS: Update.
+
+2012-04-28  Jim Meyering  <meyering@redhat.com>
+
+       maint: fix a comment typo
+
+       * configure.ac: Fix typo in comment: s/out/our/
+
+2012-04-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: avoid unconditional re-bootstrapping on "make dist"
+
+       Since our 'bootstrap' script is distributed, the 'distdir' target depends
+       on it.  But in our GNUmakefile, we also have a 'bootstrap' target declared
+       .PHONY, which when called re-bootstrap the Automake distribution.  Thus,
+       whenever we run "make dist", GNU make sees it must remake the 'bootstrap'
+       target (as it is a dependency of the 'distdir' target), and thus ends up
+       re-bootstrapping all the package (because of the .PHONY 'bootstrap' target
+       in GNUmakefile).
+
+       We fix this issue by renaming our bootstrap script to 'bootstrap.sh'.
+
+       * bootstrap: Renamed ...
+       * bootstrap.sh: ... to this.
+       * GNUmakefile (bootstrap): Adjust.
+       * Makefile.am (EXTRA_DIST): Likewise.
+       (autodiffs): Likewise.
+       * HACKING: Likewise.
+
+2012-04-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: ensure release year in copyright notice is up-to-date
+
+       From a suggestion by Eric Blake.  See automake bug#11356.
+       This is a follow-up to previous patch 'v1.12-12-gb99b5be'.
+
+       * configure.ac (RELEASE_YEAR): New AC_SUBST'd variable, should hold
+       the value of the current year.
+       * Makefile.am (update-copyright): Be sure to also update the
+       definition of 'RELEASE_YEAR' in configure.ac.
+       * lib/Automake/Config.in ($RELEASE_YEAR): New exported variable,
+       initialized from the value substituted for '@RELEASE_YEAR@'.
+       (@EXPORT): Add it.
+       * automake.in, aclocal.in: Use '$RELEASE_YEAR' (which will be
+       substituted at make time) instead of hard-coding the release
+       year.  This should ensure the copyright range in the version
+       message and in the generated files (Makefile.in and aclocal.m4)
+       are automatically kept up-to-date.
+       * bootstrap (dosubst): Update, also substitute '@RELEASE_YEAR@'.
+
+2012-04-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix spacing in THANKS
+
+       * THANKS: Use spaces, not tabs, to separate a reporter's name from
+       his e-mail address.  Also, increase such spacing, to allow a more
+       consistent formatting with longer names.
+
+2012-04-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       readme: explicitly state we use ranges in copyright years
+
+       Reported by Jack Kelly in automake bug#11356.
+
+       * README: Explicitly state we use ranges in copyright years; this is
+       mandated by the GNU Coding Standards for each package that wants to
+       actually use ranges in copyright years.
+
+2012-04-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       bootstrap: add convenience make target
+
+       Dependencies in the Automake build system are not completely specified
+       (see for example the commit log of recent commit 'v1.12-10-gab14841',
+       "build: avoid too greedy rebuilds in the testsuite").  In fact, some of
+       them cannot even be; for example, Makefile is generated at configure
+       time from Makefile.in, which should be regenerated by our bleeding-edge
+       automake script, which is generated by out Makefile -- specifying the
+       complete chain of dependencies here would bring to a circular dependency
+       issue.
+
+       For this reason, before testing or deploying a change, we are often
+       forced to perform a full re-bootstrap of the Automake package, to ensure
+       all our files are actually up-to-date.  Until now, this has to be done
+       manually, thus causing wasted keystrokes and more possibilities of error.
+
+       With this change, we introduce a new 'bootstrap' make target to
+       automatize all the (easy) steps of this re-bootstrapping (plus some
+       minor bells & whistles since we are at it).
+
+       * GNUmakefile: Rewrite to allow an easy bootstrapping and clean rebuild
+       of the whole package, in particular with the help of ...
+       (bootstrap): ...  this new target.
+
+2012-04-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake, aclocal: update copyright year in output
+
+       Fixes automake bug#11356.
+
+       * aclocal.in, automake.in: Add copyright year '2012' in the version
+       message.  Ditto for the copyright notice in the generated Makefile.in
+       or aclocal.m4 files; and for those, since we are at it, prefer using
+       a range for copyright years, rather than listing each copyright year
+       individually.
+
+2012-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: don't use "union" merge driver for NEWS anymore
+
+       The use of the "union" merge driver to avoid conflicts in NEWS has
+       proven to be problematic, as it often silently produced mis-merges
+       (instead of spurious conflicts, but a spurious conflict is better
+       than a mis-merge).  Also, our new branching policy (see automake
+       bug#11153 for a description) should greatly mitigate the problem of
+       merge conflicts in NEWS.  For further discussion, see:
+       <http://lists.gnu.org/archive/html/automake-patches/2012-04/msg00148.html>
+
+2012-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: avoid too greedy rebuilds in the testsuite
+
+       The autogenerated makefile fragment 't/testsuite-part.am' used to depend
+       on the list of *all* the hand-written files.  This was technically correct,
+       since that makefile fragment was (and still is) generated by the script
+       'gen-testsuite-part', which scans all the hand-written files to detect
+       implicit dependencies and to decide for which tests a further wrapper test
+       should be generated.
+
+       However, the presence of such a dependency implied that, whenever *any*
+       test case was modified (no matter how slightly), the 't/testsuite-part.am'
+       file was rebuilt, and since that is included by our 'Makefile.am', the
+       'Makefile.in' file was rebuilt as well by automake.  In order to do so,
+       automake scanned our 'configure.ac' file, which requires the latest
+       Autoconf version (2.69 at the time of writing), and the casual user can
+       easily lack that on his machine (and that should be allowed, as automake
+       currently supports any autoconf version >= 2.62).
+
+       The described situation could hinder in-field testing or debugging by
+       users (even experienced ones) that are not automake developers; see for
+       example automake bug#11347.
+
+       So we drop the explicit dependency of 't/testsuite-part.am' on the
+       hand-written test cases.  (As an aside, note that this has already
+       been done in Automake-NG, albeit for other reasons; see the commit
+       'v1.11b-129-g1690aca' of 2012-04-23, "[ng] build: define $(TESTS)
+       through a wildcard").
+
+       This is not a serious regression in the faithfulness of the Automake
+       build systems, since it unfortunately already had several undeclared
+       dependencies; e.g., 'Makefile.in' should depend on the automake script,
+       and 'aclocal.m4' should depend on the aclocal script (but this isn't
+       possible, as it would mean that distributed files depend on ones generated
+       at make time).  Similarly, 'Makefile.in' should depend on some of the
+       'lib/am/*.am' files, but does not.
+
+       Currently, the workaround to get a faithful and correct rebuild is to run
+
+         ./bootstrap && ./config.status --recheck && make clean all
+
+       and the present commit does not change that.
+
+       * Makefile.am ($(srcdir)/t/testsuite-part.am): Don't depend on
+       't/list-of-tests.mk' nor on '$(handwritten_TESTS)' anymore.
+       ($(generated_TESTS)): Likewise, and don't depend on 'Makefile.am'
+       either.
+
+2012-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'fix-pr11345-lex' into maint
+
+       * fix-pr11345-lex:
+         tests: fix a failure in Lex/C++ tests on Mac OS X
+
+2012-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'fix-pr11346-timestamp' into maint
+
+       * fix-pr11346-timestamp:
+         tests: fix a spurious failure due to truncated timestamps
+
+2012-04-26  Thien-Thi Nguyen  <ttn@gnuvola.org>  (tiny change)
+
+       tests: avoid yet another spurious environment influence
+
+       * t/remake11.sh: Unset 'd' before first use.
+
+2012-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix a failure in Lex/C++ tests on Mac OS X
+
+       The <cstdio> header from Xcode-4.3.2 on Mac OS X 10.7.3 declares a 'isatty'
+       function with C++ linkage, that conflicts with our dummy definition of the
+       same function, which in turn is required to work around the absence of the
+       unistd.h header on MinGW (see commit 'v1.11-2138-gfeea090' of 11-04-2012).
+       So we tweak the affected tests to work around this new problem as well.
+
+       This fixes automake bug#11345.
+
+       * t/lex-clean-cxx.sh ($required): Since we are at it, add an explicit
+       'c++' requirement.
+       * t/lex-depend-cxx.sh ($required): Likewise.
+       (my-hdr.hxx): Don't include <cstdio>.  The "using namespace" directive
+       should still be enough to ensure the content of this header is not valid
+       C, albeit being of course valid C++.
+       Fix unrelated typos in comments.
+       (joe.ll): Adjust, by removing the call to 'printf'.
+       * THANKS: Add entry for reporter "Adam Mercer".
+
+2012-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       tests: fix a spurious failure due to truncated timestamps
+
+       Fixes automake bug#11346.
+
+       * t/self-check-is_newest.tap: Apparently, on some systems (or file
+       systems), "touch -r" can truncate timestamps :-(  Work around that.
+
+2012-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: require autoconf 2.69
+
+       It is only from version 2.69 that the 'AC_PROG_FC' macro has started to
+       set the '$GFC' variable to "yes" if the selected Fortran compiler is a
+       GNU compiler.  Since we use this variable in our configure.ac, we better
+       require autoconf 2.69 explicitly.
+
+       * configure.ac (AC_PRERQ): Require autoconf >= 2.69.
+       Remove a now-obsolete "FIXME" comment.
+
+2012-04-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: don't require minimal automake version in AM_INIT_AUTOMAKE
+
+       * configure.ac (AM_INIT_AUTOMAKE): Don't explicitly require a minimal
+       automake version number.  Since the Automake build system is only meant
+       to work with the bleeding-edge automake, that requirement was redundant
+       and misleading.
+
+2012-04-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       post-release: minor version bump
+
+       This is for the maint branch.
+
+       * configure.ac, m4/amversion.m4: Bump version to 1.12.0a.
+
+2012-04-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch master into maint after 1.12 release
+
+2012-04-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       release: stable major release 1.12
+
+       * configure.ac (AC_INIT): Bump version number to 1.12.
+       * NEWS: Likewise.
+       * m4/amversion.m4 (AM_AUTOMAKE_VERSION): Likewise (autoupdated
+       by ./bootstrap).
+
+2012-04-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branches 'fix-pr11302-opensuse' and 'fix-pr11306-macosx'
+
+       * fix-pr11302-opensuse:
+         tests: cater to systems installing libs in /lib64
+
+       * fix-pr11306-macosx:
+         tests: fix spurious failure on Mac OS X
+
+2012-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: test the internal $(am__relativize) variable
+
+       This new coverage might turn out be useful for the planned changes
+       in Automake-NG.  Even if it eventually doesn't, we gen an improved
+       testsuite exposure of some non-trivial internals, so it's always a
+       win for us.
+
+       * t/relativize.tap: New test.
+       * t/list-of-tests.mk: Add it.
+
+2012-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: cater to systems installing libs in /lib64
+
+       See automake bug#11302.
+
+       On at least OpenSUSE 12.1, "make install" will install libraries in
+       the '${prefix}/lib64'  directory by default.  This is due to the
+       $CONFIG_SITE set by /etc/profile.d/site.sh, which sets a libdir
+       that ends in '/lib64' rather than '/lib' if it finds that the compiler
+       is generating 64-bit code.  This behaviour was causing some spurious
+       failures in our testsuite.  Fix them.
+
+       * t/posixsubst-libraries.sh: Assume the libraries are installed in
+       '$(libdir)' rather than in '$(prefix)/lib'.
+       * t/posixsubst-ltlibraries.sh: Likewise.
+       * t/posixsubst-scripts.sh: Similarly, don't assume that '$(bindir)',
+       '$(sbindir)' and '$(libexedir)' always defaults to respectively
+       '$(prefix)/bin', '$(prefix)/sbin' and '$(prefix)/libexec'.
+       * t/transform3.test: Likewise.
+
+2012-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Bruno Haible  <bruno@clisp.org>
+
+       tests: fix spurious failure on Mac OS X
+
+       See automake bug#11306.
+
+       * t/lex-libobj.sh: We used to pass LEXLIB='-L /lib' to the ./configure
+       invocation, to prevent it from explicitly searching for a "lex library".
+       But the linker on MacOS X 10.5 apparently chokes on that:
+
+         cc -g -O2  -o foo foo.o -L /lib yywrap.o
+         ld: file not found: /lib
+         collect2: ld returned 1 exit status
+
+       So, we now instead pass LEXLIB=' ', which being non-empty is enough
+       to prevent the search of a "lex library".  And since we are at it,
+       enhance comments on this non-obvious usage.
+
+2012-04-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: parallel make with vala
+
+       * t/vala-parallel.sh: New test.
+       * t/list-of-tests.mk: Add it.
+
+2012-04-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: configure exit with status 77, not 1, if valac version is too old
+
+       From a report by Bruno Haible in automake bug#1193.  This change should
+       also automatically avoid spurious testsuite failures with older vala
+       versions.
+
+       * m4/vala.m4 (AM_PROG_VALAC): Exit with status 77, rather than 1, if
+       the Vala compiler found older than the minimal required version (if
+       any).  This is more consistent with what is done by other macros like
+       AM_PROG_UPC or AC_PROG_CC.
+       * NEWS: Update.
+       * t/vala-headers.sh: Adjust, so that the test is only skipped of the
+       vala compiler is too old or the required PKG_CHECK_MODULES third-party
+       macro is not found by aclocal, and not if a generic error happens in
+       the configure script.
+       * t/vala-libs.sh: Likewise.
+       * t/vala2.sh: Likewise.
+       * t/vala3.sh: Likewise.
+       * t/vala5.sh: Likewise.
+       * t/vala-vpath.sh: Likewise (but don't check for the potential error
+       with PKG_CHECK_MODULES, as that macro is not used in any way here).
+       * t/vala4.sh: Adjust, to avoid the new semantic causing this test to
+       skip instead of failing.
+
+2012-04-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       refactor: processing of input makefile rules
+
+       This is a pure refactoring, with no intended functional or semantic
+       changes.  It breaks up an overly-long function in three smaller
+       sub-functions.  This change will very especially useful for the work
+       on Automake-NG.
+
+       * lib/Automake/Rule.pm (define): Move quite a lot of code out, into ...
+       (_rule_defn_with_exeext_awareness, _maybe_warn_about_duplicated_target,
+       _conditionals_for_rule): ... these new subroutines.
+
+2012-04-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: refactor pre-processing of makefile fragments
+
+       This change will provide the automake script with a new function that
+       reads in a Makefile fragment *without* performing Automake ad-hoc parsing,
+       but only the pre-processing step, i.e., removal of '##' comments and
+       substitution of tokens like '%SUBDIRS%', '%?LIBTOOL%' or '?GENENRIC?'.
+
+       This will very likely be useful for the work on Automake-NG.
+
+       This is a pure refactoring, with no intended functional or semantic
+       changes.
+
+       * automake.in (preprocess_file): New function, extracted ...
+       (make_paragraphs): ... from here.
+
+2012-04-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: remove obsolete references to Autoconf 2.13
+
+       Autoconf 2.13 is definitely obsolete today, so giving hints or caveats
+       about it in the Automake documentation is not only obsolescent, but
+       also counter-productive, as it suggests that autoconf 2.13 is still
+       relevant.
+
+       * doc/automake.texi: Adjust.  Related rewordings.  Since we are at it,
+       prefer using a more modern autoconf version number (2.68 instead of 2.57)
+       in an example showing how to correctly use 'AC_PREREQ' in third-party
+       .m4 files.
+
+2012-04-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with non-ANSI terminals
+
+       * t/ax/tap-summary-aux.sh: When checking colored testsuite output,
+       be sure to export the TERM variable to the value "ansi"; otherwise
+       the automake testsuite driver will not display colored output, not
+       even if AM_COLOR_TESTS is exported to "always".  Failure revealed
+       by NixOS Hydra.
+
+2012-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: fix typo
+
+       * HACKING (Test suite): Refer to file 't/README', not to the
+       non-existent 'tests/README'.
+
+2012-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: version bump after beta release
+
+       * configure.ac (AC_INIT): Bump version number to 1.11e, as per
+       HACKING suggestion.
+       * NEWS: Likewise.
+       * m4/amversion.m4: Likewise (autoupdated by ./bootstrap).
+
+2012-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Beta release 1.11d (will become 1.12)
+
+       * configure.ac (AC_INIT): Bump version number to 1.11d.
+       * NEWS: Likewise.
+       * m4/amversion.m4: Likewise (autoupdated by ./bootstrap).
+
+2012-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant 'set -e' calls
+
+       * t/aclocal-install-fail.sh: Do not set the 'errexit' shell flag,
+       as it is already set by './defs'.
+       * t/aclocal-install-mkdir.sh: Likewise.
+       * t/aclocal-no-install-no-mkdir.sh: Likewise.
+       * t/aclocal-verbose-install.sh: Likewise.
+       * t/instdir-no-empty.sh: Likewise.
+       * t/link_cond.sh: Likewise.
+       * t/python-pr10995.sh: Likewise.
+       * t/vala-vapi.sh: Likewise.
+
+2012-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failures when cross-compiling
+
+       * t/parallel-tests-recheck-depends-on-all.sh: Skip the test
+       when cross-compiling.
+       * t/vala-vapi.sh: Skip tests that do not make sense when
+       cross-compiling.
+       * t/yacc-basic.sh: Likewise.
+       * t/yacc-cxx.sh: Likewise.
+
+2012-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintainer-check: fix definition of $(ams) again
+
+       * syntax-checks.mk (ams): The previous change 'v1.11b-36-g127adfb' solved
+       one problem in the definition of this variable, but also caused it contain
+       the names of all the left-behind 't/*.dir' temporary test directories.
+       Fix that.
+
+2012-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintainer-check: do not hang
+
+       * syntax-checks.mk (ams): The definition of this variable was invoking
+       the 'find' utility in an incorrect way, which resulted into the variable
+       being empty, thus reducing coverage in some maintainer check and making
+       other hang.  Fix this.
+
+2012-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: 'recheck' must depend on 'all'
+
+       Fixes automake bug#11252.
+
+       When a developer experience one or more failures in the testsuite, a good
+       workflow is for him to modify its program's sources to fix the bug thus
+       revealed, run "make recheck" to verify that the change has indeed solved
+       the testsuite failures previously experienced, and then run "make check"
+       to verify that the change has not introduced any new failure or regression.
+
+       Unfortunately, this apparently natural workflow couldn't have worked until
+       now, since the Automake-provided 'recheck' target (which didn't depend on
+       'all') wouldn't have causes the program to be recompiled, and the failed
+       tests would have thus been run with the older, buggy version of the
+       program, failing the same way as before.
+
+       * lib/am/check.am (recheck): Depend on 'all'.
+       * t/parallel-tests-recheck-depends-on-all.sh: New test.
+       * t/list-of-tests.mk: Add it.
+       * NEWS: Update.
+
+2012-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: building libraries, and more on '.vapi' files
+
+       * t/vala1.sh: Remove, turned into ...
+       * t/vala-libs.sh: ... this functional test instead.
+       * t/list-of-tests.mk: Adjust.
+
+2012-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: fix botched call to 'check_user_variables'
+
+       * automake.in (lang_vala_finish_target): The 'check_user_variables' function
+       takes an array, not an array ref, as argument; adjust its call accordingly.
+
+2012-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: cleanup rules are better and more complete now
+
+       * automake.in (lang_vala_finish_target): Ensure Vala-generated C sources
+       and header files and our custom stamp files are correctly cleaned.
+       * t/vala-headers.sh, t/vala-vpath.sh: Enhance.
+       * NEWS: Update.
+
+2012-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: check headers generation
+
+       * t/vala-headers.sh: New test, checking use of 'valac' options for
+       header generation (e.g., '-H', '--vapi', ...) in '$(..._VALAFLAGS)'.
+       * t/list-of-tests.mk: Add it.
+
+2012-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: remove redundant libtool requirements and usages
+
+       * t/vala2.sh: Don't require libtool m4 macros, don't run libtoolize,
+       don't invoke AC_PROG_LIBTOOL: none of there is really needed.
+       * t/vala3.test: Likewise.
+
+2012-04-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: some enhancements
+
+       * t/vala-vpath.sh, t/vala2.sh, t/vala3.sh, t/vala5.sh: Enhance a little.
+
+2012-04-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: few adjustments and improvements
+
+       * t/vala4.sh: Don't run 'libtoolize', it's not truly required.
+       ($required): Don't require 'libtoolize'.
+       (configure.ac): Don't invoke 'AC_PROG_LIBTOOL'.
+       * t/vala-mix.sh ($required): Require 'cc'.
+       Avoid some calls to 'framework_failure_', they were only useful when
+       this test was xfailing (to ensure it wasn't failing for the wrong
+       reasons).
+       Ensure the stamp file is created in the source directory.
+
+2012-04-16  Jim Meyering  <meyering@redhat.com>
+
+       build: use latest help2man, but without locale support
+
+       * doc/help2man: Update to latest (1.40.8), but built with
+       --disable-nls, which elides the less-portable locale-related
+       code, and with the "use 5.008" manually changed to "use 5.006".
+       Thanks to Brendan O'Dea for the tips.
+       * THANKS: Update Brendan's address.
+
+2012-04-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: print error messages on stderr, not stdout
+
+       * lib/am/check.am ($(TEST_SUITE_LOG)): Be sure to print error messages
+       on stderr, not on stdout.
+
+2012-04-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist tests: fix reduced coverage due to typo
+
+       * t/dist-formats.tap: Append to 'Makefile.am', not to 'Makefil.am'.
+
+2012-04-13  Jim Meyering  <meyering@redhat.com>
+
+       build: use slightly older help2man, for improved portability
+
+       Fixes automake bug#11235
+
+       * doc/help2man: Downgrade to help2man-1.36.4, so that it does
+       not require Locale/gettext.pm, which is not available on a
+       default Fedora 16 installation.  Reported by Stefano Lattarini.
+
+2012-04-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure when 'install-info' program is unavailable
+
+       From a report by Dmitry V. Levin:
+       <http://lists.gnu.org/archive/html/automake-patches/2012-04/msg00085.html>
+
+       * t/install-info-dir.sh : When 'install-info' is unavailable, create a
+       dummy '${infodir}/dir' file by hand when that file is required by later
+       checks.
+
+2012-04-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         install: shell parameter expansions can be used in directory names
+
+2012-04-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'fix-pr11232' into maint
+
+       * fix-pr11232:
+         install: shell parameter expansions can be used in directory names
+
+2012-04-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+       install: shell parameter expansions can be used in directory names
+
+       Fixes automake bug#11232.
+
+       GNU automake used to support shell parameter expansion and command
+       substitutions in installation directories, but that was inadvertently
+       broken by commit v1.11-759-g368f1c4 "install: don't create empty dirs
+       when an empty 'foo_PRIMARY' is used" of 18-03-2012, where shell quoting
+       of generated MKDIR_P command was changed from double to single quotes
+       in 3 places, while some 21 other places still use double quotes for
+       generated MKDIR_P commands.
+
+       * lib/am/data.am: Use double quotes for generated "mkdir -p" commands.
+       * lib/am/libs.am: Likewise.
+       * lib/am/ltlib.am: Likewise.
+
+2012-04-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: more environment cleanups
+
+       * defs (SH_LOG_COMPILER, SH_LOG_COMPILE, SH_LOG_FLAGS,
+       AM_SH_LOG_FLAGS, SH_LOG_DRIVER, SH_LOG_DRIVER_FLAGS,
+       AM_SH_LOG_DRIVER_FLAGS): Unset these variable to avoid
+       potential interferences from the environment.
+
+2012-04-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: unset 'AM_UPDATE_INFO_DIR' environment variable
+
+       * defs (AM_UPDATE_INFO_DIR): Unset, to be sure to avoid unduly
+       interferences from the environment.  See also automake bug#11204.
+       * THANKS: Add entry for David Fang.
+
+2012-04-12  Jim Meyering  <meyering@redhat.com>
+
+       build: generate doc/*.1 files; include help2man
+
+       This change is required to avoid making a distributed file depend
+       on a generated (non-distributed) one.  The preceding change
+       introduced one such dependency, with the distributed doc/*.1
+       depending on the generated aclocal and automake files.  Here,
+       we avoid the problem by generating the doc/*.1 files rather than
+       distributing them.
+
+       * doc/help2man: New file, version 1.37.1.
+       * Makefile.am (EXTRA_DIST): Add doc/help2man.
+       (man1_MANS): Rename from $(dist_man1_MANS).  Remove $(srcdir) prefix.
+       (CLEANFILES): Add these files here, rather than to
+       $(MAINTAINERCLEANFILES), since we are no longer distributing them.
+       (update_mans): Use doc/help2man, not $(HELP2MAN).
+       * configure.ac: Don't test for help2man, now that we bundle it.
+
+2012-04-12  Jim Meyering  <meyering@redhat.com>
+
+       build: avoid parallel build failures
+
+       A parallel build would fail when two concurrent sub-make processes
+       tried to build lib/Automake/Config.pm.  The loser would complain that
+         grep: lib/Automake/Config.pm-t: No such file or directory
+         chmod: cannot access `lib/Automake/Config.pm-t': No such file or\
+           directory
+         make[1]: *** [lib/Automake/Config.pm] Error 1
+       * Makefile.am (update_mans): Don't build lib/Automake/Config.pm here.
+       Instead, depend on it from the two rules that use it:
+       ($(srcdir)/doc/aclocal-$(APIVERSION).1): Depend on it.
+       ($(srcdir)/doc/automake-$(APIVERSION).1): Likewise.
+
+       [ Note that technically, the above is incorrect, since it makes those
+         distributed doc/*.1 files depend on generated aclocal and automake.
+         That problem is addressed by the following commit. ]
+
+       However, that was not enough, since even then, a parallel build
+       would still fail, now with this:
+
+         help2man: can't get `--help' info from automake-1.11a
+         Try `--no-discard-stderr' if option outputs to stderr
+         make: *** [doc/automake-1.11a.1] Error 1
+
+       a subsequent "make -j3" would create the missing file.
+       That was because help2man would invoke t/wrap/aclocal.in and
+       t/wrap/automake.in, each of which would require aclocal and
+       automake, yet those two files weren't guaranteed to be created.
+       Add explicit dependencies:
+       ($(srcdir)/doc/aclocal-$(APIVERSION).1): Depend on aclocal.
+       ($(srcdir)/doc/automake-$(APIVERSION).1): Depend on automake.
+
+2012-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: remove older entry for "future backward incompatibilities"
+
+       * NEWS (New in 1.11.4): Remove subsection about "Future backward
+       incompatibilities"; they are now either documented changes for the
+       upcoming 1.12 release, or re-casted as planned future backward
+       incompatibilities for the next 1.13 release.
+
+2012-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: document fixes for bug#11222 and bug#11229
+
+       * NEWS (Bugs fixed in 1.11.5): New, documenting the fixes.
+
+2012-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         vala: fix distcheck with c/vala mixed projects
+         vala: fix vapi files handling
+         vala: test vapi files handling (still failing)
+
+2012-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branches 'vala-fix-pr11222' and 'vala-fix-pr11229' into maint
+
+       * vala-fix-pr11222:
+         vala: fix vapi files handling
+         vala: test vapi files handling (still failing)
+
+       * vala-fix-pr11229:
+         vala: fix distcheck with c/vala mixed projects
+
+2012-04-12  Marc-Antoine Perennou  <Marc-Antoine@Perennou.com>  (tiny change)
+
+       vala: fix distcheck with c/vala mixed projects
+
+       Fixes automake bug#11229.
+
+       * automake.in (lang_vala_finish_target): Return early if the
+       current '_SOURCES' variable does not contain any '.vala' nor
+       '.vapi' source.  Otherwise, the vala compiler will be called
+       without arguments, causing an error.
+       * tests/vala-mix.test: Enhance to catch the fixed bug.
+
+2012-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: fix typo
+
+       * NEWS (Changes to Automake-generated testsuite harnesses): It's
+       'perl', not 'per'.  Reported by Akim Demaille in a private mail.
+
+2012-04-12  Marc-Antoine Perennou  <Marc-Antoine@Perennou.com>  (tiny change)
+
+       vala: fix vapi files handling
+
+       Fixes automake bug#11222.
+
+       Issue introduced in commit 'v1.11-696-g51f61df' of 27-02-2012,
+       "vala: fix 'valac' calls for projects with mixed Vala/C", which
+       fixed automake bug#10894.
+
+       * automake.in (lang_vala_finish_target): Also recognize '.vapi'
+       as an extension for vala input files.
+       * tests/list-of-tests.mk (XFAIL_TESTS): Remove 'vala-vapi.test'.
+
+2012-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)
+           Marc-Antoine Perennou  <Marc-Antoine@Perennou.com>
+
+       vala: test vapi files handling (still failing)
+
+       Exposes automake bug#11222.
+
+       * tests/vala-vapi.test: New test, still failing.
+       * tests/list-of-tests.mk (handwritten_TESTS): Add it.
+       (XFAIL_TESTS): Likewise.
+       * THANKS: Update.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self checks: avoid spurious failures when keep_testdirs=yes
+
+       * t/self-check-cleanup.tap, t/self-check-dir.tap: Unset the
+       'keep_testdirs' environment variable, to avoid spurious errors
+       when the testsuite is run with "keep_testdirs=yes make check".
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: some weaknesses in a self-check test case
+
+       * t/self-check-cleanup.tap: This test contained several buglets
+       introduced in the recent row of commits that converted the Automake
+       build system to a non-recursive setup.  Fix them.  Since we are at
+       it, enhance the test to cover also the use of the 'keep_testdirs'
+       environment variable in order to keep the temporary test directories
+       around.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: avoid yet more spurious failures (2)
+
+       Some maintainer checks were too greedy in processing 'Makefile.am'
+       files, looking for them even in temporary directories left behind
+       by the test cases, thus causing occasional spurious failures.
+
+       * syntax-checks.mk (ams): Ignore 'Makefile.am' files in the
+       temporary test directories.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: avoid yet more spurious failures (1)
+
+       The 'sc_tests_makefile_variable_order' maintainer check is too
+       strict sometimes, blaming automake for outputting out-of-order
+       variables when this is in fact due to the result of post-processing
+       of third-party tools or custom test code.
+
+       * t/tap-doc2.sh: Ensure the final Makefile.in (that we hack by
+       hand) is removed, to avoid a spurious maintainer-check failure.
+       * t/gettext-macros.sh: Ensure that any leftover Makefile.in (that
+       is generated by gettext/autopoint) is removed, to avoid a spurious
+       maintainer-check failure.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: fixlets w.r.t. the release procedure
+
+       * HACKING  (Release procedure): Do not state that the result of
+       "make fetch" is woefully incomplete: this is not true anymore today.
+       Suggest to re-run the testsuite after a "make fetch", in case any
+       file has been updated.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix spurious failures
+
+       * syntax-check.mk (sc_mkinstalldirs): Now the 'mkinstalldirs' is
+       listed in the top-level 'Makefile.am', not in 'lib/Makefile.am';
+       adjust the "whitelist" accordingly.
+       (sc_ensure_testsuite_has_run): The 'test-suite.log' file created by
+       "make check" is now placed in the top-level directory, not in the
+       't/' subdirectory.  Adjust by using '$(TEST_SUITE_LOG)' instead of
+       an hand-crafted path for the 'test-suite.log' file.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: version bump after beta release
+
+       * configure.ac (AC_INIT): Bump version number to 1.11c, as per
+       HACKING suggestion.
+       * NEWS: Likewise.
+       * m4/amversion.m4: Likewise (autoupdated by ./bootstrap).
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Beta release 1.11b (will become 1.12)
+
+       * configure.ac (AC_INIT): Bump version number to 1.11b.
+       * NEWS: Likewise.
+       * m4/amversion.m4: Likewise (autoupdated by ./bootstrap).
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       sync: some auxiliary files synced from upstream
+
+       * lib/texinfo.tex: Synced from upstream, by "make fetch".
+       * lib/INSTALL: Likewise.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: described new branching policy for 1.12 an later
+
+       This change closes automake bug#11153.
+
+       * HACKING (Working with git): Document the new policy for automake
+       branching and merging, which will start being applied after 1.12 is
+       released:
+
+         - the maintenance branch will be 'maint', and we will cut the
+           maintenance releases directly from there;
+
+         - the development branch will be 'master', and we will cut the
+           new releases directly from there;
+
+         - 'maint' will be kept regularly merged into 'master'.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: avoid spurious failure with older GObject
+
+       * t/vala2.sh: In the 'PKG_CHECK_MODULES' call in 'configure.ac',
+       don't require gobject >= 2.10, but just >= 2.4: that is enough in
+       order for the test to pass.
+       * t/vala3.sh: Likewise.
+       * t/vala5.sh: Likewise.  Also, skip the test instead of failing
+       if the ./configure invocation fails: that is likely due to the
+       fact that the GObject library is too old or missing, and that is
+       not automake's fault.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: force the use of automatic dependency tracking
+
+       * t/vala-mix2.sh: Invoke ./configure with the option
+       '--enable-dependency-tracking', so that slower dependency
+       extractors are not rejected.  This avoids a spurious failure
+       at least on Solaris when the Sun C compiler is used.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failures in tests on C++ and lex
+
+       This is a follow-up to commit v1.11-2128-g7f2bc63 of 09-04-2012,
+       "tests: avoid spurious failures with non-flex 'lex' programs and
+       C++".  It is required to avoid a couple of spurious failures on
+       Solaris and NetBSD systems (at least).  See also automake bug#11185.
+
+       * t/lex-clean-cxx.sh (parsefoo.lxx): Do not declared the provided
+       dummy 'isatty' function as 'static', since that might conflict with
+       a declaration of it as 'extern' pulled in through other system
+       * t/lex-depend-cxx.sh (joe.ll): Likewise.
+       * t/README: Update advice, to avoid similar issues in the future.
+
+2012-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'rmch'
+
+       * rmch:
+         maint: simplify generation of files with @substed@ stuff
+         t/README: update w.r.t. recent overhaul (non-recursive build system)
+         docs: fix names of relevant test cases in comments
+         NEWS: automake build systems avoids make recursion
+         maint: no more make recursion in Automake's build system
+         tests: rename 'tests/' => 't/', '*.test' => '*.sh'
+         tests: remove recipes that run tests with 'prove'
+         tests: move most helper scripts and files into the 'ax' subdirectory
+
+2012-04-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Peter Rosin  <peda@lysator.liu.se>
+
+       tests: avoid spurious failures with non-flex 'lex' programs and C++
+
+       This change fixes automake bug#11185.
+
+       The commit v1.11-2058-g6f4b08d of 06-03-2012, "tests: explicitly
+       state that our lexers do not require unistd.h" has broken the tests
+       'lex-clean-cxx.test' and 'lex-depend-cxx.test' on Solaris, where lex
+       is not flex and does not understand the "%option never-interactive"
+       directive.  Remove the use of this directive, resorting to defining
+       a dummy 'isatty()' function instead to keep the flex-generated tests
+       able to compile also on MinGW/MSYS.
+
+       * tests/lex-clean-cxx.test (parsefoo.lxx): Define a dummy 'isatty()'
+       function.
+       * tests/lex-depend-cxx.test (joe.ll): Likewise.
+       * tests/README: Adjust.  Fix an unrelated typo since we are at it.
+
+2012-04-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid a spurious failures for shells with busted 'set -e'
+
+       Some versions of the BSD Korn shell wrongly bail out when the
+       'errexit' shell flag is active and the left-hand command in a
+       "&&" list fails and that list is the *last* command of the body
+       of a "while" or "for" loop.
+
+       * tests/install-info-dir.test: Work around that behaviour.
+
+2012-04-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: simplify generation of files with @substed@ stuff
+
+       Use a proper "config.status --file=-" idiom to do most substitutions
+       in our generated files, to avoid too much duplications between the
+       various $(do_subst) commands in Makefile.am and the (explicit or
+       implicit AC_SUBST) invocation in configure.ac.
+
+       From a suggestion by Eric Blake and Federico Simoncelli:
+       <http://lists.gnu.org/archive/html/automake/2012-01/msg00011.html>
+
+       * Makefile.am (do_subst): Rewrite to take advantage of the
+       "config.status --file=-" idiom.
+       (generated_file_finalize): New, to help checking that generated
+       files don't contain unexpanded '@substitutions@', and are made
+       read-only.
+       (automake, aclocal): Take advantage of the improved $(do_subst).
+       Improve comments.
+       (lib/Automake/Config.pm): Likewise, and of the new variable
+       $(generated_file_finalize) as well.
+       ($(top_srcdir)/m4/amversion.m4): Likewise.
+       (defs-static): Likewise, and depend explicitly on 'Makefile'.
+       (do_subst_t): Remove as obsolete.
+       * THANKS: Update.
+
+2012-04-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant requirement
+
+       * tests/txinfo19.test ($required): Drop required "tex", it is not
+       really needed.
+       Add trailing ':' command since we are at it.
+
+2012-04-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: make two test scripts executable
+
+       * tests/instdir-cond.test: Add executable bit.
+       * tests/instdir-cond2.test: Likewise.
+
+2012-04-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       t/README: update w.r.t. recent overhaul (non-recursive build system)
+
+       And other miscellaneous improvements since we are at it.
+
+2012-04-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: fix names of relevant test cases in comments
+
+       * doc/automake.texi: In comments reporting which test(s) check a
+       given feature/idiom, fix the names of the referenced tests, to
+       reflect the recent 'tests/foo.test' => 't/foo.sh' "Great Rename".
+
+2012-04-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       NEWS: automake build systems avoids make recursion
+
+2012-04-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: no more make recursion in Automake's build system
+
+       We finally merge testsuite-related part of the Automake build
+       system with the top-level one.  See also yesterday's commit
+       'v1.11-2124-ga4b0f4b', "maint: remove most recursion in automake's
+       own build system".
+
+       * t/gen-testsuite-part: Move ...
+       * gen-testsuite-part: ... here, with required adjustments.
+       * t/defs-static.in: Move ...
+       * defs-static.in: ... here, with required adjustments.  In
+       particular ...
+       ($testsrcdir, $testbuilddir): Removed.
+       ($top_testsrcdir): Renamed ...
+       ($am_top_srcdir): ... to this.
+       ($top_testbuilddir): Renamed ...
+       ($am_top_builddir): ... to this.
+       * t/defs: Move ...
+       * defs: ... here, and adjust as required.
+       * t/Makefile.am: Merge ...
+       * Makefile.am: ... in here, with related adjustments and
+       simplifications.
+       * bootstrap: Adjust as required.
+       * syntax-checks.mk: Likewise.
+       * .gitignore: Likewise.
+       * t/ax/tap-setup.sh: Likewise.
+       * t/get-sysconf.sh: Likewise.
+       * t/help-multilib.sh: Likewise.
+       * t/multlib.sh: Likewise.
+       * t/parallel-tests2.sh: Likewise.
+       * t/self-check-cleanup.tap: Likewise.
+       * t/self-check-exit.tap: Likewise.
+       * t/self-check-dir.tap: Likewise.
+       * t/self-check-explicit-skips.sh: Likewise.
+       * t/self-check-reexec.tap: Likewise.
+       * t/self-check-sanity.sh: Likewise.
+       * t/yacc-d-cxx.sh: Likewise.
+
+2012-04-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: rename 'tests/' => 't/', '*.test' => '*.sh'
+
+       When we (soon) convert the Automake testsuite to a non-recursive
+       make setup, we'll have to fix the entries of $(TESTS) to be
+       prepended with the subdirectory they are in; this will increase
+       the length of $(TESTS), and thus increase the possibility of
+       exceeding the command-line length limits on some systems (most
+       notably, MinGW/MSYS).  See automake bug#7868 for more information.
+
+       Thus we rename the 'tests/' subdirectory to 't/', and each 'x.test'
+       script in there to 'x.sh'; this way, the $(TESTS) entry 'foo.test'
+       will become 't/foo.sh', which have the same number of characters.
+
+       * tests/: Rename ...
+       * t/: ... to this.
+       * t/*.test: Rename ...
+       * t/*.sh: ... to this.
+       * t/.gitignore: Removed as obsolete.
+       * t/defs: Adjust.
+       * t/gen-testsuite-part: Likewise.
+       * t/list-of-tests.mk: Likewise.
+       * t/ccnoco.sh: Likewise.
+       * t/ccnoco3.sh: Likewise.
+       * t/self-check-cleanup.tap: Likewise.
+       * t/self-check-dir.tap: Likewise.
+       * t/self-check-me.tap: Likewise.
+       * t/self-check-reexec.tap: Likewise.
+       * README: Likewise.
+       * bootstrap: Likewise
+       * configure.ac: Likewise.
+       * Makefile.am: Likewise.
+       * .gitignore: Likewise.
+       * syntax-check.mk: Likewise.
+
+2012-04-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove recipes that run tests with 'prove'
+
+       Those recipes has served its purpose by helping us during the
+       development of TAP support in Automake, to ensure our TAP driver
+       didn't have gratuitous incompatibilities with the 'prove' test
+       runner.  But they are now unused, out-of-date and bitrotting.  So
+       it's better to just remove them.  We can resurrect them at a later
+       time if the need arises.
+
+       * tests/Makefile.am (PROVE, AM_PROVEFLAGS, AM_PROVECMD): Remove
+       these variables.
+       (prove, installprove): Remove these targets and their recipe.
+       (EXTRA_DIST): Don't distribute 'ax/prove-runner' anymore.
+       * ax/prove-runner: Delete.
+
+2012-04-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: move most helper scripts and files into the 'ax' subdirectory
+
+       * tests/defs-static.in ($am_testauxdir): New variable.
+       * tests/testsuite-summary-checks.sh: Moved ...
+       * tests/ax/testsuite-summary-checks.sh: ... here.
+       * tests/trivial-test-driver: Moved ...
+       * tests/ax/trivial-test-driver: ... here.
+       * tests/tap-summary-aux.sh: Moved ...
+       * tests/ax/tap-summary-aux.sh: ... here.
+       * tests/distcheck-hook-m4.am: Moved ...
+       * tests/ax/distcheck-hook-m4.am: ... here.
+       * tests/prove-runner: Moved ...
+       * tests/ax/prove-runner: ... here.
+       * tests/depcomp.sh: Moved ...
+       * tests/ax/depcomp.sh: ... here.
+       * tests/tap-setup.sh: Moved ...
+       * tests/ax/tap-setup.sh: ... here.
+       * tests/tap-functions.sh: Moved ...
+       * tests/ax/tap-functions.sh: ... here.
+       * tests/plain-functions.sh: Moved ...
+       * tests/ax/plain-functions.sh: ... here.
+       * tests/extract-testsuite-summary: Moved ...
+       * tests/ax/extract-testsuite-summary.pl: .. . here.
+       * tests/gen-testsuite-part: Adjusted accordingly.
+       * tests/Makefile.am: Likewise.
+       * tests/defs: Likewise.
+       * syntax-check.mk: Likewise.
+       * Several tests: Likewise.
+
+2012-04-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: remove most recursion in automake's own build system
+
+       Recursive make-based build systems tend to be slower, more fragile
+       and less faithful than "flat" ones.  See Peter Miller's article
+       "Recursive Make Considered Harmful" for more a more in-depth
+       discussion:
+
+           <http://miller.emu.id.au/pmiller/books/rmch/>
+
+       While in the case of automake this isn't a big problem (given the
+       small size of its build systems), it still creates occasional
+       glitches and annoyances.
+
+       With this change, the use of recursion in Automake's own build
+       system is eliminated *but for the testsuite*.  Converting that
+       is a little more tricky, and better left for a later change (or
+       series of changes).
+
+       See also commit v1.11-769-gfeeb7f6 of 28-03-2012.
+
+       * contrib/Makefile.am, lib/Makefile.am, m4/Makefile.am,
+       doc/Makefile.am:  Removed, their content merged ...
+       * Makefile.am: ... here, with required adjustments and few
+       other "opportunistic" changes.
+       (SUBDIRS): Update.
+       * configure.ac (AC_CONFIG_FILES): Likewise.
+       * .gitignore: Likewise.
+
+2012-04-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix a spurious failures with non-GNU make
+
+       * tests/instdir-no-empty.test: Also pass proper AM_MAKEFLAGS to
+       make invocations that might recurse, to ensure the macro definitions
+       passed from the command line are properly propagated.
+
+2012-04-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       texinfo: warn about future use of '--tidy'
+
+       Starting from the next major release of Automake (likely 1.13) we
+       want to start passing the '--tidy' option to texi2dvi and texi2pdf
+       invocations, so that auxiliary TeX-generated files can be kept
+       around (thus speeding up rebuilding of DVI and PDF output) without
+       cluttering the build directory too much.
+
+       Since the '--tidy' option was introduced in Texinfo 4.9 (as
+       documented in the Texinfo distribution's NEWS file), this also
+       means that Makefiles generated by future Automake versions will
+       require at least that version of Texinfo (at the time of writing
+       four years and nine months old).
+
+       The users should be warned about the planned behavioral change
+       and the new version requirement it will entail.
+
+       See also automake bug#11146.
+
+       * NEWS (Planned Backward Incompatibilities): Add entry about use
+       of the '--tidy' option and requirement of Texinfo 4.9.
+
+2012-04-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       texinfo: don't clutter the builddir when using modern texi2dvi
+
+       In modern versions of texi2dvi (at least since version 1.135, which
+       comes with Texinfo 4.13) the '-o' option does not imply anymore the
+       '--clean' option.  As a consequence, lots of TeX-generated auxiliary
+       files are now left in the build directory by the 'pdf', 'ps' and
+       'dvi' rules.
+
+       This is especially annoying with non-recursive setups having the
+       '.texi' files in a subdirectory, as in:
+
+         info_TEXINFOS = doc/foo.texi
+
+       In this case, the stray auxiliary files are left in the top build
+       directory (since TeX is run from there).  See for example:
+
+        <http://lists.gnu.org/archive/html/bug-bison/2012-04/msg00002.html>
+
+       See also automake bug#11146.
+
+       * lib/am/texibuild.am: Call 'texi2dvi' and 'texi2pdf' with the
+       '--clean' option.  Update comments accordingly.
+       * tests/txinfo-noclutter.test: New test.
+       * tests/txinfo18.test: Remove as obsolete, the still relevant parts
+       of it moved into the new test.
+       * tests/list-of-tests.mk: Adjust.
+       * NEWS: Update.
+
+2012-04-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: autotools-generated files are not committed anymore
+
+       * HACKING (Working with git) Generated files like 'configure',
+       'Makefile.in' and 'aclocal.m4' are not committed anymore in our
+       git repository since some months.  Remove obsoleted advices that
+       assumed they still were.
+
+2012-04-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: simplify documentation of bootstrapping process
+
+       * HACKING (Working with git): Do not suggest that, to ensure the
+       bootstrapping process is performed with the latest autotools, the
+       developer could explicitly pass $AUTOCONF and $AUTOM4TE in the
+       environment to the ./bootstrap and ./configure invocations: that
+       is a little tricky and quite fragile.  Instead, suggest to just
+       put modern-enough version of the autotools early in PATH.
+
+2012-04-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: remove repeated line in comment, fix quoting
+
+       * automake.in: Drop a repeated line in a comment.  In the same
+       comment, prefer quoting 'like this' rather than `like this'.
+       Issue introduced in one of the commits that converted from quoting
+       `like this' to quoting 'like this'.
+
+2012-03-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: remove useless import in automake script
+
+       * automake.in (Automake::Version): This import is not needed;
+       remove it.
+
+2012-03-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         docs: deprecate 'cygnus' mode, help the transition
+
+2012-03-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: deprecate 'cygnus' mode, help the transition
+
+       Support for "Cygnus-style" trees (so far enabled by the 'cygnus'
+       option) will be deprecated in one release of the next major series
+       (1.12.x) and removed in the next major release after that (1.13).
+       Better to start warning about this in the manual.
+
+       * docs/automake.texi: Warn about the oncoming deprecation of the
+       'cygnus' mode.  Suggest some idioms that can be used to retain some
+       effects of the 'cygnus' option.
+       * THANKS: Update.
+
+       From a suggestion by Joseph S. Myers in automake bug#11034.
+
+2012-03-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       perl refactor: use modern semantics of 'open'
+
+       * lib/Automake/XFile.pm: Update comments and POD documentation to
+       suggest a more idiomatic/modern usage.
+       (open): Be more robust in detecting whether the created file handle
+       is being opened for writing.
+       * lib/Automake/FileUtils.pm (update_file, contents): Call the
+       'Automake::XFile' and 'File::IO' constructors with two arguments
+       rather than one; this change obsoletes ...
+       (open_quote): ... this subroutine, which has thus been removed.
+       (@EXPORT): Drop '&open_quote'.
+
+2012-03-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         cosmetics: don't make the generated Config.pm executable
+         maint: reduce use of recursion in automake build system
+
+       + Extra non-trivial extra edits follows.
+
+       * lib/Makefile.am (amdir): Deleted this definition, it is already
+       provided by a proper AC_SUBST in configure.ac.
+       (dist_am_DATA): Remove 'am/ansi2knr.am', 'am/check-html.am' and
+       'am/multilib.am'.
+       (dist_perllib_DATA): Remove 'Automake/Struct.pm'.
+
+2012-03-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: don't make the generated Config.pm executable
+
+       * lib/Makefile.am (Automake/Config.pm): Don't make this executable,
+       there's not need for it to be (it's a perl module, not a script).
+
+2012-03-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: reduce use of recursion in automake build system
+
+       Recursive make-based build systems tend to be slower, more fragile
+       and less faithful than "flat" ones.  See Peter Miller's article
+       "Recursive Make Considered Harmful" for more a more in-depth
+       discussion:
+
+         <http://miller.emu.id.au/pmiller/books/rmch/>
+
+       While in the case of automake this isn't a big problem (given the
+       small size of its build systems), it still creates occasional
+       glitches and annoyances.  So, with this change, we start making
+       less use of make recursion in the Automake's own build system
+       (future changes will reduce it even more).
+
+       * lib/am/Makefile.am, lib/Automake/Makefile.am:  Removed, their
+       content merged ...
+       * lib/Makefile.am: ... here, with required adjustments.
+       * configure.ac (AC_CONFIG_FILES): Update.
+
+2012-03-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: sync with branch-1.11, fix mis-merges
+
+2012-03-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       acinstall: remove, it has never been really used
+
+       Accordingly to the git history (see for example the 'README-alpha'
+       in commit 'Release-1-1e-39-g9beb4ec' of 06-10-1996), the 'acinstall'
+       script should have been used to install m4 files for aclocal.  The
+       comments in this script report that "... A script is needed to do
+       this because we want to do serial-number checking; newer versions
+       of macro files should always be preferred".
+
+       But the 'acinstall' script has never been really used: for example,
+       the entry "actually use acinstall program" was removed (unfixed)
+       from the TODO file in commit 'Release-1-1k-12-g1201405' of
+       08-12-1996, and the only citation of 'acinstall' in the manual was
+       removed in commit 'Release-1-1l-37-g128c3d7' of 19-03-1997, and
+       never added back. In addition, the last non-trivial edit to the
+       script (that is, besides updates to the copyright notice) dates
+       back to 1996.
+
+       More importantly, now that aclocal supports the ACLOCAL_PATH
+       environment variable, installing m4 files directly in the
+       system-wide acdir is discouraged, and better left only to
+       distros' package managers (which already have their own way to
+       do so, with which third-party build systems should not directly
+       meddle).
+
+       So we just remove the 'acinstall' script.
+
+       * lib/acinstall: Remove.
+       * lib/Makefile.am (dist_script_DATA): Update.
+
+2012-03-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: reorganize the source tree and make it less cluttered
+
+       * TODO: Move ...
+       * old/TODO: ... here.  This is done because this file is quite
+       outdated, and today TODO and wishlist items are better handled
+       though the debbugs tracker.
+       * ChangeLog.00: Move ...
+       * old/ChangeLog.00: ... here.
+       * ChangeLog.01: Move ...
+       * old/ChangeLog.01: ... here.
+       * ChangeLog.02: Move ...
+       * old/ChangeLog.02: ... here.
+       * ChangeLog.03: Move ...
+       * old/ChangeLog.03: ... here.
+       * ChangeLog.04: Move ...
+       * old/ChangeLog.04: ... here.
+       * ChangeLog.09: Move ...
+       * old/ChangeLog.09: ... here.
+       * ChangeLog.11: Move ...
+       * old/ChangeLog.11: ... here.
+       * ChangeLog.96: Move ...
+       * old/ChangeLog.96: ... here.
+       * ChangeLog.98: Move ...
+       * old/ChangeLog.98: ... here.
+       * tests/ChangeLog-old: Move ...
+       * old/ChangeLog-tests: .. here.
+       * tests/Makefile.am (EXTRA_DIST): Adjust.
+       * Makefile.am (EXTRA_DIST): Likewise.
+       * .autom4te.cfg: New file, instructing the autotools to place the
+       autom4te cache directory in '.autom4te.cache' rather than in
+       'autom4te.cache'.
+       * .gitignore: Adjust.
+       * Makefile.am (maintainer-clean-local): Remove the '.autom4te.cache'
+       directory.
+
+2012-03-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: we are going to drop 'cygnus' soonish
+
+       * NEWS (Future backward incompatibilities): Support for
+       "Cygnus-style" trees (so far enabled by the 'cygnus' option)
+       will be deprecated in the next minor release and removed in
+       in the next major release.
+
+2012-03-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         depcomp: support tcc (Tiny C Compiler)
+         tests: workaround for automatic linker determination and conditionals
+         info: allow user to inhibit pruning of '${infodir}/dir'
+         vala tests: fix spurious failures with older valac (<= 0.7.2)
+         tests: fix a timestamp issue, and other minor buglets
+         tests: fix spurious failure with older autoconf
+         build: remove duplicated entries in $(TESTS)
+
+       + Extra non-trivia edits:
+       * tests/link_cond.test: Use 'configure.ac', not 'configure.in'.
+
+2012-03-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       depcomp: support tcc (Tiny C Compiler)
+
+       This change fixes automake bug#11007.
+
+       Since git commit 0c928da9 of 21-06-2010, "tcc: Draft suppoprt for
+       -MD/-MF options" (sic, with typo in summary line), tcc has supported
+       automatic dependency generation with a command-line interface
+       similar to what old (pre-8.0) Intel compilers did.  This caused
+       Automake-generated code for automatic dependency tracking to
+       recognize tcc dependency style as "icc".  However, the format of
+       the dependency files generated by tcc is apparently different enough
+       from that of icc to cause spurious failures in the post-processing
+       operated by our 'depcomp' script on such files.
+
+       The failure was exposed with the development version of tcc 0.9.26
+       (as installed with debian package "tcc 0.9.26~git20120104.83d") by
+       test case 'depcomp-auto.tap' (available only in the master branch).
+
+       * lib/depcomp (icc): Cater to tcc as well.  Update comments
+       accordingly.
+       * NEWS: Update.
+
+2012-03-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: workaround for automatic linker determination and conditionals
+
+       See automake bug#11089.
+
+       Automake is not very smart in automatically determining the command
+       to be used to link a program whose source files' languages are
+       conditionally defined.  For example, an input like:
+
+         if HAVE_CXX
+         foo_SOURCES = more.c++
+         else
+         foo_SOURCES = less.c
+         endif
+
+       will cause the build rules for 'foo' to *unconditionally* use the
+       C++ compiler for linking, even when the 'HAVE_CXX' conditional
+       evaluates to false (which might mean that no C++ compiler is
+       available).
+
+       This behaviour is not really correct, but it's easy enough to work
+       around, and it's only relevant for fringe use cases (at best).  So
+       let's just test that the workaround really works.
+
+       * tests/link_cond.test: New test.
+       * tests/list-of-tests.mk: Add it.
+       * THANKS: Update.
+
+2012-03-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       info: allow user to inhibit pruning of '${infodir}/dir'
+
+       This should have ideally been part of commit 'v1.11-519-g1ec1668'
+       of 23-11-2011 "info: allow user to inhibit creation/update of
+       '${infodir}/dir'".  Well, better late than never.
+
+       * lib/am/texinfos.am (uninstall-info-am): Don't look anymore at the
+       output of "install-info --version" to decide whether to use it to
+       update the '${infodir}/dir' or not; instead, honour the environment
+       variable 'AM_UPDATE_INFO_DIR'.  To avoid code duplication with ...
+       (install-info-am): ... the recipe of this target, move common code
+       out to ...
+       (am__can_run_installinfo): ... this new internal variable.
+       * tests/install-info-dir.test: Enhance.
+       * doc/automake.texi (Texinfo): Update.
+       * NEWS: Likewise.
+
+2012-03-26  Bruno Haible  <bruno@clisp.org>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: fix spurious failures with older valac (<= 0.7.2)
+
+       See automake bug#11093.
+
+       The Vala compiler before the 0.7.3 release does not support the
+       '--profile' option.  But some of our tests were relying on it, so
+       skip those tests if the detected Vala compiler is too old.
+
+       * tests/vala-vpath.test, tests/vala-mix.test, tests/vala-mix2.test
+       (configure.in): Require vala version >= 0.7.3 in AM_PROG_VALAC call.
+
+2012-03-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix a timestamp issue, and other minor buglets
+
+       Cherry picked from commit v1.11-1988-g82616f0 of 21-02-2012.
+
+       Reported by Panther Martin in automake bug#10848.  See also
+       automake bug#11093.
+
+       * tests/conffile-leading-dot.test: Add a proper '$sleep' invocation,
+       to avoid spurious failures on fast systems without sub-second
+       timestamp resolutions.  Add other minor related and unrelated
+       improvements and fixlets since we are at it.
+
+2012-03-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with older autoconf
+
+       Cherry picked from commit v1.11-1950-gba5a89b of 16-02-2012.
+
+       * tests/conffile-leading-dot.test: Relax grepping of 'config.status'
+       stderr, to cater for older autoconf.  Issue revealed by a failure
+       with autoconf 2.63 on Cygwin 1.5.25. See also automake bug#11093.
+
+2012-03-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: update THANKS
+
+       * THANKS: Add entry for Tim Landscheidt.
+
+2012-03-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: terminate unfinished sentence, fix reference to a test case
+
+       * doc/automake.texi (Using the TAP test protocol): Here.
+
+2012-03-24  Tim Landscheidt  <tim@tim-landscheidt.de>  (tiny change)
+
+       docs: fix some small typos and grammaros
+
+       * doc/automake.texi (Using the TAP test protocol): Here ...
+       * tests/tap-doc2.test: ... and here.
+
+2012-03-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: remove duplicated entries in $(TESTS)
+
+       * tests/list-of-tests.mk (handwritten_TESTS): Remove duplicated
+       entries for test cases 'extra-portability*.test'.
+
+2012-03-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: update TODO file
+
+       We don't have to make creation of $(foodir) conditional when
+       foo_PRIMARY is conditionally defined; that has been solved in
+       a more sweeping way by commit v1.11-759-g368f1c4 of March 18,
+       which solved bug#11030 and bug#10997.
+
+       The "check" target already depends on the "all" target.
+
+       Remove comment "investigate problems with conditionally defined
+       libraries"; it is aimed at automake 1.5 (!) and too terse and old
+       to be useful now.
+
+       Remove the 12 years old suggestion that "distcheck should make sure
+       that each file that uses _() is listed in POTFILES.in"; this is
+       handled by gnulib-provided syntax check 'sc_po_check' already today.
+
+       Don't tell to "Run automake before libtool"; automake does not
+       automatically run libtool anymore today.
+
+       Remove hint about the possibility to "rewrite automake in guile" or
+       "add a GUI": we are not going to do so.
+
+       The automatic de-ANSI-fication feature has already been remove, so
+       no need to suggest its potential removal in the future.
+
+       Remove reference to a prospective "cvs" option that could add some
+       cvs-specific rules.  First of all, CVS is falling out of use today.
+       Secondly, and most to the point, instead of guessing which VCS
+       is going to be most popular and try to hack support for it into
+       automake, we should leave it to developer-specific makefile
+       fragments offered by projects like Gnulib to provide such rules
+       (they are already doing so with succcess).
+
+       About DOS support: it should actually be dropped, not extended.
+
+       Add link about Karl Berry's proposal of preferring HTML over Info
+       documentation installed in the local system:
+       <http://lists.gnu.org/archive/html/texinfo-devel/2012-03/msg00018.html>
+
+       Remove items about "beautification" of output Makefile.in; they
+       are pretty obvious, and mostly noise (after all, everybody prefers
+       clean output where possible).  Leave it to any developer doing
+       future refactorings to find out low-hanging and/or high-impact
+       optimizations and beatifications of the generated Makefiles.
+
+       Remove item about internationalization: we're not going to
+       implement it.
+
+       Remove an item explicitly marked as "not that it matters".
+
+       The order of files in a distribution tarball does not really
+       matter, nobody has ever complained about it, so do not worry
+       about it.
+
+       Remove the suggestions about allowing hierarchy of dirs to share
+       one aclocal.m4 and about printing full file name of Makefile.am
+       or configure.in when giving error, in order to help very large
+       trees: nobody has ever complained about the current behaviours,
+       so no real need to change them.
+
+2012-03-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: bootstrapping issues with 'list-of-tests.mk'
+
+       * tests/list-of-tests.mk: This file is expected to be executed
+       directly with make from the bootstrap script, so we can't use
+       Automake '##' comments after line continuations.
+
+2012-03-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         maint: move definition of XFAIL_TESTS near TESTS
+
+       Actually, after the trivial merge conflicts have been solved, what
+       this change actually does is moving the definition of XFAIL_TESTS
+       near that of handwritten_TESTS.  But the rationale is the same of
+       that of commit 'v1.11-761-gabf40ce' (being merged here), and still
+       works, so all is good.
+
+2012-03-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: move definition of XFAIL_TESTS near TESTS
+
+       The $(TESTS) variable is defined in file 'tests/list-of-tests.mk',
+       while the $(XFAIL_TESTS) variable is defined in 'tests/Makefile.am'.
+       This means that when a new xfailing test is to be added, two files
+       must be touched; this is suboptimal and slightly confusing.
+
+       * tests/Makefile.am (XFAIL_TESTS): Definition moved ...
+       * tests/list-of-tests.mk: ... here.
+
+2012-03-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures caused by uses of 'configure.in'
+
+       Issue introduced by the recent merges of maint into master, and
+       revealed by "make maintainer-check".
+
+       * tests/aclocal-install-fail.test: Likewise.
+       * tests/aclocal-install-mkdir.test: Likewise.
+       * tests/aclocal-verbose-install.test: Likewise.
+       * tests/installdir.test: Likewise.
+       * tests/instdir-cond2.test: Likewise.
+       * tests/instdir-no-empty.test: Likewise.
+       * tests/python-pr10995.test: Likewise.
+       * tests/aclocal-no-install-no-mkdir.test: Likewise.
+
+2012-03-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         install-mans: avoid spurious failure with NetBSD make
+         install: don't create empty dirs when an empty 'foo_PRIMARY' is used
+         aclocal: remove a couple of useless imports
+         aclocal: create local directory where to install m4 files
+
+2012-03-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       install-mans: avoid spurious failure with NetBSD make
+
+       * lib/am/mans.am: After the changes introduced by previous commit
+       v1.11-759-g368f1c4, some manpage installation recipes started to
+       fail spuriously on NetBSD 5.1 make.  Apparently, the system make
+       there eats backslashes used to escape whitespace characters in the
+       relevant recipes.  Revert to slightly slower but safer idioms that
+       avoid the need of such escaping.
+
+2012-03-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       install: don't create empty dirs when an empty 'foo_PRIMARY' is used
+
+       Fixes automake bug#11030 and bug#10997.
+
+       An empty declaration of "foo_PRIMARY" in a Makefile.am used to
+       cause the generated install rules to create the directory $(foodir)
+       anyway, even if nothing was to be installed there.
+
+       While this could be seen as a convenient way to create a $(foodir)
+       directory upon "make install" (respecting $(DESTDIR) settings and
+       such), it also caused problems with conditionals; for example, an
+       input of:
+
+         if FALSE
+         pgkdata_DATA = something
+         endif
+
+       caused the generated install rules to unconditionally create the
+       $(pkgdatadir) directory (see automake bug#10997).
+
+       Also, a user wanting to create an empty directory upon installation
+       can easily do so with a custom install hook, as in:
+
+         installdirs-local:
+                 $(MKDIR_P) $(DESTDIR)$(foodir)
+         install-data-hook: installdirs-local
+
+       On the other hand, the old behavior of "always create $(foodir),
+       even if 'foo_PRIMARY' is empty" was harder and more tricky to
+       override.
+
+       Thus, from now on, an empty declaration of "foo_PRIMARY" will not
+       cause the directory $(foodir) to be created upon "make install"
+       anymore.
+
+       * lib/am/data.am, lib/am/java.am, lib/am/libs.am, lib/am/lisp.am,
+       lib/am/ltlib.am, lib/am/mans.am, lib/am/progs.am, lib/am/python.am,
+       lib/am/scripts.am, lib/am/texinfos.am: Adjust install rules to avoid
+       creating an installation directory if no files are actually to be
+       installed there.
+       * tests/instdir-empty.test: Remove, it was testing a semantic
+       opposite to the one we now want and implement.
+       * tests/instdir-no-empty.test: New test, check the new semantic.
+       * tests/instdir-cond.test: Enhance.  Move the still-failing part
+       of the test ...
+       * tests/instdir-cond2.test: ... here.
+       * tests/list-of-tests.mk, tests/Makefile.am (XFAIL_TESTS): Update.
+       * tests/java3.test: Adjust to avoid spurious failures.
+       * HACKING, NEWS, THANKS: Update.
+
+2012-03-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: remove a couple of useless imports
+
+       * aclocal.in (File::stat, Cwd): Remove these imports, they are not
+       really required.
+
+2012-03-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: create local directory where to install m4 files
+
+       Fixes automake bug#8168 and bug#10816.
+
+       A call like "aclocal -I m4 --install" used to fail if the 'm4'
+       directory wasn't pre-existing.  This could be particularly
+       annoying when running in a checked-out version from a VCS like
+       git, which doesn't allow empty directories to be tracked.
+
+       * aclocal.in (File::Path): New import.
+       (scan_m4_dirs): Don't die if the first directory of type FT_USER
+       doesn't exist and the '--install' option was given; that directory
+       will be created later ...
+       (install_file): ... here.  Change signature of this function: now
+       it takes as second argument the destination directory rather than
+       the destination file.  Crate the destination directory if it
+       doesn't already exist.  In verbose mode, tell what is being copied
+       where.
+       (write_aclocal): Update to the changes in 'install_file'.
+       * NEWS, THANKS: Update.
+       * tests/aclocal-install-fail.test: New test.
+       * tests/aclocal-install-mkdir.test: Likewise.
+       * tests/aclocal-no-install-no-mkdir.test: Likewise.
+       * tests/aclocal-verbose-install.test: Likewise.
+       * tests/list-of-tests.mk: Add them.
+
+2012-03-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         python: avoid failures due to $(am__py_compile) being undefined
+         python: expose automake bug#10995
+
+2012-03-15  Steven Drake  <sbd@NetBSD.org>  (tiny change)
+
+       python: avoid failures due to $(am__py_compile) being undefined
+
+       Fixes automake bug#10995, introduced in commit v1.11-372-gb46debf.
+
+       * lib/am/python.am: Move the definition of 'am__py_compile' to
+       ensure it is always emitted in the output Makefile.in.  Previously,
+       this wouldn't have happened if the input Makefile.am contained a
+       'noinst_PYTHON' declaration before a 'python_PYTHON' one.
+       * tests/Makefile.am (XFAIL_TESTS): Remove 'python-pr10995.test' and
+       'python.test'.
+       * NEWS: Update.
+
+2012-03-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       python: expose automake bug#10995
+
+       * tests/python.test: Expose the bug in grepping tests.
+       * tests/python-noinst.test: New functional test to expose the
+       bug.
+       * tests/list-of-tests.mk: Add it.
+       * tests/Makefile.am (XFAIL_TESTS): Add the new test and the
+       extended one.
+       * THANKS: Update.
+
+2012-03-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: one more use of 'unindent' function
+
+       * tests/yacc-d-cxx.test (write_parse, write_main): Use 'unindent'
+       instead of ad-hoc sed invocation to strip extra leading whitespace.
+
+2012-03-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant 'set -e' calls
+
+       * tests/dist-pr109765.test: Do not set the 'errexit' shell flag,
+       as it is already set by 'tests/defs'.
+       * tests/instdir-cond.test: Likewise.
+       * tests/instdir-empty.test: Likewise.
+       * tests/lex-clean-cxx.test: Likewise.
+       * tests/lex-clean.test: Likewise.
+       * tests/lex-depend-cxx.test: Likewise.
+       * tests/lex-depend.test: Likewise.
+       * tests/lex-line.test: Likewise.
+       * tests/lex-nodist.test: Likewise.
+       * tests/lex-pr204.test: Likewise.
+       * tests/silent-lex.test: Likewise.
+       * tests/silent-yacc-headers.test: Likewise.
+       * tests/silent-yacc.test: Likewise.
+       * tests/vala-mix2.test: Likewise.
+       * tests/yacc-auxdir.test: Likewise.
+       * tests/yacc-bison-skeleton-cxx.test: Likewise.
+       * tests/yacc-bison-skeleton.test: Likewise.
+       * tests/yacc-clean-cxx.test: Likewise.
+       * tests/yacc-cxx.test: Likewise.
+       * tests/yacc-d-cxx.test: Likewise.
+       * tests/yacc-deleted-headers.test: Likewise.
+       * tests/yacc-depend.test: Likewise.
+       * tests/yacc-depend2.test: Likewise.
+       * tests/yacc-line.test: Likewise.
+       * tests/yacc-mix-c-cxx.test: Likewise.
+       * tests/yacc-weirdnames.test: Likewise.
+
+2012-03-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         tests: avoid spurious failures in get-sysconf.test
+         scripts: bump the depcomp scriptversion
+         sync: some auxiliary files synced from upstream
+         coverage: an empty foo_PRIMARY should create directory $(foodir)
+         coverage: make sure am__py_compile is defined when needed
+         coverage: expose automake bug#10997
+         coverage: expose automake bug#10975
+         getopt: relax version requirement for perl
+
+       + Extra non-trivial edits:
+
+       * tests/dist-pr109765.test: Use 'configure.ac', not 'configure.in'.
+       * tests/instdir-cond.test: Likewise.
+       * tests/instdir-empty.test: Likewise.
+
+2012-03-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with older m4
+
+       Reported by Panther Martin in automake bug#10866, diagnosed by
+       Panther Martin and Eric Blake.
+
+       Older GNU m4 versions (e.g., 1.4.6) did error reporting at the end
+       of an error construct rather than the beginning.  This was causing
+       a spurious testsuite failure due to an off-by-one error in the line
+       number reported in an aclocal diagnostic.
+
+       * tests/cond41.test: Keep all the body of the 'AM_COND_IF'
+       invocation on a single line, to avoid the off-by-one error.
+
+2012-03-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failures in get-sysconf.test
+
+       This change fixes the last bit of automake bug#10866.
+
+       * tests/get-sysconf.test: When Homebrew spawns a build, even if
+       from a project's VCS, it stages the files in a new temporary
+       directory, instead of building directly from a VCS checkout.
+       This behaviour was causing a spurious failure in this test, which
+       expected to find either a ChangeLog file or a .git directory in
+       the source directory (the former happening when the test was run
+       from a distribution tarball, the latter when it was run from a
+       git checkout).  The Homebrew issue shows that these expectations
+       are not truly warranted, so relax the test to just give a warning,
+       not a failure, in case they do not hold.  Since we are at it, fix
+       an unrelated weakness in the displaying of the git log, which
+       could have failed when the builddir was not a subdirectory of the
+       srcdir.
+
+2012-03-12  Peter Rosin  <peda@lysator.liu.se>
+
+       scripts: bump the depcomp scriptversion
+
+       * lib/depcomp (scriptversion): Bump, to account for recent changes.
+
+2012-03-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       sync: some auxiliary files synced from upstream
+
+       * lib/texinfo.tex: Synced from upstream, by "make fetch".
+       * lib/config.guess: Likewise.
+       * lib/config.sub: Likewise.
+       * lib/gnupload: Likewise.
+
+2012-03-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: an empty foo_PRIMARY should create directory $(foodir)
+
+       For example, a Makefile.am containing the definition:
+
+         pkgdata_DATA =
+
+       should cause the 'install' rule of the generated Makefile.in to
+       create the '$(pkgdatadir)' directory (respecting any DESTDIR
+       setting as well).
+
+       Suggestion by Peter Breitenlohner in automake bug#10997.
+
+2012-03-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: make sure am__py_compile is defined when needed
+
+       See automake bug#10995.
+
+       * tests/python.test: Also make sure 'am__py_compile' is defined
+       correctly in the generated Makefile.in.
+
+2012-03-12  Daiki Ueno  <ueno@unixuser.org>  (tiny change)
+
+       coverage: expose automake bug#10997
+
+       * tests/instdir-cond.test: New test.
+       * tests/list-of-tests.mk: Add it.
+       * tests/Makefile.am (XFAIL_TESTS): Likewise.
+
+2012-03-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: expose automake bug#10975
+
+       * tests/dist-pr10975.test: New test.
+       * tests/list-of-tests.mk: Add it.
+       * tests/Makefile.am (XFAIL_TESTS): Likewise.
+
+2012-03-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       getopt: relax version requirement for perl
+
+       * lib/Automake/Getopt.pm: Require perl 5.6.0, not 5.6.2: the former
+       is enough.  See also commit 'v1.11-2054-g7df05a0' on master (dated
+       04-03-2012).
+
+2012-03-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         cosmetics: fix repeated changelog entry heading
+
+2012-03-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix repeated changelog entry heading
+
+2012-03-07  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'maint'
+
+2012-03-07  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'msvc' into maint
+
+       This merge remedies the confusing situation that some changes
+       destined for both the master branch and the release branch (a.k.a.
+       branch-1.11) currently needs to be made on the non-obvious msvc
+       branch and not on the more natural maint branch.  This has caused
+       a seemingly endless string of less than optimal commits.
+
+       The reason for the confusion stems from the fact that the changes made
+       on the msvc branch became too radical and was considered only suitable
+       for the master branch, and was thus written in a form suitable for
+       master and then merged there.  Later, the msvc branch was merged
+       directly into branch-1.11, in order to rush the new features to the
+       market and to keep the released scripts (lib/ar-lib, lib/compile and
+       lib/depcomp) consistent with those on the master branch.  However,
+       some changes had to be made to the features added by the msvc branch
+       in order for them to fit the requirements of branch-1.11, notably that
+       the warnings issued in the extra-portability class cannot be enabled
+       by -Wall in the 1.11.x maintenance releases.
+
+       In retrospect, it would have been better to not merge msvc directly
+       into branch-1.11, but instead do it via the maint branch (followed up
+       with a dummy merge from maint into master) the moment it was decided
+       that the msvc changes should make it into branch-1.11.
+
+       All in all, this merge is going to affect neither the master branch
+       nor branch-1.11, since it is followed up with dummy merges masking all
+       changes.  The merge is made to maintain the sanity of the poor
+       developers, who wishes to once again have a working maint branch.
+
+       Discussion about merging the msvc branch into branch-1.11:
+       http://lists.gnu.org/archive/html/automake/2011-10/msg00030.html
+
+       Discussion about why this merge hasn't happened before:
+       http://lists.gnu.org/archive/html/automake/2011-12/msg00051.html
+
+       Extra edits below.
+
+       * lib/Automake/ChannelDefs.pm: Use the version from branch-1.11.
+       * tests/ar-lib3.test: Likewise.
+       * tests/ar-lib4.test: Likewise.
+       * tests/extra-portability.test: Likewise.
+       * tests/extra-portability2.test: Likewise.
+       * tests/extradep.test: Likewise.
+       * tests/extradep2.test: Likewise.
+       * tests/list-of-tests.mk: Likewise.
+       * HACKING: Backport the version from branch-1.11 while at it (as the
+       change on branch-1.11 is also present on master via an unrelated
+       commit), even though this change has nothing to do with the changes
+       on the msvc branch.
+
+2012-03-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove useless sleep from tests on remake rules
+
+       The sleeps were there to make generated autotools files strictly
+       newer than their sources; however, this is not necessary, since
+       POSIX mandates that make considers files with the same timestamp
+       of their dependencies to be up-to-date.
+
+       * tests/remake9a.test: Remove useless $sleep.
+       * tests/remake9b.test: Likewise.
+       * tests/remake9c.test: Likewise.
+       * tests/remake9d.test: Likewise.
+       * tests/remake10a.test: Likewise.
+       * tests/remake10b.test: Likewise.
+       * tests/remake10c.test: Likewise.
+
+2012-03-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'msvc' into master (dummy merge)
+
+2012-03-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint' into msvc
+
+       * maint:
+         news: describe recently-fixed bug in vala support
+         depcomp: add support for IBM xlc/xlC compilers
+
+2012-03-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge remote-tracking branch 'origin/master'
+
+2012-03-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         news: describe recently-fixed bug in vala support
+         depcomp: add support for IBM xlc/xlC compilers
+
+2012-03-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: describe recently-fixed bug in vala support
+
+       * NEWS (Long-standing bugs): Document fix for bug#10894, fixed
+       by commit 'v1.11-696-g51f61df' of 27-02-2012.
+
+2012-03-06  Michael Hofmannm  <hofma@googlemail.com>  (tiny change)
+
+       depcomp: add support for IBM xlc/xlC compilers
+
+       * lib/depcomp (xlc): New depmode.
+       * NEWS, THANKS: Update.
+
+2012-03-06  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: do not clobber the $CC set by AM_PROG_CC_C_O
+
+       If $CC is originally a losing compiler, AM_PROG_CC_C_O will
+       modify $CC.  "$MAKE -e" will then clobber this modified $CC
+       and reintroduce the raw losing compiler causing the test
+       to fail, as subdir-objects is in effect.
+
+       * tests/yacc-dist-nobuild-subdir.test: Drop -e from the $MAKE
+       invocations.  This is safe since DISTCHECK_CONFIGURE_FLAGS is not
+       specified in the Makefile and since the YACC override is carried
+       over from the configure invocation into the Makefile making it
+       redundant to specifiy it again in the environment for $MAKE.
+
+2012-03-06  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: explicitly state that our lexers do not require unistd.h
+
+       By default, GNU flex generates code that is dependent on unistd.h,
+       which is not portable to non-ANSI systems causing spurious test
+       failures.
+
+       * tests/cond35.test (tscan.l): Define YY_NO_UNISTD_H.
+       * tests/lex-clean.test (lexer.l): Likewise.
+       * tests/lex-depend.test (joe.l): Likewise.
+       * tests/lex-lib-external.test (foo.l): Likewise.
+       * tests/lex-lib.test (foo.l): Likewise.
+       * tests/lex-libobj.test (foo.l): Likewise.
+       * tests/lex-line.test (zardoz.l): Likewise.
+       * tests/lex-nodist.test (lexer.l): Likewise.
+       * tests/lex-noyywrap.test (foo.l): Likewise.
+       * tests/lex-pr204.test (lexer.l): Likewise.
+       * tests/lex-subobj-nodep.test (subl/sl.l): Likewise.
+       * tests/lex3.test (foo.l): Likewise.
+       * tests/lex5.test (foo/foo.l): Likewise.
+       * tests/lexvpath.test (lexer.l): Likewise.
+       * tests/silent-lex.test (foo.l): Likewise.
+       * tests/silent-many-gcc.test (foo5.l): Likewise.
+       * tests/silent-many-generic.test (foo5.l): Likewise.
+       * tests/lex-clean-cxx.test (parsefoo.lxx): Likewise.  Also specify
+       the never-interactive option to prevent usage of the non-ANSI
+       function isatty(3) (from unistd.h).
+       * tests/lex-depend-cxx.test (joe.ll): Likewise.
+       * tests/README: Describe these quirks.
+
+2012-03-06  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'msvc'
+
+       * msvc:
+         scripts: support -I <dir> -L <dir> and -l <lib> for cl in compile
+
+2012-03-06  Peter Rosin  <peda@lysator.liu.se>
+
+       scripts: support -I <dir> -L <dir> and -l <lib> for cl in compile
+
+       POSIX mandates that the compiler accepts a space between the -I,
+       -l and -L options and their respective arguments.  See
+       http://pubs.opengroup.org/onlinepubs/000095399/utilities/c99.html
+
+       * lib/compile (func_cl_dashl): New function with factored out code
+       for implementing the -l option for the cl wrapper.
+       (func_cl_dashL): New function with factored out code implementing
+       the -L option for the cl wrapper.
+       (func_cl_wrapper): Use func_cl_dashl to implement both -l <lib>
+       and -l<lib>, and func_cl_dashL to implement both -L <dir> and
+       -L<dir>.  Also add support for -I <dir>.
+       (scriptversion): Update.
+       * tests/compile3.test: Test both with and without a space between
+       -I, -l and -L and their respective arguments.
+       * tests/compile5.test: Likewise.
+       * tests/compile6.test: Likewise.
+       * tests/compile3.test: Likewise.
+       * NEWS: Update.
+
+2012-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: drop 'Automake::Struct' module
+
+       Now that we require Perl 5.6, we can drop the 'Automake::Struct'
+       module, which was basically just a backport of Perl 5.6's
+       'Class::Struct' to Perl 5.5.
+
+       * automake.in: Use 'Class::Struct', not 'Automake::Struct'.
+       * lib/Automake/Struct.pm: Delete.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Remove it.
+
+2012-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: require perl 5.6 throughout
+
+       That version of perl is quite old already, so it should be OK to
+       require it.  More importantly, it is the older perl versions the
+       developers can currently use for testing, thus it's safer and more
+       honest to just require it throughout.  And anyway, we were already
+       requiring it in Automake::Getopt, which implied that both automake
+       and aclocal wouldn't have worked in practice with an older perl
+       version.
+
+       See also the discussion related to automake bug#10925.
+
+       * lib/Automake/ChannelDefs.pm: Adjusted to require perl 5.6.
+       * lib/Automake/Channels.pm: Likewise.
+       * lib/Automake/Condition.pm: Likewise.
+       * lib/Automake/Configure_ac.pm: Likewise.
+       * lib/Automake/DisjConditions.pm: Likewise.
+       * lib/Automake/FileUtils.pm: Likewise.
+       * lib/Automake/General.pm: Likewise.
+       * lib/Automake/Item.pm: Likewise.
+       * lib/Automake/ItemDef.pm: Likewise.
+       * lib/Automake/Location.pm: Likewise.
+       * lib/Automake/Options.pm: Likewise.
+       * lib/Automake/Rule.pm: Likewise.
+       * lib/Automake/RuleDef.pm: Likewise.
+       * lib/Automake/Struct.pm: Likewise.
+       * lib/Automake/VarDef.pm: Likewise.
+       * lib/Automake/Variable.pm: Likewise.
+       * lib/Automake/Version.pm: Likewise.
+       * lib/Automake/Wrap.pm: Likewise.
+       * lib/Automake/XFile.pm: Likewise.
+
+2012-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: remove useless escaping for "'" character
+
+2012-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: remove redundant and unused requirements
+
+       * tests/defs (xsi-bin-sh, xsi-shell): Remove these requirements,
+       they have never been used.
+       (cygpath, cscope): Recognizing these explicitly is mostly redundant;
+       just merge them with the default "catch all" rule, and adjust that
+       accordingly.
+       (bzip2): Adjust some outdated comments.
+
+2012-03-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure on case-insensitive file systems
+
+       See automake bug#10866.
+
+       * tests/java-uninstall.test: Relax the test a little to cater to
+       case-insensitive file systems, like HFS+ on MacOS X.
+
+2012-03-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: more about planned backward incompatibilities
+
+       * NEWS (Future backward-incompatibilities): Starting from the next
+       major Automake versions, the parallel testsuite driver will be used
+       by default, instead of the serial testsuite driver as in the past.
+
+2012-03-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix few spurious failures
+
+       * syntax-checks.mk: Fix some spurious failures by tightening and/or
+       tweaking few checks so that some false positives end up whitelisted.
+
+2012-03-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure due to exported MAKEINFO
+
+       * tests/txinfo30.test: Unset variable MAKEINFO, as its content could
+       take precedence over our faked makeinfo script and cause a spurious
+       failure.  Reported as part of automake bug#10866.  Add trailing ':'
+       command since we are at it.
+
+2012-03-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in a vala test
+
+       * tests/vala-mix2.test: Append to 'configure.ac' rather than to
+       'configure.in'.  Reported as part of automake bug#10866, and also
+       revealed by "make maintainer-check".
+
+2012-03-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self checks: relax tests on cleanup
+
+       Some find(1) implementations have problems operating recursively on
+       directories having subdirectories with null permissions, even when
+       the permissions of such subdirectory should be fixed by find before
+       it descends into them; for example, with this setup:
+
+         % mkdir a a/b
+         % chmod 000 a/b
+
+       a command like this:
+
+         % find a -type d ! -perm -700 -exec chmod u+rwx '{}' ';'
+
+       fails with this diagnostic on MacOS X 10.7:
+
+         find: a/b: Permission denied
+
+       and with this diagnostic on Solaris 10:
+
+         find: cannot read dir a/b: Permission denied
+
+       The problem is that our self checks were simply demanding too much
+       from our cleanup trap: our tests never use subdirectories with null
+       permissions, so it doesn't matter if the cleanup trap fails to
+       handle those.  Just relax the self checks to avoid such useless
+       testsuite noise.
+
+       * tests/self-check-cleanup.tap: Only try directories missing
+       write permissions, not with null permission.  That should be
+       enough for our usages.
+
+2012-03-02  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'msvc'
+
+       * msvc:
+         news: add entry about recent 'ar-lib' changes
+
+2012-03-02  Peter Rosin  <peda@lysator.liu.se>
+
+       news: add entry about recent 'ar-lib' changes
+
+       * NEWS: Add information about recent 'ar-lib' changes.
+
+2012-03-02  Peter Rosin  <peda@lysator.liu.se>
+
+       scripts: recognize the "q", "s" and "S" actions/modifiers in ar-lib
+
+       * lib/ar-lib: Implement the "q" (quick) action as a synonym
+       for "r" (replace).  Ignore "s" (symbol index) and "S" (no symbol
+       index) when used as modifiers and "s" when used as a command,
+       there is simply no way for Microsoft lib to not update the
+       symbol table index in the archive.
+       (scriptversion): Update.
+       * tests/ar-lib.test: Check the added behavior.  Also add checks
+       for the recently added "u" (update) and "v" (verbose) modifiers.
+
+2012-03-02  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'fix-vala-test'
+
+       * fix-vala-test:
+         tests: fix (harmless) botched merge
+
+2012-03-02  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: fix (harmless) botched merge
+
+       Commit v1.11-1750-g9928ea5 of 2012-01-16 (Merge branch 'maint')
+       reordered the macro calls so that AM_PROG_AR ended up after
+       AC_PROG_LIBTOOL, which is not allowed.  This error went by
+       undetected since AC_PROG_LIBTOOL was redefined, but that also
+       removed the ordering requirement making the error benign.
+
+       * tests/vala.test: Put AM_PROG_AR before AC_PROG_LIBTOOL.
+
+2012-03-02  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'maint' into msvc
+
+2012-03-01  Peter Rosin  <peda@lysator.liu.se>
+
+       scripts: recognize the "q", "s" and "S" actions/modifiers in ar-lib
+
+       * lib/ar-lib: Implement the "q" (quick) action as a synonym
+       for "r" (replace).  Ignore "s" (symbol index) and "S" (no symbol
+       index) when used as modifiers and "s" when used as a command,
+       there is simply no way for Microsoft lib to not update the
+       symbol table index in the archive.
+       (scriptversion): Update.
+       * tests/ar-lib.test: Check the added behavior.  Also add checks
+       for the recently added "u" (update) and "v" (verbose) modifiers.
+
+2012-02-29  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: do not try to use ar(1) when $AR points to something else
+
+       * tests/libobj10.test: Move the archive listing commands to the
+       Makefile, so that $AR - as determined by configure - can be
+       used.
+       * tests/libobj17.test: Likewise.
+
+2012-02-29  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: make tests behave for the AR=lib case
+
+       These below tests were left mostly as-is when AM_PROG_AR was
+       introduced (with libobj16b being the exception, that test was
+       forgotten or has regressed since), in a misguided attempt to
+       not make them diverge from the original problem reports.
+
+       Modernize them so that they do not FAIL when $AR is Microsoft
+       'lib'.
+
+       * tests/libobj16b.test: Add AM_PROG_AR to configure.ac and remove
+       the no-longer-needed -Wno-extra-portability option when invoking
+       automake.
+       * tests/pr300-lib.test: Likewise.
+       * tests/pr300-ltlib.test: Likewise.
+       * tests/pr307.test: Likewise.
+       * tests/pr401.test: Likewise.  Also fetch the 'ar-lib' script.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+
+2012-02-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         vala: fix 'valac' calls for projects with mixed Vala/C
+         vala: expose automake bug#10894
+
+2012-02-29  Dave Goodell  <goodell@mcs.anl.gov>  (tiny change)
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with Portland Compilers
+
+       * tests/silent-many-generic.test (configure.ac): Be more careful
+       in the workaround to avoid spurious failures with C++ compilers
+       containing the string "CC" in their names; this avoids spurious
+       failures with at least the Sun Studio C++ compiler (when named
+       "sunCC") and the Portland Group C++ Compiler ("pgCC").
+       Also handle arguments with whitespace correctly in the 'am--cxx'
+       temporary wrapper.
+       * THANKS: Update.
+
+2012-02-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure when dependency tracking is unavailable
+
+       Report by Dave Goodell.  See automake bug#8880.
+
+       * tests/yacc-dist-nobuild.test: Run the sanity check that aims at
+       ensuring we really cover the expected code paths in a new build
+       directory, to avoid spurious failures when automatic dependency
+       tracking is disabled.
+
+2012-02-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: fix 'valac' calls for projects with mixed Vala/C
+
+       Fixes automake bug#10894.
+
+       * automake.in (lang_vala_finish_target): Strip non-vala files
+       from the dependencies of vala stamps, and from the invocation
+       of valac compiler.  Related refactorings.
+       * tests/Makefile.am (XFAIL_TESTS): Remove 'vala-mix2.test'.
+
+2012-02-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: expose automake bug#10894
+
+       * tests/vala-mix2.test: New test.
+       * tests/list-of-tests.mk: Add it.
+       * tests/Makefile.am (XFAIL_TESTS): Likewise.
+       * THANKS: Update.
+
+2012-02-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: remove a duplicated copyright line
+
+       * tests/list-of-tests.mk: Remove a duplicated copyright line.
+
+2012-02-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: --program-transform shouldn't transform too much
+
+       Stemmed from a report by Vladimir 'φ-coder/phcoder' Serbinenko:
+       <http://lists.gnu.org/archive/html/automake/2012-02/msg00025.html>
+
+       * tests/transform3.test: New test, checking that --program-transform
+       does not transform too much stuff (in particular, pkglibexecdir,
+       pgklibdir and pkgdatadir).
+       * tests/list-of-tests.mk: Add it.
+       * THANKS: Update.
+
+2012-02-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure (line too long in awk)
+
+       * tests/parallel-tests-many.test: Use perl, not awk, to write the
+       Makefile.am with (deliberately) overly long TESTS content, as some
+       inferior awk implementations (e.g., Solaris 10 /usr/bin/awk) are
+       unable to handle the long lines used there and die with errors like:
+       "awk: string too long near line 5".
+
+2012-02-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failures when awk is "traditional awk"
+
+       * tests/Makefile.am (do_subst): Also substitute '@AWK@'.
+       * tests/defs-static.in ($AWK): New, user-overridable and defaulting
+       to the substituted '@AWK@'.
+       * tests/defs (fetch_tap_driver): When the shell+awk implementation
+       of the TAP driver is required, export AM_TAP_AWK to point to a
+       properly capable awk, since the default awk might be a "traditional"
+       implementation, which won't be enough for our driver.  This is the
+       right fix, since a proper setting of AM_TAP_AWK in the driver's
+       environment is expected (and documented to be required) in real
+       world uses of 'tap-driver.sh'.
+
+2012-02-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid many spurious failures for shells with busted 'set -e'
+
+       Some versions of the BSD Korn shell wrongly bail out when the
+       'errexit' shell flag is active and the left-hand command in a
+       "&&" list fails and that list is the *last* command of an entry
+       in a "case" statement.
+
+       * tests/defs (gcc, g++, gcj): Work around that.
+
+2012-02-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: don't create /usr/share/aclocal as empty
+
+       Related to automake bug#10791.
+
+       Since automake 1.11.2, aclocal no longer succeeds if the system
+       acdir '${datadir}/aclocal' (i.e., "/usr/share/aclocal" when
+       ${prefix} is "/usr") does not exist.  So we now have a directory
+       *installed empty by default*, but whose existence is required by
+       aclocal in order for it to function at all.  This might be
+       confusing, and sounds like asking for trouble in the long term.
+
+       So we now also install a simple README file in that directory,
+       which briefly explains its purpose and warn that its existence
+       is required by the normal aclocal functioning.
+
+       * m4/acdir/README: New file.
+       * m4/Makefile.am (dist_system_ac_DATA): Add it.
+       * m4/acdir/.placeholder: Delete, no more needed.
+       * m4/Makefile.am (EXTRA_DIST): Remove it.
+       * THANKS: Update.
+
+2012-02-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: document format for git commit messages
+
+       * HACKING (Writing a good commit message): New section.
+       (Working with git): A related minor adjustment.
+
+2012-02-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: improve 'dist-hook' documentation
+
+       * doc/automake.texi (The dist Hook): Explicitly document the fact
+       that the dist-hook should account for the case where the source
+       tree is read-only, mostly for the benefit of distcheck.  Since
+       we are at it, do some minor unrelated rewordings, and remove
+       obsolescent advice.  Motivated by the discussion on automake
+       bug#10878.
+       * tests/disthook.test: New test.
+       * tests/disthook-perms.test: Delete as obsolete.
+       * tests/list-of-tests.mk: Adjust.
+
+2012-02-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: improve "make distcheck" documentation
+
+       * doc/automake.texi (Checking the Distribution): The fact that
+       "make distcheck" uses a read-only srcdir wasn't documented clearly
+       enough here.  Fix that.  Since we are at it, be more explicit
+       about the steps undertaken by "make distcheck", and re-organize
+       this section a bit.  Motivated by the discussion on automake
+       bug#10878.
+       (distcleancheck): Rename this node (in the "FAQ" section) ...
+       (Errors with distclean): ... to this.
+       Add a proper "FIXME" comment.
+
+2012-02-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: proper capitalization and full stops in 'm4/depend.m4'
+
+2012-02-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: dist-hook and distcheck-hook can modify file permission
+
+       See automake bug#10878.
+
+       * tests/dist-hook-perms.test: New test, checking that the user can
+       use the 'dist-hook' target to modify permissions of distributed
+       files before putting them in the distribution tarball.
+       * tests/distcheck-writable-srcdir.test: New test, checking that the
+       user can use 'distcheck-hook' to ensure his packages is built by
+       "make distcheck" with a writable srcdir.  This goes against the GNU
+       Coding Standards, but some package authors might not care about
+       them too much, and it's nice to support their use case too.
+       * tests/list-of-tests.mk: Add them.
+
+2012-02-25  Jim Meyering  <meyering@redhat.com>
+
+       tests: avoid spurious failure when gcj is not installed
+
+       Since yesterday's commit, v1.11-2019-g4d2bf42,
+       the gcj4 test would fail when gcj is not installed.
+
+       * tests/defs-static.in (GNU_GCJ, GNU_GCJFLAGS): Define.
+       * tests/Makefile.am (do_subust): Add those to the list of
+       substituted symbols.
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: look for GNU Java compiler at configure time
+
+       Do this for consistency with what is done with other compilers.
+
+       * configure.ac: Look for GNU java compiler at configure time.
+       * tests/defs (gcj): Adjust and simplify.
+       ($am__tool_prefix): Remove definition, it's not used anymore.
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       refactor: in Automake::Options (no semantic change)
+
+       * lib/Automake/Options.pm: Prefer leading spaces to leading tabs
+       throughout.  Minor whitespace and comment changes.
+       (_process_option_list): Simple refactoring to make the code more
+       pleasant to read and easier to modify in the future.  This
+       refactoring also reduces code duplication, with the help of ...
+       (_option_must_be_from_configure, _is_valid_easy_option): ... these
+       new internal subroutines.
+       * tests/tar3.test: Enhance.
+       * tests/silent-amopts.test: New, checks that automake complains if
+       the 'silent-rules' option is used in AUTOMAKE_OPTIONS.
+       * tests/list-of-tests.mk: Add it.
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: typofixes and whitespace changes
+
+       * configure.ac: Fix a typo in comments.
+       * aclocal.in: Get rid of latest form-feed (^L) usages.
+       * automake.in: Likewise.
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: looks for GNU compilers at configure time
+
+       This way, if the generic C compiler determined configure time is
+       recognized to be the GNU C compiler, we can reuse it instead of
+       looking for a compiler named "gcc" (over and over again) in the
+       test scripts requiring the GNU C compiler.  Ditto for the C++,
+       Fortran, and Fortran 77 compilers.
+
+       This change will improve coverage by allowing us to more easily
+       use non-default GNU compilers throughout the testsuite.
+
+       And as a bonus, this change also removes a weakness from our
+       testsuite that could cause spurious failures when flags passed
+       to the generic compilers were erroneously reused for the GNU
+       compilers; see automake bug#10859.
+
+       * configure.ac: Look for the GNU compilers explicitly.  Improve
+       some configure output and diagnostic since we are at it.
+       * tests/defs-static.in ($GNU_CC, $GNU_CXX, $GNU_FC, $GNU_F77):
+       Initialize with the values determined at configure time (while
+       allowing user overrides).
+       * tests/Makefile.am (do_edit): Also substitute the configure-time
+       values of GNU_CC, GNU_CXX, GNU_FC and GNU_F77.
+       * tests/defs (gcc, g++, gfortran, g77): Use the values for the GNU
+       compilers determined at configure time (i.e., $GNU_CC for the GNU
+       C compiler, and so on).
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs, news: document planned removal of obsolete macros and features
+
+       * NEWS (Future backward-incompatibilities): Document planned removal
+       of several superseded and/or obsoleted macros, of the $(mkdir_p)
+       variable and @mkdir_p@ substitution, and of the support for the
+       two- or three-arguments invocation forms of AM_INIT_AUTOMAKE.
+       * doc/automake.texi: Likewise.
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: remove reference to lzma support, it has been removed
+
+       Support for lzma compression in distribution tarball has been
+       removed in commit 'v1.11-1674-g02e9072' of 01-01-2012, "dist:
+       remove support for lzma (superseded by xz and lzip)", but was
+       still documented in the manual.
+
+       * doc/automake.texi: Remove references to the 'dist-lzma' option
+       and to the lzma compression support.
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fixlet in comment in automake
+
+       * automake.in ($configure_dist_common): In the associated comment,
+       refer to scanning of 'configure.ac', not 'configure.in'.
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: assume 'test -x' is portable
+
+       * lib/Makefile.am (installcheck-local): To verify that the installed
+       scripts are actually executable, simply use 'test -x', instead of
+       resorting to perl and its '-x' file operator.  Today, 'test -x'
+       should today be portable to any non-museum system.  Since we are at
+       it, improve diagnostic in case of failure.
+
+2012-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       deptrack: avoid few forks in configure (minor optimization)
+
+       * m4/depend.m4 (_AM_DEPENDENCIES): Use 'echo > file' instead of
+       'touch file' to ensure the creation of a dummy file.  Adjust the
+       comment that explains why we can't simply use ': > file': the
+       problem this latter idiom tickles is present also with Solaris 10
+       /bin/sh, not merely with Solaris 8 /bin/sh.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: remove an obsolete check
+
+       * syntax-checks.mk (sc_perl_local_no_parens): Remove, we don't even
+       allow the use of local but for the '$_' and '$~' special variables.
+       (syntax_check_rules): Adjust.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: update w.r.t. change in quoting format
+
+       * NEWS (New in 1.11.1a): State that we prefer to quote 'like this'
+       or "like this" rather than `like this', as according to the new GCS
+       recommendations.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: do not quote `like this', as per GCS recommendation
+
+       * automake.in: Convert comments, diagnostic and help screen to the
+       use of new quoting format 'like this' or "like this" rather than
+       `like this'.
+       * tests/stdlib2.test: Adjust.
+       * tests/ltinstloc.test: Likewise.
+       * tests/location.test: Likewise.
+       * tests/libtool8.test: Likewise.
+       * tests/ldadd.test: Likewise, and prefer trailing ':' over trailing
+       'Exit 0'.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: do not quote `like this', as per GCS recommendation
+
+       * aclocal.in: Convert comments, diagnostic and help screen
+       to the use of new quoting format 'like this' or "like this"
+       rather than `like this'.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       pm: do not quote `like this', as per GCS recommendation
+
+       This patch converts the internal perl modules used by automake and
+       aclocal to the use of new quoting format 'like this' or "like this"
+       rather than `like this'.
+
+       * lib/Automake/ChannelDefs.pm, lib/Automake/Channels.pm,
+       lib/Automake/Condition.pm, lib/Automake/Configure_ac.pm,
+       lib/Automake/DisjConditions.pm, lib/Automake/FileUtils.pm,
+       lib/Automake/General.pm, lib/Automake/Item.pm,
+       lib/Automake/Rule.pm, lib/Automake/Getopt.pm,
+       lib/Automake/Options.pm, lib/Automake/Struct.pm,
+       lib/Automake/VarDef.pm, lib/Automake/Variable.pm,
+       lib/Automake/Version.pm, lib/Automake/XFile.pm: Update and
+       adjust quoting format throughout, in comments and diagnostic.
+       Some minor related rewordings and reformatting since we are
+       at it.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       m4: do not quote `like this', as per GCS recommendation
+
+       This patch converts the files comprising the automake's own build
+       system to the use of new quoting format 'like this' or "like this"
+       rather than `like this'.
+
+       * m4/auxdir.m4, m4/ccstdc.m4, m4/depend.m4, m4/depout.m4, m4/tar.m4,
+       m4/init.m4, m4/maintainer.m4, m4/make.m4, m4/missing.m4, m4/vala.m4,
+       m4/mkdirp.m4, m4/sanity.m4, m4/silent.m4, m4/strip.m4: Update and
+       adjust quoting format throughout, in comments and diagnostic.  Some
+       minor related rewordings and reformatting since we are at it.  Bump
+       serial numbers.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: do not quote `like this', as per GCS recommendation
+
+       This patch converts the files implementing the automake's own build
+       system to the use of new quoting format 'like this' or "like this"
+       rather than `like this'.
+
+       * bootstrap, configure.ac, syntax-checks.mk, Makefile.am,
+       lib/Makefile.am, m4/Makefile.am, syntax-checks.mk: Update quoting
+       format throughout, in comments and diagnostic.  Some minor related
+       rewordings and reformatting since we are at it.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: update advice w.r.t. release process
+
+       * HACKING: Don't describe the obsolete 'git-release' target anymore.
+       Instead, document the new and improved targets 'git-tag-release' and
+       'git-upload-release' (introduced in commit v1.11-674-gaf5f939 of
+       25-01-2012, "release: revamp rules to tag and upload the releases").
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: do not quote `like this', as per GCS recommendation
+
+       * HACKING: Quote 'like this' or "like this", not `like this'.  This
+       is done for consistency with the new recommendations in the GNU
+       Coding Standards, and because I've come to actually prefer the '...'
+       and "..." quoting format over the `...' one.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       am: do not quote `like this', as per GCS recommendation
+
+       This patch converts the automake-provided '*.am' fragments, and
+       related files, to the use of new quoting format 'like this' or
+       "like this" rather than `like this'.
+
+       * lib/am/check.am: Update quoting format throughout, in comments
+       and diagnostic.  Some related rewordings, reformatting, and removal
+       of redundant commands since we are at it.
+       * lib/am/configure.am: Likewise.
+       * lib/am/dejagnu.am: Likewise.
+       * lib/am/depend2.am: Likewise.
+       * lib/am/distdir.am: Likewise.
+       * lib/am/inst-vars.am: Likewise.
+       * lib/am/install.am: Likewise.
+       * lib/am/lang-compile.am: Likewise.
+       * lib/am/lisp.am: Likewise.
+       * lib/am/ltlib.am: Likewise.
+       * lib/am/mans.am: Likewise.
+       * lib/am/progs.am: Likewise.
+       * lib/am/remake-hdr.am: Likewise.
+       * lib/am/subdirs.am: Likewise.
+       * lib/am/tags.am: Likewise.
+       * lib/am/texi-vers.am: Likewise.
+       * lib/am/texibuild.am: Likewise.
+       * lib/am/texinfos.am: Likewise.
+       * lib/am/yacc.am: Likewise.
+
+2012-02-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: quote 'like this', not `like this', as per GCS recommendation
+
+       This patch converts the automake testsuite and related files, to
+       the use of new quoting format 'like this' or "like this" rather
+       than `like this'.
+
+       This is done for consistency with the new recommendations in the GNU
+       Coding Standards, and, well, because I've come to actually prefer
+       the '...' and "..." quoting formats over the `...' one.
+
+       * tests/README: Update quoting format throughout.  Remove some
+       "excessive" use of quoting, and throw in minor rewording where
+       appropriate.
+       * tests/Makefile.am: Likewise, for comments.
+       * tests/CheckListOfTests.am: Likewise.
+       * tests/defs-static.in: Likewise.
+       * tests/defs: Likewise.
+       * tests/trivial-test-driver: Likewise.
+       * Many tests/*.tap, tests/*.test and tests/*.sh files: Likewise,
+       and for the diagnostic and informational messages as well.
+       * tests/gen-testsuite-part: Likewise, and for the generated tests
+       as well.
+
+2012-02-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       spy: "rm -f" and "rm -rf" without args are portable
+
+       According to recent testing by Eric Blake, it seems that all
+       non-museum rm(1) implementations don't complain if called without
+       file operands, *if* the '-f' option is used.  This behaviour will
+       likely be mandated by future versions of the POSIX standard as
+       well.
+
+       We'd like to start assuming this rm(1) behaviour in future Automake
+       releases, in order to simplify some automake-provided cleanup rules.
+       So, for the moment, we add a new "spy" test in our test suite, to
+       try ensuring that all the rm(1) implementation we encounter "in the
+       wild" truly behaves as expected in this regard.
+
+       For more references, see this discussion on the bug-autoconf list:
+        <http://lists.gnu.org/archive/html/bug-autoconf/2012-02/msg00002.html>
+       which sprang from coreutils bug#10819:
+        <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10819>
+       and brought to the POSIX issue#542:
+        <http://austingroupbugs.net/view.php?id=542>
+       which has been accepted and will ensure that future version of the
+       POSIX standards will mandate that 'rm' shouldn't complain if called
+       without file operands, when the '-f' option is in use.
+
+       * tests/spy-rm.test: New test.
+       * tests/list-of-tests.mk: Add it.
+
+2012-02-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failures under "make distcheck"
+
+       * tests/tap-setup.sh: Pass also '-f' option to 'cp' invocations,
+       so that files that have already been copied in without write
+       permissions will still be overwritten where needed, instead of
+       causing a spurious testsuite failure.  Issue seen when the
+       testsuite is run under "distcheck".
+       * tests/defs (get_shell_script): Remove target file before
+       overwriting it, for the same reason.  Rework code flow a bit
+       since we are at it.
+
+2012-02-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: avoid spurious failure for 'parallel-tests-many.test'
+
+       * tests/parallel-tests-many.test: Adjust grepping of "make check"
+       and "make recheck" output to match the new format of the testsuite
+       summary.  Remove redundant 'set -e' call since we are at it.
+
+2012-02-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: prefer 'configure.ac' over 'configure.in'
+
+       With this change, our testsuite now uses 'configure.ac' as the
+       name for the typical autoconf input, instead of the obsolescent
+       'configure.in' (which has been deprecated for several years, at
+       least since autoconf 2.50).
+
+       Most of the test cases changed by this commit have been
+       automatically modified with this sed command (using GNU
+       sed):
+
+         sed -i 's/\<configure\(\\\?\)\.in\>/configure\1.ac/g'
+
+       * syntax-checks.mk (sc_tests_no_configure_in): New syntax check.
+       (syntax_check_rules): Add it.
+       * tests/defs: Create stub for autoconf input in 'configure.ac',
+       not in 'configure.in'.  Adjust comments.
+       ($AUTOCONF, $AUTOHEADER, $AUTORECONF): Remove workaround for the
+       infamous debian autoconf wrapper: we don't need such workaround
+       anymore now that we name our autoconf input as 'configure.ac'.
+       For more information, see commit v1.11-564-g63da492 "test defs:
+       hack to support autoconf-wrapper programs" of 16-12-2011.
+       * tests/README: Use 'configure.ac', not 'configure.in'.
+       * Many many tests: Likewise.
+       * tests/backcompat3.test: Adjust to avoid spurious failures.
+       * tests/backcompat5.test: Likewise.
+       * tests/missing6.test: Likewise.
+       * tests/backcompat6.test: Likewise, and extend a bit since we
+       are at it.
+
+2012-02-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: expose automake bug#7868
+
+       Expose the command-line length limit issue that can affect the
+       Automake-generated parallel-tests harness, especially on systems
+       where this limit is smaller (e.g., MinGW/MSYS).
+
+       Suggestion by Bob Friesenhahn.
+
+       * tests/parallel-tests-many.test: New test.  We have verified that
+       it actually exposes the bug#7868, as it passes when we opportunely
+       reduce the number of test cases in $(TESTS).  Checked on NetBSD 5.1
+       64bit, Debian unstable 32bit, Solaris 10 64bit and Cygwin 1.5 32bit.
+       * tests/list-of-tests.mk (handwritten_TESTS): Add it.
+       * tests/Makefile.am (XFAIL_TESTS): Likewise.
+
+2012-02-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove obsoleted "icc" requirement
+
+       * tests/defs (icc): This requirement is not used anymore by any
+       test case, so remove it.
+
+2012-02-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       readme: fix typo in tests/README
+
+2012-02-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: "make installcheck" shouldn't run the testsuite twice
+
+       * Makefile.am (installcheck-local): Remove.  The "installcheck"
+       target provided by automake is already a recursive target, so
+       there's no need to have an 'installcheck-local' recipe that
+       manually recurse into 'tests/'.  In fact, such a manual recursion
+       was causing the testsuite to be run twice by "make installcheck".
+
+2012-02-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: minor fixlets and reorganization
+
+       * NEWS: Get rid of form-feed characters (^L) throughout the file.
+       Use separator lines instead (composed by 76 '~' characters), or
+       just an extra blank lines for older less verbose entries (those
+       predating the 1.8 release).
+       (New in 1.11.3): Move description of planned future backward
+       incompatibilities that won't make it to 1.12 ...
+       (New in 1.11a): ... in here.  Quote 'like this', not `like this'.
+       Other minor miscellaneous rewordings and fixlets.
+
+2012-02-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: few typofixes
+
+2012-02-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: new option 'serial-tests'
+
+       Currently, automake offers a 'parallel-tests' option to enable the
+       use of the parallel testsuite harness in the generated Makefiles,
+       but no option to explicitly state the intention of using the older
+       serial testsuite driver (which is currently the default).
+
+       This makes the parallel test harness seems like a second-class
+       citizen (while actually it should be the other way around); more
+       importantly, it will prevent us from making the parallel harness
+       be the default one in future automake versions, since the users
+       of the serial harness would then have no way to instruct automake
+       to continue using it.
+
+       We solve all of this by introducing a new 'serial-tests' option.
+
+       * lib/Automake/Options.pm (_process_option_list): Recognize the
+       new option, and related minor refactoring.
+       * tests/serial-tests.test: New test.
+       * tests/list-of-tests.mk: Add it.
+       * doc/automake.texi: Update.
+       * NEWS: Likewise.
+
+2012-02-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix a timestamp issue, and other minor buglets
+
+       Reported by Panther Martin in automake bug#10848.
+
+       * tests/conffile-leading-dot.test: Add a proper '$sleep' invocation,
+       to avoid spurious failures on fast systems without sub-second
+       timestamp resolutions.  Add other minor related and unrelated
+       improvements and fixlets since we are at it.
+
+2012-02-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: new option to print location of scripts and data files
+
+       With this change, we add a new automake option '--print-libdir'
+       that prints (on stdout) the path of the directory containing the
+       Automake-provided scripts (e.g., 'missing' and 'install-sh') and
+       data files (e.g., INSTALL or texinfo.tex).
+
+       Suggestion by Nick Bowler.  See also automake bug#10473.
+
+       * automake.in (parse_arguments): Handle the new option.
+       (usage): Mention it.
+       * doc/automake.texi (automake Invocation): Document it.
+       * NEWS: Update.
+       * tests/print-dir.test: New test.
+       * tests/list-of-tests.mk: Add it.
+
+2012-02-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: prefer the awk+sh TAP driver over the perl one
+
+       We had completed our shell+awk implementation of the TAP driver
+       months ago, but never documented it in the manual, continuing to
+       document only the "prototype" written in perl instead.  Time to
+       fix this, before the 1.12 release.
+
+       * doc/automake.texi (Use TAP with the Automake test harness): Now
+       we document the use of the awk+shell implementation of our TAP
+       driver, rather than of the perl one.
+       * tests/tap-doc2.test: Adjust to use the shell+awk implementation
+       of the TAP driver.
+
+2012-02-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: be stricter in determining whether "make -jN" works
+
+       * tests/parallel-tests3.test: With at least Solaris 10 CCS make,
+       "make -jN" does not fail, but merely prints a warning about
+       "DistributedMake -j option" being ignored.  This was causing this
+       test case to fail spuriously.  So we now use a stricter check in
+       determining whether make works in parallel mode.  Since we are at
+       it, we try to cater also to Sun Distributed make, which understands
+       "-j N" but *not* "-jN".
+
+2012-02-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: don't trust exit status of "make -k"
+
+       * tests/parallel-tests-extra-programs.test: Unless $MAKE is GNU
+       make, don't trust the exit status of "$MAKE -k".  Fixes a spurious
+       failure with OpenBSD 5.0 make and NetBSD 5.1 make.
+
+2012-02-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix race condition in 'self-check-dir.tap'
+
+       * tests/self-check-dir.tap (do_check): Don't fail if "ls -l" fails.
+
+2012-02-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: fix another BSD parallel make issue
+
+       When BSD make is run in parallel mode, it apparently strips any
+       leading directory component from the automatic variable '$*' (of
+       course, against what POSIX mandates).  This was causing FreeBSD 9.0
+       make and NetBSD 5.1 make to spuriously fail with automake-generated
+       test harnesses if subdir tests were present *and* make was being
+       run in parallel mode.  This issue affected also the Automake own
+       testsuite.
+
+       * lib/am/check2.am (am__set_b): New internal variable.
+       (%OBJ%, %EXT%.log, %EXT%$(EXEEXT).log): Use it to work around
+       the described BSD make issue.
+       * tests/parallel-tests3.test: Enhanced to expose the bug.
+       * tests/parallel-tests-subdir.test: Enhance a little, since we
+       are at it.
+       * NEWS: Update.
+
+2012-02-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid FreeBSD make VPATH issues in more tests (see bug#7884)
+
+       See also similar change 'v1.11-755-g818bc40' of 07-02-2012,
+       "tests: work around bug#7884 in many yacc/lex tests".  The
+       rationale for this change is basically the same.
+
+       * tests/lex-lib-external.test: Use "yl_distcheck" instead of
+       bare "$MAKE distcheck" to avoid extra failures caused by
+       automake bug#7884.
+       * tests/lex-noyywrap.test: Likewise.
+       * tests/lex-libobj.test: Likewise.
+       * tests/man6.test: This test suffers from the same FreeBSD make
+       incompatibility in VPATH handling that is the source of automake
+       bug#7884.  Since this is caused by rules that are defined in the
+       Makefile.am by the test itself, rather that being generated by
+       automake, the best thing to do is to skip this test if we detect
+       the presence of said make incompatibility (through the function
+       'useless_vpath_rebuild').
+       * tests/man8.test: Likewise.
+
+2012-02-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: remove extra trailing whitespace in configure.ac
+
+2012-02-18  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'yacc-quote-fix'
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure with FreeBSD make
+
+       * tests/parallel-tests-extra-programs.test: FreeBSD make seems to
+       write (some) diagnostic messages on stdout instead than on stderr,
+       so now we also grep the stdout for the expected make diagnostic.
+
+2012-02-17  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: fix broken quoting in the generated yacc grammar
+
+       Fixes problem introduced by v1.11-1912-ge0906b7 "tests: avoid
+       spurious failure with non-bison yacc" from 12-02-2012.
+
+       * tests/suffix10.tap (Makefile.am): Avoid outer single quotes
+       when we need to produce single quotes.
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: always use correct path for automake/aclocal wrappers
+
+       Otherwise, bootstrapping from a git checkout won't work anymore.
+       Issue introduced in today's commit 'v1.11-1974-ga98e58f'.
+
+       * doc/Makefile.am ($(srcdir)/amhello-1.0.tar.gz): Export PATH in a
+       way that makes the automake and aclocal wrappers truly accessible
+       (the location of this wrappers has been modified in a recent commit,
+       but this makefile hadn't been updated accordingly).
+       (update_mans): Likewise.
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in VPATH build
+
+       * tests/self-check-dir.tap: Adjust to handle running in a VPATH
+       build correctly.
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix many spurious failures in VPATH builds
+
+       The 'is' helper script, used by some test cases since commit
+       'v1.11-1830-g96401cb' of 08-02-2012, "tests: better way to compare
+       lists in Makefile rules", is not available in VPATH builds, since
+       it resides in $(srcdir), nor in $(builddir), and only $(builddir)
+       is added to $PATH in the test script.  This was causing spurious
+       failures.
+
+       Solve this issue by re-organizing a bit the layout and placing of
+       wrapper and help scripts used by the testsuite.  This reorganization
+       is by no mean complete, but should be enough to solve the VPATH
+       issues.
+
+       * tests/is: Moved ...
+       * tests/ax/is: ... here
+       * tests/automake.in: Moved ...
+       * tests/wrap/automake.in: ... here.
+       * tests/aclocal.in: Moved ...
+       * tests/wrap/aclocal.in: ... here.
+       * tests/defs-static.in ($am_bindir, $PATH): Adjust.
+       * configure.ac (AC_CONFIG_FILES): Likewise.
+       * tests/Makefile.am (EXTRA_DIST, check_SCRIPTS): Likewise.
+       * tests/get-sysconf.test: Likewise.
+       * .gitignore: Likewise.
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: relax a test to cater to NetBSD make
+
+       * tests/parallel-tests-empty-testlogs.test: When $(TESTS) is empty,
+       NetBSD 5.1 make ends up defining $(TESTS_LOGS) to ".log" rather than
+       to the empty string (as would be expected).  This behaviour was
+       causing a check in this test case to fail.  But that check was in
+       fact overly strict, since our recipes are smart enough to work
+       around the botched-up substitution.  Also, the failure wasn't a
+       regression from Automake 1.11, since that version too would have
+       triggered the same error with NetBSD 5.1 make.  So we just relax
+       the test a little to avoid extra noise in the testsuite.
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         dryrun: $(am__dry_run) not confused by metachars in $(MAKEFLAGS)
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dryrun: $(am__dry_run) not confused by metachars in $(MAKEFLAGS)
+
+       * lib/am/header-vars.am (am__make_dryrun): Be smarter and more
+       correct in handling shell metacharacters in $(MAKEFLAGS).
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: TAP-based tests should error if no plan was specified
+
+       After this change, it will still be OK for TAP-based tests not to
+       report any explicit TAP plan -- but they should state *explicitly*
+       that they want to do so, by calling the 'plan_' function with a
+       proper argument (currently, either "later" or "unknonwn").
+
+       Motivated by a recent issue introduced by yesterday's commit
+       'v1.11-1959-g0699a84' (pointed out by Peter Rosin, and fixed
+       by follow-up commit 'v1.11-1961-gea44190').
+
+       * tests/tap-functions.sh (plan_): Get rid of '$have_tap_plan_',
+       and refactor use and initialization of '$planned_' in a way that
+       will allow client script to get more information on which kind
+       of plan (if any) has been declared by the former 'plan_' invocation.
+       (skip_all_): Adjust.
+       * tests/defs (exit trap): Only print the "lazy" TAP plan if 'plan_'
+       has requested that *explicitly*.
+       * syntax-check.mk (sc_tests_tap_plan): Remove: it's obsolete now,
+       since a TAP-based test that doesn't call 'plan_' explicitly won't
+       print any TAP plan, and the TAP driver will catch that and report
+       an error.
+       (syntax_check_rules): Adjust.
+
+2012-02-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: expose $(am__dry_run) limitations
+
+       Currently, the internal $(am__dry_run) macro can fail in weird ways
+       when $(MAKEFLAGS) contains shell metacharacters.  Let's expose this
+       limitation in the testsuite (and fix a couple of related weaknesses
+       since we are at it).
+
+       * tests/make-dryrun.test: Moved ...
+       * tests/make-dryrun.tap: ... here, converted to TAP, and extended to
+       expose the described limitations.  Also ...
+       (am_parallel_tests): Define this so that the 'gen-testsuite-part'
+       script won't generate a useless wrapper script.
+       * test/list-of-tests.mk: Update.
+
+2012-02-17  Peter Rosin  <peda@lysator.liu.se>
+
+       cosmetics: fix commit message typo in previous
+
+       * .git-log-fix: The file is called .git-log-fix, nothing else.
+
+2012-02-17  Peter Rosin  <peda@lysator.liu.se>
+
+       fixup: .git-log-fix should not be executable
+
+       * .git-log-fix: Set mode 644.
+
+2012-02-17  Peter Rosin  <peda@lysator.liu.se>
+
+       maint: support amending the generated ChangeLog, and fix a typo
+
+       * Makefile.am (gitlog_to_changelog_options): Add support for
+       amending the generated ChangeLog.
+       (EXTRA_DIST): Update.
+       * .git-log-fix: New file with things to amend to the generated
+       ChangeLog, starting with a fix for a typo in v1.11-1963-g3b369e6
+       "maint: use AC_PACKAGE_BUGREPORT to avoid duplication" from
+       yesterday.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: normalize copyright notice in some tests
+
+       * tests/lisp3.test: Normalize copyright notice to read the
+       same of that of other tests.
+       * tests/lisp4.test: Likewise.
+       * tests/lisp5.test: Likewise.
+       * tests/lisp6.test: Likewise.
+       * tests/lisp7.test: Likewise.
+       * tests/lisp8.test: Likewise.
+       * tests/lispdry.test: Likewise.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       readme: fix grammaro
+
+       Reported by Eric Blake.
+
+       * README: Use "also has" instead of "has also"; the former sounds
+       better to a native speaker.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: use AC_PACKAGE_BUGREPORT to avoid duplication
+
+       * configure.ac: In the message reporting whether the user is about
+       to build an alpha or beta version, use the autoconf-provided
+       AC_PACKAGE_BUGREPORT macro instead of duplicating the bug reporting
+       address.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       readme: update and renew
+
+       * README: Remove stale or now-obvious description and advices.
+       Add reference to the INSTALL file.  Some minor rewordings.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       depcomp tests: fix up today's botched commit
+
+       Today's commit 'v1.11-1959-g0699a84' has caused the generated
+       'depcomp*.tap' tests to call the 'plan_' function *before* it is
+       defined, and has also caused the extra checks required for better
+       libtool coverage to be run only when libtool is *not* in use,
+       rather than the other way around.  Fix this mess.
+
+       Report by Peter Rosin.
+
+       * tests/gen-testsuite-part: Include './defs' in the generated
+       tests, rather than doing so from 'depcomp.sh'.  Adjust the count
+       of TAP tests for 'depcomp-lt-auto.test' (it's 84, not 72).
+       * tests/depcomp.sh: Adjust accordingly, and fix inverted logic
+       about the decision of when to run extra checks for libtool.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: clearer diagnostic if "make" is invoked before "./configure"
+
+       Since a GNUmakefile wrapper has been introduced in our build
+       system, a "make" invocation issued before a "./configure" one
+       has caused GNU make to die with the cryptic message:
+
+         GNUmakefile:18: Makefile: No such file or directory
+         GNUmakefile:19: /syntax-checks.mk: No such file or directory
+         make: *** No rule to make target `/syntax-checks.mk'.  Stop.
+
+       * GNUmakefile: Detect when we are being run from an unconfigured
+       tree, and give helpful diagnostic.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       depcomp tests: put TAP plan in generated tests
+
+       This avoids a spurious maintcheck failure, and also simplifies
+       the 'depcomp.sh' helper script a little.
+
+       * tests/gen-testsuite-part: Create and place also a proper 'plan_'
+       call (to emit the TAP plan) in each generated 'depmod*.tap' test.
+       * tests/depcomp.sh: Remove 'plan_' invocations, and simplify a
+       little since we are at it.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       update-copyright: don't touch COPYING and INSTALL
+
+       Reported by Peter Rosin.
+
+       * update-copyright: Also exclude the COPYING and INSTALL files
+       found in the top-level directory.
+       * COPYING, INSTALL: Revert update of copyright years done in
+       today's commit 'v1.11-1948-g641a5a4'.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: whitelist some false positives
+
+       Instead of tweaking or dumbing down some of our sources or tests
+       in order not to make them spuriously trigger few maintainer checks,
+       we tweak such checks instead.
+
+       * syntax-checks.mk (sc_tests_overriding_macros_on_cmdline): Also
+       allow the variable 'exp' to be overridden on the make command line.
+       Whitelist the test 'make-dryrun.test' where appropriate.
+       (sc_mkinstalldirs): When whitelisting the 'mkinstalldirs' occurrence
+       in 'lib/Makefile.am', do not look for the exact line number: it is
+       obviously too fragile.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure with parallel make
+
+       * tests/parallel-tests-extra-programs.test: Run make with the '-k'
+       option where appropriate, to ensure it doesn't stop at the first
+       error, which would prevent the building of the extra programs we
+       expect it to build.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure on older Cygwin
+
+       * tests/tap-signal.tap: Sending a SIGQUIT on Cygwin 1.5 can cause a
+       segmentation fault instead (sometimes at least).  Don't let this
+       older bug pollute the results of our testsuite.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: display captured make stdout in 'tap-signal.tap'
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure in 'suffix3.tap'
+
+       * tests/suffix3.tap (foo.zoo): This C++ file fails to compile with
+       older g++ (3.4.4) on Cygwin 1.5.25 if we #include <iostream>.  Don't
+       do that, since it's not strictly required, and the "using namespace"
+       directive is already enough to ensure the file contents is valid C++
+       but invalid C.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: fix typo in description of AM_YFLAGS
+
+       Report by Akim Demaille.
+
+       * doc/automake.texi (Program variables): Don't list "-d -t" twice
+       in the examples of valid ways to specify the '-d' flag to Yacc;
+       instead, use "-d -t" and "-t -d".  Add missing period.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: another spurious failure with older autoconf fixed
+
+       * tests/aclocal8.test (configure.in): Also call 'AC_INIT', it's
+       required by some older autoconf versions (e.g., 2.63).
+       * tests/acloca15.test: Likewise.  Add trailing ':' command since
+       we are at it.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with older autoconf
+
+       * tests/conffile-leading-dot.test: Relax grepping of 'config.status'
+       stderr, to cater for older autoconf.  Issue revealed by a failure
+       with autoconf 2.63 on Cygwin 1.5.25.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: sync auxiliary files from upstream
+
+       * lib/texinfo.tex: Synced from upstream, by "make fetch".
+       * lib/config.guess: Likewise.
+       * lib/config.sub: Likewise.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: run "make update-copyright"
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: add some missing copyright notices
+
+       * tests/ChangeLog-old: Add copyright notice.
+       * tests/aclocal.in: Likewise.
+       * tests/automake.in: Likewise.
+       * tests/extract-testsuite-summary: Likewise.
+       * tests/prove-runner: Likewise.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         update-copyright: don't touch files synced from external packages
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       update-copyright: don't touch files synced from external packages
+
+       * Makefile.am (update-copyright): Do not update copyright years of
+       files synced from external packages, as given by the '$(FETCHFILES)'
+       variable.  Silence the recipe since we are at it.
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'extra-dist-tests-ksh-bug'
+
+       * extra-dist-tests-ksh-bug:
+         tests: fix spurious failure when testing wildcards in EXTRA_DIST
+
+2012-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure when testing wildcards in EXTRA_DIST
+
+       * tests/extra10.test: Remove the "make distcheck" call, since, at
+       least with GNU make 3.82, it trips on the fact that $(srcdir) is
+       not explicitly used in the wildcard in EXTRA_DIST.
+
+2012-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         fixup: distribute 'lib/update-copyright'
+
+2012-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: distribute 'lib/update-copyright'
+
+       While the 'update-copyright' script shouldn't be needed by final
+       users, that's not a good reason to keep it out by the distribution,
+       as doing so might be unhelpful toward occasional but curious users
+       interested in peeking into the automake build system.
+
+       * lib/Makefile.am (EXTRA_DIST): Distribute 'update-copyright'.
+
+2012-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: prefer $(GIT) over hard-coded "git" in maintainer recipes
+
+       * Makefile.am (update-copyright, autodiffs): Use '$(GIT)' instead
+       of hard-coding 'git'.
+
+2012-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         maint: add a rule to use gnulib's update-copyright
+
+2012-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'extra-dist-tests-ksh-bug'
+
+       * extra-dist-tests-ksh-bug:
+         tests: avoid ksh bug for wildcards in EXTRA_DIST
+
+2012-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'yl-work-for-master'
+
+       * yl-work-for-master: (44 commits)
+         tests: truly use Lex and Yacc selected by configure
+         news: fix grammaros related to Yacc
+         yacc/lex tests: avoid spurious skips with non-GNU make
+         fixup: remove double news entry
+         tests: workaround for shells with broken 'set -e'
+         tests: avoid spurious failure with non-bison yacc
+         tests: fix spurious failures due to missing 'yywrap()' function
+         fixup: list of yacc/lex tests was botched
+         tests: work around bug#7884 in many yacc/lex tests
+         yacc/lex tests: remove an unneeded workaround for bug#8485
+         yacc/lex tests: avoid too much failures with FreeBSD make
+         yacc-dist-nobuild.test: add reference to bug#7884
+         yacc tests: fix bug in 'yacc-cxx.test'
+         lex tests: fix spurious link errors on Solaris
+         lex: "make clean" removes .c files from non-distributed .l
+         lex tests: make test on Lex dependency tracking more "semantic"
+         lex tests: remove erroneous check about ylwrap distribution
+         yacc tests: "make clean" removes C++ files from non-distributed .y
+         tests: add a workaround for automake bug#8485
+         tests: add a couple of inter-tests reference
+         ...
+
+2012-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cscope: is only expected to work with GNU make in VPATH setup
+
+       The 'cscope' functionality does not properly handle VPATH rewrites;
+       so we explicitly document that, for now, it is only ensured to work
+       with GNU make when doing a VPATH build, and we adjust testsuite
+       requirements accordingly.
+
+       Issue revealed by a failure of 'cscope.test' with Solaris 10 CCS
+       make.
+
+       * doc/automake.texi (Tags): Document the limitations of the cscope
+       support.  Couple of fixlets to formatting since we are at it.
+       * tests/cscope.test: Converted to TAP, and thus moved ...
+       * tests/cscope.tap: ... here.  Only run tests with VPATH builds when
+       using GNU make.  Adjust so that no C, C++, Fortran or Java compiler,
+       nor any Emacs program, will be required to run this test.
+       * tests/list-of-tests.mk: Adjust.
+
+2012-02-14  Jim Meyering  <meyering@redhat.com>
+
+       maint: add a rule to use gnulib's update-copyright
+
+       * lib/update-copyright: New file, from gnulib.
+       * Makefile.am (FETCHFILES): Add update-copyright to the list.
+       (fetch): Fetch it.
+       (update-copyright): New rule.
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'doc-no-history'
+
+       * doc-no-history:
+         docs: move chapter on automake history out of main manual
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: fix test-suite.log formatting with NetBSD sed
+
+       * lib/am/check.am (am__rst_section): Tweak to ensure en extra final
+       newline is printed also with NetBSD sed.  Issue revealed by a
+       failure of 'test-metadata-global-result.test'.
+       * tests/rst-formatting.test: New test, checking the internal
+       variables '$(am__rst_title)' and '$(am__rst_section)'.
+       * tests/list-of-tests.mk: Add it.
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid ksh bug for wildcards in EXTRA_DIST
+
+       Some shells, like NetBSD 5.1 /bin/ksh, have a bug that causes
+       wildcards resulting from an unquoted parameter expansion not to
+       be expanded as expected in some cases:
+
+           $ touch a b c d
+           $ /bin/sh -c 'var="[ab]" && echo $var' # As expected.
+           a b
+           $ /bin/ksh -c 'var="[ab]" && echo $var' # Oops.
+           [ab]
+           $ /bin/ksh -c 'var="?" && echo $var' # But this as expected.
+           a b c d
+
+       This was causing a failure in our testsuite.  Work around that.
+
+       See also:
+       <http://lists.gnu.org/archive/html/automake-patches/2012-02/msg00149.html>
+
+       * tests/extra11.test: Work around the described issue by using the
+       $(wildcard) builtin in the EXTRA_DIST definition.  This is not a
+       problem, since this test was assuming GNU make anyway.  Since we are
+       at it, enhance coverage a little by also running "make distcheck".
+       * tests/extra10.test: Similarly, enhance coverage by also running
+       "make distcheck", and fix a minor bug in the process.  But continue
+       using a "bare" wildcard expression in EXTRA_DIST, without involving
+       the $(wildcard) builtin, to ensure coverage of similar usages "in
+       the wild".
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'fix-tap-signal-test'
+
+       * fix-tap-signal-test:
+         fixup: fix test tap-signal.tap to avoid false negatives
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: fix test tap-signal.tap to avoid false negatives
+
+       Problem introduced by yesterday commit v1.11-1851-g79b2c6a,
+       "tests: avoid yet other spurious failures on NetBSD"
+
+       * tests/tap-signal.tap: Truly ensure the exit status of the make
+       call under test is correctly reflected in the TAP result displayed
+       by the corresponding 'command_ok_' invocation.
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         fixup: do not tickle makefile-deps.test with the make_dryrun code
+         gitattributes: custom merge driver for ChangeLog not needed anymore
+         gitattributes: use "union" merge driver for NEWS
+
+2012-02-14  Peter Rosin  <peda@lysator.liu.se>
+
+       fixup: do not tickle makefile-deps.test with the make_dryrun code
+
+       * lib/am/header-vars.am (am__make_dryrun): Avoid code matching
+       '^ *:' in the Makefile, as that tickles makefile-deps.test.
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gitattributes: custom merge driver for ChangeLog not needed anymore
+
+       * .gitattributes: We don't maintain a version-controlled ChangeLog
+       file anymore, so we have no need to specify a custom merge driver
+       for it anymore.  Update accordingly.
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gitattributes: use "union" merge driver for NEWS
+
+       This should help in reducing the spurious merge conflicts for the
+       NEWS file, which have already caused a great deal of confusion and
+       wasted time.
+
+       Suggestion by Eric Blake:
+       http://lists.gnu.org/archive/html/automake-patches/2012-02/msg00119.html
+
+       * .gitattributes (NEWS): Use the "union" merge driver.
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: truly use Lex and Yacc selected by configure
+
+       When 'yacc-work' was merged into 'yl-work-for-master' in commit
+       v1.11-1910-ge6c40d4 (12-02-2012), the values for $YACC and $LEX
+       stopped being substituted directly by config.status, and started
+       being substituted by a Makefile rule using the contents of the
+       $(YACC) and $(LEX) makefile variables.
+
+       Unfortunately, our configure.ac was calling AM_SUBST_NOTMAKE on
+       'YACC' and 'LEX' (see commit v1.11-284-g34ca92b of 29-01-2011,
+       "tests: don't define YACC and LEX in the Makefiles", for a
+       rationale), so that the $(YACC) and $(LEX) in the Makefile simply
+       hold the default make-provided values (that is, "yacc" and "lex"
+       respectively), independently of what yacc and lex programs were
+       defined at configure time.
+
+       Apart from reducing coverage and creating confusion, this behaviour
+       also caused spurious failures on systems lacking a yacc and/or lex
+       programs.
+
+       Problem reported by Peter Rosin.  References:
+        <http://lists.gnu.org/archive/html/automake-patches/2012-02/msg00131.html>
+        <http://lists.gnu.org/archive/html/automake-patches/2012-02/msg00132.html>
+
+       * configure.ac (AM_SUBST_NOTMAKE): Don't call anymore on 'YACC' nor
+       on 'LEX'.
+
+2012-02-14  Peter Rosin  <peda@lysator.liu.se>
+
+       depcomp tests: do not specify LDFLAGS for static libraries
+
+       Commit v1.11-1848-gb3f34ca accidentally specified LDFLAGS
+       for libbaz even when built as a static library, which is
+       not allowed.
+
+       * tests/depcomp.sh (src/Makefile.am): Don't add any LDFLAGS
+       when libbaz is built as a static library.
+
+2012-02-14  Peter Rosin  <peda@lysator.liu.se>
+
+       depcomp tests: avoid redundant runs for non-libtool test
+
+       When running the dependency tests without libtool, it's
+       not meaningful to run the tests three-fold, the libtool
+       configure options are simply ignored anyway.
+
+       * tests/depcomp.sh: Only run the tests three-fold when
+       libtool is in use.
+
+2012-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid yet other spurious failures on NetBSD
+
+       * tests/tap-signal.tap: Add a "strategically placed" extra 'echo'
+       command and a temporary silencing of xtraces; they are required
+       to avoid possible garbled output with NetBSD make, which would
+       miss some final newlines in the expected places and thus mess up
+       our TAP output.
+
+2012-02-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid a spurious failure on NetBSD
+
+       * tests/test-driver-is-distributed.test: Rewrite to avoid having to
+       edit configure.in; such editing was subtly botched on NetBSD (the
+       'AC_CONFIG_AUX_DIR' call got misplaced, ending up *before* the
+       'AC_INIT' call), and that caused an hard-to-track bug.  Since we
+       are at it, extend coverage a little.
+
+2012-02-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure with NetBSD /bin/ksh
+
+       * tests/parallel-tests-fd-redirect-exeext.test (configure.in): Tweak
+       so that we don't end up with the generated configure script having
+       two nested subshells that start with '((':
+
+         ((./conftest$EXEEXT 9>&1) | grep "^foobar") >&5 2>&5
+
+       which is unportable and could confuse some shells (e.g., NetBSD 5.1
+       /bin/ksh) into thinking we are trying to perform an arithmetic
+       operation.
+
+2012-02-13  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: increase coverage for depcomp tests
+
+       On platforms requiring that no undefined symbols exist in order
+       to build shared libraries (e.g. Windows DLLs), you have to
+       explicitly declare that the libtool library you are building
+       does not actually have any undefined symbols, for libtool to
+       even try to build it as a shared library.  Without that
+       explicit declaration, libtool falls back to a static library
+       only, regardless of any --enable-shared flags etc.
+
+       tests/depcomp.sh (Makefile.am): Add -no-undefined if a libtool
+       library (.la) is built.
+       (src/Makefile.am): Likewise.
+
+2012-02-13  Peter Rosin  <peda@lysator.liu.se>
+
+       news: fix grammaros related to Yacc
+
+       * NEWS: Fix some grammaros and typos.
+
+2012-02-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc/lex tests: avoid spurious skips with non-GNU make
+
+       * tests/defs (useless_vpath_rebuild): Fix botched logic that
+       was causing this function to always diagnose non-GNU make
+       implementations as being affected by the "useless rebuilds
+       in VPATH setup" bug (that affects FreeBSD make and causes
+       automake bug#7884).
+
+2012-02-13  Peter Rosin  <peda@lysator.liu.se>
+
+       fixup: remove double news entry
+
+       * NEWS: Remove double (stale) news entry introduced by a botched
+       merge.
+
+2012-02-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: workaround for shells with broken 'set -e'
+
+       * tests/dist-formats.tap: Some versions of the BSD shell wrongly
+       bail out when the 'errexit' shell flag is active and the left-hand
+       command in a "&&" list fails and that list is the *last* command
+       of a "case" statement.  This was causing an incorrect initialization
+       of the '$missing_compressors' variable, and thus potential spurious
+       failures when non-existing programs were assumed to be available.
+
+2012-02-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: workaround for shells with broken 'set -e'
+
+       * tests/yacc-cxx.test: Some versions of the BSD shell wrongly bail
+       out when the 'errexit' shell flag is active if the left-hand
+       command in a "&&" list fails and such list is the *last* command
+       of a "for" or "while" loop or of an "if" construct.  Work around
+       this issue.
+       * tests/check12.test: Likewise.
+
+2012-02-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure with non-bison yacc
+
+       Issue revealed by a failure on NetBSD 5.1.
+
+       * tests/suffix10.tap (Makefile.am): Adjust the rule generating
+       the '.y' files so that such files won't use bison-only features.
+
+2012-02-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures due to missing 'yywrap()' function
+
+       The AC_PROG_LEX Autoconf macro does not diagnose a failure to find
+       the "lex library" expected to provide a 'yywrap' function (function
+       which is required to link most lex-generated programs).  On the
+       contrary, when all the link attempts (i.e., with '-ll' and '-lfl')
+       fail, configure declares that no lex library is needed, and simply
+       proceeds with the configuration process -- only for the build to
+       possibly fail later, at make time.
+
+       This behaviour is intended; the Autoconf manual reads:
+
+         You are encouraged to use Flex in your sources, since it is
+         both more pleasant to use than plain Lex and the C source it
+         produces is portable.  In order to ensure portability, however,
+         you must either provide a function 'yywrap' or, if you don't use
+         it (e.g., your scanner has no '#include'-like feature), simply
+         include a '%noyywrap' statement in the scanner's source.
+
+       This AC_PROG_LEX behaviour is causing some spurious failures of
+       the Automake testsuite in environments which lack a proper library
+       providing 'yywrap' (this happens for example on Fedora-based
+       systems).   The proper workaround is to simply provide a fall-back
+       implementation of 'yywrap' in our lexers.
+
+       See also similar commits 'v1.11-546-gca0ba5d' (24-10-2011),
+       'v1.11-1085-gb5c3968' (24-10-2011) and 'v1.11-871-geb147a1'
+       (25-05-2011).
+
+       * tests/lex-clean.test: Provide a dummy 'yywrap' function.
+       * tests/lex-line.test: Likewise.
+       * tests/lex-nodist.test: Likewise.
+       * tests/lex-depend.test: Likewise.
+       * tests/lex-clean-cxx.test: Move the dummy 'yywrap' function
+       from the main '.cc' file into the '.lxx' file, so that it won't
+       be subject to the namespace declaration in the '.cc' file (which
+       was causing a spurious link error in systems without a default
+       "lex library").
+
+2012-02-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'yacc-work' into yl-work-for-master
+
+       * yacc-work: (37 commits)
+         fixup: list of yacc/lex tests was botched
+         tests: work around bug#7884 in many yacc/lex tests
+         yacc/lex tests: remove an unneeded workaround for bug#8485
+         yacc/lex tests: avoid too much failures with FreeBSD make
+         yacc-dist-nobuild.test: add reference to bug#7884
+         yacc tests: fix bug in 'yacc-cxx.test'
+         lex tests: fix spurious link errors on Solaris
+         lex: "make clean" removes .c files from non-distributed .l
+         lex tests: make test on Lex dependency tracking more "semantic"
+         lex tests: remove erroneous check about ylwrap distribution
+         yacc tests: "make clean" removes C++ files from non-distributed .y
+         tests: add a workaround for automake bug#8485
+         tests: add a couple of inter-tests reference
+         lex tests: require just `lex' instead of `flex'
+         fix typo in ChangeLog (2011-05-04)
+         tests defs: use `skip_' for skipping yacc/lex related tests
+         lex/yacc tests: remove redundant $distdir definition
+         coverage: test lex-generated "#line" directives postprocessing
+         tests: minor improvements to a couple of yacc tests
+         tests: fix spurious failure in test 'yacc-d-cxx.test'
+         ...
+
+       + Extra non-trivial edits:
+
+       * tests/defs.in: Delete; the differences from maint has been
+       merged into 'tests/defs' and 'tests/defs-static.in'.
+       * tests/defs (yacc, lex): Use 'skip_all_', not 'skip_', to
+       skip the whole test case if yacc (resp. lex) is missing.
+       (bison): New, set up the environment so that 'bison -y' will
+       be used as the yacc program.
+       (useless_vpath_rebuild, yl_distcheck): Moved in from
+       'tests/defs.in'.
+       * tests/defs-static.in ($YACC, $LEX): Default to the values
+       determined at configure time, and allow them to be overridden
+       by the more namespace-safe variables '$AM_TESTSUITE_YACC' and
+       '$AM_TESTSUITE_LEX' respectively.
+       * tests/Makefile.am (do_subst): Also substitute '@YACC@' and
+       '@LEX@'.
+       * Several tests: Fix requirements declarations, by preferring
+       'lex' and 'yacc' over 'flex' and 'bison' whenever possible.
+
+2012-02-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: list of yacc/lex tests was botched
+
+       * tests/list-of-tests.mk: Update to take into account the addition,
+       renaming, removing or split-ups of Yacc/Lex tests that have taken
+       place in the 'yacc-work' branch.  Problem likely introduced by a
+       botched merge of 'maint' into 'yacc-work'.
+
+2012-02-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: move chapter on automake history out of main manual
+
+       The chapter on Automake history, while certainly interesting and
+       even fascinating, does not truly pertain to a reference manual,
+       so move it out from there and into its own dedicated file.  This
+       change is made more advisable and pressing by the fact that such
+       and "Automake history" chapter hasn't been updated since the 1.9.6
+       release, so it has been becoming less faithful and useful since
+       then.
+
+       * doc/history.texi: New, manual on the history of the automake
+       package; extracted from ...
+       * doc/automake.texi: ... this file, with related adjustments.
+       * doc/Makefile.am (info_TEXINFOS): Add 'history.texi'.
+       (history_TEXINFOS): New, list included file 'fdl.texi'.
+       * Makefile.am (release-stats): Remove as obsolete.
+       * HACKING (Release Procedure): Don't advise anymore to run the
+       "release-stats" target and to update the manual with its output.
+       * NEWS: Update.
+       * .gitignore: Likewise.
+
+2012-02-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       depcomp tests: avoid redundant runs for libtool tests
+
+       When running libtool-oriented tests, our 'depcomp.sh' script used
+       to run the same checks thrice: once after having run configure
+       with the '--disable-shared' option, once after having run it with
+       the '--enable-shared' option, and once by allowing configure to
+       automatically select which kind of library (or libraries) to build.
+
+       This was done to offer extra coverage for the less-common depmodes
+       (like "aix" of "hp2") where the name of the compiler-generated
+       depfiles can depend on whether libtool is in use *and* on which
+       kind of libraries libtool is building (static, shared, or both).
+       About this, see commit 'Release-1-10-24-ge89ec38' of 28-03-2007,
+       "* lib/depcomp (aix): Rewrite depmode in the spirit of the tru64
+       one".
+
+       But that extra coverage came at the price of *considerably* slowing
+       down the depcomp libtool-oriented tests, since for each of them the
+       tested source tree was configured and built *twelve* times (rather
+       than "just" four as it is for the non-libtool case).
+
+       So, to strike a balance between coverage and speed, we now run the
+       libtool-oriented tests with the three different configuration modes
+       *only* when it is possible that the depmode that will get selected
+       is one of those which can actually benefit from the extra coverage.
+
+       * tests/depcomp.sh: Adjust to only run the threefold libtool tests
+       when that can truly be potentially useful.  Add related explanatory
+       comments.
+
+2012-02-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid wrong skips in dist-formats.tap
+
+       * tests/dist-formats.tap: The test checking whether the 'compress'
+       program is actually capable of compressing files relied on the
+       assumption that 'compress' exits with status zero if no problem
+       occurs; alas, this reasonable assumption doesn't hold in practice,
+       since 'compress' does (and is documented to) exit with status 2 if
+       the output is larger than the input after (attempted) compression!
+       Fix this by using and input that 'compress' can actually reduce in
+       size when compressing.
+       Do some related reformatting of surrounding code since we are at it.
+
+2012-02-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: few tweakings and cosmetic changes
+
+       * tests/dist-formats.tap: Fix botched spacing.
+       * tests/subobjname.test: Prefer spaces to tabs in indentation.
+       * tests/cond43.test: Likewise.
+       * tests/comment7.test: Likewise.
+       * tests/compile_f90_c_cxx.test: Use "$tab" instead of literal
+       tab characters in the grep regexp.
+       * tests/compile_f_c_cxx.test: Likewise.
+       * tests/pluseq3.test: Likewise.
+       * tests/cond-basic.test: Likewise.
+       * tests/acloca16.test: Add empty line before trailing ':' command.
+       * tests/bsource.test: Likewise.
+       * tests/depend5.test: Likewise.
+       * tests/depend6.test: Likewise.
+       * tests/destdir.test: Likewise.
+       * tests/fort2.test: Likewise.
+       * tests/instdir-java.test: Likewise.
+       * tests/instdir-lisp.test: Likewise.
+       * tests/instdir-python.test: Likewise.
+       * tests/instdir.test: Likewise.
+       * tests/instdir2.test: Likewise.
+       * tests/ltinstloc.test: Likewise.
+       * tests/missing.test: Likewise.
+       * tests/missing2.test: Likewise.
+       * tests/nodef.test: Likewise.
+       * tests/nodef2.test: Likewise.
+       * tests/subst4.test: Likewise.
+       * tests/werror3.test: Likewise.
+       * tests/commen11.test: Likewise.  Also, make grepping of automake
+       stderr slightly stricter, and properly quote strings with shell
+       metacharacters.
+       * tests/nodep2.test: Add empty line before trailing ':' command.
+       Do not create unneeded dummy source files.
+
+2012-02-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove a couple of redundant 'set -e' calls
+
+       * tests/conffile-leading-dot.test: Do not set the 'errexit'
+       shell flag, as it is already set by 'tests/defs'.
+       * tests/make-dryrun.test: Likewise.
+
+2012-02-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         tests: fix a timestamp-related spurious failures
+         dryrun: fix regression with '$(am__make_dryrun)'
+         test defs: function 'is_newest' now works also with directories
+
+2012-02-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'dryrun-fix' into maint
+
+       * dryrun-fix:
+         dryrun: fix regression with '$(am__make_dryrun)'
+
+2012-02-09  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: check if 'compress' is real or fake
+
+       On Cygwin, 'compress' is provided by sharutils and is just a
+       dummy script that is not able to actually compress (it can
+       only decompress).  This fake 'compress' is not usable for
+       our purpose - to create compressed tarballs.
+
+       * tests/dist-formats.tap (missing_compressors): Count 'compress'
+       as missing if it does not support the -c option.
+
+2012-02-08  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'msvc'
+
+       * msvc:
+         depcomp: try to prevent whitespace regressions
+         depcomp: recognize tabs as whitespace in the dashmstdout mode
+         depcomp: quote 'like this', not `like this'
+
+2012-02-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       depcomp tests: avoid spurious failures with 'dashXmstdout' depmode
+
+       * tests/gen-testsuite-part: The 'dashXmstdout' depmode cannot be
+       truly forced on gcc (like we were trying to do, causing spurious
+       failures in the process); so don't do that.  This change shouldn't
+       actually reduce coverage anyway, since, as the comments in
+       'lib/depcomp' say, the 'dashXmstdout' depmode is just like
+       the 'dashmstdout' one, only with a different argument for the
+       compiler.
+
+2012-02-08  Peter Rosin  <peda@lysator.liu.se>
+
+       depcomp: try to prevent whitespace regressions
+
+       Suggested by Stefano Lattarini.
+
+       * lib/depcomp: Add $tab and $nl variables and use them
+       throughout.
+
+2012-02-08  Peter Rosin  <peda@lysator.liu.se>
+
+       depcomp: recognize tabs as whitespace in the dashmstdout mode
+
+       Commit Release-1-7-2b-2-gf03ceab "Cope with DOS filenames in
+       dependencies." inadvertedly converted tabs into spaces.
+
+       * lib/depcomp (dashmstdout): Add a tab character to all sets
+       matching whitespace.
+
+2012-02-08  Peter Rosin  <peda@lysator.liu.se>
+
+       depcomp: quote 'like this', not `like this'
+
+       Cherry-picked from recent changes from master.
+
+       * lib/depcomp: Quote 'like this', not `like this'.
+
+2012-02-08  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: check the depmodes 'msvisualcpp' and 'msvcmsys'
+
+       * tests/defs (cygpath): New requirement, checking that cygpath
+       is working.
+       (mingw): New requirement, checking that the build system is
+       MSYS (in its normal MinGW mode).
+       * tests/gen-testsuite-part (depmodes): Add entries for depmodes
+       'msvisualcpp' and 'msvcmsys'.
+
+2012-02-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: better way to compare lists in Makefile rules
+
+       With this commit, we introduce a new helper shell script for use
+       in the testsuite, which is meant to allow the test cases to easily
+       check whether two whitespace-separated lists are equal; this ability
+       is particularly useful to check for equality of the contents of make
+       variables that are expected to contain multiple whitespace-separated
+       words, and are defined through line continuations (or are rewritten
+       by automake in this way), or that contain expansion of potentially
+       empty variables.
+
+       Before this change, a test checking that an usage like this one:
+
+         VAR = valA
+         if COND1
+           VAR += val1 # com1
+         endif COND1
+         VAR += valC
+
+       worked as expected, couldn't use rules like:
+
+         ## Doesn't work because $(VAR) expands to multiple words
+         verify:
+             test $(VAR) = "valA val1 valC"
+
+       nor like:
+
+         ## Doesn't work because the final expansion of $(VAR) contains
+         ## repeated contiguous whitespace characters (it actually
+         ## equals "valA val1  valC", not "valA val1 valC"), and this
+         ## is an internal detail which might change and which we don't
+         ## want to explicitly rely on.
+         verify:
+             test "$(VAR)" = "valA val1 valC"
+
+       Instead, we had to rely on cumbersome workaround such as:
+
+         ## This works, but is ugly.
+         verify:
+             test "`echo $(VAR)`" = "valA val1 valC"
+
+       or:
+
+         ## This works, but is even uglier.
+         verify:
+             echo BEG: $(VAR) :END | grep "BEG: valA val1 valC :END"
+
+       Now, with the help of the new 'is' script, we can perform such a
+       check in a clearer and more straightforward way, as in:
+
+         ## Works, and reads clearly.
+         verify:
+             is $(VAR) == valA val1 valC
+
+       * tests/is: New helper shell script, telling whether two whitespace
+       separated lists are equal.
+       * Makefile.am (EXTRA_DIST): Add it.
+       * tests/colneq2.test: Use the new helper script, and accordingly
+       get rid of older, more cumbersome idioms.
+       * tests/cond11.test: Likewise.
+       * tests/cond16.test: Likewise.
+       * tests/cond18.test: Likewise.
+       * tests/cond22.test: Likewise.
+       * tests/cond31.test: Likewise.
+       * tests/cond38.test: Likewise.
+       * tests/test-logs-repeated.test: Likewise.
+       * tests/objext-pr10128.test: Likewise.
+       * tests/programs-primary-rewritten.test: Likewise.
+       * tests/substre2.test: Likewise.  Also ...
+       (configure.in, Makefile.am): Add a couple of hack to avoid having
+       to require (and run) a C compiler; accordingly ...
+       ($required): ... remove this.
+       * tests/exeext4.test: Likewise.
+       * tests/substref.test: Likewise.  Also ...
+       (hello.c): Use ": >" rather than "cat <<EOF" to generate it,
+       since it's meant to be empty anyway.
+       * tests/cond4.test: Use the new helper script, and accordingly
+       get rid of older, more cumbersome idioms.  Avoid some unnecessary
+       uses of "make -e" since we are at it.
+       * tests/cond19.test: Likewise.
+       * tests/cond32.test: Likewise.
+       * tests/cond6.test: Use the new helper script, and accordingly
+       move some checks in the Makefile.am.
+       Avoid unnecessary execution of automake remake rules by manually
+       "touching" aclocal.m4
+
+2012-02-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: improve and rework tests on dependency tracking
+
+       Fixes automake bug#10434.  Suggestion by Peter Rosin.
+
+       The 'depcomp.tap' test case worked by trying to unconditionally
+       force the compiler in use by the testsuite to use, one by one, *all*
+       the dependency modes known by the 'depcomp' script, and, for each
+       such forced mode that was compatible enough with said compiler not
+       to cause breakage in the basic compilation rules, checking that it
+       was *also* good enough not to break remake rules in VPATH builds.
+
+       This seemed a good approach when this test was first introduced, as
+       it apparently increased coverage for the less used and less tested
+       dependency-tracking modes.  But in the log run it turned out the
+       approach was actually in part too brittle, causing some annoying
+       spurious failures (as with the Tru64 depmode forced on GCC, see
+       automake bug#10434), and partly too forgiving, since, for some of
+       the more corner-case dependency modes, the 'depcomp' script simply
+       reverts to silently disabling dependency tracking when an error is
+       encountered (this happened e.g., with the Tru64 depmode forced on
+       the Sun C compiler 5.9), so that a passing test means nothing, and
+       only gives a false sense of security.
+
+       As Peter Rosin put it, "it's just dead wrong to assume that feeding
+       -M or -xM to the compiler (or whatever other random stuff 'depcomp'
+       might do) and not get an error is the same as dependencies magically
+       appearing".
+
+       So we get rid of this wrong approach, and in the process proceed to
+       a complete overhaul of many of the tests on automatic dependency
+       tracking, extending the offered coverage and rationalizing their
+       organization.
+
+       * tests/depcomp.sh: New helper script, used by several new
+       autogenerated tests.
+       * tests/gen-testsuite-part: Generate several tests based on the
+       new 'depcomp.sh' script.  Emit makefile code that declares their
+       dependency on that script, and that extends EXTRA_DIST in order
+       to distribute it.
+       * tests/depmod.tap: Remove.
+       * tests/depend2.test: Remove, it has been subsumed by the new
+       autogenerated test 'depcomp-disabled.tap'.
+       * tests/depcomp3.test: Remove, it has been subsumed by the new
+       autogenerated test 'depmod-dashmstdout.tap'.
+       * tests/depcomp3.test: Remove, it has been subsumed by the new
+       autogenerated test 'depmod-lt-makedepend.tap'.
+       * tests/depcomp6.test: Remove, it has been subsumed by the new
+       autogenerated test 'depmod-auto.tap'.
+       * tests/depcomp7.test: Remove, it has been subsumed by the new
+       autogenerated test 'depmod-lt-auto.tap'.
+       * tests/depcomp5.test: Remove as obsolescent.
+       * test/list-of-tests.mk: Adjust.
+       * .gitignore: List the new autogenerated tests.
+
+2012-02-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix a timestamp-related spurious failures
+
+       Fixes automake bug#10737.  Report from Larry Daniel.
+       See also automake bug#8365 and commit 'v1.11-329-gd4df619' of
+       30-03-2011, "tests: fix timestamp-related failures".
+
+       * tests/aclocal5.test: Sleep before modifying m4 files that should
+       trigger remake rules.  This fixes an hard-to-hit timestamp-related
+       race condition.
+       * THANKS: Update.
+
+2012-02-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dryrun: fix regression with '$(am__make_dryrun)'
+
+       In commit v1.11-683-gda0964e of 05-02-2012, we introduced a new
+       variable '$(am__make_dryrun)' that could be used in recipes to
+       determine whether make is running in dry mode (e.g., as with
+       "make -n").  Unfortunately, the idiom we used fails to take into
+       account the case in which $(MAKEFLAGS) contains one or more variable
+       definitions whose value is a whitespace-separated list; for example,
+       if we invoke make as:
+
+         make check TESTS="n1.test n2.test"
+
+       then the better make implementations out there (at least modern
+       GNU make and BSD make) will export MAKEFLAGS to the following
+       value:
+
+         TESTS=n1.test\ n2.test
+
+       So a shell loop like the one we used in $(am__make_dryrun):
+
+         for flag in $$MAKEFLAGS; do ...
+
+       won't behave as expected: the shell word-splitting rules will break
+       up the entry for TESTS into the two distinct entries "TESTS=n1.test\"
+       and "n2.test", and this second entry will goad our $(am__make_dryrun)
+       code into thinking that make is performing a dry run!
+
+       So now we simply loop over the expanded value of $(MAKEFLAGS).
+       This solves the regression, but alas, is more brittle in case the
+       users passes on the command line a macro value containing unbalanced
+       " or ' quotes, or shell metacharacters like, say, '`' or '('.  This
+       should almost never happen though, so we don't worry about it now;
+       we will revisit the issue only when and if we receive bug reports in
+       this area.
+
+       * lib/am/header-vars.am (am__make_dryrun): Fix.
+       * tests/make-dryrun.test: New test.
+       * tests/list-of-tests.mk: Add it.
+
+2012-02-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: work around bug#7884 in many yacc/lex tests
+
+       Due to automake bug#7884, many test cases on Yacc/Lex support are
+       failing when run with FreeBSD make.  Since these failures are all
+       due to the same bug, and that bug is well understood and already
+       explicitly exposed in the dedicated 'yacc-dist-nobuild.test' test,
+       the reported failures are mostly noise, that not only is annoying,
+       but which might end up covering different real bugs or regressions.
+
+       Thus we minimize such spurious failures, by ensuring the commands
+       triggering them (most of them being "make distcheck" invocations)
+       will be skipped when $MAKE suffers of the bug/limitation that
+       triggers automake bug#7884.
+
+       * tests/defs.in (useless_vpath_rebuild): New function.
+       (yl_distcheck): Likewise.
+       * tests/lex3.test, tests/subpkg-yacc.test, tests/yacc-basic.test,
+       tests/yacc-cxx.test, tests/yacc-d-basic.test, tests/yacc-d-cxx.test,
+       tests/yacc-dist-nobuild-subdir.test : Use them to avoid extra
+       failures caused by automake bug#7884.  Where possible, throw in
+       some related simplifications.
+
+2012-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint' into yacc-work
+
+       * maint: (75 commits)
+         test defs: function 'is_newest' now works also with directories
+         refactor: new variable telling whether make is running in "dry mode"
+         ...
+
+2012-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: avoid spurious XPASS results with NetBSD make
+
+       * tests/defs (make_can_chain_suffix_rules): Ensure to properly
+       declare the '.SUFFIXES:' in the temporary Makefile used to check
+       whether $MAKE is able to automatically chain suffix rules.  This
+       avoids spurious XPASS results with (at least) NetBSD make in some
+       'suffix*.tap' tests; in a sense also, this also makes the probing
+       of $MAKE capabilities more faithful, since the Automake-generated
+       Makefiles are expected to properly declare the '.SUFFIXES:' as
+       well.
+
+2012-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: few whitespace fixlets
+
+2012-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: various typofixes
+
+       Several typofixes in documentation and comments, as
+       suggested by the "codespell.py" script.  Reference:
+       <http://git.profusion.mobi/cgit.cgi/lucas/codespell/>
+
+2012-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: convert encoding from ISO-8859 to UTF-8 in some tests
+
+       The changed files have been converted using iconv; specifically,
+       the command "iconv --from-code=ISO-8859-1 --to-code=UTF-8".
+
+       * tests/block.test, tests/tagsub.test: Converted to UTF-8 encoding.
+
+2012-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: remove obsolete requirement 'rst2html'
+
+       * tests/defs (rst2html): Remove, it's not needed anymore now that
+       the old code supporting the ".log -> .html" conversion for the
+       parallel-tests harness has been moved in contrib.  This removal
+       should have actually be done in commit v1.11-1757-g0a9d201 of
+       17-01-2012, 'check: move ".log -> .html" conversion in contrib'.
+
+2012-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: workaround for shells with broken 'set -e'
+
+       * tests/defs (gmake, native, rst2html): Some versions of the BSD
+       shell wrongly bail out when the 'errexit' shell flag is active and
+       the left-hand command in a "&&" list fails, if that list is the
+       *last* command of a "for" or "while" loop.  Work around this issue.
+       * tests/lex3.test: Likewise.
+       * tests/check12.test: Likewise.
+       * tests/yacc-basic.test: Likewise.
+       * tests/lex-noyywrap.test: Likewise.
+       * tests/parallel-tests2.test: Likewise.
+       * tests/lex-lib-external.test: Likewise.
+       * tests/check-no-test-driver.test: Likewise.
+       * tests/test-metadata-recheck.test: Likewise.
+       * tests/parallel-tests-dry-run-1.test: Likewise.
+       * tests/parallel-tests-dry-run-2.test: Likewise.
+       * tests/parallel-tests-unreadable.test: Likewise.
+       * tests/test-driver-custom-no-extra-driver.test: Likewise.
+
+       Problem revealed by spurious testsuite failures on a NetBSD 5.1
+       system and an OpenBSD 5.0 system.
+
+2012-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix a typo in comments
+
+       * tests/extra-programs-empty.test: Fix typo in heading comments.
+
+2012-02-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: function 'is_newest' now works also with directories
+
+       Reported by Jim Meyering against automake master (see bug#9147) and
+       by Adam Sampson against automake 1.11.3 (see bug#10730).
+
+       * tests/defs (is_newest): Call 'find' with the '-prune' option,
+       so that it won't descend in the directories (which could cause
+       spurious results).
+       * THANKS: Update.
+
+       Backported from commit v1.11-914-gb6a40fa (originally on master).
+
+2012-02-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: more uses for '$(am__make_dryrun)'
+
+       With this change we refactor some recipes of the parallel-tests
+       harness to make them use, where appropriate, the new internal
+       variable '$(am__make_dryrun)' (introduced in the 'maint' branch)
+       when they need to determine whether make is running in "dry mode",
+       i.e., with "make -n".  This allows for some simplifications and
+       for improved uniformity.
+
+       * lib/am/check.am (check-TESTS recheck): Use $(am__make_dryrun) and
+       simplify accordingly.
+       (am--redo-logs): Delete this internal helper recipe, merged into ...
+       ($(TEST_SUITE_LOG)): ... this, with the help of $(am__make_dryrun).
+       recipe accordingly.
+
+2012-02-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         refactor: new variable telling whether make is running in "dry mode"
+         tests: do not clobber the modified CC
+
+2012-02-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       refactor: new variable telling whether make is running in "dry mode"
+
+       We define a new variable '$(am__make_dryrun)', that can be used
+       in recipes to determine whether make is running in "dry mode" (as
+       with "make -n") or not.  This is useful in rules that invoke make
+       recursively, and are thus executed also with "make -n" -- either
+       because they are declared as dependencies to '.MAKE' (NetBSD make)
+       or because their recipes contain the "$(MAKE)" string (GNU and
+       Solaris make).
+
+       * lib/am/header-vars.am (am__make_dryrun): New variable.
+       * lib/am/check.am (check-TESTS recheck): Use it, and simplify
+       recipe accordingly.
+       * lib/am/distdir.am (distdir): Likewise.
+       * lib/am/lisp.am ($(am__ELCFILES)): Likewise.
+
+2012-02-02  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: do not clobber the modified CC
+
+       If CC is originally a losing compiler, AM_PROG_CC_C_O will
+       modify CC.  "$MAKE -e" will then clobber this modified CC
+       and reintroduce the raw losing compiler causing the test
+       to fail, as subdir-objects is in effect.
+
+       tests/check8.test: Drop -e from the $MAKE invocation, since
+       AM_COLOR_TESTS is not specified in the Makefile and -e is
+       therefore not needed.
+
+2012-02-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix indentation and typos in perl TAP driver
+
+       * lib/tap-driver.pl (get_test_exit_message): Fix botched
+       indentation.  Fix typo in error message: s/ststus/status/.
+
+2012-02-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: fix typo in variable name ($AM_TESTSUITE_PERL)
+
+       * tests/defs-static.in: Fix typo: it's '$AM_TESTSUITE_PERL',
+       not '$AM_TESTUITE_PERL'.
+
+2012-02-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/perl: handle missing or non-executable scripts better
+
+       This change improves how our Perl-based TAP driver handles
+       non-runnable test scripts (meaning they might be not executable,
+       or not readable, or even not exist).  In particular, it makes the
+       driver deterministically display a clear "ERROR" result instead
+       of possibly dying with diagnostic from 'TAP::Parser' internals,
+       and prevents it from displaying spurious "missing TAP plan" errors.
+
+       Moreover, with this change, some testsuite failures present only
+       with newer perl versions (e.g., 5.14) are fixed.  See automake
+       bug#10418.
+
+       * tests/tap-bad-prog.tap: When testing the perl implementation of
+       the TAP driver, and when the perl interpreter offers a good-enough
+       'IPC::Open3::open3' function, expect it not to display spurious
+       "missing TAP plan" diagnostic if the error is actually due to a
+       non-runnable test script.
+       * lib/tap-driver.pl (start): Removed, broken up into ...
+       (setup_io): ... this ...
+       (setup_parser): ... and this, which now tries to catch and report
+       errors in launching the test scripts.
+       (finish): New, used by both 'main' and 'setup_parser'.
+       (main): Adjust.
+
+2012-02-01  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'maint'
+
+2012-02-01  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: put AM_PROG_CC_C_O before AC_OUTPUT to help losing compilers
+
+       When AM_PROG_CC_C_O is after AC_OUTPUT, the compile script
+       is not used even if needed, causing testsuite fails if
+       libtool is not used.
+
+       * tests/depcomp8a.test: Uncomment the AM_PROG_CC_C_O macro
+       in its correct location, as indicated...
+       (configure.in): ...with this comment.
+       * tests/depcomp8b.test: Sync with tests/depcomp8a.test.
+
+2012-01-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cleanup: remove unused .am file
+
+       * lib/am/comp-vars.am: Remove.  This file has stopped being useful
+       since commit 'Release-1-4d-206-g3334f9a' of 09-04-2001, and should
+       have been removed back then.  But apparently only its contents were
+       removed, leaving the file empty but still present in the repository.
+       Or maybe this situation is  the consequence of a minor blunder in
+       the conversion from CVS to Git; either way, this is not a big deal.
+
+2012-01-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         tests: do not assume the object file extension is .o
+         tests: avoid spurious failure of 'transform2.test' on Cygwin
+         tests: avoid spurious failure of deleted-am.test with FreeBSD make
+         tests: avoid possibly undeserved PASS from check8.test
+         warnings: more precise category and message for one warning
+         release: revamp rules to tag and upload the releases
+         amversion: add missing dependency
+         hacking: update advice w.r.t. synced files
+         hacking: don't reference ChangeLog anymore
+
+       + Extra non-trivial edits:
+
+       * tests/suffix8.tap: Copy in (by hand) the modifications done
+       to 'suffix8.test' on maint, i.e., the addition of an explicit
+       '.y_.obj:' suffix rule to Makefile.am.
+
+2012-01-30  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'msvc'
+
+       * msvc:
+         ar-lib: ignore the verbose modifier instead of erroring out
+         scripts: cherry-pick recent changes from master
+         tests: add missing dependency for some 'ar-lib*.test' tests
+
+2012-01-30  Peter Rosin  <peda@lysator.liu.se>
+
+       ar-lib: ignore the verbose modifier instead of erroring out
+
+       * lib/ar-lib: A number of tests uses the v modifier when listing
+       the archive content, ignore it to make them pass.
+
+2012-01-30  Peter Rosin  <peda@lysator.liu.se>
+
+       scripts: cherry-pick recent changes from master
+
+       * lib/ar-lib: prefer the term "Windows" over "Win32" and quote
+       'like this', not `like this'.
+       * lib/compile: Likewise.
+
+2012-01-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix real and spurious warnings
+
+       * lib/Makefile.am (install-data-hook): Correctly quote $(DESTDIR)
+       occurrences.
+       * Makefile.am (install-exec-hook, uninstall-hook): Likewise.
+       (autodiffs): Prefer '$(am__cd)' to plain 'cd', where warranted.
+       * doc/Makefile.am ($(srcdir)/amhello-1.0.tar.gz): Likewise.  Also,
+       prefer using AC_SUBST'd $(abs_top_builddir) over obtaining it at
+       runtime from $(top_builddir).
+       * syntax-check.mk (sc_mkinstalldirs): Tweak to whitelist known
+       harmless occurrences of the checked-against usages.
+       (sc_no_for_variable_in_macro): Likewise.
+       * tests/CheckListOfTests.am (maintainer-check-list-of-tests): Tweak
+       to avoid spuriously triggering the 'sc_no_for_variable_in_macro'
+       maintainer check.  Prefer '$(am__cd)' to plain 'cd' when warranted.
+
+2012-01-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: take advantage of some GNU make features
+
+       We can do so now that our maintainer checks require GNU make
+       unconditionally.
+
+       * syntax-check.mk (ams, xtests): Redefine as "immediate variables",
+       using the GNU make $(shell ...) builtin.
+       (maintainer-check-list-of-tests): Take advantage of GNU make "-C"
+       option.  Don't use $(AM_MAKEFLAGS), we shouldn't need it with GNU
+       make.
+
+2012-01-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: require GNU make in order to run the maintainer checks
+
+       This is not a real regression in portability, since most maintainer
+       check rules already assumed GNU grep, and were anyway only meant to
+       run on the developers' systems (where we can safely assume the
+       presence of GNU make).
+
+       This change will allow us to take advantage, in future changes, of
+       more GNU make features, thus simplifying or optimizing some of our
+       maintainer rules.
+
+       * GNUmakefile: New, including 'Makefile' and 'syntax-checks.mk'.
+       * configure.ac (AC_CONFIG_LINKS): Link it in the builddir.
+       * Makefile.am (EXTRA_DIST): Distribute 'GNUmakefile' and
+       'syntax-checks.mk'.
+       Move all syntax-check rules and auxiliary variables into ...
+       * syntax-checks.mk: ... this new file, with some adjustments.
+
+2012-01-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: refactor rules checking '*.am' files
+
+       A small refactoring in our syntax-check to avoid code duplication
+       and to ensure more uniform checking.  This change introduces some
+       new failures in syntax-check rules (both real and spurious), that
+       will be fixed in follow-up changes and code reorganizations.
+
+       * Makefile.am (ams): New variable, holding the list of all the
+       '*.am' fragments in he automake source tree.
+       (sc_no_brace_variable_expansions): Use it.
+       (sc_rm_minus_f): Likewise.
+       (sc_no_for_variable_in_macro): Likewise.
+       (sc_mkinstalldirs): Likewise.
+       (sc_pre_normal_post_install_uninstall): Likewise.
+       (sc_cd_in_backquotes): Likewise.
+       (sc_cd_relative_dir): Likewise.
+       (sc_tests_make_without_am_makeflags): Likewise.
+       (sc_tests_plain_egrep_fgrep): Likewise.
+       (sc_mkdir_p): Likewise.
+
+2012-01-30  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: do not assume the object file extension is .o
+
+       * tests/specflg7.test: Dig out the object file extension from the
+       OBJEXT makefile variable.
+       * tests/substref.test: Likewise.
+       * tests/specflg8.test: Likewise.  Also check that the false-true
+       object is created instead of checking the true-true object twice.
+       * tests/suffix8.test: Add a chain rule for the case where the
+       object file extension is .obj.
+
+2012-01-30  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: fetch the 'compile' script for subdir objects
+
+       * tests/libobj19.test: Subdir objects are used, so the 'compile'
+       script needs to be present for inferior hosts.  Fetch it.
+
+2012-01-30  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: fetch the 'ar-lib' script for archiver usage
+
+       * tests/libobj10.test: The archiver is used, so the 'ar-lib'
+       script needs to be present for inferior hosts.  Fetch it.
+
+2012-01-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure of 'transform2.test' on Cygwin
+
+       On newer Cygwin versions (at least 1.7.x), the 'transform2.test'
+       test has been failing spuriously; the gist is the following:
+       some *purposefully* rigged install rules there try something
+       like:
+
+         install bla.exe .../inst/bin/foo.exe
+         install script.sh .../inst/bin/foo
+
+       and the second install command fails (trying to overwrite the
+       '.../inst/bin/foo.exe' file, likely due to overly aggressive
+       appending of '.exe' suffix when copying/renaming Windows
+       executables).  Since this is a Cygwin issue rather than an
+       Automake one (and since the use case we are testing is a really
+       corner-case anyway, making it unworthy to attempt to work
+       around it in automake proper), we simply hack the test case
+       to avoid the failure.
+
+       Analysis by Peter Rosin and Ralf Wildenhues.
+
+       References:
+       <http://lists.gnu.org/archive/html/automake-patches/2010-08/msg00153.html>
+       <http://thread.gmane.org/gmane.os.cygwin/119380>
+
+       * tests/transform2.test: Skip the affected part of the test
+       if the described Cygwin behaviour is detected.
+
+2012-01-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure of deleted-am.test with FreeBSD make
+
+       * tests/deleted-am.test: Sleep between the removal of the included
+       '.am' fragments and the subsequent "make" calls, to ensure that the
+       remake rules kick in.  This is required to avoid racy spurious
+       failures (~ 60% of the time) with FreeBSD make.
+
+2012-01-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid possibly undeserved PASS from check8.test
+
+       * tests/check8.test: Strengthen grepping of "make check" output
+       where we know no problem with VPATH rewrites can take place.  This
+       has the advantage of ensuring that we won't match also "sub/bar"
+       when looking for "bar" during the uncolorized tests.
+
+       Suggestion by Peter Rosin.
+
+2012-01-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: work around MinGW/MSYS issue in fd redirections
+
+       Some checks on $(AM_TESTS_FD_REDIRECT) were failing on MSYS, likely
+       because system calls like "write(9, ...)" simply doesn't work for
+       MinGW-compiled programs.  Similar usages work for the shell scripts
+       though, since /bin/sh is an MSYS program and thus is a lot more
+       POSIX-ish than most MinGW-compiled programs.
+
+       The best fix for this issue is to separate the checks using shell
+       scripts as dummy test cases from the checks using compiled programs
+       for the same purpose, and skip these latter checks on MinGW.
+
+       This change fixes automake bug#10466.  Report by Peter Rosin.
+
+       * tests/parallel-tests-fd-redirect.test: Move checks using compiled
+       C programs as test cases to ...
+       * tests/parallel-tests-fd-redirect-exeext.test: ... this new test.
+       * tests/list-of-tests.mk: Update.
+
+2012-01-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       warnings: more precise category and message for one warning
+
+       If automake detected an usage like "AC_CONFIG_FILES([./Makefile])"
+       in configure.ac, it warned that such an usage was unportable to
+       non-GNU make implementations.  But the truth is actually worse:
+       that is actually *unportable to GNU make* itself, since it breaks
+       the automatic remake rules in subtle ways.
+
+       So we now reveal this breakage in a new test case, and enhance
+       the warning by giving it a more precise and correct wording, and
+       by moving it from the category 'portability' to the category
+       'unsupported'.
+
+       * automake.in (scan_autoconf_config_files): Improve the warning.
+       * tests/conffile-leading-dot.test: New test.
+       * tests/list-of-tests.mk: Add it.
+
+2012-01-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       release: revamp rules to tag and upload the releases
+
+       The older Makefile rules used to create and tag the releases were
+       based on an approach we now consider flawed: they over-mechanized
+       some delicate operations that are better performed manually *and*
+       double-checked by a developer, and at the same time they did not
+       run enough safety checks.
+
+       * Makefile.am (GIT, version_rx, stable_version_rx, beta_version_rx,
+       match_version, git_must_have_clean_workdir, determine_release_type):
+       New variables.
+       (git-release, git-dist): Remove, they are superseded by ...
+       (git-tag-release, git-upload-release): ... these new targets.
+
+2012-01-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       amversion: add missing dependency
+
+       * m4/Makefile.am ($(top_srcdir)/m4/amversion.m4): Depend on
+       configure.ac, since the value of $(VERSION) can change every
+       time configure.ac is updated.
+
+2012-01-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: update advice w.r.t. synced files
+
+       * HACKING: Update and improve advices and explanations about files
+       in the automake repository that are now owned by automake, but
+       mirrored from other upstreams.  Also, don't list these files
+       explicitly, rather point the reader to the $(FETCHFILES) variable
+       in Makefile.am.
+       * Makefile.am (FETCHFILES): Don't state that "there should be a
+       lot more here", as this is not true anymore today.  Only 'COPYING'
+       must be synced by hand.
+
+2012-01-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: don't reference ChangeLog anymore
+
+       * HACKING: Don't reference the ChangeLog file anymore, since that
+       is now generated from the git commit messages, not maintained by
+       hand.  So remove advice that is obsolete, and speak about "git
+       commit message" instead of "ChangeLog entry" for advice that is
+       still relevant.
+
+2012-01-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       multilib: move to contrib
+
+       This follows up on commit v1.11-665-gc5df21e of 2012-01-17,
+       "multilib: deprecate, will be moved to contrib".  See also:
+       <http://lists.gnu.org/archive/html/automake-patches/2012-01/msg00109.html>
+
+       * NEWS: Update.
+       * automake.in ($seen_multilib): Remove.
+       (scan_autoconf_traces): Don't trace 'AM_ENABLE_MULTILIB', and don't
+       handle it anymore.
+       (handle_multilib): Remove.
+       (generate_makefile): Don't call it anymore.
+       * doc/automake.texi: Remove documentation about multilib support,
+       related macros, and helper files.
+       * m4/multi.m4: Delete.
+       * m4/Makefile.am (dist_automake_ac_DATA): Remove it.
+       * lib/am/multilib.am: Delete.
+       * lib/am/Makefile.am (dist_am_DATA): Remove it.
+       * contrib/multilib/multilib.am: New file, adapted from extracts of
+       a Makefile.in generated with automake multilib support.  We did
+       this instead of moving and editing 'lib/am/multilib.am' because it
+       allows us to license this file with a liberal license that will
+       permit users to copy-and-paste it in non-GPLed Makefile.am files
+       too).
+       * lib/symlink-tree, lib/config-ml.in: Move ...
+       * contrib/multilib: ... in here.
+       * lib/Makefile.am (dist_script_DATA, dist_pkgvdata_DATA): Update.
+       * contrib/multilib/README: New file.
+       * contrib/Makefile.am (EXTRA_DIST): Add the files created or moved
+       in 'contrib/multlib'.
+       * tests/multilib.test: Update and enhance a little.
+       * tests/help-multilib.test: Likewise.
+
+2012-01-23  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: improve diagnostics when write(2) fails
+
+       MinGW programs can't redirect file descriptor 9, they can only redirect
+       stdin, stdout and stderr.  So, improve the information in the test log.
+
+       See automake bug#10466.
+
+       * tests/parallel-tests-fd-redirect.test (baz.c, zardoz.c): Check the
+       return value from the write(2) call, and report detected errors.
+
+2012-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'compilers-for-testsuite'
+
+       * compilers-for-testsuite:
+         readme: how to run the testsuite with cross-compilers
+         tests: no need to unset CFLAGS in tests requiring 'gcc' anymore
+         test defs: allow compilers to be auto-selected on user's request
+         test defs: substitute compilers and flags found at configure time
+         test defs: setup `*FLAGS' variables for GNU compilers
+         configure: search generic compilers for use in the tests
+
+2012-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Peter Rosin  <peda@lysator.liu.se>
+
+       readme: how to run the testsuite with cross-compilers
+
+       * tests/README: Suggest a better way to run the automake testsuite
+       with cross-compilers -- that is, configuring the Automake source
+       tree with proper `--build' and `--host' configure option.  And
+       yes, specifying both these options (not only `--host') is indeed
+       required to avoid spurious failures in corner cases.
+       When you call configure with the `--host' option but without the
+       `--build' option, configure tries to auto-detect whether you are
+       cross-compiling or not, by trying to run a generated executable.
+       That test might spuriously "succeed" in some corner cases (e.g.,
+       Cygwin is able to run non-Cygwin apps).  In fact, generally, it
+       can be the case that a cross-compilation is not detected as a
+       cross anymore just because someone has installed an emulator; as
+       an example, think of what can happen on a GNU/Linux system that
+       is configured (through the use of the binfmt_misc kernel module)
+       to execute PE executables (compiled for MS-DOS or Windows) through
+       Wine *automatically*.  In conclusion, configure needs to be used
+       as recommended in the documentation (i.e., by specifying *both*
+       `--host' and `--build' instead of just one of them) to not have
+       the build fall into any of a number of weird traps.
+       * tests/defs (cross_compiling): Improve comments.
+
+2012-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: no need to unset CFLAGS in tests requiring 'gcc' anymore
+
+       * tests/ccnoco.test: Since this test have "gcc" in $required,
+       there is no need to manually nullify the CFLAGS variable, since
+       now `tests/defs' should automatically re-define that to a value
+       appropriate for gcc.
+       * tests/ccnoco3.test: Likewise.
+
+2012-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: allow compilers to be auto-selected on user's request
+
+       In the recent changes, by pre-setting the required compilers for
+       the `configure' scripts launched by the test scripts, we have
+       slightly reduced the coverage of autoconf/automake code aimed at
+       automatically detecting said compilers.  This commit restore such
+       coverage, by allowing the user to instruct the testsuite *not* to
+       preset the testsuite compiler(s).
+
+       * tests/defs (cc): If $CC is set to the special value "autodetect"
+       or "autodetected", don't export the configure-detected CC, CFLAGS
+       and CPPFLAGS variables; rather, unset them.
+       (c++): Likewise, but for CXX, CXXFLAGS and CPPFLAGS instead.
+       (fortran): Likewise, but for FC and FCFLAGS instead.
+       (fortran77): Likewise, but for F77 and FFLAGS instead.
+       (require_compiler_): New function, to reduce code duplication.
+
+2012-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: substitute compilers and flags found at configure time
+
+       * tests/Makefile.am (do_subst): Also substitute CC, CXX, F77, FC,
+       CPPFLAGS, CFLAGS, CXXFLAGS, FCFLAGS and FFLAGS.
+       * tests/defs-static.in: Define those variables, allowing for
+       overrides from the environment.
+       * tests/defs (for tool in $required): Export (subsets of) those
+       variables when the stuff in `$required' calls for it.
+       Add related explanatory comments.
+
+2012-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: setup `*FLAGS' variables for GNU compilers
+
+       * configure.ac: Setup some `*FLAGS' variables for use by the
+       GNU compilers in our testsuite.  For example, use `GNU_CFLAGS'
+       instead of `CFLAGS', and so on for similar variables.  This
+       is especially useful in case the compilers found or defined
+       at configure time are not the GNU ones.
+       * tests/defs-static.in: Initialize those same variables with
+       the values set at configure time, but allowing overrides
+       from the environment.
+       * tests/Makefile.am (do_subst): Process configure-style
+       substitutions of those variables (e.g., `@GNU_CFLAGS@').
+       * tests/defs: When a GNU compiler is required, override the
+       corresponding generic `*FLAGS' variable with the GNU-specific
+       variant (e.g., redefine `$CFLAGS' to take the value of
+       `$GNU_CFLAGS').
+
+2012-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       configure: search generic compilers for use in the tests
+
+       * configure.ac: Look for "generic" C, C++ and Fortran compilers,
+       with the aim of starting to use them in the testsuite (this will
+       be done in future changes).  This is more tricky than it seems,
+       since we don't want to abort the whole configure script even if
+       no one of those compilers is available (after all, they're only
+       needed by the testsuite, not to build automake), but currently
+       autoconf doesn't offer an easy way to obtain this behaviour.
+       We prefer non-GNU compilers to the GNU ones, to ensure better
+       coverage "in the wild".
+
+2012-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant 'set -e' calls
+
+       * tests/aclocal-install-absdir.test: Do not set the 'errexit' shell
+       flag, as it is already set by 'tests/defs'.
+       * tests/distcheck-pr10470.test: Likewise.
+       * tests/objext-pr10128.test: Likewise.
+       * tests/parallel-tests-dry-run-1.test: Likewise.
+       * tests/silent-nested-vars.test: Likewise.
+       * tests/tar-override.test: Likewise.
+       * tests/vala-mix.test: Likewise.
+       * tests/vala-vpath.test: Likewise.
+
+2012-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         tests: fix spurious failure due to autom4te caching
+         vala: fix name of temporary file used in vala rules
+         vala tests: add missing 'valac' requirement, and other minor fixlets
+         news: fix grammaro
+
+2012-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure due to autom4te caching
+
+       * tests/lzma.test: Remove stale autom4te.cache directories, to
+       prevent racy, spurious failures (using 'aclocal --force' was
+       not enough, since the cache was still picked up by the following
+       automake call).
+
+2012-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist tests: missing 'compress' program was causing spurious failures
+
+       Fixes automake bug#10575.
+
+       The compress(1) tool is becoming anachronistic, and thus is not
+       installed by default on modern distros (e.g., Fedora 16).  We
+       can't thus unconditionally assume it exists on every reasonable
+       portability target.
+
+       * tests/dist-formats.tap ($missing_compressors): When defining
+       this, don't assume anymore that compress(1) is unconditionally
+       available.
+       (Parallel compression): Skip this sub-test if compress(1) is
+       unavailable.
+       Since we are at it, fix a couple of unrelated buglets: a typo
+       in a test name (s/distcheck/ark-exists/), and some attempts to
+       remove directories with "rm -f".
+
+2012-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: fix name of temporary file used in vala rules
+
+       Unquoted `@' characters in a "..." string in the automake script
+       were causing slightly wrong rules to be emitted in the generated
+       Makefile.in; i.e., rules like:
+
+         rm -f $@ && echo stamp > $10t
+
+       instead of the expected:
+
+         rm -f $@ && echo stamp > $@-t
+
+       * automake.in (lang_vala_finish_target): Fix that.
+       * tests/vala.test: Enhance.
+
+2012-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala tests: add missing 'valac' requirement, and other minor fixlets
+
+       See also automake bug#10575.
+
+       * tests/vala-mix.test ($required): Add 'valac'; this will avoid
+       spurious failures on systems lacking a Vala compiler.
+       Add some explicative comments for a couple of non-obvious make
+       calls.
+       Make grepping of "make -n" slightly stricter, to avoid potential
+       false positives.
+
+2012-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: fix grammaro
+
+       * NEWS (Miscellaneous changes): Fix grammaro: s/don't/doesn't/.
+
+       Reported by Jim Meyering.
+
+2012-01-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         fixup: distribute 'contrib/multilib/multi.m4'
+         multilib: deprecate, will be moved to contrib
+         fixlet: flags for Fortran77 compiler are in FFLAGS, not F77FLAGS
+         cosmetics: fix a botched comment in a maintainer check
+
+2012-01-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: distribute 'contrib/multilib/multi.m4'
+
+       This fix up a blunder in commit v1.11-665-gc5df21e of 2012-01-17,
+       "multilib: deprecate, will be moved to contrib".
+
+       * contrib/Makefile.am (EXTRA_DIST): Add 'multilib/multi.m4'.
+
+2012-01-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       multilib: deprecate, will be moved to contrib
+
+       As of 2012-01-17, according to Google codesarch, almost no active
+       package is using the 'multilib' feature offered by automake.
+
+       The only major exception seems to be GCC...  But on a closer look,
+       it become clear that GCC basically carries its own version of
+       multilib support.  In fact, Automake syncs its 'config-ml.in' and
+       'symlink-tree' scripts from GCC; and the GCC repository contains a
+       version of the 'multi.m4' file that is *more* updated than the one
+       in the automake repository (the former having being modified the
+       last time in 2008, the latter only in 2006).
+
+       The 'multilib' feature was anyway hardly documented at all, only
+       being briefly cited in the manual as an "obscure feature", "still
+       experimental", that was only for users "familiar with multilibs"
+       and which "can debug problems they might encounter".  We expect
+       such users to be motivated and knowledgeable enough to make the
+       minor adjustments required to start using the contrib version of
+       multilib, if they really need to.
+
+       * NEWS (Future backward incompatibility): Update.
+       * doc/automake.texi: Deprecate multilib support.  State that it
+       will be removed from automake core in the next major release.
+       * m4/multi.m4 (AM_ENABLE_MULTILIB): Deprecate.  If called, now
+       gives a proper warning in the 'obsolete' category (while still
+       retaining its former behaviour for the rest).
+       * tests/multilib.test: Update.
+       * contrib/multilib/multi.m4: New, verbatim copy of the earlier
+       version of multi.m4, without the new deprecation warning.
+       * Makefile.am (fetch): Don't sync the 'config-ml.in' file nor
+       the 'symlink-tree' script from GCC SVN repository anymore.
+       (FETCHFILES): Adjust.
+       (WGET_GCC): Remove, it's not needed anymore.
+
+2012-01-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixlet: flags for Fortran77 compiler are in FFLAGS, not F77FLAGS
+
+       This change fixes automake bug#10555.
+
+       Note that the bug was a minor one, since it didn't affect the
+       compilation rules generated by automake, but only only the "hints"
+       printed by automake in some error messages (e.g., "The usual way
+       to define `FFLAGS' is to add AC_PROG_F77 to configure.ac").
+
+       * lib/Automake/Variable.pm (%_ac_macro_for_var): The code generated
+       by AC_PROG_F77 uses FFLAGS, not F77FLAGS, as the variable where to
+       look for switches for the Fortran 77 compiler: adjust accordingly.
+
+2012-01-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix a botched comment in a maintainer check
+
+       * Makefile.am (sc_tests_make_without_am_makeflags): Adjust
+       botched description of this check.
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         cmdline parsing: move into a dedicated perl module
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cmdline parsing: move into a dedicated perl module
+
+       With this change, we delegate most of the automake and aclocal code
+       for command-line options parsing to a new module "Automake::Getopt".
+       This allows better code sharing between automake and aclocal, and
+       also with Autoconf, which will sync the new module from us.  See
+       also autoconf commit 'v2.68-120-gf4be358' (2012-01-17, "getopt: new
+       Autom4te::Getopt module"), and this mailing list discussion:
+       <http://lists.gnu.org/archive/html/autoconf-patches/2012-01/msg00033.html>
+
+       This change might interact with the behaviour described in automake
+       bug#7434; for example, starting from now, "automake -Wfoo --version"
+       will cause automake to emit diagnostic like "unknown warning
+       category 'foo'" before actually printing the version number and
+       exiting.  This is not a big deal in practice, and the code sharing
+       and simplifications introduced by this patch is certainly worth it.
+       Still, we should revisited the issue in the future.
+
+       * lib/Automake/Getopt.pm: New module, basically a slightly-edited
+       copy of the 'lib/Autom4te/Getopt.pm' file from the autoconf devel
+       repository (commit v2.68-120-gf4be358).  It defines and exports ...
+       (parse_options): ... this new function.
+       * automake.in (parse_arguments): Use the new function.
+       * aclocal.in (parse_arguments): Likewise.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add the new file.
+       * tests/getopt.test: Remove.
+       * tests/list-of-tests.mk: Update.
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: don't use custom TAP diagnostic in our own tests
+
+       We simply don't need it (yet), we are not actually using it (the
+       set up for using it is there in the Makefile, but no test script
+       makes actual use of that).
+
+       * tests/Makefile.am (TAP_LOG_DRIVER_FLAGS): Remove '-comments' and
+       '--diagnostic-string' options.
+       * tests/defs ($diag_string_): Remove redefinition.
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: better name for a couple of tests
+
+       Two tests checking "make -n" behaviour with the parallel-tests
+       harness has been introduced in the Automake repository in the past:
+       one of them ('parallel-tests-dryrun.test') in the maint branch, the
+       other one ('parallel-tests-dry-run.test') in the master branch.
+
+       Needless to say, their too-much-similar names can be a great source
+       of confusion now.  Moreover, the two tests have been written during
+       distinct refactorings, and are meant to exercise different code
+       paths and/or usage scenarios, so that no one of them subsumes the
+       other, and they should be both kept.
+
+       Thus we simply rename both of them to avoid future confusion.
+
+       * tests/parallel-tests-dryrun.test: Renamed ...
+       * tests/parallel-tests-dry-run-1.test: .. to this.
+       * tests/parallel-tests-dry-run.test: Renamed ...
+       * tests/parallel-tests-dry-run-2.test: .. to this.
+       Add cross-reference among them.
+       * tests/list-of-tests.mk: Adjust.
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: simplify our top-level "recheck" target
+
+       * Makefile.am (recheck): Now that all the test scripts are in
+       the 'tests/' directory, its recipe can be greatly simplified,
+       as we don't need to deal with recursion in multiple subdirectories
+       anymore.
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         cosmetics: move CheckListOfTests.am into tests/
+         tests: move all under the same hierarchy ('tests/' directory)
+         gitlog-to-changelog: update from upstream
+         changelog: don't cluster multiple entries under the same "date line"
+
+       + Extra non-trivial edits:
+
+       * tests/Makefile.am (XFAIL_TESTS): Update with the xfailing tests
+       that were in 'lib/Automake/tests'.  Add proper "FIXME" comment.
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: move CheckListOfTests.am into tests/
+
+       After the previous change 'v1.11-660-gfbeda3d', the makefile
+       fragment 'CheckListOfTests.am' is used only by the Makefile.am
+       in 'tests'; so keeping them two nearer makes sense.  It also help
+       in reducing potential confusion, since (after that same change)
+       the whole Automake testsuite is expected to be (and remain)
+       contained into the 'tests' subdirectory.
+
+       * CheckListOfTests.am: Move ...
+       * tests/CheckListOfTests.am: ... to this.
+       * tests/Makefile.am (include): Adjust.
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: move all under the same hierarchy ('tests/' directory)
+
+       This simplifies the organization of the Automake source tree and
+       reduces the (lamentably high) number of Makefiles in the Automake
+       build system by one.  It also makes the maintainer check that
+       verifies the consistency of list of tests more self-contained and
+       simpler.  Finally, it might be a first step forward the transition
+       to a non-recursive build system for automake (if we ever decide to
+       go down that road fully some day).
+
+       * lib/Automake/tests: All the '*.pl' tests in here moved ...
+       * tests/pm: ... into this new directory.
+       * lib/Automake/tests/Makefile.am: Remove, its meaningful
+       contents moved ...
+       * tests/Makefile.am: ... here, with obvious adjustments.
+       (test_subdirs): New variable, for the sake of the recipe
+       of 'maintainer-check-list-of-tests'.
+       * CheckListOfTests (maintainer-check-list-of-tests): Enhance
+       its recipe to make it able to deal with test script residing
+       in subdirectories.
+       * Makefile.am (maintainer-check-list-of-tests): Simplified.
+       (TEST_SUBDIRS): Remove, no more needed.
+       * tests/list-of-tests.mk (perl_TESTS): New variable, lists
+       the '.pl' tests just moved into 'tests/pm'.
+       (handwritten_TESTS): Add the contents of '$(perl_TESTS)'.
+       * lib/Automake/Makefile.am (SUBDIRS): Remove.
+       * configure.ac (AC_CONFIG_FILES): Update.
+       * .gitignore: Adjust.
+
+2012-01-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gitlog-to-changelog: update from upstream
+
+       * lib/gitlog-to-changelog: Update from gnulib upstream.  The only
+       changes should be cosmetic and/or minor fixlets.
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       changelog: don't cluster multiple entries under the same "date line"
+
+       * lib/gitlog-to-changelog: Synced from gnulib.  The new version
+       has a new option '--no-cluster', that disables clustering of
+       adjacent commit messages under the same "date line".
+       * Makefile.am (gitlog_to_changelog_options): Add '--no-cluster'.
+       Also add a proper '--format' specification to ensure we have a
+       blank line between the summary line and the commit message body.
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         fixup: contrib: really integrate in automake build system
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: contrib: really integrate in automake build system
+
+       * configure.ac (AC_CONFIG_FILES): Add 'contrib/Makefile'.
+       * Makefile.am (SUBDIRS): Add 'contrib'.
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: move ".log -> .html" conversion in contrib
+
+       That feature has been deprecated in the 1.11.x series, and marked
+       for removal from the automake core in the 1.12 release.  Here we
+       implement such removal.
+
+       Reference:
+         <http://lists.gnu.org/archive/html/automake/2012-01/msg00005.html>
+
+       See also commit 'v1.11-650-g20f2ac9'.
+
+       * doc/automake.texi, NEWS: Update.
+       * lib/am/check.am: Don't include 'check-html.am' anymore.
+       * lib/am/check-html.am: Move ...
+       * contrib/check-html.am: ... to this, and adjust comments.
+       * lib/am/Makefile.am (dist_am_DATA): Update.
+       * contrib/Makefile.am (EXTRA_DIST): Likewise.
+       * tests/parallel-tests2.test: Adjust.
+       * tests/parallel-tests-dryrun.test: Remove checks on the
+       ".log -> .html" conversion.
+       * tests/test-driver-custom-html.test: Remove as obsolete.
+       * tests/test-driver-custom-no-html.test: Likewise.
+       * tests/tap-html.test: Likewise.
+       * tests/list-of-tests.mk: Don't list removed tests anymore.
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         contrib: new, a directory for non-mainstream functionalities
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: some makes in parallel mode unconditionally serialize output
+
+       Some make implementations (among them, FreeBSD make, NetBSD make,
+       and Solaris Distributed Make), when run in parallel mode, serialize
+       the output from their targets' recipes unconditionally.  This has
+       the nasty side effect that the user won't see the partial results
+       of a TAP test until the test has terminated.  This is not something
+       our TAP driver script can work around unfortunately; in fact, the
+       driver is sending out its output progressively and "in sync" with
+       test execution -- it is make that is stowing such output away
+       instead of presenting it to the user as soon as it gets it.
+
+       So we content ourself with working around the issue in our
+       testsuite, to at least avoid failures we could do nothing to
+       prevent.
+
+       * tests/tap-realtime.test: Skip this test if the make program used
+       is a non-GNU make running in parallel mode.  And if Sun dmake is
+       being used, try to force it to run in serial mode, by exporting the
+       'DMAKE_MODE' environment variable to "serial".
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       contrib: new, a directory for non-mainstream functionalities
+
+       This new 'contrib' hierarchy will be a good place were to move
+       implementation/support for obsolescent features we are not yet
+       ready to remove completely, or were to leave experimental or
+       third-party features to cook before their eventual inclusion in
+       the automake core.
+
+       * contrib: New directory.
+       * contrib/README: New file.
+       * contrib/Makefile.am: New file.
+       (EXTRA_DIST): Distribute README.
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: APIs for custom test drivers are highly experimental
+
+       * doc/automake.texi (API for Custom Test Drivers): The APIs
+       described here are not "somewhat experimental", but rather
+       "highly experimental".  Don't promise the sure a sort of
+       backward-compatibility that we are very likely not going to
+       keep.
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failures with parallel make
+
+       Some tests are unprepared to be run with a make command that runs
+       in parallel mode by default.  This can happen e.g., if the user
+       explicitly run the tests with something like:
+
+         AM_TESTSUITE_MAKE="gmake -j3" in the
+
+       in the environment, but also if the make used in the testsuite is
+       Sun Distributed Make, and the 'DMAKE_MODE' environment variable is
+       set to "parallel".
+
+       Fix some instances of this issue.
+
+       * tests/tap-doc.test (Makefile.am): Declare explicit dependencies
+       among the test cases, to ensure they are run in the correct order.
+       * tests/tap-doc2.test: Set the 'DMAKE_MODE' environment variable
+       to "serial", to prevent Sun dmake from trying to run in parallel.
+       Remove other now-superfluous workarounds for dmake.
+
+2012-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures with Solaris dmake
+
+       Solaris Distributed Make, when run in parallel mode, can sprinkle
+       its standard output with lines like:
+
+         hostname --> 2 jobs
+         ...
+         hostname --> Job output
+         ...
+
+       This behaviour was causing spurious errors in some tests where we
+       compare the output of make with a known, expected value.  Fix that.
+
+       * tests/tap-doc.test: Before comparing the output from make with its
+       expected value, remove extra lines that could have been printed by
+       Solaris dmake.
+       * tests/tap-doc2.test: Likewise.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         recheck: fix interaction with "make -n"
+         vala: avoid potential useless remakes (minor bugfix)
+         vala: enhance tests
+         recheck: behave better with non-GNU make
+         check: separate .log -> .html conversion from core testsuite harness
+         docs: deprecate .log -> .html conversion by parallel-tests
+         tests: list some forgotten test cases in $(TESTS)
+         maintcheck: consistency of list of test scripts
+         build: explicitly declare some targets as .PHONY
+         maint: remove obsolete/broken maintainer targets
+         build: improve silencing of automake build system
+         tests: move list of tests in its own Makefile fragment
+
+       + Extra non-trivial edits:
+
+       * tests/parallel-tests2.test: Obvious edits to merge the slightly
+       inconsistent enhancements to coverage done in master with those
+       done in maint.
+       * lib/am/check.am (check-TESTS, recheck): Sweeping and rather
+       complex changes to merge the considerable divergences between
+       maint and master in a way that is meaningful and, where possible,
+       retains the semantic changes from both maint and master.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'check-html-deprecate' into maint
+
+       * check-html-deprecate:
+         recheck: fix interaction with "make -n"
+         recheck: behave better with non-GNU make
+         check: separate .log -> .html conversion from core testsuite harness
+         docs: deprecate .log -> .html conversion by parallel-tests
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       recheck: fix interaction with "make -n"
+
+       * lib/am/check.am (recheck): Ensure the recipe does not erroneously
+       remove '.log' files when running under "make -n".  For the sake of
+       NetBSD make, this also means that ...
+       (.MAKE): ... this cannot depend on 'recheck' anymore.
+       * tests/parallel-tests-dryrun.test: New test.
+       * tests/list-of-tests.mk: Add it.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: avoid potential useless remakes (minor bugfix)
+
+       * automake.in (lang_vala_finish_target): Ensure the timestamp file
+       from which the C files generated from Vala sources depend on gets
+       created with a modification time that is truly older than those of
+       said generated C files.  This prevents make from attempting useless
+       rebuilds (which were bound to happen deterministically on systems
+       with sub-second timestamp resolutions).  It is worth noting that,
+       luckily, those useless rebuild ended up being a no-op, since the
+       Vala compiler is careful not to update the timestamp of an output
+       file if its content has not changed from the previous version.
+       Still, the useless rebuilds messed up "make -q" and "make -n"
+       invocations, and were technically incorrect (despite being, as
+       noted, inoffensive in practice).
+
+       Problem revealed by failure of tests vala-mix.test and vala5.test
+       on a fast Solaris 10 system whose filesystem had a sub-second
+       timestamp resolution.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: enhance tests
+
+       * tests/vala.test: Extend test.  Throw in some cosmetic and
+       consistency changes since we are at it.
+       * tests/vala5.test: Avoid uselessly requiring libtool.  Ensure a
+       failure happens in case VALAFLAGS are not supported as expected.
+       Extend test in some ways.  Throw in some cosmetic and consistency
+       changes since we are at it.
+       * tests/vala-mix.test: New test.
+       * tests/list-of-tests.mk: Add it.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       recheck: behave better with non-GNU make
+
+       * automake.in (handle_tests): Also substitute '%CHECK_DEPS%' with
+       the value of the '@check' array, containing the list of early
+       test dependencies like '$(check_SCRIPTS)', $(check_PROGRAMS)',
+       etc.
+       * lib/am/check.am (recheck): Explicitly depend on '%CHECK_DEPS%'.
+       (check, recheck): Unify the implementation of their recipes, with
+       different code paths taken depending on the name of the target.
+       This makes the implementation of "recheck" less brittle in the
+       process (especially when non-GNU make and AM_MAKEFLAGS overriding
+       are involved).
+       * lib/am/check-html.am (check-html, recheck-html): Likewise.
+       * tests/check.test: Adjust to avoid spurious failure.
+       * tests/parallel-tests2.test: Improve coverage.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: separate .log -> .html conversion from core testsuite harness
+
+       That feature is to be deprecated in the 1.11.x series, and removed
+       from the automake core in the 1.12 release, where it will instead
+       be offered in a semi-independent extra '*.am' fragment.  So let's
+       start better separating the .log -> .html conversion from the "core
+       code" of the parallel-tests harness.
+
+       Reference:
+         <http://lists.gnu.org/archive/html/automake/2012-01/msg00005.html>
+
+       * lib/am/check.am (.log.html, check-html, recheck-html): Move these
+       targets ...
+       * automake.in (handle_tests): ... and the initialization of the
+       TEST_SUITE_HTML variable and the cleaning of the $(TEST_SUITE_HTML)
+       file ...
+       * lib/am/check-html.am: ... in this new file, with related (minor)
+       refactorings, enhancements and simplifications.
+       * lib/am/check.am (.MAKE. PHONY, AM_RECURSIVE_TARGETS): Adjust.
+       * lib/am/Makefile.am (dist_am_DATA): Add 'check-html.am'.
+       * tests/parallel-tests2.test: Improve coverage.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: deprecate .log -> .html conversion by parallel-tests
+
+       That feature is to be deprecated in the 1.11.x series, and
+       removed in the 1.12 release.
+
+       Reference:
+         <http://lists.gnu.org/archive/html/automake/2012-01/msg00005.html>
+
+       * doc/automake.texi (Simple Tests using parallel-tests): Deprecate
+       the '.log' -> '.html' conversion and the targets 'check-html' and
+       'recheck-html'.  Related rewording and reformatting.
+       * NEWS (Future backward-incompatibilities): Update.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: list some forgotten test cases in $(TESTS)
+
+       This way, they will be properly executed by "make check", and
+       properly distributed.  Our previous commit 'v1.11-647-g27f1a1c'
+       is already paying its dividends!
+
+       * tests/list-of-tests.mk (handwritten_TESTS): Add check12.test,
+       dist-missing-included-m4.test, dist-missing-am.test, and
+       dist-missing-m4.test.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: consistency of list of test scripts
+
+       This is basically a backport of commit 'v1.11-358-g7b6ab07'
+       and its follow-ups.  The possibility of easily checking that
+       the list of test scripts listed in a Makefile equals that of
+       the tests on the filesystem has proved itself so useful that
+       it's worth taking the annoyance of backporting it to maint.
+
+       * CheckListOfTests.am: New file, backported from master (commit
+       'v1.11-1736-g083a75b') with minor adjustments.
+       (maintainer-check-list-of-tests): New target, check for consistency
+       between the list of tests defined in the including Makefile and the
+       list of tests on the filesystem.
+       (clean-maintcheck-testslist-tmp): New rule, to clean up temporary
+       files that might be left around by the rules associated with the
+       previous target.
+       (clean-local): Depend on it.
+       * lib/Automake/tests/Makefile.am: Include `CheckListOfTests.am'.
+       * tests/Makefile.am: Likewise.
+       * Makefile.am (maintainer-check-list-of-test): New target,
+       calling recursively into `tests/' and `lib/Automake/tests/',
+       using ...
+       (TEST_SUBDIRS): ... this new variable.
+       (maintainer-check): Added dependency from the new target
+       `maintainer-check-list-of-tests'.
+
+2012-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: completeness check on list of tests simplified
+
+       * CheckListOfTests.am: Simplify the recipe, accordingly to the
+       assumption that all the entries in $(TEST_EXTENSIONS) and in
+       $(TESTS) have an associated real test script.  This was not the
+       case when we used to have some entries in $(TESTS) that were not
+       real files, but rather "parameters" (sort of) for the corresponding
+       $(LOG_COMPILER).  However, that usage had proven to be confusing
+       and brittle, and thus removed (see commit 'v1.11-1308-g375f23d' of
+       September 8 2011, "testsuite: revamp generation of autogenerated
+       tests").
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: explicitly declare some targets as .PHONY
+
+       * Makefile.am (fetch, git-dist, git-release, maintainer-check):
+       Declare as ".PHONY".
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: remove obsolete/broken maintainer targets
+
+       * Makefile.am (git-diff): Remove.  First, we don't distribute diffs
+       between an automake version and the next one anyway, so this target
+       is pointless.   Moreover, its recipe has been broken for quite a
+       long time now, always generating an empty diff due to the spurious
+       '$(PACKAGE)' argument that was passed to the "git diff" invocation.
+       (path-check): Remove.  The 'pathchk' program running in this check
+       complains about any file with name longer than 14 characters, which
+       is a ridiculously low limit for today standards.  Also, we already
+       had several test scripts (no less than 195!) that were exceeding
+       that limit, and nobody ever complained (not even on MinGW/MSYS nor
+       Cygwin).
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: improve silencing of automake build system
+
+       In this change, we continue the silencing of the automake build
+       system that has been started in commit v1.11-642-g17542c3, but
+       which has been left incomplete there for an (absent-mindness)
+       mistake.
+
+       * Makefile.am (INSTALL): Silence the recipe.
+       (automake, aclocal): Likewise, and improve them a little since
+       we are at it.
+       * lib/Automake/Makefile.am (Config.pm): Likewise.
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: move list of tests in its own Makefile fragment
+
+       This change will make it easier to merge maint into master, which
+       has a similar Makefile setup in the testsuite.
+
+       * tests/Makefile.am (include): Inclusion of ...
+       * tests/list-of-tests.mk: ... this new file.
+       * tests/Makefile.am (TESTS): Move most of its content into,
+       and redefine in function of, ...
+       * tests/list-of-tests.mk (handwritten_TESTS): ... this new
+       variable.
+       * tests/gen-parallel-tests: Update.
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         tests: move list of tests in its own Makefile fragment
+         build: silence automake build system
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: move list of tests in its own Makefile fragment
+
+       This change will make it easier to merge maint into master, which
+       has a similar Makefile setup in the testsuite.
+
+       * tests/Makefile.am (include): Inclusion of ...
+       * tests/list-of-tests.mk: ... this new file.
+       * tests/Makefile.am (TESTS): Move most of its content into,
+       and redefine in function of ...
+       * tests/list-of-tests.mk (handwritten_TESTS): ... this new
+       variable.
+       * tests/gen-parallel-tests: Update.
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: silence automake build system
+
+       * configure.ac (AM_SILENT_RULES): Invoke with "yes" as a parameter,
+       to activate silent rules by default.
+       * NEWS: Update.
+       * Makefile.am (sc_perl_syntax): Silence its recipe unconditionally,
+       similarly to what is done for other syntax checks.
+       (release-stats): Be silent by default *but not unconditionally*,
+       thanks to the use of $(AM_V_GEN).
+       (path-check, git-diff): Be silent by default, thanks to the use
+       of $(AM_V_GEN).
+       * m4/Makefile.am ($(top_srcdir)/m4/amversion.m4): Likewise.
+       * doc/Makefile.am ($(srcdir)/amhello-1.0.tar.gz): Likewise.
+       * tests/Makefile.am ($(srcdir)/parallel-tests.am): Likewise.
+       ($(parallel_tests)): Likewise.
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         gnupload: moved to gnulib
+         sync: gitlog-to-changelog from gnulib upstream
+         test defs: backport optimized 'using_gmake' implementation
+         tests: unify some tests on "make -n", reducing duplication
+         vala: use "$(am__cd) $(srcdir)", not "cd $(srcdir)"
+
+       + Extra edits:
+
+       * tests/maken3.test: Carry over (with necessary adjustments) the
+       code from maken4.test that determines whether $MAKE supports the
+       special '.MAKE' target.
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gnupload: moved to gnulib
+
+       Since the gnupload script is not required by automake-generated
+       code (be it configure or Makefile content), and is not specifically
+       tied to automake in any way, it is better to have its master copy
+       installed in the gnulib repository, as is already done for similar
+       generally-useful, maintainer-oriented scripts.  We can them sync it
+       from there.
+
+       See also gnulib commit v0.0-6822-gf8b7120, and:
+       <http://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00222.html>
+
+       * Makefile.am (FETCHFILES): Added 'gnupload'.
+       (fetch): Also sync 'gnupload' from the gnulib repository.
+       * lib/gnupload: Synced from gnulib.
+       * NEWS: Update.
+
+2012-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       sync: gitlog-to-changelog from gnulib upstream
+
+       * lib/gitlog-to-changelog: Synced from upstream, by "make fetch".
+
+2012-01-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: backport optimized 'using_gmake' implementation
+
+       * tests/defs.in (using_gmake): Backport optimized, result-caching
+       implementation from master.
+
+2012-01-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: unify some tests on "make -n", reducing duplication
+
+       * tests/maken2.test: Merge into ...
+       * tests/maken.test: ... this test, to avoid unnecessary code
+       duplication.  Make checks depending on GNU make conditional to
+       the actual presence of GNU make.
+       * tests/maken4.test: Similarly, merge into ...
+       * tests/maken3.test: ... this test.
+       * tests/Makefile.am (TESTS): Remove maken2.test and maken4.test.
+
+2012-01-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: use "$(am__cd) $(srcdir)", not "cd $(srcdir)"
+
+       * automake.in (lang_vala_finish_target): In the generated rules,
+       use '$(am__cd)', not bare 'cd', to chdir into $(scdir).  Issue
+       revealed by the maintainer check 'sc_cd_relative_dir'.
+
+2012-01-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         dist: avoid $(distdir) removal failure on MSYS/MinGW
+         tests: fix spurious failure of 'get-sysconf.test'
+         coverage: expose automake bug#10470 (distcheck-related)
+         tests: make 'aclocal-install-absdir.test' executable
+         tests: require GNU make in 'vala-vapth.test'
+         vala: fix VPATH builds
+         tests: fix some bugs in the vala-vpath test
+
+2012-01-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'fix-pr10470' into maint
+
+       * fix-pr10470:
+         dist: avoid $(distdir) removal failure on MSYS/MinGW
+         coverage: expose automake bug#10470 (distcheck-related)
+
+2012-01-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: avoid $(distdir) removal failure on MSYS/MinGW
+
+       This change fixes automake bug#10470.
+
+       On MSYS (1.0.17) it is not possible to remove a directory that is
+       in use, and this, together with timing issues, could cause spurious
+       failures in the cleanup code of the "distcheck" recipe.  In fact,
+       it should be noted that assuming a directory can be removed while
+       it the CWD of a running process is a POSIX violation:
+
+         "If the directory is the root directory or the current working
+          directory of any process, it is unspecified whether the function
+          succeeds, or whether it shall fail and set errno to [EBUSY]."
+
+       * lib/am/distdir.am (am__remove_distdir): If rm fails, sleep some
+       seconds and retry, to give potential "pending" processes some time
+       to exit and "release" the directory.
+       * tests/Makefile.am (XFAIL_TESTS): Remove 'distcheck-pr10470.test'.
+
+       Report and suggestions by Peter Rosin and Eric Blake.
+
+2012-01-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure of 'get-sysconf.test'
+
+       * tests/get-sysconf.test: Do not assume that a ChangeLog file exists
+       in $(srcdir): now that the ChangeLog is autogenerated and not under
+       version control anymore, this is not necessary true.  Instead, if we
+       are running from a git checkout, use "git log" to get information on
+       the version of the automake snapshot being tested (and fall back on
+       extracting the first ChangeLog entry otherwise).
+
+       Reported by Jim Meyering in automake bug#10418.
+
+       Cherry picked from commit v1.11-1675-g104f302.
+
+2012-01-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: expose automake bug#10470 (distcheck-related)
+
+       * tests/distcheck-pr10470.test: New test.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Add it.
+
+       Report and suggestions by Peter Rosin and Eric Blake.
+
+2012-01-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: make 'aclocal-install-absdir.test' executable
+
+       * tests/aclocal-install-absdir.test: Make it executable.
+
+2012-01-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add missing dependency for some 'ar-lib*.test' tests
+
+       This change fixes spurious failures of the tests ar-lib4.test,
+       ar-lib6a.test and ar-lib6b.test.
+
+       * tests/Makefile.am (ar-lib4.log): Depend explicitly on the
+       `libtool-macros.log' file.
+       (ar-lib6a.log, ar-lib6b.log): Likewise.
+
+2012-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: distdir not unconditionally removed anymore for xz and lzip
+
+       This change fixes automake bug#10444 a.k.a. bug#10448.
+
+       The 'dist-xz' and 'dist-lzip' recipes were erroneously using
+       '$(am__remove_distdir)' instead of '$(am__post_remove_distdir)'
+       to cleanup the '$(distdir)'; so a "make dist" issued in a package
+       using (say) gzip and xz compression would have failed to properly
+       created the gzip tarball, since the distdir was unconditionally
+       removed by "make dist-xz" upon its completion, instead of being
+       left populated for the following "make dist-gzip".
+
+       The problem with 'dist-xz' was introduced in the merge commit
+       `v1.11-1142-g47587d1', and the problem with 'dist-lzip' was
+       introduced in the merge commit `v1.11-1673-gc1b14e9'
+
+       * lib/am/distdir.am (dist-xz): Use '$(am__post_remove_distdir)',
+       not '$(am__remove_distdir)'.
+       (dist-lzip): Likewise.
+
+2012-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: archive and compression formats used by "make dist"
+
+       This change exposes automake bug#10444 a.k.a. bug#10448.
+
+       * tests/dist-formats.tap: New test.
+       * tests/lzip.test: Remove, it's obsolete now.
+       * tests/nogzip.test: Likewise.
+       * tests/nogzip2.test: Likewise.
+       * tests/xz.test: Likewise.
+       * tests/list-of-tests.mk: Update.
+
+2012-01-10  Peter Rosin  <peda@lysator.liu.se>
+
+       tap/awk: avoid redirection issues with bash 3.2 and earlier
+
+       Fixes automake bug#10465.
+
+       * lib/tap-driver.sh: Add workaround for bash 3.2 and earlier, which
+       sometimes does not properly set '$?' when failing to write redirected
+       output of a compound command.  See the Autoconf manual for more details.
+
+       The workaround was pointed out by Eric Blake.
+
+2012-01-09  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: detect that MSYS lacks symlinks
+
+       * tests/self-check-cleanup.tap: Also check if "ln -s" really created a
+       symlink to cater for MSYS falling back to an ordinary copy.  Also, don't
+       chmod the symlinks if they were never created.
+
+2012-01-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid many spurious failures on MSYS due to lack of symlinks
+
+       Fixes automake bug#10441.
+
+       * tests/add-missing.tap: Do not assume the system supports real
+       symlinks, as this is not the case for MinGW/MSYS.  Skip checks
+       that would spuriously fail in that situation.
+       * tests/copy.test: Likewise.
+
+       Reported by Peter Rosin.
+
+2012-01-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: require GNU make in 'vala-vapth.test'
+
+       * vala-vpath.test ($required): Add the "GNUmake" requirement, since
+       rules generated by vala support are expected to work with GNU make
+       only.
+
+2012-01-08  Ryan Lortie  <desrt@desrt.ca>  (tiny change)
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       vala: fix VPATH builds
+
+       This change fixes automake bug#9859.
+
+       * automake.in (lang_vala_finish_target): Create the stamp file
+       '${derived}_vala.stamp' in $(srcdir), not in $(builddir).
+       Also, don't try to chdir to the $(srcdir) to trigger the rebuild
+       rules, since that is just wrong in a VPATH setup.
+       * tests/vala-vpath.test, tests/vala2.test: Extend to catch more
+       possible VPATH issues.
+       * tests/Makefile.am (XFAIL_TESTS): Remove 'vala-vpath.test'.
+       * NEWS, THANKS: Update.
+
+2012-01-08  Ryan Lortie  <desrt@desrt.ca>  (tiny change)
+
+       tests: fix some bugs in the vala-vpath test
+
+       * tests/vala-vpath.test: There are (trivial) problems in this
+       testcase that would cause the build to fail even if the core
+       issue were resolved.  Fix those.
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: list forgotten test case in $(TESTS)
+
+       * tests/list-of-tests.mk: Also list 'tar-override.test'.
+
+2012-01-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       scripts: quote 'like this', not `like this'
+
+       This change follows up on recent changes to the GNU coding standards.
+       They now suggest that we should quote 'like this' or "like this" instead
+       of `like this'; see:
+        <http://www.gnu.org/prep/standards/html_node/Quote-Characters.html>.
+
+       Gnulib is being changed accordingly, and Gnulib imports some files
+       directly from Automake master, so change those files to use the
+       straight-up style.  This affects only commentary and quoting in
+       diagnostics.
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: safer declarations of test dependencies
+
+       To declare prerequisites common to all the tests, we now prefer to
+       use the special `check_DATA' and `check_SCRIPTS' variables rather
+       than "lazy" dependency declaration like "$(TEST_LOGS): DEPS ...";
+       this because the latter, allowing run-time overriding of the
+       TEST_LOGS variable, turned out to be subtly incomplete in some
+       situations involving non-trivial inter-test dependencies.  For
+       example, if the user issued a:
+
+           make check TESTS=libtool.test
+
+       before the `defs-static' file was created (either explicitly or
+       implicitly), a spurious errors followed, along these lines:
+
+        1. $(TEST_LOGS) got dynamically defined to `libtool.log';
+
+        2. make saw that, in the Makefile, `libtool.log' was explicitly
+           declared depending on `libtool-macros.log' and `defs-static';
+
+        3. somehow, make considered the dependency on `libtool-macros.log'
+          *before* considering the one on `defs-static' (which BTW is
+          perfectly legitimate on make's part);
+
+        4. to satisfy such a dependency, make set out to execute the
+           test `libtool-macros.test' in order to create the file
+           `libtool-macros.log';
+
+        5. since `libtool-macros.log' was *not* in $(TEST_LOGS), it
+           didn't appear to depend on the `defs-static' file, so make
+           didn't consider necessary to build `defs-static' before
+           running the `libtool-macros.test' script;
+
+        6. but that script sources `./defs-static' in order to work;
+           thus the test `libtool-macros.test' failed spuriously.
+
+       * tests/Makefile.am ($(TEST_LOGS)): Remove explicit declaration
+       of dependency on the required files/scripts; instead use ...
+       (check_SCRIPTS, check_DATA): ... these new variables.
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: skip tests on perl TAP driver if TAP::Parser is not available
+
+       We had so far taken for granted that all the perl installations
+       modern enough to correctly run automake also came with a built-in
+       TAP::Parser module; unfortunately, testing on MinGW/MSYS has
+       shown that this is not always true, and that a lot of spurious
+       testsuite failures would take place in such a situation (see
+       automake bug#10440).
+
+       Luckily, the perl implementation of the Automake TAP driver is
+       only meant to be used for prototyping and consistency checks, the
+       "real" Automake TAP driver being the portable one implemented in
+       awk.  So we can simply skip the affected tests on systems lacking
+       TAP::Parser.
+
+       * tests/defs (fetch_tap_driver): Skip the whole test case if
+       the desired tap driver implementation is the perl one but the
+       TAP::Parser module is unavailable.
+       * tests/tap-bad-prog.tap: Adjust order of calls to `plan_' and
+       `fetch_tap_driver', to ensure the test is not skipped after the
+       TAP plan has been outputted (which would lead to a spurious
+       error).
+       * tests/tap-bad-signal.tap: Tweak to avoid the need to source the
+       `tap-setup.sh' script, as that might cause a test skip too late,
+       i.e., after a TAP plan has been already printed.
+       * tests/tap-test-number-0.test: Do not force the test to skip
+       when the tested TAP driver implementation is not the perl one.
+       On the other hand, when it *is* the perl one, skip the test if
+       the TAP::Parser module is unavailable.
+       * tests/test-driver-cond.test: Skip the part of the test actually
+       running "make check" if the TAP::Parser module is unavailable.
+       * tests/get-sysconf.test: Also print the version of the
+       `TAP::Parser' module, if available.
+
+       Reported by Peter Rosin.
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         dist: do not wrap calls to 'tar' with the 'missing' script
+         fixup: previous commit v1.11-627-g1e0aedc
+         tests: fix spurious failures due to autom4te caching
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: do not wrap calls to 'tar' with the 'missing' script
+
+       The `missing' script is meant to allow non-developers to build a
+       package in the face of slightly-skewed timestamps (as might happen
+       e.g. when the package is obtained from a VCS checkout rather than
+       from a distribution tarball).  It is *not* the business of the
+       `missing' script to try to provide wrappers for all the maintainer
+       tools (in this case, to tool being a decent tar program).  Such
+       wrapping of `tar' was not only inappropriate, but it was also
+       preventing the legitimate overriding (at make runtime) of the
+       `tar' program used in the creation of the distribution tarballs.
+
+       See also automake bug#9822.
+
+       * lib/missing: Don't try to specially wrap `tar' invocations
+       anymore.
+       * m4/tar.m4 (_AM_PROG_TAR): In the definitions of the `AMTAR'
+       variable, do not wrap the `tar' invocation with the `missing'
+       script anymore.  Instead, allow the user to override the intended
+       tar program at make runtime, by defining the `TAR' environment
+       variable.
+       [$1 == v7]: Similarly for the definitions of the `am__tar' and
+       `am__untar' variables.  Since we are at it, don't make them depend
+       anymore on the definition of the obsolescent `AMTAR' variable.
+       * NEWS: Update.
+       * tests/missing-tar.test: Remove, it's obsolete.
+       * tests/tar-override.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+       Reported by Akim Demaille.
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: previous commit v1.11-627-g1e0aedc
+
+       * tests/acloca18.test: Do not remove an aclocal.m4 file that is
+       needed by a later autoconf invocation.
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures due to autom4te caching
+
+       * tests/aclocal9.test: Call aclocal and autoconf with the `--force'
+       option.
+       * tests/acloca10.test: Sleep between re-runs of aclocal and autoconf.
+       * tests/acloca18.test: Explicitly remove also the configure script
+       and the aclocal.m4 before re-invoking aclocal and autoconf.
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: avoid trailing backslashes in make recipes
+
+       The new testsuite-harness could generate recipes with a trailing
+       backslash character (possibly followed by blank characters only),
+       in the very common case where the user hadn't defined the special
+       $(AM_TESTS_FD_REDIRECT) variable.  This caused spurious syntax
+       errors with at least older bash versions (e.g., bash 2.05b), and
+       could be potentially unportable to other weaker shells.
+
+       See automake bug#10436:
+         <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10436>
+       and coreutils bug#10427:
+         <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10427#8>
+
+       * lib/am/check2.am: Rework line breaks so that no backslash can
+       be at the end of a line.
+       * tests/parallel-tests-trailing-bslash.test: New test.
+       * tests/list-of-tests.mk: Add it.
+
+       Report and diagnosis by Paul Eggert.
+
+2012-01-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         parallel-tests: avoid issue with overly long lines in sed input
+
+       Additional edits:
+       * NEWS: Remove entry from merged commit, since that will also be
+       present in the NEWS file of automake 1.11.3.
+       * lib/am/check.am (check-TESTS, recheck, recheck-html): Rework
+       merged changes to adapt them to the different form these recipes
+       has assumed in the master branch (w.r.t. the maint branch).
+
+2012-01-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: avoid issue with overly long lines in sed input
+
+       See automake bug#10437:
+         <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10437>
+       and coreutils bug#10427:
+         <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10427#8>
+
+       * lib/am/check.am (recheck, recheck-html): In order to strip
+       trailing whitespace from the definition of the `$list' variable,
+       we used to invoke sed in a way that could cause it to get passed
+       overly long input lines, causing spurious failures.  So rework
+       the logic of the recipe to avoid any sed invocation, relying on
+       simpler shell idioms instead.
+       (check-TESTS): Reorganize the recipe to be more similar to the
+       one of `recheck', for consistency and simplicity.
+       * NEWS: Update.
+
+       Report and analysis by Paul Eggert.
+
+2012-01-05  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: work around strangeness in MSYS
+
+       MSYS mishandles carriage returns and behaves very strangely for
+       directories with colon in them.  It seems that colon-directories are
+       somehow mixed up with drive letters.
+
+       Fixes automake bug#7849.
+
+       * tests/instspc.tap: Skip instead of erroring out when $test_string
+       is empty for the carriageret case, as that is expected on MSYS.  Also,
+       for similar reasons, skip instead of erroring out when it is not
+       possible to cd into the just created directory, and the directory
+       name contains a colon.  Update copyright years.
+
+2012-01-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       cosmetics: prefer the term "Windows" over "Win32"
+
+       Microsoft has renamed the Win32 API to "Windows API":
+         <http://msdn.microsoft.com/en-us/library/aa383723.aspx>
+
+       Also, after some discussion on bug-gnulib, when talking about hosts and
+       platforms we believe it's better to talk about "Windows" or "native
+       Windows" instead:
+         <https://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00009.html>
+         <https://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00027.html>
+
+       * doc/automake.texi: Mention "Windows", not "Win32".
+       * lib/Automake/XFile.pm: Likewise.
+       * lib/ar-lib: Likewise.
+       * lib/compile: Likewise.
+       * tests/compile2.test: Mention "Windows", not "w32".
+
+2012-01-04  Peter Rosin  <peda@lysator.liu.se>
+
+       test defs: skip all tests when the lib requirement isn't fulfilled
+
+       * tests/defs (lib): Use skip_all_ instead of skip_, in order to support
+       TAP-based test scripts.
+
+2012-01-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: be sure to list all test cases in $(TESTS)
+
+       * tests/list-of-tests.mk: Due to slightly botched merges, the test
+       scripts `objext-pr10128.test' and `silent-nested-vars.test' weren't
+       being correctly listed in $(TESTS); fix this.
+
+2012-01-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         sync: auxiliary files from upstream synced
+         sync: fix syncing of 'gitlog-to-changelog' script
+         maintcheck: avoid false positive in sc_tests_plain_make
+
+2012-01-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       sync: auxiliary files from upstream synced
+
+       * lib/texinfo.tex: Synced from upstream, by "make fetch".
+       * lib/gitlog-to-changelog: Likewise.
+       * lib/config.guess: Likewise.
+       * lib/config.sub: Likewise.
+
+2012-01-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       sync: fix syncing of 'gitlog-to-changelog' script
+
+       * Makefile.am (FETCHFILES): Also list 'gitlog-to-changelog'.
+
+2012-01-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: avoid false positive in sc_tests_plain_make
+
+       * Makefile.am (sc_tests_plain_make): Ensure to only match full
+       `make' words.  Avoid false positive in `silent-nested-vars.test'.
+
+2012-01-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         install: pkglibexec_SCRIPTS is a valid prefix/primary combination
+         coverage: expose automake bug#10128
+         progs, libs: implement EXTRA_foo_DEPENDENCIES
+         tests: fix spurious failures in 'pr300*.test'
+
+2012-01-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       install: pkglibexec_SCRIPTS is a valid prefix/primary combination
+
+       It makes little sense for `libexec_SCRIPTS' to be accepted as valid
+       while `pkglibexec_SCRIPTS' is not.  So fix this inconsistency by
+       explicitly allowing `pkglibexec_SCRIPTS' as well.  It is worth
+       noting that the inconsistency has been there for a long time,
+       but only the quite recent commit `v1.11-373-g9ca6326' "Warnings
+       about primary/prefix mismatch fixed and extended" has made it
+       noisy enough to be noticed.
+
+       * automake.in (handle_scripts): Also list `pkglibexec' among the
+       prefixes valid for the `SCRIPTS' primary.
+       * doc/automake.texi (Scripts): Likewise.
+       * tests/primary-prefix-valid-couples.test: Update.
+       * THANKS: Likewise.
+       * NEWS: Likewise.
+
+       Reported by Dennis Schridde on the automake list:
+       <http://lists.gnu.org/archive/html/automake/2012-01/msg00002.html>
+
+2012-01-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: expose automake bug#10128
+
+       * tests/objext-pr10128.test: New test, still expected to fail.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Add it.
+
+2012-01-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       progs, libs: implement EXTRA_foo_DEPENDENCIES
+
+       Backported from commit `v1.11-377-g6edafbb'.
+
+       The feature implemented by that change is quite unobtrusive, so
+       adding it to a maintenance release is acceptable.  Also, there
+       have been requests from real-world users for this feature since
+       it has been implemented in master; see automake bug#9320:
+        <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9320>
+       and this short discussion on the automake list:
+        <http://lists.gnu.org/archive/html/automake/2010-11/msg00099.html>
+       It would be a pity to make such users wait even more (until
+       Automake 1.12 is out) before they could start using this feature.
+       Thus we backport it, so that it will appear in the next maintenance
+       version of automake (1.11.3).
+
+       * automake.in (handle_programs, handle_libraries)
+       (handle_ltlibraries): Mark EXTRA_*_DEPENDENCIES as recognized.
+       * doc/automake.texi (Linking, Program and Library Variables)
+       (LIBOBJS): Document EXTRA_*_DEPENDENCIES.
+       * lib/am/library.am (%LIBRARY%): Also depend on
+       $(EXTRA_%XLIBRARY%_DEPENDENCIES).
+       * lib/am/ltlibrary.am (%LTLIBRARY%): Also depend on
+       (%XLTLIBRARY%_DEPENDENCIES).
+       * lib/am/program.am (%PROGRAM%%EXEEXT%): Also depend on
+       $(EXTRA_%XPROGRAM%_DEPENDENCIES).
+       * tests/extradep.test, tests/extradep2.test: New tests.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2012-01-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures in 'pr300*.test'
+
+       This change fixes automake bug#10426.
+
+       * tests/pr300-lib.test: Call configure with an explicit '--libdir'
+       option, to avoid spurious failures due to users possibly overriding
+       '${libdir}' in ther config.site files.
+       * tests/pr300-ltlib.test: Likewise.
+
+       Reported by Bruno Haible.
+
+2012-01-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure due to I/O buffering
+
+       * tests/parallel-tests-interrupt.tap: Ensure the dummy test script
+       `foo.test' flushes its standard output before starting to grep the
+       log file where such output is being redirected by the parallel test
+       harness.  Since we are at it, improve this same dummy script to
+       better catch unexpected behaviours and results.
+
+       Reported by Jim Meyering in automake bug#10418.
+
+2012-01-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: fix botched merges, rebase on 1.11.2a NEWS version
+
+       The NEWS file is unfortunately written in a format that doesn't
+       lend itself very well to automatic merges; the recent merges of
+       maint into master have left it full of blunders and in a somewhat
+       inconsistent state.
+
+       Another orthogonal issue is that the current version of NEWS
+       still reports all the changes since the last 1.11 version, rather
+       than since the latest maintenance version 1.11.2, or, even better,
+       since the planned next maintenance version 1.11.3.
+
+       * NEWS: Fix blunders and errors from botched merges.  Rebase the
+       file on the NEWS file from branch-1.11 (from which automake 1.11.3
+       is expected to be released).
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'msvc'
+
+       * msvc:
+         tests: fix spurious failure due to autom4te caching
+         news: fix suboptimal wording
+         tests: various minor tweakings, mostly related to AM_PROG_AR
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure due to autom4te caching
+
+       * tests/ar-lib3.test: Remove stale autom4te.cache directory, to
+       prevent racy, spurious failures.
+
+       Reported by Jim Meyering in automake bug#10418.
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint' into msvc
+
+       * maint:
+         tests: make 'lzip.test' executable
+         dist: obsolete support for lzma (superseded by xz and lzip)
+         test defs: more granular overriding of the make program
+         docs: fix a couple broken anchors
+         dist: add support for lzip compression
+         docs: fix paragraph names for automake and aclocal invocations
+         tests: fix spurious failure due to autom4te caching
+         fix: last entry in ChangeLog
+         tests: tweak tests on silent-rules for makes without nested vars
+         silent-rules: fallback for makes without nested vars
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure of 'get-sysconf.test'
+
+       * tests/get-sysconf.test: Do not assume that a ChangeLog file exists
+       in $(srcdir): now that the ChangeLog is autogenerated and not under
+       version control anymore, this is not necessary true.  Instead, if we
+       are running from a git checkout, use "git log" to get information on
+       the version of the automake snapshot being tested (and fall back on
+       extracting the first ChangeLog entry otherwise).
+
+       Reported by Jim Meyering in automake bug#10418.
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: remove support for lzma (superseded by xz and lzip)
+
+       See also commit `v1.11-611-ge637fa2' (from maint), where support
+       for lzma compression of distribution archive had been deprecated.
+
+       * NEWS: Update.
+       * lib/Automake/Options.pm: Error out if the `dist-lzma' option
+       is used.
+       * lib/am/distdir.am: Remove all support for the creation of a
+       lzma-compressed distribution archive.
+       * tests/lzma.test: Update.
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         tests: make 'lzip.test' executable
+         dist: obsolete support for lzma (superseded by xz and lzip)
+         test defs: more granular overriding of the make program
+         docs: fix a couple broken anchors
+         dist: add support for lzip compression
+         docs: fix paragraph names for automake and aclocal invocations
+         tests: fix spurious failure due to autom4te caching
+         fix: last entry in ChangeLog
+         tests: tweak tests on silent-rules for makes without nested vars
+         silent-rules: fallback for makes without nested vars
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: make 'lzip.test' executable
+
+       * tests/lzip.test: Make it executable.
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'deprecate-lzma' into maint
+
+       * deprecate-lzma:
+         dist: obsolete support for lzma (superseded by xz and lzip)
+
+2012-01-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: obsolete support for lzma (superseded by xz and lzip)
+
+       The lzma utilities are today superseded by the xz utilities; in
+       fact, the official site at <http://tukaani.org/lzma/> reads:
+
+         ``LZMA Utils are legacy data compression software with high
+           compression ratio.  LZMA Utils are no longer developed, ...
+           Users of LZMA Utils should move to XZ Utils.''
+
+       and the existing automake manual (as of 1.11.2) already says:
+
+         ``dist-xz
+           Generate an 'xz' tar archive of the distribution. xz archives
+           are frequently smaller than bzip2-compressed archives. The 'xz'
+           format will soon (early 2009) displace the 'lzma' format''
+
+       Also, the `dist-lzma' target still suffers of never-solved bugs,
+       due to the too-high compression ratio its uses by default, which
+       might cause an unacceptable memory consumption when one tries to
+       compress or, worse, decompress the created tarballs; see also:
+
+         <http://lists.gnu.org/archive/html/automake/2011-12/msg00025.html>
+         <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9658>
+
+       * NEWS: Update.
+       * doc/automake.texi (Dist, Options): State that `dist-lzma' will
+       go away in the next major automake version.
+       * lib/Automake/Options.pm (_process_option_list): Deprecate
+       `dist-lzma'.
+       * tests/lzma.test: Update.
+
+2011-12-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix a couple of typos in error messages
+
+       * Makefile.am (sc_tests_plain_autoheader): Fix the message to
+       report a bad use of "autocheader", not of "automake."
+       (sc_tests_plain_autom4te): Likewise, but for "autom4te" instead.
+       (sc_tests_plain_autoreconf): Likewise, but for "autoreconf"
+       instead.
+
+2011-12-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: be sure to look at all the test cases
+
+       Many maintainer checks in the top-level Makefile.am did some
+       unwarranted assumptions about the test cases, i.e., they assumed
+       that all the test scripts matched the wildcard `$(srcdir)/*.test'.
+
+       This failed to properly take into account VPATH builds (where some
+       generated tests might be in ${builddir} rather than in ${srcdir}),
+       TAP-based tests script (which have a `.tap' extension) and helper
+       scripts used by other test cases (which have a `.sh' extension).
+
+       Fixes automake bug#9299.
+
+       * Makefile.am (xtests): New variable, containing a (dynamically
+       computed) of files that looks like test cases of the automake
+       testsuite.
+       Update many rules to use this new variable instead of blindly
+       assuming that all the testcases matches the $(srcdir)/tests/*.test
+       wildcard.
+       * tests/tap-bad-prog.tap: Do a minor formatting change to
+       avoid spuriously triggering a match from the syntax check
+       `sc_tests_overriding_macros_on_cmdline'.
+
+2011-12-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'dist-lzip' into maint
+
+       * dist-lzip:
+         dist: add support for lzip compression
+
+2011-12-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: more granular overriding of the make program
+
+       Before this change, the only way the user could override the make
+       program used in the automake test cases was to override the $MAKE
+       variable in the environment.  This had the annoying side effect of
+       requiring that, whenever a non-default make program was to be used
+       in the test cases, that same make program had to be used to drive
+       the execution of the automake testsuite; otherwise, the recursive
+       make invocations could pick up $MAKE from the environment, and use
+       that instead of re-executing with the correct make.
+
+       So, for example, if one wanted to try how Solaris /usr/ccs/bin/make
+       behaved in the automake test cases, he couldn't run the testsuite
+       in parallel mode, because that make lacks support for concurrent
+       execution of recipes; on fast machines, this easily meant a 4x or
+       higher slow-down.
+
+       Once the problem is clear, the solution is pretty simple: allow
+       the use of another variable, besides $MAKE, to override the make
+       program to be used in the test cases.
+
+       See also commit `v1.11-1318-g3ceeef4', that introduced a more
+       general version of this change to the master branch.
+
+       * tests/defs.in: Allow the make implementation to be used by the
+       test cases to be overridden by the `$AM_TESTSUITE_MAKE' variable,
+       in preference to the `$MAKE' variable.
+
+2011-12-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: fix a couple broken anchors
+
+       * doc/automake.texi: In previous commit v1.11-605-g5f71f2b (related
+       to automake bug#8071), we had renamed the chapters about aclocal
+       and automake invocation, and added anchors to the old names as not
+       to break hyperlinks to our on-line manual.  Unfortunately, these
+       anchors had been erroneously placed *before* the relevant `@node'
+       commands, instead that just after, so that they ended up pointing
+       to the wrong chapters.  Fix this.  Since we are at it, tweak the
+       wording of the comments to the anchors to better match that used
+       in the autoconf manual.
+
+       Report and suggestion by Eric Blake.
+
+2011-12-30  Antonio Diaz Diaz  <ant_diaz@teleline.es>
+
+       dist: add support for lzip compression
+
+       * NEWS: Update.
+       * automake.in (handle_dist): Recognize dist-lzip.
+       (make_paragraphs): Map LZIP to dist-lzip.
+       * doc/automake.texi (Dist, Options): Describe dist-lzip.
+       * lib/Automake/Options.pm (_process_option_list): Recognize
+       `dist-lzip'.
+       * lib/am/distdir.am (dist-lzip): New target.
+       (DIST_ARCHIVES) [?LZIP?]: Add `dist-lzip'.
+       (dist, dist-all) [?LZIP?]: Add command to create an lzip-compressed
+       tarball.
+       (distcheck): Handle lzip-compressed tarballs just like the others.
+       * tests/lzip.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-12-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge remote-tracking branch 'silent-fixes' into maint
+
+       * origin/silent-fixes:
+         fix: last entry in ChangeLog
+         tests: tweak tests on silent-rules for makes without nested vars
+         silent-rules: fallback for makes without nested vars
+
+2011-12-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: fix paragraph names for automake and aclocal invocations
+
+       All the other autotools entitle their invocation nodes
+       "autofoo Invocation", whereas automake used to call its
+       "Invoking Automake" and "Invoking aclocal".  So let's
+       try to be more consistent.
+
+       This change is related to automake bug#8071.
+
+       Suggestion by Reuben Thomas and Eric Blake.
+
+       * doc/automake.texi (Invoking Automake): Node renamed ...
+       (automake Invocation): ... to this.
+       (Invoking aclocal): Node renamed ...
+       (aclocal Invocation): ... to this.
+       Add proper @anchor directives to avoid breaking existing web
+       hyperlinks still using the old names of the renamed nodes.
+
+2011-12-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure due to autom4te caching
+
+       * tests/acloca18.test: Remove stale autom4te.cache directories, to
+       prevent racy, spurious failures.
+       * tests/python11.test: Likewise.  Fix a typo in comments since we
+       are at it.
+
+2011-12-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint' into msvc
+
+       * maint:
+         maint: autogenerate ChangeLog
+
+2011-12-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint' into silent-fixes
+
+       * maint:
+         maint: autogenerate ChangeLog
+         fix: last ChangeLog entry
+         tests: drop unnecessary requirement in 'subpkg.test'
+         gitlog-to-changelog: new auxiliary script, synced from gnulib
+         docs: "aclocal --install -I /abs/dir" actually copies files
+         docs: fix node names for automake and aclocal invocations
+
+2011-12-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint' into yacc-work
+
+       * maint:
+         maint: autogenerate ChangeLog
+
+2011-12-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint'
+
+       * maint:
+         maint: autogenerate ChangeLog
+
+2011-12-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: autogenerate ChangeLog
+
+       Following the practice set by various other GNU projects, we start
+       to automatically generate the ChangeLog file from the git commit
+       messages.  This will avoid duplication (as the ChangeLog entries
+       were always inserted both in the git commit message and in the
+       version-controlled ChangeLog file), and potential problems with
+       spurious merge conflicts (which, although greatly mitigated by
+       Bruno Haible's `git-merge-changelog' helper program, have never
+       been completely solved).
+
+       * ChangeLog: Moved ...
+       * ChangeLog.11:... to this.
+       * Makefile.am (EXTRA_DIST): Add it.
+       (gitlog_to_changelog_command, gitlog_to_changelog_options): New
+       variables.
+       (ChangeLog, am--changelog-regen-hook): New targets.
+       * .gitignore: Add ChangeLog.
diff --git a/GNUmakefile b/GNUmakefile
new file mode 100644 (file)
index 0000000..0676618
--- /dev/null
@@ -0,0 +1,68 @@
+# Maintainer makefile for Automake.  Requires GNU make.
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+ifeq ($(wildcard Makefile),)
+  ifeq ($(filter bootstrap,$(MAKECMDGOALS)),bootstrap)
+    # Allow the user (or more likely the developer) to ask for a bootstrap
+    # of the package; of course, this can happen before configure is run,
+    # and in fact even before it is created.
+  else
+    # Else, If the user runs GNU make but has not yet run ./configure,
+    # give them an helpful diagnostic instead of a cryptic error.
+    $(warning There seems to be no Makefile in this directory.)
+    $(warning You must run ./configure before running 'make'.)
+    $(error Fatal Error)
+  endif
+else
+  include ./Makefile
+  include $(srcdir)/syntax-checks.mk
+endif
+
+# To allow bootstrapping also in an unconfigured tree.
+srcdir ?= .
+am__cd ?= CDPATH=. && unset CDPATH && cd
+AM_DEFAULT_VERBOSITY ?= 0
+V ?= $(AM_DEFAULT_VERBOSITY)
+
+ifeq ($(V),0)
+  AM_V_BOOTSTRAP = @echo "  BOOTSTRAP";
+  AM_V_CONFIGURE = @echo "  CONFIGURE";
+  AM_V_REMAKE    = @echo "  REMAKE";
+else
+  AM_V_BOOTSTRAP =
+  AM_V_CONFIGURE =
+  AM_V_REMAKE    =
+endif
+
+# Must be phony, not to be confused with the 'bootstrap' script.
+.PHONY: bootstrap
+bootstrap:
+       $(AM_V_BOOTSTRAP)$(am__cd) $(srcdir) && ./bootstrap.sh
+       $(AM_V_CONFIGURE)set -e; \
+       am__bootstrap_configure () { \
+         $(srcdir)/configure $${1+"$$@"} $(BOOTSTRAP_CONFIGURE_FLAGS); \
+       }; \
+       if test -f $(srcdir)/config.status; then \
+         : config.status should return a string properly quoted for eval; \
+         old_configure_flags=`$(srcdir)/config.status --config`; \
+       else \
+         old_configure_flags=""; \
+       fi; \
+       eval am__bootstrap_configure "$$old_configure_flags"
+       # The "make check" below is to ensure all the testsuite-required
+       # files are rebuilt.
+       $(AM_V_REMAKE)$(MAKE) clean && $(MAKE) check TESTS=t/get-sysconf
diff --git a/HACKING b/HACKING
new file mode 100644 (file)
index 0000000..6966384
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,298 @@
+================================================================
+= This file
+
+* This file attempts to describe the rules to use when hacking
+  automake.
+
+================================================================
+= Administrivia
+
+* The correct response to most actual bugs is to write a new test case
+  which demonstrates the bug.  Then fix the bug, re-run the test suite,
+  and check everything in.
+
+* If you incorporate a change from somebody on the net:
+  First, if it is a large change, you must make sure they have signed the
+  appropriate paperwork.
+  Second, be sure to add their name and email address to THANKS
+
+* If a change fixes a test, mention the test in the commit message.
+  If a change fixes a bug registered in the Automake debbugs tracker,
+  mention the bug number in the commit message.
+
+* If somebody reports a new bug, mention his name in the commit message
+  and in the test case you write.  Put him into THANKS.
+
+* When documenting a non-trivial idiom or example in the manual, be
+  sure to add a test case for it, and to reference such test case from
+  a proper Texinfo comment.
+
+* Some files in the automake package are not owned by automake; these
+  files are listed in the $(FETCHFILES) variable in Makefile.am.  They
+  should never be edited here.  Almost all of them can be updated from
+  respective upstreams with "make fetch" (this should be done especially
+  before releases).  The only exception is the 'lib/COPYING' (from FSF),
+  which should be updated by hand whenever the GPL gets updated (which
+  shouldn't happen that often anyway :-)
+
+* Changes other than bug fixes must be mentioned in NEWS.  Important
+  bug fixes should be mentioned in NEWS, too.
+
+================================================================
+= Naming
+
+* We've adopted the convention that internal AC_SUBSTs should be
+  named with a leading 'am__', and internally generated targets
+  should be named with a leading 'am--'.  This convention, although
+  in place from at least February 2001, isn't yet universally used.
+  But all new code should use it.
+
+  We used to use '_am_' as the prefix for an internal AC_SUBST.
+  However, it turns out that NEWS-OS 4.2R complains if a Makefile
+  variable begins with the underscore character.  Yay for them.
+  I changed the target naming convention just to be safe.
+
+================================================================
+= Editing '.am' files
+
+* Always use $(...) and not ${...}
+
+* Use ':', not 'true'.  Use 'exit 1', not 'false'.
+
+* Use '##' comments liberally.  Comment anything even remotely
+  unusual.
+
+* Never use basename or dirname.  Instead use sed.
+
+* Do not use 'cd' within back-quotes, use '$(am__cd)' instead.
+  Otherwise the directory name may be printed, depending on CDPATH.
+  More generally, do not ever use plain 'cd' together with a relative
+  directory that does not start with a dot, or you might end up in one
+  computed with CDPATH.
+
+* For install and uninstall rules, if a loop is required, it should be
+  silent.  Then the body of the loop itself should print each
+  "important" command it runs.  The printed commands should be preceded
+  by a single space.
+
+* Ensure install rules do not create any installation directory where
+  nothing is to be actually installed.  See automake bug#11030.
+
+================================================================
+= Editing automake.in and aclocal.in
+
+* Indent using GNU style.  For historical reasons, the perl code
+  contains portions indented using Larry Wall's style (perl-mode's
+  default), and other portions using the GNU style (cperl-mode's
+  default).  Write new code using GNU style.
+
+* Don't use & for function calls, unless required.
+  The use of & prevents prototypes from being checked.
+  Just as above, don't change massively all the code to strip the
+  &, just convert the old code as you work on it, and write new
+  code without.
+
+================================================================
+= Working with git
+
+* To regenerate dependent files created by aclocal and automake,
+  use the 'bootstrap.sh' script.  It uses the code from the source
+  tree, so the resulting files (aclocal.m4 and Makefile.in) should
+  be the same as you would get if you install this version of
+  automake and use it to generate those files.  Be sure to have the
+  latest stable version of Autoconf installed and available early
+  in your PATH.
+
+* The Automake git tree currently carries two basic branches: 'master' for
+  the current development, and 'maint' for maintenance and bug fixes.  The
+  maint branch should be kept regularly merged into the master branch.
+  It is advisable to merge only after a set of related commits have been
+  applied, to avoid introducing too much noise in the history.
+
+* There may be a number of longer-lived feature branches for new
+  developments.  They should be based off of a common ancestor of all
+  active branches to which the feature should or might be merged later.
+  in the future, we might introduce a special branch named 'next' that
+  may serve as common ground for feature merging and testing, should
+  they not yet be ready for master.
+
+* After a major release is done, the master branch is to be merged into
+  the maint branch, and then a "new" master branch created stemming
+  from the resulting commit.
+
+* When fixing a bug (especially a long-standing one), it may be useful
+  to commit the fix to a new temporary branch based off the commit that
+  introduced the bug.  Then this "bugfix branch" can be merged into all
+  the active branches descending from the buggy commit.  This offers a
+  simple way to fix the bug consistently and effectively.
+
+* For merges from branches other than maint, prefer 'git merge --log' over
+  plain 'git merge', so that a later 'git log' gives an indication of which
+  actual patches were merged even when they don't appear early in the list.
+
+* master and release branches should not be rewound, i.e., should always
+  fast-forward, except maybe for privacy issues.  The maint branch should not
+  be rewound except maybe after retiring a release branch or a new stable
+  release.  For next, and for feature branches, the announcement for the
+  branch should document rewinding policy.
+
+================================================================
+= Writing a good commit message
+
+* Here is the general format that Automake's commit messages are expected
+  to follow.  See the further points below for clarifications and minor
+  corrections.
+
+      topic: brief description (this is the "summary line")
+
+      <reference to relevant bugs, if any>
+
+      Here goes a more detailed explanation of why the commit is needed,
+      and a general overview of what it does, and how.  This section is
+      optional, but you are expected to provide it more often than not.
+
+      And if the detailed explanation is quite long or detailed, you can
+      want to break it in more paragraphs.
+
+      Then you can add references to relevant mailing list discussions
+      (if any), with proper links.  But don't take this as an excuse for
+      writing incomplete commit messages!  The "distilled" conclusions
+      reached in such discussions should have been placed in the
+      paragraphs above.
+
+      Finally, here you can thank people that motivated or helped the
+      change.  So, thanks to John Doe for bringing up the issue, and to
+      J. Random Hacker for providing suggestions and testing the patch.
+
+      <detailed list of touched files>
+
+* The <detailed list of touched files> is mandatory but for the most
+  trivial changes, and should follows the GNU guidelines for ChangeLog
+  entries (described explicitly in the GNU Coding Standards); it might
+  be something of this sort:
+
+    * some/file (func1): Improved frobnication.
+    (func2): Adjusted accordingly.
+    * another/file (foo, bar): Likewise.
+    * tests/foo.tap: New test.
+    * tests/Makefile.am (TESTS): Add it.
+
+* If your commit fixes an automake bug registered in the tracker (say
+  numbered 1234), you should put the following line after the summary
+  line:
+
+      This change fixes automake bug#1234.
+
+* If your commit is just related to the given bug report, but does not
+  fix it, you might want to add a line like this instead:
+
+      This change is related to automake bug#1234.
+
+* When referring to older commits, use 'git describe' output as pointer.
+  But also try to identify the given commit by date and/or summary line
+  if possible.  Examples:
+
+      Since yesterday's commit, v1.11-2019-g4d2bf42, ...
+
+      ... removed in commit 'v1.11-1674-g02e9072' of 01-01-2012,
+      "dist: ditch support for lzma"...
+
+================================================================
+= Test suite
+
+* Use "make check" and "make maintainer-check" liberally.
+
+* Make sure each test file is executable.
+
+* Export the 'keep_testdirs' environment variable to "yes" to keep
+  test directories for successful tests also.
+
+* Use perl coverage information to ensure your new code is thoroughly
+  tested by your new tests.
+
+* See file 't/README' for more information.
+
+================================================================
+= Release procedure
+
+* The steps outlined here are meant to be followed for alpha and stable
+  releases as well.  Where differences are expected, they will be
+  explicitly described.
+
+* Fetch new versions of the files that are maintained by the FSF by
+  running "make fetch".  In case any file in the automake repository
+  has been updated, commit and re-run the testsuite.
+
+* Ensure that the copyright notices of the distributed files is up to
+  date.  The maintainer-only target "update-copyright" can help with
+  this.
+
+* Update NEWS.
+
+* Update the version number in configure.ac.
+  (The idea is that every other alpha number will be a net release.
+  The repository will always have its own "odd" number so we can easily
+  distinguish net and repo versions.)
+
+* Run this:
+  ./bootstrap.sh && ./configure && make && make check && make distcheck
+
+* Run "make git-tag-release".
+  This will run the maintainer checks, verify that the local git
+  repository and working tree are clean and up-to-date, and create
+  a proper signed git tag for the release (based on the contents
+  of $(VERSION)).
+
+* Run "make git-upload-release".
+  This will first verify that you are releasing from a tagged version
+  and that the local git repository and working tree are clean and
+  up-to-date, and will then run "make dist" to create the tarballs,
+  and invoke the 'gnupload' script sign and upload them to the correct
+  locations.  In case you need to sign with a non-default key, you can
+  use "make GNUPLOADFLAGS='--user KEY' git-upload-release".
+
+* Update version number in configure.ac to next alpha number.
+  Re-run ./bootstrap.sh and commit.
+
+* Don't forget to "git push" your changes so they appear in the public
+  git tree.
+
+* For stable releases, update the manuals at www.gnu.org:
+  - Generate manuals:
+    cd doc
+    wget "http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh"
+    wget "http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template"
+    sh ./gendocs.sh --email bug-automake@gnu.org automake "GNU Automake"
+  - copy manuals recursively to web cvs,
+  - commit.
+  - Check for link errors, fix them, recheck until convergence:
+    <http://validator.w3.org/checklink>
+
+* Send the announcement at least to <autotools-announce@gnu.org> and
+  <automake@gnu.org>.  If the release is a stable one, the announcement
+  must also go to <info-gnu@gnu.org>; if it is an alpha or beta release,
+  announcement should be sent also to <platform-testers@gnu.org>, to
+  maximize the possibility of early testing on exotic or proprietary
+  systems.  Finally, copy the announcement into the NEWS feed at
+  <https://savannah.gnu.org/projects/automake>.
+
+-----
+
+Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Local Variables:
+mode: text
+End:
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..6e90e07
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
+Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf limitation.  Until the limitation is lifted, you can use
+this workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..57a2137
--- /dev/null
@@ -0,0 +1,870 @@
+## Process this file with automake to create Makefile.in
+
+## Makefile for Automake.
+
+# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## Might be updated later.
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST =
+
+## ------------ ##
+##  Top level.  ##
+## ------------ ##
+
+# We want a handful of substitutions to be fully-expanded by make;
+# then use config.status to substitute the remainder where a single
+# expansion is sufficient.  We use a funny notation here to avoid
+# configure substitutions in our text.
+do_subst = ( sed \
+  -e "s,[@]configure_input[@],Generated from $$in; do not edit by hand.,g" \
+  -e 's,[@]datadir[@],$(datadir),g' \
+  -e 's,[@]amdir[@],$(amdir),g' \
+  -e 's,[@]bindir[@],$(bindir),g' \
+  -e 's,[@]docdir[@],$(docdir),g' \
+  -e 's,[@]pkgvdatadir[@],$(pkgvdatadir),g' \
+  -e 's,[@]scriptdir[@],$(scriptdir),g' \
+  -e 's,[@]automake_acdir[@],$(automake_acdir),g' \
+  -e 's,[@]system_acdir[@],$(system_acdir),g' \
+## Hack to avoid a spurious substitution in the Automake script (part 1).
+  -e 's,[@]am__isrc[@],!!@!!am__isrc!!@!!,g' \
+  | $(SHELL) ./config.status --file=- \
+## Hack to avoid a spurious substitution in the Automake script (part 2).
+  | sed -e 's,!!@!!am__isrc!!@!!,@''am__isrc@,g' \
+  )
+
+# Generated  files shouldn't contain unexpanded '@substitutions@', and
+# should be made read-only, to prevent them from being edited by mistake
+# instead of the file the are generated from.
+generated_file_finalize = $(AM_V_at) \
+  if LC_ALL=C grep '@[a-zA-Z0-9_][a-zA-Z0-9_]*@' $@-t; then \
+    echo "$@ contains unexpanded substitution (see lines above)"; \
+    exit 1; \
+  fi; \
+  chmod a-w $@-t && mv -f $@-t $@
+
+bin_SCRIPTS = automake aclocal
+
+CLEANFILES += $(bin_SCRIPTS)
+AUTOMAKESOURCES = automake.in aclocal.in
+
+TAGS_FILES = $(AUTOMAKESOURCES)
+
+EXTRA_DIST += \
+  $(AUTOMAKESOURCES) \
+  bootstrap.sh \
+  GNUmakefile \
+  syntax-checks.mk \
+  HACKING
+
+## Make versioned links.  We only run the transform on the root name;
+## then we make a versioned link with the transformed base name.  This
+## seemed like the most reasonable approach.
+install-exec-hook:
+       @$(POST_INSTALL)
+       @for p in $(bin_SCRIPTS); do \
+         f="`echo $$p|sed '$(transform)'`"; \
+         fv="$$f-$(APIVERSION)"; \
+         rm -f "$(DESTDIR)$(bindir)/$$fv"; \
+         echo " $(LN) '$(DESTDIR)$(bindir)/$$f' '$(DESTDIR)$(bindir)/$$fv'"; \
+         $(LN) "$(DESTDIR)$(bindir)/$$f" "$(DESTDIR)$(bindir)/$$fv"; \
+       done
+
+uninstall-hook:
+       @for p in $(bin_SCRIPTS); do \
+         f="`echo $$p|sed '$(transform)'`"; \
+         fv="$$f-$(APIVERSION)"; \
+         rm -f "$(DESTDIR)$(bindir)/$$fv"; \
+       done
+
+## These files depend on Makefile so they are rebuilt if $(VERSION),
+## $(datadir) or other do_subst'ituted variables change.
+automake: automake.in
+aclocal: aclocal.in
+automake aclocal: Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_GEN)in=$@.in; $(do_subst) <$(srcdir)/$@.in >$@-t
+## We can't use '$(generated_file_finalize)' here, because currently
+## Automake contains occurrences of unexpanded @substitutions@ in
+## comments, and that is perfectly legit.
+       $(AM_V_at)chmod a+x,a-w $@-t && mv -f $@-t $@
+
+## The master location for INSTALL is lib/INSTALL.
+## This is where "make fetch" will install new versions.
+## Make sure we also update this copy.
+INSTALL: lib/INSTALL
+       $(AM_V_GEN)cp $(srcdir)/lib/INSTALL $@
+
+# We don't use the default name for the autom4te cache directory,
+# so we need this.
+maintainer-clean-local:
+       rm -rf .autom4te.cache
+
+
+## -------------------------------------------------------------------- ##
+##  Auxiliary scripts and files for use with "automake --add-missing".  ##
+## -------------------------------------------------------------------- ##
+
+dist_pkgvdata_DATA = \
+  lib/COPYING \
+  lib/INSTALL \
+  lib/texinfo.tex
+
+## These must all be executable when installed.  However, if we use
+## _SCRIPTS, then the program transform will be applied, which is not
+## what we want.  So we make them executable by hand.
+dist_script_DATA = \
+  lib/config.guess \
+  lib/config.sub \
+  lib/install-sh \
+  lib/mdate-sh \
+  lib/missing \
+  lib/mkinstalldirs \
+  lib/elisp-comp \
+  lib/ylwrap \
+  lib/depcomp \
+  lib/compile \
+  lib/py-compile \
+  lib/ar-lib \
+  lib/test-driver \
+  lib/tap-driver.sh \
+  lib/tap-driver.pl
+
+install-data-hook:
+       @$(POST_INSTALL)
+       @for f in $(dist_script_DATA); do echo $$f; done \
+         | sed 's,^lib/,,' \
+         | ( st=0; \
+             while read f; do \
+               echo " chmod +x '$(DESTDIR)$(scriptdir)/$$f'"; \
+               chmod +x "$(DESTDIR)$(scriptdir)/$$f" || st=1; \
+             done; \
+             exit $$st )
+
+installcheck-local: installcheck-executable-scripts
+installcheck-executable-scripts:
+       @for f in $(dist_script_DATA); do echo $$f; done \
+         | sed 's,^lib/,,' \
+         | while read f; do \
+             path="$(pkgvdatadir)/$$f"; \
+             test -x "$$path" || echo $$path; \
+           done \
+         | sed 's/$$/: not executable/' \
+         | grep . 1>&2 && exit 1; exit 0
+
+
+## ---------------------------------------------------- ##
+##  Private perl modules used by automake and aclocal.  ##
+## ---------------------------------------------------- ##
+
+perllibdir = $(pkgvdatadir)/Automake
+dist_perllib_DATA = \
+  lib/Automake/ChannelDefs.pm \
+  lib/Automake/Channels.pm \
+  lib/Automake/Condition.pm \
+  lib/Automake/Configure_ac.pm \
+  lib/Automake/DisjConditions.pm \
+  lib/Automake/FileUtils.pm \
+  lib/Automake/General.pm \
+  lib/Automake/Getopt.pm \
+  lib/Automake/Item.pm \
+  lib/Automake/ItemDef.pm \
+  lib/Automake/Location.pm \
+  lib/Automake/Options.pm \
+  lib/Automake/Rule.pm \
+  lib/Automake/RuleDef.pm \
+  lib/Automake/Variable.pm \
+  lib/Automake/VarDef.pm \
+  lib/Automake/Version.pm \
+  lib/Automake/XFile.pm \
+  lib/Automake/Wrap.pm
+
+nodist_perllib_DATA = lib/Automake/Config.pm
+CLEANFILES += $(nodist_perllib_DATA)
+
+lib/Automake/Config.pm: lib/Automake/Config.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_at)test -d lib/Automake || $(MKDIR_P) lib/Automake
+       $(AM_V_GEN)in=Config.in \
+         && $(do_subst) <$(srcdir)/lib/Automake/Config.in >$@-t
+       $(generated_file_finalize)
+EXTRA_DIST += lib/Automake/Config.in
+
+
+## --------------------- ##
+##  Makefile fragments.  ##
+## --------------------- ##
+
+dist_am_DATA = \
+  lib/am/check.am \
+  lib/am/check2.am \
+  lib/am/clean-hdr.am \
+  lib/am/clean.am \
+  lib/am/compile.am \
+  lib/am/configure.am \
+  lib/am/data.am \
+  lib/am/dejagnu.am \
+  lib/am/depend.am \
+  lib/am/depend2.am \
+  lib/am/distdir.am \
+  lib/am/footer.am \
+  lib/am/header-vars.am \
+  lib/am/header.am \
+  lib/am/install.am \
+  lib/am/inst-vars.am \
+  lib/am/java.am \
+  lib/am/lang-compile.am \
+  lib/am/lex.am \
+  lib/am/library.am \
+  lib/am/libs.am \
+  lib/am/libtool.am \
+  lib/am/lisp.am \
+  lib/am/ltlib.am \
+  lib/am/ltlibrary.am \
+  lib/am/mans-vars.am \
+  lib/am/mans.am \
+  lib/am/program.am \
+  lib/am/progs.am \
+  lib/am/python.am \
+  lib/am/remake-hdr.am \
+  lib/am/scripts.am \
+  lib/am/subdirs.am \
+  lib/am/tags.am \
+  lib/am/texi-vers.am \
+  lib/am/texibuild.am \
+  lib/am/texinfos.am \
+  lib/am/vala.am \
+  lib/am/yacc.am
+
+
+## ------------------------------ ##
+##  Automake-provided m4 macros.  ##
+## ------------------------------ ##
+
+dist_automake_ac_DATA = \
+  m4/amversion.m4 \
+  m4/ar-lib.m4 \
+  m4/as.m4 \
+  m4/auxdir.m4 \
+  m4/ccstdc.m4 \
+  m4/cond.m4 \
+  m4/cond-if.m4 \
+  m4/depend.m4 \
+  m4/depout.m4 \
+  m4/dmalloc.m4 \
+  m4/gcj.m4 \
+  m4/header.m4 \
+  m4/init.m4 \
+  m4/install-sh.m4 \
+  m4/lead-dot.m4 \
+  m4/lex.m4 \
+  m4/lispdir.m4 \
+  m4/maintainer.m4 \
+  m4/make.m4 \
+  m4/minuso.m4 \
+  m4/missing.m4 \
+  m4/mkdirp.m4 \
+  m4/obsol-gt.m4 \
+  m4/obsol-lt.m4 \
+  m4/obsolete.m4 \
+  m4/options.m4 \
+  m4/protos.m4 \
+  m4/python.m4 \
+  m4/runlog.m4 \
+  m4/sanity.m4 \
+  m4/silent.m4 \
+  m4/strip.m4 \
+  m4/substnot.m4 \
+  m4/tar.m4 \
+  m4/upc.m4 \
+  m4/vala.m4
+
+dist_system_ac_DATA = m4/acdir/README
+
+# We build amversion.m4 here, instead of from config.status,
+# because config.status is rerun each time one of configure's
+# dependencies change and amversion.m4 happens to be a configure
+# dependency.  configure and amversion.m4 would be rebuilt in
+# loop otherwise.
+# Use '$(top_srcdir)/m4' for the benefit of non-GNU makes: this is
+# how amversion.m4 appears in our dependencies.
+$(top_srcdir)/m4/amversion.m4: $(srcdir)/configure.ac $(srcdir)/m4/amversion.in
+       $(AM_V_at)rm -f $@-t $@
+       $(AM_V_GEN)in=amversion.in \
+         && $(do_subst) <$(srcdir)/m4/amversion.in >$@-t
+       $(generated_file_finalize)
+EXTRA_DIST += m4/amversion.in
+
+
+## ------------ ##
+##  Testsuite.  ##
+## ------------ ##
+
+# Run the tests with a proper shell detected at configure time.
+LOG_COMPILER = $(AM_TEST_RUNNER_SHELL)
+
+TEST_EXTENSIONS = .pl .sh .tap
+SH_LOG_COMPILER = $(LOG_COMPILER)
+TAP_LOG_COMPILER = $(LOG_COMPILER)
+PL_LOG_COMPILER = $(PERL)
+AM_PL_LOG_FLAGS = -Mstrict -I $(builddir)/lib -I $(srcdir)/lib -w
+
+TAP_LOG_DRIVER = AM_TAP_AWK='$(AWK)' $(SHELL) $(srcdir)/lib/tap-driver.sh
+
+AM_TAP_LOG_DRIVER_FLAGS = --merge
+
+EXTRA_DIST += t/README t/ax/is
+
+TESTS = ## Will be updated later.
+
+# Some testsuite-influential variables should be overridable from the
+# test scripts, but not from the environment.
+AM_TESTS_ENVIRONMENT = \
+  for v in \
+    me \
+    required \
+    am_using_tap \
+    am_serial_tests \
+    am_test_prefer_config_shell \
+    am_original_AUTOMAKE \
+    am_original_ACLOCAL \
+  ; do \
+    eval test x"\$${$$v}" = x || unset $$v; \
+  done;
+# The 'AM_TESTS_REEXEC=no' setting tells the tests not to needlessly
+# re-execute themselves with the shell detected at configure time, since
+# we are already running them under it explicitly in our setup (see e.g.
+# the definition of TEST_LOG_COMPILER above).
+AM_TESTS_ENVIRONMENT += AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC;
+# We want warning messages and explanations for skipped tests to go to
+# the console if possible, so set up 'stderr_fileno_' properly.
+AM_TESTS_FD_REDIRECT = 9>&2
+AM_TESTS_ENVIRONMENT += stderr_fileno_=9; export stderr_fileno_;
+
+# Hand-written tests.
+
+include $(srcdir)/t/list-of-tests.mk
+
+TESTS += $(handwritten_TESTS)
+EXTRA_DIST += $(handwritten_TESTS)
+
+# Automatically-generated tests wrapping hand-written ones.
+# Also, automatically-computed dependencies for tests.
+
+include $(srcdir)/t/testsuite-part.am
+
+TESTS += $(generated_TESTS)
+EXTRA_DIST += $(generated_TESTS)
+
+$(srcdir)/t/testsuite-part.am:
+       $(AM_V_at)rm -f t/testsuite-part.tmp $@
+       $(AM_V_GEN)$(PERL) $(srcdir)/gen-testsuite-part \
+         --srcdir $(srcdir) > t/testsuite-part.tmp
+       $(AM_V_at)chmod a-w t/testsuite-part.tmp
+       $(AM_V_at)mv -f t/testsuite-part.tmp $@
+EXTRA_DIST += gen-testsuite-part
+
+## The dependecies declared here are not truly complete, but such
+## completeness would cause more issues than it would solve.  See
+## automake bug#11347.
+$(generated_TESTS): $(srcdir)/gen-testsuite-part
+$(srcdir)/t/testsuite-part.am: $(srcdir)/gen-testsuite-part Makefile.am
+
+# Static dependencies valid for each test case.
+check_SCRIPTS = t/wrap/aclocal-$(APIVERSION) t/wrap/automake-$(APIVERSION)
+dist_check_DATA = t/ax/plain-functions.sh t/ax/tap-functions.sh
+check_DATA = defs defs-static
+
+# Few more static dependencies.
+t/distcheck-missing-m4.log: t/ax/distcheck-hook-m4.am
+t/distcheck-outdated-m4.log: t/ax/distcheck-hook-m4.am
+EXTRA_DIST += t/ax/distcheck-hook-m4.am
+
+defs-static: defs-static.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_GEN)in=defs-static.in\
+         && $(do_subst) <$(srcdir)/defs-static.in >$@-t
+       $(generated_file_finalize)
+EXTRA_DIST += defs-static.in
+CLEANFILES += defs-static
+
+# If two test scripts have the same basename, they will end up sharing
+# the same log file, leading to all sort of undefined and undesired
+# behaviours.
+check-no-repeated-test-name:
+       @LC_ALL=C; export LC_ALL; \
+        lst='$(TEST_LOGS)'; for log in $$lst; do echo $$log; done \
+          | sort | uniq -c | awk '($$1 > 1) { print }' \
+          | sed 's/\.log$$//' | grep . >&2 \
+          && { \
+            echo $@: test names listed above are duplicated >&2; \
+            exit 1; \
+          }; :
+check-local: check-no-repeated-test-name
+.PHONY: check-no-repeated-test-name
+
+## Checking the list of tests.
+test_subdirs = t t/pm t/perf
+include $(srcdir)/t/CheckListOfTests.am
+
+# Run the testsuite with the installed aclocal and automake.
+installcheck-local: installcheck-testsuite
+installcheck-testsuite:
+       am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check
+
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+       -set x t/*.dir; shift; \
+        if test "$$#,$$1" = "1,*.dir"; then \
+          : there is no test directory to clean; \
+        else \
+          find "$$@" -type d ! -perm -700 -exec chmod u+rwx {} ';'; \
+          rm -rf "$$@"; \
+        fi;
+
+
+## ---------------- ##
+##  Documentation.  ##
+## ---------------- ##
+
+info_TEXINFOS = doc/automake.texi doc/automake-history.texi
+doc_automake_TEXINFOS = doc/fdl.texi
+doc_automake_history_TEXINFOS = doc/fdl.texi
+
+man1_MANS = \
+  doc/aclocal.1 \
+  doc/automake.1 \
+  doc/aclocal-$(APIVERSION).1 \
+  doc/automake-$(APIVERSION).1
+
+$(man1_MANS): $(srcdir)/configure.ac
+
+CLEANFILES += $(man1_MANS)
+EXTRA_DIST += doc/help2man
+
+update_mans = \
+  $(AM_V_GEN): \
+    && $(MKDIR_P) doc \
+    && PATH="$(abs_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
+    && export PATH \
+    && $(PERL) $(srcdir)/doc/help2man --output=$@
+
+doc/aclocal.1 doc/automake.1:
+       $(AM_V_GEN): \
+         && $(MKDIR_P) doc \
+         && f=`echo $@ | sed 's|.*/||; s|\.1$$||; $(transform)'` \
+         && echo ".so man1/$$f-$(APIVERSION).1" > $@
+
+doc/aclocal-$(APIVERSION).1: aclocal.in aclocal lib/Automake/Config.pm
+       $(update_mans) aclocal-$(APIVERSION)
+doc/automake-$(APIVERSION).1: automake.in automake lib/Automake/Config.pm
+       $(update_mans) automake-$(APIVERSION)
+
+
+## ---------------------------- ##
+##  Example package "amhello".  ##
+## ---------------------------- ##
+
+amhello_sources = \
+  doc/amhello/configure.ac \
+  doc/amhello/Makefile.am \
+  doc/amhello/README \
+  doc/amhello/src/main.c \
+  doc/amhello/src/Makefile.am
+
+amhello_configury = \
+  aclocal.m4 \
+  autom4te.cache \
+  Makefile.in \
+  config.h.in \
+  configure \
+  depcomp \
+  install-sh \
+  missing \
+  src/Makefile.in
+
+dist_noinst_DATA = $(amhello_sources)
+dist_doc_DATA = $(srcdir)/doc/amhello-1.0.tar.gz
+
+# We depend on configure.ac so that we regenerate the tarball
+# whenever the Automake version changes.
+# aclocal-$(APIVERSION) and automake-$(APIVERSION) are generated by
+# configure in 't/wrap'.
+$(srcdir)/doc/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac
+       $(AM_V_GEN): \
+         && PATH="$(abs_top_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
+         && export PATH \
+         && $(am__cd) $(srcdir)/doc/amhello \
+         && ACLOCAL=aclocal-$(APIVERSION) && export ACLOCAL \
+         && AUTOMAKE=automake-$(APIVERSION) && export AUTOMAKE \
+         && AUTOCONF='$(am_AUTOCONF)' && export AUTOCONF \
+         && AUTOM4TE='$(am_AUTOM4TE)' && export AUTOM4TE \
+         && AUTORECONF='$(am_AUTORECONF)' && export AUTORECONF \
+         && AUTOHEADER='$(am_AUTOHEADER)' && export AUTOHEADER \
+         && AUTOUPDATE='$(am_AUTOUPDATE)' && export AUTOUPDATE \
+         && $(am_AUTORECONF) -vfi \
+         && ./configure \
+         && $(MAKE) $(AM_MAKEFLAGS) distcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) distclean \
+         && rm -rf $(amhello_configury) \
+         && mv -f amhello-1.0.tar.gz ..
+
+
+## ------------------------------------------------- ##
+##  Third-party, obsolescent or experimental stuff.  ##
+## ------------------------------------------------- ##
+
+EXTRA_DIST += \
+  contrib/check-html.am \
+  contrib/multilib/README \
+  contrib/multilib/config-ml.in \
+  contrib/multilib/symlink-tree \
+  contrib/multilib/multilib.am \
+  contrib/multilib/multi.m4 \
+  contrib/README
+
+
+## --------------------------------------------------- ##
+##  Older files, kept mostly for historical interest.  ##
+## --------------------------------------------------- ##
+
+EXTRA_DIST += \
+  old/ChangeLog-tests \
+  old/ChangeLog.96 \
+  old/ChangeLog.98 \
+  old/ChangeLog.00 \
+  old/ChangeLog.01 \
+  old/ChangeLog.02 \
+  old/ChangeLog.03 \
+  old/ChangeLog.04 \
+  old/ChangeLog.09 \
+  old/ChangeLog.11 \
+  old/TODO
+
+
+##########################################################################
+
+## Everything past here is useful to the maintainer, but probably not
+## to anybody else.
+
+##########################################################################
+
+
+## --------------------------------------------------------- ##
+##  Automatic generation of the ChangeLog from git history.  ##
+## --------------------------------------------------------- ##
+
+gitlog_to_changelog_command = $(PERL) $(srcdir)/lib/gitlog-to-changelog
+gitlog_to_changelog_fixes = $(srcdir)/.git-log-fix
+gitlog_to_changelog_options = --amend=$(gitlog_to_changelog_fixes) \
+                              --since='2011-12-28 00:00:00' \
+                              --no-cluster --format '%s%n%n%b'
+
+EXTRA_DIST += lib/gitlog-to-changelog
+EXTRA_DIST += $(gitlog_to_changelog_fixes)
+
+# When executed from a git checkout, generate the ChangeLog from the git
+# history.  When executed from an extracted distribution tarball, just
+# copy the distributed ChangeLog in the build directory (and if this
+# fails, or if no distributed ChangeLog file is present, complain and
+# give an error).
+#
+# We need the apparently useless dependency from another .PHONY target
+# 'am--changelog-regen-hook' to work around a bug of Solaris make, which
+# doesn't execute the recipe of a target named as an existing file, even
+# if such target is declared '.PHONY' (yikes!)
+#
+.PHONY: am--changelog-regen-hook
+am--changelog-regen-hook:
+ChangeLog: am--changelog-regen-hook
+       $(AM_V_GEN)set -e; set -u; \
+## The ChangeLog should be regenerated unconditionally when working from
+## checked-out sources; otherwise, if we're working from a distribution
+## tarball, we expect the ChangeLog to be distributed, so check that it
+## is indeed present in the source directory.
+       if test -d $(srcdir)/.git; then \
+         rm -f $@-t \
+           && $(gitlog_to_changelog_command) \
+              $(gitlog_to_changelog_options) >$@-t \
+           && chmod a-w $@-t \
+           && mv -f $@-t $@ \
+           || exit 1; \
+       elif test ! -f $(srcdir)/$@; then \
+         echo "Source tree is not a git checkout, and no pre-existent" \
+              "$@ file has been found there" >&2; \
+         exit 1; \
+       fi
+
+# Ensure tests are world-executable.
+# FIXME: this should be turned into a maintainer check...
+dist-hook:
+       $(am__cd) $(distdir)/t && chmod a+rx *.sh *.tap
+
+
+## --------------------------- ##
+##  Perl coverage statistics.  ##
+## --------------------------- ##
+
+PERL_COVERAGE_DB = $(abs_top_builddir)/cover_db
+PERL_COVERAGE_FLAGS = -MDevel::Cover=-db,$(PERL_COVERAGE_DB),-silent,on,-summary,off
+PERL_COVER = cover
+
+check-coverage-run recheck-coverage-run: all
+       $(mkinstalldirs) $(PERL_COVERAGE_DB)
+       PERL5OPT="$$PERL5OPT $(PERL_COVERAGE_FLAGS)"; export PERL5OPT; \
+       WANT_NO_THREADS=yes; export WANT_NO_THREADS; unset AUTOMAKE_JOBS; \
+       $(MAKE) $(AM_MAKEFLAGS) `echo $@ | sed 's/-coverage-run//'`
+
+check-coverage-report:
+       @if test ! -d "$(PERL_COVERAGE_DB)"; then \
+         echo "No coverage database found in '$(PERL_COVERAGE_DB)'." >&2; \
+         echo "Please run \"make check-coverage\" first" >&2; \
+         exit 1; \
+       fi
+       $(PERL_COVER) $(PERL_COVER_FLAGS) "$(PERL_COVERAGE_DB)"
+
+# We don't use direct dependencies here because we'd like to be able
+# to invoke the report even after interrupted check-coverage.
+check-coverage: check-coverage-run
+       $(MAKE) $(AM_MAKEFLAGS) check-coverage-report
+
+recheck-coverage: recheck-coverage-run
+       $(MAKE) $(AM_MAKEFLAGS) check-coverage-report
+
+clean-coverage:
+       rm -rf "$(PERL_COVERAGE_DB)"
+clean-local: clean-coverage
+
+.PHONY: check-coverage recheck-coverage check-coverage-run \
+       recheck-coverage-run check-coverage-report clean-coverage
+
+
+## ---------------------------------------------------- ##
+##  Tagging and/or uploading stable and beta releases.  ##
+## ---------------------------------------------------- ##
+
+GIT = git
+
+EXTRA_DIST += lib/gnupload
+
+version_rx = ^[1-9][0-9]*\.[0-9][0-9]*(\.[0-9][0-9]*)?
+stable_version_rx = $(version_rx)$$
+beta_version_rx = $(version_rx)[bdfhjlnprtvxz]$$
+match_version = echo "$(VERSION)" | $(EGREP) >/dev/null
+
+## Check that we don't have uncommitted or unstaged changes.
+## TODO: Maybe the git suite already offers a shortcut to verify if the
+## TODO: working directory is "clean" or not?  If yes, use that instead
+## TODO: of duplicating the logic here.
+git_must_have_clean_workdir = \
+  $(GIT) rev-parse --verify HEAD >/dev/null \
+    && $(GIT) update-index -q --refresh \
+    && $(GIT) diff-files --quiet \
+    && $(GIT) diff-index --quiet --cached HEAD \
+    || fatal "you have uncommitted or unstaged changes"
+
+determine_release_type = \
+  if $(match_version) '$(stable_version_rx)'; then \
+    release_type='Release' dest=ftp; \
+  elif $(match_version) '$(beta_version_rx)'; then \
+    release_type='Beta release' dest=alpha; \
+  else \
+    fatal "invalid version '$(VERSION)' for a release"; \
+  fi
+
+git-tag-release: maintainer-check
+       @set -e; set -u; \
+       fatal () { echo "$@: $$*; not tagging" >&2; exit 1; }; \
+       case '$(AM_TAG_DRYRUN)' in \
+         ""|[nN]|[nN]o|NO) run="";; \
+         *) run="echo Running:";; \
+       esac; \
+       $(determine_release_type); \
+       $(git_must_have_clean_workdir); \
+## If all was successful, tag the release in the local repository.
+       $$run $(GIT) tag -s "v$(VERSION)" -m "$$release_type $(VERSION)"
+
+git-upload-release:
+       @set -e; set -u; \
+       fatal () { echo "$@: $$*; not releasing" >&2; exit 1; }; \
+       $(determine_release_type); \
+       dest=$$dest.gnu.org:automake; \
+       $(git_must_have_clean_workdir); \
+## Check that we are releasing from a valid tag.
+       tag=`$(GIT) describe` \
+         && case $$tag in "v$(VERSION)") true;; *) false;; esac \
+         || fatal "you can only create a release from a tagged version"; \
+## Build and upload the distribution tarball(s).
+       $(MAKE) $(AM_MAKEFLAGS) dist || exit 1; \
+       echo Will upload to $$dest: $(DIST_ARCHIVES); \
+       $(srcdir)/lib/gnupload $(GNUPLOADFLAGS) --to $$dest $(DIST_ARCHIVES)
+
+.PHONY: git-upload-release git-tag-release
+
+
+## ------------------------------------------------------------------ ##
+##  Explore differences of autogenerated files in different commits.  ##
+## ------------------------------------------------------------------ ##
+
+## Visually comparing differences between the Makefile.in files in
+## automake's own build system as generated in two different branches
+## might help to catch bugs and blunders.  This has already happened a
+## few times in the past, when we used to version-control Makefile.in.
+autodiffs:
+       @set -u; \
+        NEW_COMMIT=$${NEW_COMMIT-"HEAD"}; \
+        OLD_COMMIT=$${OLD_COMMIT-"HEAD~1"}; \
+        am_gitdir='$(abs_top_srcdir)/.git'; \
+        get_autofiles_from_rev () \
+        { \
+            rev=$$1 dir=$$2 \
+              && echo "$@: will get files from revision $$rev" \
+              && $(GIT) clone -q --depth 1 "$$am_gitdir" tmp \
+              && $(am__cd) tmp \
+              && $(GIT) checkout -q "$$rev" \
+              && echo "$@: bootstrapping $$rev" \
+              && $(SHELL) ./bootstrap.sh \
+              && echo "$@: copying files from $$rev" \
+              && makefile_ins=`find . -name Makefile.in` \
+              && (tar cf - configure aclocal.m4 $$makefile_ins) | \
+                 (cd .. && $(am__cd) "$$dir" && tar xf -) \
+              && cd .. \
+              && rm -rf tmp; \
+        }; \
+        outdir=$@.dir \
+## Before proceeding, ensure the specified revisions truly exist.
+          && $(GIT) --git-dir="$$am_gitdir" describe $$OLD_COMMIT >/dev/null \
+          && $(GIT) --git-dir="$$am_gitdir" describe $$NEW_COMMIT >/dev/null \
+          && rm -rf $$outdir \
+          && mkdir $$outdir \
+          && $(am__cd) $$outdir \
+          && mkdir new old \
+          && get_autofiles_from_rev $$OLD_COMMIT old \
+          && get_autofiles_from_rev $$NEW_COMMIT new \
+          && exit 0
+
+## With lots of eye candy; we like our developers pampered and spoiled :-)
+compare-autodiffs: autodiffs
+       @set -u; \
+       : $${COLORDIFF=colordiff} $${DIFF=diff}; \
+       dir=autodiffs.dir; \
+       if test ! -d "$$dir"; then \
+         echo "$@: $$dir: Not a directory" >&2; \
+         exit 1; \
+       fi; \
+       mydiff=false mypager=false; \
+       if test -t 1; then \
+         if ($$COLORDIFF -r . .) </dev/null >/dev/null 2>&1; then \
+           mydiff=$$COLORDIFF; \
+           mypager="less -R"; \
+         else \
+           mypager=less; \
+         fi; \
+       else \
+         mypager=cat; \
+       fi; \
+       if test "$$mydiff" = false; then \
+         if ($$DIFF -r -u . .); then \
+           mydiff=$$DIFF; \
+         else \
+           echo "$@: no good-enough diff program specified" >&2; \
+           exit 1; \
+         fi; \
+       fi; \
+       st=0; $$mydiff -r -u $$dir/old $$dir/new | $$mypager || st=$$?; \
+       rm -rf $$dir; \
+       exit $$st
+.PHONY: autodiffs compare-autodiffs
+
+
+## --------------------------------------------------------------------- ##
+##  Synchronize third-party files that are committed in our repository.  ##
+## --------------------------------------------------------------------- ##
+
+## Program to use to fetch files.
+WGET = wget
+WGET_SV_CVS = $(WGET) http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/
+WGET_SV_GIT_CF = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;hb=HEAD;f='
+WGET_SV_GIT_AC = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob_plain;hb=HEAD;f='
+WGET_SV_GIT_GL = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f='
+
+## Files that we fetch and which we compare against.
+## The 'lib/COPYING' file must still be synced by hand.
+FETCHFILES = \
+INSTALL \
+config.guess \
+config.sub \
+gnupload \
+gitlog-to-changelog \
+texinfo.tex \
+update-copyright
+
+## Fetch the latest versions of files we care about.
+fetch:
+       rm -rf Fetchdir > /dev/null 2>&1
+       mkdir Fetchdir
+## If a get fails then that is a problem.
+       ($(am__cd) Fetchdir && \
+       $(WGET_SV_GIT_CF)config.guess -O config.guess && \
+       $(WGET_SV_GIT_CF)config.sub -O config.sub && \
+       $(WGET_SV_CVS)texinfo/texinfo/doc/texinfo.tex -O texinfo.tex && \
+       $(WGET_SV_GIT_GL)doc/INSTALL -O INSTALL && \
+       $(WGET_SV_GIT_GL)build-aux/gnupload -O gnupload && \
+       $(WGET_SV_GIT_GL)build-aux/update-copyright -O update-copyright && \
+       $(WGET_SV_GIT_GL)build-aux/gitlog-to-changelog -O gitlog-to-changelog)
+## Don't exit after test because we want to give as many errors as
+## possible.
+       @stat=0; for file in $(FETCHFILES); do \
+         if diff -u $(srcdir)/lib/$$file Fetchdir/$$file \
+                 >>Fetchdir/update.patch 2>/dev/null; then :; \
+         else \
+           stat=1; \
+           echo "Updating $(srcdir)/lib/$$file ..."; \
+           cp Fetchdir/$$file $(srcdir)/lib/$$file; \
+         fi; \
+       done; \
+       test $$stat = 0 || \
+         echo "See Fetchdir/update.patch for a log of the changes."; \
+       exit $$stat
+.PHONY: fetch
+
+
+## ------------------------------------------------ ##
+##  Update copyright years of all committed files.  ##
+## ------------------------------------------------ ##
+
+EXTRA_DIST += lib/update-copyright
+
+update_copyright_env = \
+  UPDATE_COPYRIGHT_FORCE=1 \
+  UPDATE_COPYRIGHT_USE_INTERVALS=2
+
+.PHONY: update-copyright
+update-copyright:
+       $(AM_V_GEN)set -e; \
+       current_year=`date +%Y` && test -n "$$current_year" \
+         || { echo "$@: cannot get current year" >&2; exit 1; }; \
+       sed -i "/^RELEASE_YEAR=/s/=.*$$/=$$current_year/" \
+         bootstrap.sh configure.ac; \
+       excluded_re=`echo $(FETCHFILES) \
+         | sed -e 's|^|lib/|' -e 's| | lib/|g' -e 's, ,|,g'`; \
+       $(GIT) ls-files \
+         | grep -Ev '^(lib/)?(COPYING|INSTALL)$$' \
+         | grep -Ev "^($$excluded_re)$$" \
+         | $(update_copyright_env) xargs $(srcdir)/lib/$@
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..a7392ab
--- /dev/null
@@ -0,0 +1,4266 @@
+# Makefile.in generated by automake 1.12.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This Makefile.in 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = README $(am__configure_deps) $(dist_am_DATA) \
+       $(dist_automake_ac_DATA) $(dist_check_DATA) $(dist_doc_DATA) \
+       $(dist_noinst_DATA) $(dist_perllib_DATA) $(dist_pkgvdata_DATA) \
+       $(dist_script_DATA) $(dist_system_ac_DATA) \
+       $(doc_automake_TEXINFOS) $(doc_automake_history_TEXINFOS) \
+       $(srcdir)/GNUmakefile $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/defs $(srcdir)/doc/stamp-vti \
+       $(srcdir)/doc/version.texi $(srcdir)/t/CheckListOfTests.am \
+       $(srcdir)/t/list-of-tests.mk $(srcdir)/t/testsuite-part.am \
+       $(top_srcdir)/configure $(top_srcdir)/lib/config.guess \
+       $(top_srcdir)/lib/config.sub $(top_srcdir)/lib/install-sh \
+       $(top_srcdir)/lib/mdate-sh $(top_srcdir)/lib/missing \
+       $(top_srcdir)/lib/mkinstalldirs $(top_srcdir)/lib/test-driver \
+       $(top_srcdir)/lib/texinfo.tex $(top_srcdir)/t/wrap/aclocal.in \
+       $(top_srcdir)/t/wrap/automake.in AUTHORS COPYING ChangeLog \
+       INSTALL NEWS THANKS lib/COPYING lib/INSTALL lib/ar-lib \
+       lib/compile lib/config.guess lib/config.sub lib/depcomp \
+       lib/elisp-comp lib/install-sh lib/mdate-sh lib/missing \
+       lib/mkinstalldirs lib/py-compile lib/texinfo.tex lib/ylwrap
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
+       $(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/cond.m4 \
+       $(top_srcdir)/m4/init.m4 $(top_srcdir)/m4/install-sh.m4 \
+       $(top_srcdir)/m4/lead-dot.m4 $(top_srcdir)/m4/missing.m4 \
+       $(top_srcdir)/m4/options.m4 $(top_srcdir)/m4/runlog.m4 \
+       $(top_srcdir)/m4/sanity.m4 $(top_srcdir)/m4/silent.m4 \
+       $(top_srcdir)/m4/strip.m4 $(top_srcdir)/m4/substnot.m4 \
+       $(top_srcdir)/m4/tar.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/lib/mkinstalldirs
+CONFIG_CLEAN_FILES = t/wrap/aclocal-${APIVERSION} \
+       t/wrap/automake-${APIVERSION}
+CONFIG_CLEAN_VPATH_FILES = GNUmakefile defs
+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'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" \
+       "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(amdir)" \
+       "$(DESTDIR)$(automake_acdir)" "$(DESTDIR)$(docdir)" \
+       "$(DESTDIR)$(perllibdir)" "$(DESTDIR)$(pkgvdatadir)" \
+       "$(DESTDIR)$(scriptdir)" "$(DESTDIR)$(system_acdir)" \
+       "$(DESTDIR)$(perllibdir)"
+SCRIPTS = $(bin_SCRIPTS)
+depcomp =
+am__depfiles_maybe =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
+am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
+am__v_DVIPS_0 = @echo "  DVIPS   " $@;
+AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
+am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
+am__v_MAKEINFO_0 = @echo "  MAKEINFO" $@;
+AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
+am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
+am__v_INFOHTML_0 = @echo "  INFOHTML" $@;
+AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
+am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
+am__v_TEXI2DVI_0 = @echo "  TEXI2DVI" $@;
+AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
+am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
+am__v_TEXI2PDF_0 = @echo "  TEXI2PDF" $@;
+AM_V_texinfo = $(am__v_texinfo_@AM_V@)
+am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
+am__v_texinfo_0 = -q
+AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
+am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
+am__v_texidevnull_0 = > /dev/null
+am__dirstamp = $(am__leading_dot)dirstamp
+INFO_DEPS = $(srcdir)/doc/automake.info \
+       $(srcdir)/doc/automake-history.info
+TEXINFO_TEX = $(top_srcdir)/lib/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/lib
+DVIS = doc/automake.dvi doc/automake-history.dvi
+PDFS = doc/automake.pdf doc/automake-history.pdf
+PSS = doc/automake.ps doc/automake-history.ps
+HTMLS = doc/automake.html doc/automake-history.html
+TEXINFOS = doc/automake.texi doc/automake-history.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man1_MANS)
+DATA = $(dist_am_DATA) $(dist_automake_ac_DATA) $(dist_doc_DATA) \
+       $(dist_noinst_DATA) $(dist_perllib_DATA) $(dist_pkgvdata_DATA) \
+       $(dist_script_DATA) $(dist_system_ac_DATA) \
+       $(nodist_perllib_DATA)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='\e[0;31m'; \
+    grn='\e[0;32m'; \
+    lgn='\e[1;32m'; \
+    blu='\e[1;34m'; \
+    mgn='\e[0;35m'; \
+    brg='\e[1m'; \
+    std='\e[m'; \
+  fi; \
+}
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# 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.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(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='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.test' and 'test-trs-basic.test'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+am__test_logs3 = $(am__test_logs2:.pl.log=.log)
+PL_LOG_DRIVER = $(SHELL) $(top_srcdir)/lib/test-driver
+PL_LOG_COMPILE = $(PL_LOG_COMPILER) $(AM_PL_LOG_FLAGS) $(PL_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs4 = $(am__test_logs3:.sh.log=.log)
+SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/lib/test-driver
+SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS)
+TEST_LOGS = $(am__test_logs4:.tap.log=.log)
+TAP_LOG_COMPILE = $(TAP_LOG_COMPILER) $(AM_TAP_LOG_FLAGS) \
+       $(TAP_LOG_FLAGS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz
+GZIP_ENV = --best
+DIST_TARGETS = dist-xz dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_TEST_RUNNER_SHELL = @AM_TEST_RUNNER_SHELL@
+APIVERSION = @APIVERSION@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FC = @FC@
+FCFLAGS = @FCFLAGS@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GNU_CC = @GNU_CC@
+GNU_CFLAGS = @GNU_CFLAGS@
+GNU_CXX = @GNU_CXX@
+GNU_CXXFLAGS = @GNU_CXXFLAGS@
+GNU_F77 = @GNU_F77@
+GNU_FC = @GNU_FC@
+GNU_FCFLAGS = @GNU_FCFLAGS@
+GNU_FFLAGS = @GNU_FFLAGS@
+GNU_GCJ = @GNU_GCJ@
+GNU_GCJFLAGS = @GNU_GCJFLAGS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN = @LN@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MODIFICATION_DELAY = @MODIFICATION_DELAY@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_THREADS = @PERL_THREADS@
+RELEASE_YEAR = @RELEASE_YEAR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TEX = @TEX@
+VERSION = @VERSION@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_FC = @ac_ct_FC@
+ac_ct_GNU_CC = @ac_ct_GNU_CC@
+ac_ct_GNU_CXX = @ac_ct_GNU_CXX@
+ac_ct_GNU_F77 = @ac_ct_GNU_F77@
+ac_ct_GNU_FC = @ac_ct_GNU_FC@
+ac_ct_GNU_GCJ = @ac_ct_GNU_GCJ@
+am_AUTOCONF = @am_AUTOCONF@
+am_AUTOHEADER = @am_AUTOHEADER@
+am_AUTOM4TE = @am_AUTOM4TE@
+am_AUTORECONF = @am_AUTORECONF@
+am_AUTOUPDATE = @am_AUTOUPDATE@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+amdir = @amdir@
+automake_acdir = @automake_acdir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgvdatadir = @pkgvdatadir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+scriptdir = @scriptdir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+system_acdir = @system_acdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+CLEANFILES = $(bin_SCRIPTS) $(nodist_perllib_DATA) defs-static \
+       $(man1_MANS)
+DISTCLEANFILES = 
+MAINTAINERCLEANFILES = 
+EXTRA_DIST = $(AUTOMAKESOURCES) bootstrap.sh GNUmakefile \
+       syntax-checks.mk HACKING lib/Automake/Config.in \
+       m4/amversion.in t/README t/ax/is $(handwritten_TESTS) \
+       t/ax/testsuite-summary-checks.sh t/ax/tap-setup.sh \
+       t/ax/tap-summary-aux.sh t/ax/depcomp.sh \
+       t/ax/extract-testsuite-summary.pl t/ax/trivial-test-driver \
+       $(generated_TESTS) gen-testsuite-part \
+       t/ax/distcheck-hook-m4.am defs-static.in doc/help2man \
+       contrib/check-html.am contrib/multilib/README \
+       contrib/multilib/config-ml.in contrib/multilib/symlink-tree \
+       contrib/multilib/multilib.am contrib/multilib/multi.m4 \
+       contrib/README old/ChangeLog-tests old/ChangeLog.96 \
+       old/ChangeLog.98 old/ChangeLog.00 old/ChangeLog.01 \
+       old/ChangeLog.02 old/ChangeLog.03 old/ChangeLog.04 \
+       old/ChangeLog.09 old/ChangeLog.11 old/TODO \
+       lib/gitlog-to-changelog $(gitlog_to_changelog_fixes) \
+       lib/gnupload lib/update-copyright
+
+# We want a handful of substitutions to be fully-expanded by make;
+# then use config.status to substitute the remainder where a single
+# expansion is sufficient.  We use a funny notation here to avoid
+# configure substitutions in our text.
+do_subst = ( sed \
+  -e "s,[@]configure_input[@],Generated from $$in; do not edit by hand.,g" \
+  -e 's,[@]datadir[@],$(datadir),g' \
+  -e 's,[@]amdir[@],$(amdir),g' \
+  -e 's,[@]bindir[@],$(bindir),g' \
+  -e 's,[@]docdir[@],$(docdir),g' \
+  -e 's,[@]pkgvdatadir[@],$(pkgvdatadir),g' \
+  -e 's,[@]scriptdir[@],$(scriptdir),g' \
+  -e 's,[@]automake_acdir[@],$(automake_acdir),g' \
+  -e 's,[@]system_acdir[@],$(system_acdir),g' \
+  -e 's,[@]am__isrc[@],!!@!!am__isrc!!@!!,g' \
+  | $(SHELL) ./config.status --file=- \
+  | sed -e 's,!!@!!am__isrc!!@!!,@''am__isrc@,g' \
+  )
+
+
+# Generated  files shouldn't contain unexpanded '@substitutions@', and
+# should be made read-only, to prevent them from being edited by mistake
+# instead of the file the are generated from.
+generated_file_finalize = $(AM_V_at) \
+  if LC_ALL=C grep '@[a-zA-Z0-9_][a-zA-Z0-9_]*@' $@-t; then \
+    echo "$@ contains unexpanded substitution (see lines above)"; \
+    exit 1; \
+  fi; \
+  chmod a-w $@-t && mv -f $@-t $@
+
+bin_SCRIPTS = automake aclocal
+AUTOMAKESOURCES = automake.in aclocal.in
+TAGS_FILES = $(AUTOMAKESOURCES)
+dist_pkgvdata_DATA = \
+  lib/COPYING \
+  lib/INSTALL \
+  lib/texinfo.tex
+
+dist_script_DATA = \
+  lib/config.guess \
+  lib/config.sub \
+  lib/install-sh \
+  lib/mdate-sh \
+  lib/missing \
+  lib/mkinstalldirs \
+  lib/elisp-comp \
+  lib/ylwrap \
+  lib/depcomp \
+  lib/compile \
+  lib/py-compile \
+  lib/ar-lib \
+  lib/test-driver \
+  lib/tap-driver.sh \
+  lib/tap-driver.pl
+
+perllibdir = $(pkgvdatadir)/Automake
+dist_perllib_DATA = \
+  lib/Automake/ChannelDefs.pm \
+  lib/Automake/Channels.pm \
+  lib/Automake/Condition.pm \
+  lib/Automake/Configure_ac.pm \
+  lib/Automake/DisjConditions.pm \
+  lib/Automake/FileUtils.pm \
+  lib/Automake/General.pm \
+  lib/Automake/Getopt.pm \
+  lib/Automake/Item.pm \
+  lib/Automake/ItemDef.pm \
+  lib/Automake/Location.pm \
+  lib/Automake/Options.pm \
+  lib/Automake/Rule.pm \
+  lib/Automake/RuleDef.pm \
+  lib/Automake/Variable.pm \
+  lib/Automake/VarDef.pm \
+  lib/Automake/Version.pm \
+  lib/Automake/XFile.pm \
+  lib/Automake/Wrap.pm
+
+nodist_perllib_DATA = lib/Automake/Config.pm
+dist_am_DATA = \
+  lib/am/check.am \
+  lib/am/check2.am \
+  lib/am/clean-hdr.am \
+  lib/am/clean.am \
+  lib/am/compile.am \
+  lib/am/configure.am \
+  lib/am/data.am \
+  lib/am/dejagnu.am \
+  lib/am/depend.am \
+  lib/am/depend2.am \
+  lib/am/distdir.am \
+  lib/am/footer.am \
+  lib/am/header-vars.am \
+  lib/am/header.am \
+  lib/am/install.am \
+  lib/am/inst-vars.am \
+  lib/am/java.am \
+  lib/am/lang-compile.am \
+  lib/am/lex.am \
+  lib/am/library.am \
+  lib/am/libs.am \
+  lib/am/libtool.am \
+  lib/am/lisp.am \
+  lib/am/ltlib.am \
+  lib/am/ltlibrary.am \
+  lib/am/mans-vars.am \
+  lib/am/mans.am \
+  lib/am/program.am \
+  lib/am/progs.am \
+  lib/am/python.am \
+  lib/am/remake-hdr.am \
+  lib/am/scripts.am \
+  lib/am/subdirs.am \
+  lib/am/tags.am \
+  lib/am/texi-vers.am \
+  lib/am/texibuild.am \
+  lib/am/texinfos.am \
+  lib/am/vala.am \
+  lib/am/yacc.am
+
+dist_automake_ac_DATA = \
+  m4/amversion.m4 \
+  m4/ar-lib.m4 \
+  m4/as.m4 \
+  m4/auxdir.m4 \
+  m4/ccstdc.m4 \
+  m4/cond.m4 \
+  m4/cond-if.m4 \
+  m4/depend.m4 \
+  m4/depout.m4 \
+  m4/dmalloc.m4 \
+  m4/gcj.m4 \
+  m4/header.m4 \
+  m4/init.m4 \
+  m4/install-sh.m4 \
+  m4/lead-dot.m4 \
+  m4/lex.m4 \
+  m4/lispdir.m4 \
+  m4/maintainer.m4 \
+  m4/make.m4 \
+  m4/minuso.m4 \
+  m4/missing.m4 \
+  m4/mkdirp.m4 \
+  m4/obsol-gt.m4 \
+  m4/obsol-lt.m4 \
+  m4/obsolete.m4 \
+  m4/options.m4 \
+  m4/protos.m4 \
+  m4/python.m4 \
+  m4/runlog.m4 \
+  m4/sanity.m4 \
+  m4/silent.m4 \
+  m4/strip.m4 \
+  m4/substnot.m4 \
+  m4/tar.m4 \
+  m4/upc.m4 \
+  m4/vala.m4
+
+dist_system_ac_DATA = m4/acdir/README
+
+# Run the tests with a proper shell detected at configure time.
+LOG_COMPILER = $(AM_TEST_RUNNER_SHELL)
+TEST_EXTENSIONS = .pl .sh .tap
+SH_LOG_COMPILER = $(LOG_COMPILER)
+TAP_LOG_COMPILER = $(LOG_COMPILER)
+PL_LOG_COMPILER = $(PERL)
+AM_PL_LOG_FLAGS = -Mstrict -I $(builddir)/lib -I $(srcdir)/lib -w
+TAP_LOG_DRIVER = AM_TAP_AWK='$(AWK)' $(SHELL) $(srcdir)/lib/tap-driver.sh
+AM_TAP_LOG_DRIVER_FLAGS = --merge
+
+# Hand-written tests.
+
+# Automatically-generated tests wrapping hand-written ones.
+# Also, automatically-computed dependencies for tests.
+TESTS = $(handwritten_TESTS) $(generated_TESTS)
+
+# Some testsuite-influential variables should be overridable from the
+# test scripts, but not from the environment.
+# The 'AM_TESTS_REEXEC=no' setting tells the tests not to needlessly
+# re-execute themselves with the shell detected at configure time, since
+# we are already running them under it explicitly in our setup (see e.g.
+# the definition of TEST_LOG_COMPILER above).
+AM_TESTS_ENVIRONMENT = for v in me required am_using_tap \
+       am_serial_tests am_test_prefer_config_shell \
+       am_original_AUTOMAKE am_original_ACLOCAL ; do eval test \
+       x"\$${$$v}" = x || unset $$v; done; AM_TESTS_REEXEC=no; export \
+       AM_TESTS_REEXEC; stderr_fileno_=9; export stderr_fileno_;
+# We want warning messages and explanations for skipped tests to go to
+# the console if possible, so set up 'stderr_fileno_' properly.
+AM_TESTS_FD_REDIRECT = 9>&2
+
+# FIXME: this "expected failures" are in truth an hack used to
+# FIXME: to verify that some incorrect usages of our perl libraries
+# FIXME: raise an error.  We should find a cleaner way to check that.
+perl_fake_XFAIL_TESTS = \
+t/pm/Cond2.pl \
+t/pm/Cond3.pl \
+t/pm/DisjCon2.pl \
+t/pm/DisjCon3.pl \
+t/pm/Version2.pl \
+t/pm/Version3.pl
+
+XFAIL_TESTS = \
+t/all.sh \
+t/yacc-bison-skeleton-cxx.sh \
+t/yacc-bison-skeleton.sh \
+t/cond17.sh \
+t/gcj6.sh \
+t/override-conditional-2.sh \
+t/dist-pr109765.sh \
+t/instdir-cond2.sh \
+t/java-nobase.sh \
+t/objext-pr10128.sh \
+t/parallel-tests-many.sh \
+t/pr8365-remake-timing.sh \
+t/lex-subobj-nodep.sh \
+t/remake-am-pr10111.sh \
+t/remake-m4-pr10111.sh \
+t/txinfo5.sh \
+$(perl_fake_XFAIL_TESTS)
+
+perl_TESTS = \
+t/pm/Cond2.pl \
+t/pm/Cond3.pl \
+t/pm/Condition.pl \
+t/pm/Condition-t.pl \
+t/pm/DisjCon2.pl \
+t/pm/DisjCon3.pl \
+t/pm/DisjConditions.pl \
+t/pm/DisjConditions-t.pl \
+t/pm/Version.pl \
+t/pm/Version2.pl \
+t/pm/Version3.pl \
+t/pm/Wrap.pl
+
+perf_TESTS = \
+t/perf/cond.sh \
+t/perf/testsuite-recheck.sh \
+t/perf/testsuite-summary.sh
+
+
+# The order here is mostly alphabetical, with the deliberate exception
+# that tests having a high runtime (especially TAP tests that run various
+# checks sequentially) are listed early; this improves performance on
+# concurrent testsuite runs.
+handwritten_TESTS = \
+t/get-sysconf.sh \
+$(perl_TESTS) \
+$(perf_TESTS) \
+t/instspc.tap \
+t/aclocal.sh \
+t/aclocal3.sh \
+t/aclocal4.sh \
+t/aclocal5.sh \
+t/aclocal6.sh \
+t/aclocal7.sh \
+t/aclocal8.sh \
+t/aclocal9.sh \
+t/acloca10.sh \
+t/acloca11.sh \
+t/acloca12.sh \
+t/acloca13.sh \
+t/acloca14.sh \
+t/acloca15.sh \
+t/acloca16.sh \
+t/acloca17.sh \
+t/acloca18.sh \
+t/acloca19.sh \
+t/acloca20.sh \
+t/acloca21.sh \
+t/acloca22.sh \
+t/acloca23.sh \
+t/aclocal-acdir.sh \
+t/aclocal-install-absdir.sh \
+t/aclocal-print-acdir.sh \
+t/aclocal-path.sh \
+t/aclocal-path-install.sh \
+t/aclocal-path-install-serial.sh \
+t/aclocal-path-nonexistent.sh \
+t/aclocal-path-precedence.sh \
+t/aclocal-install-fail.sh \
+t/aclocal-install-mkdir.sh \
+t/aclocal-no-install-no-mkdir.sh \
+t/aclocal-verbose-install.sh \
+t/ac-output-old.tap \
+t/acsilent.sh \
+t/acsubst.sh \
+t/acsubst2.sh \
+t/add-missing.tap \
+t/all.sh \
+t/all2.sh \
+t/alloca.sh \
+t/alloca2.sh \
+t/alpha.sh \
+t/alpha2.sh \
+t/amhello-cflags.sh \
+t/amhello-cross-compile.sh \
+t/amhello-binpkg.sh \
+t/aminit-moreargs-deprecation.sh \
+t/amassign.sh \
+t/ammissing.sh \
+t/amopt.sh \
+t/amopts-location.sh \
+t/amopts-variable-expansion.sh \
+t/amsubst.sh \
+t/ansi2knr-no-more.sh \
+t/ar-lib.sh \
+t/ar-lib2.sh \
+t/ar-lib3.sh \
+t/ar-lib4.sh \
+t/ar-lib5a.sh \
+t/ar-lib5b.sh \
+t/ar-lib6a.sh \
+t/ar-lib6b.sh \
+t/ar-lib7.sh \
+t/ar.sh \
+t/ar2.sh \
+t/ar3.sh \
+t/ar4.sh \
+t/ar5.sh \
+t/asm.sh \
+t/asm2.sh \
+t/asm3.sh \
+t/autodist.sh \
+t/autodist-subdir.sh \
+t/autodist-acconfig.sh \
+t/autodist-acconfig-no-subdir.sh \
+t/autodist-aclocal-m4.sh \
+t/autodist-config-headers.sh \
+t/autodist-configure-no-subdir.sh \
+t/autodist-no-duplicate.sh \
+t/autodist-stamp-vti.sh \
+t/autohdr.sh \
+t/autohdr2.sh \
+t/autohdr3.sh \
+t/autohdr4.sh \
+t/autohdrdry.sh \
+t/automake-cmdline.tap \
+t/auxdir.sh \
+t/auxdir6.sh \
+t/auxdir7.sh \
+t/auxdir8.sh \
+t/auxdir-autodetect.sh \
+t/auxdir-computed.tap \
+t/auxdir-misplaced.sh \
+t/auxdir-nonexistent.sh \
+t/auxdir-unportable.tap \
+t/backcompat.sh \
+t/backcompat2.sh \
+t/backcompat3.sh \
+t/backcompat4.sh \
+t/backcompat5.sh \
+t/backcompat6.sh \
+t/backsl.sh \
+t/backsl2.sh \
+t/backsl3.sh \
+t/backsl4.sh \
+t/badline.sh \
+t/badopt.sh \
+t/badprog.sh \
+t/block.sh \
+t/bsource.sh \
+t/candist.sh \
+t/canon.sh \
+t/canon2.sh \
+t/canon3.sh \
+t/canon4.sh \
+t/canon5.sh \
+t/canon6.sh \
+t/canon7.sh \
+t/canon8.sh \
+t/canon-name.sh \
+t/ccnoco.sh \
+t/ccnoco2.sh \
+t/ccnoco3.sh \
+t/check.sh \
+t/check2.sh \
+t/check3.sh \
+t/check4.sh \
+t/check5.sh \
+t/check6.sh \
+t/check7.sh \
+t/check8.sh \
+t/check10.sh \
+t/check11.sh \
+t/check12.sh \
+t/check-subst.sh \
+t/check-subst-prog.sh \
+t/check-exported-srcdir.sh \
+t/check-fd-redirect.sh \
+t/check-tests-in-builddir.sh \
+t/check-no-test-driver.sh \
+t/check-concurrency-bug9245.sh \
+t/checkall.sh \
+t/clean.sh \
+t/clean2.sh \
+t/colneq.sh \
+t/colneq2.sh \
+t/colneq3.sh \
+t/colon.sh \
+t/colon2.sh \
+t/colon3.sh \
+t/colon4.sh \
+t/colon5.sh \
+t/colon6.sh \
+t/colon7.sh \
+t/color.sh \
+t/color2.sh \
+t/comment.sh \
+t/comment2.sh \
+t/comment3.sh \
+t/comment4.sh \
+t/comment5.sh \
+t/comment6.sh \
+t/comment7.sh \
+t/comment8.sh \
+t/comment9.sh \
+t/commen10.sh \
+t/commen11.sh \
+t/comments-in-var-def.sh \
+t/compile.sh \
+t/compile2.sh \
+t/compile3.sh \
+t/compile4.sh \
+t/compile5.sh \
+t/compile6.sh \
+t/compile_f90_c_cxx.sh \
+t/compile_f_c_cxx.sh \
+t/cond-basic.sh \
+t/cond.sh \
+t/cond2.sh \
+t/cond3.sh \
+t/cond4.sh \
+t/cond5.sh \
+t/cond6.sh \
+t/cond7.sh \
+t/cond8.sh \
+t/cond9.sh \
+t/cond10.sh \
+t/cond11.sh \
+t/cond13.sh \
+t/cond14.sh \
+t/cond15.sh \
+t/cond16.sh \
+t/cond17.sh \
+t/cond18.sh \
+t/cond19.sh \
+t/cond20.sh \
+t/cond21.sh \
+t/cond22.sh \
+t/cond23.sh \
+t/cond24.sh \
+t/cond25.sh \
+t/cond26.sh \
+t/cond27.sh \
+t/cond28.sh \
+t/cond30.sh \
+t/cond31.sh \
+t/cond32.sh \
+t/cond33.sh \
+t/cond34.sh \
+t/cond35.sh \
+t/cond36.sh \
+t/cond37.sh \
+t/cond38.sh \
+t/cond39.sh \
+t/cond40.sh \
+t/cond41.sh \
+t/cond42.sh \
+t/cond43.sh \
+t/cond44.sh \
+t/cond45.sh \
+t/cond46.sh \
+t/condd.sh \
+t/condhook.sh \
+t/condhook2.sh \
+t/condinc.sh \
+t/condinc2.sh \
+t/condlib.sh \
+t/condman2.sh \
+t/condman3.sh \
+t/configure.sh \
+t/confdeps.sh \
+t/conff.sh \
+t/conff2.sh \
+t/conffile-leading-dot.sh \
+t/confh.sh \
+t/confh4.sh \
+t/confh5.sh \
+t/confh6.sh \
+t/confh7.sh \
+t/confh8.sh \
+t/confincl.sh \
+t/conflnk.sh \
+t/conflnk2.sh \
+t/conflnk3.sh \
+t/conflnk4.sh \
+t/confsub.sh \
+t/confvar.sh \
+t/confvar2.sh \
+t/copy.sh \
+t/cscope.tap \
+t/cscope2.sh \
+t/cscope3.sh \
+t/cxx.sh \
+t/cxx2.sh \
+t/cxxcpp.sh \
+t/cxxlibobj.sh \
+t/cxxlink.sh \
+t/cxxnoc.sh \
+t/cxxo.sh \
+t/cygnus-deprecation.sh \
+t/cygnus-check-without-all.sh \
+t/cygnus-dependency-tracking.sh \
+t/cygnus-imply-foreign.sh \
+t/cygnus-no-dist.sh \
+t/cygnus-no-installinfo.sh \
+t/cygnus-requires-maintainer-mode.sh \
+t/cygwin32.sh \
+t/dash.sh \
+t/defun.sh \
+t/defun2.sh \
+t/dejagnu.sh \
+t/dejagnu2.sh \
+t/dejagnu3.sh \
+t/dejagnu4.sh \
+t/dejagnu5.sh \
+t/dejagnu6.sh \
+t/dejagnu7.sh \
+t/dejagnu-absolute-builddir.sh \
+t/dejagnu-relative-srcdir.sh \
+t/dejagnu-siteexp-extend.sh \
+t/dejagnu-siteexp-append.sh \
+t/dejagnu-siteexp-useredit.sh \
+t/deleted-am.sh \
+t/deleted-m4.sh \
+t/depacl2.sh \
+t/depcomp.sh \
+t/depcomp2.sh \
+t/depcomp8a.sh \
+t/depcomp8b.sh \
+t/depdist.sh \
+t/depend.sh \
+t/depend3.sh \
+t/depend4.sh \
+t/depend5.sh \
+t/depend6.sh \
+t/deprecated-acinit.sh \
+t/destdir.sh \
+t/dirlist.sh \
+t/dirlist2.sh \
+t/dirlist-abspath.sh \
+t/discover.sh \
+t/dist-formats.tap \
+t/dist-auxdir-many-subdirs.sh \
+t/dist-auxfile-2.sh \
+t/dist-auxfile.sh \
+t/dist-included-parent-dir.sh \
+t/dist-missing-am.sh \
+t/dist-missing-included-m4.sh \
+t/dist-missing-m4.sh \
+t/dist-readonly.sh \
+t/dist-repeated.sh \
+t/dist-pr109765.sh \
+t/distcleancheck.sh \
+t/distcom2.sh \
+t/distcom3.sh \
+t/distcom4.sh \
+t/distcom5.sh \
+t/distcom-subdir.sh \
+t/distdir.sh \
+t/disthook.sh \
+t/distlinks.sh \
+t/distlinksbrk.sh \
+t/distname.sh \
+t/distcheck-configure-flags.sh \
+t/distcheck-configure-flags-am.sh \
+t/distcheck-configure-flags-subpkg.sh \
+t/distcheck-hook.sh \
+t/distcheck-hook2.sh \
+t/distcheck-writable-srcdir.sh \
+t/distcheck-missing-m4.sh \
+t/distcheck-outdated-m4.sh \
+t/distcheck-override-infodir.sh \
+t/distcheck-pr9579.sh \
+t/distcheck-pr10470.sh \
+t/dmalloc.sh \
+t/doc-parsing-buglets-colneq-subst.sh \
+t/doc-parsing-buglets-tabs.sh \
+t/dollar.sh \
+t/dollarvar.sh \
+t/dollarvar2.sh \
+t/double.sh \
+t/dup2.sh \
+t/else.sh \
+t/empty.sh \
+t/empty2.sh \
+t/empty3.sh \
+t/empty4.sh \
+t/exdir.sh \
+t/exdir2.sh \
+t/exdir3.sh \
+t/exeext.sh \
+t/exeext2.sh \
+t/exeext3.sh \
+t/exeext4.sh \
+t/exsource.sh \
+t/ext.sh \
+t/ext2.sh \
+t/ext3.sh \
+t/extra.sh \
+t/extra2.sh \
+t/extra3.sh \
+t/extra4.sh \
+t/extra5.sh \
+t/extra6.sh \
+t/extra7.sh \
+t/extra8.sh \
+t/extra9.sh \
+t/extra10.sh \
+t/extra11.sh \
+t/extra12.sh \
+t/extra-programs-empty.sh \
+t/extra-portability.sh \
+t/extra-portability2.sh \
+t/extra-portability3.sh \
+t/extradep.sh \
+t/extradep2.sh \
+t/f90only.sh \
+t/flavor.sh \
+t/flibs.sh \
+t/fn99.sh \
+t/fn99subdir.sh \
+t/fnoc.sh \
+t/fo.sh \
+t/forcemiss.sh \
+t/forcemiss2.sh \
+t/fort1.sh \
+t/fort2.sh \
+t/fort4.sh \
+t/fort5.sh \
+t/fonly.sh \
+t/fortdep.sh \
+t/gcj.sh \
+t/gcj2.sh \
+t/gcj3.sh \
+t/gcj4.sh \
+t/gcj5.sh \
+t/gcj6.sh \
+t/gettext.sh \
+t/gettext2.sh \
+t/gettext3.sh \
+t/gnumake.sh \
+t/gnuwarn.sh \
+t/gnuwarn2.sh \
+t/gnits.sh \
+t/gnits2.sh \
+t/gnits3.sh \
+t/hdr-vars-defined-once.sh \
+t/header.sh \
+t/help.sh \
+t/help2.sh \
+t/help3.sh \
+t/help4.sh \
+t/help-depend.sh \
+t/help-depend2.sh \
+t/help-dmalloc.sh \
+t/help-init.sh \
+t/help-lispdir.sh \
+t/help-multilib.sh \
+t/help-python.sh \
+t/help-silent.sh \
+t/help-upc.sh \
+t/hfs.sh \
+t/implicit.sh \
+t/info.sh \
+t/init.sh \
+t/init2.sh \
+t/insh2.sh \
+t/install2.sh \
+t/installdir.sh \
+t/instsh.sh \
+t/instsh2.sh \
+t/instsh3.sh \
+t/instdat.sh \
+t/instdat2.sh \
+t/instdir.sh \
+t/instdir2.sh \
+t/instdir-cond.sh \
+t/instdir-cond2.sh \
+t/instdir-no-empty.sh \
+t/instdir-java.sh \
+t/instdir-lisp.sh \
+t/instdir-ltlib.sh \
+t/instdir-prog.sh \
+t/instdir-python.sh \
+t/instdir-texi.sh \
+t/instexec.sh \
+t/instfail.sh \
+t/instfail-info.sh \
+t/instfail-java.sh \
+t/instfail-libtool.sh \
+t/insthook.sh \
+t/instman.sh \
+t/instman2.sh \
+t/instmany.sh \
+t/instmany-mans.sh \
+t/instmany-python.sh \
+t/install-info-dir.sh \
+t/interp.sh \
+t/interp2.sh \
+t/java.sh \
+t/java2.sh \
+t/java3.sh \
+t/javadir-undefined.sh \
+t/javaflags.sh \
+t/java-check.sh \
+t/java-clean.sh \
+t/java-compile-install.sh \
+t/java-compile-run-flat.sh \
+t/java-compile-run-nested.sh \
+t/java-empty-classpath.sh \
+t/javaprim.sh \
+t/javasubst.sh \
+t/java-extra.sh \
+t/java-mix.sh \
+t/java-no-duplicate.sh \
+t/java-nobase.sh \
+t/java-noinst.sh \
+t/java-rebuild.sh \
+t/java-sources.sh \
+t/java-uninstall.sh \
+t/ldadd.sh \
+t/ldflags.sh \
+t/lex.sh \
+t/lex2.sh \
+t/lex3.sh \
+t/lex5.sh \
+t/lexcpp.sh \
+t/lexvpath.sh \
+t/lex-subobj-nodep.sh \
+t/lex-lib.sh \
+t/lex-lib-external.sh \
+t/lex-libobj.sh \
+t/lex-noyywrap.sh \
+t/lex-clean-cxx.sh \
+t/lex-clean.sh \
+t/lex-depend-cxx.sh \
+t/lex-depend-grep.sh \
+t/lex-depend.sh \
+t/lex-line.sh \
+t/lex-nodist.sh \
+t/lex-pr204.sh \
+t/lflags.sh \
+t/lflags2.sh \
+t/libexec.sh \
+t/libobj-basic.sh \
+t/libobj2.sh \
+t/libobj3.sh \
+t/libobj4.sh \
+t/libobj5.sh \
+t/libobj7.sh \
+t/libobj10.sh \
+t/libobj12.sh \
+t/libobj13.sh \
+t/libobj14.sh \
+t/libobj15a.sh \
+t/libobj15b.sh \
+t/libobj15c.sh \
+t/libobj16a.sh \
+t/libobj16b.sh \
+t/libobj17.sh \
+t/libobj18.sh \
+t/libobj19.sh \
+t/libobj20a.sh \
+t/libobj20b.sh \
+t/libobj20c.sh \
+t/library.sh \
+t/library2.sh \
+t/library3.sh \
+t/libtool.sh \
+t/libtool2.sh \
+t/libtool3.sh \
+t/libtool4.sh \
+t/libtool5.sh \
+t/libtool6.sh \
+t/libtool7.sh \
+t/libtool8.sh \
+t/libtool9.sh \
+t/libtoo10.sh \
+t/libtoo11.sh \
+t/license.sh \
+t/license2.sh \
+t/link_c_cxx.sh \
+t/link_cond.sh \
+t/link_dist.sh \
+t/link_f90_only.sh \
+t/link_fc.sh \
+t/link_fccxx.sh \
+t/link_fcxx.sh \
+t/link_f_only.sh \
+t/link_override.sh \
+t/lisp2.sh \
+t/lisp3.sh \
+t/lisp4.sh \
+t/lisp5.sh \
+t/lisp6.sh \
+t/lisp7.sh \
+t/lisp8.sh \
+t/lispdry.sh \
+t/listval.sh \
+t/location.sh \
+t/longline.sh \
+t/longlin2.sh \
+t/ltcond.sh \
+t/ltcond2.sh \
+t/ltconv.sh \
+t/ltdeps.sh \
+t/ltinit.sh \
+t/ltinstloc.sh \
+t/ltlibobjs.sh \
+t/ltlibsrc.sh \
+t/ltorder.sh \
+t/lzma.sh \
+t/m4-inclusion.sh \
+t/maintclean.sh \
+t/maintclean-vpath.sh \
+t/maintmode-configure-msg.sh \
+t/make.sh \
+t/makefile-deps.sh \
+t/makej.sh \
+t/makej2.sh \
+t/maken.sh \
+t/maken3.sh \
+t/make-dryrun.tap \
+t/makevars.sh \
+t/man.sh \
+t/man2.sh \
+t/man3.sh \
+t/man4.sh \
+t/man5.sh \
+t/man6.sh \
+t/man7.sh \
+t/man8.sh \
+t/mdate.sh \
+t/mdate2.sh \
+t/mdate3.sh \
+t/mdate4.sh \
+t/mdate5.sh \
+t/mdate6.sh \
+t/missing.sh \
+t/missing2.sh \
+t/missing3.sh \
+t/missing4.sh \
+t/missing5.sh \
+t/missing6.sh \
+t/missing-auxfile-stops-makefiles-creation.sh \
+t/mkdirp-deprecation.sh \
+t/mkinstall.sh \
+t/mkinst2.sh \
+t/mkinst3.sh \
+t/mmode.sh \
+t/mmodely.sh \
+t/multlib.sh \
+t/no-extra-makefile-code.sh \
+t/no-outdir-option.sh \
+t/nobase.sh \
+t/nobase-libtool.sh \
+t/nobase-python.sh \
+t/nobase-nodist.sh \
+t/nodef.sh \
+t/nodef2.sh \
+t/nodep.sh \
+t/nodep2.sh \
+t/nodepcomp.sh \
+t/nodist.sh \
+t/nodist2.sh \
+t/nodist3.sh \
+t/noinst.sh \
+t/noinstdir.sh \
+t/nolink.sh \
+t/nostdinc.sh \
+t/notrans.sh \
+t/number.sh \
+t/objc-basic.sh \
+t/objc-minidemo.sh \
+t/objc-flags.sh \
+t/objc-deps.sh \
+t/objcxx-basic.sh \
+t/objcxx-minidemo.sh \
+t/objcxx-flags.sh \
+t/objcxx-deps.sh \
+t/objc-megademo.sh \
+t/objext-pr10128.sh \
+t/obsolete.sh \
+t/oldvars.sh \
+t/order.sh \
+t/output.sh \
+t/output2.sh \
+t/output3.sh \
+t/output4.sh \
+t/output5.sh \
+t/output6.sh \
+t/output7.sh \
+t/output8.sh \
+t/output9.sh \
+t/output10.sh \
+t/output11.sh \
+t/output12.sh \
+t/output13.sh \
+t/output-order.sh \
+t/override-conditional-1.sh \
+t/override-conditional-2.sh \
+t/override-html.sh \
+t/override-suggest-local.sh \
+t/parallel-am.sh \
+t/parallel-am2.sh \
+t/parallel-am3.sh \
+t/serial-tests.sh \
+t/parallel-tests.sh \
+t/parallel-tests2.sh \
+t/parallel-tests3.sh \
+t/parallel-tests5.sh \
+t/parallel-tests6.sh \
+t/parallel-tests8.sh \
+t/parallel-tests9.sh \
+t/parallel-tests10.sh \
+t/parallel-tests-recheck-depends-on-all.sh \
+t/parallel-tests-exeext.sh \
+t/parallel-tests-suffix.sh \
+t/parallel-tests-suffix-prog.sh \
+t/parallel-tests-log-compiler-1.sh \
+t/parallel-tests-log-compiler-2.sh \
+t/parallel-tests-dry-run-1.sh \
+t/parallel-tests-dry-run-2.sh \
+t/parallel-tests-fd-redirect.sh \
+t/parallel-tests-fd-redirect-exeext.sh \
+t/parallel-tests-extra-programs.sh \
+t/parallel-tests-unreadable.sh \
+t/parallel-tests-subdir.sh \
+t/parallel-tests-interrupt.tap \
+t/parallel-tests-reset-term.sh \
+t/parallel-tests-harderror.sh \
+t/parallel-tests-log-override-1.sh \
+t/parallel-tests-log-override-2.sh \
+t/parallel-tests-log-override-recheck.sh \
+t/parallel-tests-log-compiler-example.sh \
+t/parallel-tests-cmdline-override.sh \
+t/parallel-tests-fork-bomb.sh \
+t/parallel-tests-empty-testlogs.sh \
+t/parallel-tests-driver-install.sh \
+t/parallel-tests-no-color-in-log.sh \
+t/parallel-tests-no-spurious-summary.sh \
+t/parallel-tests-exit-statuses.sh \
+t/parallel-tests-console-output.sh \
+t/parallel-tests-once.sh \
+t/parallel-tests-trailing-bslash.sh \
+t/parallel-tests-many.sh \
+t/tests-environment.sh \
+t/am-tests-environment.sh \
+t/tests-environment-backcompat.sh \
+t/testsuite-summary-color.sh \
+t/testsuite-summary-count.sh \
+t/testsuite-summary-count-many.sh \
+t/testsuite-summary-reference-log.sh \
+t/test-driver-acsubst.sh \
+t/test-driver-cond.sh \
+t/test-driver-custom-no-extra-driver.sh \
+t/test-driver-custom.sh \
+t/test-driver-custom-xfail-tests.sh \
+t/test-driver-custom-multitest.sh \
+t/test-driver-custom-multitest-recheck.sh \
+t/test-driver-custom-multitest-recheck2.sh \
+t/test-driver-create-log-dir.sh \
+t/test-driver-strip-vpath.sh \
+t/test-driver-trs-suffix-registered.sh \
+t/test-driver-fail.sh \
+t/test-driver-is-distributed.sh \
+t/test-harness-vpath-rewrite.sh \
+t/test-log.sh \
+t/test-logs-repeated.sh \
+t/test-metadata-global-log.sh \
+t/test-metadata-global-result.sh \
+t/test-metadata-recheck.sh \
+t/test-metadata-results.sh \
+t/test-missing.sh \
+t/test-missing2.sh \
+t/test-trs-basic.sh \
+t/test-trs-recover.sh \
+t/test-trs-recover2.sh \
+t/test-extensions.sh \
+t/test-extensions-cond.sh \
+t/parse.sh \
+t/percent.sh \
+t/percent2.sh \
+t/phony.sh \
+t/pluseq.sh \
+t/pluseq2.sh \
+t/pluseq3.sh \
+t/pluseq4.sh \
+t/pluseq5.sh \
+t/pluseq6.sh \
+t/pluseq7.sh \
+t/pluseq8.sh \
+t/pluseq9.sh \
+t/pluseq10.sh \
+t/pluseq11.sh \
+t/posixsubst-data.sh \
+t/posixsubst-extradist.sh \
+t/posixsubst-ldadd.sh \
+t/posixsubst-libraries.sh \
+t/posixsubst-ltlibraries.sh \
+t/posixsubst-programs.sh \
+t/posixsubst-scripts.sh \
+t/posixsubst-sources.sh \
+t/posixsubst-tests.sh \
+t/postproc.sh \
+t/ppf77.sh \
+t/pr2.sh \
+t/pr9.sh \
+t/pr72.sh \
+t/pr87.sh \
+t/pr211.sh \
+t/pr220.sh \
+t/pr224.sh \
+t/pr229.sh \
+t/pr243.sh \
+t/pr266.sh \
+t/pr279.sh \
+t/pr279-2.sh \
+t/pr287.sh \
+t/pr300-lib.sh \
+t/pr300-ltlib.sh \
+t/pr300-prog.sh \
+t/pr307.sh \
+t/pr401.sh \
+t/pr401b.sh \
+t/pr401c.sh \
+t/prefix.sh \
+t/primary.sh \
+t/primary2.sh \
+t/primary3.sh \
+t/primary-prefix-invalid-couples.tap \
+t/primary-prefix-valid-couples.sh \
+t/primary-prefix-couples-force-valid.sh \
+t/primary-prefix-couples-documented-valid.sh \
+t/print-libdir.sh \
+t/proginst.sh \
+t/programs-primary-rewritten.sh \
+t/py-compile-basic.sh \
+t/py-compile-basic2.sh \
+t/py-compile-basedir.sh \
+t/py-compile-destdir.sh \
+t/py-compile-env.sh \
+t/py-compile-option-terminate.sh \
+t/py-compile-usage.sh \
+t/python.sh \
+t/python2.sh \
+t/python3.sh \
+t/python4.sh \
+t/python5.sh \
+t/python5b.sh \
+t/python6.sh \
+t/python7.sh \
+t/python8.sh \
+t/python9.sh \
+t/python10.sh \
+t/python11.sh \
+t/python12.sh \
+t/python-dist.sh \
+t/python-vars.sh \
+t/python-virtualenv.sh \
+t/python-pr10995.sh \
+t/recurs.sh \
+t/recurs2.sh \
+t/relativize.tap \
+t/remake.sh \
+t/remake1a.sh \
+t/remake2.sh \
+t/remake3.sh \
+t/remake3a.sh \
+t/remake4.sh \
+t/remake5.sh \
+t/remake6.sh \
+t/remake7.sh \
+t/remake8a.sh \
+t/remake8b.sh \
+t/remake9a.sh \
+t/remake9b.sh \
+t/remake9c.sh \
+t/remake9d.sh \
+t/remake10a.sh \
+t/remake10b.sh \
+t/remake10c.sh \
+t/remake11.sh \
+t/remake12.sh \
+t/remake-all-1.sh \
+t/remake-all-2.sh \
+t/remake-subdir-from-subdir.sh \
+t/remake-subdir-gnu.sh \
+t/remake-subdir.sh \
+t/remake-subdir2.sh \
+t/remake-subdir-long-time.sh \
+t/remake-gnulib-add-acsubst.sh \
+t/remake-gnulib-add-header.sh \
+t/remake-gnulib-remove-header.sh \
+t/remake-moved-m4-file.sh \
+t/remake-deleted-m4-file.sh \
+t/remake-renamed-m4-file.sh \
+t/remake-renamed-m4-macro-and-file.sh \
+t/remake-renamed-m4-macro.sh \
+t/remake-am-pr10111.sh \
+t/remake-m4-pr10111.sh \
+t/remake-deleted-am-2.sh \
+t/remake-deleted-am-subdir.sh \
+t/remake-deleted-am.sh \
+t/remake-renamed-am.sh \
+t/pr8365-remake-timing.sh \
+t/req.sh \
+t/reqd.sh \
+t/reqd2.sh \
+t/repeated-options.sh \
+t/rulepat.sh \
+t/self-check-cleanup.tap \
+t/self-check-configure-help.sh \
+t/self-check-dir.tap \
+t/self-check-env-sanitize.tap \
+t/self-check-exit.tap \
+t/self-check-explicit-skips.sh \
+t/self-check-is_newest.tap \
+t/self-check-me.tap \
+t/self-check-reexec.tap \
+t/self-check-report.sh \
+t/self-check-sanity.sh \
+t/self-check-seq.tap \
+t/self-check-is-blocked-signal.tap \
+t/self-check-tap.sh \
+t/self-check-unindent.tap \
+t/sanity.sh \
+t/scripts.sh \
+t/seenc.sh \
+t/silent.sh \
+t/silent2.sh \
+t/silent3.sh \
+t/silent4.sh \
+t/silent6.sh \
+t/silent7.sh \
+t/silent8.sh \
+t/silent9.sh \
+t/silentcxx.sh \
+t/silentcxx-gcc.sh \
+t/silentf77.sh \
+t/silentf90.sh \
+t/silent-amopts.sh \
+t/silent-many-gcc.sh \
+t/silent-many-generic.sh \
+t/silent-nowarn.sh \
+t/silent-configsite.sh \
+t/silent-nested-vars.sh \
+t/silent-lex.sh \
+t/silent-yacc.sh \
+t/silent-yacc-headers.sh \
+t/srcsub.sh \
+t/srcsub2.sh \
+t/space.sh \
+t/specflg.sh \
+t/specflg2.sh \
+t/specflg3.sh \
+t/specflg6.sh \
+t/specflg7.sh \
+t/specflg8.sh \
+t/specflg9.sh \
+t/specflg10.sh \
+t/specflg-dummy.sh \
+t/spell.sh \
+t/spell2.sh \
+t/spell3.sh \
+t/spelling.sh \
+t/spy.sh \
+t/spy-rm.tap \
+t/stdinc.sh \
+t/stamph2.sh \
+t/stdlib.sh \
+t/stdlib2.sh \
+t/strictness-override.sh \
+t/strictness-precedence.sh \
+t/strip.sh \
+t/strip2.sh \
+t/strip3.sh \
+t/subdir.sh \
+t/subdir2.sh \
+t/subdir3.sh \
+t/subdir4.sh \
+t/subdir5.sh \
+t/subdir6.sh \
+t/subdir7.sh \
+t/subdir8.sh \
+t/subdir9.sh \
+t/subdir10.sh \
+t/subdirbuiltsources.sh \
+t/subcond.sh \
+t/subcond2.sh \
+t/subcond3.sh \
+t/subobj.sh \
+t/subobj2.sh \
+t/subobj4.sh \
+t/subobj5.sh \
+t/subobj6.sh \
+t/subobj7.sh \
+t/subobj8.sh \
+t/subobj9.sh \
+t/subobj10.sh \
+t/subobj11a.sh \
+t/subobj11b.sh \
+t/subobj11c.sh \
+t/subobjname.sh \
+t/subpkg.sh \
+t/subpkg2.sh \
+t/subpkg3.sh \
+t/subpkg4.sh \
+t/subpkg-yacc.sh \
+t/subst.sh \
+t/subst3.sh \
+t/subst4.sh \
+t/subst5.sh \
+t/subst-no-trailing-empty-line.sh \
+t/substref.sh \
+t/substre2.sh \
+t/substtarg.sh \
+t/suffix.sh \
+t/suffix2.sh \
+t/suffix3.tap \
+t/suffix4.sh \
+t/suffix5.sh \
+t/suffix6.sh \
+t/suffix6b.sh \
+t/suffix6c.sh \
+t/suffix7.sh \
+t/suffix8.tap \
+t/suffix9.sh \
+t/suffix10.tap \
+t/suffix11.tap \
+t/suffix12.sh \
+t/suffix13.sh \
+t/suffix-chain.tap \
+t/symlink.sh \
+t/symlink2.sh \
+t/syntax.sh \
+t/tap-ambiguous-directive.sh \
+t/tap-autonumber.sh \
+t/tap-bailout.sh \
+t/tap-bailout-leading-space.sh \
+t/tap-bailout-and-logging.sh \
+t/tap-bailout-suppress-badexit.sh \
+t/tap-bailout-suppress-later-diagnostic.sh \
+t/tap-bailout-suppress-later-errors.sh \
+t/tap-color.sh \
+t/tap-deps.sh \
+t/tap-diagnostic.sh \
+t/tap-empty-diagnostic.sh \
+t/tap-empty.sh \
+t/tap-escape-directive.sh \
+t/tap-escape-directive-2.sh \
+t/tap-exit.sh \
+t/tap-signal.tap \
+t/tap-fancy.sh \
+t/tap-fancy2.sh \
+t/tap-global-log.sh \
+t/tap-global-result.sh \
+t/tap-log.sh \
+t/tap-msg0-result.sh \
+t/tap-msg0-directive.sh \
+t/tap-msg0-planskip.sh \
+t/tap-msg0-bailout.sh \
+t/tap-msg0-misc.sh \
+t/tap-merge-stdout-stderr.sh \
+t/tap-no-merge-stdout-stderr.sh \
+t/tap-no-disable-hard-error.sh \
+t/tap-no-spurious-summary.sh \
+t/tap-no-spurious-numbers.sh \
+t/tap-no-spurious.sh \
+t/tap-not-ok-skip.sh \
+t/tap-number-wordboundary.sh \
+t/tap-numeric-description.sh \
+t/tap-negative-numbers.sh \
+t/tap-numbers-leading-zero.sh \
+t/tap-out-of-order.sh \
+t/tap-passthrough.sh \
+t/tap-passthrough-exit.sh \
+t/tap-plan.sh \
+t/tap-plan-corner.sh \
+t/tap-plan-errors.sh \
+t/tap-plan-middle.sh \
+t/tap-plan-whitespace.sh \
+t/tap-plan-leading-zero.sh \
+t/tap-plan-malformed.sh \
+t/tap-missing-plan-and-bad-exit.sh \
+t/tap-planskip.sh \
+t/tap-planskip-late.sh \
+t/tap-planskip-and-logging.sh \
+t/tap-planskip-unplanned.sh \
+t/tap-planskip-unplanned-corner.sh \
+t/tap-planskip-case-insensitive.sh \
+t/tap-planskip-whitespace.sh \
+t/tap-planskip-badexit.sh \
+t/tap-planskip-bailout.sh \
+t/tap-planskip-later-errors.sh \
+t/tap-realtime.sh \
+t/tap-test-number-0.sh \
+t/tap-recheck-logs.sh \
+t/tap-result-comment.sh \
+t/tap-todo-skip-together.sh \
+t/tap-todo-skip-whitespace.sh \
+t/tap-todo-skip.sh \
+t/tap-unplanned.sh \
+t/tap-whitespace-normalization.sh \
+t/tap-with-and-without-number.sh \
+t/tap-xfail-tests.sh \
+t/tap-common-setup.sh \
+t/tap-bad-prog.tap \
+t/tap-basic.sh \
+t/tap-diagnostic-custom.sh \
+t/tap-driver-stderr.sh \
+t/tap-doc.sh \
+t/tap-doc2.sh \
+t/tap-more.sh \
+t/tap-more2.sh \
+t/tap-recheck.sh \
+t/tap-summary.sh \
+t/tap-summary-color.sh \
+t/tags.sh \
+t/tags2.sh \
+t/tagsub.sh \
+t/tar.sh \
+t/tar2.sh \
+t/tar3.sh \
+t/tar-override.sh \
+t/target-cflags.sh \
+t/targetclash.sh \
+t/tests-environment-fd-redirect.sh \
+t/tests-environment-and-log-compiler.sh \
+t/txinfo.sh \
+t/txinfo2.sh \
+t/txinfo3.sh \
+t/txinfo4.sh \
+t/txinfo5.sh \
+t/txinfo5b.sh \
+t/txinfo6.sh \
+t/txinfo7.sh \
+t/txinfo8.sh \
+t/txinfo9.sh \
+t/txinfo10.sh \
+t/txinfo13.sh \
+t/txinfo16.sh \
+t/txinfo17.sh \
+t/txinfo19.sh \
+t/txinfo20.sh \
+t/txinfo21.sh \
+t/txinfo22.sh \
+t/txinfo23.sh \
+t/txinfo24.sh \
+t/txinfo25.sh \
+t/txinfo26.sh \
+t/txinfo27.sh \
+t/txinfo28.sh \
+t/txinfo29.sh \
+t/txinfo30.sh \
+t/txinfo31.sh \
+t/txinfo32.sh \
+t/txinfo33.sh \
+t/txinfo-no-clutter.sh \
+t/txinfo-unrecognized-extension.sh \
+t/transform.sh \
+t/transform2.sh \
+t/transform3.sh \
+t/uninstall-fail.sh \
+t/uninstall-pr9578.sh \
+t/unused.sh \
+t/upc.sh \
+t/upc2.sh \
+t/upc3.sh \
+t/vala.sh \
+t/vala2.sh \
+t/vala3.sh \
+t/vala4.sh \
+t/vala5.sh \
+t/vala-vapi.sh \
+t/vala-headers.sh \
+t/vala-libs.sh \
+t/vala-vpath.sh \
+t/vala-mix.sh \
+t/vala-mix2.sh \
+t/vala-parallel.sh \
+t/vars.sh \
+t/vars3.sh \
+t/vartar.sh \
+t/vartypos.sh \
+t/vartypo2.sh \
+t/version.sh \
+t/version2.sh \
+t/version3.sh \
+t/version4.sh \
+t/version6.sh \
+t/version7.sh \
+t/version8.sh \
+t/vpath.sh \
+t/vtexi.sh \
+t/vtexi2.sh \
+t/vtexi3.sh \
+t/vtexi4.sh \
+t/warnings-override.sh \
+t/warnings-precedence.sh \
+t/warnings-strictness-interactions.sh \
+t/warnings-unknown.sh \
+t/warnopts.sh \
+t/warnings-win-over-strictness.sh \
+t/warning-groups-win-over-strictness.sh \
+t/werror.sh \
+t/werror2.sh \
+t/werror3.sh \
+t/werror4.sh \
+t/whoami.sh \
+t/xsource.sh \
+t/yacc.sh \
+t/yacc2.sh \
+t/yacc4.sh \
+t/yacc5.sh \
+t/yacc7.sh \
+t/yacc8.sh \
+t/yaccdry.sh \
+t/yaccpp.sh \
+t/yaccvpath.sh \
+t/yacc-auxdir.sh \
+t/yacc-basic.sh \
+t/yacc-cxx.sh \
+t/yacc-bison-skeleton-cxx.sh \
+t/yacc-bison-skeleton.sh \
+t/yacc-clean.sh \
+t/yacc-clean-cxx.sh \
+t/yacc-d-basic.sh \
+t/yacc-d-cxx.sh \
+t/yacc-d-vpath.sh \
+t/yacc-deleted-headers.sh \
+t/yacc-depend.sh \
+t/yacc-depend2.sh \
+t/yacc-dist-nobuild-subdir.sh \
+t/yacc-dist-nobuild.sh \
+t/yacc-line.sh \
+t/yacc-mix-c-cxx.sh \
+t/yacc-nodist.sh \
+t/yacc-pr204.sh \
+t/yacc-weirdnames.sh \
+t/yflags.sh \
+t/yflags2.sh \
+t/yflags-cmdline-override.sh \
+t/yflags-conditional.sh \
+t/yflags-d-false-positives.sh \
+t/yflags-force-conditional.sh \
+t/yflags-force-override.sh \
+t/yflags-var-expand.sh \
+t/libtool-macros.sh \
+t/gettext-macros.sh
+
+generated_TESTS = t/ar-lib-w.sh t/compile-w.sh t/compile2-w.sh \
+       t/compile3-w.sh t/compile4-w.sh t/compile5-w.sh \
+       t/compile6-w.sh t/instsh2-w.sh t/instsh3-w.sh t/mdate5-w.sh \
+       t/mdate6-w.sh t/missing-w.sh t/missing2-w.sh t/missing3-w.sh \
+       t/missing5-w.sh t/mkinst3-w.sh t/check-w.sh t/check2-w.sh \
+       t/check3-w.sh t/check4-w.sh t/check5-w.sh t/check6-w.sh \
+       t/check7-w.sh t/check8-w.sh t/check11-w.sh t/check12-w.sh \
+       t/check-subst-w.sh t/check-subst-prog-w.sh \
+       t/check-exported-srcdir-w.sh t/check-fd-redirect-w.sh \
+       t/check-tests-in-builddir-w.sh t/color-w.sh t/color2-w.sh \
+       t/exeext4-w.sh t/maken3-w.sh t/posixsubst-tests-w.sh \
+       t/tap-ambiguous-directive-w.sh t/tap-autonumber-w.sh \
+       t/tap-bailout-w.sh t/tap-bailout-and-logging-w.sh \
+       t/tap-bailout-suppress-badexit-w.sh \
+       t/tap-bailout-suppress-later-diagnostic-w.sh \
+       t/tap-bailout-suppress-later-errors-w.sh t/tap-color-w.sh \
+       t/tap-deps-w.sh t/tap-diagnostic-w.sh \
+       t/tap-empty-diagnostic-w.sh t/tap-empty-w.sh \
+       t/tap-escape-directive-w.sh t/tap-escape-directive-2-w.sh \
+       t/tap-exit-w.sh t/tap-signal-w.tap t/tap-fancy-w.sh \
+       t/tap-fancy2-w.sh t/tap-global-log-w.sh \
+       t/tap-global-result-w.sh t/tap-log-w.sh t/tap-msg0-result-w.sh \
+       t/tap-msg0-directive-w.sh t/tap-msg0-planskip-w.sh \
+       t/tap-msg0-bailout-w.sh t/tap-msg0-misc-w.sh \
+       t/tap-merge-stdout-stderr-w.sh \
+       t/tap-no-merge-stdout-stderr-w.sh \
+       t/tap-no-disable-hard-error-w.sh \
+       t/tap-no-spurious-summary-w.sh t/tap-no-spurious-numbers-w.sh \
+       t/tap-no-spurious-w.sh t/tap-not-ok-skip-w.sh \
+       t/tap-number-wordboundary-w.sh t/tap-numeric-description-w.sh \
+       t/tap-negative-numbers-w.sh t/tap-numbers-leading-zero-w.sh \
+       t/tap-out-of-order-w.sh t/tap-passthrough-w.sh \
+       t/tap-passthrough-exit-w.sh t/tap-plan-w.sh \
+       t/tap-plan-corner-w.sh t/tap-plan-errors-w.sh \
+       t/tap-plan-middle-w.sh t/tap-plan-whitespace-w.sh \
+       t/tap-plan-leading-zero-w.sh t/tap-plan-malformed-w.sh \
+       t/tap-missing-plan-and-bad-exit-w.sh t/tap-planskip-w.sh \
+       t/tap-planskip-late-w.sh t/tap-planskip-and-logging-w.sh \
+       t/tap-planskip-unplanned-w.sh \
+       t/tap-planskip-unplanned-corner-w.sh \
+       t/tap-planskip-case-insensitive-w.sh \
+       t/tap-planskip-whitespace-w.sh t/tap-planskip-badexit-w.sh \
+       t/tap-planskip-bailout-w.sh t/tap-planskip-later-errors-w.sh \
+       t/tap-realtime-w.sh t/tap-test-number-0-w.sh \
+       t/tap-recheck-logs-w.sh t/tap-result-comment-w.sh \
+       t/tap-todo-skip-together-w.sh t/tap-todo-skip-whitespace-w.sh \
+       t/tap-todo-skip-w.sh t/tap-unplanned-w.sh \
+       t/tap-whitespace-normalization-w.sh \
+       t/tap-with-and-without-number-w.sh t/tap-xfail-tests-w.sh \
+       t/tap-bad-prog-w.tap t/tap-basic-w.sh \
+       t/tap-diagnostic-custom-w.sh t/tap-driver-stderr-w.sh \
+       t/tap-doc-w.sh t/tap-more-w.sh t/tap-more2-w.sh \
+       t/tap-recheck-w.sh t/depcomp-lt-msvcmsys.tap \
+       t/depcomp-lt-disabled.tap t/depcomp-lt-msvisualcpp.tap \
+       t/depcomp-lt-makedepend.tap t/depcomp-lt-auto.tap \
+       t/depcomp-lt-cpp.tap t/depcomp-lt-gcc.tap \
+       t/depcomp-lt-dashmstdout.tap t/depcomp-msvcmsys.tap \
+       t/depcomp-disabled.tap t/depcomp-msvisualcpp.tap \
+       t/depcomp-makedepend.tap t/depcomp-auto.tap t/depcomp-cpp.tap \
+       t/depcomp-gcc.tap t/depcomp-dashmstdout.tap
+libtool_macros_TESTS = \
+  t/ar-lib4.sh \
+  t/ar-lib6a.sh \
+  t/ar-lib6b.sh \
+  t/canon6.sh \
+  t/canon7.sh \
+  t/depcomp8b.sh \
+  t/extradep2.sh \
+  t/fort5.sh \
+  t/instdir-ltlib.sh \
+  t/instfail-libtool.sh \
+  t/ldadd.sh \
+  t/ldflags.sh \
+  t/libobj13.sh \
+  t/libtool.sh \
+  t/libtool2.sh \
+  t/libtool3.sh \
+  t/libtool5.sh \
+  t/libtool6.sh \
+  t/libtool7.sh \
+  t/libtool8.sh \
+  t/libtool9.sh \
+  t/libtoo10.sh \
+  t/libtoo11.sh \
+  t/listval.sh \
+  t/ltcond.sh \
+  t/ltcond2.sh \
+  t/ltconv.sh \
+  t/ltdeps.sh \
+  t/ltinit.sh \
+  t/ltinstloc.sh \
+  t/ltlibobjs.sh \
+  t/ltlibsrc.sh \
+  t/ltorder.sh \
+  t/nobase-libtool.sh \
+  t/objc-megademo.sh \
+  t/posixsubst-ltlibraries.sh \
+  t/pr72.sh \
+  t/pr211.sh \
+  t/pr300-ltlib.sh \
+  t/pr307.sh \
+  t/pr401b.sh \
+  t/reqd2.sh \
+  t/silent3.sh \
+  t/silent4.sh \
+  t/silent9.sh \
+  t/stdlib2.sh \
+  t/strip3.sh \
+  t/subobj9.sh \
+  t/suffix2.sh \
+  t/suffix5.sh \
+  t/suffix8.tap \
+  t/suffix10.tap \
+  t/vala-libs.sh \
+  t/vartypo2.sh \
+  t/depcomp-lt-msvcmsys.tap \
+  t/depcomp-lt-disabled.tap \
+  t/depcomp-lt-msvisualcpp.tap \
+  t/depcomp-lt-makedepend.tap \
+  t/depcomp-lt-auto.tap \
+  t/depcomp-lt-cpp.tap \
+  t/depcomp-lt-gcc.tap \
+  t/depcomp-lt-dashmstdout.tap
+
+check_testsuite_summary_TESTS = \
+  t/testsuite-summary-color.sh \
+  t/testsuite-summary-count.sh
+
+on_tap_with_common_setup_TESTS = \
+  t/tap-ambiguous-directive.sh \
+  t/tap-autonumber.sh \
+  t/tap-bailout.sh \
+  t/tap-bailout-leading-space.sh \
+  t/tap-bailout-and-logging.sh \
+  t/tap-bailout-suppress-badexit.sh \
+  t/tap-bailout-suppress-later-diagnostic.sh \
+  t/tap-bailout-suppress-later-errors.sh \
+  t/tap-color.sh \
+  t/tap-deps.sh \
+  t/tap-diagnostic.sh \
+  t/tap-empty-diagnostic.sh \
+  t/tap-empty.sh \
+  t/tap-escape-directive.sh \
+  t/tap-escape-directive-2.sh \
+  t/tap-exit.sh \
+  t/tap-fancy.sh \
+  t/tap-fancy2.sh \
+  t/tap-global-log.sh \
+  t/tap-global-result.sh \
+  t/tap-log.sh \
+  t/tap-msg0-result.sh \
+  t/tap-msg0-directive.sh \
+  t/tap-msg0-planskip.sh \
+  t/tap-msg0-bailout.sh \
+  t/tap-msg0-misc.sh \
+  t/tap-merge-stdout-stderr.sh \
+  t/tap-no-merge-stdout-stderr.sh \
+  t/tap-no-disable-hard-error.sh \
+  t/tap-no-spurious-summary.sh \
+  t/tap-no-spurious-numbers.sh \
+  t/tap-no-spurious.sh \
+  t/tap-not-ok-skip.sh \
+  t/tap-number-wordboundary.sh \
+  t/tap-numeric-description.sh \
+  t/tap-negative-numbers.sh \
+  t/tap-numbers-leading-zero.sh \
+  t/tap-out-of-order.sh \
+  t/tap-passthrough.sh \
+  t/tap-passthrough-exit.sh \
+  t/tap-plan.sh \
+  t/tap-plan-corner.sh \
+  t/tap-plan-errors.sh \
+  t/tap-plan-middle.sh \
+  t/tap-plan-whitespace.sh \
+  t/tap-plan-leading-zero.sh \
+  t/tap-plan-malformed.sh \
+  t/tap-missing-plan-and-bad-exit.sh \
+  t/tap-planskip.sh \
+  t/tap-planskip-late.sh \
+  t/tap-planskip-and-logging.sh \
+  t/tap-planskip-unplanned.sh \
+  t/tap-planskip-unplanned-corner.sh \
+  t/tap-planskip-case-insensitive.sh \
+  t/tap-planskip-whitespace.sh \
+  t/tap-planskip-badexit.sh \
+  t/tap-planskip-bailout.sh \
+  t/tap-planskip-later-errors.sh \
+  t/tap-realtime.sh \
+  t/tap-test-number-0.sh \
+  t/tap-recheck-logs.sh \
+  t/tap-result-comment.sh \
+  t/tap-todo-skip-together.sh \
+  t/tap-todo-skip-whitespace.sh \
+  t/tap-todo-skip.sh \
+  t/tap-unplanned.sh \
+  t/tap-whitespace-normalization.sh \
+  t/tap-with-and-without-number.sh \
+  t/tap-xfail-tests.sh
+
+check_tap_testsuite_summary_TESTS = \
+  t/tap-summary.sh \
+  t/tap-summary-color.sh
+
+depcomp_TESTS = \
+  t/depcomp-lt-msvcmsys.tap \
+  t/depcomp-lt-disabled.tap \
+  t/depcomp-lt-msvisualcpp.tap \
+  t/depcomp-lt-makedepend.tap \
+  t/depcomp-lt-auto.tap \
+  t/depcomp-lt-cpp.tap \
+  t/depcomp-lt-gcc.tap \
+  t/depcomp-lt-dashmstdout.tap \
+  t/depcomp-msvcmsys.tap \
+  t/depcomp-disabled.tap \
+  t/depcomp-msvisualcpp.tap \
+  t/depcomp-makedepend.tap \
+  t/depcomp-auto.tap \
+  t/depcomp-cpp.tap \
+  t/depcomp-gcc.tap \
+  t/depcomp-dashmstdout.tap
+
+extract_testsuite_summary_TESTS = \
+  t/testsuite-summary-count-many.sh
+
+gettext_macros_TESTS = \
+  t/gettext.sh \
+  t/gettext2.sh \
+  t/gettext3.sh \
+  t/subcond.sh
+
+use_trivial_test_driver_TESTS = \
+  t/testsuite-summary-count-many.sh \
+  t/test-driver-acsubst.sh \
+  t/test-driver-cond.sh \
+  t/test-driver-custom-multitest.sh \
+  t/test-driver-custom-multitest-recheck.sh \
+  t/test-driver-custom-multitest-recheck2.sh
+
+
+# Static dependencies valid for each test case.
+check_SCRIPTS = t/wrap/aclocal-$(APIVERSION) t/wrap/automake-$(APIVERSION)
+dist_check_DATA = t/ax/plain-functions.sh t/ax/tap-functions.sh
+check_DATA = defs defs-static
+test_subdirs = t t/pm t/perf
+am__tmk = tests-in-makefile-list.tmp
+am__tfs = tests-on-filesystem-list.tmp
+am__tdf = diff-in-tests-lists.tmp
+info_TEXINFOS = doc/automake.texi doc/automake-history.texi
+doc_automake_TEXINFOS = doc/fdl.texi
+doc_automake_history_TEXINFOS = doc/fdl.texi
+man1_MANS = \
+  doc/aclocal.1 \
+  doc/automake.1 \
+  doc/aclocal-$(APIVERSION).1 \
+  doc/automake-$(APIVERSION).1
+
+update_mans = \
+  $(AM_V_GEN): \
+    && $(MKDIR_P) doc \
+    && PATH="$(abs_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
+    && export PATH \
+    && $(PERL) $(srcdir)/doc/help2man --output=$@
+
+amhello_sources = \
+  doc/amhello/configure.ac \
+  doc/amhello/Makefile.am \
+  doc/amhello/README \
+  doc/amhello/src/main.c \
+  doc/amhello/src/Makefile.am
+
+amhello_configury = \
+  aclocal.m4 \
+  autom4te.cache \
+  Makefile.in \
+  config.h.in \
+  configure \
+  depcomp \
+  install-sh \
+  missing \
+  src/Makefile.in
+
+dist_noinst_DATA = $(amhello_sources)
+dist_doc_DATA = $(srcdir)/doc/amhello-1.0.tar.gz
+
+##########################################################################
+
+##########################################################################
+gitlog_to_changelog_command = $(PERL) $(srcdir)/lib/gitlog-to-changelog
+gitlog_to_changelog_fixes = $(srcdir)/.git-log-fix
+gitlog_to_changelog_options = --amend=$(gitlog_to_changelog_fixes) \
+                              --since='2011-12-28 00:00:00' \
+                              --no-cluster --format '%s%n%n%b'
+
+PERL_COVERAGE_DB = $(abs_top_builddir)/cover_db
+PERL_COVERAGE_FLAGS = -MDevel::Cover=-db,$(PERL_COVERAGE_DB),-silent,on,-summary,off
+PERL_COVER = cover
+GIT = git
+version_rx = ^[1-9][0-9]*\.[0-9][0-9]*(\.[0-9][0-9]*)?
+stable_version_rx = $(version_rx)$$
+beta_version_rx = $(version_rx)[bdfhjlnprtvxz]$$
+match_version = echo "$(VERSION)" | $(EGREP) >/dev/null
+git_must_have_clean_workdir = \
+  $(GIT) rev-parse --verify HEAD >/dev/null \
+    && $(GIT) update-index -q --refresh \
+    && $(GIT) diff-files --quiet \
+    && $(GIT) diff-index --quiet --cached HEAD \
+    || fatal "you have uncommitted or unstaged changes"
+
+determine_release_type = \
+  if $(match_version) '$(stable_version_rx)'; then \
+    release_type='Release' dest=ftp; \
+  elif $(match_version) '$(beta_version_rx)'; then \
+    release_type='Beta release' dest=alpha; \
+  else \
+    fatal "invalid version '$(VERSION)' for a release"; \
+  fi
+
+WGET = wget
+WGET_SV_CVS = $(WGET) http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/
+WGET_SV_GIT_CF = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;hb=HEAD;f='
+WGET_SV_GIT_AC = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob_plain;hb=HEAD;f='
+WGET_SV_GIT_GL = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f='
+FETCHFILES = \
+INSTALL \
+config.guess \
+config.sub \
+gnupload \
+gitlog-to-changelog \
+texinfo.tex \
+update-copyright
+
+update_copyright_env = \
+  UPDATE_COPYRIGHT_FORCE=1 \
+  UPDATE_COPYRIGHT_USE_INTERVALS=2
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .dvi .log .pl .pl$(EXEEXT) .ps .sh .sh$(EXEEXT) .tap .tap$(EXEEXT) .trs
+am--refresh: Makefile
+       @:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/t/list-of-tests.mk $(srcdir)/t/testsuite-part.am $(srcdir)/t/CheckListOfTests.am $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu --ignore-deps Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+       esac;
+$(srcdir)/t/list-of-tests.mk $(srcdir)/t/testsuite-part.am $(srcdir)/t/CheckListOfTests.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+t/wrap/aclocal-${APIVERSION}: $(top_builddir)/config.status $(top_srcdir)/t/wrap/aclocal.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+t/wrap/automake-${APIVERSION}: $(top_builddir)/config.status $(top_srcdir)/t/wrap/automake.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binSCRIPTS: $(bin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n' \
+           -e 'h;s|.*|.|' \
+           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+             if (++n[d] == $(am__install_max)) { \
+               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+           else { print "f", d "/" $$4, $$1 } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+            test -z "$$files" || { \
+              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+            } \
+       ; done
+
+uninstall-binSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+       files=`for p in $$list; do echo "$$p"; done | \
+              sed -e 's,.*/,,;$(transform)'`; \
+       dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+doc/$(am__dirstamp):
+       @$(MKDIR_P) doc
+       @: > doc/$(am__dirstamp)
+
+$(srcdir)/doc/automake.info: doc/automake.texi $(srcdir)/doc/version.texi $(doc_automake_TEXINFOS)
+       $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+       am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+       rm -rf $$backupdir && mkdir $$backupdir && \
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
+       cd "$$am__cwd"; \
+       if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
+        -o $@ $(srcdir)/doc/automake.texi; \
+       then \
+         rc=0; \
+         $(am__cd) $(srcdir); \
+       else \
+         rc=$$?; \
+         $(am__cd) $(srcdir) && \
+         $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+       fi; \
+       rm -rf $$backupdir; exit $$rc
+
+doc/automake.dvi: doc/automake.texi $(srcdir)/doc/version.texi $(doc_automake_TEXINFOS) doc/$(am__dirstamp)
+       $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
+       $(TEXI2DVI) $(AM_V_texinfo) --clean -o $@ `test -f 'doc/automake.texi' || echo '$(srcdir)/'`doc/automake.texi $(AM_V_texidevnull)
+
+doc/automake.pdf: doc/automake.texi $(srcdir)/doc/version.texi $(doc_automake_TEXINFOS) doc/$(am__dirstamp)
+       $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
+       $(TEXI2PDF) $(AM_V_texinfo) --clean -o $@ `test -f 'doc/automake.texi' || echo '$(srcdir)/'`doc/automake.texi $(AM_V_texidevnull)
+
+doc/automake.html: doc/automake.texi $(srcdir)/doc/version.texi $(doc_automake_TEXINFOS) doc/$(am__dirstamp)
+       $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
+       $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
+        -o $(@:.html=.htp) `test -f 'doc/automake.texi' || echo '$(srcdir)/'`doc/automake.texi; \
+       then \
+         rm -rf $@; \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+       else \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+         exit 1; \
+       fi
+$(srcdir)/doc/version.texi:  $(srcdir)/doc/stamp-vti
+$(srcdir)/doc/stamp-vti: doc/automake.texi $(top_srcdir)/configure
+       test -f doc/$(am__dirstamp) || $(MAKE) $(AM_MAKEFLAGS) doc/$(am__dirstamp)
+       @(dir=.; test -f ./doc/automake.texi || dir=$(srcdir); \
+       set `$(SHELL) $(top_srcdir)/lib/mdate-sh $$dir/doc/automake.texi`; \
+       echo "@set UPDATED $$1 $$2 $$3"; \
+       echo "@set UPDATED-MONTH $$2 $$3"; \
+       echo "@set EDITION $(VERSION)"; \
+       echo "@set VERSION $(VERSION)") > vti.tmp
+       @cmp -s vti.tmp $(srcdir)/doc/version.texi \
+         || (echo "Updating $(srcdir)/doc/version.texi"; \
+             cp vti.tmp $(srcdir)/doc/version.texi)
+       -@rm -f vti.tmp
+       @cp $(srcdir)/doc/version.texi $@
+
+mostlyclean-vti:
+       -rm -f vti.tmp
+
+maintainer-clean-vti:
+       -rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi
+
+$(srcdir)/doc/automake-history.info: doc/automake-history.texi $(doc_automake_history_TEXINFOS)
+       $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+       am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+       rm -rf $$backupdir && mkdir $$backupdir && \
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
+       cd "$$am__cwd"; \
+       if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
+        -o $@ $(srcdir)/doc/automake-history.texi; \
+       then \
+         rc=0; \
+         $(am__cd) $(srcdir); \
+       else \
+         rc=$$?; \
+         $(am__cd) $(srcdir) && \
+         $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+       fi; \
+       rm -rf $$backupdir; exit $$rc
+
+doc/automake-history.dvi: doc/automake-history.texi $(doc_automake_history_TEXINFOS) doc/$(am__dirstamp)
+       $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
+       $(TEXI2DVI) $(AM_V_texinfo) --clean -o $@ `test -f 'doc/automake-history.texi' || echo '$(srcdir)/'`doc/automake-history.texi $(AM_V_texidevnull)
+
+doc/automake-history.pdf: doc/automake-history.texi $(doc_automake_history_TEXINFOS) doc/$(am__dirstamp)
+       $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
+       $(TEXI2PDF) $(AM_V_texinfo) --clean -o $@ `test -f 'doc/automake-history.texi' || echo '$(srcdir)/'`doc/automake-history.texi $(AM_V_texidevnull)
+
+doc/automake-history.html: doc/automake-history.texi $(doc_automake_history_TEXINFOS) doc/$(am__dirstamp)
+       $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
+       $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
+        -o $(@:.html=.htp) `test -f 'doc/automake-history.texi' || echo '$(srcdir)/'`doc/automake-history.texi; \
+       then \
+         rm -rf $@; \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+       else \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+         exit 1; \
+       fi
+.dvi.ps:
+       $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       $(DVIPS) $(AM_V_texinfo) -o $@ $<
+
+uninstall-dvi-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+         rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+       done
+
+uninstall-html-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+         rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+       done
+
+uninstall-info-am:
+       @$(PRE_UNINSTALL)
+       @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
+         list='$(INFO_DEPS)'; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+           if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+           then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+         done; \
+       else :; fi
+       @$(NORMAL_UNINSTALL)
+       @list='$(INFO_DEPS)'; \
+       for file in $$list; do \
+         relfile=`echo "$$file" | sed 's|^.*/||'`; \
+         relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+         (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+            echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+            rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+          else :; fi); \
+       done
+
+uninstall-pdf-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+       done
+
+uninstall-ps-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(psdir)/$$f"; \
+       done
+
+dist-info: $(INFO_DEPS)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; \
+       for base in $$list; do \
+         case $$base in \
+           $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$base; then d=.; else d=$(srcdir); fi; \
+         base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+           if test -f $$file; then \
+             relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+             test -f "$(distdir)/$$relfile" || \
+               cp -p $$file "$(distdir)/$$relfile"; \
+           else :; fi; \
+         done; \
+       done
+
+mostlyclean-aminfo:
+       -rm -rf automake.ac automake.aux automake.cm automake.cp automake.cps \
+         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-history.aux \
+         automake-history.cp automake-history.cps automake-history.fn \
+         automake-history.fns automake-history.ky \
+         automake-history.kys automake-history.log \
+         automake-history.pg automake-history.pgs \
+         automake-history.tmp automake-history.toc \
+         automake-history.tp automake-history.tps automake-history.vr \
+         automake-history.vrs
+
+clean-aminfo:
+       -test -z "doc/automake.dvi doc/automake.pdf doc/automake.ps doc/automake.html \
+         doc/automake-history.dvi doc/automake-history.pdf \
+         doc/automake-history.ps doc/automake-history.html" \
+       || rm -rf doc/automake.dvi doc/automake.pdf doc/automake.ps doc/automake.html \
+         doc/automake-history.dvi doc/automake-history.pdf \
+         doc/automake-history.ps doc/automake-history.html
+
+maintainer-clean-aminfo:
+       @list='$(INFO_DEPS)'; for i in $$list; do \
+         i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+         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
+install-man1: $(man1_MANS)
+       @$(NORMAL_INSTALL)
+       @list1='$(man1_MANS)'; \
+       list2=''; \
+       test -n "$(man1dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+           | sed -n '/\.1[a-z]*$$/p'; \
+       fi; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+       done; }
+
+uninstall-man1:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-dist_amDATA: $(dist_am_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_am_DATA)'; test -n "$(amdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(amdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(amdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(amdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(amdir)" || exit $$?; \
+       done
+
+uninstall-dist_amDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_am_DATA)'; test -n "$(amdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(amdir)'; $(am__uninstall_files_from_dir)
+install-dist_automake_acDATA: $(dist_automake_ac_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_automake_ac_DATA)'; test -n "$(automake_acdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(automake_acdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(automake_acdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(automake_acdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(automake_acdir)" || exit $$?; \
+       done
+
+uninstall-dist_automake_acDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_automake_ac_DATA)'; test -n "$(automake_acdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(automake_acdir)'; $(am__uninstall_files_from_dir)
+install-dist_docDATA: $(dist_doc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+       done
+
+uninstall-dist_docDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+install-dist_perllibDATA: $(dist_perllib_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_perllib_DATA)'; test -n "$(perllibdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(perllibdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(perllibdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(perllibdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(perllibdir)" || exit $$?; \
+       done
+
+uninstall-dist_perllibDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_perllib_DATA)'; test -n "$(perllibdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(perllibdir)'; $(am__uninstall_files_from_dir)
+install-dist_pkgvdataDATA: $(dist_pkgvdata_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_pkgvdata_DATA)'; test -n "$(pkgvdatadir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pkgvdatadir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pkgvdatadir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgvdatadir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgvdatadir)" || exit $$?; \
+       done
+
+uninstall-dist_pkgvdataDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_pkgvdata_DATA)'; test -n "$(pkgvdatadir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(pkgvdatadir)'; $(am__uninstall_files_from_dir)
+install-dist_scriptDATA: $(dist_script_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_script_DATA)'; test -n "$(scriptdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(scriptdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(scriptdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(scriptdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(scriptdir)" || exit $$?; \
+       done
+
+uninstall-dist_scriptDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_script_DATA)'; test -n "$(scriptdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(scriptdir)'; $(am__uninstall_files_from_dir)
+install-dist_system_acDATA: $(dist_system_ac_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_system_ac_DATA)'; test -n "$(system_acdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(system_acdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(system_acdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(system_acdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(system_acdir)" || exit $$?; \
+       done
+
+uninstall-dist_system_acDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_system_ac_DATA)'; test -n "$(system_acdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(system_acdir)'; $(am__uninstall_files_from_dir)
+install-nodist_perllibDATA: $(nodist_perllib_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_perllib_DATA)'; test -n "$(perllibdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(perllibdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(perllibdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(perllibdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(perllibdir)" || exit $$?; \
+       done
+
+uninstall-nodist_perllibDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_perllib_DATA)'; test -n "$(perllibdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(perllibdir)'; $(am__uninstall_files_from_dir)
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+         fi; \
+       fi; \
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       else \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+         done; \
+         test $$st -eq 0 || exit 1; \
+       fi
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+       br='==================='; br=$$br$$br$$br$$br; \
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
+           else \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+           fi; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
+           else \
+             color_start= color_end=; \
+           fi; \
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+       $$success || exit 1
+
+check-TESTS recheck:
+       @if test $@ != recheck; then \
+          list='$(RECHECK_LOGS)'; \
+          test -z "$$list" || rm -f $$list; \
+        fi
+       @if test $@ != recheck; then \
+          list='$(RECHECK_LOGS:.log=.trs)'; \
+          test -z "$$list" || rm -f $$list; \
+        fi
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @$(am__set_TESTS_bases); \
+       if test $@ = recheck; then \
+         bases=`for i in $$bases; do echo $$i; done \
+                  | $(am__list_recheck_tests)` || exit 1; \
+       fi; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+       if test $@ != recheck || $(am__make_dryrun); then :; else \
+         test -z "$$log_list" || rm -f $$log_list; \
+         test -z "$$trs_list" || rm -f $$trs_list; \
+       fi; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"
+recheck: all $(check_SCRIPTS) $(check_DATA) $(dist_check_DATA)
+.pl.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(PL_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_PL_LOG_DRIVER_FLAGS) $(PL_LOG_DRIVER_FLAGS) -- $(PL_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.pl$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(PL_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_PL_LOG_DRIVER_FLAGS) $(PL_LOG_DRIVER_FLAGS) -- $(PL_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
+.sh.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.sh$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
+.tap.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(TAP_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_TAP_LOG_DRIVER_FLAGS) $(TAP_LOG_DRIVER_FLAGS) -- $(TAP_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.tap$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(TAP_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TAP_LOG_DRIVER_FLAGS) $(TAP_LOG_DRIVER_FLAGS) -- $(TAP_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+       @list='$(MANS)'; if test -n "$$list"; then \
+         list=`for p in $$list; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+         if test -n "$$list" && \
+           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+           echo "error: found man pages containing the 'missing help2man' replacement text:" >&2; \
+           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+           echo "       typically 'make maintainer-clean' will remove them" >&2; \
+           exit 1; \
+         else :; fi; \
+       else :; fi
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-info dist-hook
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+       @if test -z "$(am__skip_length_check)" && find "$(distdir)" -type f -print | \
+         grep '^...................................................................................................' 1>&2; then \
+         echo 'error: the above filenames are too long' 1>&2; \
+         exit 1; \
+       else :; fi
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__post_remove_distdir)
+
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+       $(am__post_remove_distdir)
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+       $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__post_remove_distdir)
+
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__post_remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__post_remove_distdir)
+
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__post_remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_SCRIPTS) $(check_DATA) \
+         $(dist_check_DATA)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
+check: check-am
+all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(MANS) $(DATA)
+installdirs:
+       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(amdir)" "$(DESTDIR)$(automake_acdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(perllibdir)" "$(DESTDIR)$(pkgvdatadir)" "$(DESTDIR)$(scriptdir)" "$(DESTDIR)$(system_acdir)" "$(DESTDIR)$(perllibdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f doc/$(am__dirstamp)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+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-aminfo clean-generic clean-local mostlyclean-am
+
+distclean: distclean-am
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html: html-am
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-dist_amDATA install-dist_automake_acDATA \
+       install-dist_docDATA install-dist_perllibDATA \
+       install-dist_pkgvdataDATA install-dist_scriptDATA \
+       install-dist_system_acDATA install-info-am install-man \
+       install-nodist_perllibDATA
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+       @$(NORMAL_INSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+       done
+install-exec-am: install-binSCRIPTS
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-am
+
+install-html-am: $(HTMLS)
+       @$(NORMAL_INSTALL)
+       @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         $(am__strip_dir) \
+         d2=$$d$$p; \
+         if test -d "$$d2"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+           echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+         else \
+           list2="$$list2 $$d2"; \
+         fi; \
+       done; \
+       test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+       done; }
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+       @$(NORMAL_INSTALL)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
+       fi; \
+       for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$file; then d=.; else d=$(srcdir); fi; \
+         file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                      $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+           if test -f $$ifile; then \
+             echo "$$ifile"; \
+           else : ; fi; \
+         done; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+       @$(POST_INSTALL)
+       @if $(am__can_run_installinfo); then \
+         list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+           install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+         done; \
+       else : ; fi
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+       @$(NORMAL_INSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps: install-ps-am
+
+install-ps-am: $(PSS)
+       @$(NORMAL_INSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+installcheck-am: installcheck-local
+
+maintainer-clean: maintainer-clean-am
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+       maintainer-clean-generic maintainer-clean-local \
+       maintainer-clean-vti
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-binSCRIPTS uninstall-dist_amDATA \
+       uninstall-dist_automake_acDATA uninstall-dist_docDATA \
+       uninstall-dist_perllibDATA uninstall-dist_pkgvdataDATA \
+       uninstall-dist_scriptDATA uninstall-dist_system_acDATA \
+       uninstall-dvi-am uninstall-html-am uninstall-info-am \
+       uninstall-man uninstall-nodist_perllibDATA uninstall-pdf-am \
+       uninstall-ps-am
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+uninstall-man: uninstall-man1
+
+.MAKE: check-am install-am install-data-am install-exec-am \
+       install-strip uninstall-am
+
+.PHONY: all all-am am--refresh check check-TESTS check-am check-local \
+       clean clean-aminfo clean-generic clean-local dist dist-all \
+       dist-bzip2 dist-gzip dist-hook dist-info dist-lzip dist-shar \
+       dist-tarZ dist-xz dist-zip distcheck distclean \
+       distclean-generic distcleancheck distdir distuninstallcheck \
+       dvi dvi-am html html-am info info-am install install-am \
+       install-binSCRIPTS install-data install-data-am \
+       install-data-hook install-dist_amDATA \
+       install-dist_automake_acDATA install-dist_docDATA \
+       install-dist_perllibDATA install-dist_pkgvdataDATA \
+       install-dist_scriptDATA install-dist_system_acDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-exec-hook \
+       install-html install-html-am install-info install-info-am \
+       install-man install-man1 install-nodist_perllibDATA \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installcheck-local \
+       installdirs maintainer-clean maintainer-clean-aminfo \
+       maintainer-clean-generic maintainer-clean-local \
+       maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+       mostlyclean-generic mostlyclean-vti pdf pdf-am ps ps-am \
+       recheck uninstall uninstall-am uninstall-binSCRIPTS \
+       uninstall-dist_amDATA uninstall-dist_automake_acDATA \
+       uninstall-dist_docDATA uninstall-dist_perllibDATA \
+       uninstall-dist_pkgvdataDATA uninstall-dist_scriptDATA \
+       uninstall-dist_system_acDATA uninstall-dvi-am uninstall-hook \
+       uninstall-html-am uninstall-info-am uninstall-man \
+       uninstall-man1 uninstall-nodist_perllibDATA uninstall-pdf-am \
+       uninstall-ps-am
+
+
+install-exec-hook:
+       @$(POST_INSTALL)
+       @for p in $(bin_SCRIPTS); do \
+         f="`echo $$p|sed '$(transform)'`"; \
+         fv="$$f-$(APIVERSION)"; \
+         rm -f "$(DESTDIR)$(bindir)/$$fv"; \
+         echo " $(LN) '$(DESTDIR)$(bindir)/$$f' '$(DESTDIR)$(bindir)/$$fv'"; \
+         $(LN) "$(DESTDIR)$(bindir)/$$f" "$(DESTDIR)$(bindir)/$$fv"; \
+       done
+
+uninstall-hook:
+       @for p in $(bin_SCRIPTS); do \
+         f="`echo $$p|sed '$(transform)'`"; \
+         fv="$$f-$(APIVERSION)"; \
+         rm -f "$(DESTDIR)$(bindir)/$$fv"; \
+       done
+
+automake: automake.in
+aclocal: aclocal.in
+automake aclocal: Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_GEN)in=$@.in; $(do_subst) <$(srcdir)/$@.in >$@-t
+       $(AM_V_at)chmod a+x,a-w $@-t && mv -f $@-t $@
+
+INSTALL: lib/INSTALL
+       $(AM_V_GEN)cp $(srcdir)/lib/INSTALL $@
+
+# We don't use the default name for the autom4te cache directory,
+# so we need this.
+maintainer-clean-local:
+       rm -rf .autom4te.cache
+
+install-data-hook:
+       @$(POST_INSTALL)
+       @for f in $(dist_script_DATA); do echo $$f; done \
+         | sed 's,^lib/,,' \
+         | ( st=0; \
+             while read f; do \
+               echo " chmod +x '$(DESTDIR)$(scriptdir)/$$f'"; \
+               chmod +x "$(DESTDIR)$(scriptdir)/$$f" || st=1; \
+             done; \
+             exit $$st )
+
+installcheck-local: installcheck-executable-scripts
+installcheck-executable-scripts:
+       @for f in $(dist_script_DATA); do echo $$f; done \
+         | sed 's,^lib/,,' \
+         | while read f; do \
+             path="$(pkgvdatadir)/$$f"; \
+             test -x "$$path" || echo $$path; \
+           done \
+         | sed 's/$$/: not executable/' \
+         | grep . 1>&2 && exit 1; exit 0
+
+lib/Automake/Config.pm: lib/Automake/Config.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_at)test -d lib/Automake || $(MKDIR_P) lib/Automake
+       $(AM_V_GEN)in=Config.in \
+         && $(do_subst) <$(srcdir)/lib/Automake/Config.in >$@-t
+       $(generated_file_finalize)
+
+# We build amversion.m4 here, instead of from config.status,
+# because config.status is rerun each time one of configure's
+# dependencies change and amversion.m4 happens to be a configure
+# dependency.  configure and amversion.m4 would be rebuilt in
+# loop otherwise.
+# Use '$(top_srcdir)/m4' for the benefit of non-GNU makes: this is
+# how amversion.m4 appears in our dependencies.
+$(top_srcdir)/m4/amversion.m4: $(srcdir)/configure.ac $(srcdir)/m4/amversion.in
+       $(AM_V_at)rm -f $@-t $@
+       $(AM_V_GEN)in=amversion.in \
+         && $(do_subst) <$(srcdir)/m4/amversion.in >$@-t
+       $(generated_file_finalize)
+
+print-list-of-tests:
+       @echo $(handwritten_TESTS)
+.PHONY: print-list-of-tests
+
+t/ar-lib-w.log: t/ar-lib.sh
+t/ar-lib-w.log: t/ar-lib.log
+t/compile-w.log: t/compile.sh
+t/compile-w.log: t/compile.log
+t/compile2-w.log: t/compile2.sh
+t/compile2-w.log: t/compile2.log
+t/compile3-w.log: t/compile3.sh
+t/compile3-w.log: t/compile3.log
+t/compile4-w.log: t/compile4.sh
+t/compile4-w.log: t/compile4.log
+t/compile5-w.log: t/compile5.sh
+t/compile5-w.log: t/compile5.log
+t/compile6-w.log: t/compile6.sh
+t/compile6-w.log: t/compile6.log
+t/instsh2-w.log: t/instsh2.sh
+t/instsh2-w.log: t/instsh2.log
+t/instsh3-w.log: t/instsh3.sh
+t/instsh3-w.log: t/instsh3.log
+t/mdate5-w.log: t/mdate5.sh
+t/mdate5-w.log: t/mdate5.log
+t/mdate6-w.log: t/mdate6.sh
+t/mdate6-w.log: t/mdate6.log
+t/missing-w.log: t/missing.sh
+t/missing-w.log: t/missing.log
+t/missing2-w.log: t/missing2.sh
+t/missing2-w.log: t/missing2.log
+t/missing3-w.log: t/missing3.sh
+t/missing3-w.log: t/missing3.log
+t/missing5-w.log: t/missing5.sh
+t/missing5-w.log: t/missing5.log
+t/mkinst3-w.log: t/mkinst3.sh
+t/mkinst3-w.log: t/mkinst3.log
+t/check-w.log: t/check.sh
+t/check-w.log: t/check.log
+t/check2-w.log: t/check2.sh
+t/check2-w.log: t/check2.log
+t/check3-w.log: t/check3.sh
+t/check3-w.log: t/check3.log
+t/check4-w.log: t/check4.sh
+t/check4-w.log: t/check4.log
+t/check5-w.log: t/check5.sh
+t/check5-w.log: t/check5.log
+t/check6-w.log: t/check6.sh
+t/check6-w.log: t/check6.log
+t/check7-w.log: t/check7.sh
+t/check7-w.log: t/check7.log
+t/check8-w.log: t/check8.sh
+t/check8-w.log: t/check8.log
+t/check11-w.log: t/check11.sh
+t/check11-w.log: t/check11.log
+t/check12-w.log: t/check12.sh
+t/check12-w.log: t/check12.log
+t/check-subst-w.log: t/check-subst.sh
+t/check-subst-w.log: t/check-subst.log
+t/check-subst-prog-w.log: t/check-subst-prog.sh
+t/check-subst-prog-w.log: t/check-subst-prog.log
+t/check-exported-srcdir-w.log: t/check-exported-srcdir.sh
+t/check-exported-srcdir-w.log: t/check-exported-srcdir.log
+t/check-fd-redirect-w.log: t/check-fd-redirect.sh
+t/check-fd-redirect-w.log: t/check-fd-redirect.log
+t/check-tests-in-builddir-w.log: t/check-tests-in-builddir.sh
+t/check-tests-in-builddir-w.log: t/check-tests-in-builddir.log
+t/color-w.log: t/color.sh
+t/color-w.log: t/color.log
+t/color2-w.log: t/color2.sh
+t/color2-w.log: t/color2.log
+t/exeext4-w.log: t/exeext4.sh
+t/exeext4-w.log: t/exeext4.log
+t/maken3-w.log: t/maken3.sh
+t/maken3-w.log: t/maken3.log
+t/posixsubst-tests-w.log: t/posixsubst-tests.sh
+t/posixsubst-tests-w.log: t/posixsubst-tests.log
+t/tap-ambiguous-directive-w.log: t/tap-ambiguous-directive.sh
+t/tap-ambiguous-directive-w.log: t/tap-ambiguous-directive.log
+t/tap-autonumber-w.log: t/tap-autonumber.sh
+t/tap-autonumber-w.log: t/tap-autonumber.log
+t/tap-bailout-w.log: t/tap-bailout.sh
+t/tap-bailout-w.log: t/tap-bailout.log
+t/tap-bailout-and-logging-w.log: t/tap-bailout-and-logging.sh
+t/tap-bailout-and-logging-w.log: t/tap-bailout-and-logging.log
+t/tap-bailout-suppress-badexit-w.log: t/tap-bailout-suppress-badexit.sh
+t/tap-bailout-suppress-badexit-w.log: t/tap-bailout-suppress-badexit.log
+t/tap-bailout-suppress-later-diagnostic-w.log: t/tap-bailout-suppress-later-diagnostic.sh
+t/tap-bailout-suppress-later-diagnostic-w.log: t/tap-bailout-suppress-later-diagnostic.log
+t/tap-bailout-suppress-later-errors-w.log: t/tap-bailout-suppress-later-errors.sh
+t/tap-bailout-suppress-later-errors-w.log: t/tap-bailout-suppress-later-errors.log
+t/tap-color-w.log: t/tap-color.sh
+t/tap-color-w.log: t/tap-color.log
+t/tap-deps-w.log: t/tap-deps.sh
+t/tap-deps-w.log: t/tap-deps.log
+t/tap-diagnostic-w.log: t/tap-diagnostic.sh
+t/tap-diagnostic-w.log: t/tap-diagnostic.log
+t/tap-empty-diagnostic-w.log: t/tap-empty-diagnostic.sh
+t/tap-empty-diagnostic-w.log: t/tap-empty-diagnostic.log
+t/tap-empty-w.log: t/tap-empty.sh
+t/tap-empty-w.log: t/tap-empty.log
+t/tap-escape-directive-w.log: t/tap-escape-directive.sh
+t/tap-escape-directive-w.log: t/tap-escape-directive.log
+t/tap-escape-directive-2-w.log: t/tap-escape-directive-2.sh
+t/tap-escape-directive-2-w.log: t/tap-escape-directive-2.log
+t/tap-exit-w.log: t/tap-exit.sh
+t/tap-exit-w.log: t/tap-exit.log
+t/tap-signal-w.log: t/tap-signal.tap
+t/tap-signal-w.log: t/tap-signal.log
+t/tap-fancy-w.log: t/tap-fancy.sh
+t/tap-fancy-w.log: t/tap-fancy.log
+t/tap-fancy2-w.log: t/tap-fancy2.sh
+t/tap-fancy2-w.log: t/tap-fancy2.log
+t/tap-global-log-w.log: t/tap-global-log.sh
+t/tap-global-log-w.log: t/tap-global-log.log
+t/tap-global-result-w.log: t/tap-global-result.sh
+t/tap-global-result-w.log: t/tap-global-result.log
+t/tap-log-w.log: t/tap-log.sh
+t/tap-log-w.log: t/tap-log.log
+t/tap-msg0-result-w.log: t/tap-msg0-result.sh
+t/tap-msg0-result-w.log: t/tap-msg0-result.log
+t/tap-msg0-directive-w.log: t/tap-msg0-directive.sh
+t/tap-msg0-directive-w.log: t/tap-msg0-directive.log
+t/tap-msg0-planskip-w.log: t/tap-msg0-planskip.sh
+t/tap-msg0-planskip-w.log: t/tap-msg0-planskip.log
+t/tap-msg0-bailout-w.log: t/tap-msg0-bailout.sh
+t/tap-msg0-bailout-w.log: t/tap-msg0-bailout.log
+t/tap-msg0-misc-w.log: t/tap-msg0-misc.sh
+t/tap-msg0-misc-w.log: t/tap-msg0-misc.log
+t/tap-merge-stdout-stderr-w.log: t/tap-merge-stdout-stderr.sh
+t/tap-merge-stdout-stderr-w.log: t/tap-merge-stdout-stderr.log
+t/tap-no-merge-stdout-stderr-w.log: t/tap-no-merge-stdout-stderr.sh
+t/tap-no-merge-stdout-stderr-w.log: t/tap-no-merge-stdout-stderr.log
+t/tap-no-disable-hard-error-w.log: t/tap-no-disable-hard-error.sh
+t/tap-no-disable-hard-error-w.log: t/tap-no-disable-hard-error.log
+t/tap-no-spurious-summary-w.log: t/tap-no-spurious-summary.sh
+t/tap-no-spurious-summary-w.log: t/tap-no-spurious-summary.log
+t/tap-no-spurious-numbers-w.log: t/tap-no-spurious-numbers.sh
+t/tap-no-spurious-numbers-w.log: t/tap-no-spurious-numbers.log
+t/tap-no-spurious-w.log: t/tap-no-spurious.sh
+t/tap-no-spurious-w.log: t/tap-no-spurious.log
+t/tap-not-ok-skip-w.log: t/tap-not-ok-skip.sh
+t/tap-not-ok-skip-w.log: t/tap-not-ok-skip.log
+t/tap-number-wordboundary-w.log: t/tap-number-wordboundary.sh
+t/tap-number-wordboundary-w.log: t/tap-number-wordboundary.log
+t/tap-numeric-description-w.log: t/tap-numeric-description.sh
+t/tap-numeric-description-w.log: t/tap-numeric-description.log
+t/tap-negative-numbers-w.log: t/tap-negative-numbers.sh
+t/tap-negative-numbers-w.log: t/tap-negative-numbers.log
+t/tap-numbers-leading-zero-w.log: t/tap-numbers-leading-zero.sh
+t/tap-numbers-leading-zero-w.log: t/tap-numbers-leading-zero.log
+t/tap-out-of-order-w.log: t/tap-out-of-order.sh
+t/tap-out-of-order-w.log: t/tap-out-of-order.log
+t/tap-passthrough-w.log: t/tap-passthrough.sh
+t/tap-passthrough-w.log: t/tap-passthrough.log
+t/tap-passthrough-exit-w.log: t/tap-passthrough-exit.sh
+t/tap-passthrough-exit-w.log: t/tap-passthrough-exit.log
+t/tap-plan-w.log: t/tap-plan.sh
+t/tap-plan-w.log: t/tap-plan.log
+t/tap-plan-corner-w.log: t/tap-plan-corner.sh
+t/tap-plan-corner-w.log: t/tap-plan-corner.log
+t/tap-plan-errors-w.log: t/tap-plan-errors.sh
+t/tap-plan-errors-w.log: t/tap-plan-errors.log
+t/tap-plan-middle-w.log: t/tap-plan-middle.sh
+t/tap-plan-middle-w.log: t/tap-plan-middle.log
+t/tap-plan-whitespace-w.log: t/tap-plan-whitespace.sh
+t/tap-plan-whitespace-w.log: t/tap-plan-whitespace.log
+t/tap-plan-leading-zero-w.log: t/tap-plan-leading-zero.sh
+t/tap-plan-leading-zero-w.log: t/tap-plan-leading-zero.log
+t/tap-plan-malformed-w.log: t/tap-plan-malformed.sh
+t/tap-plan-malformed-w.log: t/tap-plan-malformed.log
+t/tap-missing-plan-and-bad-exit-w.log: t/tap-missing-plan-and-bad-exit.sh
+t/tap-missing-plan-and-bad-exit-w.log: t/tap-missing-plan-and-bad-exit.log
+t/tap-planskip-w.log: t/tap-planskip.sh
+t/tap-planskip-w.log: t/tap-planskip.log
+t/tap-planskip-late-w.log: t/tap-planskip-late.sh
+t/tap-planskip-late-w.log: t/tap-planskip-late.log
+t/tap-planskip-and-logging-w.log: t/tap-planskip-and-logging.sh
+t/tap-planskip-and-logging-w.log: t/tap-planskip-and-logging.log
+t/tap-planskip-unplanned-w.log: t/tap-planskip-unplanned.sh
+t/tap-planskip-unplanned-w.log: t/tap-planskip-unplanned.log
+t/tap-planskip-unplanned-corner-w.log: t/tap-planskip-unplanned-corner.sh
+t/tap-planskip-unplanned-corner-w.log: t/tap-planskip-unplanned-corner.log
+t/tap-planskip-case-insensitive-w.log: t/tap-planskip-case-insensitive.sh
+t/tap-planskip-case-insensitive-w.log: t/tap-planskip-case-insensitive.log
+t/tap-planskip-whitespace-w.log: t/tap-planskip-whitespace.sh
+t/tap-planskip-whitespace-w.log: t/tap-planskip-whitespace.log
+t/tap-planskip-badexit-w.log: t/tap-planskip-badexit.sh
+t/tap-planskip-badexit-w.log: t/tap-planskip-badexit.log
+t/tap-planskip-bailout-w.log: t/tap-planskip-bailout.sh
+t/tap-planskip-bailout-w.log: t/tap-planskip-bailout.log
+t/tap-planskip-later-errors-w.log: t/tap-planskip-later-errors.sh
+t/tap-planskip-later-errors-w.log: t/tap-planskip-later-errors.log
+t/tap-realtime-w.log: t/tap-realtime.sh
+t/tap-realtime-w.log: t/tap-realtime.log
+t/tap-test-number-0-w.log: t/tap-test-number-0.sh
+t/tap-test-number-0-w.log: t/tap-test-number-0.log
+t/tap-recheck-logs-w.log: t/tap-recheck-logs.sh
+t/tap-recheck-logs-w.log: t/tap-recheck-logs.log
+t/tap-result-comment-w.log: t/tap-result-comment.sh
+t/tap-result-comment-w.log: t/tap-result-comment.log
+t/tap-todo-skip-together-w.log: t/tap-todo-skip-together.sh
+t/tap-todo-skip-together-w.log: t/tap-todo-skip-together.log
+t/tap-todo-skip-whitespace-w.log: t/tap-todo-skip-whitespace.sh
+t/tap-todo-skip-whitespace-w.log: t/tap-todo-skip-whitespace.log
+t/tap-todo-skip-w.log: t/tap-todo-skip.sh
+t/tap-todo-skip-w.log: t/tap-todo-skip.log
+t/tap-unplanned-w.log: t/tap-unplanned.sh
+t/tap-unplanned-w.log: t/tap-unplanned.log
+t/tap-whitespace-normalization-w.log: t/tap-whitespace-normalization.sh
+t/tap-whitespace-normalization-w.log: t/tap-whitespace-normalization.log
+t/tap-with-and-without-number-w.log: t/tap-with-and-without-number.sh
+t/tap-with-and-without-number-w.log: t/tap-with-and-without-number.log
+t/tap-xfail-tests-w.log: t/tap-xfail-tests.sh
+t/tap-xfail-tests-w.log: t/tap-xfail-tests.log
+t/tap-bad-prog-w.log: t/tap-bad-prog.tap
+t/tap-bad-prog-w.log: t/tap-bad-prog.log
+t/tap-basic-w.log: t/tap-basic.sh
+t/tap-basic-w.log: t/tap-basic.log
+t/tap-diagnostic-custom-w.log: t/tap-diagnostic-custom.sh
+t/tap-diagnostic-custom-w.log: t/tap-diagnostic-custom.log
+t/tap-driver-stderr-w.log: t/tap-driver-stderr.sh
+t/tap-driver-stderr-w.log: t/tap-driver-stderr.log
+t/tap-doc-w.log: t/tap-doc.sh
+t/tap-doc-w.log: t/tap-doc.log
+t/tap-more-w.log: t/tap-more.sh
+t/tap-more-w.log: t/tap-more.log
+t/tap-more2-w.log: t/tap-more2.sh
+t/tap-more2-w.log: t/tap-more2.log
+t/tap-recheck-w.log: t/tap-recheck.sh
+t/tap-recheck-w.log: t/tap-recheck.log
+t/ar-lib4.log:  t/libtool-macros.log
+t/ar-lib6a.log:  t/libtool-macros.log
+t/ar-lib6b.log:  t/libtool-macros.log
+t/canon6.log:  t/libtool-macros.log
+t/canon7.log:  t/libtool-macros.log
+t/depcomp8b.log:  t/libtool-macros.log
+t/extradep2.log:  t/libtool-macros.log
+t/fort5.log:  t/libtool-macros.log
+t/instdir-ltlib.log:  t/libtool-macros.log
+t/instfail-libtool.log:  t/libtool-macros.log
+t/ldadd.log:  t/libtool-macros.log
+t/ldflags.log:  t/libtool-macros.log
+t/libobj13.log:  t/libtool-macros.log
+t/libtool.log:  t/libtool-macros.log
+t/libtool2.log:  t/libtool-macros.log
+t/libtool3.log:  t/libtool-macros.log
+t/libtool5.log:  t/libtool-macros.log
+t/libtool6.log:  t/libtool-macros.log
+t/libtool7.log:  t/libtool-macros.log
+t/libtool8.log:  t/libtool-macros.log
+t/libtool9.log:  t/libtool-macros.log
+t/libtoo10.log:  t/libtool-macros.log
+t/libtoo11.log:  t/libtool-macros.log
+t/listval.log:  t/libtool-macros.log
+t/ltcond.log:  t/libtool-macros.log
+t/ltcond2.log:  t/libtool-macros.log
+t/ltconv.log:  t/libtool-macros.log
+t/ltdeps.log:  t/libtool-macros.log
+t/ltinit.log:  t/libtool-macros.log
+t/ltinstloc.log:  t/libtool-macros.log
+t/ltlibobjs.log:  t/libtool-macros.log
+t/ltlibsrc.log:  t/libtool-macros.log
+t/ltorder.log:  t/libtool-macros.log
+t/nobase-libtool.log:  t/libtool-macros.log
+t/objc-megademo.log:  t/libtool-macros.log
+t/posixsubst-ltlibraries.log:  t/libtool-macros.log
+t/pr72.log:  t/libtool-macros.log
+t/pr211.log:  t/libtool-macros.log
+t/pr300-ltlib.log:  t/libtool-macros.log
+t/pr307.log:  t/libtool-macros.log
+t/pr401b.log:  t/libtool-macros.log
+t/reqd2.log:  t/libtool-macros.log
+t/silent3.log:  t/libtool-macros.log
+t/silent4.log:  t/libtool-macros.log
+t/silent9.log:  t/libtool-macros.log
+t/stdlib2.log:  t/libtool-macros.log
+t/strip3.log:  t/libtool-macros.log
+t/subobj9.log:  t/libtool-macros.log
+t/suffix2.log:  t/libtool-macros.log
+t/suffix5.log:  t/libtool-macros.log
+t/suffix8.log:  t/libtool-macros.log
+t/suffix10.log:  t/libtool-macros.log
+t/vala-libs.log:  t/libtool-macros.log
+t/vartypo2.log:  t/libtool-macros.log
+t/depcomp-lt-msvcmsys.log:  t/libtool-macros.log
+t/depcomp-lt-disabled.log:  t/libtool-macros.log
+t/depcomp-lt-msvisualcpp.log:  t/libtool-macros.log
+t/depcomp-lt-makedepend.log:  t/libtool-macros.log
+t/depcomp-lt-auto.log:  t/libtool-macros.log
+t/depcomp-lt-cpp.log:  t/libtool-macros.log
+t/depcomp-lt-gcc.log:  t/libtool-macros.log
+t/depcomp-lt-dashmstdout.log:  t/libtool-macros.log
+t/testsuite-summary-color.log: t/ax/testsuite-summary-checks.sh 
+t/testsuite-summary-count.log: t/ax/testsuite-summary-checks.sh 
+t/tap-ambiguous-directive.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-autonumber.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-leading-space.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-and-logging.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-suppress-badexit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-suppress-later-diagnostic.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-suppress-later-errors.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-color.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-deps.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-diagnostic.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-empty-diagnostic.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-empty.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-escape-directive.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-escape-directive-2.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-exit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-fancy.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-fancy2.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-global-log.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-global-result.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-log.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-result.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-directive.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-planskip.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-bailout.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-misc.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-merge-stdout-stderr.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-merge-stdout-stderr.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-disable-hard-error.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-spurious-summary.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-spurious-numbers.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-spurious.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-not-ok-skip.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-number-wordboundary.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-numeric-description.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-negative-numbers.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-numbers-leading-zero.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-out-of-order.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-passthrough.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-passthrough-exit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-corner.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-errors.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-middle.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-whitespace.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-leading-zero.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-malformed.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-missing-plan-and-bad-exit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-late.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-and-logging.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-unplanned.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-unplanned-corner.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-case-insensitive.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-whitespace.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-badexit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-bailout.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-later-errors.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-realtime.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-test-number-0.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-recheck-logs.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-result-comment.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-todo-skip-together.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-todo-skip-whitespace.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-todo-skip.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-unplanned.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-whitespace-normalization.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-with-and-without-number.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-xfail-tests.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-summary.log: t/ax/tap-summary-aux.sh 
+t/tap-summary-color.log: t/ax/tap-summary-aux.sh 
+t/depcomp-lt-msvcmsys.log: t/ax/depcomp.sh 
+t/depcomp-lt-disabled.log: t/ax/depcomp.sh 
+t/depcomp-lt-msvisualcpp.log: t/ax/depcomp.sh 
+t/depcomp-lt-makedepend.log: t/ax/depcomp.sh 
+t/depcomp-lt-auto.log: t/ax/depcomp.sh 
+t/depcomp-lt-cpp.log: t/ax/depcomp.sh 
+t/depcomp-lt-gcc.log: t/ax/depcomp.sh 
+t/depcomp-lt-dashmstdout.log: t/ax/depcomp.sh 
+t/depcomp-msvcmsys.log: t/ax/depcomp.sh 
+t/depcomp-disabled.log: t/ax/depcomp.sh 
+t/depcomp-msvisualcpp.log: t/ax/depcomp.sh 
+t/depcomp-makedepend.log: t/ax/depcomp.sh 
+t/depcomp-auto.log: t/ax/depcomp.sh 
+t/depcomp-cpp.log: t/ax/depcomp.sh 
+t/depcomp-gcc.log: t/ax/depcomp.sh 
+t/depcomp-dashmstdout.log: t/ax/depcomp.sh 
+t/testsuite-summary-count-many.log: t/ax/extract-testsuite-summary.pl 
+t/gettext.log:  t/gettext-macros.log
+t/gettext2.log:  t/gettext-macros.log
+t/gettext3.log:  t/gettext-macros.log
+t/subcond.log:  t/gettext-macros.log
+t/testsuite-summary-count-many.log: t/ax/trivial-test-driver 
+t/test-driver-acsubst.log: t/ax/trivial-test-driver 
+t/test-driver-cond.log: t/ax/trivial-test-driver 
+t/test-driver-custom-multitest.log: t/ax/trivial-test-driver 
+t/test-driver-custom-multitest-recheck.log: t/ax/trivial-test-driver 
+t/test-driver-custom-multitest-recheck2.log: t/ax/trivial-test-driver 
+
+$(srcdir)/t/testsuite-part.am:
+       $(AM_V_at)rm -f t/testsuite-part.tmp $@
+       $(AM_V_GEN)$(PERL) $(srcdir)/gen-testsuite-part \
+         --srcdir $(srcdir) > t/testsuite-part.tmp
+       $(AM_V_at)chmod a-w t/testsuite-part.tmp
+       $(AM_V_at)mv -f t/testsuite-part.tmp $@
+
+$(generated_TESTS): $(srcdir)/gen-testsuite-part
+$(srcdir)/t/testsuite-part.am: $(srcdir)/gen-testsuite-part Makefile.am
+
+# Few more static dependencies.
+t/distcheck-missing-m4.log: t/ax/distcheck-hook-m4.am
+t/distcheck-outdated-m4.log: t/ax/distcheck-hook-m4.am
+
+defs-static: defs-static.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_GEN)in=defs-static.in\
+         && $(do_subst) <$(srcdir)/defs-static.in >$@-t
+       $(generated_file_finalize)
+
+# If two test scripts have the same basename, they will end up sharing
+# the same log file, leading to all sort of undefined and undesired
+# behaviours.
+check-no-repeated-test-name:
+       @LC_ALL=C; export LC_ALL; \
+        lst='$(TEST_LOGS)'; for log in $$lst; do echo $$log; done \
+          | sort | uniq -c | awk '($$1 > 1) { print }' \
+          | sed 's/\.log$$//' | grep . >&2 \
+          && { \
+            echo $@: test names listed above are duplicated >&2; \
+            exit 1; \
+          }; :
+check-local: check-no-repeated-test-name
+.PHONY: check-no-repeated-test-name
+
+.PHONY: maintainer-check-list-of-tests
+maintainer-check-list-of-tests:
+        @if diff -u /dev/null /dev/null >/dev/null 2>&1; then \
+          diff='diff -u'; \
+        else \
+          diff='diff'; \
+        fi; \
+        lst='$(expected_list_of_tests)'; \
+        test -n "$$lst" || lst='$(TESTS)'; \
+        for t in $$lst; do \
+          echo "$$t"; \
+        done | sort >$(am__tmk); \
+        dirs='$(test_subdirs)'; \
+        test -n "$$dirs" || dirs=.; \
+        test_extensions='$(TEST_EXTENSIONS)'; \
+        for ext in $$test_extensions; do \
+          for dir in $$dirs; do \
+            ls $$dir/*$$ext 2>/dev/null; \
+            if test $(srcdir) != $(builddir); then \
+              ($(am__cd) $(srcdir) && ls $$dir/*$$ext 2>/dev/null); \
+            fi; \
+          done; \
+        done | sed 's,^\./,,' | sort | uniq >$(am__tfs); \
+        if $$diff $(am__tmk) $(am__tfs) >$(am__tdf); then \
+           result=0; \
+        else \
+           echo '$@: list of tests in Makefile an on filesystem differ' >&2; \
+           echo "+ $$diff in-makefile on-filesystem" >&2; \
+           cat $(am__tdf) >&2; \
+           result=1; \
+        fi; \
+        rm -f $(am__tmk) $(am__tfs) $(am__tdf); \
+        exit $$result;
+
+.PHONY: clean-maintcheck-testslist-tmp
+clean-local: clean-maintcheck-testslist-tmp
+clean-maintcheck-testslist-tmp:
+       rm -f $(am__tmk) $(am__tfs) $(am__tdf)
+
+# Run the testsuite with the installed aclocal and automake.
+installcheck-local: installcheck-testsuite
+installcheck-testsuite:
+       am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check
+
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+       -set x t/*.dir; shift; \
+        if test "$$#,$$1" = "1,*.dir"; then \
+          : there is no test directory to clean; \
+        else \
+          find "$$@" -type d ! -perm -700 -exec chmod u+rwx {} ';'; \
+          rm -rf "$$@"; \
+        fi;
+
+$(man1_MANS): $(srcdir)/configure.ac
+
+doc/aclocal.1 doc/automake.1:
+       $(AM_V_GEN): \
+         && $(MKDIR_P) doc \
+         && f=`echo $@ | sed 's|.*/||; s|\.1$$||; $(transform)'` \
+         && echo ".so man1/$$f-$(APIVERSION).1" > $@
+
+doc/aclocal-$(APIVERSION).1: aclocal.in aclocal lib/Automake/Config.pm
+       $(update_mans) aclocal-$(APIVERSION)
+doc/automake-$(APIVERSION).1: automake.in automake lib/Automake/Config.pm
+       $(update_mans) automake-$(APIVERSION)
+
+# We depend on configure.ac so that we regenerate the tarball
+# whenever the Automake version changes.
+# aclocal-$(APIVERSION) and automake-$(APIVERSION) are generated by
+# configure in 't/wrap'.
+$(srcdir)/doc/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac
+       $(AM_V_GEN): \
+         && PATH="$(abs_top_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
+         && export PATH \
+         && $(am__cd) $(srcdir)/doc/amhello \
+         && ACLOCAL=aclocal-$(APIVERSION) && export ACLOCAL \
+         && AUTOMAKE=automake-$(APIVERSION) && export AUTOMAKE \
+         && AUTOCONF='$(am_AUTOCONF)' && export AUTOCONF \
+         && AUTOM4TE='$(am_AUTOM4TE)' && export AUTOM4TE \
+         && AUTORECONF='$(am_AUTORECONF)' && export AUTORECONF \
+         && AUTOHEADER='$(am_AUTOHEADER)' && export AUTOHEADER \
+         && AUTOUPDATE='$(am_AUTOUPDATE)' && export AUTOUPDATE \
+         && $(am_AUTORECONF) -vfi \
+         && ./configure \
+         && $(MAKE) $(AM_MAKEFLAGS) distcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) distclean \
+         && rm -rf $(amhello_configury) \
+         && mv -f amhello-1.0.tar.gz ..
+
+# When executed from a git checkout, generate the ChangeLog from the git
+# history.  When executed from an extracted distribution tarball, just
+# copy the distributed ChangeLog in the build directory (and if this
+# fails, or if no distributed ChangeLog file is present, complain and
+# give an error).
+#
+# We need the apparently useless dependency from another .PHONY target
+# 'am--changelog-regen-hook' to work around a bug of Solaris make, which
+# doesn't execute the recipe of a target named as an existing file, even
+# if such target is declared '.PHONY' (yikes!)
+#
+.PHONY: am--changelog-regen-hook
+am--changelog-regen-hook:
+ChangeLog: am--changelog-regen-hook
+       $(AM_V_GEN)set -e; set -u; \
+       if test -d $(srcdir)/.git; then \
+         rm -f $@-t \
+           && $(gitlog_to_changelog_command) \
+              $(gitlog_to_changelog_options) >$@-t \
+           && chmod a-w $@-t \
+           && mv -f $@-t $@ \
+           || exit 1; \
+       elif test ! -f $(srcdir)/$@; then \
+         echo "Source tree is not a git checkout, and no pre-existent" \
+              "$@ file has been found there" >&2; \
+         exit 1; \
+       fi
+
+# Ensure tests are world-executable.
+# FIXME: this should be turned into a maintainer check...
+dist-hook:
+       $(am__cd) $(distdir)/t && chmod a+rx *.sh *.tap
+
+check-coverage-run recheck-coverage-run: all
+       $(mkinstalldirs) $(PERL_COVERAGE_DB)
+       PERL5OPT="$$PERL5OPT $(PERL_COVERAGE_FLAGS)"; export PERL5OPT; \
+       WANT_NO_THREADS=yes; export WANT_NO_THREADS; unset AUTOMAKE_JOBS; \
+       $(MAKE) $(AM_MAKEFLAGS) `echo $@ | sed 's/-coverage-run//'`
+
+check-coverage-report:
+       @if test ! -d "$(PERL_COVERAGE_DB)"; then \
+         echo "No coverage database found in '$(PERL_COVERAGE_DB)'." >&2; \
+         echo "Please run \"make check-coverage\" first" >&2; \
+         exit 1; \
+       fi
+       $(PERL_COVER) $(PERL_COVER_FLAGS) "$(PERL_COVERAGE_DB)"
+
+# We don't use direct dependencies here because we'd like to be able
+# to invoke the report even after interrupted check-coverage.
+check-coverage: check-coverage-run
+       $(MAKE) $(AM_MAKEFLAGS) check-coverage-report
+
+recheck-coverage: recheck-coverage-run
+       $(MAKE) $(AM_MAKEFLAGS) check-coverage-report
+
+clean-coverage:
+       rm -rf "$(PERL_COVERAGE_DB)"
+clean-local: clean-coverage
+
+.PHONY: check-coverage recheck-coverage check-coverage-run \
+       recheck-coverage-run check-coverage-report clean-coverage
+
+git-tag-release: maintainer-check
+       @set -e; set -u; \
+       fatal () { echo "$@: $$*; not tagging" >&2; exit 1; }; \
+       case '$(AM_TAG_DRYRUN)' in \
+         ""|[nN]|[nN]o|NO) run="";; \
+         *) run="echo Running:";; \
+       esac; \
+       $(determine_release_type); \
+       $(git_must_have_clean_workdir); \
+       $$run $(GIT) tag -s "v$(VERSION)" -m "$$release_type $(VERSION)"
+
+git-upload-release:
+       @set -e; set -u; \
+       fatal () { echo "$@: $$*; not releasing" >&2; exit 1; }; \
+       $(determine_release_type); \
+       dest=$$dest.gnu.org:automake; \
+       $(git_must_have_clean_workdir); \
+       tag=`$(GIT) describe` \
+         && case $$tag in "v$(VERSION)") true;; *) false;; esac \
+         || fatal "you can only create a release from a tagged version"; \
+       $(MAKE) $(AM_MAKEFLAGS) dist || exit 1; \
+       echo Will upload to $$dest: $(DIST_ARCHIVES); \
+       $(srcdir)/lib/gnupload $(GNUPLOADFLAGS) --to $$dest $(DIST_ARCHIVES)
+
+.PHONY: git-upload-release git-tag-release
+
+autodiffs:
+       @set -u; \
+        NEW_COMMIT=$${NEW_COMMIT-"HEAD"}; \
+        OLD_COMMIT=$${OLD_COMMIT-"HEAD~1"}; \
+        am_gitdir='$(abs_top_srcdir)/.git'; \
+        get_autofiles_from_rev () \
+        { \
+            rev=$$1 dir=$$2 \
+              && echo "$@: will get files from revision $$rev" \
+              && $(GIT) clone -q --depth 1 "$$am_gitdir" tmp \
+              && $(am__cd) tmp \
+              && $(GIT) checkout -q "$$rev" \
+              && echo "$@: bootstrapping $$rev" \
+              && $(SHELL) ./bootstrap.sh \
+              && echo "$@: copying files from $$rev" \
+              && makefile_ins=`find . -name Makefile.in` \
+              && (tar cf - configure aclocal.m4 $$makefile_ins) | \
+                 (cd .. && $(am__cd) "$$dir" && tar xf -) \
+              && cd .. \
+              && rm -rf tmp; \
+        }; \
+        outdir=$@.dir \
+          && $(GIT) --git-dir="$$am_gitdir" describe $$OLD_COMMIT >/dev/null \
+          && $(GIT) --git-dir="$$am_gitdir" describe $$NEW_COMMIT >/dev/null \
+          && rm -rf $$outdir \
+          && mkdir $$outdir \
+          && $(am__cd) $$outdir \
+          && mkdir new old \
+          && get_autofiles_from_rev $$OLD_COMMIT old \
+          && get_autofiles_from_rev $$NEW_COMMIT new \
+          && exit 0
+
+compare-autodiffs: autodiffs
+       @set -u; \
+       : $${COLORDIFF=colordiff} $${DIFF=diff}; \
+       dir=autodiffs.dir; \
+       if test ! -d "$$dir"; then \
+         echo "$@: $$dir: Not a directory" >&2; \
+         exit 1; \
+       fi; \
+       mydiff=false mypager=false; \
+       if test -t 1; then \
+         if ($$COLORDIFF -r . .) </dev/null >/dev/null 2>&1; then \
+           mydiff=$$COLORDIFF; \
+           mypager="less -R"; \
+         else \
+           mypager=less; \
+         fi; \
+       else \
+         mypager=cat; \
+       fi; \
+       if test "$$mydiff" = false; then \
+         if ($$DIFF -r -u . .); then \
+           mydiff=$$DIFF; \
+         else \
+           echo "$@: no good-enough diff program specified" >&2; \
+           exit 1; \
+         fi; \
+       fi; \
+       st=0; $$mydiff -r -u $$dir/old $$dir/new | $$mypager || st=$$?; \
+       rm -rf $$dir; \
+       exit $$st
+.PHONY: autodiffs compare-autodiffs
+
+fetch:
+       rm -rf Fetchdir > /dev/null 2>&1
+       mkdir Fetchdir
+       ($(am__cd) Fetchdir && \
+       $(WGET_SV_GIT_CF)config.guess -O config.guess && \
+       $(WGET_SV_GIT_CF)config.sub -O config.sub && \
+       $(WGET_SV_CVS)texinfo/texinfo/doc/texinfo.tex -O texinfo.tex && \
+       $(WGET_SV_GIT_GL)doc/INSTALL -O INSTALL && \
+       $(WGET_SV_GIT_GL)build-aux/gnupload -O gnupload && \
+       $(WGET_SV_GIT_GL)build-aux/update-copyright -O update-copyright && \
+       $(WGET_SV_GIT_GL)build-aux/gitlog-to-changelog -O gitlog-to-changelog)
+       @stat=0; for file in $(FETCHFILES); do \
+         if diff -u $(srcdir)/lib/$$file Fetchdir/$$file \
+                 >>Fetchdir/update.patch 2>/dev/null; then :; \
+         else \
+           stat=1; \
+           echo "Updating $(srcdir)/lib/$$file ..."; \
+           cp Fetchdir/$$file $(srcdir)/lib/$$file; \
+         fi; \
+       done; \
+       test $$stat = 0 || \
+         echo "See Fetchdir/update.patch for a log of the changes."; \
+       exit $$stat
+.PHONY: fetch
+
+.PHONY: update-copyright
+update-copyright:
+       $(AM_V_GEN)set -e; \
+       current_year=`date +%Y` && test -n "$$current_year" \
+         || { echo "$@: cannot get current year" >&2; exit 1; }; \
+       sed -i "/^RELEASE_YEAR=/s/=.*$$/=$$current_year/" \
+         bootstrap.sh configure.ac; \
+       excluded_re=`echo $(FETCHFILES) \
+         | sed -e 's|^|lib/|' -e 's| | lib/|g' -e 's, ,|,g'`; \
+       $(GIT) ls-files \
+         | grep -Ev '^(lib/)?(COPYING|INSTALL)$$' \
+         | grep -Ev "^($$excluded_re)$$" \
+         | $(update_copyright_env) xargs $(srcdir)/lib/$@
+
+# 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.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..a0703b1
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,2139 @@
+New in 1.12.1:
+
+* WARNING: Future backward-incompatibilities!
+
+  - Starting from either the next minor version (1.12.2) or the next major
+    version (1.13), Automake will start warning if 'configure.in' is used
+    instead of 'configure.ac' as the Autoconf input.  Future versions of
+    Automake will drop support for 'configure.in' altogether.
+
+  - Autoconf 2.65 or later will be required by the next major Automake
+    version (1.13).  Until now, Automake has required Autoconf version
+    2.62 or later.
+
+  - Starting from the next major Automake version (1.13), the rules to
+    build pdf, ps and dvi output from Texinfo input will use the '--tidy'
+    option by default.  Since such an option was introduced in Texinfo
+    4.9, this means that Makefiles generated by future Automake versions
+    will require at least that version of Texinfo.
+
+  - Starting from the next major Automake version (1.13), the parallel
+    testsuite harness (previously only enabled by the 'parallel-tests'
+    option) will become the default one; the older serial testsuite
+    harness will still be available through the use of the 'serial-tests'
+    option.
+
+  - The following long-obsolete m4 macros will be removed in the
+    next major Automake version (1.13):
+
+      AM_PROG_CC_STDC:    superseded by AC_PROG_CC since October 2002
+      fp_PROG_CC_STDC:    broken alias for AM_PROG_CC_STDC
+      fp_WITH_DMALLOC:    old alias for AM_WITH_DMALLOC
+      AM_CONFIG_HEADER:   superseded by AC_CONFIG_HEADERS since July 2002
+      ud_PATH_LISPDIR:    old alias for AM_PATH_LISPDIR
+      jm_MAINTAINER_MODE: old alias for AM_MAINTAINER_MODE
+      ud_GNU_GETTEXT:     old alias for AM_GNU_GETTEXT
+      gm_PROG_LIBTOOL:    old alias for AC_PROG_LIBTOOL
+      fp_C_PROTOTYPES:    old alias for AM_C_PROTOTYPES (which was part
+                          of the now-removed automatic de-ANSI-fication
+                          support of Automake)
+
+  - All the "old alias" macros in 'm4/obsolete.m4' will be removed in
+    the next major Automake version (1.13).
+
+  - Support for the two- and three-arguments invocation forms of the
+    AM_INIT_AUTOMAKE macro will be deprecated in the next minor version
+    of Automake (1.12.1) and removed in the next major version (1.13).
+
+  - The '--acdir' option of aclocal is deprecated, and will probably
+    be removed in the next major Automake release (1.13).  You should
+    use the options '--automake-acdir' and '--system-acdir' instead
+    (which have been introduced in Automake 1.11.2).
+
+  - The exact order in which the directories in the aclocal macro
+    search path are looked up is probably going to be changed in the
+    next Automake release (1.13).
+
+* New supported languages:
+
+  - Support for Objective C++ has been added; it should work similarly to
+    the support for Objective C.
+
+* Deprecated obsolescent features:
+
+  - Use of the long-deprecated two- and three-arguments invocation forms
+    of the AM_INIT_AUTOMAKE macro now elicits a warning in the 'obsolete'
+    category.  Starting from the next major Automake release (1.13), such
+    usages won't be allowed anymore.
+
+  - Support for the "Cygnus-style" trees (enabled by the 'cygnus' option) is
+    now deprecated (its use triggers a warning in the 'obsolete' category).
+    It will be removed in the next major Automake release (1.13).
+
+  - The long-obsolete (since 1.10) automake-provided $(mkdir_p) make
+    variable, @mkdir_p@ configure-time substitution and AM_PROG_MKDIR
+    m4 macro are deprecated, eliciting a warning in the 'obsolete'
+    category.  They will be removed in the next major version (1.13).
+
+* Miscellaneous changes:
+
+  - The Automake test cases now require a proper POSIX-conforming shell.
+    Older non-POSIX Bourne shells (like Solaris 10 /bin/sh) won't be
+    accepted anymore.  In most cases, the user shouldn't have to specify
+    such POSIX shell explicitly, since it will be looked up at configure
+    time.  Still, when this lookup fails, or when the user wants to
+    override its conclusion, the variable 'AM_TEST_RUNNER_SHELL' can be
+    used (pointing to the shell that will be used to run the Automake
+    test cases).
+
+Bugs fixed in 1.12.1:
+
+* Bugs introduced by 1.12:
+
+  - Several weaknesses in Automake's own build system and test suite
+    have been fixed.
+
+* Bugs introduced by 1.11.3:
+
+  - When given non-option arguments, aclocal rejects them, instead of
+    silently ignoring them.
+
+* Long-standing bugs:
+
+  - When the 'color-tests' option is in use, forcing of colored testsuite
+    output through "AM_COLOR_TESTS=always" works even if the terminal is
+    a non-ANSI one, i.e., if the TERM environment variable has a value of
+    "dumb".
+
+  - Several inefficiencies and poor performances in the implementation
+    of the parallel-tests 'check' and 'recheck' targets have been fixed.
+
+  - The post-processing of output "#line" directives done the ylwrap
+    script is more faithful w.r.t. files in a subdirectory; for example,
+    if the processed file is "src/grammar.y", ylwrap will correctly
+    produce directives like:
+        #line 7 "src/grammar.y"
+    rather than like
+        #line 7 "grammar.y"
+    as it did before.
+
+* Bugs with new Perl versions:
+
+  - Aclocal works correctly with perl 5.16.0 (automake bug#11543).
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+New in 1.12:
+
+* Obsolete features removed:
+
+  - The never documented nor truly used script 'acinstall' has been
+    removed.
+
+  - Support for automatic de-ANSI-fication has been removed.
+
+  - The support for the "obscure" multilib feature has been removed
+    from Automake core (but remains available in the 'contrib/'
+    directory of the Automake distribution).
+
+  - Support for ".log -> .html" conversion and the check-html and
+    recheck-html targets has been removed from Automake core (but
+    remains available in the 'contrib/' directory of the Automake
+    distribution).
+
+  - The deprecated 'lzma' compression format for distribution archives
+    has been removed, in favor of 'xz' and 'lzip'.
+
+  - The obsolete AM_WITH_REGEX macro has been removed.
+
+  - The long-deprecated options '--output-dir', '--Werror' and
+    '--Wno-error' have been removed.
+
+  - The chapter on the history of Automake has been moved out of the
+    reference manual, into a new dedicated Texinfo file.
+
+* New targets:
+
+  - New 'cscope' target to build a cscope database for the source tree.
+
+* Changes to Automake-generated testsuite harnesses:
+
+  - The new automake option 'serial-tests' has been introduced.  It can
+    be used to explicitly instruct automake to use the older serial
+    testsuite harness.  This is still the default at the moment, but it
+    might change in future versions.
+
+  - The 'recheck' target (provided by the parallel testsuite harness) now
+    depends on the 'all' target.  This allows for a better user-experience
+    in test-driven development.  See automake bug#11252.
+
+  - Test scripts that exit with status 99 to signal an "hard error" (e.g.,
+    and unexpected or internal error, or a failure to set up the test case
+    scenario) have their outcome reported as an 'ERROR' now.  Previous
+    versions of automake reported such an outcome as a 'FAIL' (the only
+    difference with normal failures being that hard errors were counted
+    as failures even when the test originating them was listed in
+    XFAIL_TESTS).
+
+  - The testsuite summary displayed by the parallel-test harness has a
+    completely new format, that always list the numbers of passed, failed,
+    xfailed, xpassed, skipped and errored tests, even when these numbers
+    are zero (but using smart coloring when the color-tests option is in
+    effect).
+
+  - The default testsuite driver offered by the 'parallel-tests' option is
+    now implemented (partly at least) with the help of automake-provided
+    auxiliary scripts (e.g., 'test-driver'), instead of relying entirely
+    on code in the generated Makefile.in.
+    This has two noteworthy implications.  The first one is that projects
+    using the 'parallel-tests' option should now either run automake with
+    the '--add-missing' option, or manually copy the 'test-driver' script
+    into their tree.  The second, and more important, implication is that
+    now, when the 'parallel-tests' option is in use, TESTS_ENVIRONMENT can
+    not be used anymore to define a test runner, and the command specified
+    in LOG_COMPILER (and <ext>_LOG_COMPILER) must be a *real* executable
+    program or script.  For example, this is still a valid usage (albeit
+    a little contorted):
+
+      TESTS_ENVIRONMENT = \
+        if test -n '$(STRICT_TESTS)'; then \
+          maybe_errexit='-e'; \
+        else \
+          maybe_errexit=''; \
+        fi;
+      LOG_COMPILER = $(SHELL) $$maybe_errexit
+
+    while this is not anymore:
+
+      TESTS_ENVIRONMENT = \
+        $(SHELL) `test -n '$(STRICT_TESTS_CHECKING)' && echo ' -e'`
+
+    neither is this:
+
+      TESTS_ENVIRONMENT = \
+        run_with_perl_or_shell () \
+        { \
+          if grep -q '^#!.*perl' $$1; then
+            $(PERL) $$1; \
+          else \
+            $(SHELL) $$1; \
+          fi; \
+        }
+      LOG_COMPILER = run_with_perl_or_shell
+
+  - The package authors can now use customary testsuite drivers within
+    the framework provided by the 'parallel-tests' testsuite harness.
+    Consistently with the existing syntax, this can be done by defining
+    special makefile variables 'LOG_DRIVER' and '<ext>_LOG_DRIVER'.
+
+  - A new developer-reserved variable 'AM_TESTS_FD_REDIRECT' can be used
+    to redirect/define file descriptors used by the test scripts.
+
+  - The parallel-tests harness generates now, in addition the '.log' files
+    holding the output produced by the test scripts, a new set of '.trs'
+    files, holding "metadata" derived by the execution of the test scripts;
+    among such metadata are the outcomes of the test cases run by a script.
+
+  - Initial and still experimental support for the TAP test protocol is
+    now provided.
+
+* Changes to Yacc and Lex support:
+
+  - C source and header files derived from non-distributed Yacc and/or
+    Lex sources are now removed by a simple "make clean" (while they were
+    previously removed only by "make maintainer-clean").
+
+  - Slightly backward-incompatible change, relevant only for use of Yacc
+    with C++: the extensions of the header files produced by the Yacc
+    rules are now modelled after the extension of the corresponding
+    sources.  For example, yacc files named "foo.y++" and "bar.yy" will
+    produce header files named "foo.h++" and "bar.hh" respectively, where
+    they would have previously produced header files named simply "foo.h"
+    and "bar.h".  This change offers better compatibility with 'bison -o'.
+
+* Miscellaneous changes:
+
+  - The AM_PROG_VALAC macro now causes configure to exit with status 77,
+    rather than 1, if the vala compiler found is too old.
+
+  - The build system of Automake itself now avoids the use of make
+    recursion as much as possible.
+
+  - Automake now prefers to quote 'like this' or "like this", rather
+    than `like this', in diagnostic message and generated Makefiles,
+    to accommodate the new GNU Coding Standards recommendations.
+
+  - Automake has a new option '--print-libdir' that prints the path of the
+    directory containing the Automake-provided scripts and data files.
+
+  - The 'dist' and 'dist-all' targets now can run compressors in parallel.
+
+  - The rules to create pdf, dvi and ps output from Texinfo files now
+    works better with modern 'texi2dvi' script, by explicitly passing
+    it the '--clean' option to ensure stray auxiliary files are not
+    left to clutter the build directory.
+
+  - Automake can now generate silenced rules for texinfo outputs.
+
+  - Some auxiliary files that are automatically distributed by Automake
+    (e.g., 'install-sh', or the 'depcomp' script for packages compiling
+    C sources) might now be listed in the DIST_COMMON variable in many
+    Makefile.in files, rather than in the top-level one.
+
+  - Messages of types warning or error from 'automake' and 'aclocal'
+    are now prefixed with the respective type, and presence of -Werror
+    is noted.
+
+  - Automake's early configure-time sanity check now tries to avoid
+    sleeping for a second, which slowed down cached configure runs
+    noticeably.  In that case, it will check back at the end of the
+    configure script to ensure that at least one second has passed, to
+    avoid time stamp issues with makefile rules rerunning autotools
+    programs.
+
+  - The warnings in the category 'extra-portability' are now enabled by
+    '-Wall'.  In previous versions, one has to use '-Wextra-portability'
+    to enable them.
+
+Bugs fixed in 1.12:
+
+  - Various minor bugfixes for recent or long-standing bugs.
+
+* Bugs introduced by 1.11:
+
+  - The AM_COND_IF macro also works if the shell expression for the
+    conditional is no longer valid for the condition.
+
+  - The automake-provided parallel testsuite harness does not fail anymore
+    with BSD make used in parallel mode when there are test scripts in a
+    subdirectory, like in:
+
+      TESTS = sub/foo.test sub/bar.test
+
+* Long-standing bugs:
+
+  - Automake's own build system finally have a real "installcheck" target.
+
+  - Vala-related cleanup rules are now more complete, and work better in
+    a VPATH setup.
+
+  - Files listed with the AC_REQUIRE_AUX_FILE macro in configure.ac are
+    now automatically distributed also if the directory of the auxiliary
+    files coincides with the top-level directory.
+
+  - Automake now detects the presence of the '-d' flag in the various
+    '*YFLAGS' variables even when their definitions involve indirections
+    through other variables, such as in:
+      foo_opts = -d
+      AM_YFLAGS = $(foo_opts)
+
+  - Automake now complains if a '*YFLAGS' variable has any conditional
+    content, not only a conditional definition.
+
+  - Explicit enabling and/or disabling of Automake warning categories
+    through the '-W...' options now always takes precedence over the
+    implicit warning level implied by Automake strictness (foreign, gnu
+    or gnits), regardless of the order in which such strictness and
+    warning flags appear.  For example, a setting like:
+      AUTOMAKE_OPTIONS = -Wall --foreign
+    will cause the warnings in category 'portability' to be enabled, even
+    if those warnings are by default disabled in 'foreign' strictness.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Bugs fixed in 1.11.5:
+
+* Bugs introduced by 1.11.3:
+
+  - Vala files with '.vapi' extension are now recognized and handled
+    correctly again.  See automake bug#11222.
+
+  - Vala support work again for projects that contain some program
+    built from '.vala' (and possibly '.c') sources and some other
+    program built from '.c' sources *only*.  See automake bug#11229.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+New in 1.11.4:
+
+* Miscellaneous changes:
+
+  - The 'ar-lib' script now ignores the "s" (symbol index) and "S" (no
+    symbol index) modifiers as well as the "s" action, as the symbol index
+    is created unconditionally by Microsoft lib.  Also, the "q" (quick)
+    action is now a synonym for "r" (replace).  Also, the script has been
+    ignoring the "v" (verbose) modifier already since Automake 1.11.3.
+
+  - When the 'compile' script is used to wrap MSVC, it now accepts an
+    optional space between the -I, -L and -l options and their respective
+    arguments, for better POSIX compliance.
+
+  - There is an initial, experimental support for automatic dependency
+    tracking with tcc (the Tiny C Compiler).  Its associated depmode is
+    currently recognized as "icc" (but this and other details are likely
+    to change in future versions).
+
+  - Automatic dependency tracking now works also with the IBM XL C/C++
+    compilers, thanks to the new new depmode 'xlc'.
+
+Bugs fixed in 1.11.4:
+
+* Bugs introduced by 1.11.2:
+
+  - A definition of 'noinst_PYTHON' before 'python_PYTHON' (or similar)
+    don't cause spurious failures upon "make install" anymore.
+
+  - The user can now instruct the 'uninstall-info' rule not to update
+    the '${infodir}/dir' file by exporting the environment variable
+    'AM_UPDATE_INFO_DIR' to the value "no".  This is done for consistency
+    with how the 'install-info' rule operates since automake 1.11.2.
+
+* Long-standing bugs:
+
+  - It is now possible for a foo_SOURCES variable to hold Vala sources
+    together with C header files, as well as with sources and headers for
+    other supported languages (e.g., C++).  Previously, only mixing C and
+    Vala sources was supported.
+
+  - If "aclocal --install" is used, and the first directory specified with
+    '-I' is non-existent, aclocal will now create it before trying to copy
+    files in it.
+
+  - An empty declaration of a "foo_PRIMARY" don't cause anymore the
+    generated install rules to create an empty $(foodir) directory;
+    for example, if Makefile.am contains something like:
+
+      pkglibexec_SCRIPTS =
+      if FALSE
+      pkglibexec_SCRIPTS += bar.sh
+      endif
+
+    the $(pkglibexec) directory will not be created upon "make install".
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+New in 1.11.3:
+
+* Miscellaneous changes:
+
+  - Automake's own build system is more silent by default, making use of
+    the 'silent-rules' option.
+
+  - The master copy of the `gnupload' script is now maintained in gnulib,
+    not in automake.
+
+  - The `missing' script doesn't try to wrap calls to `tar' anymore.
+
+  - "make dist" doesn't wrap `tar' invocations with the `missing' script
+    anymore.  Similarly, the obsolescent variable `$(AMTAR)' (which you
+    shouldn't be using BTW ;-) does not invoke the missing script anymore
+    to wrap tar, but simply invokes the `tar' program itself.
+
+  - "make dist" can now create lzip-compressed tarballs.
+
+  - In the Automake info documentation, the Top node and the nodes about
+    the invocation of the automake and aclocal programs have been renamed;
+    now, calling "info automake" will open the Top node, while calling
+    "info automake-invocation" and "info aclocal-invocation" will access
+    the nodes about the invocation of respectively automake and aclocal.
+
+  - Automake is now distributed as a gzip-compressed and an xz-compressed
+    tarball.  Previously, bzip2 was used instead of xz.
+
+  - The last relics of Python 1.5 support have been removed from the
+    AM_PATH_PYTHON macro.
+
+  - For programs and libraries, automake now detects EXTRA_foo_DEPENDENCIES
+    and adds them to the normal list of dependencies, but without
+    overwriting the foo_DEPENDENCIES variable, which is normally computed
+    by automake.
+
+Bugs fixed in 1.11.3:
+
+* Bugs introduced by 1.11.2:
+
+  - Automake now correctly recognizes the prefix/primary combination
+   `pkglibexec_SCRIPTS' as valid.
+
+  - The parallel-tests harness doesn't trip anymore on sed implementations
+    with stricter limits on the length of input lines (problem seen at
+    least on Solaris 8).
+
+* Long-standing bugs:
+
+  - The "deleted header file problem" for *.am files is avoided by stub
+    rules.  This allows `make' to trigger a rerun of `automake' also if
+    some previously needed `.am' file has been removed.
+
+  - The `silent-rules' option now generates working makefiles even
+    for the uncommon `make' implementations that do not support the
+    nested-variables extension to POSIX 2008.  For such `make'
+    implementations, whether a build is silent is determined at
+    configure time, and cannot be overridden at make time with
+    `make V=0' or `make V=1'.
+
+  - Vala support now works better in VPATH setups.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+New in 1.11.2:
+
+* Changes to aclocal:
+
+  - The `--acdir' option is deprecated.  Now you should use the new options
+    `--automake-acdir' and `--system-acdir' instead.
+
+  - The `ACLOCAL_PATH' environment variable is now interpreted as a
+    colon-separated list of additional directories to search after the
+    automake internal acdir (by default ${prefix}/share/aclocal-APIVERSION)
+    and before the system acdir (by default ${prefix}/share/aclocal).
+
+* Miscellaneous changes:
+
+  - The Automake support for automatic de-ANSI-fication has been
+    deprecated.  It will probably be removed in the next major Automake
+    release (1.12).
+
+  - The `lzma' compression scheme and associated automake option `dist-lzma'
+    is obsoleted by `xz' and `dist-xz' due to upstream changes.
+
+  - You may adjust the compression options used in dist-xz and dist-bzip2.
+    The default is now merely -e for xz, but still -9 for bzip;  you may
+    specify a different level via the XZ_OPT and BZIP2 envvars respectively.
+    E.g., "make dist-xz XZ_OPT=-7" or "make dist-bzip2 BZIP2=-5"
+
+  - The `compile' script now converts some options for MSVC for a better
+    user experience.  Similarly, the new `ar-lib' script wraps Microsoft lib.
+
+  - The py-compile script now accepts empty arguments passed to the options
+    `--destdir' and `--basedir', and complains about unrecognized options.
+    Moreover, a non-option argument or a special `--' argument terminates
+    the list of options.
+
+  - A developer that needs to pass specific flags to configure at "make
+    distcheck" time can now, and indeed is advised to, do so by defining
+    the developer-reserved makefile variable AM_DISTCHECK_CONFIGURE_FLAGS,
+    instead of the old DISTCHECK_CONFIGURE_FLAGS.
+    The DISTCHECK_CONFIGURE_FLAGS variable should now be reserved for the
+    user; still, the old Makefile.am files that used to define it will
+    still continue to work as before.
+
+  - New macro AM_PROG_AR that looks for an archiver and wraps it in the new
+    'ar-lib' auxiliary script if the selected archiver is Microsoft lib.
+    This new macro is required for LIBRARIES and LTLIBRARIES when automake
+    is run with -Wextra-portability and -Werror.
+
+  - When using DejaGnu-based testsuites, the user can extend the `site.exp'
+    file generated by automake-provided rules by defining the special make
+    variable `$(EXTRA_DEJAGNU_SITE_CONFIG)'.
+
+  - The `install-info' rule can now be instructed not to create/update
+    the `${infodir}/dir' file, by exporting the new environment variable
+    `AM_UPDATE_INFO_DIR' to the value "no".
+
+Bugs fixed in 1.11.2:
+
+* Bugs introduced by 1.11:
+
+  - The parallel-tests driver no longer produces erroneous results with
+    Tru64/OSF 5.1 sh upon unreadable log files.
+
+  - The `parallel-tests' test driver does not report spurious successes
+    when used with concurrent FreeBSD make (e.g., "make check -j3").
+
+  - When the parallel-tests driver is in use, automake now explicitly
+    rejects invalid entries and conditional contents in TEST_EXTENSIONS,
+    instead of issuing confusing and apparently unrelated error messages
+    (e.g., "non-POSIX variable name", "bad characters in variable name",
+    or "redefinition of TEST_EXTENSIONS), or even, in some situations,
+    silently producing broken `Makefile.in' files.
+
+  - The `silent-rules' option now truly silences all compile rules, even
+    when dependency tracking is disabled.  Also, when `silent-rules' is
+    not used, `make' output no longer contains spurious backslash-only
+    lines, thus once again matching what Automake did before 1.11.
+
+  - The AM_COND_IF macro also works if the shell expression for the
+    conditional is no longer valid for the condition.
+
+* Long-standing bugs:
+
+  - The order of Yacc and Lex flags is fixed to be consistent with other
+    languages: $(AM_YFLAGS) comes before $(YFLAGS), and $(AM_LFLAGS) before
+    $(LFLAGS), so that the user variables override the developer variables.
+
+  - "make distcheck" now correctly complains also when "make uninstall"
+    leaves one and only one file installed in $(prefix).
+
+  - A "make uninstall" issued before a "make install", or after a mere
+    "make install-data" or a mere "make install-exec" does not spuriously
+    fail anymore.
+
+  - Automake now warns about more primary/directory invalid combinations,
+    such as "doc_LIBRARIES" or "pkglib_PROGRAMS".
+
+  - Rules generated by Automake now try harder to not change any files when
+    `make -n' is invoked.  Fixes include compilation of Emacs Lisp, Vala, or
+    Yacc source files and the rule to update config.h.
+
+  - Several scripts and the parallel-tests testsuite driver now exit with
+    the right exit status upon receiving a signal.
+
+  - A per-Makefile.am setting of -Werror does not erroneously carry over
+    to the handling of other Makefile.am files.
+
+  - The code for automatic dependency tracking works around a Solaris
+    make bug triggered by sources containing repeated slashes when the
+    `subdir-objects' option was used.
+
+  - The makedepend and hp depmodes now work better with VPATH builds.
+
+  - Java sources specified with check_JAVA are no longer compiled for
+    "make all", but only for "make check".
+
+  - An usage like "java_JAVA = foo.java" will now cause Automake to warn
+    and error out if `javadir' is undefined, instead of silently producing
+    a broken Makefile.in.
+
+  - aclocal and automake now honour the configure-time definitions of
+    AUTOCONF and AUTOM4TE when they spawn autoconf or autom4te processes.
+
+  - The `install-info' recipe no longer tries to guess whether the
+    `install-info' program is from Debian or from GNU, and adaptively
+    change its behaviour; this has proven to be frail and easy to
+    regress.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Bugs fixed in 1.11.1:
+
+  - Lots of minor bugfixes.
+
+* Bugs introduced by 1.11:
+
+  - The `parallel-tests' test driver works around a GNU make 3.80 bug with
+    trailing white space in the test list (`TESTS = foo $(EMPTY)').
+
+* Long standing bugs:
+
+  - On Darwin 9, `pythondir' and `pyexecdir' pointed below `/Library/Python'
+    even if the `--prefix' argument pointed outside of a system directory.
+    AM_PATH_PYTHON has been fixed to ignore the value returned from python's
+    `get_python_lib' function if it points outside the configured prefix,
+    unless the `--prefix' argument was either `/usr' or below `/System'.
+
+  - The testsuite does not try to change the mode of `ltmain.sh' files from
+    a Libtool installation (symlinked to test directories) any more.
+
+  - AM_PROG_GCJ uses AC_CHECK_TOOLS to look for `gcj' now, so that prefixed
+    tools are preferred in a cross-compile setup.
+
+  - The distribution is tarred up with mode 755 now by the `dist*' targets.
+    This fixes a race condition where untrusted users could modify files
+    in the $(PACKAGE)-$(VERSION) distdir before packing if the toplevel
+    build directory was world-searchable.  This is CVE-2009-4029.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+New in 1.11:
+
+* Version requirements:
+
+  - Autoconf 2.62 or greater is required.
+
+* Changes to aclocal:
+
+  - The autoconf version check implemented by aclocal in aclocal.m4
+    (and new in Automake 1.10) is degraded to a warning.  This helps
+    in the common case where the Autoconf versions used are compatible.
+
+* Changes to automake:
+
+  - The automake program can run multiple threads for creating most
+    Makefile.in files concurrently, if at least Perl 5.7.2 is available
+    with interpreter-based threads enabled.  Set the environment variable
+    AUTOMAKE_JOBS to the maximum number of threads to use, in order to
+    enable this experimental feature.
+
+* Changes to Libtool support:
+
+  - Libtool generic flags are now passed to the install and uninstall
+    modes as well.
+
+  - distcheck works with Libtool 2.x even when LT_OUTPUT is used, as
+    config.lt is removed correctly now.
+
+* Languages changes:
+
+  - subdir-object mode works now with Fortran (F77, FC, preprocessed
+    Fortran, and Ratfor).
+
+  - For files with extension .f90, .f95, .f03, or .f08, the flag
+    $(FCFLAGS_f[09]x) computed by AC_FC_SRCEXT is now used in compile rules.
+
+  - Files with extension .sx are also treated as preprocessed assembler.
+
+  - The default source file extension (.c) can be overridden with
+    AM_DEFAULT_SOURCE_EXT now.
+
+  - Python 3.0 is supported now, Python releases prior to 2.0 are no
+    longer supported.
+
+  - AM_PATH_PYTHON honors python's idea about the site directory.
+
+  - There is initial support for the Vala programming language, when using
+    Vala 0.7.0 or later.
+
+* Miscellaneous changes:
+
+  - Automake development is done in a git repository on Savannah now, see
+
+      http://git.sv.gnu.org/gitweb/?p=automake.git
+
+    A read-only CVS mirror is provided at
+
+      cvs -d :pserver:anonymous@pserver.git.sv.gnu.org:/automake.git \
+          checkout -d automake HEAD
+
+  - "make dist" can now create xz-compressed tarballs,
+    as well as (deprecated?) lzma-compressed tarballs.
+
+  - `automake --add-missing' will by default install the GPLv3 file as
+    COPYING if it is missing.  It will also warn that the license file
+    should be added to source control.  Note that Automake will never
+    overwrite an existing COPYING file, even when the `--force-missing'
+    option is used.
+
+  - The manual is now distributed under the terms of the GNU FDL 1.3.
+
+  - Automake ships and installs man pages for automake and aclocal now.
+
+  - New shorthand `$(pkglibexecdir)' for `$(libexecdir)/@PACKAGE@'.
+
+  - install-sh supports -C, which does not update the installed file
+    (and its time stamps) if the contents did not change.
+
+  - The `gnupload' script has been revamped.
+
+  - The `depcomp' and `compile' scripts now work with MSVC under MSYS.
+
+  - The targets `install' and `uninstall' are more efficient now, in that
+    for example multiple files from one Automake variable such as
+    `bin_SCRIPTS' are copied in one `install' (or `libtool --mode=install')
+    invocation if they do not have to be renamed.
+
+    Both install and uninstall may sometimes enter (`cd' into) the target
+    installation directory now, when no build-local scripts are used.
+
+    Both install and uninstall do not fail anymore but do nothing if an
+    installation directory variable like `bindir' is set to the empty string.
+
+    For built-in rules, `make install' now fails reliably if installation
+    of a file failed.  Conversely, `make uninstall' even succeeds when
+    issued multiple times.
+
+    These changes may need some adjustments from users:  For example,
+    some `install' programs refuse to install multiple copies of the
+    same file in one invocation, so you may need to remove duplicate
+    entries from file lists.
+
+    Also, within one set of files, say, nobase_data_DATA, the order of
+    installation may be changed, or even unstable among different hosts,
+    due to the use of associative arrays in awk.  The increased use of
+    awk matches a similar move in Autoconf to provide for better scaling.
+
+    Further, most undocumented per-rule install command variables such as
+    binSCRIPT_INSTALL have been removed because they are not needed any
+    more.  Packages which use them should be using the appropriate one of
+    INSTALL_{DATA,PROGRAM,SCRIPT} or their install_sh_{DATA,PROGRAM,SCRIPT}
+    counterpart, depending on the type of files and the need for automatic
+    target directory creation.
+
+  - The "deleted header file problem" for *.m4 files is avoided by
+    stub rules.  This allows `make' to trigger a rerun of `aclocal'
+    also if some previously needed macro file has been removed.
+
+  - Rebuild rules now also work for a removed `subdir/Makefile.in' in
+    an otherwise up to date tree.
+
+  - 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, re-testing only failed tests, 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.
+
+    To enable less verbose build output, the developer has to use the Automake
+    option `silent-rules' in `AM_INIT_AUTOMAKE', or call the `AM_SILENT_RULES'
+    macro.  The user may then set the default verbosity by passing the
+    `--enable-silent-rules' option to `configure'.  At `make' run time, this
+    default may be overridden using `make V=0' for less verbose, and `make V=1'
+    for backward-compatible verbose output.
+
+  - New prefix `notrans_' for manpages which should not be transformed
+    by --program-transform.
+
+  - New macro AM_COND_IF for conditional evaluation and conditional
+    config files.
+
+  - For AC_CONFIG_LINKS, if source and destination are equal, do not
+    remove the file in a non-VPATH build.  Such setups work with Autoconf
+    2.62 or newer.
+
+  - AM_MAINTAINER_MODE now allows for an optional argument specifying
+    the default setting.
+
+  - AM_SUBST_NOTMAKE may prevent substitution of AC_SUBSTed variables,
+    useful especially for multi-line values.
+
+  - Automake's early configure-time sanity check now diagnoses an
+    unsafe absolute source directory name and makes configure fail.
+
+  - The Automake macros and rules cope better with whitespace in the
+    current directory name, as long as the relative path to `configure'
+    does not contain whitespace.  To this end, the values of `$(MISSING)'
+    and `$(install_sh)' may contain suitable quoting, and their expansion
+    might need `eval'uation if used outside of a makefile.  These
+    undocumented variables may be used in several documented macros such
+    as $(AUTOCONF) or $(MAKEINFO).
+
+Bugs fixed in 1.11:
+
+* Long-standing bugs:
+
+  - Fix aix dependency tracking for libtool objects.
+
+  - Work around AIX sh quoting issue in AC_PROG_CC_C_O, leading to
+    unnecessary use of the `compile' script.
+
+  - For nobase_*_LTLIBRARIES with nonempty directory components, the
+    correct `-rpath' argument is used now.
+
+  - `config.status --file=Makefile depfiles' now also works with the
+    extra quoting used internally by Autoconf 2.62 and newer
+    (it used to work only without the `--file=' bit).
+
+  - The `missing' script works better with versioned tool names.
+
+  - Semantics for `missing help2man' have been revamped:
+
+    Previously, if `help2man' was not present, `missing help2man' would have
+    the following semantics: if some man page was out of date but present, then
+    a warning would be printed, but the exit status was 0.  If the man page was
+    not present at all, then `missing' would create a replacement man page
+    containing an error message, and exit with a status of 2.  This does not play
+    well with `make': the next run will see this particular man page as being up
+    to date, and will only error out on the next generated man page, if any;
+    repeat until all pages are done.  This was not desirable.
+
+    These are the new semantics: if some man page is not present, and help2man
+    is not either, then `missing' will warn and generate the replacement page
+    containing the error message, but exit successfully.  However, `make dist'
+    will ensure that no such bogus man pages are packaged into a tarball.
+
+  - Targets provided by automake behave better with `make -n', in that they
+    take care not to create files.
+
+  - `config.status Makefile... depfiles' works fine again in the presence of
+    disabled dependency tracking.
+
+  - The default no-op recursive rules for these targets also work with BSD make
+    now: html, install-html, install-dvi, install-pdf, install-pdf, install-info.
+
+  - `make distcheck' works also when both a directory and some file below it
+    have been added to a distribution variable, such as EXTRA_DIST or *_SOURCES.
+
+  - 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.
+
+  - `automake' now correctly complains about variable assignments which are
+    preceded by a comment, extend over multiple lines with backslash-escaped
+    newlines, and end in a comment sign.  Previous versions would silently
+    and wrongly ignore such assignments completely.
+
+* Bugs introduced by 1.10:
+
+  - Fix output of dummy dependency files in presence of post-processed
+    Makefile.in's again, but also cope with long lines.
+
+  - $(EXEEXT) is automatically appended to filenames of XFAIL_TESTS
+    that have been declared as programs in the same Makefile.
+    This is for consistency with the analogous change to TESTS in 1.10.
+
+  - Fix order of standard includes to again be `-I. -I$(srcdir)',
+    followed by directories containing config headers.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+New in 1.10:
+
+* Version requirements:
+
+  - Autoconf 2.60 or greater is required.
+
+  - Perl 5.6 or greater is required.
+
+* Changes to aclocal:
+
+  - aclocal now also supports -Wmumble and -Wno-mumble options.
+
+  - `dirlist' entries (for the aclocal search path) may use shell
+    wildcards such as `*', `?', or `[...]'.
+
+  - aclocal supports an --install option that will cause system-wide
+    third-party macros to be installed in the local directory
+    specified with the first -I flag.  This option also uses #serial
+    lines in M4 files to upgrade local macros.
+
+    The new aclocal options --dry-run and --diff help to review changes
+    before they are installed.
+
+  - aclocal now outputs an autoconf version check in aclocal.m4 in
+    projects using automake.
+
+    For a few years, automake and aclocal have been calling autoconf
+    (or its underlying engine autom4te) to accurately retrieve the
+    data they need from configure.ac and its siblings.  Doing so can
+    only work if all autotools use the same version of autoconf.  For
+    instance a Makefile.in generated by automake for one version of
+    autoconf may stop working if configure is regenerated with another
+    version of autoconf, and vice versa.
+
+    This new version check ensures that the whole build system has
+    been generated using the same autoconf version.
+
+* Support for new Autoconf macros:
+
+  - The new AC_REQUIRE_AUX_FILE Autoconf macro is supported.
+
+  - If `subdir-objects' is set, and AC_CONFIG_LIBOBJ_DIR is specified,
+    $(LIBOBJS), $(LTLIBOBJS), $(ALLOCA), and $(LTALLOCA) can be used
+    in different directories.  However, only one instance of such a
+    library objects directory is supported.
+
+* Change to Libtool support:
+
+  - Libtool generic flags (those that go before the --mode=MODE option)
+    can be specified using AM_LIBTOOLFLAGS and target_LIBTOOLFLAGS.
+
+* Yacc and Lex changes:
+
+  - The rebuild rules for distributed Yacc and Lex output will avoid
+    overwriting existing files if AM_MAINTAINER_MODE and maintainer-mode
+    is not enabled.
+
+  - ylwrap is now always used for lex and yacc source files,
+    regardless of whether there is more than one source per directory.
+
+* Languages changes:
+
+  - Preprocessed assembler (*.S) compilation now honors CPPFLAGS,
+    AM_CPPFLAGS and per-target _CPPFLAGS, and supports dependency
+    tracking, unlike non-preprocessed assembler (*.s).
+
+  - subdir-object mode works now with Assembler.  Automake assumes
+    that the compiler understands `-c -o'.
+
+  - Preprocessed assembler (*.S) compilation now also honors
+    $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES).
+
+  - Improved support for Objective C:
+    - Autoconf's new AC_PROG_OBJC will enable automatic dependency tracking.
+    - A new section of the manual documents the support.
+
+  - New support for Unified Parallel C:
+    - AM_PROG_UPC looks for a UPC compiler.
+    - A new section of the manual documents the support.
+
+  - Per-target flags are now correctly handled in link rules.
+
+    For instance maude_CFLAGS correctly overrides AM_CFLAGS; likewise
+    for maude_LDFLAGS and AM_LDFLAGS.  Previous versions bogusly
+    preferred AM_CFLAGS over maude_CFLAGS while linking, and they
+    used both AM_LDFLAGS and maude_LDFLAGS on the same link command.
+
+    The fix for compiler flags (i.e., using maude_CFLAGS instead of
+    AM_CFLAGS) should not hurt any package since that is how _CFLAGS
+    is expected to work (and actually works during compilation).
+
+    However using maude_LDFLAGS "instead of" AM_LDFLAGS rather than
+    "in addition to" breaks backward compatibility with older versions.
+    If your package used both variables, as in
+
+      AM_LDFLAGS = common flags
+      bin_PROGRAMS = a b c
+      a_LDFLAGS = more flags
+      ...
+
+    and assumed *_LDFLAGS would sum up, you should rewrite it as
+
+      AM_LDFLAGS = common flags
+      bin_PROGRAMS = a b c
+      a_LDFLAGS = $(AM_LDFLAGS) more flags
+      ...
+
+    This new behavior of *_LDFLAGS is more coherent with other
+    per-target variables, and the way *_LDFLAGS variables were
+    considered internally.
+
+* New installation targets:
+
+  - New targets mandated by GNU Coding Standards:
+      install-dvi
+      install-html
+      install-ps
+      install-pdf
+    By default they will only install Texinfo manuals.
+    You can customize them with *-local variants:
+      install-dvi-local
+      install-html-local
+      install-ps-local
+      install-pdf-local
+
+  - The undocumented recursive target `uninstall-info' no longer exists.
+    (`uninstall' is in charge of removing all possible documentation
+    flavors, including optional formats such as dvi, ps, or info even
+    when `no-installinfo' is used.)
+
+* Miscellaneous changes:
+
+  - Automake no longer complains if input files for AC_CONFIG_FILES
+    are specified using shell variables.
+
+  - clean, distribution, or rebuild rules are normally disabled for
+    inputs and outputs of AC_CONFIG_FILES, AC_CONFIG_HEADERS, and
+    AC_CONFIG_LINK specified using shell variables.  However, if these
+    variables are used as ${VAR}, and AC_SUBSTed, then Automake will
+    be able to output rules anyway.
+    (See the Automake documentation for AC_CONFIG_FILES.)
+
+  - $(EXEEXT) is automatically appended to filenames of TESTS
+    that have been declared as programs in the same Makefile.
+    This is mostly useful when some check_PROGRAMS are listed in TESTS.
+
+  - `-Wportability' has finally been turned on by default for `gnu' and
+    `gnits' strictness.  This means, automake will complain about %-rules
+    or $(GNU Make functions) unless you switch to `foreign' strictness or
+    use `-Wno-portability'.
+
+  - Automake now uses AC_PROG_MKDIR_P (new in Autoconf 2.60), and uses
+    $(MKDIR_P) instead of $(mkdir_p) to create directories.  The
+    $(mkdir_p) variable is still defined (to the same value as
+    $(MKDIR_P)) but should be considered obsolete.  If you are using
+    $(mkdir_p) in some of your rules, please plan to update them to
+    $(MKDIR_P) at some point.
+
+  - AM_C_PROTOTYPES and ansi2knr are now documented as being obsolete.
+    They still work in this release, but may be withdrawn in a future one.
+
+  - Inline compilation rules for gcc3-style dependency tracking are
+    more readable.
+
+  - Automake installs a "Hello World!" example package in $(docdir).
+    This example is used throughout the new "Autotools Introduction"
+    chapter of the manual.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+New in 1.9:
+
+* Makefile.in bloat reduction:
+
+  - Inference rules are used to compile sources in subdirectories when
+    the `subdir-objects' option is used and no per-target flags are
+    used.  This should reduce the size of some projects a lot, because
+    Automake used to output an explicit rule for each such object in
+    the past.
+
+  - Automake no longer outputs three rules (.o, .obj, .lo) for each
+    object that must be built with explicit rules.  It just outputs
+    the rules required to build the kind of object considered: either
+    the two .o and .obj rules for usual objects, or the .lo rule for
+    libtool objects.
+
+* Change to Libtool support:
+
+  - Libtool tags are used with libtool versions that support them.
+    (I.e., with Libtool 1.5 or greater.)
+
+  - Automake is now able to handle setups where a libtool library is
+    conditionally installed in different directories, as in
+
+      if COND
+        lib_LTLIBRARIES = liba.la
+      else
+        pkglib_LTLIBRARIES = liba.la
+      endif
+      liba_la_SOURCES = ...
+
+* Changes to aclocal:
+
+  - aclocal now ensures that AC_DEFUNs and AU_DEFUNs it discovers are
+    really evaluated, before it decides to include them in aclocal.m4.
+    This solves nasty problems with conditional redefinitions of
+    Autoconf macros in /usr/share/aclocal/*.m4 files causing extraneous
+    *.m4 files to be included in any project using these macros.
+    (Calls to AC_PROG_EGREP causing libtool.m4 to be included is the
+    most famous instance of this bug.)
+
+  - Do not complain about missing conditionally AC_REQUIREd macros
+    that are not actually used.  In 1.8.x aclocal would correctly
+    determine which of these macros were really needed (and include
+    only these in the package); unfortunately it would also require
+    all of them to be present in order to run.  This created
+    situations were aclocal would not work on a tarball distributing
+    all the macros it uses.  For instance running aclocal on a project
+    containing only the subset of the Gettext macros in use by the
+    project did not work, because gettext conditionally requires other
+    macros.
+
+* Portability improvements:
+
+  - Tar format can be chosen with the new options tar-v7, tar-ustar, and
+    tar-pax.  The new option filename-length-max=99 helps diagnosing
+    filenames that are too long for tar-v7.  (PR/414)
+
+  - Variables aumented with `+=' are now automatically flattened (i.e.,
+    trailing backslashes removed) and then wrapped around 80 colummns
+    (adding trailing backslashes).  In previous versions, a long series
+    of
+      VAR += value1
+      VAR += value2
+      VAR += value3
+      ...
+    would result in a single-line definition of VAR that could possibly
+    exceed the maximum line length of some make implementations.
+
+    Non-augmented variables are still output as they are defined in
+    the Makefile.am.
+
+* Miscellaneous:
+
+  - Support Fortran 90/95 with the new "fc" and "ppfc" languages.
+    Works the same as the old Fortran 77 implementation; just replace
+    F77 with FC everywhere (exception: FFLAGS becomes FCFLAGS).
+    Requires a version of autoconf which provides AC_PROG_FC (>=2.59).
+
+  - Support for conditional _LISP.
+
+  - Support for conditional -hook and -local rules (PR/428).
+
+  - Diagnose AC_CONFIG_AUX_DIR calls following AM_INIT_AUTOMAKE. (PR/49)
+
+  - Automake will not write any Makefile.ins after the first error it
+    encounters.  The previous Makefile.ins (if any) will be left in
+    place.  (Warnings will not prevent output, but remember they can
+    be turned into errors with -Werror.)
+
+  - The restriction that SUBDIRS must contain direct children is gone.
+    Do not abuse.
+
+  - The manual tells more about SUBDIRS vs. DIST_SUBDIRS.
+    It also gives an example of nested packages using AC_CONFIG_SUBDIRS.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Bugs fixed in 1.8.5:
+
+* Long-standing bugs:
+
+  - Define DIST_SUBDIRS even when the `no-dist' or `cygnus' options are used
+    so that `make distclean' and `make maintainer-clean' can work.
+
+  - Define AR and ARFLAGS even when only EXTRA_LIBRARIES are defined.
+
+  - Fix many rules to please FreeBSD make, which runs commands with `sh -e'.
+
+  - Polish diagnostic when no input file is found.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Bugs fixed in 1.8.4:
+
+* Long-standing bugs:
+
+  - Fix AM_PATH_PYTHON to correctly display $PYTHON when it has been
+    overridden by the user.
+
+  - Honor PATH_SEPARATOR in various places of the Automake package, for
+    the sake of OS/2.
+
+  - Adjust dependency tracking mode detection to ICC 8.0's new output.
+    (PR/416)
+
+  - Fix install-sh so it can install the `mv' binary... using `mv'.
+
+  - Fix tru64 dependency tracking for libtool objects.
+
+  - Work around Exuberant Ctags when creating a TAGS files in a directory
+    without files to scan but with subdirectories to include.
+
+* Bugs introduced by 1.8:
+
+  - Fix an "internal error" when @LIBOBJS@ is used in a variable that is
+    not defined in the same conditions as the _LDADD that uses it.
+
+  - Do not warn when JAVAROOT is overridden, this is legitimate.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Bugs fixed in 1.8.3:
+
+* Long-standing bugs:
+
+  - Quote filenames in installation rules, in case $DESTDIR, $prefix,
+    or any of the other *dir variables contain a space.
+
+    Please note that Automake does not and cannot support spaces in
+    filenames that are involved during the build.  This change affects
+    only installation paths, so that `make install' does not bomb out
+    in packages configured with
+      ./configure --prefix '/c/Program Files'
+
+  - Fix the depfiles output so it works with GNU sed (<4.1) even when
+    POSIXLY_CORRECT is set.
+
+  - Do not AC_SUBST(LIBOBJS) in AM_WITH_REGEX.  This macro was unusable
+    since Autoconf 2.54, which defines LIBOBJS itself.
+
+  - Fix a potential (but unlikely) race condition in parallel elisp
+    builds.  (Introduced in 1.7.3.)
+
+  - Do not assume that users override _DEPENDENCIES in all conditions
+    where Automake will try to define them.
+
+  - Do not use `mkdir -p' in mkinstalldirs, unless this is GNU mkdir.
+    Solaris 8's `mkdir -p' is not thread-safe and can break parallel
+    builds.
+
+    This fix also affects the $(mkdir_p) variable defined since
+    Automake 1.8.  It will be set to `mkdir -p' only if mkdir is GNU
+    mkdir, and to `mkinstalldirs' or `install-sh -d' otherwise.
+
+  - Secure temporary directory creation in `make distcheck'. (PR/413)
+
+  - Do not generate two build rules for `parser.h' when the
+    parser appears in two different conditionals.
+
+  - Work around a Solaris 8 /bin/sh bug in the test for dependency
+    checking.  Usually ./configure will not pick this shell; so this
+    fix only helps cases where the shell is forced to /bin/sh.
+
+* Bugs introduced by 1.8:
+
+  - In some situations (hand-written `m4_include's), aclocal would
+    call the `File::Spec->rel2abs' method, which was only introduced
+    in Perl 5.6.  This new version reestablish support Perl 5.005.
+
+    It is likely that the next major Automake releases will require at
+    least Perl 5.6.  Consider upgrading your development environment
+    if you are still using the five-year-old Perl 5.005.
+
+  - Automake would sometimes fail to define rules for targets listed
+    in variables defined in multiple conditions.  For instance on
+      if C1
+       bin_PROGRAMS = a
+      else
+       bin_PROGRAMS = b
+      endif
+    it would define only the `a.$(OBJEXT): a.c' rule and omit the
+    `b.$(OBJEXT): b.c' rule.
+
+* New sections in manual:
+
+  - Third-Party Makefiles: how to interface third party Makefiles.
+  - Upgrading: upgrading packages to newer Automake versions.
+  - Multiple Outputs: handling tools that produce many outputs.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Bug fixed in 1.8.2:
+
+* A (well known) portability bug slipped in the changes made to
+  install-sh in Automake 1.8.1.  The broken install-sh would refuse to
+  install anything on Tru64.
+
+* Fix install rules for conditionally built python files.  (This never
+  really worked.)
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Bug fixed in 1.8.1:
+
+* Bugs introduced by 1.8:
+
+  - Fix Config.pm import error with old Perl versions (at least
+    5.005_03).  One symptom is that aclocal could not find its macro
+    directory.
+
+  - Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+    created by `make install' are always world readable, even if the
+    installer happens to have an overly restrictive umask (e.g. 077).
+    This was a mistake and has been reverted.  There are at least two
+    reasons why we must not use `-m 0755':
+      - it causes special bits like SGID to be ignored,
+      - it may be too restrictive (some setups expect 775 directories).
+
+  - Fix aclocal to honor definitions located in files which have been
+    m4_included manually.  aclocal 1.8 had been updated to check
+    m4_included files for new requirements, but forgot that these
+    m4_included files can also provide new definitions.
+
+    Note that if you have such a setup, we recommend you get rid of
+    it.  In the past, there was a reason to m4_include files manually:
+    aclocal used to duplicate entire M4 files into aclocal.m4, even
+    files that were distributed.  Some packages were therefore
+    m4_including the distributed file directly, and playing some
+    tricks to ensure aclocal would not copy that file to aclocal.m4,
+    in order to limit the amount of duplication.  Since aclocal 1.8.x
+    will precisely output m4_includes for local M4 files, we recommend
+    that you clean up your setup, removing all manual m4_includes and
+    letting aclocal output them.
+
+  - Output detailed menus in the Info version if the Automake manual,
+    so that Emacs can locate the indexes.
+
+  - configure.ac and configure were listed twice in DIST_COMMON (an
+    internal variable where Automake lists configury files to
+    distribute).  This was harmless, but unaesthetic.
+
+  - Use `chmod a-w' instead of `chmod -w' as the latter honors umask.
+    This was an issue only in the Automake package itself, not in
+    its output.
+
+  - Automake assumed that all AC_CONFIG_LINKS arguments had the form
+    DEST:SRC.  This was wrong, as some packages do
+    AC_CONFIG_LINKS($computedlinks).  This version no longer abort in
+    that situation.
+
+  - Contrary to mkinstalldirs, $(mkdir_p) was expecting exactly one
+    argument.  This caused two kinds of failures:
+      - Rules installing data in a conditionally defined directory
+        failed when that directory was undefined.  In this case no
+        argument was supplied.
+      - `make installdirs' failed, because several directories were
+        passed to $(mkdir_p).  This was an issue only on platform
+        were $(mkdir_p) is implemented with `install-sh -d'.
+    $(mkdir_p) as been changed to accept 0 or more arguments, as
+    mkinstalldirs did.
+
+* Long-standing bugs:
+
+  - Fix an unexpected diagnostic occurring when users attempt
+    to override some internal variables that Automake appends to.
+
+  - aclocal now scans configure.ac for macro definitions (PR/319).
+
+  - Fix a portability issue with OSF1/Tru64 Make.  If a directory
+    distributes files which are outside itself (this usually occurs
+    when using AC_CONFIG_AUX_DIR([../dir]) to use auxiliary files
+    from a parent package), then `make distcheck' fails due to an
+    optimization performed by OSF1/Tru64 Make in its VPATH handling.
+    (tests/subpkg2.test failure)
+
+  - Fix another portability issue with Sun and OSF1/Tru64 Make.
+    In a VPATH-build configuration, `make install' would install
+    nobase_ files to wrong locations.
+
+  - Fix a Perl `uninitialized value' diagnostic occurring when
+    automake complains that a Texinfo file does not have a
+    @setfilename statement.
+
+  - Erase config.status.lineno during `make distclean'.  This file
+    can be created by config.status.  Automake already knew about
+    configure.lineno, but forgot config.status.lineno.
+
+  - Distribute all files, even those which are built and installed
+    conditionally.  This change affects files listed in conditionally
+    defined *_HEADERS and *_PYTHON variable (unless they are nodist_*)
+    as well as those listed in conditionally defined dist_*_DATA,
+    dist_*_JAVA, dist_*_LISP, and dist_*_SCRIPTS variables.
+
+  - Fix AM_PATH_LISPDIR to avoid \? in sed regular expressions; it
+    doesn't conform to POSIX.
+
+  - Normalize help strings for configure variables and options added
+    by Automake macros.
+
+* Anticipation:
+
+  - Check for python2.4 in AM_PATH_PYTHON.
+
+* Spurious failures in test suite:
+
+  - tests/libtool5.test, tests/ltcond.test, tests/ltcond2.test,
+    tests/ltconv.test: fix failures with CVS Libtool.
+  - tests/aclocal6.test: fix failure if autom4te.cache is disabled.
+  - tests/txinfo24.test, tests/txinfo25.test, tests/txinfo28.test:
+    fix failures with old Texinfo versions.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+New in 1.8:
+
+* Meta-News
+
+  - The NEWS file is more verbose.
+
+* Requirements
+
+  - Autoconf 2.58 or greater is required.
+
+* New features
+
+  - Default source file names in the absence of a _SOURCES declaration
+    are made by removing any target extension before appending `.c', so
+    to make the libtool module `foo.la' from `foo.c', you only need to
+    do this:
+
+       lib_LTLIBRARIES = foo.la
+       foo_la_LDFLAGS  = -module
+
+    For backward compatibility, foo_la.c will be used instead of
+    foo.c if this file exists or is the explicit target of a rule.
+    However -Wobsolete will warn about this deprecated naming.
+
+  - AR's `cru' flags are now set in a global ARFLAGS variable instead
+    of being hard-coded in each $(AR) invocation, so they can be
+    substituted from configure.ac.  This has been requested by people
+    dealing with non-POSIX ar implementations.
+
+  - New warning option: -Woverride.  This will warn about any user
+    target or variable definitions which override Automake
+    definitions.
+
+  - Texinfo rules back up and restore info files when makeinfo fails.
+
+  - Texinfo rules now support the `html' target.
+    Running this requires Texinfo 4.0 or greater.
+
+    `html' is a new recursive target, so if your package mixes
+    hand-crafted `Makefile.in's with Automake-generated
+    `Makefile.in's, you should adjust the former to support (or
+    ignore) this target so that `make html' recurses successfully.  If
+    you had a custom `html' rule in your `Makefile.am', it's better to
+    rename it as `html-local', otherwise your rule will override
+    Automake's new rule (you can check that by running `automake
+    -Woverride') and that will stop the recursion to subdirectories.
+
+    Last but not least, this `html' rule is declared PHONY, even when
+    overridden.  Fortunately, it appears that few packages use a
+    non-PHONY `html' rule.
+
+  - Any file which is m4_included from configure.ac will appear as a
+    configure and Makefile.in dependency, and will be automatically
+    distributed.
+
+  - The rules for rebuilding Makefiles and Makefile.ins will now
+    rebuild all Makefiles and all Makefile.ins at once when one of
+    configure's dependencies has changed.  This is considerably faster
+    than previous implementations, where config.status and automake
+    were run separately in each directory (this still happens when you
+    change a Makefile.am locally, without touching configure.ac or
+    friends).  Doing this also solves a longstanding issue: these
+    rebuild rules failed to work when adding new directories to the
+    tree, forcing you to run automake manually.
+
+  - For similar reasons, the rules to rebuild configure,
+    config.status, and aclocal.m4 are now defined in all directories.
+    Note that if you were using the CONFIG_STATUS_DEPENDENCIES and
+    CONFIGURE_DEPENDENCIES (formerly undocumented) variables, you
+    should better define them in all directories.  This is easily done
+    using an AC_SUBST (make sure you prefix these dependencies with
+    $(top_srcdir) since this variable will appear at different
+    levels of the build tree).
+
+  - aclocal will now use `m4_include' instead of copying local m4
+    files into aclocal.m4.  (Local m4 files are those you ship with
+    your project, other files will be copied as usual.)
+
+    Because m4_included files are automatically distributed, it means
+    for most projects there is no point in EXTRA_DISTing the list of
+    m4 files which are used.  (You can probably get rid of
+    m4/Makefile.am if you had one.)
+
+  - aclocal will avoid touching aclocal.m4 when possible, so that
+    Autom4te's cache isn't needlessly invalidated.  This behavior can
+    be switched off with the new `--force' option.
+
+  - aclocal now uses Autoconf's --trace to detect macros which are
+    actually used and will no longer include unused macros simply
+    because they where mentioned.  This was often the case for macros
+    called conditionally.
+
+  - New options no-dist and no-dist-gzip.
+
+  - compile, depcomp, elisp-comp, install-sh, mdate-sh, mkinstalldirs,
+    py-compile, and ylwrap, now all understand --version and --help.
+
+  - Automake will now recognize AC_CONFIG_LINKS so far as removing created
+    links as part of the distclean target and including source files in
+    distributions.
+
+  - AM_PATH_PYTHON now supports ACTION-IF-FOUND and ACTION-IF-NOT-FOUND
+    argument.  The latter can be used to override the default behavior
+    (which is to abort).
+
+  - Automake will exit with $? = 63 on version mismatch.  (So does
+    Autoconf 2.58)  missing knows this, and in this case it will
+    emulate the tools as if they were absent.  Because older versions
+    of Automake and Autoconf did not use this exit code, this change
+    will only be useful in projects generated with future versions of
+    these tools.
+
+  - When using AC_CONFIG_FILES with multiple input files, Automake
+    generates the first ".in" input file for which a ".am" exists.
+    (Former versions would try to use only the first input file.)
+
+  - lisp_DATA is now allowed.  If you are using the empty ELCFILES
+    idiom to disable byte-compilation of lisp_LISP files, it is
+    recommended that you switch to using lisp_DATA.  Note that
+    this is not strictly equivalent: lisp_DATA will install elisp
+    files even if emacs is not installed, while *_LISP do not
+    install anything unless emacs is found.
+
+  - Makefiles will prefer `mkdir -p' over mkinstalldirs if it is
+    available.  This selection is achieved through the Makefile
+    variable $(mkdir_p) that is set by AM_INIT_AUTOMAKE to either
+    `mkdir -m 0755 -p --', `$(mkinstalldirs) -m 0755', or
+    `$(install_sh) -m 0755 -d'.
+
+* Obsolete features
+
+  - Because `mkdir -p' is available on most platforms, and we can use
+    `install-sh -d' when it is not, the use of the mkinstalldirs
+    script is being phased out.  `automake --add-missing' no longer
+    installs it, and if you remove mkinstalldirs from your package,
+    automake will define $(mkinstalldirs) as an alias for $(mkdir_p).
+
+    Gettext 0.12.1 still requires mkinstalldirs.  Fortunately
+    gettextize and autopoint will install it when needed.  Automake
+    will continue to define the $(mkinstalldirs) and to distribute
+    mkinstalldirs when this script is in the source tree.
+
+  - AM_PROG_CC_STDC is now empty.  The content of this macro was
+    merged in AC_PROG_CC.  If your code uses $am_cv_prog_cc_stdc, you
+    should adjust it to use $ac_cv_prog_cc_stdc instead.  (This
+    renaming should be safe, even if you have to support several,
+    versions of Automake, because AC_PROG_CC defines this variable
+    since Autoconf 2.54.)
+
+  - Some users where using the undocumented ACLOCAL_M4_SOURCES
+    variable to override the aclocal.m4 dependencies computed
+    (inaccurately) by older versions of Automake.  Because Automake
+    now tracks configure's m4 dependencies accurately (see m4_include
+    above), the use of ACLOCAL_M4_SOURCES should be considered
+    obsolete and will be flagged as such when running `automake
+    -Wobsolete'.
+
+* Bug fixes
+
+  - Defining programs conditionally using Automake conditionals no
+    longer leads to a combinatorial explosion.  The following
+    construct used to be troublesome when used with dozens of
+    conditions.
+
+      bin_PROGRAMS = a
+      if COND1
+        bin_PROGRAMS += a1
+      endif
+      if COND2
+        bin_PROGRAMS += a2
+      endif
+      if COND3
+        bin_PROGRAMS += a3
+      endif
+      ...
+
+    Likewise for _SOURCES, _LDADD, and _LIBADD variables.
+
+  - Due to implementation constraints, previous versions of Automake
+    proscribed multiple conditional definitions of some variables
+    like bin_PROGRAMS:
+
+      if COND1
+        bin_PROGRAMS = a1
+      endif
+      if COND2
+        bin_PROGRAMS = a2
+      endif
+
+    All _PROGRAMS, _LDADD, and _LIBADD variables were affected.
+    This restriction has been lifted, and these variables now
+    support multiple conditional definitions as do other variables.
+
+  - Cleanup the definitions of $(distdir) and $(top_distdir).
+    $(top_distdir) now points to the root of the distribution
+    directory created during `make dist', as it did in Automake 1.4,
+    not to the root of the build tree as it did in intervening
+    versions.  Furthermore these two variables are now only defined in
+    the top level Makefile, and passed to sub-directories when running
+    `make dist'.
+
+  - The --no-force option now correctly checks the Makefile.in's
+    dependencies before deciding not to update it.
+
+  - Do not assume that make files are called Makefile in cleaning rules.
+
+  - Update .info files in the source tree, not in the build tree.  This
+    is what the GNU Coding Standard recommend.  Only Automake 1.7.x
+    used to update these files in the build tree (previous versions did
+    it in the source tree too), and it caused several problems, varying
+    from mere annoyance to portability issues.
+
+  - COPYING, COPYING.LIB, and COPYING.LESSER are no longer overwritten
+    when --add-missing and --force-missing are used.  For backward
+    compatibility --add-missing will continue to install COPYING (in
+    `gnu' strictness) when none of these three files exist, but this
+    use is deprecated: you should better choose a license yourself and
+    install it once for all in your source tree (and in your code
+    management system).
+
+  - Fix ylwrap so that it does not overwrite header files that haven't
+    changed, as the inline rule already does.
+
+  - User-defined rules override automake-defined rules for the same
+    targets, even when rules do not have commands.  This is not new
+    (and was documented), however some of the automake-generated
+    rules have escaped this principle in former Automake versions.
+    Rules for the following targets are affected by this fix:
+
+       clean, clean-am, dist-all, distclean, distclean-am, dvi, dvi-am,
+       info, info-am, install-data-am, install-exec-am, install-info,
+       install-info-am, install-man, installcheck-am, maintainer-clean,
+       maintainer-clean-am, mostlyclean, mostlyclean-am, pdf, pdf-am,
+       ps, ps-am, uninstall-am, uninstall-info, uninstall-man
+
+    Practically it means that an attempt to supplement the dependencies
+    of some target, as in
+
+       clean: my-clean-rule
+
+    will now *silently override* the automake definition of the
+    rule for this target.  Running `automake -Woverride' will diagnose
+    all such overriding definitions.
+
+    It should be noted that almost all these targets support a *-local
+    variant that is meant to supplement the automake-defined rule
+    (See node `Extending' in the manual).  The above rule should
+    be rewritten as
+
+      clean-local: my-clean-rule
+
+    These *-local targets have been documented since at least
+    Automake 1.2, so you should not fear the change if you have
+    to support multiple automake versions.
+
+* Miscellaneous
+
+  - The Automake manual is now distributed under the terms of the GNU FDL.
+
+  - Targets dist-gzip, dist-bzip2, dist-tarZ, dist-zip are always defined.
+
+  - core dumps are no longer removed by the cleaning rules.  There are
+    at least three reasons for this:
+      1. These files should not be created by any build step,
+        so their removal do not fit any of the cleaning rules.
+        Actually, they may be precious to the developer.
+      2. If such file is created during a build, then it's clearly a
+         bug Automake should not hide.  Not removing the file will
+         cause `make distcheck' to complain about its presence.
+      3. Operating systems have different naming conventions for
+         core dump files.  A core file on one system might be a
+        completely legitimate data file on another system.
+
+  - RUNTESTFLAGS, CTAGSFLAGS, ETAGSFLAGS, JAVACFLAGS are no longer
+    defined by Automake.  This means that any definition in the
+    environment will be used, unless overridden in the Makefile.am or
+    on the command line.  The old behavior, where these variables were
+    defined empty in each Makefile, can be obtained by AC_SUBSTing or
+    AC_ARG_VARing each variable from configure.ac.
+
+  - CONFIGURE_DEPENDENCIES and CONFIG_STATUS_DEPENDENCIES are now
+    documented.  (The is not a new feature, these variables have
+    been there since at least Automake 1.4.)
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Bugs fixed in 1.7.9:
+* Fix install-strip to work with nobase_ binaries.
+* Fix renaming of #line directives in ylwrap.
+* Rebuild with Autoconf 2.59.  (1.7.8 was not installable with pdksh.)
+
+Bugs fixed in 1.7.8:
+* Remove spurious blank lines in cleaning rules introduced in 1.7.7.
+* Fix detection of Debian's install-info, broken since version 1.5.
+  (Debian bug #213524).
+* Honor -module if it appears in AM_LDFLAGS (i.e., relax name checking)
+  This was only done for libfoo_LDFLAGS and LDFLAGS in previous versions.
+
+Bugs fixed in 1.7.7:
+* The implementation of automake's --no-force option is unreliable,
+  so this option is ignored in this version.  A real fix will appear in
+  Automake 1.8.  (Debian Bug #206299)
+* AM_PATH_PYTHON: really check the whole list of interpreters if no
+  argument is given.  (PR/399)
+* Do not warn about leading `_' in variable names, even with -Wportability.
+* Support user redefinitions of TEXINFO_TEX.
+* depcomp: support AIX Compiler version 6.
+* Fix missing rebuilds during `make dist' with BSD make.
+  (Could produce tarballs containing out-of-date files.)
+* Resurrect multilib support.
+* Noteworthy manual updates:
+  - Extending aclocal: how to write m4 macros that won't trigger warnings
+    with Automake 1.8.
+  - A Shared Library: Rewrite and split into subsections.
+
+Bugs fixed in 1.7.6:
+* Fix depcomp's icc mode for ICC 7.1.
+* Diagnose calls to AC_CONFIG_FILES and friends with not enough arguments.
+* Fix maintainer-clean's removal of autom4te.cache in VPATH builds.
+* Fix AM_PATH_LISPDIR to work with POSIXLY_CORRECT=1.
+* Fix the location reported in some diagnostics related to AUTOMAKE_OPTIONS.
+* Remove Latin-1 characters from elisp-comp.
+* Update the manual's @dircategory to match the Free Software Directory.
+
+Bugs fixed in 1.7.5:
+* Update install-sh's license to remove an advertising clause.
+  (Debian bug #191717)
+* Fix a bug introduced in 1.7.4, related to BUILT_SOURCE handling,
+  that caused invalid Makefile.ins to be generated.
+* Make sure AM_MAKE_INCLUDE doesn't fail when a `doit' file exists.
+* New FAQ entry: renamed objects.
+
+Bugs fixed in 1.7.4:
+* Tweak the TAGS rule to support Exuberant Ctags (in addition to
+  the Emacs implementation)
+* Fix output of aclocal.m4 dependencies in subdirectories.
+* Use `mv -f' instead of `mv' in fastdep rules.
+* Upgrade mdate-sh to work on OS/2.
+* Don't byte-compile elisp files when ELCFILES is set empty.
+  (this documented feature was broken by 1.7.3)
+* Diagnose trailing backslashes on last line of Makefile.am.
+* Diagnose whitespace following trailing backslashes.
+* Multiple tests are now correctly supported in DEJATOOL. (PR/388)
+* Fix rebuilt rules for AC_CONFIG_FILES([Makefile:Makefile.in:Makefile.bot])
+  Makefiles. (PR/389)
+* `make install' will build `BUILT_SOURCES' first.
+* Minor documentation fixes.
+
+Bugs fixed in 1.7.3:
+* Fix stamp files numbering (when using multiple AC_CONFIG_HEADERS).
+* Query distutils for `pythondir' and `pythonexecdir', instead of
+  using an hardcoded path.  This should allow builds on 64-bit
+  distributions that usually use lib64/ instead of lib/.
+* AM_PATH_PYTHON will also search for python2.3.
+* elisp files are now built all at once instead of one by one. Besides
+  incurring a speed-up, this is required to support interdependent elisp files.
+* Support for DJGPP:
+  - `make distcheck' will now work in `_inst/' and `_build' instead
+    of `=inst/' and `=build/'
+  - use `_dirstamp' when the file-system doesn't support `.dirstamp'
+  - install/uninstall `*.i[0-9][0-9]'-style info files
+  - more changes that affect only the Automake package (not its output)
+* Fix some incompatibilities with upcoming perl-5.10.
+* Properly quote AC_PACKAGE_TARNAME and AC_PACKAGE_VERSION when defining
+  PACKAGE and VERSION.
+* depcomp fixes:
+  - dashmstdout and dashXmstdout modes: don't use `-o /dev/null', this
+    is troublesome with gcc and Solaris compilers. (PR/385)
+  - makedepend mode: work with Libtool. (PR/385 too)
+  - support for ICC.
+* better support for unusual gettext setups, such as multiple po/ directories
+  (PR/381):
+  - Flag missing po/ and intl/ directories as warnings, not errors.
+  - Disable these warnings if po/ does not exist.
+* Noteworthy manual updates:
+  - New FAQ chapter.
+  - Document how AC_CONFIG_AUX_DIR interacts with missing files.
+    (Debian Bug #39542)
+  - Document `AM_YFLAGS = -d'.  (PR/382)
+
+Bugs fixed in 1.7.2:
+* Fix installation and uninstallation of Info files built in subdirectories.
+* Do not run `./configure --with-included-gettext' during `make distcheck'
+  if AM_GNU_GETTEXT([external]) is used.
+* Correctly uninstall renamed man pages.
+* Do not strip escaped newline in variables defined in one condition
+  and augmented in another condition.
+* Fix ansi2knr rules for LIBOBJS sources.
+* Clean all known Texinfo index files, not only those which appear to
+  be used, because we cannot know which indexes are used in included files.
+  (PR/375, Debian Bug #168671)
+* Honor only the first @setfilename seen in a Texinfo file.
+* Treat "required file X not found" diagnostics as errors (exit status 1).
+* Don't complain that a required file is not found when it is a Makefile
+  target. (PR/357)
+* Don't use single suffix inference rules when building `.info'-less
+  Info files, for the sake of Solaris make.
+* The `check' target now depends on `$(BUILT_SOURCES)'. (PR/359)
+* Recognize multiple inference rules such as `.a.b .c.d:'. (PR/371)
+* Warn about multiple inference rules when -Wportability is used. (PR/372)
+* Fix building of deansified files from subdirectories. (PR/370)
+* Add missing `fi' in the .c->.obj rules.
+* Improve install-sh to work even when names contain spaces or certain
+  (but not all) shell metachars.
+* Fix the following spurious failures in the test suite:
+  depcomp2.test, gnits2.test, gnits3.test, python3.test, texinfo13.test
+* Noteworthy manual updates:
+  - Augment the section about BUILT_SOURCES.
+  - Mention that AM_PROG_CC_STDC is a relic that is better avoided today.
+
+Bugs fixed in 1.7.1:
+* Honor `ansi2knr' for files built in subdirectories, or using per-targets
+  flags.
+* Aclocal should now recognize macro names containing parentheses, e.g.
+  AC_DEFUN([AC_LANG_PREPROC(Fortran 90)], [...]).
+* Erase *.sum and *.log files created by DejaGnu, during `make distclean'.
+  (Debian Bug#153697)
+* Install Python files even if they were built.  (PR/369)
+* Have stamp-vti dependent upon configure instead of configure.ac, as the
+  version might not be defined in the latter. (PR/358)
+* Reorder arguments passed to a couple of commands, so things works
+  when POSIXLY_CORRECT=1.
+* Fix a regex that can cause Perl to segfault on large input.
+  (Debian Bug#162583)
+* Fix distribution of packages that have some sources defined conditionally,
+  as in the `Conditional compilation using Automake conditionals' example
+  of the manual.
+* Fix spurious test suite failures on IRIX.
+* Don't report a required variable as undefined if it has been
+  defined conditionally for the "right" conditions.
+* Fix cleaning of the /tmp subdirectory used by `make distcheck', in case
+  `make distcheck' fails.
+* Fix distribution of included Makefile fragment, so we don't create
+  spurious directories in the distribution. (PR/366)
+* Don't complain that a target lacks `.$(EXEEXT)' when it has it.
+
+New in 1.7:
+* Autoconf 2.54 is required.
+* `aclocal' and `automake' will no longer warn about obsolete
+  configure macros.  This is done by `autoconf -Wobsolete'.
+* AM_CONFIG_HEADER, AM_SYS_POSIX_TERMIOS and
+  AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL are obsolete (although still
+  supported).  You should use AC_CONFIG_HEADERS, AC_SYS_POSIX_TERMIOS,
+  and AC_HEADER_TIOCGWINSZ instead.  `autoupdate' can upgrade
+  `configure.ac' for you.
+* Support for per-program and per-library `_CPPFLAGS'.
+* New `ctags' target (builds CTAGS files).
+* Support for -Wmumble and -Wno-mumble, where mumble is a warning category
+  (see `automake --help' or the manual for a list of them).
+* Honor the WARNINGS environment variable.
+* Omit the call to depcomp when using gcc3: call the compiler directly.
+* A new option, std-options, tests that programs support --help and --version
+  when `make installcheck' is run.  This is enabled by --gnits.
+* Texinfo rules now support the `ps' and `pdf' targets.
+* Info files are now created in the build directory, not the source directory.
+* info_TEXINFOS supports files in subdirectories (this requires Texinfo 4.1
+  or greater).
+* `make distcheck' will enforce DESTDIR support by attempting
+  a DESTDIR install.
+* `+=' can be used in conditionals, even if the augmented variable
+  was defined for another condition.
+* Makefile fragments (inserted with `include') are always distributed.
+* Use Autoconf's --trace interface to inspect configure.ac and get
+  a more accurate view of it.
+* Add support for extending aclocal's default macro search path
+  using a `dirlist' file within the aclocal directory.
+* automake --output-dir is deprecated.
+* The part of the distcheck target that checks whether uninstall actually
+  removes all installed files has been moved in a separate target,
+  distuninstallcheck, so it can be overridden easily.
+* Many bug fixes.
+
+New in 1.6.3:
+* Support for AM_INIT_GETTEXT([external])
+* Bug fixes, including:
+  - Fix Automake's own `make install' so it works even if `ln' doesn't.
+  - nobase_ programs and scripts honor --program-transform correctly.
+  - Erase configure.lineno during `make distclean'.
+  - Erase YACC and LEX outputs during `make maintainer-clean'.
+
+New in 1.6.2:
+* Many bug fixes, including:
+  - Requiring the current version works.
+  - Fix "$@" portability issues (for Zsh).
+  - Fix output of dummy dependency files in presence of post-processed
+    Makefile.in's.
+  - Don't compute dependencies in background to avoid races with libtool.
+  - Fix handling of _OBJECTS variables for targets sharing source variables.
+  - Check dependency mode for Java when AM_PROG_GCJ is used.
+
+New in 1.6.1:
+* automake --output-dir is deprecated
+* Many bug fixes, including:
+  - Don't choke on AM_LDFLAGS definitions.
+  - Clean libtool objects from subdirectories.
+  - Allow configure variables with reserved suffix and unknown prefix
+    (e.g. AC_SUBST(mumble_LDFLAGS) when 'mumble' is not a target).
+  - Fix the definition of AUTOMAKE and ACLOCAL in configure.
+
+New in 1.6:
+* Autoconf 2.52 is required.
+* automake no longer run libtoolize.
+  This is the job of autoreconf (from GNU Autoconf).
+* `dist' generates all the archive flavors, as did `dist-all'.
+* `dist-gzip' generates the Gzip tar file only.
+* Combining Automake Makefile conditionals no longer lead to a combinatorial
+  explosion.  Makefile.in's keep a reasonable size.
+* AM_FUNC_ERROR_AT_LINE, AM_FUNC_STRTOD, AM_FUNC_OBSTACK, AM_PTRDIFF_T
+  are no longer shipped, since Autoconf 2.52 provides them (both as AM_
+  and AC_).
+* `#line' of Lex and Yacc files are properly set.
+* EXTRA_DIST can contain generated directories.
+* Support for dot-less extensions in suffix rules.
+* The part of the distcheck target that checks whether distclean actually
+  cleans all built files has been moved in a separate target, distcleancheck,
+  so it can be overridden easily.
+* `make distcheck' will pass additional options defined in
+  $(DISTCHECK_CONFIGURE_FLAGS) to configure.
+* Fixed CDPATH portability problems, in particular for MacOS X.
+* Fixed handling of nobase_ targets.
+* Fixed support of implicit rules leading to .lo objects.
+* Fixed late inclusion of --add-missing files (e.g. depcomp) in DIST_COMMON
+* Added uninstall-hook target
+* `AC_INIT AM_INIT_AUTOMAKE(tarname,version)' is an obsolete construct.
+  You can now use `AC_INIT(pkgname,version) AM_INIT_AUTOMAKE' instead.
+  (Note that "pkgname" is not "tarname", see the manual for details.)
+  It is also possible to pass a list of global Automake options as
+  first argument to this new form of AM_INIT_AUTOMAKE.
+* Compiler-based assembler is now called `CCAS'; people expected `AS'
+  to be a real assembler.
+* AM_INIT_AUTOMAKE will set STRIP itself when it needs it.  Adding
+  AC_CHECK_TOOL([STRIP], [strip]) manually is no longer required.
+* aclocal and automake are also installed with the version number
+  appended, and some of the install directory names have changed.
+  This lets you have multiple versions installed simultaneously.
+* Support for parsers and lexers in subdirectories.
+
+New in 1.5:
+* Support for `configure.ac'.
+* Support for `else COND', `endif COND' and negated conditions `!COND'.
+* `make dist-all' is much faster.
+* Allows '@' AC_SUBSTs in macro names.
+* Faster AM_INIT_AUTOMAKE (requires update of `missing' script)
+* User-side dependency tracking.  Developers no longer need GNU make
+* Python support
+* Uses DIST_SUBDIRS in some situations when SUBDIRS is conditional
+* Most files are correctly handled if they appear in subdirs
+  For instance, a _DATA file can appear in a subdir
+* GNU tar is no longer required for `make dist'
+* Added support for `dist_' and `nodist_' prefixes
+* Added support for `nobase_' prefix
+* Compiled Java support
+* Support for per-executable and per-library compilation flags
+* Many bug fixes
+
+New in 1.4:
+* Added support for the Fortran 77 programming language.
+* Re-indexed the Automake Texinfo manual.
+* Added `AM_FOOFLAGS' variable for each compiler invocation;
+  e.g. AM_CFLAGS can be used in Makefile.am to set C compiler flags
+* Support for latest autoconf, including support for objext
+* Can now put `.' in SUBDIRS to control build order
+* `include' command and `+=' support for macro assignment
+* Dependency tracking no long susceptible to deleted header file problem
+* Maintainer mode now a conditional.  @MAINT@ is now an anachronism.
+* Bug fixes
+
+New in 1.3:
+* Bug fixes
+* Better Cygwin32 support
+* Support for suffix rules with _SOURCES variables
+* New options `readme-alpha' and `check-news'; Gnits mode sets these
+* @LEXLIB@ no longer required when lex source seen
+  Lex support in `missing', and new lex macro.  Update your missing script.
+* Built-in support for assembly
+* aclocal gives error if `AM_' macro not found
+* Passed YFLAGS, not YACCFLAGS, to yacc
+* AM_PROG_CC_STDC does not have to come before AC_PROG_CPP
+* Dependencies computed as a side effect of compilation
+* Preliminary support for Java
+* DESTDIR support at "make install" time
+* Improved ansi2knr support; you must use the latest ansi2knr.c (included)
+
+New in 1.2:
+* Bug fixes
+* Better DejaGnu support
+* Added no-installinfo option
+* Added Emacs Lisp support
+* Added --no-force option
+* Included `aclocal' program
+* Automake will now generate rules to regenerate aclocal.m4, if appropriate
+* Now uses `AM_' macro names everywhere
+* ansi2knr option can have directory prefix (eg `../lib/ansi2knr')
+  ansi2knr now works correctly on K&R sources
+* Better C++, yacc, lex support
+* Will compute _DEPENDENCIES variables automatically if not supplied
+* Will interpolate $(...) and ${...} when examining contents of a variable
+* .deps files now in build directory, not source directory; dependency
+  handling generally rewritten
+* DATA, MANS and BUILT_SOURCES no longer included in distribution
+* can now put config.h into a subdir
+* Added dist-all target
+* Support for install-info program (see texinfo 3.9)
+* Support for "yacc -d"
+* configure substitutions are automatically discovered and included
+  in generated Makefile.in
+* Special --cygnus mode
+* OMIT_DEPENDENCIES can now hold list of dependencies to be omitted
+  when making distribution.  Some dependencies are auto-ignored.
+* Changed how libraries are specified in _LIBRARIES variable
+* Full libtool support, from Gord Matzigkeit
+* No longer have to explicitly touch stamp-h when using AC_CONFIG_HEADER;
+  AM_CONFIG_HEADER handles it automatically
+* Texinfo output files no longer need .info extension
+* Added `missing' support
+* Cygwin32 support
+* Conditionals in Makefile.am, from Ian Taylor
+
+New in 1.0:
+* Bug fixes
+* distcheck target runs install and installcheck targets
+* Added preliminary support for DejaGnu.
+
+New in 0.33:
+* More bug fixes
+* More checking
+* More libtool fixes from Gord Matzigkeit; libtool support is still
+  preliminary however
+* Added support for jm_MAINTAINER_MODE
+* dist-zip support
+* New "distcheck" target
+
+New in 0.32:
+* Many bug fixes
+* mkinstalldirs and mdate-sh now appear in directory specified by
+  AC_CONFIG_AUX_DIR.
+* Removed DIST_SUBDIRS, DIST_OTHER
+* AC_ARG_PROGRAM only required when an actual program exists
+* dist-hook target now run before distribution packaged up; idea from
+  Dieter Baron.  Other hooks exist, too.
+* Preliminary (unfinished) support for libtool
+* Added short option names.
+* Better "dist" support when gluing together multiple packages
+
+New in 0.31:
+* Bug fixes
+* Documentation updates (many from François Pinard)
+* strictness `normal' now renamed to `foreign'
+* Renamed --install-missing to --add-missing
+* Now handles AC_CONFIG_AUX_DIR
+* Now handles TESTS macro
+* DIST_OTHER renamed to EXTRA_DIST
+* DIST_SUBDIRS is deprecated
+* @ALLOCA@ and @LIBOBJS@ now work in _LDADD variables
+* Better error messages in many cases
+* Program names are canonicalized
+* Added "check" prefix; from Gord Matzigkeit
+
+New in 0.30:
+* Bug fixes
+* configure.in scanner knows about AC_PATH_XTRA, AC_OUTPUT ":" syntax
+* Beginnings of a test suite
+* Automatically adds -I options for $(srcdir), ".", and path to config.h
+* Doesn't print anything when running
+* Beginnings of MAINT_CHARSET support
+* Can specify version in AUTOMAKE_OPTIONS
+* Most errors recognizable by Emacs' M-x next-error
+* Added --verbose option
+* All "primary" variables now obsolete; use EXTRA_PRIMARY to supply
+  configure-generated names
+* Required macros now distributed in aclocal.m4
+* New documentation
+* --strictness=gnu is default
+
+New in 0.29:
+* Many bug fixes
+* More sophisticated configure.in scanning; now understands ALLOCA and
+  LIBOBJS directly, handles AC_CONFIG_HEADER more precisely, etc.
+* TEXINFOS and MANS now obsolete; use info_TEXINFOS and man_MANS instead.
+* CONFIG_HEADER variable now obsolete
+* Can handle multiple Texinfo sources
+* Allow hierarchies deeper than 2.  From Gord Matzigkeit.
+* HEADERS variable no longer needed; now can put .h files directly into
+  foo_SOURCES variable.
+* Automake automatically rebuilds files listed in AC_OUTPUT.  The
+  corresponding ".in" files are included in the distribution.
+
+New in 0.28:
+* Added --gnu and --gnits options
+* More standards checking
+* Bug fixes
+* Cleaned up 'dist' targets
+* Added AUTOMAKE_OPTIONS variable and several options
+* Now scans configure.in to get some information (preliminary)
+
+New in 0.27:
+* Works with Perl 4 again
+
+New in 0.26:
+* Added --install-missing option.
+* Pretty-prints generated macros and rules
+* Comments in Makefile.am are placed more intelligently in Makefile.in
+* Generates .PHONY target
+* Rule or macro in Makefile.am now overrides contents of Automake file
+* Substantial cleanups from François Pinard
+
+New in 0.25:
+* Bug fixes.
+* Works with Perl 4 again.
+
+New in 0.24:
+* New uniform naming scheme.
+* --strictness option
+* Works with Perl 5
+* '.c' files corresponding to '.y' or '.l' files are automatically
+  distributed.
+* Many bug fixes and cleanups
+
+New in 0.23:
+* Allow objects to be conditionally included in libraries via lib_LIBADD.
+
+New in 0.22:
+* Bug fixes in 'clean' code.
+* Now generates 'installdirs' target.
+* man page installation reworked.
+* 'make dist' no longer re-creates all Makefile.in's.
+
+New in 0.21:
+* Reimplemented in Perl
+* Added --amdir option (for debugging)
+* Texinfo support cleaned up.
+* Automatic de-ANSI-fication cleaned up.
+* Cleaned up 'clean' targets.
+
+New in 0.20:
+* Automatic dependency tracking
+* More documentation
+* New variables DATA and PACKAGEDATA
+* SCRIPTS installed using $(INSTALL_SCRIPT)
+* No longer uses double-colon rules
+* Bug fixes
+* Changes in advance of internationalization
+
+-----
+
+Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..fdf25fa
--- /dev/null
+++ b/README
@@ -0,0 +1,68 @@
+This is Automake, a Makefile generator.  It aims to be portable and
+to conform to the GNU Coding Standards for Makefile variables and
+targets.
+
+See the INSTALL file for detailed information about how to configure
+and install Automake.
+
+Automake is a Perl script.  The input files are called Makefile.am.
+The output files are called Makefile.in; they are intended for use
+with Autoconf.  Automake requires certain things to be done in your
+configure.ac.
+
+Automake comes with extensive documentation; please refer to it for
+more details about its purpose, features, and usage patterns.
+
+This package also includes the "aclocal" program, whose purpose is
+to generate an 'aclocal.m4' based on the contents of 'configure.ac'.
+It is useful as an extensible, maintainable mechanism for augmenting
+autoconf.  It is intended that other package authors will write m4
+macros which can be automatically used by aclocal.  The documentation
+for aclocal is currently found in the Automake manual.
+
+Automake has a test suite.  Use "make check" to run it.  For more
+information, see the file t/README.
+
+Automake has a page on the web.  See:
+
+       http://www.gnu.org/software/automake/
+
+Automake also has three mailing lists:
+
+  * automake@gnu.org
+    For general discussions of Automake and its interactions with other
+    configuration/portability tools like Autoconf or Libtool.
+
+  * bug-automake@gnu.org
+    Where to send bug reports and feature requests.
+
+  * automake-patches@gnu.org
+    Where to send patches, and discuss the automake development process
+    and the  design of new features.
+
+To obtain more information about these list, or to subscribe to them,
+refer to <http://www.gnu.org/software/automake/#mailinglists>
+
+New releases are announced to autotools-announce@gnu.org.  If you want to
+be informed, subscribe to that list by following the instructions at
+<http://lists.gnu.org/mailman/listinfo/autotools-announce>.
+
+For any copyright year range specified as YYYY-ZZZZ in this package,
+that the range specifies every single year in that closed interval.
+
+-----
+
+Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/THANKS b/THANKS
new file mode 100644 (file)
index 0000000..01b78c1
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,406 @@
+Automake was originally written by David J. MacKenzie <djm@uunet.uu.net>.
+It would not be what it is today without the invaluable help of these
+people:
+
+Adam J. Richter                 adam@yggdrasil.com
+Adam Mercer                     ramercer@gmail.com
+Adam Sampson                    ats@offog.org
+Adrian Bunk                     bunk@fs.tum.de
+Akim Demaille                   akim@freefriends.org
+Alan Modra                      amodra@bigpond.net.au
+Alex Hornby                     alex@anvil.co.uk
+Alex Unleashed                  unledev@gmail.com
+Alexander Mai                   st002279@hrzpub.tu-darmstadt.de
+Alexander Martens               alexander.martens@gtd.es
+Alexander V. Lukyanov           lav@yars.free.net
+Alexander Turbov                zaufi@sendmail.ru
+Alexandre Duret-Lutz            duret_g@epita.fr
+Alexey Mahotkin                 alexm@hsys.msk.ru
+Alfred M. Szmidt                ams@gnu.org
+Andreas Bergmeier               lcid-fire@gmx.net
+Andreas Buening                 andreas.buening@nexgo.de
+Andreas Köhler                  andi5.py@gmx.net
+Andreas Schwab                  schwab@suse.de
+Andrew Cagney                   cagney@tpgi.com.au
+Andrew Eikum                    aeikum@codeweavers.com
+Andrew Suffield                 asuffield@debian.org
+Andris Pavenis                  pavenis@lanet.lv
+Andy Wingo                      wingo@pobox.com
+Angus Leeming                   a.leeming@ic.ac.uk
+Anthony Green                   green@cygnus.com
+Antonio Diaz Diaz               ant_diaz@teleline.es
+Arkadiusz Miskiewicz            misiek@pld.ORG.PL
+Art Haas                        ahaas@neosoft.com
+Arto C. Nirkko                  anirkko@insel.ch
+Assar Westerlund                assar@sics.se
+Axel Belinfante                 Axel.Belinfante@cs.utwente.nl
+Bas Wijnen                      shevek@fmf.nl
+Ben Pfaff                       blp@cs.standford.edu
+Benoit Sigoure                  tsuna@lrde.epita.fr
+Bernard Giroud                  bernard.giroud@creditlyonnais.ch
+Bernard Urban                   Bernard.Urban@meteo.fr
+Bernd Jendrissek                berndfoobar@users.sourceforge.net
+Bert Wesarg                     bert.wesarg@googlemail.com
+Bill Currie                     bcurrie@tssc.co.nz
+Bill Davidson                   bill@kayhay.com
+Bill Fenner                     fenner@parc.xerox.com
+Bob Friesenhahn                 bfriesen@simple.dallas.tx.us
+Bob Proulx                      rwp@hprwp.fc.hp.com
+Bob Rossi                       bob@brasko.net
+Bobby Jack                      bobbykjack@yahoo.co.uk
+Braden N. McDaniel              braden@endoframe.com
+Brendan O'Dea                   bod@debian.org
+Brian Cameron                   Brian.Cameron@Sun.COM
+Brian Ford                      ford@vss.fsi.com
+Brian Gough                     bjg@network-theory.co.uk
+Brian Jones                     cbj@nortel.net
+Bruce Korb                      bkorb@gnu.org
+Bruno Haible                    haible@ilog.fr
+Carsten Lohrke                  carlo@gentoo.org
+Charles Wilson                  cwilson@ece.gatech.edu
+Chris Hoogendyk                 hoogendyk@bio.umass.edu
+Chris Pickett                   chris.pickett@mail.mcgill.ca
+Chris Provenzano                proven@io.proven.org
+Christian Cornelssen            ccorn@cs.tu-berlin.de
+Christina Gratorp               christina.gratorp@gmail.com
+Claudio Fontana                 sick_soul@yahoo.it
+Clifford Wolf                   clifford@clifford.at
+Dagobert Michelsen              dam@opencsw.org
+Daiki Ueno                      ueno@unixuser.org
+Dalibor Topic                   robilad@kaffe.org
+danbp                           danpb@nospam.postmaster.co.uk
+Daniel Jacobowitz               drow@false.org
+Daniel Kahn Gillmor             dkg@fifthhorseman.net
+Daniel Richard G.               skunk@iskunk.org
+Debarshi Ray                    rishi@gnu.org
+Dave Brolley                    brolley@redhat.com
+Dave Goodell                    goodell@mcs.anl.gov
+Dave Hart                       davehart@gmail.com
+Dave Korn                       dave.korn.cygwin@googlemail.com
+Dave Morrison                   dave@bnl.gov
+David A. Swierczek              swiercze@mr.med.ge.com
+David A. Wheeler                dwheeler@dwheeler.com
+David Byron                     dbyron@dbyron.com
+David Fang                      fang@csl.cornell.edu
+Davyd Madeley                   davyd@fugro-fsi.com.au
+David Pashley                   david@davidpashley.com
+David Zaroski                   cz253@cleveland.Freenet.Edu
+Dean Povey                      dpovey@wedgetail.com
+Dennis J. Linse                 Dennis.J.Linse@SAIC.com
+Dennis Schridde                 devurandom@gmx.net
+Derek R. Price                  derek.price@openavenue.com
+Diab Jerius                     djerius@cfa.harvard.edu
+Didier Cassirame                faded@free.fr
+Dieter Baron                    dillo@stieltjes.smc.univie.ac.at
+Dieter Jurzitza                 DJurzitza@harmanbecker.com
+Дилян Палаузов                  dilyan.palauzov@aegee.org
+Dmitry Mikhin                   dmitrym@acres.com.au
+Dmitry V. Levin                 ldv@altlinux.org
+Doug Evans                      devans@cygnus.com
+Duncan Gibson                   duncan@thermal.esa.int
+Ed Hartnett                     ed@unidata.ucar.edu
+Eleftherios Gkioulekas          lf@amath.washington.edu
+Elena A. Vengerova              helen@oktetlabs.ru
+Elmar Hoffmann                  elho@elho.net
+Elrond                          Elrond@Wunder-Nett.org
+Enrico Scholz                   enrico.scholz@informatik.tu-chemnitz.de
+Erez Zadok                      ezk@cs.columbia.edu
+Eric Blake                      ebb9@byu.net
+Eric Dorland                    eric@debian.org
+Eric Magnien                    emagnien@club-internet.fr
+Eric Siegerman                  erics_97@pobox.com
+Eric Sunshine                   sunshine@sunshineco.com
+Erick Branderhorst              branderh@iaehv.nl
+Erik Lindahl                    E.Lindahl@chem.rug.nl
+Esben Haabendal Soerensen       bart@kom.aau.dk
+Ezra Peisach                    epeisach@MED-XTAL.BU.EDU
+Fabian Alenius                  fabian.alenius@gmail.com
+Federico Simoncelli             fsimonce@redhat.com
+Flavien Astraud                 flav42@yahoo.fr
+Florian Briegel                 briegel@zone42.de
+Francesco Salvestrini           salvestrini@gmail.com
+François Pinard                 pinard@iro.umontreal.ca
+Fred Fish                       fnf@ninemoons.com
+Ganesan Rajagopal               rganesan@novell.com
+Garrett D'Amore                 garrett@qualcomm.com
+Garth Corral                    garthc@inktomi.com
+Gary V Vaughan                  gvaughan@oranda.demon.co.uk
+Geoffrey Keating                geoffk@apple.com
+Glenn Amerine                   glenn@pie.mhsc.org
+Gord Matzigkeit                 gord@gnu.ai.mit.edu
+Gordon Sadler                   gbsadler1@lcisp.com
+Graham Reitz                    grahamreitz@me.com
+Greg A. Woods                   woods@most.weird.com
+Greg Schafer                    gschafer@zip.com.au
+Guido Draheim                   guidod@gmx.de
+Guillermo Ontañón               gontanonext@pandasoftware.es
+Gustavo Carneiro                gjc@inescporto.pt
+Gwenole Beauchesne              gbeauchesne@mandrakesoft.com
+H.J. Lu                         hjl@lucon.org
+H.Merijn Brand                  h.m.brand@hccnet.nl
+Hans Ulrich Niedermann          hun@n-dimensional.de
+Harald Dunkel                   harald@CoWare.com
+Harlan Stenn                    Harlan.Stenn@pfcs.com
+He Li                           tippa000@yahoo.com
+Henrik Frystyk Nielsen          frystyk@w3.org
+Ian Lance Taylor                ian@cygnus.com
+Ignacy Gawedzki                 i@lri.fr
+Илья Н. Голубев                 gin@mo.msk.ru
+Imacat                          imacat@mail.imacat.idv.tw
+Inoue                           inoue@ainet.or.jp
+Jack Kelly                      jack@jackkelly.name
+James Amundson                  amundson@users.sourceforge.net
+James Henstridge                james@daa.com.au
+James R. Van Zandt              jrv@vanzandt.mv.com
+James Youngman                  jay@gnu.org
+Jan Engelhardt                  jengelh@medozas.de
+Janos Farkas                    chexum@shadow.banki.hu
+Jared Davis                     abiword@aiksaurus.com
+Jason DeVinney                  jasondevinney@gmail.com
+Jason Duell                     jcduell@lbl.gov
+Jason Molenda                   crash@cygnus.co.jp
+Javier Jardón                   jjardon@gnome.org
+Jeff Bailey                     Jbailey@phn.ca
+Jeff A. Daily                   jeff.daily@pnl.gov
+Jeff Garzik                     jgarzik@pobox.com
+Jeff Squyres                    jsquyres@lam-mpi.org
+Jens Elkner                     elkner@imsgroup.de
+Jens Krüger                     jens_krueger@physik.tu-muenchen.de
+Jens Petersen                   petersen@redhat.com
+Jeremy Nimmer                   jwnimmer@alum.mit.edu
+Jerome Lovy                     jlovy@multimania.com
+Jerome Santini                  santini@chambord.univ-orleans.fr
+Jesse Chisholm                  jesse@ctc.volant.org
+Jim Meyering                    meyering@na-net.ornl.gov
+Joakim Tjernlund                Joakim.Tjernlund@transmode.se
+Jochen Kuepper                  jochen@uni-duesseldorf.de
+Joel N. Weber II                nemo@koa.iolani.honolulu.hi.us
+Joerg-Martin Schwarz            jms@jms.prima.ruhr.de
+Johan Dahlin                    jdahlin@async.com.br
+Johan Danielsson                joda@pdc.kth.se
+Johannes Nicolai                johannes.nicolai@student.hpi.uni-potsdam.de
+John Calcote                    john.calcote@gmail.com
+John F Trudeau                  JohnTrudeau@firsthealth.com
+John Pierce                     hawkfan@pyrotechnics.com
+John Ratliff                    autoconf@technoplaza.net
+John R. Cary                    cary@txcorp.com
+John W. Coomes                  jcoomes@eng.Sun.COM
+Jonathan Nieder                 jrnieder@gmail.com
+Joseph S. Myers                 joseph@codesourcery.com
+Josh MacDonald                  jmacd@cs.berkeley.edu
+Joshua Cowan                    jcowan@jcowan.reslife.okstate.edu
+js pendry                       js.pendry@msdw.com
+Juergen A. Erhard               jae@laden.ilk.de
+Juergen Keil                    jk@tools.de
+Juergen Leising                 juergen.leising@gmx.de
+Julien Sopena                   julien.sopena@lip6.fr
+Jürg Billeter                   j@bitron.ch
+Karl Berry                      kb@cs.umb.edu
+Karl Heuer                      kwzh@gnu.org
+Kelley Cook                     kcook@gcc.gnu.org
+Kent Boortz                     kent@mysql.com
+Kevin Dalley                    kevin@aimnet.com
+Kevin P. Fleming.               kpfleming@cox.net
+Kevin Ryde                      user42@zip.com.au
+Kevin Street                    street@iname.com
+Klaus Reichl                    Klaus.Reichl@alcatel.at
+Krzysztof Żelechowski           giecrilj@stegny.2a.pl
+L. Peter Deutsch                ghost@aladdin.com
+Ladislav Strojil                Ladislav.Strojil@seznam.cz
+Larry Daniel                    larry@larrybrucedaniel.com
+Larry Jones                     larry.jones@sdrc.com
+Lars Hecking                    lhecking@nmrc.ucc.ie
+Lars J. Aas                     larsa@sim.no
+Laurent Morichetti              laurentm@cup.hp.com
+Leo Davis                       ldavis@fonix.com
+Leonardo Boiko                  leoboiko@conectiva.com.br
+Loulou Pouchet                  loulou@lrde.epita.fr
+Ludovic Courtès                 ludo@gnu.org
+Luo Yi                          luoyi.ly@gmail.com
+Maciej Stachowiak               mstachow@mit.edu
+Maciej W. Rozycki               macro@ds2.pg.gda.pl
+Manu Rouat                      emmanuel.rouat@wanadoo.fr
+Marcus Brinkmann                Marcus.Brinkmann@ruhr-uni-bochum.de
+Marcus G. Daniels               mgd@ute.santafe.edu
+Marius Vollmer                  mvo@zagadka.ping.de
+Marc-Antoine Perennou           Marc-Antoine@Perennou.com
+Mark D. Baushke                 mdb@cvshome.org
+Mark Eichin                     eichin@cygnus.com
+Mark Elbrecht                   snowball3@bigfoot.com
+Mark Galassi                    rosalia@nis.lanl.gov
+Mark Mitchell                   mark@codesourcery.com
+Mark Phillips                   msp@nortelnetworks.com
+Markku Rossi                    mtr@ngs.fi
+Markus Duft                     Markus.Duft@salomon.at
+Markus F.X.J. Oberhumer         k3040e4@wildsau.idv-edu.uni-linz.ac.at
+Martin Bravenboer               martin@cs.uu.nl
+Martin Frydl                    martin@idoox.com
+Martin Waitz                    tali@admingilde.org
+Mathias Doreille                doreille@smr.ch
+Mathias Froehlich               M.Froehlich@science-computing.de
+Mathias Hasselmann              mathias.hasselmann@gmx.de
+Matt Burgess                    matthew@linuxfromscratch.org
+Matt Leach                      mleach@cygnus.com
+Matthew D. Langston             langston@SLAC.Stanford.EDU
+Matthias Andree                 matthias.andree@gmx.de
+Matthias Clasen                 clasen@mathematik.uni-freiburg.de
+Matthias Klose                  doko@ubuntu.com
+Maxim Sinev                     good@goods.ru
+Maynard Johnson                 maynardj@us.ibm.com
+Merijn de Jonge                 M.de.Jonge@cwi.nl
+Michael Brantley                Michael-Brantley@deshaw.com
+Michael Hofmann                 mhofma@googlemail.com
+Michael Ploujnikov              ploujj@gmail.com
+Michel de Ruiter                mdruiter@cs.vu.nl
+Mike Castle                     dalgoda@ix.netcom.com
+Mike Frysinger                  vapier@gentoo.org
+Mike Nolta                      mrnolta@princeton.edu
+Miles Bader                     miles@ccs.mt.nec.co.jp
+Miloslav Trmac                  trmac@popelka.ms.mff.cuni.cz
+Miodrag Vallat                  miodrag@ifrance.com
+Mirko Streckenbach              strecken@infosun.fmi.uni-passau.de
+Miroslaw Dobrzanski-Neumann     mne@mosaic-ag.com
+Morten Eriksen                  mortene@sim.no
+Motoyuki Kasahara               m-kasahr@sra.co.jp
+Nathanael Nerode                neroden@twcny.rr.com
+Nelson H. F. Beebe              beebe@math.utah.edu
+Nicholas Wourms                 nwourms@netscape.net
+Nick Bowler                     nbowler@elliptictech.com
+Nicolas Joly                    njoly@pasteur.fr
+Nicolas Thiery                  nthiery@Icare.mines.edu
+NightStrike                     nightstrike@gmail.com
+Nik A. Melchior                 nam1@cse.wustl.edu
+Nikolai Weibull                 now@bitwi.se
+NISHIDA Keisuke                 knishida@nn.iij4u.or.jp
+Noah Friedman                   friedman@gnu.ai.mit.edu
+Norman Gray                     norman@astro.gla.ac.uk
+Nyul Laszlo                     nyul@sol.cc.u-szeged.hu
+OKUJI Yoshinori                 okuji@kuicr.kyoto-u.ac.jp
+Olivier Fourdan                 fourdan@cena.fr
+Olivier Louchart-Fletcher       olivier@zipworld.com.au
+Olly Betts                      olly@muscat.co.uk
+Oren Ben-Kiki                   oren@ben-kiki.org
+Owen Taylor                     otaylor@redhat.com
+Panther Martin                  mrsmiley98@lycos.com
+Patrick Welche                  prlw1@newn.cam.ac.uk
+Patrik Weiskircher              me@justp.at
+Paul Berrevoets                 paul@swi.com
+Paul D. Smith                   psmith@BayNetworks.COM
+Paul Eggert                     eggert@twinsun.com
+Paul Jarc                       prj@po.cwru.edu
+Paul Lunau                      temp@lunau.me.uk
+Paul Martinolich                martinol@datasync.com
+Paul Thomas                     PTHOMAS@novell.com
+Pavel Roskin                    pavel_roskin@geocities.com
+Pavel Sanda                     ps@twin.jikos.cz
+Per Bothner                     bothner@cygnus.com
+Per Cederqvist                  ceder@lysator.liu.se
+Per Oyvind Hvidsten             poeh@enter.vg
+Peter Breitenlohner             peb@mppmu.mpg.de
+Peter Eisentraut                peter_e@gmx.net
+Peter Gavin                     pgavin@debaser.kicks-ass.org
+Peter Johansson                 trojkan@gmail.com
+Peter Mattis                    petm@scam.XCF.Berkeley.EDU
+Peter Muir                      iyhi@yahoo.com
+Peter O'Gorman                  peter@pogma.com
+Peter Rosin                     peda@lysator.liu.se
+Peter Seiderer                  seiderer123@ciselant.de
+Petter Reinholdtsen             pere@hungry.com
+Petteri Räty                    betelgeuse@gentoo.org
+Phil Edwards                    phil@jaj.com
+Phil Nelson                     phil@cs.wwu.edu
+Philip Fong                     pwlfong@users.sourceforge.net
+Philip S Tellis                 philip@ncst.ernet.in
+Пухальский Юрий Андреевич       pooh@cryptopro.ru
+Quentin Glidic                  sardemff7+gnu@sardemff7.net
+Rainer Orth                     ro@techfak.uni-bielefeld.de
+Rafael Laboissiere              laboissiere@psy.mpg.de
+Rainer Tammer                   tammer@tammer.net
+Raja R Harinath                 harinath@cs.umn.edu
+Ralf Corsepius                  corsepiu@faw.uni-ulm.de
+Ralf Menzel                     menzel@ls6.cs.uni-dortmund.de
+Ralf Wildenhues                 Ralf.Wildenhues@gmx.de
+Ralph Schleicher                rs@purple.UL.BaWue.DE
+Ramón García Fernández          ramon@jl1.quim.ucm.es
+Reuben Thomas                   rrt@sc3d.org
+Rich Wales                      richw@webcom.com
+Richard Boulton                 richard@tartarus.org
+Richard Dawe                    rich@phekda.freeserve.co.uk
+Rob Savoye                      rob@cygnus.com
+Robert Bihlmeyer                robbe@orcus.priv.at
+Robert Boehne                   rboehne@ricardo-us.com
+Robert Collins                  robert.collins@itdomain.com.au
+Robert Swafford                 robert.swafford@l-3com.com
+Roberto Bagnara                 bagnara@cs.unipr.it
+Roman Fietze                    roman.fietze@telemotive.de
+Ronald Landheer                 ronald@landheer.com
+Roumen Petrov                   bugtrack@roumenpetrov.info
+Russ Allbery                    rra@stanford.edu
+Rusty Ballinger                 rusty@rlyeh.engr.sgi.com
+Ryan Lortie                     desrt@desrt.ca
+Ryan T. Sammartino              ryants@shaw.ca
+Sam Hocevar                     sam@zoy.org
+Sam Sirlin                      sam@kalessin.jpl.nasa.gov
+Sam Steingold                   sds@gnu.org
+Sander Niemeijer                niemeijer@science-and-technology.nl
+Santiago Vila                   sanvila@unex.es
+Scott James Remnant             scott@netsplit.com
+Sergey Poznyakoff               gray@gnu.org.ua
+Sergey Vlasov                   vsu@mivlgu.murom.ru
+Seth Alves                      alves@hungry.com
+Shannon L. Brown                slbrow@sandia.gov
+Shuhei Amakawa                  sa264@cam.ac.uk
+Shigio Yamaguchi                shigio@tamacom.com
+Simon Josefsson                 jas@extundo.com
+Simon Richter                   sjr@debian.org
+Stefan Nordhausen               nordhaus@informatik.hu-berlin.de
+Stefano Lattarini               stefano.lattarini@gmail.com
+Stepan Kasal                    kasal@math.cas.cz
+Steve M. Robbins                steve@nyongwa.montreal.qc.ca
+Steve Goetze                    goetze@dovetail.com
+Steven Drake                    sbd@NetBSD.org
+Steven G. Johnson               stevenj@alum.mit.edu
+Sven Verdoolaege                skimo@kotnet.org
+Tamara L. Dahlgren              dahlgren1@llnl.gov
+Tatu Ylonen                     ylo@ssh.fi
+Teun Burgers                    burgers@ecn.nl
+The Crimson Binome              steve@nyongwa.montreal.qc.ca
+Theodoros V. Kalamatianos       thkala@gmail.com
+Thien-Thi Nguyen                ttn@glug.org
+Thomas Fitzsimmons              fitzsim@redhat.com
+Thomas Gagne                    tgagne@ix.netcom.com
+Thomas Klausner                 tk@giga.or.at
+Thomas Morgan                   tmorgan@pobox.com
+Thomas Schwinge                 tschwinge@gnu.org
+Thomas Tanner                   tanner@ffii.org
+Toralf Förster                  toralf.foerster@gmx.de
+Tim Goodwin                     tjg@star.le.ac.uk
+Tim Landscheidt                 tim@tim-landscheidt.de
+Tim Mooney                      mooney@dogbert.cc.ndsu.NoDak.edu
+Tim Retout                      diocles@debian.org
+Tim Rice                        tim@multitalents.net
+Tim Van Holder                  tim.van.holder@pandora.be
+Toshio Kuratomi                 toshio@tiki-lounge.com
+Tom Epperly                     tepperly@llnl.gov
+Ulrich Drepper                  drepper@gnu.ai.mit.edu
+Ulrich Eckhardt                 eckhardt@satorlaser.com
+Václav Haisman                  V.Haisman@sh.cvut.cz
+Vadim Zeitlin                   Vadim.zeitlin@dptmaths.ens-cachan.fr
+Vincent Lefevre                 vincent@vinc17.org
+Vladimir Serbinenko             phcoder@gmail.com
+Volker Boerchers                vboerchers@tecon.de
+Werner John                     john@oswf.de
+Werner Koch                     wk@isil.d.shuttle.de
+Werner Lemberg                  wl@gnu.org
+William Pursell                 bill.pursell@gmail.com
+William S Fulton                wsf@fultondesigns.co.uk
+Yann Droneaud                   ydroneaud@meuh.eu.org
+Younes Younes                   younes@cs.tu-berlin.de
+Zack Weinberg                   zackw@panix.com
+Zbigniew Jędrzejewski-Szmek     zbyszek@in.waw.pl
+Zoltan Rado                     z.rado@chello.hu
+
+;; Local Variables:
+;; mode: text
+;; coding: utf-8
+;; End:
diff --git a/aclocal.in b/aclocal.in
new file mode 100644 (file)
index 0000000..e8855d5
--- /dev/null
@@ -0,0 +1,1118 @@
+#!@PERL@ -w
+# -*- perl -*-
+# @configure_input@
+
+eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac'
+    if 0;
+
+# aclocal - create aclocal.m4 by scanning configure.ac
+
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Written by Tom Tromey <tromey@redhat.com>, and
+# Alexandre Duret-Lutz <adl@gnu.org>.
+
+BEGIN
+{
+  my $perllibdir = $ENV{'perllibdir'} || '@datadir@/@PACKAGE@-@APIVERSION@';
+  unshift @INC, (split '@PATH_SEPARATOR@', $perllibdir);
+}
+
+use strict;
+
+use Automake::Config;
+use Automake::General;
+use Automake::Configure_ac;
+use Automake::Channels;
+use Automake::ChannelDefs;
+use Automake::XFile;
+use Automake::FileUtils;
+use File::Basename;
+use File::Path ();
+
+# Some globals.
+
+# We do not operate in threaded mode.
+$perl_threads = 0;
+
+# Include paths for searching macros.  We search macros in this order:
+# user-supplied directories first, then the directory containing the
+# automake macros, and finally the system-wide directories for
+# third-party macros.
+# @user_includes can be augmented with -I.
+# @automake_includes can be reset with the '--automake-acdir' option.
+# @system_includes can be augmented with the 'dirlist' file or the
+# ACLOCAL_PATH environment variable, and reset with the '--system-acdir'
+# option.
+my @user_includes = ();
+my @automake_includes = ("@datadir@/aclocal-$APIVERSION");
+my @system_includes = ('@datadir@/aclocal');
+
+# Whether we should copy M4 file in $user_includes[0].
+my $install = 0;
+
+# --diff
+my @diff_command;
+
+# --dry-run
+my $dry_run = 0;
+
+# configure.ac or configure.in.
+my $configure_ac;
+
+# Output file name.
+my $output_file = 'aclocal.m4';
+
+# Option --force.
+my $force_output = 0;
+
+# Modification time of the youngest dependency.
+my $greatest_mtime = 0;
+
+# Which macros have been seen.
+my %macro_seen = ();
+
+# Remember the order into which we scanned the files.
+# It's important to output the contents of aclocal.m4 in the opposite order.
+# (Definitions in first files we have scanned should override those from
+# later files.  So they must appear last in the output.)
+my @file_order = ();
+
+# Map macro names to file names.
+my %map = ();
+
+# Ditto, but records the last definition of each macro as returned by --trace.
+my %map_traced_defs = ();
+
+# Map basenames to macro names.
+my %invmap = ();
+
+# Map file names to file contents.
+my %file_contents = ();
+
+# Map file names to file types.
+my %file_type = ();
+use constant FT_USER => 1;
+use constant FT_AUTOMAKE => 2;
+use constant FT_SYSTEM => 3;
+
+# Map file names to included files (transitively closed).
+my %file_includes = ();
+
+# Files which have already been added.
+my %file_added = ();
+
+# Files that have already been scanned.
+my %scanned_configure_dep = ();
+
+# Serial numbers, for files that have one.
+# The key is the basename of the file,
+# the value is the serial number represented as a list.
+my %serial = ();
+
+# Matches a macro definition.
+#   AC_DEFUN([macroname], ...)
+# or
+#   AC_DEFUN(macroname, ...)
+# When macroname is '['-quoted , we accept any character in the name,
+# except ']'.  Otherwise macroname stops on the first ']', ',', ')',
+# or '\n' encountered.
+my $ac_defun_rx =
+  "(?:AU_ALIAS|A[CU]_DEFUN|AC_DEFUN_ONCE)\\((?:\\[([^]]+)\\]|([^],)\n]+))";
+
+# Matches an AC_REQUIRE line.
+my $ac_require_rx = "AC_REQUIRE\\((?:\\[([^]]+)\\]|([^],)\n]+))\\)";
+
+# Matches an m4_include line.
+my $m4_include_rx = "(m4_|m4_s|s)include\\((?:\\[([^]]+)\\]|([^],)\n]+))\\)";
+
+# Match a serial number.
+my $serial_line_rx = '^#\s*serial\s+(\S*)';
+my $serial_number_rx = '^\d+(?:\.\d+)*$';
+
+# Autoconf version
+# Set by trace_used_macros.
+my $ac_version;
+
+# If set, names a temporary file that must be erased on abnormal exit.
+my $erase_me;
+
+################################################################
+
+# Prototypes for all subroutines.
+
+sub unlink_tmp (;$);
+sub xmkdir_p ($);
+sub check_acinclude ();
+sub reset_maps ();
+sub install_file ($$);
+sub list_compare (\@\@);
+sub scan_m4_dirs ($@);
+sub scan_m4_files ();
+sub add_macro ($);
+sub scan_configure_dep ($);
+sub add_file ($);
+sub scan_file ($$$);
+sub strip_redundant_includes (%);
+sub trace_used_macros ();
+sub scan_configure ();
+sub write_aclocal ($@);
+sub usage ($);
+sub version ();
+sub handle_acdir_option ($$);
+sub parse_arguments ();
+sub parse_ACLOCAL_PATH ();
+
+################################################################
+
+# Erase temporary file ERASE_ME.  Handle signals.
+sub unlink_tmp (;$)
+{
+  my ($sig) = @_;
+
+  if ($sig)
+    {
+      verb "caught SIG$sig, bailing out";
+    }
+  if (defined $erase_me && -e $erase_me && !unlink ($erase_me))
+    {
+      fatal "could not remove '$erase_me': $!";
+    }
+  undef $erase_me;
+
+  # reraise default handler.
+  if ($sig)
+    {
+      $SIG{$sig} = 'DEFAULT';
+      kill $sig => $$;
+    }
+}
+
+$SIG{'INT'} = $SIG{'TERM'} = $SIG{'QUIT'} = $SIG{'HUP'} = 'unlink_tmp';
+END { unlink_tmp }
+
+sub xmkdir_p ($)
+{
+  my $dir = shift;
+  local $@ = undef;
+  return
+    if -d $dir or eval { File::Path::mkpath $dir };
+  chomp $@;
+  $@ =~ s/\s+at\s.*\bline\s\d+.*$//;
+  fatal "could not create directory '$dir': $@";
+}
+
+# Check macros in acinclude.m4.  If one is not used, warn.
+sub check_acinclude ()
+{
+  foreach my $key (keys %map)
+    {
+      # FIXME: should print line number of acinclude.m4.
+      msg ('syntax', "macro '$key' defined in acinclude.m4 but never used")
+       if $map{$key} eq 'acinclude.m4' && ! exists $macro_seen{$key};
+    }
+}
+
+sub reset_maps ()
+{
+  $greatest_mtime = 0;
+  %macro_seen = ();
+  @file_order = ();
+  %map = ();
+  %map_traced_defs = ();
+  %file_contents = ();
+  %file_type = ();
+  %file_includes = ();
+  %file_added = ();
+  %scanned_configure_dep = ();
+  %invmap = ();
+  %serial = ();
+  undef &search;
+}
+
+# install_file ($SRC, $DESTDIR)
+sub install_file ($$)
+{
+  my ($src, $destdir) = @_;
+  my $dest = $destdir . "/" . basename ($src);
+  my $diff_dest;
+
+  verb "installing $src to $dest";
+
+  if ($force_output
+      || !exists $file_contents{$dest}
+      || $file_contents{$src} ne $file_contents{$dest})
+    {
+      if (-e $dest)
+       {
+         msg 'note', "overwriting '$dest' with '$src'";
+         $diff_dest = $dest;
+       }
+      else
+       {
+         msg 'note', "installing '$dest' from '$src'";
+       }
+
+      if (@diff_command)
+       {
+         if (! defined $diff_dest)
+           {
+             # $dest does not exist.  We create an empty one just to
+             # run diff, and we erase it afterward.  Using the real
+             # the destination file (rather than a temporary file) is
+             # good when diff is run with options that display the
+             # file name.
+             #
+             # If creating $dest fails, fall back to /dev/null.  At
+             # least one diff implementation (Tru64's) cannot deal
+             # with /dev/null.  However working around this is not
+             # worth the trouble since nobody run aclocal on a
+             # read-only tree anyway.
+             $erase_me = $dest;
+             my $f = new IO::File "> $dest";
+             if (! defined $f)
+               {
+                 undef $erase_me;
+                 $diff_dest = '/dev/null';
+               }
+             else
+               {
+                 $diff_dest = $dest;
+                 $f->close;
+               }
+           }
+         my @cmd = (@diff_command, $diff_dest, $src);
+         $! = 0;
+         verb "running: @cmd";
+         my $res = system (@cmd);
+         Automake::FileUtils::handle_exec_errors "@cmd", 1
+           if $res;
+         unlink_tmp;
+       }
+      elsif (!$dry_run)
+       {
+          xmkdir_p ($destdir);
+         xsystem ('cp', $src, $dest);
+       }
+    }
+}
+
+# Compare two lists of numbers.
+sub list_compare (\@\@)
+{
+  my @l = @{$_[0]};
+  my @r = @{$_[1]};
+  while (1)
+    {
+      if (0 == @l)
+       {
+         return (0 == @r) ? 0 : -1;
+       }
+      elsif (0 == @r)
+       {
+         return 1;
+       }
+      elsif ($l[0] < $r[0])
+       {
+         return -1;
+       }
+      elsif ($l[0] > $r[0])
+       {
+         return 1;
+       }
+      shift @l;
+      shift @r;
+    }
+}
+
+################################################################
+
+# scan_m4_dirs($TYPE, @DIRS)
+# --------------------------
+# Scan all M4 files installed in @DIRS for new macro definitions.
+# Register each file as of type $TYPE (one of the FT_* constants).
+my $first_user_m4dir = 1;
+sub scan_m4_dirs ($@)
+{
+  my ($type, @dirlist) = @_;
+
+  foreach my $m4dir (@dirlist)
+    {
+      if (! opendir (DIR, $m4dir))
+       {
+         if ($install && $type == FT_USER && $first_user_m4dir)
+            {
+              # We will try to create this directory later, so don't
+              # complain if it doesn't exist.
+              # TODO: maybe we should avoid complaining only if errno
+              # is ENONENT?
+              $first_user_m4dir = 0;
+              next;
+            }
+         fatal "couldn't open directory '$m4dir': $!";
+       }
+
+      # We reverse the directory contents so that foo2.m4 gets
+      # used in preference to foo1.m4.
+      foreach my $file (reverse sort grep (! /^\./, readdir (DIR)))
+       {
+         # Only examine .m4 files.
+         next unless $file =~ /\.m4$/;
+
+         # Skip some files when running out of srcdir.
+         next if $file eq 'aclocal.m4';
+
+         my $fullfile = File::Spec->canonpath ("$m4dir/$file");
+         scan_file ($type, $fullfile, 'aclocal');
+       }
+      closedir (DIR);
+    }
+}
+
+# Scan all the installed m4 files and construct a map.
+sub scan_m4_files ()
+{
+  # First, scan configure.ac.  It may contain macro definitions,
+  # or may include other files that define macros.
+  scan_file (FT_USER, $configure_ac, 'aclocal');
+
+  # Then, scan acinclude.m4 if it exists.
+  if (-f 'acinclude.m4')
+    {
+      scan_file (FT_USER, 'acinclude.m4', 'aclocal');
+    }
+
+  # Finally, scan all files in our search paths.
+  scan_m4_dirs (FT_USER, @user_includes);
+  scan_m4_dirs (FT_AUTOMAKE, @automake_includes);
+  scan_m4_dirs (FT_SYSTEM, @system_includes);
+
+  # Construct a new function that does the searching.  We use a
+  # function (instead of just evaluating $search in the loop) so that
+  # "die" is correctly and easily propagated if run.
+  my $search = "sub search {\nmy \$found = 0;\n";
+  foreach my $key (reverse sort keys %map)
+    {
+      $search .= ('if (/\b\Q' . $key . '\E(?!\w)/) { add_macro ("' . $key
+                 . '"); $found = 1; }' . "\n");
+    }
+  $search .= "return \$found;\n};\n";
+  eval $search;
+  prog_error "$@\n search is $search" if $@;
+}
+
+################################################################
+
+# Add a macro to the output.
+sub add_macro ($)
+{
+  my ($macro) = @_;
+
+  # Ignore unknown required macros.  Either they are not really
+  # needed (e.g., a conditional AC_REQUIRE), in which case aclocal
+  # should be quiet, or they are needed and Autoconf itself will
+  # complain when we trace for macro usage later.
+  return unless defined $map{$macro};
+
+  verb "saw macro $macro";
+  $macro_seen{$macro} = 1;
+  add_file ($map{$macro});
+}
+
+# scan_configure_dep ($file)
+# --------------------------
+# Scan a configure dependency (configure.ac, or separate m4 files)
+# for uses of known macros and AC_REQUIREs of possibly unknown macros.
+# Recursively scan m4_included files.
+sub scan_configure_dep ($)
+{
+  my ($file) = @_;
+  # Do not scan a file twice.
+  return ()
+    if exists $scanned_configure_dep{$file};
+  $scanned_configure_dep{$file} = 1;
+
+  my $mtime = mtime $file;
+  $greatest_mtime = $mtime if $greatest_mtime < $mtime;
+
+  my $contents = exists $file_contents{$file} ?
+    $file_contents{$file} : contents $file;
+
+  my $line = 0;
+  my @rlist = ();
+  my @ilist = ();
+  foreach (split ("\n", $contents))
+    {
+      ++$line;
+      # Remove comments from current line.
+      s/\bdnl\b.*$//;
+      s/\#.*$//;
+      # Avoid running all the following regexes on white lines.
+      next if /^\s*$/;
+
+      while (/$m4_include_rx/go)
+       {
+         my $ifile = $2 || $3;
+         # Skip missing 'sinclude'd files.
+         next if $1 ne 'm4_' && ! -f $ifile;
+         push @ilist, $ifile;
+       }
+
+      while (/$ac_require_rx/go)
+       {
+         push (@rlist, $1 || $2);
+       }
+
+      # The search function is constructed dynamically by
+      # scan_m4_files.  The last parenthetical match makes sure we
+      # don't match things that look like macro assignments or
+      # AC_SUBSTs.
+      if (! &search && /(^|\s+)(AM_[A-Z0-9_]+)($|[^\]\)=A-Z0-9_])/)
+       {
+         # Macro not found, but AM_ prefix found.
+         # Make this just a warning, because we do not know whether
+         # the macro is actually used (it could be called conditionally).
+         msg ('unsupported', "$file:$line",
+              "macro '$2' not found in library");
+       }
+    }
+
+  add_macro ($_) foreach (@rlist);
+  scan_configure_dep ($_) foreach @ilist;
+}
+
+# add_file ($FILE)
+# ----------------
+# Add $FILE to output.
+sub add_file ($)
+{
+  my ($file) = @_;
+
+  # Only add a file once.
+  return if ($file_added{$file});
+  $file_added{$file} = 1;
+
+  scan_configure_dep $file;
+}
+
+# Point to the documentation for underquoted AC_DEFUN only once.
+my $underquoted_manual_once = 0;
+
+# scan_file ($TYPE, $FILE, $WHERE)
+# --------------------------------
+# Scan a single M4 file ($FILE), and all files it includes.
+# Return the list of included files.
+# $TYPE is one of FT_USER, FT_AUTOMAKE, or FT_SYSTEM, depending
+# on where the file comes from.
+# $WHERE is the location to use in the diagnostic if the file
+# does not exist.
+sub scan_file ($$$)
+{
+  my ($type, $file, $where) = @_;
+  my $basename = basename $file;
+
+  # Do not scan the same file twice.
+  return @{$file_includes{$file}} if exists $file_includes{$file};
+  # Prevent potential infinite recursion (if two files include each other).
+  return () if exists $file_contents{$file};
+
+  unshift @file_order, $file;
+
+  $file_type{$file} = $type;
+
+  fatal "$where: file '$file' does not exist" if ! -e $file;
+
+  my $fh = new Automake::XFile $file;
+  my $contents = '';
+  my @inc_files = ();
+  my %inc_lines = ();
+
+  my $defun_seen = 0;
+  my $serial_seen = 0;
+  my $serial_older = 0;
+
+  while ($_ = $fh->getline)
+    {
+      # Ignore '##' lines.
+      next if /^##/;
+
+      $contents .= $_;
+      my $line = $_;
+
+      if ($line =~ /$serial_line_rx/go)
+       {
+         my $number = $1;
+         if ($number !~ /$serial_number_rx/go)
+           {
+             msg ('syntax', "$file:$.",
+                  "ill-formed serial number '$number', "
+                  . "expecting a version string with only digits and dots");
+           }
+         elsif ($defun_seen)
+           {
+             # aclocal removes all definitions from M4 file with the
+             # same basename if a greater serial number is found.
+             # Encountering a serial after some macros will undefine
+             # these macros...
+             msg ('syntax', "$file:$.",
+                  'the serial number must appear before any macro definition');
+           }
+         # We really care about serials only for non-automake macros
+         # and when --install is used.  But the above diagnostics are
+         # made regardless of this, because not using --install is
+         # not a reason not the fix macro files.
+         elsif ($install && $type != FT_AUTOMAKE)
+           {
+             $serial_seen = 1;
+             my @new = split (/\./, $number);
+
+             verb "$file:$.: serial $number";
+
+             if (!exists $serial{$basename}
+                 || list_compare (@new, @{$serial{$basename}}) > 0)
+               {
+                 # Delete any definition we knew from the old macro.
+                 foreach my $def (@{$invmap{$basename}})
+                   {
+                     verb "$file:$.: ignoring previous definition of $def";
+                     delete $map{$def};
+                   }
+                 $invmap{$basename} = [];
+                 $serial{$basename} = \@new;
+               }
+             else
+               {
+                 $serial_older = 1;
+               }
+           }
+       }
+
+      # Remove comments from current line.
+      # Do not do it earlier, because the serial line is a comment.
+      $line =~ s/\bdnl\b.*$//;
+      $line =~ s/\#.*$//;
+
+      while ($line =~ /$ac_defun_rx/go)
+       {
+         $defun_seen = 1;
+         if (! defined $1)
+           {
+             msg ('syntax', "$file:$.", "underquoted definition of $2"
+                  . "\n  run info Automake 'Extending aclocal'\n"
+                  . "  or see http://www.gnu.org/software/automake/manual/"
+                  . "automake.html#Extending-aclocal")
+               unless $underquoted_manual_once;
+             $underquoted_manual_once = 1;
+           }
+
+         # If this macro does not have a serial and we have already
+         # seen a macro with the same basename earlier, we should
+         # ignore the macro (don't exit immediately so we can still
+         # diagnose later #serial numbers and underquoted macros).
+         $serial_older ||= ($type != FT_AUTOMAKE
+                            && !$serial_seen && exists $serial{$basename});
+
+         my $macro = $1 || $2;
+         if (!$serial_older && !defined $map{$macro})
+           {
+             verb "found macro $macro in $file: $.";
+             $map{$macro} = $file;
+             push @{$invmap{$basename}}, $macro;
+           }
+         else
+           {
+             # Note: we used to give an error here if we saw a
+             # duplicated macro.  However, this turns out to be
+             # extremely unpopular.  It causes actual problems which
+             # are hard to work around, especially when you must
+             # mix-and-match tool versions.
+             verb "ignoring macro $macro in $file: $.";
+           }
+       }
+
+      while ($line =~ /$m4_include_rx/go)
+       {
+         my $ifile = $2 || $3;
+         # Skip missing 'sinclude'd files.
+         next if $1 ne 'm4_' && ! -f $ifile;
+         push (@inc_files, $ifile);
+         $inc_lines{$ifile} = $.;
+       }
+    }
+
+  # Ignore any file that has an old serial (or no serial if we know
+  # another one with a serial).
+  return ()
+    if ($serial_older ||
+       ($type != FT_AUTOMAKE && !$serial_seen && exists $serial{$basename}));
+
+  $file_contents{$file} = $contents;
+
+  # For some reason I don't understand, it does not work
+  # to do "map { scan_file ($_, ...) } @inc_files" below.
+  # With Perl 5.8.2 it undefines @inc_files.
+  my @copy = @inc_files;
+  my @all_inc_files = (@inc_files,
+                      map { scan_file ($type, $_,
+                                       "$file:$inc_lines{$_}") } @copy);
+  $file_includes{$file} = \@all_inc_files;
+  return @all_inc_files;
+}
+
+# strip_redundant_includes (%FILES)
+# ---------------------------------
+# Each key in %FILES is a file that must be present in the output.
+# However some of these files might already include other files in %FILES,
+# so there is no point in including them another time.
+# This removes items of %FILES which are already included by another file.
+sub strip_redundant_includes (%)
+{
+  my %files = @_;
+
+  # Always include acinclude.m4, even if it does not appear to be used.
+  $files{'acinclude.m4'} = 1 if -f 'acinclude.m4';
+  # File included by $configure_ac are redundant.
+  $files{$configure_ac} = 1;
+
+  # Files at the end of @file_order should override those at the beginning,
+  # so it is important to preserve these trailing files.  We can remove
+  # a file A if it is going to be output before a file B that includes
+  # file A, not the converse.
+  foreach my $file (reverse @file_order)
+    {
+      next unless exists $files{$file};
+      foreach my $ifile (@{$file_includes{$file}})
+       {
+         next unless exists $files{$ifile};
+         delete $files{$ifile};
+         verb "$ifile is already included by $file";
+       }
+    }
+
+  # configure.ac is implicitly included.
+  delete $files{$configure_ac};
+
+  return %files;
+}
+
+sub trace_used_macros ()
+{
+  my %files = map { $map{$_} => 1 } keys %macro_seen;
+  %files = strip_redundant_includes %files;
+
+  my $traces = ($ENV{AUTOM4TE} || '@am_AUTOM4TE@');
+  $traces .= " --language Autoconf-without-aclocal-m4 ";
+  # All candidate files.
+  $traces .= join (' ',
+                  (map { "'$_'" }
+                   (grep { exists $files{$_} } @file_order))) . " ";
+  # All candidate macros.
+  $traces .= join (' ',
+                  (map { "--trace='$_:\$f::\$n::\$1'" }
+                   ('AC_DEFUN',
+                    'AC_DEFUN_ONCE',
+                    'AU_DEFUN',
+                    '_AM_AUTOCONF_VERSION')),
+                  # Do not trace $1 for all other macros as we do
+                  # not need it and it might contains harmful
+                  # characters (like newlines).
+                  (map { "--trace='$_:\$f::\$n'" } (keys %macro_seen)));
+
+  verb "running $traces $configure_ac";
+
+  my $tracefh = new Automake::XFile ("$traces $configure_ac |");
+
+  my %traced = ();
+
+  while ($_ = $tracefh->getline)
+    {
+      chomp;
+      my ($file, $macro, $arg1) = split (/::/);
+
+      $traced{$macro} = 1 if exists $macro_seen{$macro};
+
+      $map_traced_defs{$arg1} = $file
+       if ($macro eq 'AC_DEFUN'
+           || $macro eq 'AC_DEFUN_ONCE'
+           || $macro eq 'AU_DEFUN');
+
+      $ac_version = $arg1 if $macro eq '_AM_AUTOCONF_VERSION';
+    }
+
+  $tracefh->close;
+
+  return %traced;
+}
+
+sub scan_configure ()
+{
+  # Make sure we include acinclude.m4 if it exists.
+  if (-f 'acinclude.m4')
+    {
+      add_file ('acinclude.m4');
+    }
+  scan_configure_dep ($configure_ac);
+}
+
+################################################################
+
+# Write output.
+# Return 0 iff some files were installed locally.
+sub write_aclocal ($@)
+{
+  my ($output_file, @macros) = @_;
+  my $output = '';
+
+  my %files = ();
+  # Get the list of files containing definitions for the macros used.
+  # (Filter out unused macro definitions with $map_traced_defs.  This
+  # can happen when an Autoconf macro is conditionally defined:
+  # aclocal sees the potential definition, but this definition is
+  # actually never processed and the Autoconf implementation is used
+  # instead.)
+  for my $m (@macros)
+    {
+      $files{$map{$m}} = 1
+       if (exists $map_traced_defs{$m}
+           && $map{$m} eq $map_traced_defs{$m});
+    }
+  # Do not explicitly include a file that is already indirectly included.
+  %files = strip_redundant_includes %files;
+
+  my $installed = 0;
+
+  for my $file (grep { exists $files{$_} } @file_order)
+    {
+      # Check the time stamp of this file, and of all files it includes.
+      for my $ifile ($file, @{$file_includes{$file}})
+       {
+         my $mtime = mtime $ifile;
+         $greatest_mtime = $mtime if $greatest_mtime < $mtime;
+       }
+
+      # If the file to add looks like outside the project, copy it
+      # to the output.  The regex catches filenames starting with
+      # things like '/', '\', or 'c:\'.
+      if ($file_type{$file} != FT_USER
+         || $file =~ m,^(?:\w:)?[\\/],)
+       {
+         if (!$install || $file_type{$file} != FT_SYSTEM)
+           {
+             # Copy the file into aclocal.m4.
+             $output .= $file_contents{$file} . "\n";
+           }
+         else
+           {
+             # Install the file (and any file it includes).
+             my $dest;
+             for my $ifile (@{$file_includes{$file}}, $file)
+               {
+                 install_file ($ifile, $user_includes[0]);
+               }
+             $installed = 1;
+           }
+       }
+      else
+       {
+         # Otherwise, simply include the file.
+         $output .= "m4_include([$file])\n";
+       }
+    }
+
+  if ($installed)
+    {
+      verb "running aclocal anew, because some files were installed locally";
+      return 0;
+    }
+
+  # Nothing to output?!
+  # FIXME: Shouldn't we diagnose this?
+  return 1 if ! length ($output);
+
+  if ($ac_version)
+    {
+      # Do not use "$output_file" here for the same reason we do not
+      # use it in the header below.  autom4te will output the name of
+      # the file in the diagnostic anyway.
+      $output = "m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [$ac_version],,
+[m4_warning([this file was generated for autoconf $ac_version.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+$output";
+    }
+
+  # We used to print "# $output_file generated automatically etc."  But
+  # this creates spurious differences when using autoreconf.  Autoreconf
+  # creates aclocal.m4t and then rename it to aclocal.m4, but the
+  # rebuild rules generated by Automake create aclocal.m4 directly --
+  # this would gives two ways to get the same file, with a different
+  # name in the header.
+  $output = "# generated automatically by aclocal $VERSION -*- Autoconf -*-
+
+# Copyright (C) 1996-$RELEASE_YEAR 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+$output";
+
+  # We try not to update $output_file unless necessary, because
+  # doing so invalidate Autom4te's cache and therefore slows down
+  # tools called after aclocal.
+  #
+  # We need to overwrite $output_file in the following situations.
+  #   * The --force option is in use.
+  #   * One of the dependencies is younger.
+  #     (Not updating $output_file in this situation would cause
+  #     make to call aclocal in loop.)
+  #   * The contents of the current file are different from what
+  #     we have computed.
+  if (!$force_output
+      && $greatest_mtime < mtime ($output_file)
+      && $output eq contents ($output_file))
+    {
+      verb "$output_file unchanged";
+      return 1;
+    }
+
+  verb "writing $output_file";
+
+  if (!$dry_run)
+    {
+      if (-e $output_file && !unlink $output_file)
+        {
+         fatal "could not remove '$output_file': $!";
+       }
+      my $out = new Automake::XFile "> $output_file";
+      print $out $output;
+    }
+  return 1;
+}
+
+################################################################
+
+# Print usage and exit.
+sub usage ($)
+{
+  my ($status) = @_;
+
+  print <<'EOF';
+Usage: aclocal [OPTION]...
+
+Generate 'aclocal.m4' by scanning 'configure.ac' or 'configure.in'
+
+Options:
+      --automake-acdir=DIR  directory holding automake-provided m4 files
+      --system-acdir=DIR    directory holding third-party system-wide files
+      --diff[=COMMAND]      run COMMAND [diff -u] on M4 files that would be
+                            changed (implies --install and --dry-run)
+      --dry-run             pretend to, but do not actually update any file
+      --force               always update output file
+      --help                print this help, then exit
+  -I DIR                    add directory to search list for .m4 files
+      --install             copy third-party files to the first -I directory
+      --output=FILE         put output in FILE (default aclocal.m4)
+      --print-ac-dir        print name of directory holding system-wide
+                              third-party m4 files, then exit
+      --verbose             don't be silent
+      --version             print version number, then exit
+  -W, --warnings=CATEGORY   report the warnings falling in CATEGORY
+
+Warning categories include:
+  syntax        dubious syntactic constructs (default)
+  unsupported   unknown macros (default)
+  all           all the warnings (default)
+  no-CATEGORY   turn off warnings in CATEGORY
+  none          turn off all the warnings
+  error         treat warnings as errors
+
+Report bugs to <@PACKAGE_BUGREPORT@>.
+GNU Automake home page: <@PACKAGE_URL@>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+EOF
+  exit $status;
+}
+
+# Print version and exit.
+sub version ()
+{
+  print <<EOF;
+aclocal (GNU $PACKAGE) $VERSION
+Copyright (C) $RELEASE_YEAR Free Software Foundation, Inc.
+License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Tom Tromey <tromey\@redhat.com>
+       and Alexandre Duret-Lutz <adl\@gnu.org>.
+EOF
+  exit 0;
+}
+
+# Using --acdir overrides both the automake (versioned) directory and
+# the public (unversioned) system directory.  This usage is obsolete.
+sub handle_acdir_option ($$)
+{
+  msg 'obsolete', '', "'--acdir' is deprecated\n";
+  @system_includes = ($_[1]);
+  @automake_includes = ();
+}
+
+# Parse command line.
+sub parse_arguments ()
+{
+  my $print_and_exit = 0;
+  my $diff_command;
+
+  my %cli_options =
+    (
+     'help'            => sub { usage(0); },
+     'version'         => \&version,
+     'acdir=s'         => \&handle_acdir_option,
+     'system-acdir=s'  => sub { shift; @system_includes = @_; },
+     'automake-acdir=s'        => sub { shift; @automake_includes = @_; },
+     'diff:s'          => \$diff_command,
+     'dry-run'         => \$dry_run,
+     'force'           => \$force_output,
+     'I=s'             => \@user_includes,
+     'install'          => \$install,
+     'output=s'                => \$output_file,
+     'print-ac-dir'     => \$print_and_exit,
+     'verbose'         => sub { setup_channel 'verb', silent => 0; },
+     'W|warnings=s'     => \&parse_warnings,
+     );
+
+  use Automake::Getopt ();
+  Automake::Getopt::parse_options %cli_options;
+
+  if (@ARGV > 0)
+    {
+      fatal ("non-option arguments are not accepted: '$ARGV[0]'.\n"
+             . "Try '$0 --help' for more information.");
+    }
+
+  if ($print_and_exit)
+    {
+      print "@system_includes\n";
+      exit 0;
+    }
+
+  if (defined $diff_command)
+    {
+      $diff_command = 'diff -u' if $diff_command eq '';
+      @diff_command = split (' ', $diff_command);
+      $install = 1;
+      $dry_run = 1;
+    }
+
+  if ($install && !@user_includes)
+    {
+      fatal ("--install should copy macros in the directory indicated by the"
+            . "\nfirst -I option, but no -I was supplied");
+    }
+
+  # Finally, adds any directory listed in the 'dirlist' file.
+  if (open (DIRLIST, "$system_includes[0]/dirlist"))
+    {
+      while (<DIRLIST>)
+        {
+          # Ignore '#' lines.
+          next if /^#/;
+          # strip off newlines and end-of-line comments
+          s/\s*\#.*$//;
+          chomp;
+          foreach my $dir (glob)
+            {
+              push (@system_includes, $dir) if -d $dir;
+            }
+        }
+      close (DIRLIST);
+    }
+}
+
+# Add any directory listed in the 'ACLOCAL_PATH' environment variable
+# to the list of system include directories.
+sub parse_ACLOCAL_PATH ()
+{
+  return if not defined $ENV{"ACLOCAL_PATH"};
+  # Directories in ACLOCAL_PATH should take precedence over system
+  # directories, so we use unshift.  However, directories that
+  # come first in ACLOCAL_PATH take precedence over directories
+  # coming later, which is why the result of split is reversed.
+  foreach my $dir (reverse split /:/, $ENV{"ACLOCAL_PATH"})
+    {
+      unshift (@system_includes, $dir) if $dir ne '' && -d $dir;
+    }
+}
+
+################################################################
+
+parse_WARNINGS;                    # Parse the WARNINGS environment variable.
+parse_arguments;
+parse_ACLOCAL_PATH;
+$configure_ac = require_configure_ac;
+
+# We may have to rerun aclocal if some file have been installed, but
+# it should not happen more than once.  The reason we must run again
+# is that once the file has been moved from /usr/share/aclocal/ to the
+# local m4/ directory it appears at a new place in the search path,
+# hence it should be output at a different position in aclocal.m4.  If
+# we did not rerun aclocal, the next run of aclocal would produce a
+# different aclocal.m4.
+my $loop = 0;
+while (1)
+  {
+    ++$loop;
+    prog_error "too many loops" if $loop > 2;
+
+    reset_maps;
+    scan_m4_files;
+    scan_configure;
+    last if $exit_code;
+    my %macro_traced = trace_used_macros;
+    last if write_aclocal ($output_file, keys %macro_traced);
+    last if $dry_run;
+  }
+check_acinclude;
+
+exit $exit_code;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..107e568
--- /dev/null
@@ -0,0 +1,35 @@
+# generated automatically by aclocal 1.12.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2012 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+m4_include([m4/amversion.m4])
+m4_include([m4/auxdir.m4])
+m4_include([m4/cond.m4])
+m4_include([m4/init.m4])
+m4_include([m4/install-sh.m4])
+m4_include([m4/lead-dot.m4])
+m4_include([m4/missing.m4])
+m4_include([m4/options.m4])
+m4_include([m4/runlog.m4])
+m4_include([m4/sanity.m4])
+m4_include([m4/silent.m4])
+m4_include([m4/strip.m4])
+m4_include([m4/substnot.m4])
+m4_include([m4/tar.m4])
diff --git a/automake.in b/automake.in
new file mode 100644 (file)
index 0000000..5cf5a2c
--- /dev/null
@@ -0,0 +1,8627 @@
+#!@PERL@ -w
+# -*- perl -*-
+# @configure_input@
+
+eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac'
+    if 0;
+
+# automake - create Makefile.in from Makefile.am
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Originally written by David Mackenzie <djm@gnu.ai.mit.edu>.
+# Perl reimplementation by Tom Tromey <tromey@redhat.com>, and
+# Alexandre Duret-Lutz <adl@gnu.org>.
+
+package Language;
+
+BEGIN
+{
+  my $perllibdir = $ENV{'perllibdir'} || '@datadir@/@PACKAGE@-@APIVERSION@';
+  unshift @INC, (split '@PATH_SEPARATOR@', $perllibdir);
+
+  # Override SHELL.  This is required on DJGPP so that system() uses
+  # bash, not COMMAND.COM which doesn't quote arguments properly.
+  # Other systems aren't expected to use $SHELL when Automake
+  # runs, but it should be safe to drop the "if DJGPP" guard if
+  # it turns up other systems need the same thing.  After all,
+  # if SHELL is used, ./configure's SHELL is always better than
+  # the user's SHELL (which may be something like tcsh).
+  $ENV{'SHELL'} = '@SHELL@' if exists $ENV{'DJDIR'};
+}
+
+use Class::Struct ();
+Class::Struct::struct (
+       # Short name of the language (c, f77...).
+       'name' => "\$",
+       # Nice name of the language (C, Fortran 77...).
+       'Name' => "\$",
+
+       # List of configure variables which must be defined.
+       'config_vars' => '@',
+
+       # 'pure' is '1' or ''.  A 'pure' language is one where, if
+       # all the files in a directory are of that language, then we
+       # do not require the C compiler or any code to call it.
+       'pure'   => "\$",
+
+       'autodep' => "\$",
+
+       # Name of the compiling variable (COMPILE).
+       'compiler'  => "\$",
+       # Content of the compiling variable.
+       'compile'  => "\$",
+       # Flag to require compilation without linking (-c).
+       'compile_flag' => "\$",
+       'extensions' => '@',
+       # A subroutine to compute a list of possible extensions of
+       # the product given the input extensions.
+       # (defaults to a subroutine which returns ('.$(OBJEXT)', '.lo'))
+       'output_extensions' => "\$",
+       # A list of flag variables used in 'compile'.
+       # (defaults to [])
+       'flags' => "@",
+
+       # Any tag to pass to libtool while compiling.
+       'libtool_tag' => "\$",
+
+       # The file to use when generating rules for this language.
+       # The default is 'depend2'.
+       'rule_file' => "\$",
+
+       # Name of the linking variable (LINK).
+       'linker' => "\$",
+       # 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)).
+       'ld' => "\$",
+
+       # Flag to specify the output file (-o).
+       'output_flag' => "\$",
+       '_finish' => "\$",
+
+       # This is a subroutine which is called whenever we finally
+       # determine the context in which a source file will be
+       # compiled.
+       '_target_hook' => "\$",
+
+       # If TRUE, nodist_ sources will be compiled using specific rules
+       # (i.e. not inference rules).  The default is FALSE.
+       'nodist_specific' => "\$");
+
+
+sub finish ($)
+{
+  my ($self) = @_;
+  if (defined $self->_finish)
+    {
+      &{$self->_finish} (@_);
+    }
+}
+
+sub target_hook ($$$$%)
+{
+    my ($self) = @_;
+    if (defined $self->_target_hook)
+    {
+       &{$self->_target_hook} (@_);
+    }
+}
+
+package Automake;
+
+use strict;
+use Automake::Config;
+BEGIN
+{
+  if ($perl_threads)
+    {
+      require threads;
+      import threads;
+      require Thread::Queue;
+      import Thread::Queue;
+    }
+}
+use Automake::General;
+use Automake::XFile;
+use Automake::Channels;
+use Automake::ChannelDefs;
+use Automake::Configure_ac;
+use Automake::FileUtils;
+use Automake::Location;
+use Automake::Condition qw/TRUE FALSE/;
+use Automake::DisjConditions;
+use Automake::Options;
+use Automake::Variable;
+use Automake::VarDef;
+use Automake::Rule;
+use Automake::RuleDef;
+use Automake::Wrap 'makefile_wrap';
+use File::Basename;
+use File::Spec;
+use Carp;
+
+## ----------- ##
+## Constants.  ##
+## ----------- ##
+
+# Some regular expressions.  One reason to put them here is that it
+# makes indentation work better in Emacs.
+
+# Writing singled-quoted-$-terminated regexes is a pain because
+# perl-mode thinks of $' as the ${'} variable (instead of a $ followed
+# by a closing quote.  Letting perl-mode think the quote is not closed
+# leads to all sort of misindentations.  On the other hand, defining
+# regexes as double-quoted strings is far less readable.  So usually
+# we will write:
+#
+#  $REGEX = '^regex_value' . "\$";
+
+my $IGNORE_PATTERN = '^\s*##([^#\n].*)?\n';
+my $WHITE_PATTERN = '^\s*' . "\$";
+my $COMMENT_PATTERN = '^#';
+my $TARGET_PATTERN='[$a-zA-Z0-9_.@%][-.a-zA-Z0-9_(){}/$+@%]*';
+# A rule has three parts: a list of targets, a list of dependencies,
+# and optionally actions.
+my $RULE_PATTERN =
+  "^($TARGET_PATTERN(?:(?:\\\\\n|\\s)+$TARGET_PATTERN)*) *:([^=].*|)\$";
+
+# Only recognize leading spaces, not leading tabs.  If we recognize
+# leading tabs here then we need to make the reader smarter, because
+# otherwise it will think rules like 'foo=bar; \' are errors.
+my $ASSIGNMENT_PATTERN = '^ *([^ \t=:+]*)\s*([:+]?)=\s*(.*)' . "\$";
+# This pattern recognizes a Gnits version id and sets $1 if the
+# release is an alpha release.  We also allow a suffix which can be
+# used to extend the version number with a "fork" identifier.
+my $GNITS_VERSION_PATTERN = '\d+\.\d+([a-z]|\.\d+)?(-[A-Za-z0-9]+)?';
+
+my $IF_PATTERN = '^if\s+(!?)\s*([A-Za-z][A-Za-z0-9_]*)\s*(?:#.*)?' . "\$";
+my $ELSE_PATTERN =
+  '^else(?:\s+(!?)\s*([A-Za-z][A-Za-z0-9_]*))?\s*(?:#.*)?' . "\$";
+my $ENDIF_PATTERN =
+  '^endif(?:\s+(!?)\s*([A-Za-z][A-Za-z0-9_]*))?\s*(?:#.*)?' . "\$";
+my $PATH_PATTERN = '(\w|[+/.-])+';
+# This will pass through anything not of the prescribed form.
+my $INCLUDE_PATTERN = ('^include\s+'
+                      . '((\$\(top_srcdir\)/' . $PATH_PATTERN . ')'
+                      . '|(\$\(srcdir\)/' . $PATH_PATTERN . ')'
+                      . '|([^/\$]' . $PATH_PATTERN . '))\s*(#.*)?' . "\$");
+
+# Directories installed during 'install-exec' phase.
+my $EXEC_DIR_PATTERN =
+  '^(?:bin|sbin|libexec|sysconf|localstate|lib|pkglib|.*exec.*)' . "\$";
+
+# Values for AC_CANONICAL_*
+use constant AC_CANONICAL_BUILD  => 1;
+use constant AC_CANONICAL_HOST   => 2;
+use constant AC_CANONICAL_TARGET => 3;
+
+# Values indicating when something should be cleaned.
+use constant MOSTLY_CLEAN     => 0;
+use constant CLEAN            => 1;
+use constant DIST_CLEAN       => 2;
+use constant MAINTAINER_CLEAN => 3;
+
+# Libtool files.
+my @libtool_files = qw(ltmain.sh config.guess config.sub);
+# ltconfig appears here for compatibility with old versions of libtool.
+my @libtool_sometimes = qw(ltconfig ltcf-c.sh ltcf-cxx.sh ltcf-gcj.sh);
+
+# Commonly found files we look for and automatically include in
+# DISTFILES.
+my @common_files =
+    (qw(ABOUT-GNU ABOUT-NLS AUTHORS BACKLOG COPYING COPYING.DOC COPYING.LIB
+       COPYING.LESSER ChangeLog INSTALL NEWS README THANKS TODO
+       ar-lib compile config.guess config.rpath
+       config.sub depcomp elisp-comp install-sh libversion.in mdate-sh
+       missing mkinstalldirs py-compile texinfo.tex ylwrap),
+     @libtool_files, @libtool_sometimes);
+
+# Commonly used files we auto-include, but only sometimes.  This list
+# is used for the --help output only.
+my @common_sometimes =
+  qw(aclocal.m4 acconfig.h config.h.top config.h.bot configure
+     configure.ac configure.in stamp-vti);
+
+# Standard directories from the GNU Coding Standards, and additional
+# pkg* directories from Automake.  Stored in a hash for fast member check.
+my %standard_prefix =
+    map { $_ => 1 } (qw(bin data dataroot doc dvi exec html include info
+                       lib libexec lisp locale localstate man man1 man2
+                       man3 man4 man5 man6 man7 man8 man9 oldinclude pdf
+                       pkgdata pkginclude pkglib pkglibexec ps sbin
+                       sharedstate sysconf));
+
+# Copyright on generated Makefile.ins.
+my $gen_copyright = "\
+# Copyright (C) 1994-$RELEASE_YEAR Free Software Foundation, Inc.
+
+# This Makefile.in 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+";
+
+# These constants are returned by the lang_*_rewrite functions.
+# LANG_SUBDIR means that the resulting object file should be in a
+# subdir if the source file is.  In this case the file name cannot
+# have '..' components.
+use constant LANG_IGNORE  => 0;
+use constant LANG_PROCESS => 1;
+use constant LANG_SUBDIR  => 2;
+
+# These are used when keeping track of whether an object can be built
+# by two different paths.
+use constant COMPILE_LIBTOOL  => 1;
+use constant COMPILE_ORDINARY => 2;
+
+# We can't always associate a location to a variable or a rule,
+# when it's defined by Automake.  We use INTERNAL in this case.
+use constant INTERNAL => new Automake::Location;
+
+# Serialization keys for message queues.
+use constant QUEUE_MESSAGE   => "msg";
+use constant QUEUE_CONF_FILE => "conf file";
+use constant QUEUE_LOCATION  => "location";
+use constant QUEUE_STRING    => "string";
+
+## ---------------------------------- ##
+## Variables related to the options.  ##
+## ---------------------------------- ##
+
+# TRUE if we should always generate Makefile.in.
+my $force_generation = 1;
+
+# From the Perl manual.
+my $symlink_exists = (eval 'symlink ("", "");', $@ eq '');
+
+# TRUE if missing standard files should be installed.
+my $add_missing = 0;
+
+# TRUE if we should copy missing files; otherwise symlink if possible.
+my $copy_missing = 0;
+
+# TRUE if we should always update files that we know about.
+my $force_missing = 0;
+
+
+## ---------------------------------------- ##
+## Variables filled during files scanning.  ##
+## ---------------------------------------- ##
+
+# Name of the configure.ac file.
+my $configure_ac;
+
+# Files found by scanning configure.ac for LIBOBJS.
+my %libsources = ();
+
+# Names used in AC_CONFIG_HEADER call.
+my @config_headers = ();
+
+# Names used in AC_CONFIG_LINKS call.
+my @config_links = ();
+
+# List of Makefile.am's to process, and their corresponding outputs.
+my @input_files = ();
+my %output_files = ();
+
+# Complete list of Makefile.am's that exist.
+my @configure_input_files = ();
+
+# List of files in AC_CONFIG_FILES/AC_OUTPUT without Makefile.am's,
+# and their outputs.
+my @other_input_files = ();
+# Where each AC_CONFIG_FILES/AC_OUTPUT/AC_CONFIG_LINK/AC_CONFIG_HEADER appears.
+# The keys are the files created by these macros.
+my %ac_config_files_location = ();
+# The condition under which AC_CONFIG_FOOS appears.
+my %ac_config_files_condition = ();
+
+# Directory to search for configure-required files.  This
+# will be computed by &locate_aux_dir and can be set using
+# AC_CONFIG_AUX_DIR in configure.ac.
+# $CONFIG_AUX_DIR is the 'raw' directory, valid only in the source-tree.
+my $config_aux_dir = '';
+my $config_aux_dir_set_in_configure_ac = 0;
+# $AM_CONFIG_AUX_DIR is prefixed with $(top_srcdir), so it can be used
+# in Makefiles.
+my $am_config_aux_dir = '';
+
+# Directory to search for AC_LIBSOURCE files, as set by AC_CONFIG_LIBOBJ_DIR
+# in configure.ac.
+my $config_libobj_dir = '';
+
+# Whether AM_GNU_GETTEXT has been seen in configure.ac.
+my $seen_gettext = 0;
+# Whether AM_GNU_GETTEXT([external]) is used.
+my $seen_gettext_external = 0;
+# Where AM_GNU_GETTEXT appears.
+my $ac_gettext_location;
+# Whether AM_GNU_GETTEXT_INTL_SUBDIR has been seen.
+my $seen_gettext_intl = 0;
+
+# Lists of tags supported by Libtool.
+my %libtool_tags = ();
+# 1 if Libtool uses LT_SUPPORTED_TAG.  If it does, then it also
+# uses AC_REQUIRE_AUX_FILE.
+my $libtool_new_api = 0;
+
+# Most important AC_CANONICAL_* macro seen so far.
+my $seen_canonical = 0;
+# Location of that macro.
+my $canonical_location;
+
+# Where AM_MAINTAINER_MODE appears.
+my $seen_maint_mode;
+
+# Actual version we've seen.
+my $package_version = '';
+
+# Where version is defined.
+my $package_version_location;
+
+# TRUE if we've seen AM_PROG_AR
+my $seen_ar = 0;
+
+# TRUE if we've seen AM_PROG_CC_C_O
+my $seen_cc_c_o = 0;
+
+# Location of AC_REQUIRE_AUX_FILE calls, indexed by their argument.
+my %required_aux_file = ();
+
+# Where AM_INIT_AUTOMAKE is called;
+my $seen_init_automake = 0;
+
+# TRUE if we've seen AM_AUTOMAKE_VERSION.
+my $seen_automake_version = 0;
+
+# Hash table of discovered configure substitutions.  Keys are names,
+# values are 'FILE:LINE' strings which are used by error message
+# generation.
+my %configure_vars = ();
+
+# Ignored configure substitutions (i.e., variables not to be output in
+# Makefile.in)
+my %ignored_configure_vars = ();
+
+# Files included by $configure_ac.
+my @configure_deps = ();
+
+# Greatest timestamp of configure's dependencies.
+my $configure_deps_greatest_timestamp = 0;
+
+# Hash table of AM_CONDITIONAL variables seen in configure.
+my %configure_cond = ();
+
+# This maps extensions onto language names.
+my %extension_map = ();
+
+# List of the DIST_COMMON files we discovered while reading
+# configure.ac.
+my $configure_dist_common = '';
+
+# This maps languages names onto objects.
+my %languages = ();
+# Maps each linker variable onto a language object.
+my %link_languages = ();
+
+# maps extensions to needed source flags.
+my %sourceflags = ();
+
+# List of targets we must always output.
+# FIXME: Complete, and remove falsely required targets.
+my %required_targets =
+  (
+   'all'          => 1,
+   'dvi'         => 1,
+   'pdf'         => 1,
+   'ps'                  => 1,
+   'info'        => 1,
+   'install-info' => 1,
+   'install'      => 1,
+   'install-data' => 1,
+   'install-exec' => 1,
+   'uninstall'    => 1,
+
+   # FIXME: Not required, temporary hacks.
+   # Well, actually they are sort of required: the -recursive
+   # targets will run them anyway...
+   'html-am'         => 1,
+   'dvi-am'          => 1,
+   'pdf-am'          => 1,
+   'ps-am'           => 1,
+   'info-am'         => 1,
+   'install-data-am' => 1,
+   'install-exec-am' => 1,
+   'install-html-am' => 1,
+   'install-dvi-am'  => 1,
+   'install-pdf-am'  => 1,
+   'install-ps-am'   => 1,
+   'install-info-am' => 1,
+   'installcheck-am' => 1,
+   'uninstall-am' => 1,
+
+   'install-man' => 1,
+  );
+
+# Queue to push require_conf_file requirements to.
+my $required_conf_file_queue;
+
+# The name of the Makefile currently being processed.
+my $am_file = 'BUG';
+
+################################################################
+
+## ------------------------------------------ ##
+## Variables reset by &initialize_per_input.  ##
+## ------------------------------------------ ##
+
+# Basename and relative dir of the input file.
+my $am_file_name;
+my $am_relative_dir;
+
+# Same but wrt Makefile.in.
+my $in_file_name;
+my $relative_dir;
+
+# Relative path to the top directory.
+my $topsrcdir;
+
+# Greatest timestamp of the output's dependencies (excluding
+# configure's dependencies).
+my $output_deps_greatest_timestamp;
+
+# These variables are used when generating each Makefile.in.
+# They hold the Makefile.in until it is ready to be printed.
+my $output_vars;
+my $output_all;
+my $output_header;
+my $output_rules;
+my $output_trailer;
+
+# This is the conditional stack, updated on if/else/endif, and
+# used to build Condition objects.
+my @cond_stack;
+
+# This holds the set of included files.
+my @include_stack;
+
+# List of dependencies for the obvious targets.
+my @all;
+my @check;
+my @check_tests;
+
+# Keys in this hash table are files to delete.  The associated
+# value tells when this should happen (MOSTLY_CLEAN, DIST_CLEAN, etc.)
+my %clean_files;
+
+# Keys in this hash table are object files or other files in
+# subdirectories which need to be removed.  This only holds files
+# which are created by compilations.  The value in the hash indicates
+# when the file should be removed.
+my %compile_clean_files;
+
+# Keys in this hash table are directories where we expect to build a
+# libtool object.  We use this information to decide what directories
+# to delete.
+my %libtool_clean_directories;
+
+# Value of $(SOURCES), used by tags.am.
+my @sources;
+# Sources which go in the distribution.
+my @dist_sources;
+
+# This hash maps object file names onto their corresponding source
+# file names.  This is used to ensure that each object is created
+# by a single source file.
+my %object_map;
+
+# This hash maps object file names onto an integer value representing
+# whether this object has been built via ordinary compilation or
+# libtool compilation (the COMPILE_* constants).
+my %object_compilation_map;
+
+
+# This keeps track of the directories for which we've already
+# created dirstamp code.  Keys are directories, values are stamp files.
+# Several keys can share the same stamp files if they are equivalent
+# (as are './/foo' and 'foo').
+my %directory_map;
+
+# All .P files.
+my %dep_files;
+
+# This is a list of all targets to run during "make dist".
+my @dist_targets;
+
+# Keep track of all programs declared in this Makefile, without
+# $(EXEEXT).  @substitutions@ are not listed.
+my %known_programs;
+my %known_libraries;
+
+# This keeps track of which extensions we've seen (that we care
+# about).
+my %extension_seen;
+
+# This is random scratch space for the language finish functions.
+# Don't randomly overwrite it; examine other uses of keys first.
+my %language_scratch;
+
+# We keep track of which objects need special (per-executable)
+# handling on a per-language basis.
+my %lang_specific_files;
+
+# This is set when 'handle_dist' has finished.  Once this happens,
+# we should no longer push on dist_common.
+my $handle_dist_run;
+
+# Used to store a set of linkers needed to generate the sources currently
+# under consideration.
+my %linkers_used;
+
+# True if we need 'LINK' defined.  This is a hack.
+my $need_link;
+
+# Does the generated Makefile have to build some compiled object
+# (for binary programs, or plain or libtool libraries)?
+my $must_handle_compiled_objects;
+
+# Record each file processed by make_paragraphs.
+my %transformed_files;
+
+################################################################
+
+## ---------------------------------------------- ##
+## Variables not reset by &initialize_per_input.  ##
+## ---------------------------------------------- ##
+
+# Cache each file processed by make_paragraphs.
+# (This is different from %transformed_files because
+# %transformed_files is reset for each file while %am_file_cache
+# it global to the run.)
+my %am_file_cache;
+
+################################################################
+
+# var_SUFFIXES_trigger ($TYPE, $VALUE)
+# ------------------------------------
+# This is called by Automake::Variable::define() when SUFFIXES
+# is defined ($TYPE eq '') or appended ($TYPE eq '+').
+# The work here needs to be performed as a side-effect of the
+# macro_define() call because SUFFIXES definitions impact
+# on $KNOWN_EXTENSIONS_PATTERN which is used used when parsing
+# the input am file.
+sub var_SUFFIXES_trigger ($$)
+{
+    my ($type, $value) = @_;
+    accept_extensions (split (' ', $value));
+}
+Automake::Variable::hook ('SUFFIXES', \&var_SUFFIXES_trigger);
+
+################################################################
+
+## --------------------------------- ##
+## Forward subroutine declarations.  ##
+## --------------------------------- ##
+sub register_language (%);
+sub file_contents_internal ($$$%);
+sub define_files_variable ($\@$$);
+
+
+# &initialize_per_input ()
+# ------------------------
+# (Re)-Initialize per-Makefile.am variables.
+sub initialize_per_input ()
+{
+    reset_local_duplicates ();
+
+    $am_file_name = undef;
+    $am_relative_dir = undef;
+
+    $in_file_name = undef;
+    $relative_dir = undef;
+    $topsrcdir = undef;
+
+    $output_deps_greatest_timestamp = 0;
+
+    $output_vars = '';
+    $output_all = '';
+    $output_header = '';
+    $output_rules = '';
+    $output_trailer = '';
+
+    Automake::Options::reset;
+    Automake::Variable::reset;
+    Automake::Rule::reset;
+
+    @cond_stack = ();
+
+    @include_stack = ();
+
+    @all = ();
+    @check = ();
+    @check_tests = ();
+
+    %clean_files = ();
+    %compile_clean_files = ();
+
+    # We always include '.'.  This isn't strictly correct.
+    %libtool_clean_directories = ('.' => 1);
+
+    @sources = ();
+    @dist_sources = ();
+
+    %object_map = ();
+    %object_compilation_map = ();
+
+    %directory_map = ();
+
+    %dep_files = ();
+
+    @dist_targets = ();
+
+    %known_programs = ();
+    %known_libraries= ();
+
+    %extension_seen = ();
+
+    %language_scratch = ();
+
+    %lang_specific_files = ();
+
+    $handle_dist_run = 0;
+
+    $need_link = 0;
+
+    $must_handle_compiled_objects = 0;
+
+    %transformed_files = ();
+}
+
+
+################################################################
+
+# Initialize our list of languages that are internally supported.
+
+# C.
+register_language ('name' => 'c',
+                  'Name' => 'C',
+                  'config_vars' => ['CC'],
+                  'autodep' => '',
+                  'flags' => ['CFLAGS', 'CPPFLAGS'],
+                  'ccer' => 'CC',
+                  'compiler' => 'COMPILE',
+                  'compile' => '$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)',
+                  'lder' => 'CCLD',
+                  'ld' => '$(CC)',
+                  'linker' => 'LINK',
+                  'link' => '$(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  'compile_flag' => '-c',
+                  'libtool_tag' => 'CC',
+                  'extensions' => ['.c']);
+
+# C++.
+register_language ('name' => 'cxx',
+                  'Name' => 'C++',
+                  'config_vars' => ['CXX'],
+                  'linker' => 'CXXLINK',
+                  'link' => '$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  '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',
+                  'libtool_tag' => 'CXX',
+                  'lder' => 'CXXLD',
+                  'ld' => '$(CXX)',
+                  'pure' => 1,
+                  'extensions' => ['.c++', '.cc', '.cpp', '.cxx', '.C']);
+
+# Objective C.
+register_language ('name' => 'objc',
+                  'Name' => 'Objective C',
+                  'config_vars' => ['OBJC'],
+                  'linker' => 'OBJCLINK',
+                  'link' => '$(OBJCLD) $(AM_OBJCFLAGS) $(OBJCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  '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',
+                  'lder' => 'OBJCLD',
+                  'ld' => '$(OBJC)',
+                  'pure' => 1,
+                  'extensions' => ['.m']);
+
+# Objective C++.
+register_language ('name' => 'objcxx',
+                  'Name' => 'Objective C++',
+                  'config_vars' => ['OBJCXX'],
+                  'linker' => 'OBJCXXLINK',
+                  'link' => '$(OBJCXXLD) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  'autodep' => 'OBJCXX',
+                  'flags' => ['OBJCXXFLAGS', 'CPPFLAGS'],
+                  'compile' => '$(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS)',
+                  'ccer' => 'OBJCXX',
+                  'compiler' => 'OBJCXXCOMPILE',
+                  'compile_flag' => '-c',
+                  'output_flag' => '-o',
+                  'lder' => 'OBJCXXLD',
+                  'ld' => '$(OBJCXX)',
+                  'pure' => 1,
+                  'extensions' => ['.mm']);
+
+# Unified Parallel C.
+register_language ('name' => 'upc',
+                  'Name' => 'Unified Parallel C',
+                  'config_vars' => ['UPC'],
+                  'linker' => 'UPCLINK',
+                  'link' => '$(UPCLD) $(AM_UPCFLAGS) $(UPCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  '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',
+                  'lder' => 'UPCLD',
+                  'ld' => '$(UPC)',
+                  'pure' => 1,
+                  'extensions' => ['.upc']);
+
+# Headers.
+register_language ('name' => 'header',
+                  'Name' => 'Header',
+                  'extensions' => ['.h', '.H', '.hxx', '.h++', '.hh',
+                                   '.hpp', '.inc'],
+                  # No output.
+                  'output_extensions' => sub { return () },
+                  # Nothing to do.
+                  '_finish' => sub { });
+
+# Vala
+register_language ('name' => 'vala',
+                  'Name' => 'Vala',
+                  'config_vars' => ['VALAC'],
+                  'flags' => [],
+                  '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) $(AM_YFLAGS) $(YFLAGS)',
+                  'ccer' => 'YACC',
+                  'compiler' => 'YACCCOMPILE',
+                  'extensions' => ['.y'],
+                  'output_extensions' => sub { (my $ext = $_[0]) =~ tr/y/c/;
+                                               return ($ext,) },
+                  'rule_file' => 'yacc',
+                  '_finish' => \&lang_yacc_finish,
+                  '_target_hook' => \&lang_yacc_target_hook,
+                  'nodist_specific' => 1);
+register_language ('name' => 'yaccxx',
+                  'Name' => 'Yacc (C++)',
+                  'config_vars' => ['YACC'],
+                  'rule_file' => 'yacc',
+                  'flags' => ['YFLAGS'],
+                  'ccer' => 'YACC',
+                  'compiler' => 'YACCCOMPILE',
+                  'compile' => '$(YACC) $(AM_YFLAGS) $(YFLAGS)',
+                  'extensions' => ['.y++', '.yy', '.yxx', '.ypp'],
+                  'output_extensions' => sub { (my $ext = $_[0]) =~ tr/y/c/;
+                                               return ($ext,) },
+                  '_finish' => \&lang_yacc_finish,
+                  '_target_hook' => \&lang_yacc_target_hook,
+                  'nodist_specific' => 1);
+
+# Lex (C & C++).
+register_language ('name' => 'lex',
+                  'Name' => 'Lex',
+                  'config_vars' => ['LEX'],
+                  'rule_file' => 'lex',
+                  'flags' => ['LFLAGS'],
+                  'compile' => '$(LEX) $(AM_LFLAGS) $(LFLAGS)',
+                  'ccer' => 'LEX',
+                  'compiler' => 'LEXCOMPILE',
+                  'extensions' => ['.l'],
+                  'output_extensions' => sub { (my $ext = $_[0]) =~ tr/l/c/;
+                                               return ($ext,) },
+                  '_finish' => \&lang_lex_finish,
+                  '_target_hook' => \&lang_lex_target_hook,
+                  'nodist_specific' => 1);
+register_language ('name' => 'lexxx',
+                  'Name' => 'Lex (C++)',
+                  'config_vars' => ['LEX'],
+                  'rule_file' => 'lex',
+                  'flags' => ['LFLAGS'],
+                  'compile' => '$(LEX) $(AM_LFLAGS) $(LFLAGS)',
+                  'ccer' => 'LEX',
+                  'compiler' => 'LEXCOMPILE',
+                  'extensions' => ['.l++', '.ll', '.lxx', '.lpp'],
+                  'output_extensions' => sub { (my $ext = $_[0]) =~ tr/l/c/;
+                                               return ($ext,) },
+                  '_finish' => \&lang_lex_finish,
+                  '_target_hook' => \&lang_lex_target_hook,
+                  'nodist_specific' => 1);
+
+# Assembler.
+register_language ('name' => 'asm',
+                  'Name' => 'Assembler',
+                  'config_vars' => ['CCAS', 'CCASFLAGS'],
+
+                  'flags' => ['CCASFLAGS'],
+                  # Users can set AM_CCASFLAGS to include DEFS, INCLUDES,
+                  # 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',
+                  'extensions' => ['.s']);
+
+# Preprocessed Assembler.
+register_language ('name' => 'cppasm',
+                  'Name' => 'Preprocessed Assembler',
+                  'config_vars' => ['CCAS', 'CCASFLAGS'],
+
+                  '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',
+                  'extensions' => ['.S', '.sx']);
+
+# Fortran 77
+register_language ('name' => 'f77',
+                  'Name' => 'Fortran 77',
+                  'config_vars' => ['F77'],
+                  'linker' => 'F77LINK',
+                  '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',
+                  'libtool_tag' => 'F77',
+                  'lder' => 'F77LD',
+                  'ld' => '$(F77)',
+                  'pure' => 1,
+                  'extensions' => ['.f', '.for']);
+
+# Fortran
+register_language ('name' => 'fc',
+                  'Name' => 'Fortran',
+                  'config_vars' => ['FC'],
+                  'linker' => 'FCLINK',
+                  'link' => '$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  'flags' => ['FCFLAGS'],
+                  'compile' => '$(FC) $(AM_FCFLAGS) $(FCFLAGS)',
+                  'ccer' => 'FC',
+                  'compiler' => 'FCCOMPILE',
+                  'compile_flag' => '-c',
+                  'output_flag' => '-o',
+                  'libtool_tag' => 'FC',
+                  'lder' => 'FCLD',
+                  'ld' => '$(FC)',
+                  'pure' => 1,
+                  'extensions' => ['.f90', '.f95', '.f03', '.f08']);
+
+# Preprocessed Fortran
+register_language ('name' => 'ppfc',
+                  'Name' => 'Preprocessed Fortran',
+                  'config_vars' => ['FC'],
+                  'linker' => 'FCLINK',
+                  'link' => '$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  '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',
+                  'output_flag' => '-o',
+                  'libtool_tag' => 'FC',
+                  'pure' => 1,
+                  'extensions' => ['.F90','.F95', '.F03', '.F08']);
+
+# Preprocessed Fortran 77
+#
+# The current support for preprocessing Fortran 77 just involves
+# passing "$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS)
+# $(CPPFLAGS)" as additional flags to the Fortran 77 compiler, since
+# this is how GNU Make does it; see the "GNU Make Manual, Edition 0.51
+# for 'make' Version 3.76 Beta" (specifically, from info file
+# '(make)Catalogue of Rules').
+#
+# A better approach would be to write an Autoconf test
+# (i.e. AC_PROG_FPP) for a Fortran 77 preprocessor, because not all
+# Fortran 77 compilers know how to do preprocessing.  The Autoconf
+# macro AC_PROG_FPP should test the Fortran 77 compiler first for
+# preprocessing capabilities, and then fall back on cpp (if cpp were
+# available).
+register_language ('name' => 'ppf77',
+                  'Name' => 'Preprocessed Fortran 77',
+                  'config_vars' => ['F77'],
+                  'linker' => 'F77LINK',
+                  'link' => '$(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  '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',
+                  'output_flag' => '-o',
+                  'libtool_tag' => 'F77',
+                  'pure' => 1,
+                  'extensions' => ['.F']);
+
+# Ratfor.
+register_language ('name' => 'ratfor',
+                  'Name' => 'Ratfor',
+                  'config_vars' => ['F77'],
+                  'linker' => 'F77LINK',
+                  'link' => '$(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  'lder' => 'F77LD',
+                  'ld' => '$(F77)',
+                  'flags' => ['RFLAGS', 'FFLAGS'],
+                  # FIXME also FFLAGS.
+                  'compile' => '$(F77) $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)',
+                  'ccer' => 'F77',
+                  'compiler' => 'RCOMPILE',
+                  'compile_flag' => '-c',
+                  'output_flag' => '-o',
+                  'libtool_tag' => 'F77',
+                  'pure' => 1,
+                  'extensions' => ['.r']);
+
+# Java via gcj.
+register_language ('name' => 'java',
+                  'Name' => 'Java',
+                  'config_vars' => ['GCJ'],
+                  'linker' => 'GCJLINK',
+                  'link' => '$(GCJLD) $(AM_GCJFLAGS) $(GCJFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
+                  'autodep' => 'GCJ',
+                  'flags' => ['GCJFLAGS'],
+                  'compile' => '$(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS)',
+                  'ccer' => 'GCJ',
+                  'compiler' => 'GCJCOMPILE',
+                  'compile_flag' => '-c',
+                  'output_flag' => '-o',
+                  'libtool_tag' => 'GCJ',
+                  'lder' => 'GCJLD',
+                  'ld' => '$(GCJ)',
+                  'pure' => 1,
+                  'extensions' => ['.java', '.class', '.zip', '.jar']);
+
+################################################################
+
+# Error reporting functions.
+
+# err_am ($MESSAGE, [%OPTIONS])
+# -----------------------------
+# Uncategorized errors about the current Makefile.am.
+sub err_am ($;%)
+{
+  msg_am ('error', @_);
+}
+
+# err_ac ($MESSAGE, [%OPTIONS])
+# -----------------------------
+# Uncategorized errors about configure.ac.
+sub err_ac ($;%)
+{
+  msg_ac ('error', @_);
+}
+
+# msg_am ($CHANNEL, $MESSAGE, [%OPTIONS])
+# ---------------------------------------
+# Messages about about the current Makefile.am.
+sub msg_am ($$;%)
+{
+  my ($channel, $msg, %opts) = @_;
+  msg $channel, "${am_file}.am", $msg, %opts;
+}
+
+# msg_ac ($CHANNEL, $MESSAGE, [%OPTIONS])
+# ---------------------------------------
+# Messages about about configure.ac.
+sub msg_ac ($$;%)
+{
+  my ($channel, $msg, %opts) = @_;
+  msg $channel, $configure_ac, $msg, %opts;
+}
+
+################################################################
+
+# subst ($TEXT)
+# -------------
+# Return a configure-style substitution using the indicated text.
+# We do this to avoid having the substitutions directly in automake.in;
+# when we do that they are sometimes removed and this causes confusion
+# and bugs.
+sub subst ($)
+{
+    my ($text) = @_;
+    return '@' . $text . '@';
+}
+
+################################################################
+
+
+# $BACKPATH
+# &backname ($RELDIR)
+# --------------------
+# If I "cd $RELDIR", then to come back, I should "cd $BACKPATH".
+# For instance 'src/foo' => '../..'.
+# Works with non strictly increasing paths, i.e., 'src/../lib' => '..'.
+sub backname ($)
+{
+    my ($file) = @_;
+    my @res;
+    foreach (split (/\//, $file))
+    {
+       next if $_ eq '.' || $_ eq '';
+       if ($_ eq '..')
+       {
+           pop @res
+             or prog_error ("trying to reverse path '$file' pointing outside tree");
+       }
+       else
+       {
+           push (@res, '..');
+       }
+    }
+    return join ('/', @res) || '.';
+}
+
+################################################################
+
+# '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);
+    my $silent_var = $pvar . '_0';
+    if (option 'silent-rules')
+      {
+       # For typical 'make's, 'configure' replaces AM_V (inside @@) with $(V)
+       # and AM_DEFAULT_V (inside @@) with $(AM_DEFAULT_VERBOSITY).
+       # For strict POSIX 2008 'make's, it replaces them with 0 or 1 instead.
+       # See AM_SILENT_RULES in m4/silent.m4.
+       define_variable ($var, '$(' . $pvar . '_@'.'AM_V'.'@)', INTERNAL);
+       define_variable ($pvar . '_', '$(' . $pvar . '_@'.'AM_DEFAULT_V'.'@)', INTERNAL);
+       Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val,
+                                   '', INTERNAL, VAR_ASIS)
+         if (! vardef ($silent_var, TRUE));
+      }
+}
+
+# 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 '';
+}
+
+sub verbose_nodep_flag ($)
+{
+    my ($name) = @_;
+    return '$(' . verbose_var ($name) . subst ('am__nodep') . ')'
+      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 (8 - length ($name)) . '" $@;');
+       define_verbose_var ('at', '@');
+      }
+}
+
+# define_verbose_texinfo
+# ----------------------
+# Engage the needed 'silent-rules' machinery for assorted texinfo commands.
+sub define_verbose_texinfo ()
+{
+  my @tagvars = ('DVIPS', 'MAKEINFO', 'INFOHTML', 'TEXI2DVI', 'TEXI2PDF');
+  foreach my $tag (@tagvars)
+    {
+      define_verbose_tagvar($tag);
+    }
+  define_verbose_var('texinfo', '-q');
+  define_verbose_var('texidevnull', '> /dev/null');
+}
+
+# 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
+{
+  my $var = var ('AUTOMAKE_OPTIONS');
+  if ($var)
+    {
+      if ($var->has_conditional_contents)
+       {
+         msg_var ('unsupported', $var,
+                  "'AUTOMAKE_OPTIONS' cannot have conditional contents");
+       }
+      my @options = map { { option => $_->[1], where => $_->[0] } }
+                       $var->value_as_list_recursive (cond_filter => TRUE,
+                                                      location => 1);
+      return 1 if process_option_list (@options);
+    }
+
+  # Override portability-recursive warning.
+  switch_warning ('no-portability-recursive')
+    if option 'silent-rules';
+
+  if ($strictness == GNITS)
+    {
+      set_option ('readme-alpha', INTERNAL);
+      set_option ('std-options', INTERNAL);
+      set_option ('check-news', INTERNAL);
+    }
+
+  return 0;
+}
+
+# shadow_unconditionally ($varname, $where)
+# -----------------------------------------
+# Return a $(variable) that contains all possible values
+# $varname can take.
+# If the VAR wasn't defined conditionally, return $(VAR).
+# Otherwise we create an am__VAR_DIST variable which contains
+# all possible values, and return $(am__VAR_DIST).
+sub shadow_unconditionally ($$)
+{
+  my ($varname, $where) = @_;
+  my $var = var $varname;
+  if ($var->has_conditional_contents)
+    {
+      $varname = "am__${varname}_DIST";
+      my @files = uniq ($var->value_as_list_recursive);
+      define_pretty_variable ($varname, TRUE, $where, @files);
+    }
+  return "\$($varname)"
+}
+
+# check_user_variables (@LIST)
+# ----------------------------
+# Make sure each variable VAR in @LIST does not exist, suggest using AM_VAR
+# otherwise.
+sub check_user_variables (@)
+{
+  my @dont_override = @_;
+  foreach my $flag (@dont_override)
+    {
+      my $var = var $flag;
+      if ($var)
+       {
+         for my $cond ($var->conditions->conds)
+           {
+             if ($var->rdef ($cond)->owner == VAR_MAKEFILE)
+               {
+                 msg_cond_var ('gnu', $cond, $flag,
+                               "'$flag' is a user variable, "
+                               . "you should not override it;\n"
+                               . "use 'AM_$flag' instead");
+               }
+           }
+       }
+    }
+}
+
+# Call finish function for each language that was used.
+sub handle_languages
+{
+    if (! option 'no-dependencies')
+    {
+       # Include auto-dep code.  Don't include it if DEP_FILES would
+       # be empty.
+       if (&saw_sources_p (0) && keys %dep_files)
+       {
+           # Set location of depcomp.
+           &define_variable ('depcomp',
+                             "\$(SHELL) $am_config_aux_dir/depcomp",
+                             INTERNAL);
+           &define_variable ('am__depfiles_maybe', 'depfiles', INTERNAL);
+
+           require_conf_file ("$am_file.am", FOREIGN, 'depcomp');
+
+           my @deplist = sort keys %dep_files;
+           # Generate each 'include' individually.  Irix 6 make will
+           # not properly include several files resulting from a
+           # variable expansion; generating many separate includes
+           # seems safest.
+           $output_rules .= "\n";
+           foreach my $iter (@deplist)
+           {
+               $output_rules .= (subst ('AMDEP_TRUE')
+                                 . subst ('am__include')
+                                 . ' '
+                                 . subst ('am__quote')
+                                 . $iter
+                                 . subst ('am__quote')
+                                 . "\n");
+           }
+
+           # Compute the set of directories to remove in distclean-depend.
+           my @depdirs = uniq (map { dirname ($_) } @deplist);
+           $output_rules .= &file_contents ('depend',
+                                            new Automake::Location,
+                                            DEPDIRS => "@depdirs");
+       }
+    }
+    else
+    {
+       &define_variable ('depcomp', '', INTERNAL);
+       &define_variable ('am__depfiles_maybe', '', INTERNAL);
+    }
+
+    my %done;
+
+    # Is the C linker needed?
+    my $needs_c = 0;
+    foreach my $ext (sort keys %extension_seen)
+    {
+       next unless $extension_map{$ext};
+
+       my $lang = $languages{$extension_map{$ext}};
+
+       my $rule_file = $lang->rule_file || 'depend2';
+
+       # Get information on $LANG.
+       my $pfx = $lang->autodep;
+       my $fpfx = ($pfx eq '') ? 'CC' : $pfx;
+
+       my ($AMDEP, $FASTDEP) =
+         (option 'no-dependencies' || $lang->autodep eq 'no')
+         ? ('FALSE', 'FALSE') : ('AMDEP', "am__fastdep$fpfx");
+
+       my $verbose = verbose_flag ($lang->ccer || 'GEN');
+       my $verbose_nodep = ($AMDEP eq 'FALSE')
+         ? $verbose : verbose_nodep_flag ($lang->ccer || 'GEN');
+       my $silent = silent_flag ();
+
+       my %transform = ('EXT'     => $ext,
+                        'PFX'     => $pfx,
+                        'FPFX'    => $fpfx,
+                        'AMDEP'   => $AMDEP,
+                        'FASTDEP' => $FASTDEP,
+                        '-c'      => $lang->compile_flag || '',
+                        # These are not used, but they need to be defined
+                        # so &transform do not complain.
+                        SUBDIROBJ     => 0,
+                        'DERIVED-EXT' => 'BUG',
+                        DIST_SOURCE   => 1,
+                        VERBOSE   => $verbose,
+                        'VERBOSE-NODEP' => $verbose_nodep,
+                        SILENT    => $silent,
+                       );
+
+       # Generate the appropriate rules for this extension.
+       if (((! option 'no-dependencies') && $lang->autodep ne 'no')
+           || defined $lang->compile)
+       {
+           # Some C compilers don't support -c -o.  Use it only if really
+           # needed.
+           my $output_flag = $lang->output_flag || '';
+           $output_flag = '-o'
+             if (! $output_flag
+                 && $lang->name eq 'c'
+                 && option 'subdir-objects');
+
+           # Compute a possible derived extension.
+           # This is not used by depend2.am.
+           my $der_ext = (&{$lang->output_extensions} ($ext))[0];
+
+           # When we output an inference rule like '.c.o:' we
+           # have two cases to consider: either subdir-objects
+           # is used, or it is not.
+           #
+           # In the latter case the rule is used to build objects
+           # in the current directory, and dependencies always
+           # go into './$(DEPDIR)/'.  We can hard-code this value.
+           #
+           # In the former case the rule can be used to build
+           # objects in sub-directories too.  Dependencies should
+           # go into the appropriate sub-directories, e.g.,
+           # 'sub/$(DEPDIR)/'.  The value of this directory
+           # needs to be computed on-the-fly.
+           #
+           # DEPBASE holds the name of this directory, plus the
+           # basename part of the object file (extensions Po, TPo,
+           # Plo, TPlo will be added later as appropriate).  It is
+           # either hardcoded, or a shell variable ('$depbase') that
+           # will be computed by the rule.
+           my $depbase =
+             option ('subdir-objects') ? '$$depbase' : '$(DEPDIR)/$*';
+           $output_rules .=
+             file_contents ($rule_file,
+                            new Automake::Location,
+                            %transform,
+                            GENERIC   => 1,
+
+                            'DERIVED-EXT' => $der_ext,
+
+                            DEPBASE   => $depbase,
+                            BASE      => '$*',
+                            SOURCE    => '$<',
+                            SOURCEFLAG => $sourceflags{$ext} || '',
+                            OBJ       => '$@',
+                            OBJOBJ    => '$@',
+                            LTOBJ     => '$@',
+
+                            COMPILE   => '$(' . $lang->compiler . ')',
+                            LTCOMPILE => '$(LT' . $lang->compiler . ')',
+                            -o        => $output_flag,
+                            SUBDIROBJ => !! option 'subdir-objects');
+       }
+
+       # Now include code for each specially handled object with this
+       # language.
+       my %seen_files = ();
+       foreach my $file (@{$lang_specific_files{$lang->name}})
+       {
+           my ($derived, $source, $obj, $myext, $srcext, %file_transform) = @$file;
+
+           # We might see a given object twice, for instance if it is
+           # used under different conditions.
+           next if defined $seen_files{$obj};
+           $seen_files{$obj} = 1;
+
+           prog_error ("found " . $lang->name .
+                       " in handle_languages, but compiler not defined")
+             unless defined $lang->compile;
+
+           my $obj_compile = $lang->compile;
+
+           # Rewrite each occurrence of 'AM_$flag' in the compile
+           # rule into '${derived}_$flag' if it exists.
+           for my $flag (@{$lang->flags})
+             {
+               my $val = "${derived}_$flag";
+               $obj_compile =~ s/\(AM_$flag\)/\($val\)/
+                 if set_seen ($val);
+             }
+
+           my $libtool_tag = '';
+           if ($lang->libtool_tag && exists $libtool_tags{$lang->libtool_tag})
+             {
+               $libtool_tag = '--tag=' . $lang->libtool_tag . ' '
+             }
+
+           my $ptltflags = "${derived}_LIBTOOLFLAGS";
+           $ptltflags = 'AM_LIBTOOLFLAGS' unless set_seen $ptltflags;
+
+           my $ltverbose = define_verbose_libtool ();
+           my $obj_ltcompile =
+             "\$(LIBTOOL) $ltverbose $libtool_tag\$($ptltflags) \$(LIBTOOLFLAGS) "
+             . "--mode=compile $obj_compile";
+
+           # We _need_ '-o' for per object rules.
+           my $output_flag = $lang->output_flag || '-o';
+
+           my $depbase = dirname ($obj);
+           $depbase = ''
+               if $depbase eq '.';
+           $depbase .= '/'
+               unless $depbase eq '';
+           $depbase .= '$(DEPDIR)/' . basename ($obj);
+
+           $output_rules .=
+             file_contents ($rule_file,
+                            new Automake::Location,
+                            %transform,
+                            GENERIC   => 0,
+
+                            DEPBASE   => $depbase,
+                            BASE      => $obj,
+                            SOURCE    => $source,
+                            SOURCEFLAG => $sourceflags{$srcext} || '',
+                            # Use $myext and not '.o' here, in case
+                            # we are actually building a new source
+                            # file -- e.g. via yacc.
+                            OBJ       => "$obj$myext",
+                            OBJOBJ    => "$obj.obj",
+                            LTOBJ     => "$obj.lo",
+
+                            VERBOSE   => $verbose,
+                            'VERBOSE-NODEP'  => $verbose_nodep,
+                            SILENT    => $silent,
+                            COMPILE   => $obj_compile,
+                            LTCOMPILE => $obj_ltcompile,
+                            -o        => $output_flag,
+                            %file_transform);
+       }
+
+       # The rest of the loop is done once per language.
+       next if defined $done{$lang};
+       $done{$lang} = 1;
+
+       # Load the language dependent Makefile chunks.
+       my %lang = map { uc ($_) => 0 } keys %languages;
+       $lang{uc ($lang->name)} = 1;
+       $output_rules .= file_contents ('lang-compile',
+                                       new Automake::Location,
+                                       %transform, %lang);
+
+       # If the source to a program consists entirely of code from a
+       # 'pure' language, for instance C++ or Fortran 77, then we
+       # don't need the C compiler code.  However if we run into
+       # something unusual then we do generate the C code.  There are
+       # probably corner cases here that do not work properly.
+       # People linking Java code to Fortran code deserve pain.
+       $needs_c ||= ! $lang->pure;
+
+       define_compiler_variable ($lang)
+         if ($lang->compile);
+
+       define_linker_variable ($lang)
+         if ($lang->link);
+
+       require_variables ("$am_file.am", $lang->Name . " source seen",
+                          TRUE, @{$lang->config_vars});
+
+       # Call the finisher.
+       $lang->finish;
+
+       # Flags listed in '->flags' are user variables (per GNU Standards),
+       # they should not be overridden in the Makefile...
+       my @dont_override = @{$lang->flags};
+       # ... and so is LDFLAGS.
+       push @dont_override, 'LDFLAGS' if $lang->link;
+
+       check_user_variables @dont_override;
+    }
+
+    # If the project is entirely C++ or entirely Fortran 77 (i.e., 1
+    # suffix rule was learned), don't bother with the C stuff.  But if
+    # anything else creeps in, then use it.
+    $needs_c = 1
+      if $need_link || suffix_rules_count > 1;
+
+    if ($needs_c)
+      {
+       &define_compiler_variable ($languages{'c'})
+         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');
+}
+
+
+# append_exeext { PREDICATE } $MACRO
+# ----------------------------------
+# Append $(EXEEXT) to each filename in $F appearing in the Makefile
+# variable $MACRO if &PREDICATE($F) is true.  @substitutions@ are
+# ignored.
+#
+# This is typically used on all filenames of *_PROGRAMS, and filenames
+# of TESTS that are programs.
+sub append_exeext (&$)
+{
+  my ($pred, $macro) = @_;
+
+  transform_variable_recursively
+    ($macro, $macro, 'am__EXEEXT', 0, INTERNAL,
+     sub {
+       my ($subvar, $val, $cond, $full_cond) = @_;
+       # Append $(EXEEXT) unless the user did it already, or it's a
+       # @substitution@.
+       $val .= '$(EXEEXT)'
+        if $val !~ /(?:\$\(EXEEXT\)$|^[@]\w+[@]$)/ && &$pred ($val);
+       return $val;
+     });
+}
+
+
+# Check to make sure a source defined in LIBOBJS is not explicitly
+# mentioned.  This is a separate function (as opposed to being inlined
+# in handle_source_transform) because it isn't always appropriate to
+# do this check.
+sub check_libobjs_sources
+{
+  my ($one_file, $unxformed) = @_;
+
+  foreach my $prefix ('', 'EXTRA_', 'dist_', 'nodist_',
+                     'dist_EXTRA_', 'nodist_EXTRA_')
+    {
+      my @files;
+      my $varname = $prefix . $one_file . '_SOURCES';
+      my $var = var ($varname);
+      if ($var)
+       {
+         @files = $var->value_as_list_recursive;
+       }
+      elsif ($prefix eq '')
+       {
+         @files = ($unxformed . '.c');
+       }
+      else
+       {
+         next;
+       }
+
+      foreach my $file (@files)
+       {
+         err_var ($prefix . $one_file . '_SOURCES',
+                  "automatically discovered file '$file' should not" .
+                  " be explicitly mentioned")
+           if defined $libsources{$file};
+       }
+    }
+}
+
+
+# @OBJECTS
+# handle_single_transform ($VAR, $TOPPARENT, $DERIVED, $OBJ, $FILE, %TRANSFORM)
+# -----------------------------------------------------------------------------
+# Does much of the actual work for handle_source_transform.
+# Arguments are:
+#   $VAR is the name of the variable that the source filenames come from
+#   $TOPPARENT is the name of the _SOURCES variable which is being processed
+#   $DERIVED is the name of resulting executable or library
+#   $OBJ is the object extension (e.g., '.lo')
+#   $FILE the source file to transform
+#   %TRANSFORM contains extras arguments to pass to file_contents
+#     when producing explicit rules
+# Result is a list of the names of objects
+# %linkers_used will be updated with any linkers needed
+sub handle_single_transform ($$$$$%)
+{
+    my ($var, $topparent, $derived, $obj, $_file, %transform) = @_;
+    my @files = ($_file);
+    my @result = ();
+
+    # Turn sources into objects.  We use a while loop like this
+    # because we might add to @files in the loop.
+    while (scalar @files > 0)
+    {
+       $_ = shift @files;
+
+       # Configure substitutions in _SOURCES variables are errors.
+       if (/^\@.*\@$/)
+       {
+         my $parent_msg = '';
+         $parent_msg = "\nand is referred to from '$topparent'"
+           if $topparent ne $var->name;
+         err_var ($var,
+                  "'" . $var->name . "' includes configure substitution '$_'"
+                  . $parent_msg . ";\nconfigure " .
+                  "substitutions are not allowed in _SOURCES variables");
+         next;
+       }
+
+       # If the source file is in a subdirectory then the '.o' is put
+       # into the current directory, unless the subdir-objects option
+       # is in effect.
+
+       # Split file name into base and extension.
+       next if ! /^(?:(.*)\/)?([^\/]*)($KNOWN_EXTENSIONS_PATTERN)$/;
+       my $full = $_;
+       my $directory = $1 || '';
+       my $base = $2;
+       my $extension = $3;
+
+       # We must generate a rule for the object if it requires its own flags.
+       my $renamed = 0;
+       my ($linker, $object);
+
+       # This records whether we've seen a derived source file (e.g.
+       # yacc output).
+       my $derived_source = 0;
+
+       # This holds the 'aggregate context' of the file we are
+       # currently examining.  If the file is compiled with
+       # per-object flags, then it will be the name of the object.
+       # Otherwise it will be 'AM'.  This is used by the target hook
+       # language function.
+       my $aggregate = 'AM';
+
+       $extension = &derive_suffix ($extension, $obj);
+       my $lang;
+       if ($extension_map{$extension} &&
+           ($lang = $languages{$extension_map{$extension}}))
+       {
+           # Found the language, so see what it says.
+           &saw_extension ($extension);
+
+           # Do we have per-executable flags for this executable?
+           my $have_per_exec_flags = 0;
+           my @peflags = @{$lang->flags};
+           push @peflags, 'LIBTOOLFLAGS' if $obj eq '.lo';
+           foreach my $flag (@peflags)
+             {
+               if (set_seen ("${derived}_$flag"))
+                 {
+                   $have_per_exec_flags = 1;
+                   last;
+                 }
+             }
+
+           # Note: computed subr call.  The language rewrite function
+           # should return one of the LANG_* constants.  It could
+           # also return a list whose first value is such a constant
+           # and whose second value is a new source extension which
+           # should be applied.  This means this particular language
+           # generates another source file which we must then process
+           # further.
+           my $subr = \&{'lang_' . $lang->name . '_rewrite'};
+           my ($r, $source_extension)
+               = &$subr ($directory, $base, $extension,
+                         $obj, $have_per_exec_flags, $var);
+           # Skip this entry if we were asked not to process it.
+           next if $r == LANG_IGNORE;
+
+           # Now extract linker and other info.
+           $linker = $lang->linker;
+
+           my $this_obj_ext;
+           if (defined $source_extension)
+           {
+               $this_obj_ext = $source_extension;
+               $derived_source = 1;
+           }
+           else
+           {
+               $this_obj_ext = $obj;
+           }
+           $object = $base . $this_obj_ext;
+
+           if ($have_per_exec_flags)
+           {
+               # We have a per-executable flag in effect for this
+               # object.  In this case we rewrite the object's
+               # name to ensure it is unique.
+
+               # We choose the name 'DERIVED_OBJECT' to ensure
+               # (1) uniqueness, and (2) continuity between
+               # invocations.  However, this will result in a
+               # name that is too long for losing systems, in
+               # some situations.  So we provide _SHORTNAME to
+               # override.
+
+               my $dname = $derived;
+               my $var = var ($derived . '_SHORTNAME');
+               if ($var)
+               {
+                   # FIXME: should use the same Condition as
+                   # the _SOURCES variable.  But this is really
+                   # silly overkill -- nobody should have
+                   # conditional shortnames.
+                   $dname = $var->variable_value;
+               }
+               $object = $dname . '-' . $object;
+
+               prog_error ($lang->name . " flags defined without compiler")
+                 if ! defined $lang->compile;
+
+               $renamed = 1;
+           }
+
+           # If rewrite said it was ok, put the object into a
+           # subdir.
+           if ($r == LANG_SUBDIR && $directory ne '')
+           {
+               $object = $directory . '/' . $object;
+           }
+
+           # If the object file has been renamed (because per-target
+           # flags are used) we cannot compile the file with an
+           # inference rule: we need an explicit rule.
+           #
+           # If the source is in a subdirectory and the object is in
+           # the current directory, we also need an explicit rule.
+           #
+           # If both source and object files are in a subdirectory
+           # (this happens when the subdir-objects option is used),
+           # then the inference will work.
+           #
+           # The latter case deserves a historical note.  When the
+           # subdir-objects option was added on 1999-04-11 it was
+           # thought that inferences rules would work for
+           # subdirectory objects too.  Later, on 1999-11-22,
+           # automake was changed to output explicit rules even for
+           # subdir-objects.  Nobody remembers why, but this occurred
+           # soon after the merge of the user-dep-gen-branch so it
+           # might be related.  In late 2003 people complained about
+           # the size of the generated Makefile.ins (libgcj, with
+           # 2200+ subdir objects was reported to have a 9MB
+           # Makefile), so we now rely on inference rules again.
+           # Maybe we'll run across the same issue as in the past,
+           # but at least this time we can document it.  However since
+           # dependency tracking has evolved it is possible that
+           # our old problem no longer exists.
+           # Using inference rules for subdir-objects has been tested
+           # with GNU make, Solaris make, Ultrix make, BSD make,
+           # HP-UX make, and OSF1 make successfully.
+           if ($renamed
+               || ($directory ne '' && ! option 'subdir-objects')
+               # We must also use specific rules for a nodist_ source
+               # if its language requests it.
+               || ($lang->nodist_specific && ! $transform{'DIST_SOURCE'}))
+           {
+               my $obj_sans_ext = substr ($object, 0,
+                                          - length ($this_obj_ext));
+               my $full_ansi;
+               if ($directory ne '')
+                 {
+                       $full_ansi = $directory . '/' . $base . $extension;
+                 }
+               else
+                 {
+                       $full_ansi = $base . $extension;
+                 }
+
+               my @specifics = ($full_ansi, $obj_sans_ext,
+                                # Only use $this_obj_ext in the derived
+                                # source case because in the other case we
+                                # *don't* want $(OBJEXT) to appear here.
+                                ($derived_source ? $this_obj_ext : '.o'),
+                                $extension);
+
+               # If we renamed the object then we want to use the
+               # per-executable flag name.  But if this is simply a
+               # subdir build then we still want to use the AM_ flag
+               # name.
+               if ($renamed)
+                 {
+                   unshift @specifics, $derived;
+                   $aggregate = $derived;
+                 }
+               else
+                 {
+                   unshift @specifics, 'AM';
+                 }
+
+               # Each item on this list is a reference to a list consisting
+               # of four values followed by additional transform flags for
+               # file_contents.  The four values are the derived flag prefix
+               # (e.g. for 'foo_CFLAGS', it is 'foo'), the name of the
+               # source file, the base name of the output file, and
+               # the extension for the object file.
+               push (@{$lang_specific_files{$lang->name}},
+                     [@specifics, %transform]);
+           }
+       }
+       elsif ($extension eq $obj)
+       {
+           # This is probably the result of a direct suffix rule.
+           # In this case we just accept the rewrite.
+           $object = "$base$extension";
+           $object = "$directory/$object" if $directory ne '';
+           $linker = '';
+       }
+       else
+       {
+           # No error message here.  Used to have one, but it was
+           # very unpopular.
+           # FIXME: we could potentially do more processing here,
+           # perhaps treating the new extension as though it were a
+           # new source extension (as above).  This would require
+           # more restructuring than is appropriate right now.
+           next;
+       }
+
+       err_am "object '$object' created by '$full' and '$object_map{$object}'"
+         if (defined $object_map{$object}
+             && $object_map{$object} ne $full);
+
+       my $comp_val = (($object =~ /\.lo$/)
+                       ? COMPILE_LIBTOOL : COMPILE_ORDINARY);
+       (my $comp_obj = $object) =~ s/\.lo$/.\$(OBJEXT)/;
+       if (defined $object_compilation_map{$comp_obj}
+           && $object_compilation_map{$comp_obj} != 0
+           # Only see the error once.
+           && ($object_compilation_map{$comp_obj}
+               != (COMPILE_LIBTOOL | COMPILE_ORDINARY))
+           && $object_compilation_map{$comp_obj} != $comp_val)
+         {
+           err_am "object '$comp_obj' created both with libtool and without";
+         }
+       $object_compilation_map{$comp_obj} |= $comp_val;
+
+       if (defined $lang)
+       {
+           # Let the language do some special magic if required.
+           $lang->target_hook ($aggregate, $object, $full, %transform);
+       }
+
+       if ($derived_source)
+         {
+           prog_error ($lang->name . " has automatic dependency tracking")
+             if $lang->autodep ne 'no';
+           # Make sure this new source file is handled next.  That will
+           # make it appear to be at the right place in the list.
+           unshift (@files, $object);
+           # Distribute derived sources unless the source they are
+           # derived from is not.
+           &push_dist_common ($object)
+             unless ($topparent =~ /^(?:nobase_)?nodist_/);
+           next;
+         }
+
+       $linkers_used{$linker} = 1;
+
+       push (@result, $object);
+
+       if (! defined $object_map{$object})
+       {
+           my @dep_list = ();
+           $object_map{$object} = $full;
+
+           # If resulting object is in subdir, we need to make
+           # sure the subdir exists at build time.
+           if ($object =~ /\//)
+           {
+               # FIXME: check that $DIRECTORY is somewhere in the
+               # project
+
+               # For Java, the way we're handling it right now, a
+               # '..' component doesn't make sense.
+               if ($lang && $lang->name eq 'java' && $object =~ /(\/|^)\.\.\//)
+                 {
+                   err_am "'$full' should not contain a '..' component";
+                 }
+
+               # Make sure object is removed by 'make mostlyclean'.
+               $compile_clean_files{$object} = MOSTLY_CLEAN;
+               # If we have a libtool object then we also must remove
+               # the ordinary .o.
+               if ($object =~ /\.lo$/)
+               {
+                   (my $xobj = $object) =~ s,lo$,\$(OBJEXT),;
+                   $compile_clean_files{$xobj} = MOSTLY_CLEAN;
+
+                   # Remove any libtool object in this directory.
+                   $libtool_clean_directories{$directory} = 1;
+               }
+
+               push (@dep_list, require_build_directory ($directory));
+
+               # If we're generating dependencies, we also want
+               # to make sure that the appropriate subdir of the
+               # .deps directory is created.
+               push (@dep_list,
+                     require_build_directory ($directory . '/$(DEPDIR)'))
+                 unless option 'no-dependencies';
+           }
+
+           &pretty_print_rule ($object . ':', "\t", @dep_list)
+               if scalar @dep_list > 0;
+       }
+
+       # Transform .o or $o file into .P file (for automatic
+       # dependency code).
+        # Properly flatten multiple adjacent slashes, as Solaris 10 make
+        # might fail over them in an include statement.
+        # Leading double slashes may be special, as per Posix, so deal
+        # with them carefully.
+        if ($lang && $lang->autodep ne 'no')
+        {
+            my $depfile = $object;
+            $depfile =~ s/\.([^.]*)$/.P$1/;
+            $depfile =~ s/\$\(OBJEXT\)$/o/;
+            my $maybe_extra_leading_slash = '';
+            $maybe_extra_leading_slash = '/' if $depfile =~ m,^//[^/],;
+            $depfile =~ s,/+,/,g;
+            my $basename = basename ($depfile);
+            # This might make $dirname empty, but we account for that below.
+            (my $dirname = dirname ($depfile)) =~ s/\/*$//;
+            $dirname = $maybe_extra_leading_slash . $dirname;
+            $dep_files{$dirname . '/$(DEPDIR)/' . $basename} = 1;
+        }
+    }
+
+    return @result;
+}
+
+
+# $LINKER
+# define_objects_from_sources ($VAR, $OBJVAR, $NODEFINE, $ONE_FILE,
+#                              $OBJ, $PARENT, $TOPPARENT, $WHERE, %TRANSFORM)
+# ---------------------------------------------------------------------------
+# Define an _OBJECTS variable for a _SOURCES variable (or subvariable)
+#
+# Arguments are:
+#   $VAR is the name of the _SOURCES variable
+#   $OBJVAR is the name of the _OBJECTS variable if known (otherwise
+#     it will be generated and returned).
+#   $NODEFINE is a boolean: if true, $OBJVAR will not be defined (but
+#     work done to determine the linker will be).
+#   $ONE_FILE is the canonical (transformed) name of object to build
+#   $OBJ is the object extension (i.e. either '.o' or '.lo').
+#   $TOPPARENT is the _SOURCES variable being processed.
+#   $WHERE context into which this definition is done
+#   %TRANSFORM extra arguments to pass to file_contents when producing
+#     rules
+#
+# Result is a pair ($LINKER, $OBJVAR):
+#    $LINKER is a boolean, true if a linker is needed to deal with the objects
+sub define_objects_from_sources ($$$$$$$%)
+{
+  my ($var, $objvar, $nodefine, $one_file,
+      $obj, $topparent, $where, %transform) = @_;
+
+  my $needlinker = "";
+
+  transform_variable_recursively
+    ($var, $objvar, 'am__objects', $nodefine, $where,
+     # The transform code to run on each filename.
+     sub {
+       my ($subvar, $val, $cond, $full_cond) = @_;
+       my @trans = handle_single_transform ($subvar, $topparent,
+                                           $one_file, $obj, $val,
+                                           %transform);
+       $needlinker = "true" if @trans;
+       return @trans;
+     });
+
+  return $needlinker;
+}
+
+
+# handle_source_transform ($CANON_TARGET, $TARGET, $OBJEXT, $WHERE, %TRANSFORM)
+# -----------------------------------------------------------------------------
+# Handle SOURCE->OBJECT transform for one program or library.
+# Arguments are:
+#   canonical (transformed) name of target to build
+#   actual target of object to build
+#   object extension (i.e., either '.o' or '$o')
+#   location of the source variable
+#   extra arguments to pass to file_contents when producing rules
+# Return the name of the linker variable that must be used.
+# Empty return means just use 'LINK'.
+sub handle_source_transform ($$$$%)
+{
+    # one_file is canonical name.  unxformed is given name.  obj is
+    # object extension.
+    my ($one_file, $unxformed, $obj, $where, %transform) = @_;
+
+    my $linker = '';
+
+    # No point in continuing if _OBJECTS is defined.
+    return if reject_var ($one_file . '_OBJECTS',
+                         $one_file . '_OBJECTS should not be defined');
+
+    my %used_pfx = ();
+    my $needlinker;
+    %linkers_used = ();
+    foreach my $prefix ('', 'EXTRA_', 'dist_', 'nodist_',
+                       'dist_EXTRA_', 'nodist_EXTRA_')
+    {
+       my $varname = $prefix . $one_file . "_SOURCES";
+       my $var = var $varname;
+       next unless $var;
+
+       # We are going to define _OBJECTS variables using the prefix.
+       # Then we glom them all together.  So we can't use the null
+       # prefix here as we need it later.
+       my $xpfx = ($prefix eq '') ? 'am_' : $prefix;
+
+       # Keep track of which prefixes we saw.
+       $used_pfx{$xpfx} = 1
+         unless $prefix =~ /EXTRA_/;
+
+       push @sources, "\$($varname)";
+       push @dist_sources, shadow_unconditionally ($varname, $where)
+         unless (option ('no-dist') || $prefix =~ /^nodist_/);
+
+       $needlinker |=
+           define_objects_from_sources ($varname,
+                                        $xpfx . $one_file . '_OBJECTS',
+                                        $prefix =~ /EXTRA_/,
+                                        $one_file, $obj, $varname, $where,
+                                        DIST_SOURCE => ($prefix !~ /^nodist_/),
+                                        %transform);
+    }
+    if ($needlinker)
+    {
+       $linker ||= &resolve_linker (%linkers_used);
+    }
+
+    my @keys = sort keys %used_pfx;
+    if (scalar @keys == 0)
+    {
+       # The default source for libfoo.la is libfoo.c, but for
+       # backward compatibility we first look at libfoo_la.c,
+       # if no default source suffix is given.
+       my $old_default_source = "$one_file.c";
+       my $ext_var = var ('AM_DEFAULT_SOURCE_EXT');
+       my $default_source_ext = $ext_var ? variable_value ($ext_var) : '.c';
+       msg_var ('unsupported', $ext_var, $ext_var->name . " can assume at most one value")
+         if $default_source_ext =~ /[\t ]/;
+       (my $default_source = $unxformed) =~ s,(\.[^./\\]*)?$,$default_source_ext,;
+       if ($old_default_source ne $default_source
+           && !$ext_var
+           && (rule $old_default_source
+               || rule '$(srcdir)/' . $old_default_source
+               || rule '${srcdir}/' . $old_default_source
+               || -f $old_default_source))
+         {
+           my $loc = $where->clone;
+           $loc->pop_context;
+           msg ('obsolete', $loc,
+                "the default source for '$unxformed' has been changed "
+                . "to '$default_source'.\n(Using '$old_default_source' for "
+                . "backward compatibility.)");
+           $default_source = $old_default_source;
+         }
+       # If a rule exists to build this source with a $(srcdir)
+       # prefix, use that prefix in our variables too.  This is for
+       # the sake of BSD Make.
+       if (rule '$(srcdir)/' . $default_source
+           || rule '${srcdir}/' . $default_source)
+         {
+           $default_source = '$(srcdir)/' . $default_source;
+         }
+
+       &define_variable ($one_file . "_SOURCES", $default_source, $where);
+       push (@sources, $default_source);
+       push (@dist_sources, $default_source);
+
+       %linkers_used = ();
+       my (@result) =
+         handle_single_transform ($one_file . '_SOURCES',
+                                  $one_file . '_SOURCES',
+                                  $one_file, $obj,
+                                  $default_source, %transform);
+       $linker ||= &resolve_linker (%linkers_used);
+       define_pretty_variable ($one_file . '_OBJECTS', TRUE, $where, @result);
+    }
+    else
+    {
+       @keys = map { '$(' . $_ . $one_file . '_OBJECTS)' } @keys;
+       define_pretty_variable ($one_file . '_OBJECTS', TRUE, $where, @keys);
+    }
+
+    # If we want to use 'LINK' we must make sure it is defined.
+    if ($linker eq '')
+    {
+       $need_link = 1;
+    }
+
+    return $linker;
+}
+
+
+# handle_lib_objects ($XNAME, $VAR)
+# ---------------------------------
+# Special-case ALLOCA and LIBOBJS substitutions in _LDADD or _LIBADD variables.
+# Also, generate _DEPENDENCIES variable if appropriate.
+# Arguments are:
+#   transformed name of object being built, or empty string if no object
+#   name of _LDADD/_LIBADD-type variable to examine
+# Returns 1 if LIBOBJS seen, 0 otherwise.
+sub handle_lib_objects
+{
+  my ($xname, $varname) = @_;
+
+  my $var = var ($varname);
+  prog_error "'$varname' undefined"
+    unless $var;
+  prog_error "unexpected variable name '$varname'"
+    unless $varname =~ /^(.*)(?:LIB|LD)ADD$/;
+  my $prefix = $1 || 'AM_';
+
+  my $seen_libobjs = 0;
+  my $flagvar = 0;
+
+  transform_variable_recursively
+    ($varname, $xname . '_DEPENDENCIES', 'am__DEPENDENCIES',
+     ! $xname, INTERNAL,
+     # Transformation function, run on each filename.
+     sub {
+       my ($subvar, $val, $cond, $full_cond) = @_;
+
+       if ($val =~ /^-/)
+        {
+          # Skip -lfoo and -Ldir silently; these are explicitly allowed.
+          if ($val !~ /^-[lL]/ &&
+              # Skip -dlopen and -dlpreopen; these are explicitly allowed
+              # for Libtool libraries or programs.  (Actually we are a bit
+              # lax here since this code also applies to non-libtool
+              # libraries or programs, for which -dlopen and -dlopreopen
+              # are pure nonsense.  Diagnosing this doesn't seem very
+              # important: the developer will quickly get complaints from
+              # the linker.)
+              $val !~ /^-dl(?:pre)?open$/ &&
+              # Only get this error once.
+              ! $flagvar)
+            {
+              $flagvar = 1;
+              # FIXME: should display a stack of nested variables
+              # as context when $var != $subvar.
+              err_var ($var, "linker flags such as '$val' belong in "
+                       . "'${prefix}LDFLAGS'");
+            }
+          return ();
+        }
+       elsif ($val !~ /^\@.*\@$/)
+        {
+          # Assume we have a file of some sort, and output it into the
+          # dependency variable.  Autoconf substitutions are not output;
+          # rarely is a new dependency substituted into e.g. foo_LDADD
+          # -- but bad things (e.g. -lX11) are routinely substituted.
+          # Note that LIBOBJS and ALLOCA are exceptions to this rule,
+          # and handled specially below.
+          return $val;
+        }
+       elsif ($val =~ /^\@(LT)?LIBOBJS\@$/)
+        {
+          handle_LIBOBJS ($subvar, $cond, $1);
+          $seen_libobjs = 1;
+          return $val;
+        }
+       elsif ($val =~ /^\@(LT)?ALLOCA\@$/)
+        {
+          handle_ALLOCA ($subvar, $cond, $1);
+          return $val;
+        }
+       else
+        {
+          return ();
+        }
+     });
+
+  return $seen_libobjs;
+}
+
+# handle_LIBOBJS_or_ALLOCA ($VAR)
+# -------------------------------
+# Definitions common to LIBOBJS and ALLOCA.
+# VAR should be one of LIBOBJS, LTLIBOBJS, ALLOCA, or LTALLOCA.
+sub handle_LIBOBJS_or_ALLOCA ($)
+{
+  my ($var) = @_;
+
+  my $dir = '';
+
+  # If LIBOBJS files must be built in another directory we have
+  # to define LIBOBJDIR and ensure the files get cleaned.
+  # Otherwise LIBOBJDIR can be left undefined, and the cleaning
+  # is achieved by 'rm -f *.$(OBJEXT)' in compile.am.
+  if ($config_libobj_dir
+      && $relative_dir ne $config_libobj_dir)
+    {
+      if (option 'subdir-objects')
+       {
+         # In the top-level Makefile we do not use $(top_builddir), because
+         # we are already there, and since the targets are built without
+         # a $(top_builddir), it helps BSD Make to match them with
+         # dependencies.
+         $dir = "$config_libobj_dir/" if $config_libobj_dir ne '.';
+         $dir = "$topsrcdir/$dir" if $relative_dir ne '.';
+         define_variable ('LIBOBJDIR', "$dir", INTERNAL);
+         $clean_files{"\$($var)"} = MOSTLY_CLEAN;
+         # If LTLIBOBJS is used, we must also clear LIBOBJS (which might
+         # be created by libtool as a side-effect of creating LTLIBOBJS).
+         $clean_files{"\$($var)"} = MOSTLY_CLEAN if $var =~ s/^LT//;
+       }
+      else
+       {
+         error ("'\$($var)' cannot be used outside '$config_libobj_dir' if"
+                . " 'subdir-objects' is not set");
+       }
+    }
+
+  return $dir;
+}
+
+sub handle_LIBOBJS ($$$)
+{
+  my ($var, $cond, $lt) = @_;
+  my $myobjext = $lt ? 'lo' : 'o';
+  $lt ||= '';
+
+  $var->requires_variables ("\@${lt}LIBOBJS\@ used", $lt . 'LIBOBJS')
+    if ! keys %libsources;
+
+  my $dir = handle_LIBOBJS_or_ALLOCA "${lt}LIBOBJS";
+
+  foreach my $iter (keys %libsources)
+    {
+      if ($iter =~ /\.[cly]$/)
+       {
+         &saw_extension ($&);
+         &saw_extension ('.c');
+       }
+
+      if ($iter =~ /\.h$/)
+       {
+         require_libsource_with_macro ($cond, $var, FOREIGN, $iter);
+       }
+      elsif ($iter ne 'alloca.c')
+       {
+         my $rewrite = $iter;
+         $rewrite =~ s/\.c$/.P$myobjext/;
+         $dep_files{$dir . '$(DEPDIR)/' . $rewrite} = 1;
+         $rewrite = "^" . quotemeta ($iter) . "\$";
+         # Only require the file if it is not a built source.
+         my $bs = var ('BUILT_SOURCES');
+         if (! $bs || ! grep (/$rewrite/, $bs->value_as_list_recursive))
+           {
+             require_libsource_with_macro ($cond, $var, FOREIGN, $iter);
+           }
+       }
+    }
+}
+
+sub handle_ALLOCA ($$$)
+{
+  my ($var, $cond, $lt) = @_;
+  my $myobjext = $lt ? 'lo' : 'o';
+  $lt ||= '';
+  my $dir = handle_LIBOBJS_or_ALLOCA "${lt}ALLOCA";
+
+  $var->requires_variables ("\@${lt}ALLOCA\@ used", $lt . 'ALLOCA');
+  $dep_files{$dir . '$(DEPDIR)/alloca.P' . $myobjext} = 1;
+  require_libsource_with_macro ($cond, $var, FOREIGN, 'alloca.c');
+  &saw_extension ('.c');
+}
+
+# Canonicalize the input parameter
+sub canonicalize
+{
+    my ($string) = @_;
+    $string =~ tr/A-Za-z0-9_\@/_/c;
+    return $string;
+}
+
+# Canonicalize a name, and check to make sure the non-canonical name
+# is never used.  Returns canonical name.  Arguments are name and a
+# list of suffixes to check for.
+sub check_canonical_spelling
+{
+  my ($name, @suffixes) = @_;
+
+  my $xname = &canonicalize ($name);
+  if ($xname ne $name)
+    {
+      foreach my $xt (@suffixes)
+       {
+         reject_var ("$name$xt", "use '$xname$xt', not '$name$xt'");
+       }
+    }
+
+  return $xname;
+}
+
+
+# handle_compile ()
+# -----------------
+# Set up the compile suite.
+sub handle_compile ()
+{
+   return if ! $must_handle_compiled_objects;
+
+    # Boilerplate.
+    my $default_includes = '';
+    if (! option 'nostdinc')
+      {
+       my @incs = ('-I.', subst ('am__isrc'));
+
+       my $var = var 'CONFIG_HEADER';
+       if ($var)
+         {
+           foreach my $hdr (split (' ', $var->variable_value))
+             {
+               push @incs, '-I' . dirname ($hdr);
+             }
+         }
+       # We want '-I. -I$(srcdir)', but the latter -I is redundant
+       # and unaesthetic in non-VPATH builds.  We use `-I.@am__isrc@`
+       # instead.  It will be replaced by '-I.' or '-I. -I$(srcdir)'.
+       # Items in CONFIG_HEADER are never in $(srcdir) so it is safe
+       # to just put @am__isrc@ right after '-I.', without a space.
+       ($default_includes = ' ' . uniq (@incs)) =~ s/ @/@/;
+      }
+
+    my (@mostly_rms, @dist_rms);
+    foreach my $item (sort keys %compile_clean_files)
+    {
+       if ($compile_clean_files{$item} == MOSTLY_CLEAN)
+       {
+           push (@mostly_rms, "\t-rm -f $item");
+       }
+       elsif ($compile_clean_files{$item} == DIST_CLEAN)
+       {
+           push (@dist_rms, "\t-rm -f $item");
+       }
+       else
+       {
+         prog_error 'invalid entry in %compile_clean_files';
+       }
+    }
+
+    my ($coms, $vars, $rules) =
+      &file_contents_internal (1, "$libdir/am/compile.am",
+                              new Automake::Location,
+                              ('DEFAULT_INCLUDES' => $default_includes,
+                               'MOSTLYRMS' => join ("\n", @mostly_rms),
+                               'DISTRMS' => join ("\n", @dist_rms)));
+    $output_vars .= $vars;
+    $output_rules .= "$coms$rules";
+}
+
+# handle_libtool ()
+# -----------------
+# Handle libtool rules.
+sub handle_libtool
+{
+  return unless var ('LIBTOOL');
+
+  # Libtool requires some files, but only at top level.
+  # (Starting with Libtool 2.0 we do not have to bother.  These
+  # requirements are done with AC_REQUIRE_AUX_FILE.)
+  require_conf_file_with_macro (TRUE, 'LIBTOOL', FOREIGN, @libtool_files)
+    if $relative_dir eq '.' && ! $libtool_new_api;
+
+  my @libtool_rms;
+  foreach my $item (sort keys %libtool_clean_directories)
+    {
+      my $dir = ($item eq '.') ? '' : "$item/";
+      # .libs is for Unix, _libs for DOS.
+      push (@libtool_rms, "\t-rm -rf ${dir}.libs ${dir}_libs");
+    }
+
+  check_user_variables 'LIBTOOLFLAGS';
+
+  # Output the libtool compilation rules.
+  $output_rules .= &file_contents ('libtool',
+                                  new Automake::Location,
+                                  LTRMS => join ("\n", @libtool_rms));
+}
+
+# handle_programs ()
+# ------------------
+# Handle C programs.
+sub handle_programs
+{
+  my @proglist = &am_install_var ('progs', 'PROGRAMS',
+                                 'bin', 'sbin', 'libexec', 'pkglibexec',
+                                 'noinst', 'check');
+  return if ! @proglist;
+  $must_handle_compiled_objects = 1;
+
+  my $seen_global_libobjs =
+    var ('LDADD') && &handle_lib_objects ('', 'LDADD');
+
+  foreach my $pair (@proglist)
+    {
+      my ($where, $one_file) = @$pair;
+
+      my $seen_libobjs = 0;
+      my $obj = '.$(OBJEXT)';
+
+      $known_programs{$one_file} = $where;
+
+      # Canonicalize names and check for misspellings.
+      my $xname = &check_canonical_spelling ($one_file, '_LDADD', '_LDFLAGS',
+                                            '_SOURCES', '_OBJECTS',
+                                            '_DEPENDENCIES');
+
+      $where->push_context ("while processing program '$one_file'");
+      $where->set (INTERNAL->get);
+
+      my $linker = &handle_source_transform ($xname, $one_file, $obj, $where,
+                                            NONLIBTOOL => 1, LIBTOOL => 0);
+
+      if (var ($xname . "_LDADD"))
+       {
+         $seen_libobjs = &handle_lib_objects ($xname, $xname . '_LDADD');
+       }
+      else
+       {
+         # User didn't define prog_LDADD override.  So do it.
+         &define_variable ($xname . '_LDADD', '$(LDADD)', $where);
+
+         # This does a bit too much work.  But we need it to
+         # generate _DEPENDENCIES when appropriate.
+         if (var ('LDADD'))
+           {
+             $seen_libobjs = &handle_lib_objects ($xname, 'LDADD');
+           }
+       }
+
+      reject_var ($xname . '_LIBADD',
+                 "use '${xname}_LDADD', not '${xname}_LIBADD'");
+
+      set_seen ($xname . '_DEPENDENCIES');
+      set_seen ('EXTRA_' . $xname . '_DEPENDENCIES');
+      set_seen ($xname . '_LDFLAGS');
+
+      # Determine program to use for link.
+      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.
+      my $dirstamp = require_build_directory_maybe ($one_file);
+
+      $libtool_clean_directories{dirname ($one_file)} = 1;
+
+      $output_rules .= &file_contents ('program',
+                                      $where,
+                                      PROGRAM  => $one_file,
+                                      XPROGRAM => $xname,
+                                      XLINK    => $xlink,
+                                      VERBOSE  => $vlink,
+                                      DIRSTAMP => $dirstamp,
+                                      EXEEXT   => '$(EXEEXT)');
+
+      if ($seen_libobjs || $seen_global_libobjs)
+       {
+         if (var ($xname . '_LDADD'))
+           {
+             &check_libobjs_sources ($xname, $xname . '_LDADD');
+           }
+         elsif (var ('LDADD'))
+           {
+             &check_libobjs_sources ($xname, 'LDADD');
+           }
+       }
+    }
+}
+
+
+# handle_libraries ()
+# -------------------
+# Handle libraries.
+sub handle_libraries
+{
+  my @liblist = &am_install_var ('libs', 'LIBRARIES',
+                                'lib', 'pkglib', 'noinst', 'check');
+  return if ! @liblist;
+  $must_handle_compiled_objects = 1;
+
+  my @prefix = am_primary_prefixes ('LIBRARIES', 0, 'lib', 'pkglib',
+                                   'noinst', 'check');
+
+  if (@prefix)
+    {
+      my $var = rvar ($prefix[0] . '_LIBRARIES');
+      $var->requires_variables ('library used', 'RANLIB');
+    }
+
+  &define_variable ('AR', 'ar', INTERNAL);
+  &define_variable ('ARFLAGS', 'cru', INTERNAL);
+  &define_verbose_tagvar ('AR');
+
+  foreach my $pair (@liblist)
+    {
+      my ($where, $onelib) = @$pair;
+
+      my $seen_libobjs = 0;
+      # Check that the library fits the standard naming convention.
+      my $bn = basename ($onelib);
+      if ($bn !~ /^lib.*\.a$/)
+       {
+         $bn =~ s/^(?:lib)?(.*?)(?:\.[^.]*)?$/lib$1.a/;
+         my $suggestion = dirname ($onelib) . "/$bn";
+         $suggestion =~ s|^\./||g;
+         msg ('error-gnu/warn', $where,
+              "'$onelib' is not a standard library name\n"
+              . "did you mean '$suggestion'?")
+       }
+
+      ($known_libraries{$onelib} = $bn) =~ s/\.a$//;
+
+      $where->push_context ("while processing library '$onelib'");
+      $where->set (INTERNAL->get);
+
+      my $obj = '.$(OBJEXT)';
+
+      # Canonicalize names and check for misspellings.
+      my $xlib = &check_canonical_spelling ($onelib, '_LIBADD', '_SOURCES',
+                                           '_OBJECTS', '_DEPENDENCIES',
+                                           '_AR');
+
+      if (! var ($xlib . '_AR'))
+       {
+         &define_variable ($xlib . '_AR', '$(AR) $(ARFLAGS)', $where);
+       }
+
+      # Generate support for conditional object inclusion in
+      # libraries.
+      if (var ($xlib . '_LIBADD'))
+       {
+         if (&handle_lib_objects ($xlib, $xlib . '_LIBADD'))
+           {
+             $seen_libobjs = 1;
+           }
+       }
+      else
+       {
+         &define_variable ($xlib . "_LIBADD", '', $where);
+       }
+
+      reject_var ($xlib . '_LDADD',
+                 "use '${xlib}_LIBADD', not '${xlib}_LDADD'");
+
+      # Make sure we at look at this.
+      set_seen ($xlib . '_DEPENDENCIES');
+      set_seen ('EXTRA_' . $xlib . '_DEPENDENCIES');
+
+      &handle_source_transform ($xlib, $onelib, $obj, $where,
+                               NONLIBTOOL => 1, LIBTOOL => 0);
+
+      # 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);
+
+      if ($seen_libobjs)
+       {
+         if (var ($xlib . '_LIBADD'))
+           {
+             &check_libobjs_sources ($xlib, $xlib . '_LIBADD');
+           }
+       }
+
+      if (! $seen_ar)
+       {
+         msg ('extra-portability', $where,
+              "'$onelib': linking libraries using a non-POSIX\n"
+              . "archiver requires 'AM_PROG_AR' in '$configure_ac'")
+       }
+    }
+}
+
+
+# handle_ltlibraries ()
+# ---------------------
+# Handle shared libraries.
+sub handle_ltlibraries
+{
+  my @liblist = &am_install_var ('ltlib', 'LTLIBRARIES',
+                                'noinst', 'lib', 'pkglib', 'check');
+  return if ! @liblist;
+  $must_handle_compiled_objects = 1;
+
+  my @prefix = am_primary_prefixes ('LTLIBRARIES', 0, 'lib', 'pkglib',
+                                   'noinst', 'check');
+
+  if (@prefix)
+    {
+      my $var = rvar ($prefix[0] . '_LTLIBRARIES');
+      $var->requires_variables ('Libtool library used', 'LIBTOOL');
+    }
+
+  my %instdirs = ();
+  my %instsubdirs = ();
+  my %instconds = ();
+  my %liblocations = ();       # Location (in Makefile.am) of each library.
+
+  foreach my $key (@prefix)
+    {
+      # Get the installation directory of each library.
+      my $dir = $key;
+      my $strip_subdir = 1;
+      if ($dir =~ /^nobase_/)
+        {
+         $dir =~ s/^nobase_//;
+         $strip_subdir = 0;
+       }
+      my $var = rvar ($key . '_LTLIBRARIES');
+
+      # We reject libraries which are installed in several places
+      # in the same condition, because we can only specify one
+      # '-rpath' option.
+      $var->traverse_recursively
+       (sub
+        {
+          my ($var, $val, $cond, $full_cond) = @_;
+          my $hcond = $full_cond->human;
+          my $where = $var->rdef ($cond)->location;
+          my $ldir = '';
+          $ldir = '/' . dirname ($val)
+            if (!$strip_subdir);
+          # A library cannot be installed in different directories
+          # in overlapping conditions.
+          if (exists $instconds{$val})
+            {
+              my ($msg, $acond) =
+                $instconds{$val}->ambiguous_p ($val, $full_cond);
+
+              if ($msg)
+                {
+                  error ($where, $msg, partial => 1);
+                  my $dirtxt = "installed " . ($strip_subdir ? "in" : "below") . " '$dir'";
+                  $dirtxt = "built for '$dir'"
+                    if $dir eq 'EXTRA' || $dir eq 'noinst' || $dir eq 'check';
+                  my $dircond =
+                    $full_cond->true ? "" : " in condition $hcond";
+
+                  error ($where, "'$val' should be $dirtxt$dircond ...",
+                         partial => 1);
+
+                  my $hacond = $acond->human;
+                  my $adir = $instdirs{$val}{$acond};
+                  my $adirtxt = "installed in '$adir'";
+                  $adirtxt = "built for '$adir'"
+                    if ($adir eq 'EXTRA' || $adir eq 'noinst'
+                        || $adir eq 'check');
+                  my $adircond = $acond->true ? "" : " in condition $hacond";
+
+                  my $onlyone = ($dir ne $adir) ?
+                    ("\nLibtool libraries can be built for only one "
+                     . "destination") : "";
+
+                  error ($liblocations{$val}{$acond},
+                         "... and should also be $adirtxt$adircond.$onlyone");
+                  return;
+                }
+            }
+          else
+            {
+              $instconds{$val} = new Automake::DisjConditions;
+            }
+          $instdirs{$val}{$full_cond} = $dir;
+          $instsubdirs{$val}{$full_cond} = $ldir;
+          $liblocations{$val}{$full_cond} = $where;
+          $instconds{$val} = $instconds{$val}->merge ($full_cond);
+        },
+        sub
+        {
+          return ();
+        },
+        skip_ac_subst => 1);
+    }
+
+  foreach my $pair (@liblist)
+    {
+      my ($where, $onelib) = @$pair;
+
+      my $seen_libobjs = 0;
+      my $obj = '.lo';
+
+      # Canonicalize names and check for misspellings.
+      my $xlib = &check_canonical_spelling ($onelib, '_LIBADD', '_LDFLAGS',
+                                           '_SOURCES', '_OBJECTS',
+                                           '_DEPENDENCIES');
+
+      # Check that the library fits the standard naming convention.
+      my $libname_rx = '^lib.*\.la';
+      my $ldvar = var ("${xlib}_LDFLAGS") || var ('AM_LDFLAGS');
+      my $ldvar2 = var ('LDFLAGS');
+      if (($ldvar && grep (/-module/, $ldvar->value_as_list_recursive))
+         || ($ldvar2 && grep (/-module/, $ldvar2->value_as_list_recursive)))
+       {
+         # Relax name checking for libtool modules.
+         $libname_rx = '\.la';
+       }
+
+      my $bn = basename ($onelib);
+      if ($bn !~ /$libname_rx$/)
+       {
+         my $type = 'library';
+         if ($libname_rx eq '\.la')
+           {
+             $bn =~ s/^(lib|)(.*?)(?:\.[^.]*)?$/$1$2.la/;
+             $type = 'module';
+           }
+         else
+           {
+             $bn =~ s/^(?:lib)?(.*?)(?:\.[^.]*)?$/lib$1.la/;
+           }
+         my $suggestion = dirname ($onelib) . "/$bn";
+         $suggestion =~ s|^\./||g;
+         msg ('error-gnu/warn', $where,
+              "'$onelib' is not a standard libtool $type name\n"
+              . "did you mean '$suggestion'?")
+       }
+
+      ($known_libraries{$onelib} = $bn) =~ s/\.la$//;
+
+      $where->push_context ("while processing Libtool library '$onelib'");
+      $where->set (INTERNAL->get);
+
+      # Make sure we look at these.
+      set_seen ($xlib . '_LDFLAGS');
+      set_seen ($xlib . '_DEPENDENCIES');
+      set_seen ('EXTRA_' . $xlib . '_DEPENDENCIES');
+
+      # Generate support for conditional object inclusion in
+      # libraries.
+      if (var ($xlib . '_LIBADD'))
+       {
+         if (&handle_lib_objects ($xlib, $xlib . '_LIBADD'))
+           {
+             $seen_libobjs = 1;
+           }
+       }
+      else
+       {
+         &define_variable ($xlib . "_LIBADD", '', $where);
+       }
+
+      reject_var ("${xlib}_LDADD",
+                 "use '${xlib}_LIBADD', not '${xlib}_LDADD'");
+
+
+      my $linker = &handle_source_transform ($xlib, $onelib, $obj, $where,
+                                            NONLIBTOOL => 0, LIBTOOL => 1);
+
+      # Determine program to use for link.
+      my($xlink, $vlink) = &define_per_target_linker_variable ($linker, $xlib);
+      $vlink = verbose_flag ($vlink || 'GEN');
+
+      my $rpathvar = "am_${xlib}_rpath";
+      my $rpath = "\$($rpathvar)";
+      foreach my $rcond ($instconds{$onelib}->conds)
+       {
+         my $val;
+         if ($instdirs{$onelib}{$rcond} eq 'EXTRA'
+             || $instdirs{$onelib}{$rcond} eq 'noinst'
+             || $instdirs{$onelib}{$rcond} eq 'check')
+           {
+             # It's an EXTRA_ library, so we can't specify -rpath,
+             # because we don't know where the library will end up.
+             # The user probably knows, but generally speaking automake
+             # doesn't -- and in fact configure could decide
+             # dynamically between two different locations.
+             $val = '';
+           }
+         else
+           {
+             $val = ('-rpath $(' . $instdirs{$onelib}{$rcond} . 'dir)');
+             $val .= $instsubdirs{$onelib}{$rcond}
+               if defined $instsubdirs{$onelib}{$rcond};
+           }
+         if ($rcond->true)
+           {
+             # If $rcond is true there is only one condition and
+             # there is no point defining an helper variable.
+             $rpath = $val;
+           }
+         else
+           {
+             define_pretty_variable ($rpathvar, $rcond, INTERNAL, $val);
+           }
+       }
+
+      # If the resulting library lies into a subdirectory,
+      # make sure this directory will exist.
+      my $dirstamp = require_build_directory_maybe ($onelib);
+
+      # Remember to cleanup .libs/ in this directory.
+      my $dirname = dirname $onelib;
+      $libtool_clean_directories{$dirname} = 1;
+
+      $output_rules .= &file_contents ('ltlibrary',
+                                      $where,
+                                      LTLIBRARY  => $onelib,
+                                      XLTLIBRARY => $xlib,
+                                      RPATH      => $rpath,
+                                      XLINK      => $xlink,
+                                      VERBOSE    => $vlink,
+                                      DIRSTAMP   => $dirstamp);
+      if ($seen_libobjs)
+       {
+         if (var ($xlib . '_LIBADD'))
+           {
+             &check_libobjs_sources ($xlib, $xlib . '_LIBADD');
+           }
+       }
+
+      if (! $seen_ar)
+       {
+         msg ('extra-portability', $where,
+              "'$onelib': linking libtool libraries using a non-POSIX\n"
+              . "archiver requires 'AM_PROG_AR' in '$configure_ac'")
+       }
+    }
+}
+
+# See if any _SOURCES variable were misspelled.
+sub check_typos ()
+{
+  # It is ok if the user sets this particular variable.
+  set_seen 'AM_LDFLAGS';
+
+  foreach my $primary ('SOURCES', 'LIBADD', 'LDADD', 'LDFLAGS', 'DEPENDENCIES')
+    {
+      foreach my $var (variables $primary)
+       {
+         my $varname = $var->name;
+         # A configure variable is always legitimate.
+         next if exists $configure_vars{$varname};
+
+         for my $cond ($var->conditions->conds)
+           {
+             $varname =~ /^(?:EXTRA_)?(?:nobase_)?(?:dist_|nodist_)?(.*)_[[:alnum:]]+$/;
+             msg_var ('syntax', $var, "variable '$varname' is defined but no"
+                      . " program or\nlibrary has '$1' as canonical name"
+                      . " (possible typo)")
+               unless $var->rdef ($cond)->seen;
+           }
+       }
+    }
+}
+
+
+# Handle scripts.
+sub handle_scripts
+{
+    # NOTE we no longer automatically clean SCRIPTS, because it is
+    # useful to sometimes distribute scripts verbatim.  This happens
+    # e.g. in Automake itself.
+    &am_install_var ('-candist', 'scripts', 'SCRIPTS',
+                    'bin', 'sbin', 'libexec', 'pkglibexec', 'pkgdata',
+                    'noinst', 'check');
+}
+
+
+
+
+## ------------------------ ##
+## Handling Texinfo files.  ##
+## ------------------------ ##
+
+# ($OUTFILE, $VFILE, @CLEAN_FILES)
+# &scan_texinfo_file ($FILENAME)
+# ------------------------------
+# $OUTFILE     - name of the info file produced by $FILENAME.
+# $VFILE       - name of the version.texi file used (undef if none).
+# @CLEAN_FILES - list of byproducts (indexes etc.)
+sub scan_texinfo_file ($)
+{
+  my ($filename) = @_;
+
+  # Some of the following extensions are always created, no matter
+  # whether indexes are used or not.  Other (like cps, fns, ... pgs)
+  # are only created when they are used.  We used to scan $FILENAME
+  # for their use, but that is not enough: they could be used in
+  # included files.  We can't scan included files because we don't
+  # know the include path.  Therefore we always erase these files, no
+  # matter whether they are used or not.
+  #
+  # (tmp is only created if an @macro is used and a certain e-TeX
+  # feature is not available.)
+  my %clean_suffixes =
+    map { $_ => 1 } (qw(aux log toc tmp
+                       cp cps
+                       fn fns
+                       ky kys
+                       vr vrs
+                       tp tps
+                       pg pgs)); # grep 'new.*index' texinfo.tex
+
+  my $texi = new Automake::XFile "< $filename";
+  verb "reading $filename";
+
+  my ($outfile, $vfile);
+  while ($_ = $texi->getline)
+    {
+      if (/^\@setfilename +(\S+)/)
+       {
+         # Honor only the first @setfilename.  (It's possible to have
+         # more occurrences later if the manual shows examples of how
+         # to use @setfilename...)
+         next if $outfile;
+
+         $outfile = $1;
+         if ($outfile =~ /\.([^.]+)$/ && $1 ne 'info')
+           {
+             error ("$filename:$.",
+                    "output '$outfile' has unrecognized extension");
+             return;
+           }
+       }
+      # A "version.texi" file is actually any file whose name matches
+      # "vers*.texi".
+      elsif (/^\@include\s+(vers[^.]*\.texi)\s*$/)
+       {
+         $vfile = $1;
+       }
+
+      # Try to find new or unused indexes.
+
+      # Creating a new category of index.
+      elsif (/^\@def(code)?index (\w+)/)
+       {
+         $clean_suffixes{$2} = 1;
+         $clean_suffixes{"$2s"} = 1;
+       }
+
+      # Merging an index into an another.
+      elsif (/^\@syn(code)?index (\w+) (\w+)/)
+       {
+         delete $clean_suffixes{"$2s"};
+         $clean_suffixes{"$3s"} = 1;
+       }
+
+    }
+
+  if (! $outfile)
+    {
+      err_am "'$filename' missing \@setfilename";
+      return;
+    }
+
+  my $infobase = basename ($filename);
+  $infobase =~ s/\.te?xi(nfo)?$//;
+  return ($outfile, $vfile,
+         map { "$infobase.$_" } (sort keys %clean_suffixes));
+}
+
+
+# ($DIRSTAMP, @CLEAN_FILES)
+# output_texinfo_build_rules ($SOURCE, $DEST, $INSRC, @DEPENDENCIES)
+# ------------------------------------------------------------------
+# SOURCE - the source Texinfo file
+# DEST - the destination Info file
+# INSRC - whether DEST should be built in the source tree
+# DEPENDENCIES - known dependencies
+sub output_texinfo_build_rules ($$$@)
+{
+  my ($source, $dest, $insrc, @deps) = @_;
+
+  # Split 'a.texi' into 'a' and '.texi'.
+  my ($spfx, $ssfx) = ($source =~ /^(.*?)(\.[^.]*)?$/);
+  my ($dpfx, $dsfx) = ($dest =~ /^(.*?)(\.[^.]*)?$/);
+
+  $ssfx ||= "";
+  $dsfx ||= "";
+
+  # We can output two kinds of rules: the "generic" rules use Make
+  # suffix rules and are appropriate when $source and $dest do not lie
+  # in a sub-directory; the "specific" rules are needed in the other
+  # case.
+  #
+  # The former are output only once (this is not really apparent here,
+  # but just remember that some logic deeper in Automake will not
+  # output the same rule twice); while the later need to be output for
+  # each Texinfo source.
+  my $generic;
+  my $makeinfoflags;
+  my $sdir = dirname $source;
+  if ($sdir eq '.' && dirname ($dest) eq '.')
+    {
+      $generic = 1;
+      $makeinfoflags = '-I $(srcdir)';
+    }
+  else
+    {
+      $generic = 0;
+      $makeinfoflags = "-I $sdir -I \$(srcdir)/$sdir";
+    }
+
+  # A directory can contain two kinds of info files: some built in the
+  # source tree, and some built in the build tree.  The rules are
+  # different in each case.  However we cannot output two different
+  # set of generic rules.  Because in-source builds are more usual, we
+  # use generic rules in this case and fall back to "specific" rules
+  # for build-dir builds.  (It should not be a problem to invert this
+  # if needed.)
+  $generic = 0 unless $insrc;
+
+  # We cannot use a suffix rule to build info files with an empty
+  # extension.  Otherwise we would output a single suffix inference
+  # rule, with separate dependencies, as in
+  #
+  #    .texi:
+  #             $(MAKEINFO) ...
+  #    foo.info: foo.texi
+  #
+  # which confuse Solaris make.  (See the Autoconf manual for
+  # details.)  Therefore we use a specific rule in this case.  This
+  # applies to info files only (dvi and pdf files always have an
+  # extension).
+  my $generic_info = ($generic && $dsfx) ? 1 : 0;
+
+  # If the resulting file lie into a subdirectory,
+  # make sure this directory will exist.
+  my $dirstamp = require_build_directory_maybe ($dest);
+
+  my $dipfx = ($insrc ? '$(srcdir)/' : '') . $dpfx;
+
+  $output_rules .= file_contents ('texibuild',
+                                 new Automake::Location,
+                                  AM_V_MAKEINFO    => verbose_flag('MAKEINFO'),
+                                  AM_V_TEXI2DVI    => verbose_flag('TEXI2DVI'),
+                                  AM_V_TEXI2PDF    => verbose_flag('TEXI2PDF'),
+                                 DEPS             => "@deps",
+                                 DEST_PREFIX      => $dpfx,
+                                 DEST_INFO_PREFIX => $dipfx,
+                                 DEST_SUFFIX      => $dsfx,
+                                 DIRSTAMP         => $dirstamp,
+                                 GENERIC          => $generic,
+                                 GENERIC_INFO     => $generic_info,
+                                 INSRC            => $insrc,
+                                 MAKEINFOFLAGS    => $makeinfoflags,
+                                  SILENT           => silent_flag(),
+                                 SOURCE           => ($generic
+                                                      ? '$<' : $source),
+                                 SOURCE_INFO      => ($generic_info
+                                                      ? '$<' : $source),
+                                 SOURCE_REAL      => $source,
+                                 SOURCE_SUFFIX    => $ssfx,
+                                  TEXIQUIET        => verbose_flag('texinfo'),
+                                  TEXIDEVNULL      => verbose_flag('texidevnull'),
+                                 );
+  return ($dirstamp, "$dpfx.dvi", "$dpfx.pdf", "$dpfx.ps", "$dpfx.html");
+}
+
+
+# ($MOSTLYCLEAN, $TEXICLEAN, $MAINTCLEAN)
+# handle_texinfo_helper ($info_texinfos)
+# --------------------------------------
+# Handle all Texinfo source; helper for handle_texinfo.
+sub handle_texinfo_helper ($)
+{
+  my ($info_texinfos) = @_;
+  my (@infobase, @info_deps_list, @texi_deps);
+  my %versions;
+  my $done = 0;
+  my (@mostly_cleans, @texi_cleans, @maint_cleans) = ('', '', '');
+
+  # Build a regex matching user-cleaned files.
+  my $d = var 'DISTCLEANFILES';
+  my $c = var 'CLEANFILES';
+  my @f = ();
+  push @f, $d->value_as_list_recursive (inner_expand => 1) if $d;
+  push @f, $c->value_as_list_recursive (inner_expand => 1) if $c;
+  @f = map { s|[^A-Za-z_0-9*\[\]\-]|\\$&|g; s|\*|[^/]*|g; $_; } @f;
+  my $user_cleaned_files = '^(?:' . join ('|', @f) . ')$';
+
+  foreach my $texi
+      ($info_texinfos->value_as_list_recursive (inner_expand => 1))
+    {
+      my $infobase = $texi;
+      $infobase =~ s/\.(txi|texinfo|texi)$//;
+
+      if ($infobase eq $texi)
+       {
+         # FIXME: report line number.
+         err_am "texinfo file '$texi' has unrecognized extension";
+         next;
+       }
+
+      push @infobase, $infobase;
+
+      # If 'version.texi' is referenced by input file, then include
+      # automatic versioning capability.
+      my ($out_file, $vtexi, @clean_files) =
+       scan_texinfo_file ("$relative_dir/$texi")
+       or next;
+      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
+      # directory, try hard to not prefix "./" because it breaks the
+      # generic rules.
+      my $outdir = dirname ($texi) . '/';
+      $outdir = "" if $outdir eq './';
+      $out_file =  $outdir . $out_file;
+
+      # Until Automake 1.6.3, .info files were built in the
+      # source tree.  This was an obstacle to the support of
+      # non-distributed .info files, and non-distributed .texi
+      # files.
+      #
+      # * Non-distributed .texi files is important in some packages
+      #   where .texi files are built at make time, probably using
+      #   other binaries built in the package itself, maybe using
+      #   tools or information found on the build host.  Because
+      #   these files are not distributed they are always rebuilt
+      #   at make time; they should therefore not lie in the source
+      #   directory.  One plan was to support this using
+      #   nodist_info_TEXINFOS or something similar.  (Doing this
+      #   requires some sanity checks.  For instance Automake should
+      #   not allow:
+      #      dist_info_TEXINFOS = foo.texi
+      #      nodist_foo_TEXINFOS = included.texi
+      #   because a distributed file should never depend on a
+      #   non-distributed file.)
+      #
+      # * If .texi files are not distributed, then .info files should
+      #   not be distributed either.  There are also cases where one
+      #   wants to distribute .texi files, but does not want to
+      #   distribute the .info files.  For instance the Texinfo package
+      #   distributes the tool used to build these files; it would
+      #   be a waste of space to distribute them.  It's not clear
+      #   which syntax we should use to indicate that .info files should
+      #   not be distributed.  Akim Demaille suggested that eventually
+      #   we switch to a new syntax:
+      #   |  Maybe we should take some inspiration from what's already
+      #   |  done in the rest of Automake.  Maybe there is too much
+      #   |  syntactic sugar here, and you want
+      #   |     nodist_INFO = bar.info
+      #   |     dist_bar_info_SOURCES = bar.texi
+      #   |     bar_texi_DEPENDENCIES = foo.texi
+      #   |  with a bit of magic to have bar.info represent the whole
+      #   |  bar*info set.  That's a lot more verbose that the current
+      #   |  situation, but it is # not new, hence the user has less
+      #   |  to learn.
+      #          |
+      #   |  But there is still too much room for meaningless specs:
+      #   |     nodist_INFO = bar.info
+      #   |     dist_bar_info_SOURCES = bar.texi
+      #   |     dist_PS = bar.ps something-written-by-hand.ps
+      #   |     nodist_bar_ps_SOURCES = bar.texi
+      #   |     bar_texi_DEPENDENCIES = foo.texi
+      #   |  here bar.texi is dist_ in line 2, and nodist_ in 4.
+      #
+      # Back to the point, it should be clear that in order to support
+      # non-distributed .info files, we need to build them in the
+      # build tree, not in the source tree (non-distributed .texi
+      # files are less of a problem, because we do not output build
+      # rules for them).  In Automake 1.7 .info build rules have been
+      # largely cleaned up so that .info files get always build in the
+      # build tree, even when distributed.  The idea was that
+      #   (1) if during a VPATH build the .info file was found to be
+      #       absent or out-of-date (in the source tree or in the
+      #       build tree), Make would rebuild it in the build tree.
+      #       If an up-to-date source-tree of the .info file existed,
+      #       make would not rebuild it in the build tree.
+      #   (2) having two copies of .info files, one in the source tree
+      #       and one (newer) in the build tree is not a problem
+      #       because 'make dist' always pick files in the build tree
+      #       first.
+      # However it turned out the be a bad idea for several reasons:
+      #   * Tru64, OpenBSD, and FreeBSD (not NetBSD) Make do not behave
+      #     like GNU Make on point (1) above.  These implementations
+      #     of Make would always rebuild .info files in the build
+      #     tree, even if such files were up to date in the source
+      #     tree.  Consequently, it was impossible to perform a VPATH
+      #     build of a package containing Texinfo files using these
+      #     Make implementations.
+      #     (Refer to the Autoconf Manual, section "Limitation of
+      #     Make", paragraph "VPATH", item "target lookup", for
+      #     an account of the differences between these
+      #     implementations.)
+      #   * The GNU Coding Standards require these files to be built
+      #     in the source-tree (when they are distributed, that is).
+      #   * Keeping a fresher copy of distributed files in the
+      #     build tree can be annoying during development because
+      #     - if the files is kept under CVS, you really want it
+      #       to be updated in the source tree
+      #     - it is confusing that 'make distclean' does not erase
+      #       all files in the build tree.
+      #
+      # Consequently, starting with Automake 1.8, .info files are
+      # built in the source tree again.  Because we still plan to
+      # support non-distributed .info files at some point, we
+      # have a single variable ($INSRC) that controls whether
+      # the current .info file must be built in the source tree
+      # or in the build tree.  Actually this variable is switched
+      # off for .info files that appear to be cleaned; this is
+      # for backward compatibility with package such as Texinfo,
+      # which do things like
+      #   info_TEXINFOS = texinfo.txi info-stnd.texi info.texi
+      #   DISTCLEANFILES = texinfo texinfo-* info*.info*
+      #   # Do not create info files for distribution.
+      #   dist-info:
+      # in order not to distribute .info files.
+      my $insrc = ($out_file =~ $user_cleaned_files) ? 0 : 1;
+
+      my $soutdir = '$(srcdir)/' . $outdir;
+      $outdir = $soutdir if $insrc;
+
+      # If user specified file_TEXINFOS, then use that as explicit
+      # dependency list.
+      @texi_deps = ();
+      push (@texi_deps, "$soutdir$vtexi") if $vtexi;
+
+      my $canonical = canonicalize ($infobase);
+      if (var ($canonical . "_TEXINFOS"))
+       {
+         push (@texi_deps, '$(' . $canonical . '_TEXINFOS)');
+         push_dist_common ('$(' . $canonical . '_TEXINFOS)');
+       }
+
+      my ($dirstamp, @cfiles) =
+       output_texinfo_build_rules ($texi, $out_file, $insrc, @texi_deps);
+      push (@texi_cleans, @cfiles);
+
+      push (@info_deps_list, $out_file);
+
+      # If a vers*.texi file is needed, emit the rule.
+      if ($vtexi)
+       {
+         err_am ("'$vtexi', included in '$texi', "
+                 . "also included in '$versions{$vtexi}'")
+           if defined $versions{$vtexi};
+         $versions{$vtexi} = $texi;
+
+         # We number the stamp-vti files.  This is doable since the
+         # actual names don't matter much.  We only number starting
+         # with the second one, so that the common case looks nice.
+         my $vti = ($done ? $done : 'vti');
+         ++$done;
+
+         # This is ugly, but it is our historical practice.
+         if ($config_aux_dir_set_in_configure_ac)
+           {
+             require_conf_file_with_macro (TRUE, 'info_TEXINFOS', FOREIGN,
+                                           'mdate-sh');
+           }
+         else
+           {
+             require_file_with_macro (TRUE, 'info_TEXINFOS',
+                                      FOREIGN, 'mdate-sh');
+           }
+
+         my $conf_dir;
+         if ($config_aux_dir_set_in_configure_ac)
+           {
+             $conf_dir = "$am_config_aux_dir/";
+           }
+         else
+           {
+             $conf_dir = '$(srcdir)/';
+           }
+         $output_rules .= file_contents ('texi-vers',
+                                         new Automake::Location,
+                                         TEXI     => $texi,
+                                         VTI      => $vti,
+                                         STAMPVTI => "${soutdir}stamp-$vti",
+                                         VTEXI    => "$soutdir$vtexi",
+                                         MDDIR    => $conf_dir,
+                                         DIRSTAMP => $dirstamp);
+       }
+    }
+
+  # Handle location of texinfo.tex.
+  my $need_texi_file = 0;
+  my $texinfodir;
+  if (var ('TEXINFO_TEX'))
+    {
+      # The user defined TEXINFO_TEX so assume he knows what he is
+      # doing.
+      $texinfodir = ('$(srcdir)/'
+                    . dirname (variable_value ('TEXINFO_TEX')));
+    }
+  elsif (option 'cygnus')
+    {
+      $texinfodir = '$(top_srcdir)/../texinfo';
+      define_variable ('TEXINFO_TEX', "$texinfodir/texinfo.tex", INTERNAL);
+    }
+  elsif ($config_aux_dir_set_in_configure_ac)
+    {
+      $texinfodir = $am_config_aux_dir;
+      define_variable ('TEXINFO_TEX', "$texinfodir/texinfo.tex", INTERNAL);
+      $need_texi_file = 2; # so that we require_conf_file later
+    }
+  else
+    {
+      $texinfodir = '$(srcdir)';
+      $need_texi_file = 1;
+    }
+  define_variable ('am__TEXINFO_TEX_DIR', $texinfodir, INTERNAL);
+
+  push (@dist_targets, 'dist-info');
+
+  if (! option 'no-installinfo')
+    {
+      # Make sure documentation is made and installed first.  Use
+      # $(INFO_DEPS), not 'info', because otherwise recursive makes
+      # get run twice during "make all".
+      unshift (@all, '$(INFO_DEPS)');
+    }
+
+  define_files_variable ("DVIS", @infobase, 'dvi', INTERNAL);
+  define_files_variable ("PDFS", @infobase, 'pdf', INTERNAL);
+  define_files_variable ("PSS", @infobase, 'ps', INTERNAL);
+  define_files_variable ("HTMLS", @infobase, 'html', INTERNAL);
+
+  # This next isn't strictly needed now -- the places that look here
+  # could easily be changed to look in info_TEXINFOS.  But this is
+  # probably better, in case noinst_TEXINFOS is ever supported.
+  define_variable ("TEXINFOS", variable_value ('info_TEXINFOS'), INTERNAL);
+
+  # Do some error checking.  Note that this file is not required
+  # when in Cygnus mode; instead we defined TEXINFO_TEX explicitly
+  # up above.
+  if ($need_texi_file && ! option 'no-texinfo.tex')
+    {
+      if ($need_texi_file > 1)
+       {
+         require_conf_file_with_macro (TRUE, 'info_TEXINFOS', FOREIGN,
+                                       'texinfo.tex');
+       }
+      else
+       {
+         require_file_with_macro (TRUE, 'info_TEXINFOS', FOREIGN,
+                                  'texinfo.tex');
+       }
+    }
+
+  return (makefile_wrap ("", "\t  ", @mostly_cleans),
+         makefile_wrap ("", "\t  ", @texi_cleans),
+         makefile_wrap ("", "\t  ", @maint_cleans));
+}
+
+
+# handle_texinfo ()
+# -----------------
+# Handle all Texinfo source.
+sub handle_texinfo ()
+{
+  reject_var 'TEXINFOS', "'TEXINFOS' is an anachronism; use 'info_TEXINFOS'";
+  # FIXME: I think this is an obsolete future feature name.
+  reject_var 'html_TEXINFOS', "HTML generation not yet supported";
+
+  my $info_texinfos = var ('info_TEXINFOS');
+  my ($mostlyclean, $clean, $maintclean) = ('', '', '');
+  if ($info_texinfos)
+    {
+      define_verbose_texinfo;
+      ($mostlyclean, $clean, $maintclean) = handle_texinfo_helper ($info_texinfos);
+      chomp $mostlyclean;
+      chomp $clean;
+      chomp $maintclean;
+    }
+
+  $output_rules .=  file_contents ('texinfos',
+                                  new Automake::Location,
+                                   AM_V_DVIPS    => verbose_flag('DVIPS'),
+                                  MOSTLYCLEAN   => $mostlyclean,
+                                  TEXICLEAN     => $clean,
+                                  MAINTCLEAN    => $maintclean,
+                                  'LOCAL-TEXIS' => !!$info_texinfos,
+                                   TEXIQUIET     => verbose_flag('texinfo'));
+}
+
+
+# Handle any man pages.
+sub handle_man_pages
+{
+  reject_var 'MANS', "'MANS' is an anachronism; use 'man_MANS'";
+
+  # Find all the sections in use.  We do this by first looking for
+  # "standard" sections, and then looking for any additional
+  # sections used in man_MANS.
+  my (%sections, %notrans_sections, %trans_sections,
+      %notrans_vars, %trans_vars, %notrans_sect_vars, %trans_sect_vars);
+  # We handle nodist_ for uniformity.  man pages aren't distributed
+  # by default so it isn't actually very important.
+  foreach my $npfx ('', 'notrans_')
+    {
+      foreach my $pfx ('', 'dist_', 'nodist_')
+       {
+         # Add more sections as needed.
+         foreach my $section ('0'..'9', 'n', 'l')
+           {
+             my $varname = $npfx . $pfx . 'man' . $section . '_MANS';
+             if (var ($varname))
+               {
+                 $sections{$section} = 1;
+                 $varname = '$(' . $varname . ')';
+                 if ($npfx eq 'notrans_')
+                   {
+                     $notrans_sections{$section} = 1;
+                     $notrans_sect_vars{$varname} = 1;
+                   }
+                 else
+                   {
+                     $trans_sections{$section} = 1;
+                     $trans_sect_vars{$varname} = 1;
+                   }
+
+                 &push_dist_common ($varname)
+                   if $pfx eq 'dist_';
+               }
+           }
+
+         my $varname = $npfx . $pfx . 'man_MANS';
+         my $var = var ($varname);
+         if ($var)
+           {
+             foreach ($var->value_as_list_recursive)
+               {
+                 # A page like 'foo.1c' goes into man1dir.
+                 if (/\.([0-9a-z])([a-z]*)$/)
+                   {
+                     $sections{$1} = 1;
+                     if ($npfx eq 'notrans_')
+                       {
+                         $notrans_sections{$1} = 1;
+                       }
+                     else
+                       {
+                         $trans_sections{$1} = 1;
+                       }
+                   }
+               }
+
+             $varname = '$(' . $varname . ')';
+             if ($npfx eq 'notrans_')
+               {
+                 $notrans_vars{$varname} = 1;
+               }
+             else
+               {
+                 $trans_vars{$varname} = 1;
+               }
+             &push_dist_common ($varname)
+               if $pfx eq 'dist_';
+           }
+       }
+    }
+
+  return unless %sections;
+
+  my @unsorted_deps;
+
+  # Build section independent variables.
+  my $have_notrans = %notrans_vars;
+  my @notrans_list = sort keys %notrans_vars;
+  my $have_trans = %trans_vars;
+  my @trans_list = sort keys %trans_vars;
+
+  # Now for each section, generate an install and uninstall rule.
+  # Sort sections so output is deterministic.
+  foreach my $section (sort keys %sections)
+    {
+      # Build section dependent variables.
+      my $notrans_mans = $have_notrans || exists $notrans_sections{$section};
+      my $trans_mans = $have_trans || exists $trans_sections{$section};
+      my (%notrans_this_sect, %trans_this_sect);
+      my $expr = 'man' . $section . '_MANS';
+      foreach my $varname (keys %notrans_sect_vars)
+       {
+         if ($varname =~ /$expr/)
+           {
+             $notrans_this_sect{$varname} = 1;
+           }
+       }
+      foreach my $varname (keys %trans_sect_vars)
+       {
+         if ($varname =~ /$expr/)
+           {
+             $trans_this_sect{$varname} = 1;
+           }
+       }
+      my @notrans_sect_list = sort keys %notrans_this_sect;
+      my @trans_sect_list = sort keys %trans_this_sect;
+      @unsorted_deps = (keys %notrans_vars, keys %trans_vars,
+                        keys %notrans_this_sect, keys %trans_this_sect);
+      my @deps = sort @unsorted_deps;
+      $output_rules .= &file_contents ('mans',
+                                      new Automake::Location,
+                                      SECTION           => $section,
+                                      DEPS              => "@deps",
+                                      NOTRANS_MANS      => $notrans_mans,
+                                      NOTRANS_SECT_LIST => "@notrans_sect_list",
+                                      HAVE_NOTRANS      => $have_notrans,
+                                      NOTRANS_LIST      => "@notrans_list",
+                                      TRANS_MANS        => $trans_mans,
+                                      TRANS_SECT_LIST   => "@trans_sect_list",
+                                      HAVE_TRANS        => $have_trans,
+                                      TRANS_LIST        => "@trans_list");
+    }
+
+  @unsorted_deps  = (keys %notrans_vars, keys %trans_vars,
+                     keys %notrans_sect_vars, keys %trans_sect_vars);
+  my @mans = sort @unsorted_deps;
+  $output_vars .= file_contents ('mans-vars',
+                                new Automake::Location,
+                                MANS => "@mans");
+
+  push (@all, '$(MANS)')
+    unless option 'no-installman';
+}
+
+# Handle DATA variables.
+sub handle_data
+{
+    &am_install_var ('-noextra', '-candist', 'data', 'DATA',
+                    'data', 'dataroot', 'doc', 'dvi', 'html', 'pdf',
+                    'ps', 'sysconf', 'sharedstate', 'localstate',
+                    'pkgdata', 'lisp', 'noinst', 'check');
+}
+
+# Handle TAGS.
+sub handle_tags
+{
+    my @tag_deps = ();
+    my @ctag_deps = ();
+    my @cscope_deps = ();
+    if (var ('SUBDIRS'))
+    {
+       $output_rules .= ("tags-recursive:\n"
+                         . "\tlist='\$(SUBDIRS)'; for subdir in \$\$list; do \\\n"
+                         # Never fail here if a subdir fails; it
+                         # isn't important.
+                         . "\t  test \"\$\$subdir\" = . || (\$(am__cd) \$\$subdir"
+                         . " && \$(MAKE) \$(AM_MAKEFLAGS) tags); \\\n"
+                         . "\tdone\n");
+       push (@tag_deps, 'tags-recursive');
+       &depend ('.PHONY', 'tags-recursive');
+       &depend ('.MAKE', 'tags-recursive');
+
+       $output_rules .= ("ctags-recursive:\n"
+                         . "\tlist='\$(SUBDIRS)'; for subdir in \$\$list; do \\\n"
+                         # Never fail here if a subdir fails; it
+                         # isn't important.
+                         . "\t  test \"\$\$subdir\" = . || (\$(am__cd) \$\$subdir"
+                         . " && \$(MAKE) \$(AM_MAKEFLAGS) ctags); \\\n"
+                         . "\tdone\n");
+       push (@ctag_deps, 'ctags-recursive');
+       &depend ('.PHONY', 'ctags-recursive');
+       &depend ('.MAKE', 'ctags-recursive');
+
+       $output_rules .= ("cscopelist-recursive:\n"
+                         . "\tlist='\$(SUBDIRS)'; for subdir in \$\$list; do \\\n"
+                         # Never fail here if a subdir fails; it
+                         # isn't important.
+                         . "\t  test \"\$\$subdir\" = . || (\$(am__cd) \$\$subdir"
+                         . " && \$(MAKE) \$(AM_MAKEFLAGS) cscopelist); \\\n"
+                         . "\tdone\n");
+       push (@cscope_deps, 'cscopelist-recursive');
+       &depend ('.PHONY', 'cscopelist-recursive');
+       &depend ('.MAKE', 'cscopelist-recursive');
+    }
+
+    if (&saw_sources_p (1)
+       || var ('ETAGS_ARGS')
+       || @tag_deps)
+    {
+       my @config;
+       foreach my $spec (@config_headers)
+       {
+           my ($out, @ins) = split_config_file_spec ($spec);
+           foreach my $in (@ins)
+             {
+               # If the config header source is in this directory,
+               # require it.
+               push @config, basename ($in)
+                 if $relative_dir eq dirname ($in);
+             }
+       }
+       $output_rules .= &file_contents ('tags',
+                                        new Automake::Location,
+                                        CONFIG    => "@config",
+                                        TAGSDIRS  => "@tag_deps",
+                                        CTAGSDIRS => "@ctag_deps",
+                                        CSCOPEDIRS => "@cscope_deps");
+
+       set_seen 'TAGS_DEPENDENCIES';
+    }
+    elsif (reject_var ('TAGS_DEPENDENCIES',
+                      "it doesn't make sense to define 'TAGS_DEPENDENCIES'"
+                      . " without\nsources or 'ETAGS_ARGS'"))
+    {
+    }
+    else
+    {
+       # Every Makefile must define some sort of TAGS rule.
+       # Otherwise, it would be possible for a top-level "make TAGS"
+       # to fail because some subdirectory failed.
+       $output_rules .= "tags: TAGS\nTAGS:\n\n";
+       # Ditto ctags and cscope.
+       $output_rules .= "ctags: CTAGS\nCTAGS:\n\n";
+       $output_rules .= "cscope cscopelist:\n\n";
+    }
+}
+
+
+# user_phony_rule ($NAME)
+# -----------------------
+# Return false if rule $NAME does not exist.  Otherwise,
+# declare it as phony, complete its definition (in case it is
+# conditional), and return its Automake::Rule instance.
+sub user_phony_rule ($)
+{
+  my ($name) = @_;
+  my $rule = rule $name;
+  if ($rule)
+    {
+      depend ('.PHONY', $name);
+      # Define $NAME in all condition where it is not already defined,
+      # so that it is always OK to depend on $NAME.
+      for my $c ($rule->not_always_defined_in_cond (TRUE)->conds)
+       {
+         Automake::Rule::define ($name, 'internal', RULE_AUTOMAKE,
+                                 $c, INTERNAL);
+         $output_rules .= $c->subst_string . "$name:\n";
+       }
+    }
+  return $rule;
+}
+
+
+# $BOOLEAN
+# &for_dist_common ($A, $B)
+# -------------------------
+# Subroutine for &handle_dist: sort files to dist.
+#
+# We put README first because it then becomes easier to make a
+# Usenet-compliant shar file (in these, README must be first).
+#
+# FIXME: do more ordering of files here.
+sub for_dist_common
+{
+    return 0
+       if $a eq $b;
+    return -1
+       if $a eq 'README';
+    return 1
+       if $b eq 'README';
+    return $a cmp $b;
+}
+
+# handle_dist
+# -----------
+# Handle 'dist' target.
+sub handle_dist ()
+{
+  # Substitutions for distdir.am
+  my %transform;
+
+  # Define DIST_SUBDIRS.  This must always be done, regardless of the
+  # no-dist setting: target like 'distclean' or 'maintainer-clean' use it.
+  my $subdirs = var ('SUBDIRS');
+  if ($subdirs)
+    {
+      # If SUBDIRS is conditionally defined, then set DIST_SUBDIRS
+      # to all possible directories, and use it.  If DIST_SUBDIRS is
+      # defined, just use it.
+
+      # Note that we check DIST_SUBDIRS first on purpose, so that
+      # we don't call has_conditional_contents for now reason.
+      # (In the past one project used so many conditional subdirectories
+      # that calling has_conditional_contents on SUBDIRS caused
+      # automake to grow to 150Mb -- this should not happen with
+      # the current implementation of has_conditional_contents,
+      # but it's more efficient to avoid the call anyway.)
+      if (var ('DIST_SUBDIRS'))
+       {
+       }
+      elsif ($subdirs->has_conditional_contents)
+       {
+         define_pretty_variable
+           ('DIST_SUBDIRS', TRUE, INTERNAL,
+            uniq ($subdirs->value_as_list_recursive));
+       }
+      else
+       {
+         # We always define this because that is what 'distclean'
+         # wants.
+         define_pretty_variable ('DIST_SUBDIRS', TRUE, INTERNAL,
+                                 '$(SUBDIRS)');
+       }
+    }
+
+  # The remaining definitions are only required when a dist target is used.
+  return if option 'no-dist';
+
+  # At least one of the archive formats must be enabled.
+  if ($relative_dir eq '.')
+    {
+      my $archive_defined = option 'no-dist-gzip' ? 0 : 1;
+      $archive_defined ||=
+       grep { option "dist-$_" } qw(shar zip tarZ bzip2 lzip lzma xz);
+      error (option 'no-dist-gzip',
+            "no-dist-gzip specified but no dist-* specified,\n"
+            . "at least one archive format must be enabled")
+       unless $archive_defined;
+    }
+
+  # Look for common files that should be included in distribution.
+  # If the aux dir is set, and it does not have a Makefile.am, then
+  # we check for these files there as well.
+  my $check_aux = 0;
+  if ($relative_dir eq '.'
+      && $config_aux_dir_set_in_configure_ac)
+    {
+      if (! &is_make_dir ($config_aux_dir))
+       {
+         $check_aux = 1;
+       }
+    }
+  foreach my $cfile (@common_files)
+    {
+      if (dir_has_case_matching_file ($relative_dir, $cfile)
+         # The file might be absent, but if it can be built it's ok.
+         || rule $cfile)
+       {
+         &push_dist_common ($cfile);
+       }
+
+      # Don't use 'elsif' here because a file might meaningfully
+      # appear in both directories.
+      if ($check_aux && dir_has_case_matching_file ($config_aux_dir, $cfile))
+       {
+         &push_dist_common ("$config_aux_dir/$cfile")
+       }
+    }
+
+  # We might copy elements from $configure_dist_common to
+  # %dist_common if we think we need to.  If the file appears in our
+  # directory, we would have discovered it already, so we don't
+  # check that.  But if the file is in a subdir without a Makefile,
+  # we want to distribute it here if we are doing '.'.  Ugly!
+  # Also, in some corner cases, it's possible that the following code
+  # will cause the same file to appear in the $(DIST_COMMON) variables
+  # of two distinct Makefiles; but this is not a problem, since the
+  # 'distdir' target in 'lib/am/distdir.am' can deal with the same
+  # file being distributed multiple times.
+  # See also automake bug#9651.
+  if ($relative_dir eq '.')
+    {
+      foreach my $file (split (' ' , $configure_dist_common))
+       {
+         my $dir = dirname ($file);
+         push_dist_common ($file)
+           if ($dir eq '.' || ! is_make_dir ($dir));
+       }
+    }
+
+  # Files to distributed.  Don't use ->value_as_list_recursive
+  # as it recursively expands '$(dist_pkgdata_DATA)' etc.
+  my @dist_common = split (' ', rvar ('DIST_COMMON')->variable_value);
+  @dist_common = uniq (sort for_dist_common (@dist_common));
+  variable_delete 'DIST_COMMON';
+  define_pretty_variable ('DIST_COMMON', TRUE, INTERNAL, @dist_common);
+
+  # Now that we've processed DIST_COMMON, disallow further attempts
+  # to set it.
+  $handle_dist_run = 1;
+
+  # Scan EXTRA_DIST to see if we need to distribute anything from a
+  # subdir.  If so, add it to the list.  I didn't want to do this
+  # originally, but there were so many requests that I finally
+  # relented.
+  my $extra_dist = var ('EXTRA_DIST');
+
+  $transform{'DISTCHECK-HOOK'} = !! rule 'distcheck-hook';
+  $transform{'GETTEXT'} = $seen_gettext && !$seen_gettext_external;
+
+  # If the target 'dist-hook' exists, make sure it is run.  This
+  # allows users to do random weird things to the distribution
+  # before it is packaged up.
+  push (@dist_targets, 'dist-hook')
+    if user_phony_rule 'dist-hook';
+  $transform{'DIST-TARGETS'} = join (' ', @dist_targets);
+
+  my $flm = option ('filename-length-max');
+  my $filename_filter = $flm ? '.' x $flm->[1] : '';
+
+  $output_rules .= &file_contents ('distdir',
+                                  new Automake::Location,
+                                  %transform,
+                                  FILENAME_FILTER => $filename_filter);
+}
+
+
+# check_directory ($NAME, $WHERE [, $RELATIVE_DIR = "."])
+# -------------------------------------------------------
+# Ensure $NAME is a directory (in $RELATIVE_DIR), and that it uses a sane
+# name.  Use $WHERE as a location in the diagnostic, if any.
+sub check_directory ($$;$)
+{
+  my ($dir, $where, $reldir) = @_;
+  $reldir = '.' unless defined $reldir;
+
+  error $where, "required directory $reldir/$dir does not exist"
+    unless -d "$reldir/$dir";
+
+  # If an 'obj/' directory exists, BSD make will enter it before
+  # reading 'Makefile'.  Hence the 'Makefile' in the current directory
+  # will not be read.
+  #
+  #  % cat Makefile
+  #  all:
+  #          echo Hello
+  #  % cat obj/Makefile
+  #  all:
+  #          echo World
+  #  % make      # GNU make
+  #  echo Hello
+  #  Hello
+  #  % pmake     # BSD make
+  #  echo World
+  #  World
+  msg ('portability', $where,
+       "naming a subdirectory 'obj' causes troubles with BSD make")
+    if $dir eq 'obj';
+
+  # 'aux' is probably the most important of the following forbidden name,
+  # since it's tempting to use it as an AC_CONFIG_AUX_DIR.
+  msg ('portability', $where,
+       "name '$dir' is reserved on W32 and DOS platforms")
+    if grep (/^\Q$dir\E$/i, qw/aux lpt1 lpt2 lpt3 com1 com2 com3 com4 con prn/);
+}
+
+# check_directories_in_var ($VARIABLE)
+# ------------------------------------
+# Recursively check all items in variables $VARIABLE as directories
+sub check_directories_in_var ($)
+{
+  my ($var) = @_;
+  $var->traverse_recursively
+    (sub
+     {
+       my ($var, $val, $cond, $full_cond) = @_;
+       check_directory ($val, $var->rdef ($cond)->location, $relative_dir);
+       return ();
+     },
+     undef,
+     skip_ac_subst => 1);
+}
+
+# &handle_subdirs ()
+# ------------------
+# Handle subdirectories.
+sub handle_subdirs ()
+{
+  my $subdirs = var ('SUBDIRS');
+  return
+    unless $subdirs;
+
+  check_directories_in_var $subdirs;
+
+  my $dsubdirs = var ('DIST_SUBDIRS');
+  check_directories_in_var $dsubdirs
+    if $dsubdirs;
+
+  $output_rules .= &file_contents ('subdirs', new Automake::Location);
+  rvar ('RECURSIVE_TARGETS')->rdef (TRUE)->{'pretty'} = VAR_SORTED; # Gross!
+}
+
+
+# ($REGEN, @DEPENDENCIES)
+# &scan_aclocal_m4
+# ----------------
+# If aclocal.m4 creation is automated, return the list of its dependencies.
+sub scan_aclocal_m4 ()
+{
+  my $regen_aclocal = 0;
+
+  set_seen 'CONFIG_STATUS_DEPENDENCIES';
+  set_seen 'CONFIGURE_DEPENDENCIES';
+
+  if (-f 'aclocal.m4')
+    {
+      &define_variable ("ACLOCAL_M4", '$(top_srcdir)/aclocal.m4', INTERNAL);
+
+      my $aclocal = new Automake::XFile "< aclocal.m4";
+      my $line = $aclocal->getline;
+      $regen_aclocal = $line =~ 'generated automatically by aclocal';
+    }
+
+  my @ac_deps = ();
+
+  if (set_seen ('ACLOCAL_M4_SOURCES'))
+    {
+      push (@ac_deps, '$(ACLOCAL_M4_SOURCES)');
+      msg_var ('obsolete', 'ACLOCAL_M4_SOURCES',
+              "'ACLOCAL_M4_SOURCES' is obsolete.\n"
+              . "It should be safe to simply remove it");
+    }
+
+  # Note that it might be possible that aclocal.m4 doesn't exist but
+  # should be auto-generated.  This case probably isn't very
+  # important.
+
+  return ($regen_aclocal, @ac_deps);
+}
+
+
+# Helper function for substitute_ac_subst_variables.
+sub substitute_ac_subst_variables_worker($)
+{
+  my ($token) = @_;
+  return "\@$token\@" if var $token;
+  return "\${$token\}";
+}
+
+# substitute_ac_subst_variables ($TEXT)
+# -------------------------------------
+# Replace any occurrence of ${FOO} in $TEXT by @FOO@ if FOO is an AC_SUBST
+# variable.
+sub substitute_ac_subst_variables ($)
+{
+  my ($text) = @_;
+  $text =~ s/\${([^ \t=:+{}]+)}/&substitute_ac_subst_variables_worker ($1)/ge;
+  return $text;
+}
+
+# @DEPENDENCIES
+# &prepend_srcdir (@INPUTS)
+# -------------------------
+# Prepend $(srcdir) or $(top_srcdir) to all @INPUTS.  The idea is that
+# if an input file has a directory part the same as the current
+# directory, then the directory part is simply replaced by $(srcdir).
+# But if the directory part is different, then $(top_srcdir) is
+# prepended.
+sub prepend_srcdir (@)
+{
+  my (@inputs) = @_;
+  my @newinputs;
+
+  foreach my $single (@inputs)
+    {
+      if (dirname ($single) eq $relative_dir)
+       {
+         push (@newinputs, '$(srcdir)/' . basename ($single));
+       }
+      else
+       {
+         push (@newinputs, '$(top_srcdir)/' . $single);
+       }
+    }
+  return @newinputs;
+}
+
+# @DEPENDENCIES
+# rewrite_inputs_into_dependencies ($OUTPUT, @INPUTS)
+# ---------------------------------------------------
+# Compute a list of dependencies appropriate for the rebuild
+# rule of
+#   AC_CONFIG_FILES($OUTPUT:$INPUT[0]:$INPUTS[1]:...)
+# Also distribute $INPUTs which are not built by another AC_CONFIG_FOOs.
+sub rewrite_inputs_into_dependencies ($@)
+{
+  my ($file, @inputs) = @_;
+  my @res = ();
+
+  for my $i (@inputs)
+    {
+      # We cannot create dependencies on shell variables.
+      next if (substitute_ac_subst_variables $i) =~ /\$/;
+
+      if (exists $ac_config_files_location{$i} && $i ne $file)
+       {
+         my $di = dirname $i;
+         if ($di eq $relative_dir)
+           {
+             $i = basename $i;
+           }
+         # In the top-level Makefile we do not use $(top_builddir), because
+         # we are already there, and since the targets are built without
+         # a $(top_builddir), it helps BSD Make to match them with
+         # dependencies.
+         elsif ($relative_dir ne '.')
+           {
+             $i = '$(top_builddir)/' . $i;
+           }
+       }
+      else
+       {
+         msg ('error', $ac_config_files_location{$file},
+              "required file '$i' not found")
+           unless $i =~ /\$/ || exists $output_files{$i} || -f $i;
+         ($i) = prepend_srcdir ($i);
+         push_dist_common ($i);
+       }
+      push @res, $i;
+    }
+  return @res;
+}
+
+
+
+# &handle_configure ($MAKEFILE_AM, $MAKEFILE_IN, $MAKEFILE, @INPUTS)
+# ------------------------------------------------------------------
+# Handle remaking and configure stuff.
+# We need the name of the input file, to do proper remaking rules.
+sub handle_configure ($$$@)
+{
+  my ($makefile_am, $makefile_in, $makefile, @inputs) = @_;
+
+  prog_error 'empty @inputs'
+    unless @inputs;
+
+  my ($rel_makefile_am, $rel_makefile_in) = prepend_srcdir ($makefile_am,
+                                                           $makefile_in);
+  my $rel_makefile = basename $makefile;
+
+  my $colon_infile = ':' . join (':', @inputs);
+  $colon_infile = '' if $colon_infile eq ":$makefile.in";
+  my @rewritten = rewrite_inputs_into_dependencies ($makefile, @inputs);
+  my ($regen_aclocal_m4, @aclocal_m4_deps) = scan_aclocal_m4;
+  define_pretty_variable ('am__aclocal_m4_deps', TRUE, INTERNAL,
+                         @configure_deps, @aclocal_m4_deps,
+                         '$(top_srcdir)/' . $configure_ac);
+  my @configuredeps = ('$(am__aclocal_m4_deps)', '$(CONFIGURE_DEPENDENCIES)');
+  push @configuredeps, '$(ACLOCAL_M4)' if -f 'aclocal.m4';
+  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,
+     MAKEFILE              => $rel_makefile,
+     'MAKEFILE-DEPS'       => "@rewritten",
+     'CONFIG-MAKEFILE'     => ($relative_dir eq '.') ? '$@' : '$(subdir)/$@',
+     'MAKEFILE-IN'         => $rel_makefile_in,
+     'HAVE-MAKEFILE-IN-DEPS' => (@include_stack > 0),
+     'MAKEFILE-IN-DEPS'    => "@include_stack",
+     'MAKEFILE-AM'         => $rel_makefile_am,
+     'AUTOMAKE-OPTIONS'    => $automake_options,
+     'MAKEFILE-AM-SOURCES' => "$makefile$colon_infile",
+     'REGEN-ACLOCAL-M4'    => $regen_aclocal_m4,
+     VERBOSE               => verbose_flag ('GEN'));
+
+  if ($relative_dir eq '.')
+    {
+      &push_dist_common ('acconfig.h')
+       if -f 'acconfig.h';
+    }
+
+  # If we have a configure header, require it.
+  my $hdr_index = 0;
+  my @distclean_config;
+  foreach my $spec (@config_headers)
+    {
+      $hdr_index += 1;
+      # $CONFIG_H_PATH: config.h from top level.
+      my ($config_h_path, @ins) = split_config_file_spec ($spec);
+      my $config_h_dir = dirname ($config_h_path);
+
+      # If the header is in the current directory we want to build
+      # the header here.  Otherwise, if we're at the topmost
+      # directory and the header's directory doesn't have a
+      # Makefile, then we also want to build the header.
+      if ($relative_dir eq $config_h_dir
+         || ($relative_dir eq '.' && ! &is_make_dir ($config_h_dir)))
+       {
+         my ($cn_sans_dir, $stamp_dir);
+         if ($relative_dir eq $config_h_dir)
+           {
+             $cn_sans_dir = basename ($config_h_path);
+             $stamp_dir = '';
+           }
+         else
+           {
+             $cn_sans_dir = $config_h_path;
+             if ($config_h_dir eq '.')
+               {
+                 $stamp_dir = '';
+               }
+             else
+               {
+                 $stamp_dir = $config_h_dir . '/';
+               }
+           }
+
+         # This will also distribute all inputs.
+         @ins = rewrite_inputs_into_dependencies ($config_h_path, @ins);
+
+         # Cannot define rebuild rules for filenames with shell variables.
+         next if (substitute_ac_subst_variables $config_h_path) =~ /\$/;
+
+         # Header defined in this directory.
+         my @files;
+         if (-f $config_h_path . '.top')
+           {
+             push (@files, "$cn_sans_dir.top");
+           }
+         if (-f $config_h_path . '.bot')
+           {
+             push (@files, "$cn_sans_dir.bot");
+           }
+
+         push_dist_common (@files);
+
+         # For now, acconfig.h can only appear in the top srcdir.
+         if (-f 'acconfig.h')
+           {
+             push (@files, '$(top_srcdir)/acconfig.h');
+           }
+
+         my $stamp = "${stamp_dir}stamp-h${hdr_index}";
+         $output_rules .=
+           file_contents ('remake-hdr',
+                          new Automake::Location,
+                          FILES            => "@files",
+                          CONFIG_H         => $cn_sans_dir,
+                          CONFIG_HIN       => $ins[0],
+                          CONFIG_H_DEPS    => "@ins",
+                          CONFIG_H_PATH    => $config_h_path,
+                          STAMP            => "$stamp");
+
+         push @distclean_config, $cn_sans_dir, $stamp;
+       }
+    }
+
+  $output_rules .= file_contents ('clean-hdr',
+                                 new Automake::Location,
+                                 FILES => "@distclean_config")
+    if @distclean_config;
+
+  # Distribute and define mkinstalldirs only if it is already present
+  # in the package, for backward compatibility (some people may still
+  # use $(mkinstalldirs)).
+  my $mkidpath = "$config_aux_dir/mkinstalldirs";
+  if (-f $mkidpath)
+    {
+      # Use require_file so that any existing script gets updated
+      # by --force-missing.
+      require_conf_file ($mkidpath, FOREIGN, 'mkinstalldirs');
+      define_variable ('mkinstalldirs',
+                      "\$(SHELL) $am_config_aux_dir/mkinstalldirs", INTERNAL);
+    }
+  else
+    {
+      # Use $(install_sh), not $(MKDIR_P) because the latter requires
+      # at least one argument, and $(mkinstalldirs) used to work
+      # even without arguments (e.g. $(mkinstalldirs) $(conditional_dir)).
+      define_variable ('mkinstalldirs', '$(install_sh) -d', INTERNAL);
+    }
+
+  reject_var ('CONFIG_HEADER',
+             "'CONFIG_HEADER' is an anachronism; now determined "
+             . "automatically\nfrom '$configure_ac'");
+
+  my @config_h;
+  foreach my $spec (@config_headers)
+    {
+      my ($out, @ins) = split_config_file_spec ($spec);
+      # Generate CONFIG_HEADER define.
+      if ($relative_dir eq dirname ($out))
+       {
+         push @config_h, basename ($out);
+       }
+      else
+       {
+         push @config_h, "\$(top_builddir)/$out";
+       }
+    }
+  define_variable ("CONFIG_HEADER", "@config_h", INTERNAL)
+    if @config_h;
+
+  # Now look for other files in this directory which must be remade
+  # by config.status, and generate rules for them.
+  my @actual_other_files = ();
+  # These get cleaned only in a VPATH build.
+  my @actual_other_vpath_files = ();
+  foreach my $lfile (@other_input_files)
+    {
+      my $file;
+      my @inputs;
+      if ($lfile =~ /^([^:]*):(.*)$/)
+       {
+         # This is the ":" syntax of AC_OUTPUT.
+         $file = $1;
+         @inputs = split (':', $2);
+       }
+      else
+       {
+         # Normal usage.
+         $file = $lfile;
+         @inputs = $file . '.in';
+       }
+
+      # Automake files should not be stored in here, but in %MAKE_LIST.
+      prog_error ("$lfile in \@other_input_files\n"
+                 . "\@other_input_files = (@other_input_files)")
+       if -f $file . '.am';
+
+      my $local = basename ($file);
+
+      # We skip files that aren't in this directory.  However, if
+      # the file's directory does not have a Makefile, and we are
+      # currently doing '.', then we create a rule to rebuild the
+      # file in the subdir.
+      my $fd = dirname ($file);
+      if ($fd ne $relative_dir)
+       {
+         if ($relative_dir eq '.' && ! &is_make_dir ($fd))
+           {
+             $local = $file;
+           }
+         else
+           {
+             next;
+           }
+       }
+
+      my @rewritten_inputs = rewrite_inputs_into_dependencies ($file, @inputs);
+
+      # Cannot output rules for shell variables.
+      next if (substitute_ac_subst_variables $local) =~ /\$/;
+
+      my $condstr = '';
+      my $cond = $ac_config_files_condition{$lfile};
+      if (defined $cond)
+        {
+         $condstr = $cond->subst_string;
+         Automake::Rule::define ($local, $configure_ac, RULE_AUTOMAKE, $cond,
+                                 $ac_config_files_location{$file});
+        }
+      $output_rules .= ($condstr . $local . ': '
+                       . '$(top_builddir)/config.status '
+                       . "@rewritten_inputs\n"
+                       . $condstr . "\t"
+                       . 'cd $(top_builddir) && '
+                       . '$(SHELL) ./config.status '
+                       . ($relative_dir eq '.' ? '' : '$(subdir)/')
+                       . '$@'
+                       . "\n");
+      push (@actual_other_files, $local);
+    }
+
+  # For links we should clean destinations and distribute sources.
+  foreach my $spec (@config_links)
+    {
+      my ($link, $file) = split /:/, $spec;
+      # Some people do AC_CONFIG_LINKS($computed).  We only handle
+      # the DEST:SRC form.
+      next unless $file;
+      my $where = $ac_config_files_location{$link};
+
+      # Skip destinations that contain shell variables.
+      if ((substitute_ac_subst_variables $link) !~ /\$/)
+       {
+         # We skip links that aren't in this directory.  However, if
+         # the link's directory does not have a Makefile, and we are
+         # currently doing '.', then we add the link to CONFIG_CLEAN_FILES
+         # in '.'s Makefile.in.
+         my $local = basename ($link);
+         my $fd = dirname ($link);
+         if ($fd ne $relative_dir)
+           {
+             if ($relative_dir eq '.' && ! &is_make_dir ($fd))
+               {
+                 $local = $link;
+               }
+             else
+               {
+                 $local = undef;
+               }
+           }
+         if ($file ne $link)
+           {
+             push @actual_other_files, $local if $local;
+           }
+         else
+           {
+             push @actual_other_vpath_files, $local if $local;
+           }
+       }
+
+      # Do not process sources that contain shell variables.
+      if ((substitute_ac_subst_variables $file) !~ /\$/)
+       {
+         my $fd = dirname ($file);
+
+         # We distribute files that are in this directory.
+         # At the top-level ('.') we also distribute files whose
+         # directory does not have a Makefile.
+         if (($fd eq $relative_dir)
+             || ($relative_dir eq '.' && ! &is_make_dir ($fd)))
+           {
+             # The following will distribute $file as a side-effect when
+             # it is appropriate (i.e., when $file is not already an output).
+             # We do not need the result, just the side-effect.
+             rewrite_inputs_into_dependencies ($link, $file);
+           }
+       }
+    }
+
+  # These files get removed by "make distclean".
+  define_pretty_variable ('CONFIG_CLEAN_FILES', TRUE, INTERNAL,
+                         @actual_other_files);
+  define_pretty_variable ('CONFIG_CLEAN_VPATH_FILES', TRUE, INTERNAL,
+                         @actual_other_vpath_files);
+}
+
+# Handle C headers.
+sub handle_headers
+{
+    my @r = &am_install_var ('-defaultdist', 'header', 'HEADERS', 'include',
+                            'oldinclude', 'pkginclude',
+                            'noinst', 'check');
+    foreach (@r)
+    {
+      next unless $_->[1] =~ /\..*$/;
+      &saw_extension ($&);
+    }
+}
+
+sub handle_gettext
+{
+  return if ! $seen_gettext || $relative_dir ne '.';
+
+  my $subdirs = var 'SUBDIRS';
+
+  if (! $subdirs)
+    {
+      err_ac "AM_GNU_GETTEXT used but SUBDIRS not defined";
+      return;
+    }
+
+  # Perform some sanity checks to help users get the right setup.
+  # We disable these tests when po/ doesn't exist in order not to disallow
+  # unusual gettext setups.
+  #
+  # Bruno Haible:
+  # | The idea is:
+  # |
+  # |  1) If a package doesn't have a directory po/ at top level, it
+  # |     will likely have multiple po/ directories in subpackages.
+  # |
+  # |  2) It is useful to warn for the absence of intl/ if AM_GNU_GETTEXT
+  # |     is used without 'external'. It is also useful to warn for the
+  # |     presence of intl/ if AM_GNU_GETTEXT([external]) is used. Both
+  # |     warnings apply only to the usual layout of packages, therefore
+  # |     they should both be disabled if no po/ directory is found at
+  # |     top level.
+
+  if (-d 'po')
+    {
+      my @subdirs = $subdirs->value_as_list_recursive;
+
+      msg_var ('syntax', $subdirs,
+              "AM_GNU_GETTEXT used but 'po' not in SUBDIRS")
+       if ! grep ($_ eq 'po', @subdirs);
+
+      # intl/ is not required when AM_GNU_GETTEXT is called with the
+      # 'external' option and AM_GNU_GETTEXT_INTL_SUBDIR is not called.
+      msg_var ('syntax', $subdirs,
+              "AM_GNU_GETTEXT used but 'intl' not in SUBDIRS")
+       if (! ($seen_gettext_external && ! $seen_gettext_intl)
+           && ! grep ($_ eq 'intl', @subdirs));
+
+      # intl/ should not be used with AM_GNU_GETTEXT([external]), except
+      # if AM_GNU_GETTEXT_INTL_SUBDIR is called.
+      msg_var ('syntax', $subdirs,
+              "'intl' should not be in SUBDIRS when "
+              . "AM_GNU_GETTEXT([external]) is used")
+       if ($seen_gettext_external && ! $seen_gettext_intl
+           && grep ($_ eq 'intl', @subdirs));
+    }
+
+  require_file ($ac_gettext_location, GNU, 'ABOUT-NLS');
+}
+
+# Handle footer elements.
+sub handle_footer
+{
+    reject_rule ('.SUFFIXES',
+                "use variable 'SUFFIXES', not target '.SUFFIXES'");
+
+    # Note: AIX 4.1 /bin/make will fail if any suffix rule appears
+    # before .SUFFIXES.  So we make sure that .SUFFIXES appears before
+    # anything else, by sticking it right after the default: target.
+    $output_header .= ".SUFFIXES:\n";
+    my $suffixes = var 'SUFFIXES';
+    my @suffixes = Automake::Rule::suffixes;
+    if (@suffixes || $suffixes)
+    {
+       # Make sure SUFFIXES has unique elements.  Sort them to ensure
+       # the output remains consistent.  However, $(SUFFIXES) is
+       # always at the start of the list, unsorted.  This is done
+       # because make will choose rules depending on the ordering of
+       # suffixes, and this lets the user have some control.  Push
+       # actual suffixes, and not $(SUFFIXES).  Some versions of make
+       # do not like variable substitutions on the .SUFFIXES line.
+       my @user_suffixes = ($suffixes
+                            ? $suffixes->value_as_list_recursive : ());
+
+       my %suffixes = map { $_ => 1 } @suffixes;
+       delete @suffixes{@user_suffixes};
+
+       $output_header .= (".SUFFIXES: "
+                          . join (' ', @user_suffixes, sort keys %suffixes)
+                          . "\n");
+    }
+
+    $output_trailer .= file_contents ('footer', new Automake::Location);
+}
+
+
+# Generate 'make install' rules.
+sub handle_install ()
+{
+  $output_rules .= &file_contents
+    ('install',
+     new Automake::Location,
+     maybe_BUILT_SOURCES => (set_seen ('BUILT_SOURCES')
+                            ? (" \$(BUILT_SOURCES)\n"
+                               . "\t\$(MAKE) \$(AM_MAKEFLAGS)")
+                            : ''),
+     'installdirs-local' => (user_phony_rule 'installdirs-local'
+                            ? ' installdirs-local' : ''),
+     am__installdirs => variable_value ('am__installdirs') || '');
+}
+
+
+# Deal with all and all-am.
+sub handle_all ($)
+{
+    my ($makefile) = @_;
+
+    # Output 'all-am'.
+
+    # Put this at the beginning for the sake of non-GNU makes.  This
+    # is still wrong if these makes can run parallel jobs.  But it is
+    # right enough.
+    unshift (@all, basename ($makefile));
+
+    foreach my $spec (@config_headers)
+      {
+       my ($out, @ins) = split_config_file_spec ($spec);
+       push (@all, basename ($out))
+         if dirname ($out) eq $relative_dir;
+      }
+
+    # Install 'all' hooks.
+    push (@all, "all-local")
+      if user_phony_rule "all-local";
+
+    &pretty_print_rule ("all-am:", "\t\t", @all);
+    &depend ('.PHONY', 'all-am', 'all');
+
+
+    # Output 'all'.
+
+    my @local_headers = ();
+    push @local_headers, '$(BUILT_SOURCES)'
+      if var ('BUILT_SOURCES');
+    foreach my $spec (@config_headers)
+      {
+       my ($out, @ins) = split_config_file_spec ($spec);
+       push @local_headers, basename ($out)
+         if dirname ($out) eq $relative_dir;
+      }
+
+    if (@local_headers)
+      {
+       # We need to make sure config.h is built before we recurse.
+       # We also want to make sure that built sources are built
+       # before any ordinary 'all' targets are run.  We can't do this
+       # by changing the order of dependencies to the "all" because
+       # that breaks when using parallel makes.  Instead we handle
+       # things explicitly.
+       $output_all .= ("all: @local_headers"
+                       . "\n\t"
+                       . '$(MAKE) $(AM_MAKEFLAGS) '
+                       . (var ('SUBDIRS') ? 'all-recursive' : 'all-am')
+                       . "\n\n");
+        depend ('.MAKE', 'all');
+      }
+    else
+      {
+       $output_all .= "all: " . (var ('SUBDIRS')
+                                 ? 'all-recursive' : 'all-am') . "\n\n";
+      }
+}
+
+
+# &do_check_merge_target ()
+# -------------------------
+# Handle check merge target specially.
+sub do_check_merge_target ()
+{
+  # Include user-defined local form of target.
+  push @check_tests, 'check-local'
+    if user_phony_rule 'check-local';
+
+  # In --cygnus mode, check doesn't depend on all.
+  if (option 'cygnus')
+    {
+      # Just run the local check rules.
+      pretty_print_rule ('check-am:', "\t\t", @check);
+    }
+  else
+    {
+      # The check target must depend on the local equivalent of
+      # 'all', to ensure all the primary targets are built.  Then it
+      # must build the local check rules.
+      $output_rules .= "check-am: all-am\n";
+      if (@check)
+        {
+         pretty_print_rule ("\t\$(MAKE) \$(AM_MAKEFLAGS)", "\t  ",
+                            @check);
+         depend ('.MAKE', 'check-am');
+       }
+    }
+  if (@check_tests)
+    {
+      pretty_print_rule ("\t\$(MAKE) \$(AM_MAKEFLAGS)", "\t  ",
+                        @check_tests);
+      depend ('.MAKE', 'check-am');
+    }
+
+  depend '.PHONY', 'check', 'check-am';
+  # Handle recursion.  We have to honor BUILT_SOURCES like for 'all:'.
+  $output_rules .= ("check: "
+                   . (var ('BUILT_SOURCES')
+                      ? "\$(BUILT_SOURCES)\n\t\$(MAKE) \$(AM_MAKEFLAGS) "
+                      : '')
+                   . (var ('SUBDIRS') ? 'check-recursive' : 'check-am')
+                   . "\n");
+  depend ('.MAKE', 'check')
+    if var ('BUILT_SOURCES');
+}
+
+# handle_clean ($MAKEFILE)
+# ------------------------
+# Handle all 'clean' targets.
+sub handle_clean ($)
+{
+  my ($makefile) = @_;
+
+  # Clean the files listed in user variables if they exist.
+  $clean_files{'$(MOSTLYCLEANFILES)'} = MOSTLY_CLEAN
+    if var ('MOSTLYCLEANFILES');
+  $clean_files{'$(CLEANFILES)'} = CLEAN
+    if var ('CLEANFILES');
+  $clean_files{'$(DISTCLEANFILES)'} = DIST_CLEAN
+    if var ('DISTCLEANFILES');
+  $clean_files{'$(MAINTAINERCLEANFILES)'} = MAINTAINER_CLEAN
+    if var ('MAINTAINERCLEANFILES');
+
+  # Built sources are automatically removed by maintainer-clean.
+  $clean_files{'$(BUILT_SOURCES)'} = MAINTAINER_CLEAN
+    if var ('BUILT_SOURCES');
+
+  # Compute a list of "rm"s to run for each target.
+  my %rms = (MOSTLY_CLEAN, [],
+            CLEAN, [],
+            DIST_CLEAN, [],
+            MAINTAINER_CLEAN, []);
+
+  foreach my $file (keys %clean_files)
+    {
+      my $when = $clean_files{$file};
+      prog_error 'invalid entry in %clean_files'
+       unless exists $rms{$when};
+
+      my $rm = "rm -f $file";
+      # If file is a variable, make sure when don't call 'rm -f' without args.
+      $rm ="test -z \"$file\" || $rm"
+       if ($file =~ /^\s*\$(\(.*\)|\{.*\})\s*$/);
+
+      push @{$rms{$when}}, "\t-$rm\n";
+    }
+
+  $output_rules .= &file_contents
+    ('clean',
+     new Automake::Location,
+     MOSTLYCLEAN_RMS      => join ('', sort @{$rms{&MOSTLY_CLEAN}}),
+     CLEAN_RMS            => join ('', sort @{$rms{&CLEAN}}),
+     DISTCLEAN_RMS        => join ('', sort @{$rms{&DIST_CLEAN}}),
+     MAINTAINER_CLEAN_RMS => join ('', sort @{$rms{&MAINTAINER_CLEAN}}),
+     MAKEFILE             => basename $makefile,
+     );
+}
+
+
+# &target_cmp ($A, $B)
+# --------------------
+# Subroutine for &handle_factored_dependencies to let '.PHONY' and
+# other '.TARGETS' be last.
+sub target_cmp
+{
+  return 0 if $a eq $b;
+
+  my $a1 = substr ($a, 0, 1);
+  my $b1 = substr ($b, 0, 1);
+  if ($a1 ne $b1)
+    {
+      return -1 if $b1 eq '.';
+      return 1 if $a1 eq '.';
+    }
+  return $a cmp $b;
+}
+
+
+# &handle_factored_dependencies ()
+# --------------------------------
+# Handle everything related to gathered targets.
+sub handle_factored_dependencies
+{
+  # Reject bad hooks.
+  foreach my $utarg ('uninstall-data-local', 'uninstall-data-hook',
+                    'uninstall-exec-local', 'uninstall-exec-hook',
+                    'uninstall-dvi-local',
+                    'uninstall-html-local',
+                    'uninstall-info-local',
+                    'uninstall-pdf-local',
+                    'uninstall-ps-local')
+    {
+      my $x = $utarg;
+      $x =~ s/-.*-/-/;
+      reject_rule ($utarg, "use '$x', not '$utarg'");
+    }
+
+  reject_rule ('install-local',
+              "use 'install-data-local' or 'install-exec-local', "
+              . "not 'install-local'");
+
+  reject_rule ('install-hook',
+              "use 'install-data-hook' or 'install-exec-hook', "
+              . "not 'install-hook'");
+
+  # Install the -local hooks.
+  foreach (keys %dependencies)
+    {
+      # Hooks are installed on the -am targets.
+      s/-am$// or next;
+      depend ("$_-am", "$_-local")
+       if user_phony_rule "$_-local";
+    }
+
+  # Install the -hook hooks.
+  # FIXME: Why not be as liberal as we are with -local hooks?
+  foreach ('install-exec', 'install-data', 'uninstall')
+    {
+      if (user_phony_rule "$_-hook")
+       {
+         depend ('.MAKE', "$_-am");
+         register_action("$_-am",
+                         ("\t\@\$(NORMAL_INSTALL)\n"
+                          . "\t\$(MAKE) \$(AM_MAKEFLAGS) $_-hook"));
+       }
+    }
+
+  # All the required targets are phony.
+  depend ('.PHONY', keys %required_targets);
+
+  # Actually output gathered targets.
+  foreach (sort target_cmp keys %dependencies)
+    {
+      # If there is nothing about this guy, skip it.
+      next
+       unless (@{$dependencies{$_}}
+               || $actions{$_}
+               || $required_targets{$_});
+
+      # Define gathered targets in undefined conditions.
+      # FIXME: Right now we must handle .PHONY as an exception,
+      # because people write things like
+      #    .PHONY: myphonytarget
+      # to append dependencies.  This would not work if Automake
+      # refrained from defining its own .PHONY target as it does
+      # with other overridden targets.
+      # Likewise for '.MAKE'.
+      my @undefined_conds = (TRUE,);
+      if ($_ ne '.PHONY' && $_ ne '.MAKE')
+       {
+         @undefined_conds =
+           Automake::Rule::define ($_, 'internal',
+                                   RULE_AUTOMAKE, TRUE, INTERNAL);
+       }
+      my @uniq_deps = uniq (sort @{$dependencies{$_}});
+      foreach my $cond (@undefined_conds)
+       {
+         my $condstr = $cond->subst_string;
+         &pretty_print_rule ("$condstr$_:", "$condstr\t", @uniq_deps);
+         $output_rules .= $actions{$_} if defined $actions{$_};
+         $output_rules .= "\n";
+       }
+    }
+}
+
+
+# &handle_tests_dejagnu ()
+# ------------------------
+sub handle_tests_dejagnu
+{
+    push (@check_tests, 'check-DEJAGNU');
+    $output_rules .= file_contents ('dejagnu', new Automake::Location);
+}
+
+sub handle_per_suffix_test
+{
+  my ($test_suffix, %transform) = @_;
+  my ($pfx, $generic, $parallel_tests_option, $am_exeext);
+  prog_error ("called with 'parallel-tests' option not set")
+    unless $parallel_tests_option = option 'parallel-tests';
+  if ($test_suffix eq '')
+    {
+      $pfx = '';
+      $generic = 0;
+      $am_exeext = 'FALSE';
+    }
+  else
+    {
+      prog_error ("test suffix '$test_suffix' lacks leading dot")
+        unless $test_suffix =~ m/^\.(.*)/;
+      $pfx = uc ($1) . '_';
+      $generic = 1;
+      $am_exeext = exists $configure_vars{'EXEEXT'} ? 'am__EXEEXT'
+                                                    : 'FALSE';
+    }
+  # The "test driver" program, deputed to handle tests protocol used by
+  # test scripts.  By default, it's assumed that no protocol is used,
+  # so we fall back to the old "parallel-tests" behaviour, implemented
+  # by the 'test-driver' auxiliary script.
+  if (! var "${pfx}LOG_DRIVER")
+    {
+      require_conf_file ($parallel_tests_option->{position}, FOREIGN,
+                        'test-driver');
+      define_variable ("${pfx}LOG_DRIVER",
+                       "\$(SHELL) $am_config_aux_dir/test-driver",
+                       INTERNAL);
+    }
+  my $driver = '$(' . $pfx . 'LOG_DRIVER)';
+  my $driver_flags = '$(AM_' . $pfx . 'LOG_DRIVER_FLAGS)'
+                       . ' $(' . $pfx . 'LOG_DRIVER_FLAGS)';
+  my $compile = "${pfx}LOG_COMPILE";
+  define_variable ($compile,
+                   '$(' . $pfx . 'LOG_COMPILER)'
+                      . ' $(AM_' .  $pfx . 'LOG_FLAGS)'
+                      . ' $(' . $pfx . 'LOG_FLAGS)',
+                     INTERNAL);
+  $output_rules .= file_contents ('check2', new Automake::Location,
+                                   GENERIC => $generic,
+                                   DRIVER => $driver,
+                                   DRIVER_FLAGS => $driver_flags,
+                                   COMPILE => '$(' . $compile . ')',
+                                   EXT => $test_suffix,
+                                   am__EXEEXT => $am_exeext,
+                                   %transform);
+}
+
+# is_valid_test_extension ($EXT)
+# ------------------------------
+# Return true if $EXT can appear in $(TEST_EXTENSIONS), return false
+# otherwise.
+sub is_valid_test_extension ($)
+{
+  my $ext = shift;
+  return 1
+    if ($ext =~ /^\.[a-zA-Z_][a-zA-Z0-9_]*$/);
+  return 1
+    if (exists $configure_vars{'EXEEXT'} && $ext eq subst ('EXEEXT'));
+  return 0;
+}
+
+# Handle TESTS variable and other checks.
+sub handle_tests
+{
+  if (option 'dejagnu')
+    {
+      &handle_tests_dejagnu;
+    }
+  else
+    {
+      foreach my $c ('DEJATOOL', 'RUNTEST', 'RUNTESTFLAGS')
+       {
+         reject_var ($c, "'$c' defined but 'dejagnu' not in "
+                     . "'AUTOMAKE_OPTIONS'");
+       }
+    }
+
+  if (var ('TESTS'))
+    {
+      push (@check_tests, 'check-TESTS');
+      my $check_deps = "@check";
+      $output_rules .= &file_contents ('check', new Automake::Location,
+                                      COLOR => !! option 'color-tests',
+                                      PARALLEL_TESTS => !! option 'parallel-tests',
+                                       CHECK_DEPS => $check_deps);
+
+      # 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 (my $parallel_tests = option 'parallel-tests')
+        {
+         define_variable ('TEST_SUITE_LOG', 'test-suite.log', 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;
+           }
+          if (! var 'TEST_EXTENSIONS')
+            {
+             define_variable ('TEST_EXTENSIONS', $suff, INTERNAL);
+            }
+          my $var = var 'TEST_EXTENSIONS';
+          # Currently, we are not able to deal with conditional contents
+          # in TEST_EXTENSIONS.
+          if ($var->has_conditional_contents)
+           {
+            msg_var 'unsupported', $var,
+                     "'TEST_EXTENSIONS' cannot have conditional contents";
+           }
+         my @test_suffixes = $var->value_as_list_recursive;
+          if ((my @invalid_test_suffixes =
+                  grep { !is_valid_test_extension $_ } @test_suffixes) > 0)
+            {
+              error $var->rdef (TRUE)->location,
+                    "invalid test extensions: @invalid_test_suffixes";
+            }
+          @test_suffixes = grep { is_valid_test_extension $_ } @test_suffixes;
+         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 =~ /^\@.*\@$/;
+               $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;
+                 }
+               my $base = $obj;
+               $obj .= '.log';
+                handle_per_suffix_test ('',
+                                        OBJ => $obj,
+                                        BASE => $base,
+                                        SOURCE => $val);
+               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 '')
+               {
+                  handle_per_suffix_test ($test_suffix,
+                                          OBJ => '',
+                                          BASE => '$*',
+                                          SOURCE => '$<');
+               }
+           }
+         $clean_files{'$(TEST_LOGS)'} = MOSTLY_CLEAN;
+         $clean_files{'$(TEST_LOGS:.log=.trs)'} = MOSTLY_CLEAN;
+         $clean_files{'$(TEST_SUITE_LOG)'} = MOSTLY_CLEAN;
+       }
+    }
+}
+
+# Handle Emacs Lisp.
+sub handle_emacs_lisp
+{
+  my @elfiles = &am_install_var ('-candist', 'lisp', 'LISP',
+                                'lisp', 'noinst');
+
+  return if ! @elfiles;
+
+  define_pretty_variable ('am__ELFILES', TRUE, INTERNAL,
+                         map { $_->[1] } @elfiles);
+  define_pretty_variable ('am__ELCFILES', TRUE, INTERNAL,
+                         '$(am__ELFILES:.el=.elc)');
+  # This one can be overridden by users.
+  define_pretty_variable ('ELCFILES', TRUE, INTERNAL, '$(LISP:.el=.elc)');
+
+  push @all, '$(ELCFILES)';
+
+  require_variables ($elfiles[0][0], "Emacs Lisp sources seen", TRUE,
+                    'EMACS', 'lispdir');
+  require_conf_file ($elfiles[0][0], FOREIGN, 'elisp-comp');
+  &define_variable ('elisp_comp', "$am_config_aux_dir/elisp-comp", INTERNAL);
+}
+
+# Handle Python
+sub handle_python
+{
+  my @pyfiles = &am_install_var ('-defaultdist', 'python', 'PYTHON',
+                                'noinst');
+  return if ! @pyfiles;
+
+  require_variables ($pyfiles[0][0], "Python sources seen", TRUE, 'PYTHON');
+  require_conf_file ($pyfiles[0][0], FOREIGN, 'py-compile');
+  &define_variable ('py_compile', "$am_config_aux_dir/py-compile", INTERNAL);
+}
+
+# Handle Java.
+sub handle_java
+{
+    my @sourcelist = &am_install_var ('-candist',
+                                     'java', 'JAVA',
+                                     'noinst', 'check');
+    return if ! @sourcelist;
+
+    my @prefixes = am_primary_prefixes ('JAVA', 1,
+                                       'noinst', 'check');
+
+    my $dir;
+    my @java_sources = ();
+    foreach my $prefix (@prefixes)
+      {
+        (my $curs = $prefix) =~ s/^(?:nobase_)?(?:dist_|nodist_)?//;
+
+       next
+         if $curs eq 'EXTRA';
+
+        push @java_sources, '$(' . $prefix . '_JAVA' . ')';
+
+       if (defined $dir)
+         {
+           err_var "${curs}_JAVA", "multiple _JAVA primaries in use"
+            unless $curs eq $dir;
+         }
+
+       $dir = $curs;
+      }
+
+    define_pretty_variable ('am__java_sources', TRUE, INTERNAL,
+                            "@java_sources");
+
+    if ($dir eq 'check')
+      {
+        push (@check, "class$dir.stamp");
+      }
+    else
+      {
+        push (@all, "class$dir.stamp");
+      }
+}
+
+
+# Handle some of the minor options.
+sub handle_minor_options
+{
+  if (option 'readme-alpha')
+    {
+      if ($relative_dir eq '.')
+       {
+         if ($package_version !~ /^$GNITS_VERSION_PATTERN$/)
+           {
+             msg ('error-gnits', $package_version_location,
+                  "version '$package_version' doesn't follow " .
+                  "Gnits standards");
+           }
+         if (defined $1 && -f 'README-alpha')
+           {
+             # This means we have an alpha release.  See
+             # GNITS_VERSION_PATTERN for details.
+             push_dist_common ('README-alpha');
+           }
+       }
+    }
+}
+
+################################################################
+
+# ($OUTPUT, @INPUTS)
+# &split_config_file_spec ($SPEC)
+# -------------------------------
+# Decode the Autoconf syntax for config files (files, headers, links
+# etc.).
+sub split_config_file_spec ($)
+{
+  my ($spec) = @_;
+  my ($output, @inputs) = split (/:/, $spec);
+
+  push @inputs, "$output.in"
+    unless @inputs;
+
+  return ($output, @inputs);
+}
+
+# $input
+# locate_am (@POSSIBLE_SOURCES)
+# -----------------------------
+# AC_CONFIG_FILES allow specifications such as Makefile:top.in:mid.in:bot.in
+# This functions returns the first *.in file for which a *.am exists.
+# It returns undef otherwise.
+sub locate_am (@)
+{
+  my (@rest) = @_;
+  my $input;
+  foreach my $file (@rest)
+    {
+      if (($file =~ /^(.*)\.in$/) && -f "$1.am")
+       {
+         $input = $file;
+         last;
+       }
+    }
+  return $input;
+}
+
+my %make_list;
+
+# &scan_autoconf_config_files ($WHERE, $CONFIG-FILES)
+# ---------------------------------------------------
+# Study $CONFIG-FILES which is the first argument to AC_CONFIG_FILES
+# (or AC_OUTPUT).
+sub scan_autoconf_config_files ($$)
+{
+  my ($where, $config_files) = @_;
+
+  # Look at potential Makefile.am's.
+  foreach (split ' ', $config_files)
+    {
+      # Must skip empty string for Perl 4.
+      next if $_ eq "\\" || $_ eq '';
+
+      # Handle $local:$input syntax.
+      my ($local, @rest) = split (/:/);
+      @rest = ("$local.in",) unless @rest;
+      # Keep in sync with 'conffile-leading-dot.test'.
+      msg ('unsupported', $where,
+           "omit leading './' from config file names such as '$local';"
+           . "\nremake rules might be subtly broken otherwise")
+        if ($local =~ /^\.\//);
+      my $input = locate_am @rest;
+      if ($input)
+       {
+         # We have a file that automake should generate.
+         $make_list{$input} = join (':', ($local, @rest));
+       }
+      else
+       {
+         # We have a file that automake should cause to be
+         # rebuilt, but shouldn't generate itself.
+         push (@other_input_files, $_);
+       }
+      $ac_config_files_location{$local} = $where;
+      $ac_config_files_condition{$local} =
+        new Automake::Condition (@cond_stack)
+          if (@cond_stack);
+    }
+}
+
+
+# &scan_autoconf_traces ($FILENAME)
+# ---------------------------------
+sub scan_autoconf_traces ($)
+{
+  my ($filename) = @_;
+
+  # Macros to trace, with their minimal number of arguments.
+  #
+  # IMPORTANT: If you add a macro here, you should also add this macro
+  # =========  to Automake-preselection in autoconf/lib/autom4te.in.
+  my %traced = (
+               AC_CANONICAL_BUILD => 0,
+               AC_CANONICAL_HOST => 0,
+               AC_CANONICAL_TARGET => 0,
+               AC_CONFIG_AUX_DIR => 1,
+               AC_CONFIG_FILES => 1,
+               AC_CONFIG_HEADERS => 1,
+               AC_CONFIG_LIBOBJ_DIR => 1,
+               AC_CONFIG_LINKS => 1,
+               AC_FC_SRCEXT => 1,
+               AC_INIT => 0,
+               AC_LIBSOURCE => 1,
+               AC_REQUIRE_AUX_FILE => 1,
+               AC_SUBST_TRACE => 1,
+               AM_AUTOMAKE_VERSION => 1,
+                AM_PROG_MKDIR_P => 0, # FIXME: to be removed in 1.13
+               AM_CONDITIONAL => 2,
+               AM_GNU_GETTEXT => 0,
+               AM_GNU_GETTEXT_INTL_SUBDIR => 0,
+               AM_INIT_AUTOMAKE => 0,
+               AM_MAINTAINER_MODE => 0,
+               AM_PROG_AR => 0,
+               AM_PROG_CC_C_O => 0,
+               AM_SILENT_RULES => 0,
+               _AM_SUBST_NOTMAKE => 1,
+               _AM_COND_IF => 1,
+               _AM_COND_ELSE => 1,
+               _AM_COND_ENDIF => 1,
+               LT_SUPPORTED_TAG => 1,
+               _LT_AC_TAGCONFIG => 0,
+               m4_include => 1,
+               m4_sinclude => 1,
+               sinclude => 1,
+             );
+
+  my $traces = ($ENV{AUTOCONF} || '@am_AUTOCONF@') . " ";
+
+  # Use a separator unlikely to be used, not ':', the default, which
+  # has a precise meaning for AC_CONFIG_FILES and so on.
+  $traces .= join (' ',
+                  map { "--trace=$_" . ':\$f:\$l::\$d::\$n::\${::}%' }
+                  (keys %traced));
+
+  my $tracefh = new Automake::XFile ("$traces $filename |");
+  verb "reading $traces";
+
+  @cond_stack = ();
+  my $where;
+
+  while ($_ = $tracefh->getline)
+    {
+      chomp;
+      my ($here, $depth, @args) = split (/::/);
+      $where = new Automake::Location $here;
+      my $macro = $args[0];
+
+      prog_error ("unrequested trace '$macro'")
+       unless exists $traced{$macro};
+
+      # Skip and diagnose malformed calls.
+      if ($#args < $traced{$macro})
+       {
+         msg ('syntax', $where, "not enough arguments for $macro");
+         next;
+       }
+
+      # Alphabetical ordering please.
+      if ($macro eq 'AC_CANONICAL_BUILD')
+       {
+         if ($seen_canonical <= AC_CANONICAL_BUILD)
+           {
+             $seen_canonical = AC_CANONICAL_BUILD;
+             $canonical_location = $where;
+           }
+       }
+      elsif ($macro eq 'AC_CANONICAL_HOST')
+       {
+         if ($seen_canonical <= AC_CANONICAL_HOST)
+           {
+             $seen_canonical = AC_CANONICAL_HOST;
+             $canonical_location = $where;
+           }
+       }
+      elsif ($macro eq 'AC_CANONICAL_TARGET')
+       {
+         $seen_canonical = AC_CANONICAL_TARGET;
+         $canonical_location = $where;
+       }
+      elsif ($macro eq 'AC_CONFIG_AUX_DIR')
+       {
+         if ($seen_init_automake)
+           {
+             error ($where, "AC_CONFIG_AUX_DIR must be called before "
+                    . "AM_INIT_AUTOMAKE ...", partial => 1);
+             error ($seen_init_automake, "... AM_INIT_AUTOMAKE called here");
+           }
+         $config_aux_dir = $args[1];
+         $config_aux_dir_set_in_configure_ac = 1;
+         check_directory ($config_aux_dir, $where);
+       }
+      elsif ($macro eq 'AC_CONFIG_FILES')
+       {
+         # Look at potential Makefile.am's.
+         scan_autoconf_config_files ($where, $args[1]);
+       }
+      elsif ($macro eq 'AC_CONFIG_HEADERS')
+       {
+         foreach my $spec (split (' ', $args[1]))
+           {
+             my ($dest, @src) = split (':', $spec);
+             $ac_config_files_location{$dest} = $where;
+             push @config_headers, $spec;
+           }
+       }
+      elsif ($macro eq 'AC_CONFIG_LIBOBJ_DIR')
+       {
+         $config_libobj_dir = $args[1];
+         check_directory ($config_libobj_dir, $where);
+       }
+      elsif ($macro eq 'AC_CONFIG_LINKS')
+       {
+         foreach my $spec (split (' ', $args[1]))
+           {
+             my ($dest, $src) = split (':', $spec);
+             $ac_config_files_location{$dest} = $where;
+             push @config_links, $spec;
+           }
+       }
+      elsif ($macro eq 'AC_FC_SRCEXT')
+       {
+         my $suffix = $args[1];
+         # These flags are used as %SOURCEFLAG% in depend2.am,
+         # where the trailing space is important.
+         $sourceflags{'.' . $suffix} = '$(FCFLAGS_' . $suffix . ') '
+           if ($suffix eq 'f90' || $suffix eq 'f95' || $suffix eq 'f03' || $suffix eq 'f08');
+       }
+      elsif ($macro eq 'AC_INIT')
+       {
+         if (defined $args[2])
+           {
+             $package_version = $args[2];
+             $package_version_location = $where;
+           }
+       }
+      elsif ($macro eq 'AC_LIBSOURCE')
+       {
+         $libsources{$args[1]} = $here;
+       }
+      elsif ($macro eq 'AC_REQUIRE_AUX_FILE')
+       {
+         # Only remember the first time a file is required.
+         $required_aux_file{$args[1]} = $where
+           unless exists $required_aux_file{$args[1]};
+       }
+      elsif ($macro eq 'AC_SUBST_TRACE')
+       {
+         # Just check for alphanumeric in AC_SUBST_TRACE.  If you do
+         # AC_SUBST(5), then too bad.
+         $configure_vars{$args[1]} = $where
+           if $args[1] =~ /^\w+$/;
+       }
+      elsif ($macro eq 'AM_AUTOMAKE_VERSION')
+       {
+         error ($where,
+                "version mismatch.  This is Automake $VERSION,\n" .
+                "but the definition used by this AM_INIT_AUTOMAKE\n" .
+                "comes from Automake $args[1].  You should recreate\n" .
+                "aclocal.m4 with aclocal and run automake again.\n",
+                # $? = 63 is used to indicate version mismatch to missing.
+                exit_code => 63)
+           if $VERSION ne $args[1];
+
+         $seen_automake_version = 1;
+       }
+      elsif ($macro eq 'AM_PROG_MKDIR_P') # FIXME: to be removed in 1.13
+       {
+         msg 'obsolete', $where, <<'EOF';
+The 'AM_PROG_MKDIR_P' macro is deprecated, and will soon be removed.
+You should use the Autoconf-provided 'AC_PROG_MKDIR_P' macro instead,
+and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.
+EOF
+       }
+      elsif ($macro eq 'AM_CONDITIONAL')
+       {
+         $configure_cond{$args[1]} = $where;
+       }
+      elsif ($macro eq 'AM_GNU_GETTEXT')
+       {
+         $seen_gettext = $where;
+         $ac_gettext_location = $where;
+         $seen_gettext_external = grep ($_ eq 'external', @args);
+       }
+      elsif ($macro eq 'AM_GNU_GETTEXT_INTL_SUBDIR')
+       {
+         $seen_gettext_intl = $where;
+       }
+      elsif ($macro eq 'AM_INIT_AUTOMAKE')
+       {
+         $seen_init_automake = $where;
+         if (defined $args[2])
+           {
+              msg 'obsolete', $where, <<'EOF';
+AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.  For more info, see:
+http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation
+EOF
+             $package_version = $args[2];
+             $package_version_location = $where;
+           }
+         elsif (defined $args[1])
+           {
+             my @opts = split (' ', $args[1]);
+             @opts = map { { option => $_, where => $where } } @opts;
+             exit $exit_code if process_global_option_list (@opts);
+           }
+       }
+      elsif ($macro eq 'AM_MAINTAINER_MODE')
+       {
+         $seen_maint_mode = $where;
+       }
+      elsif ($macro eq 'AM_PROG_AR')
+       {
+         $seen_ar = $where;
+       }
+      elsif ($macro eq 'AM_PROG_CC_C_O')
+       {
+         $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);
+         error ($where, "missing m4 quoting, macro depth $depth")
+           if ($depth != 1);
+       }
+      elsif ($macro eq '_AM_COND_ELSE')
+        {
+         cond_stack_else ('!', $args[1], $where);
+         error ($where, "missing m4 quoting, macro depth $depth")
+           if ($depth != 1);
+       }
+      elsif ($macro eq '_AM_COND_ENDIF')
+        {
+         cond_stack_endif (undef, undef, $where);
+         error ($where, "missing m4 quoting, macro depth $depth")
+           if ($depth != 1);
+       }
+      elsif ($macro eq '_AM_SUBST_NOTMAKE')
+       {
+         $ignored_configure_vars{$args[1]} = $where;
+       }
+      elsif ($macro eq 'm4_include'
+            || $macro eq 'm4_sinclude'
+            || $macro eq 'sinclude')
+       {
+         # Skip missing 'sinclude'd files.
+         next if $macro ne 'm4_include' && ! -f $args[1];
+
+         # Some modified versions of Autoconf don't use
+         # frozen files.  Consequently it's possible that we see all
+         # m4_include's performed during Autoconf's startup.
+         # Obviously we don't want to distribute Autoconf's files
+         # so we skip absolute filenames here.
+         push @configure_deps, '$(top_srcdir)/' . $args[1]
+           unless $here =~ m,^(?:\w:)?[\\/],;
+         # Keep track of the greatest timestamp.
+         if (-e $args[1])
+           {
+             my $mtime = mtime $args[1];
+             $configure_deps_greatest_timestamp = $mtime
+               if $mtime > $configure_deps_greatest_timestamp;
+           }
+       }
+      elsif ($macro eq 'LT_SUPPORTED_TAG')
+       {
+         $libtool_tags{$args[1]} = 1;
+         $libtool_new_api = 1;
+       }
+      elsif ($macro eq '_LT_AC_TAGCONFIG')
+       {
+         # _LT_AC_TAGCONFIG is an old macro present in Libtool 1.5.
+         # We use it to detect whether tags are supported.  Our
+         # preferred interface is LT_SUPPORTED_TAG, but it was
+         # introduced in Libtool 1.6.
+         if (0 == keys %libtool_tags)
+           {
+             # Hardcode the tags supported by Libtool 1.5.
+             %libtool_tags = (CC => 1, CXX => 1, GCJ => 1, F77 => 1);
+           }
+       }
+    }
+
+  error ($where, "condition stack not properly closed")
+    if (@cond_stack);
+
+  $tracefh->close;
+}
+
+
+# &scan_autoconf_files ()
+# -----------------------
+# Check whether we use 'configure.ac' or 'configure.in'.
+# Scan it (and possibly 'aclocal.m4') for interesting things.
+# We must scan aclocal.m4 because there might be AC_SUBSTs and such there.
+sub scan_autoconf_files ()
+{
+  # Reinitialize libsources here.  This isn't really necessary,
+  # since we currently assume there is only one configure.ac.  But
+  # that won't always be the case.
+  %libsources = ();
+
+  # Keep track of the youngest configure dependency.
+  $configure_deps_greatest_timestamp = mtime $configure_ac;
+  if (-e 'aclocal.m4')
+    {
+      my $mtime = mtime 'aclocal.m4';
+      $configure_deps_greatest_timestamp = $mtime
+       if $mtime > $configure_deps_greatest_timestamp;
+    }
+
+  scan_autoconf_traces ($configure_ac);
+
+  @configure_input_files = sort keys %make_list;
+  # Set input and output files if not specified by user.
+  if (! @input_files)
+    {
+      @input_files = @configure_input_files;
+      %output_files = %make_list;
+    }
+
+
+  if (! $seen_init_automake)
+    {
+      err_ac ("no proper invocation of AM_INIT_AUTOMAKE was found.\nYou "
+             . "should verify that $configure_ac invokes AM_INIT_AUTOMAKE,"
+             . "\nthat aclocal.m4 is present in the top-level directory,\n"
+             . "and that aclocal.m4 was recently regenerated "
+             . "(using aclocal)");
+    }
+  else
+    {
+      if (! $seen_automake_version)
+       {
+         if (-f 'aclocal.m4')
+           {
+             error ($seen_init_automake,
+                    "your implementation of AM_INIT_AUTOMAKE comes from " .
+                    "an\nold Automake version.  You should recreate " .
+                    "aclocal.m4\nwith aclocal and run automake again",
+                    # $? = 63 is used to indicate version mismatch to missing.
+                    exit_code => 63);
+           }
+         else
+           {
+             error ($seen_init_automake,
+                    "no proper implementation of AM_INIT_AUTOMAKE was " .
+                    "found,\nprobably because aclocal.m4 is missing.\n" .
+                    "You should run aclocal to create this file, then\n" .
+                    "run automake again");
+           }
+       }
+    }
+
+  locate_aux_dir ();
+
+  # Look for some files we need.  Always check for these.  This
+  # check must be done for every run, even those where we are only
+  # looking at a subdir Makefile.  We must set relative_dir for
+  # push_required_file to work.
+  # Sort the files for stable verbose output.
+  $relative_dir = '.';
+  foreach my $file (sort keys %required_aux_file)
+    {
+      require_conf_file ($required_aux_file{$file}->get, FOREIGN, $file)
+    }
+  err_am "'install.sh' is an anachronism; use 'install-sh' instead"
+    if -f $config_aux_dir . '/install.sh';
+
+  # Preserve dist_common for later.
+  $configure_dist_common = variable_value ('DIST_COMMON') || '';
+
+}
+
+################################################################
+
+# Set up for Cygnus mode.
+sub check_cygnus
+{
+  my $cygnus = option 'cygnus';
+  return unless $cygnus;
+
+  # This feature is deprecated, will be removed in the next
+  # Automake major release.
+  msg 'obsolete', $cygnus->get,
+      "support for Cygnus-style trees is deprecated";
+
+  set_strictness ('foreign');
+  set_option ('no-installinfo', $cygnus);
+  set_option ('no-dependencies', $cygnus);
+  set_option ('no-dist', $cygnus);
+
+  err_ac "'AM_MAINTAINER_MODE' required when --cygnus specified"
+    if !$seen_maint_mode;
+}
+
+# Do any extra checking for GNU standards.
+sub check_gnu_standards
+{
+  if ($relative_dir eq '.')
+    {
+      # In top level (or only) directory.
+      require_file ("$am_file.am", GNU,
+                   qw/INSTALL NEWS README AUTHORS ChangeLog/);
+
+      # Accept one of these three licenses; default to COPYING.
+      # Make sure we do not overwrite an existing license.
+      my $license;
+      foreach (qw /COPYING COPYING.LIB COPYING.LESSER/)
+       {
+         if (-f $_)
+           {
+             $license = $_;
+             last;
+           }
+       }
+      require_file ("$am_file.am", GNU, 'COPYING')
+       unless $license;
+    }
+
+  for my $opt ('no-installman', 'no-installinfo')
+    {
+      msg ('error-gnu', option $opt,
+          "option '$opt' disallowed by GNU standards")
+       if option $opt;
+    }
+}
+
+# Do any extra checking for GNITS standards.
+sub check_gnits_standards
+{
+  if ($relative_dir eq '.')
+    {
+      # In top level (or only) directory.
+      require_file ("$am_file.am", GNITS, 'THANKS');
+    }
+}
+
+################################################################
+#
+# Functions to handle files of each language.
+
+# Each 'lang_X_rewrite($DIRECTORY, $BASE, $EXT)' function follows a
+# simple formula: Return value is LANG_SUBDIR if the resulting object
+# file should be in a subdir if the source file is, LANG_PROCESS if
+# file is to be dealt with, LANG_IGNORE otherwise.
+
+# Much of the actual processing is handled in
+# handle_single_transform.  These functions exist so that
+# auxiliary information can be recorded for a later cleanup pass.
+# Note that the calls to these functions are computed, so don't bother
+# searching for their precise names in the source.
+
+# This is just a convenience function that can be used to determine
+# when a subdir object should be used.
+sub lang_sub_obj
+{
+    return option 'subdir-objects' ? LANG_SUBDIR : LANG_PROCESS;
+}
+
+# Rewrite a single C source file.
+sub lang_c_rewrite
+{
+  my ($directory, $base, $ext, $obj, $have_per_exec_flags, $var) = @_;
+
+  my $r = LANG_PROCESS;
+  if (option 'subdir-objects')
+    {
+      $r = LANG_SUBDIR;
+      if ($directory && $directory ne '.')
+       {
+         $base = $directory . '/' . $base;
+
+         # libtool is always able to put the object at the proper place,
+         # so we do not have to require AM_PROG_CC_C_O when building .lo files.
+         msg_var ('portability', $var,
+                  "compiling '$base.c' in subdir requires "
+                  . "'AM_PROG_CC_C_O' in '$configure_ac'",
+                  uniq_scope => US_GLOBAL,
+                  uniq_part => 'AM_PROG_CC_C_O subdir')
+           unless $seen_cc_c_o || $obj eq '.lo';
+       }
+    }
+
+  if (! $seen_cc_c_o
+      && $have_per_exec_flags
+      && ! option 'subdir-objects'
+      && $obj ne '.lo')
+    {
+      msg_var ('portability',
+              $var, "compiling '$base.c' with per-target flags requires "
+              . "'AM_PROG_CC_C_O' in '$configure_ac'",
+              uniq_scope => US_GLOBAL,
+              uniq_part => 'AM_PROG_CC_C_O per-target')
+    }
+
+    return $r;
+}
+
+# Rewrite a single C++ source file.
+sub lang_cxx_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single header file.
+sub lang_header_rewrite
+{
+    # Header files are simply ignored.
+    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
+{
+    my ($directory, $base, $ext) = @_;
+
+    my $r = &lang_sub_obj;
+    (my $newext = $ext) =~ tr/y/c/;
+    return ($r, $newext);
+}
+
+# Rewrite a single yacc++ file.
+sub lang_yaccxx_rewrite
+{
+    my ($directory, $base, $ext) = @_;
+
+    my $r = &lang_sub_obj;
+    (my $newext = $ext) =~ tr/y/c/;
+    return ($r, $newext);
+}
+
+# Rewrite a single lex file.
+sub lang_lex_rewrite
+{
+    my ($directory, $base, $ext) = @_;
+
+    my $r = &lang_sub_obj;
+    (my $newext = $ext) =~ tr/l/c/;
+    return ($r, $newext);
+}
+
+# Rewrite a single lex++ file.
+sub lang_lexxx_rewrite
+{
+    my ($directory, $base, $ext) = @_;
+
+    my $r = &lang_sub_obj;
+    (my $newext = $ext) =~ tr/l/c/;
+    return ($r, $newext);
+}
+
+# Rewrite a single assembly file.
+sub lang_asm_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single preprocessed assembly file.
+sub lang_cppasm_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single Fortran 77 file.
+sub lang_f77_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single Fortran file.
+sub lang_fc_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single preprocessed Fortran file.
+sub lang_ppfc_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single preprocessed Fortran 77 file.
+sub lang_ppf77_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single ratfor file.
+sub lang_ratfor_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single Objective C file.
+sub lang_objc_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single Objective C++ file.
+sub lang_objcxx_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single Unified Parallel C file.
+sub lang_upc_rewrite
+{
+    return &lang_sub_obj;
+}
+
+# Rewrite a single Java file.
+sub lang_java_rewrite
+{
+    return LANG_SUBDIR;
+}
+
+# The lang_X_finish functions are called after all source file
+# processing is done.  Each should handle defining rules for the
+# language, etc.  A finish function is only called if a source file of
+# the appropriate type has been seen.
+
+sub lang_vala_finish_target ($$)
+{
+  my ($self, $name) = @_;
+
+  my $derived = canonicalize ($name);
+  my $var = var "${derived}_SOURCES";
+  return unless $var;
+
+  my @vala_sources = grep { /\.(vala|vapi)$/ } ($var->value_as_list_recursive);
+
+  # For automake bug#11229.
+  return unless @vala_sources;
+
+  foreach my $vala_file (@vala_sources)
+    {
+      my $c_file = $vala_file;
+      if ($c_file =~ s/(.*)\.vala$/$1.c/)
+        {
+          $c_file = "\$(srcdir)/$c_file";
+          $output_rules .= "$c_file: \$(srcdir)/${derived}_vala.stamp\n"
+            . "\t\@if test -f \$@; then :; else rm -f \$(srcdir)/${derived}_vala.stamp; fi\n"
+            . "\t\@if test -f \$@; then :; else \\\n"
+            . "\t  \$(MAKE) \$(AM_MAKEFLAGS) \$(srcdir)/${derived}_vala.stamp; \\\n"
+            . "\tfi\n";
+         $clean_files{$c_file} = MAINTAINER_CLEAN;
+        }
+    }
+
+  # Add rebuild rules for generated header and vapi files
+  my $flags = var ($derived . '_VALAFLAGS');
+  if ($flags)
+    {
+      my $lastflag = '';
+      foreach my $flag ($flags->value_as_list_recursive)
+       {
+         if (grep (/$lastflag/, ('-H', '-h', '--header', '--internal-header',
+                                 '--vapi', '--internal-vapi', '--gir')))
+           {
+             my $headerfile = "\$(srcdir)/$flag";
+             $output_rules .= "$headerfile: \$(srcdir)/${derived}_vala.stamp\n"
+               . "\t\@if test -f \$@; then :; else rm -f \$(srcdir)/${derived}_vala.stamp; fi\n"
+               . "\t\@if test -f \$@; then :; else \\\n"
+               . "\t  \$(MAKE) \$(AM_MAKEFLAGS) \$(srcdir)/${derived}_vala.stamp; \\\n"
+               . "\tfi\n";
+
+             # valac is not used when building from dist tarballs
+             # distribute the generated files
+             push_dist_common ($headerfile);
+             $clean_files{$headerfile} = MAINTAINER_CLEAN;
+           }
+         $lastflag = $flag;
+       }
+    }
+
+  my $compile = $self->compile;
+
+  # Rewrite each occurrence of 'AM_VALAFLAGS' in the compile
+  # rule into '${derived}_VALAFLAGS' if it exists.
+  my $val = "${derived}_VALAFLAGS";
+  $compile =~ s/\(AM_VALAFLAGS\)/\($val\)/
+    if set_seen ($val);
+
+  # VALAFLAGS is a user variable (per GNU Standards),
+  # it should not be overridden in the Makefile...
+  check_user_variables 'VALAFLAGS';
+
+  my $dirname = dirname ($name);
+
+  # Only generate C code, do not run C compiler
+  $compile .= " -C";
+
+  my $verbose = verbose_flag ('VALAC');
+  my $silent = silent_flag ();
+  my $stampfile = "\$(srcdir)/${derived}_vala.stamp";
+
+  $output_rules .=
+    "\$(srcdir)/${derived}_vala.stamp: @vala_sources\n".
+# Since the C files generated from the vala sources depend on the
+# ${derived}_vala.stamp file, we must ensure its timestamp is older than
+# those of the C files generated by the valac invocation below (this is
+# especially important on systems with sub-second timestamp resolution).
+# Thus we need to create the stamp file *before* invoking valac, and to
+# move it to its final location only after valac has been invoked.
+    "\t${silent}rm -f \$\@ && echo stamp > \$\@-t\n".
+    "\t${verbose}\$(am__cd) \$(srcdir) && $compile @vala_sources\n".
+    "\t${silent}mv -f \$\@-t \$\@\n";
+
+  push_dist_common ($stampfile);
+
+  $clean_files{$stampfile} = 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
+{
+    my ($self, $aggregate, $output, $input, %transform) = @_;
+
+    # If some relevant *YFLAGS variable contains the '-d' flag, we'll
+    # have to to generate special code.
+    my $yflags_contains_minus_d = 0;
+
+    foreach my $pfx ("", "${aggregate}_")
+      {
+       my $yflagsvar = var ("${pfx}YFLAGS");
+       next unless $yflagsvar;
+       # We cannot work reliably with conditionally-defined YFLAGS.
+       if ($yflagsvar->has_conditional_contents)
+         {
+           msg_var ('unsupported', $yflagsvar,
+                    "'${pfx}YFLAGS' cannot have conditional contents");
+         }
+       else
+         {
+           $yflags_contains_minus_d = 1
+             if grep (/^-d$/, $yflagsvar->value_as_list_recursive);
+         }
+      }
+
+    if ($yflags_contains_minus_d)
+      {
+       # Found a '-d' that applies to the compilation of this file.
+       # Add a dependency for the generated header file, and arrange
+       # for that file to be included in the distribution.
+
+       # The extension of the output file (e.g., '.c' or '.cxx').
+       # We'll need it to compute the name of the generated header file.
+       (my $output_ext = basename ($output)) =~ s/.*(\.[^.]+)$/$1/;
+
+       # We know that a yacc input should be turned into either a C or
+       # C++ output file.  We depend on this fact (here and in yacc.am),
+       # so check that it really holds.
+       my $lang = $languages{$extension_map{$output_ext}};
+       prog_error "invalid output name '$output' for yacc file '$input'"
+         if (!$lang || ($lang->name ne 'c' && $lang->name ne 'cxx'));
+
+       (my $header_ext = $output_ext) =~ s/c/h/g;
+        # Quote $output_ext in the regexp, so that dots in it are taken
+        # as literal dots, not as metacharacters.
+       (my $header = $output) =~ s/\Q$output_ext\E$/$header_ext/;
+
+       foreach my $cond (Automake::Rule::define (${header}, 'internal',
+                                                 RULE_AUTOMAKE, TRUE,
+                                                 INTERNAL))
+         {
+           my $condstr = $cond->subst_string;
+           $output_rules .=
+             "$condstr${header}: $output\n"
+             # Recover from removal of $header
+             . "$condstr\t\@if test ! -f \$@; then rm -f $output; else :; fi\n"
+             . "$condstr\t\@if test ! -f \$@; then \$(MAKE) \$(AM_MAKEFLAGS) $output; else :; fi\n";
+         }
+       # Distribute the generated file, unless its .y source was
+       # listed in a nodist_ variable.  (&handle_source_transform
+       # will set DIST_SOURCE.)
+       &push_dist_common ($header)
+         if $transform{'DIST_SOURCE'};
+
+       # The GNU rules say that yacc/lex output files should be removed
+       # by maintainer-clean.  However, if the files are not distributed,
+       # then we want to remove them with "make clean"; otherwise,
+       # "make distcheck" will fail.
+       $clean_files{$header} = $transform{'DIST_SOURCE'} ? MAINTAINER_CLEAN : CLEAN;
+      }
+    # See the comment above for $HEADER.
+    $clean_files{$output} = $transform{'DIST_SOURCE'} ? MAINTAINER_CLEAN : CLEAN;
+}
+
+# This is a lex helper which is called whenever we have decided to
+# compile a lex file.
+sub lang_lex_target_hook
+{
+    my ($self, $aggregate, $output, $input, %transform) = @_;
+    # The GNU rules say that yacc/lex output files should be removed
+    # by maintainer-clean.  However, if the files are not distributed,
+    # then we want to remove them with "make clean"; otherwise,
+    # "make distcheck" will fail.
+    $clean_files{$output} = $transform{'DIST_SOURCE'} ? MAINTAINER_CLEAN : CLEAN;
+}
+
+# This is a helper for both lex and yacc.
+sub yacc_lex_finish_helper
+{
+  return if defined $language_scratch{'lex-yacc-done'};
+  $language_scratch{'lex-yacc-done'} = 1;
+
+  # FIXME: for now, no line number.
+  require_conf_file ($configure_ac, FOREIGN, 'ylwrap');
+  &define_variable ('YLWRAP', "$am_config_aux_dir/ylwrap", INTERNAL);
+}
+
+sub lang_yacc_finish
+{
+  return if defined $language_scratch{'yacc-done'};
+  $language_scratch{'yacc-done'} = 1;
+
+  reject_var 'YACCFLAGS', "'YACCFLAGS' obsolete; use 'YFLAGS' instead";
+
+  yacc_lex_finish_helper;
+}
+
+
+sub lang_lex_finish
+{
+  return if defined $language_scratch{'lex-done'};
+  $language_scratch{'lex-done'} = 1;
+
+  yacc_lex_finish_helper;
+}
+
+
+# Given a hash table of linker names, pick the name that has the most
+# precedence.  This is lame, but something has to have global
+# knowledge in order to eliminate the conflict.  Add more linkers as
+# required.
+sub resolve_linker
+{
+    my (%linkers) = @_;
+
+    foreach my $l (qw(GCJLINK OBJCXXLINK CXXLINK F77LINK FCLINK OBJCLINK UPCLINK))
+    {
+       return $l if defined $linkers{$l};
+    }
+    return 'LINK';
+}
+
+# Called to indicate that an extension was used.
+sub saw_extension
+{
+    my ($ext) = @_;
+    if (! defined $extension_seen{$ext})
+    {
+       $extension_seen{$ext} = 1;
+    }
+    else
+    {
+       ++$extension_seen{$ext};
+    }
+}
+
+# Return the number of files seen for a given language.  Knows about
+# special cases we care about.  FIXME: this is hideous.  We need
+# something that involves real language objects.  For instance yacc
+# and yaccxx could both derive from a common yacc class which would
+# know about the strange ylwrap requirement.  (Or better yet we could
+# just not support legacy yacc!)
+sub count_files_for_language
+{
+    my ($name) = @_;
+
+    my @names;
+    if ($name eq 'yacc' || $name eq 'yaccxx')
+    {
+       @names = ('yacc', 'yaccxx');
+    }
+    elsif ($name eq 'lex' || $name eq 'lexxx')
+    {
+       @names = ('lex', 'lexxx');
+    }
+    else
+    {
+       @names = ($name);
+    }
+
+    my $r = 0;
+    foreach $name (@names)
+    {
+       my $lang = $languages{$name};
+       foreach my $ext (@{$lang->extensions})
+       {
+           $r += $extension_seen{$ext}
+               if defined $extension_seen{$ext};
+       }
+    }
+
+    return $r
+}
+
+# Called to ask whether source files have been seen . If HEADERS is 1,
+# headers can be included.
+sub saw_sources_p
+{
+    my ($headers) = @_;
+
+    # count all the sources
+    my $count = 0;
+    foreach my $val (values %extension_seen)
+    {
+       $count += $val;
+    }
+
+    if (!$headers)
+    {
+       $count -= count_files_for_language ('header');
+    }
+
+    return $count > 0;
+}
+
+
+# register_language (%ATTRIBUTE)
+# ------------------------------
+# Register a single language.
+# Each %ATTRIBUTE is of the form ATTRIBUTE => VALUE.
+sub register_language (%)
+{
+  my (%option) = @_;
+
+  # Set the defaults.
+  $option{'autodep'} = 'no'
+    unless defined $option{'autodep'};
+  $option{'linker'} = ''
+    unless defined $option{'linker'};
+  $option{'flags'} = []
+    unless defined $option{'flags'};
+  $option{'output_extensions'} = sub { return ( '.$(OBJEXT)', '.lo' ) }
+    unless defined $option{'output_extensions'};
+  $option{'nodist_specific'} = 0
+    unless defined $option{'nodist_specific'};
+
+  my $lang = new Language (%option);
+
+  # Fill indexes.
+  $extension_map{$_} = $lang->name foreach @{$lang->extensions};
+  $languages{$lang->name} = $lang;
+  my $link = $lang->linker;
+  if ($link)
+    {
+      if (exists $link_languages{$link})
+       {
+         prog_error ("'$link' has different definitions in "
+                     . $lang->name . " and " . $link_languages{$link}->name)
+           if $lang->link ne $link_languages{$link}->link;
+       }
+      else
+       {
+         $link_languages{$link} = $lang;
+       }
+    }
+
+  # Update the pattern of known extensions.
+  accept_extensions (@{$lang->extensions});
+
+  # Upate the $suffix_rule map.
+  foreach my $suffix (@{$lang->extensions})
+    {
+      foreach my $dest (&{$lang->output_extensions} ($suffix))
+       {
+         register_suffix_rule (INTERNAL, $suffix, $dest);
+       }
+    }
+}
+
+# derive_suffix ($EXT, $OBJ)
+# --------------------------
+# This function is used to find a path from a user-specified suffix $EXT
+# to $OBJ or to some other suffix we recognize internally, e.g. 'cc'.
+sub derive_suffix ($$)
+{
+  my ($source_ext, $obj) = @_;
+
+  while (! $extension_map{$source_ext}
+        && $source_ext ne $obj
+        && exists $suffix_rules->{$source_ext}
+        && exists $suffix_rules->{$source_ext}{$obj})
+    {
+      $source_ext = $suffix_rules->{$source_ext}{$obj}[0];
+    }
+
+  return $source_ext;
+}
+
+
+################################################################
+
+# Pretty-print something and append to output_rules.
+sub pretty_print_rule
+{
+    $output_rules .= &makefile_wrap (@_);
+}
+
+
+################################################################
+
+
+## -------------------------------- ##
+## Handling the conditional stack.  ##
+## -------------------------------- ##
+
+
+# $STRING
+# make_conditional_string ($NEGATE, $COND)
+# ----------------------------------------
+sub make_conditional_string ($$)
+{
+  my ($negate, $cond) = @_;
+  $cond = "${cond}_TRUE"
+    unless $cond =~ /^TRUE|FALSE$/;
+  $cond = Automake::Condition::conditional_negate ($cond)
+    if $negate;
+  return $cond;
+}
+
+
+my %_am_macro_for_cond =
+  (
+  AMDEP => "one of the compiler tests\n"
+          . "    AC_PROG_CC, AC_PROG_CXX, AC_PROG_OBJC, AC_PROG_OBJCXX,\n"
+          . "    AM_PROG_AS, AM_PROG_GCJ, AM_PROG_UPC",
+  am__fastdepCC => 'AC_PROG_CC',
+  am__fastdepCCAS => 'AM_PROG_AS',
+  am__fastdepCXX => 'AC_PROG_CXX',
+  am__fastdepGCJ => 'AM_PROG_GCJ',
+  am__fastdepOBJC => 'AC_PROG_OBJC',
+  am__fastdepOBJCXX => 'AC_PROG_OBJCXX',
+  am__fastdepUPC => 'AM_PROG_UPC'
+  );
+
+# $COND
+# cond_stack_if ($NEGATE, $COND, $WHERE)
+# --------------------------------------
+sub cond_stack_if ($$$)
+{
+  my ($negate, $cond, $where) = @_;
+
+  if (! $configure_cond{$cond} && $cond !~ /^TRUE|FALSE$/)
+    {
+      my $text = "$cond does not appear in AM_CONDITIONAL";
+      my $scope = US_LOCAL;
+      if (exists $_am_macro_for_cond{$cond})
+       {
+         my $mac = $_am_macro_for_cond{$cond};
+         $text .= "\n  The usual way to define '$cond' is to add ";
+         $text .= ($mac =~ / /) ? $mac : "'$mac'";
+         $text .= "\n  to '$configure_ac' and run 'aclocal' and 'autoconf' again";
+         # These warnings appear in Automake files (depend2.am),
+         # so there is no need to display them more than once:
+         $scope = US_GLOBAL;
+       }
+      error $where, $text, uniq_scope => $scope;
+    }
+
+  push (@cond_stack, make_conditional_string ($negate, $cond));
+
+  return new Automake::Condition (@cond_stack);
+}
+
+
+# $COND
+# cond_stack_else ($NEGATE, $COND, $WHERE)
+# ----------------------------------------
+sub cond_stack_else ($$$)
+{
+  my ($negate, $cond, $where) = @_;
+
+  if (! @cond_stack)
+    {
+      error $where, "else without if";
+      return FALSE;
+    }
+
+  $cond_stack[$#cond_stack] =
+    Automake::Condition::conditional_negate ($cond_stack[$#cond_stack]);
+
+  # If $COND is given, check against it.
+  if (defined $cond)
+    {
+      $cond = make_conditional_string ($negate, $cond);
+
+      error ($where, "else reminder ($negate$cond) incompatible with "
+            . "current conditional: $cond_stack[$#cond_stack]")
+       if $cond_stack[$#cond_stack] ne $cond;
+    }
+
+  return new Automake::Condition (@cond_stack);
+}
+
+
+# $COND
+# cond_stack_endif ($NEGATE, $COND, $WHERE)
+# -----------------------------------------
+sub cond_stack_endif ($$$)
+{
+  my ($negate, $cond, $where) = @_;
+  my $old_cond;
+
+  if (! @cond_stack)
+    {
+      error $where, "endif without if";
+      return TRUE;
+    }
+
+  # If $COND is given, check against it.
+  if (defined $cond)
+    {
+      $cond = make_conditional_string ($negate, $cond);
+
+      error ($where, "endif reminder ($negate$cond) incompatible with "
+            . "current conditional: $cond_stack[$#cond_stack]")
+       if $cond_stack[$#cond_stack] ne $cond;
+    }
+
+  pop @cond_stack;
+
+  return new Automake::Condition (@cond_stack);
+}
+
+
+
+
+
+## ------------------------ ##
+## Handling the variables.  ##
+## ------------------------ ##
+
+
+# &define_pretty_variable ($VAR, $COND, $WHERE, @VALUE)
+# -----------------------------------------------------
+# Like define_variable, but the value is a list, and the variable may
+# be defined conditionally.  The second argument is the condition
+# under which the value should be defined; this should be the empty
+# string to define the variable unconditionally.  The third argument
+# is a list holding the values to use for the variable.  The value is
+# pretty printed in the output file.
+sub define_pretty_variable ($$$@)
+{
+    my ($var, $cond, $where, @value) = @_;
+
+    if (! vardef ($var, $cond))
+    {
+       Automake::Variable::define ($var, VAR_AUTOMAKE, '', $cond, "@value",
+                                   '', $where, VAR_PRETTY);
+       rvar ($var)->rdef ($cond)->set_seen;
+    }
+}
+
+
+# define_variable ($VAR, $VALUE, $WHERE)
+# --------------------------------------
+# Define a new Automake Makefile variable VAR to VALUE, but only if
+# not already defined.
+sub define_variable ($$$)
+{
+    my ($var, $value, $where) = @_;
+    define_pretty_variable ($var, TRUE, $where, $value);
+}
+
+
+# define_files_variable ($VAR, \@BASENAME, $EXTENSION, $WHERE)
+# ------------------------------------------------------------
+# Define the $VAR which content is the list of file names composed of
+# a @BASENAME and the $EXTENSION.
+sub define_files_variable ($\@$$)
+{
+  my ($var, $basename, $extension, $where) = @_;
+  define_variable ($var,
+                  join (' ', map { "$_.$extension" } @$basename),
+                  $where);
+}
+
+
+# Like define_variable, but define a variable to be the configure
+# substitution by the same name.
+sub define_configure_variable ($)
+{
+  my ($var) = @_;
+  # Some variables we do not want to output.  For instance it
+  # would be a bad idea to output `U = @U@` when `@U@` can be
+  # substituted as `\`.
+  my $pretty = exists $ignored_configure_vars{$var} ? VAR_SILENT : VAR_ASIS;
+  Automake::Variable::define ($var, VAR_CONFIGURE, '', TRUE, subst $var,
+                             '', $configure_vars{$var}, $pretty);
+}
+
+
+# define_compiler_variable ($LANG)
+# --------------------------------
+# Define a compiler variable.  We also handle defining the 'LT'
+# version of the command when using libtool.
+sub define_compiler_variable ($)
+{
+    my ($lang) = @_;
+
+    my ($var, $value) = ($lang->compiler, $lang->compile);
+    my $libtool_tag = '';
+    $libtool_tag = '--tag=' . $lang->libtool_tag . ' '
+      if $lang->libtool_tag && exists $libtool_tags{$lang->libtool_tag};
+    &define_variable ($var, $value, INTERNAL);
+    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');
+}
+
+
+# define_linker_variable ($LANG)
+# ------------------------------
+# Define linker variables.
+sub define_linker_variable ($)
+{
+    my ($lang) = @_;
+
+    my $libtool_tag = '';
+    $libtool_tag = '--tag=' . $lang->libtool_tag . ' '
+      if $lang->libtool_tag && exists $libtool_tags{$lang->libtool_tag};
+    # CCLD = $(CC).
+    &define_variable ($lang->lder, $lang->ld, INTERNAL);
+    # CCLINK = $(CCLD) blah blah...
+    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 ($$)
+{
+  my ($linker, $target) = @_;
+
+  # If the user wrote a custom link command, we don't define ours.
+  return "${target}_LINK"
+    if set_seen "${target}_LINK";
+
+  my $xlink = $linker ? $linker : 'LINK';
+
+  my $lang = $link_languages{$xlink};
+  prog_error "Unknown language for linker variable '$xlink'"
+    unless $lang;
+
+  my $link_command = $lang->link;
+  if (var 'LIBTOOL')
+    {
+      my $libtool_tag = '';
+      $libtool_tag = '--tag=' . $lang->libtool_tag . ' '
+       if $lang->libtool_tag && exists $libtool_tags{$lang->libtool_tag};
+
+      my $verbose = define_verbose_libtool ();
+      $link_command =
+       "\$(LIBTOOL) $verbose $libtool_tag\$(AM_LIBTOOLFLAGS) \$(LIBTOOLFLAGS) "
+       . "--mode=link " . $link_command;
+    }
+
+  # Rewrite each occurrence of 'AM_$flag' in the link
+  # command into '${derived}_$flag' if it exists.
+  my $orig_command = $link_command;
+  my @flags = (@{$lang->flags}, 'LDFLAGS');
+  push @flags, 'LIBTOOLFLAGS' if var 'LIBTOOL';
+  for my $flag (@flags)
+    {
+      my $val = "${target}_$flag";
+      $link_command =~ s/\(AM_$flag\)/\($val\)/
+       if set_seen ($val);
+    }
+
+  # If the computed command is the same as the generic command, use
+  # the command linker variable.
+  return ($lang->linker, $lang->lder)
+    if $link_command eq $orig_command;
+
+  &define_variable ("${target}_LINK", $link_command, INTERNAL);
+  return ("${target}_LINK", $lang->lder);
+}
+
+################################################################
+
+# &check_trailing_slash ($WHERE, $LINE)
+# -------------------------------------
+# Return 1 iff $LINE ends with a slash.
+# Might modify $LINE.
+sub check_trailing_slash ($\$)
+{
+  my ($where, $line) = @_;
+
+  # Ignore '##' lines.
+  return 0 if $$line =~ /$IGNORE_PATTERN/o;
+
+  # Catch and fix a common error.
+  msg "syntax", $where, "whitespace following trailing backslash"
+    if $$line =~ s/\\\s+\n$/\\\n/;
+
+  return $$line =~ /\\$/;
+}
+
+
+# &read_am_file ($AMFILE, $WHERE)
+# -------------------------------
+# Read Makefile.am and set up %contents.  Simultaneously copy lines
+# from Makefile.am into $output_trailer, or define variables as
+# appropriate.  NOTE we put rules in the trailer section.  We want
+# user rules to come after our generated stuff.
+sub read_am_file ($$)
+{
+    my ($amfile, $where) = @_;
+
+    my $am_file = new Automake::XFile ("< $amfile");
+    verb "reading $amfile";
+
+    # Keep track of the youngest output dependency.
+    my $mtime = mtime $amfile;
+    $output_deps_greatest_timestamp = $mtime
+      if $mtime > $output_deps_greatest_timestamp;
+
+    my $spacing = '';
+    my $comment = '';
+    my $blank = 0;
+    my $saw_bk = 0;
+    my $var_look = VAR_ASIS;
+
+    use constant IN_VAR_DEF => 0;
+    use constant IN_RULE_DEF => 1;
+    use constant IN_COMMENT => 2;
+    my $prev_state = IN_RULE_DEF;
+
+    while ($_ = $am_file->getline)
+    {
+       $where->set ("$amfile:$.");
+       if (/$IGNORE_PATTERN/o)
+       {
+           # Merely delete comments beginning with two hashes.
+       }
+       elsif (/$WHITE_PATTERN/o)
+       {
+           error $where, "blank line following trailing backslash"
+             if $saw_bk;
+           # Stick a single white line before the incoming macro or rule.
+           $spacing = "\n";
+           $blank = 1;
+           # Flush all comments seen so far.
+           if ($comment ne '')
+           {
+               $output_vars .= $comment;
+               $comment = '';
+           }
+       }
+       elsif (/$COMMENT_PATTERN/o)
+       {
+           # Stick comments before the incoming macro or rule.  Make
+           # sure a blank line precedes the first block of comments.
+           $spacing = "\n" unless $blank;
+           $blank = 1;
+           $comment .= $spacing . $_;
+           $spacing = '';
+           $prev_state = IN_COMMENT;
+       }
+       else
+       {
+           last;
+       }
+       $saw_bk = check_trailing_slash ($where, $_);
+    }
+
+    # We save the conditional stack on entry, and then check to make
+    # sure it is the same on exit.  This lets us conditionally include
+    # other files.
+    my @saved_cond_stack = @cond_stack;
+    my $cond = new Automake::Condition (@cond_stack);
+
+    my $last_var_name = '';
+    my $last_var_type = '';
+    my $last_var_value = '';
+    my $last_where;
+    # FIXME: shouldn't use $_ in this loop; it is too big.
+    while ($_)
+    {
+       $where->set ("$amfile:$.");
+
+       # Make sure the line is \n-terminated.
+       chomp;
+       $_ .= "\n";
+
+       # Don't look at MAINTAINER_MODE_TRUE here.  That shouldn't be
+       # used by users.  @MAINT@ is an anachronism now.
+       $_ =~ s/\@MAINT\@//g
+           unless $seen_maint_mode;
+
+       my $new_saw_bk = check_trailing_slash ($where, $_);
+
+       if (/$IGNORE_PATTERN/o)
+       {
+           # Merely delete comments beginning with two hashes.
+
+           # Keep any backslash from the previous line.
+           $new_saw_bk = $saw_bk;
+       }
+       elsif (/$WHITE_PATTERN/o)
+       {
+           # Stick a single white line before the incoming macro or rule.
+           $spacing = "\n";
+           error $where, "blank line following trailing backslash"
+             if $saw_bk;
+       }
+       elsif (/$COMMENT_PATTERN/o)
+       {
+           error $where, "comment following trailing backslash"
+             if $saw_bk && $prev_state != IN_COMMENT;
+
+           # Stick comments before the incoming macro or rule.
+           $comment .= $spacing . $_;
+           $spacing = '';
+           $prev_state = IN_COMMENT;
+       }
+       elsif ($saw_bk)
+       {
+           if ($prev_state == IN_RULE_DEF)
+           {
+             my $cond = new Automake::Condition @cond_stack;
+             $output_trailer .= $cond->subst_string;
+             $output_trailer .= $_;
+           }
+           elsif ($prev_state == IN_COMMENT)
+           {
+               # If the line doesn't start with a '#', add it.
+               # We do this because a continued comment like
+               #   # A = foo \
+               #         bar \
+               #         baz
+               # is not portable.  BSD make doesn't honor
+               # escaped newlines in comments.
+               s/^#?/#/;
+               $comment .= $spacing . $_;
+           }
+           else # $prev_state == IN_VAR_DEF
+           {
+             $last_var_value .= ' '
+               unless $last_var_value =~ /\s$/;
+             $last_var_value .= $_;
+
+             if (!/\\$/)
+               {
+                 Automake::Variable::define ($last_var_name, VAR_MAKEFILE,
+                                             $last_var_type, $cond,
+                                             $last_var_value, $comment,
+                                             $last_where, VAR_ASIS)
+                   if $cond != FALSE;
+                 $comment = $spacing = '';
+               }
+           }
+       }
+
+       elsif (/$IF_PATTERN/o)
+         {
+           $cond = cond_stack_if ($1, $2, $where);
+         }
+       elsif (/$ELSE_PATTERN/o)
+         {
+           $cond = cond_stack_else ($1, $2, $where);
+         }
+       elsif (/$ENDIF_PATTERN/o)
+         {
+           $cond = cond_stack_endif ($1, $2, $where);
+         }
+
+       elsif (/$RULE_PATTERN/o)
+       {
+           # Found a rule.
+           $prev_state = IN_RULE_DEF;
+
+           # For now we have to output all definitions of user rules
+           # and can't diagnose duplicates (see the comment in
+           # Automake::Rule::define). So we go on and ignore the return value.
+           Automake::Rule::define ($1, $amfile, RULE_USER, $cond, $where);
+
+           check_variable_expansions ($_, $where);
+
+           $output_trailer .= $comment . $spacing;
+           my $cond = new Automake::Condition @cond_stack;
+           $output_trailer .= $cond->subst_string;
+           $output_trailer .= $_;
+           $comment = $spacing = '';
+       }
+       elsif (/$ASSIGNMENT_PATTERN/o)
+       {
+           # Found a macro definition.
+           $prev_state = IN_VAR_DEF;
+           $last_var_name = $1;
+           $last_var_type = $2;
+           $last_var_value = $3;
+           $last_where = $where->clone;
+           if ($3 ne '' && substr ($3, -1) eq "\\")
+             {
+               # We preserve the '\' because otherwise the long lines
+               # that are generated will be truncated by broken
+               # 'sed's.
+               $last_var_value = $3 . "\n";
+             }
+           # Normally we try to output variable definitions in the
+           # same format they were input.  However, POSIX compliant
+           # systems are not required to support lines longer than
+           # 2048 bytes (most notably, some sed implementation are
+           # limited to 4000 bytes, and sed is used by config.status
+           # to rewrite Makefile.in into Makefile).  Moreover nobody
+           # would really write such long lines by hand since it is
+           # hardly maintainable.  So if a line is longer that 1000
+           # bytes (an arbitrary limit), assume it has been
+           # automatically generated by some tools, and flatten the
+           # variable definition.  Otherwise, keep the variable as it
+           # as been input.
+           $var_look = VAR_PRETTY if length ($last_var_value) >= 1000;
+
+           if (!/\\$/)
+             {
+               Automake::Variable::define ($last_var_name, VAR_MAKEFILE,
+                                           $last_var_type, $cond,
+                                           $last_var_value, $comment,
+                                           $last_where, $var_look)
+                 if $cond != FALSE;
+               $comment = $spacing = '';
+               $var_look = VAR_ASIS;
+             }
+       }
+       elsif (/$INCLUDE_PATTERN/o)
+       {
+           my $path = $1;
+
+           if ($path =~ s/^\$\(top_srcdir\)\///)
+             {
+               push (@include_stack, "\$\(top_srcdir\)/$path");
+               # Distribute any included file.
+
+               # Always use the $(top_srcdir) prefix in DIST_COMMON,
+               # otherwise OSF make will implicitly copy the included
+               # file in the build tree during "make distdir" to satisfy
+               # the dependency.
+               # (subdircond2.test and subdircond3.test will fail.)
+               push_dist_common ("\$\(top_srcdir\)/$path");
+             }
+           else
+             {
+               $path =~ s/\$\(srcdir\)\///;
+               push (@include_stack, "\$\(srcdir\)/$path");
+               # Always use the $(srcdir) prefix in DIST_COMMON,
+               # otherwise OSF make will implicitly copy the included
+               # file in the build tree during "make distdir" to satisfy
+               # the dependency.
+               # (subdircond2.test and subdircond3.test will fail.)
+               push_dist_common ("\$\(srcdir\)/$path");
+               $path = $relative_dir . "/" . $path if $relative_dir ne '.';
+             }
+           $where->push_context ("'$path' included from here");
+           &read_am_file ($path, $where);
+           $where->pop_context;
+       }
+       else
+       {
+           # This isn't an error; it is probably a continued rule.
+           # In fact, this is what we assume.
+           $prev_state = IN_RULE_DEF;
+           check_variable_expansions ($_, $where);
+           $output_trailer .= $comment . $spacing;
+           my $cond = new Automake::Condition @cond_stack;
+           $output_trailer .= $cond->subst_string;
+           $output_trailer .= $_;
+           $comment = $spacing = '';
+           error $where, "'#' comment at start of rule is unportable"
+             if $_ =~ /^\t\s*\#/;
+       }
+
+       $saw_bk = $new_saw_bk;
+       $_ = $am_file->getline;
+    }
+
+    $output_trailer .= $comment;
+
+    error ($where, "trailing backslash on last line")
+      if $saw_bk;
+
+    error ($where, (@cond_stack ? "unterminated conditionals: @cond_stack"
+                   : "too many conditionals closed in include file"))
+      if "@saved_cond_stack" ne "@cond_stack";
+}
+
+
+# define_standard_variables ()
+# ----------------------------
+# A helper for read_main_am_file which initializes configure variables
+# and variables from header-vars.am.
+sub define_standard_variables
+{
+  my $saved_output_vars = $output_vars;
+  my ($comments, undef, $rules) =
+    file_contents_internal (1, "$libdir/am/header-vars.am",
+                           new Automake::Location);
+
+  foreach my $var (sort keys %configure_vars)
+    {
+      &define_configure_variable ($var);
+    }
+
+  $output_vars .= $comments . $rules;
+}
+
+# Read main am file.
+sub read_main_am_file
+{
+    my ($amfile) = @_;
+
+    # This supports the strange variable tricks we are about to play.
+    prog_error ("variable defined before read_main_am_file\n" . variables_dump ())
+      if (scalar (variables) > 0);
+
+    # Generate copyright header for generated Makefile.in.
+    # We do discard the output of predefined variables, handled below.
+    $output_vars = ("# $in_file_name generated by automake "
+                  . $VERSION . " from $am_file_name.\n");
+    $output_vars .= '# ' . subst ('configure_input') . "\n";
+    $output_vars .= $gen_copyright;
+
+    # We want to predefine as many variables as possible.  This lets
+    # the user set them with '+=' in Makefile.am.
+    &define_standard_variables;
+
+    # Read user file, which might override some of our values.
+    &read_am_file ($amfile, new Automake::Location);
+}
+
+
+
+################################################################
+
+# $FLATTENED
+# &flatten ($STRING)
+# ------------------
+# Flatten the $STRING and return the result.
+sub flatten
+{
+  $_ = shift;
+
+  s/\\\n//somg;
+  s/\s+/ /g;
+  s/^ //;
+  s/ $//;
+
+  return $_;
+}
+
+
+# transform_token ($TOKEN, \%PAIRS, $KEY)
+# =======================================
+# Return the value associated to $KEY in %PAIRS, as used on $TOKEN
+# (which should be ?KEY? or any of the special %% requests)..
+sub transform_token ($$$)
+{
+  my ($token, $transform, $key) = @_;
+  my $res = $transform->{$key};
+  prog_error "Unknown key '$key' in '$token'" unless defined $res;
+  return $res;
+}
+
+
+# transform ($TOKEN, \%PAIRS)
+# ===========================
+# If ($TOKEN, $VAL) is in %PAIRS:
+#   - replaces %KEY% with $VAL,
+#   - enables/disables ?KEY? and ?!KEY?,
+#   - replaces %?KEY% with TRUE or FALSE.
+#   - replaces %KEY?IFTRUE%, %KEY:IFFALSE%, and %KEY?IFTRUE:IFFALSE% with
+#     IFTRUE / IFFALSE, as appropriate.
+sub transform ($$)
+{
+  my ($token, $transform) = @_;
+
+  # %KEY%.
+  # Must be before the following pattern to exclude the case
+  # when there is neither IFTRUE nor IFFALSE.
+  if ($token =~ /^%([\w\-]+)%$/)
+    {
+      return transform_token ($token, $transform, $1);
+    }
+  # %KEY?IFTRUE%, %KEY:IFFALSE%, and %KEY?IFTRUE:IFFALSE%.
+  elsif ($token =~ /^%([\w\-]+)(?:\?([^?:%]+))?(?::([^?:%]+))?%$/)
+    {
+      return transform_token ($token, $transform, $1) ? ($2 || '') : ($3 || '');
+    }
+  # %?KEY%.
+  elsif ($token =~ /^%\?([\w\-]+)%$/)
+    {
+      return transform_token ($token, $transform, $1) ? 'TRUE' : 'FALSE';
+    }
+  # ?KEY? and ?!KEY?.
+  elsif ($token =~ /^ \? (!?) ([\w\-]+) \? $/x)
+    {
+      my $neg = ($1 eq '!') ? 1 : 0;
+      my $val = transform_token ($token, $transform, $2);
+      return (!!$val == $neg) ? '##%' : '';
+    }
+  else
+    {
+      prog_error "Unknown request format: $token";
+    }
+}
+
+# $TEXT
+# preprocess_file ($MAKEFILE, [%TRANSFORM])
+# -----------------------------------------
+# Load a $MAKEFILE, apply the %TRANSFORM, and return the result.
+# No extra parsing of post-processing is done (i.e., recognition of
+# rules declaration or of make variables definitions).
+sub preprocess_file ($%)
+{
+  my ($file, %transform) = @_;
+
+  # Complete %transform with global options.
+  # Note that %transform goes last, so it overrides global options.
+  %transform = ('CYGNUS'      => !! option 'cygnus',
+                'MAINTAINER-MODE'
+                => $seen_maint_mode ? subst ('MAINTAINER_MODE_TRUE') : '',
+
+                'XZ'          => !! option 'dist-xz',
+                'LZMA'        => !! option 'dist-lzma',
+                'LZIP'        => !! option 'dist-lzip',
+                'BZIP2'       => !! option 'dist-bzip2',
+                'COMPRESS'    => !! option 'dist-tarZ',
+                'GZIP'        =>  ! option 'no-dist-gzip',
+                'SHAR'        => !! option 'dist-shar',
+                'ZIP'         => !! option 'dist-zip',
+
+                'INSTALL-INFO' =>  ! option 'no-installinfo',
+                'INSTALL-MAN'  =>  ! option 'no-installman',
+                'HAVE-MANS'    => !! var ('MANS'),
+                'CK-NEWS'      => !! option 'check-news',
+
+                'SUBDIRS'      => !! var ('SUBDIRS'),
+                'TOPDIR_P'     => $relative_dir eq '.',
+
+                'BUILD'    => ($seen_canonical >= AC_CANONICAL_BUILD),
+                'HOST'     => ($seen_canonical >= AC_CANONICAL_HOST),
+                'TARGET'   => ($seen_canonical >= AC_CANONICAL_TARGET),
+
+                'LIBTOOL'      => !! var ('LIBTOOL'),
+                'NONLIBTOOL'   => 1,
+               %transform);
+
+  if (! defined ($_ = $am_file_cache{$file}))
+    {
+      verb "reading $file";
+      # Swallow the whole file.
+      my $fc_file = new Automake::XFile "< $file";
+      my $saved_dollar_slash = $/;
+      undef $/;
+      $_ = $fc_file->getline;
+      $/ = $saved_dollar_slash;
+      $fc_file->close;
+      # Remove ##-comments.
+      # Besides we don't need more than two consecutive new-lines.
+      s/(?:$IGNORE_PATTERN|(?<=\n\n)\n+)//gom;
+      # Remember the contents of the just-read file.
+      $am_file_cache{$file} = $_;
+    }
+
+  # Substitute Automake template tokens.
+  s/(?: % \?? [\w\-]+ %
+      | % [\w\-]+ (?:\?[^?:%]+)? (?::[^?:%]+)? %
+      | \? !? [\w\-]+ \?
+    )/transform($&, \%transform)/gex;
+  # transform() may have added some ##%-comments to strip.
+  # (we use '##%' instead of '##' so we can distinguish ##%##%##% from
+  # ####### and do not remove the latter.)
+  s/^[ \t]*(?:##%)+.*\n//gm;
+
+  return $_;
+}
+
+
+# @PARAGRAPHS
+# &make_paragraphs ($MAKEFILE, [%TRANSFORM])
+# ------------------------------------------
+# Load a $MAKEFILE, apply the %TRANSFORM, and return it as a list of
+# paragraphs.
+sub make_paragraphs ($%)
+{
+  my ($file, %transform) = @_;
+  $transform{FIRST} = !$transformed_files{$file};
+  $transformed_files{$file} = 1;
+
+  my @lines = split /(?<!\\)\n/, preprocess_file ($file, %transform);
+  my @res;
+
+  while (defined ($_ = shift @lines))
+    {
+      my $paragraph = $_;
+      # If we are a rule, eat as long as we start with a tab.
+      if (/$RULE_PATTERN/smo)
+       {
+         while (defined ($_ = shift @lines) && $_ =~ /^\t/)
+           {
+             $paragraph .= "\n$_";
+           }
+         unshift (@lines, $_);
+       }
+
+      # If we are a comments, eat as much comments as you can.
+      elsif (/$COMMENT_PATTERN/smo)
+       {
+         while (defined ($_ = shift @lines)
+                && $_ =~ /$COMMENT_PATTERN/smo)
+           {
+             $paragraph .= "\n$_";
+           }
+         unshift (@lines, $_);
+       }
+
+      push @res, $paragraph;
+    }
+
+  return @res;
+}
+
+
+
+# ($COMMENT, $VARIABLES, $RULES)
+# &file_contents_internal ($IS_AM, $FILE, $WHERE, [%TRANSFORM])
+# -------------------------------------------------------------
+# Return contents of a file from $libdir/am, automatically skipping
+# macros or rules which are already known. $IS_AM iff the caller is
+# reading an Automake file (as opposed to the user's Makefile.am).
+sub file_contents_internal ($$$%)
+{
+    my ($is_am, $file, $where, %transform) = @_;
+
+    $where->set ($file);
+
+    my $result_vars = '';
+    my $result_rules = '';
+    my $comment = '';
+    my $spacing = '';
+
+    # The following flags are used to track rules spanning across
+    # multiple paragraphs.
+    my $is_rule = 0;           # 1 if we are processing a rule.
+    my $discard_rule = 0;      # 1 if the current rule should not be output.
+
+    # We save the conditional stack on entry, and then check to make
+    # sure it is the same on exit.  This lets us conditionally include
+    # other files.
+    my @saved_cond_stack = @cond_stack;
+    my $cond = new Automake::Condition (@cond_stack);
+
+    foreach (make_paragraphs ($file, %transform))
+    {
+       # FIXME: no line number available.
+       $where->set ($file);
+
+       # Sanity checks.
+       error $where, "blank line following trailing backslash:\n$_"
+         if /\\$/;
+       error $where, "comment following trailing backslash:\n$_"
+         if /\\#/;
+
+       if (/^$/)
+       {
+           $is_rule = 0;
+           # Stick empty line before the incoming macro or rule.
+           $spacing = "\n";
+       }
+       elsif (/$COMMENT_PATTERN/mso)
+       {
+           $is_rule = 0;
+           # Stick comments before the incoming macro or rule.
+           $comment = "$_\n";
+       }
+
+       # Handle inclusion of other files.
+       elsif (/$INCLUDE_PATTERN/o)
+       {
+           if ($cond != FALSE)
+             {
+               my $file = ($is_am ? "$libdir/am/" : '') . $1;
+               $where->push_context ("'$file' included from here");
+               # N-ary '.=' fails.
+               my ($com, $vars, $rules)
+                 = file_contents_internal ($is_am, $file, $where, %transform);
+               $where->pop_context;
+               $comment .= $com;
+               $result_vars .= $vars;
+               $result_rules .= $rules;
+             }
+       }
+
+       # Handling the conditionals.
+       elsif (/$IF_PATTERN/o)
+         {
+           $cond = cond_stack_if ($1, $2, $file);
+         }
+       elsif (/$ELSE_PATTERN/o)
+         {
+           $cond = cond_stack_else ($1, $2, $file);
+         }
+       elsif (/$ENDIF_PATTERN/o)
+         {
+           $cond = cond_stack_endif ($1, $2, $file);
+         }
+
+       # Handling rules.
+       elsif (/$RULE_PATTERN/mso)
+       {
+         $is_rule = 1;
+         $discard_rule = 0;
+         # Separate relationship from optional actions: the first
+         # `new-line tab" not preceded by backslash (continuation
+         # line).
+         my $paragraph = $_;
+         /^(.*?)(?:(?<!\\)\n(\t.*))?$/s;
+         my ($relationship, $actions) = ($1, $2 || '');
+
+         # Separate targets from dependencies: the first colon.
+         $relationship =~ /^([^:]+\S+) *: *(.*)$/som;
+         my ($targets, $dependencies) = ($1, $2);
+         # Remove the escaped new lines.
+         # I don't know why, but I have to use a tmp $flat_deps.
+         my $flat_deps = &flatten ($dependencies);
+         my @deps = split (' ', $flat_deps);
+
+         foreach (split (' ', $targets))
+           {
+             # FIXME: 1. We are not robust to people defining several targets
+             # at once, only some of them being in %dependencies.  The
+             # actions from the targets in %dependencies are usually generated
+             # from the content of %actions, but if some targets in $targets
+             # are not in %dependencies the ELSE branch will output
+             # a rule for all $targets (i.e. the targets which are both
+             # in %dependencies and $targets will have two rules).
+
+             # FIXME: 2. The logic here is not able to output a
+             # multi-paragraph rule several time (e.g. for each condition
+             # it is defined for) because it only knows the first paragraph.
+
+             # FIXME: 3. We are not robust to people defining a subset
+             # of a previously defined "multiple-target" rule.  E.g.
+             # 'foo:' after 'foo bar:'.
+
+             # Output only if not in FALSE.
+             if (defined $dependencies{$_} && $cond != FALSE)
+               {
+                 &depend ($_, @deps);
+                 register_action ($_, $actions);
+               }
+             else
+               {
+                 # Free-lance dependency.  Output the rule for all the
+                 # targets instead of one by one.
+                 my @undefined_conds =
+                   Automake::Rule::define ($targets, $file,
+                                           $is_am ? RULE_AUTOMAKE : RULE_USER,
+                                           $cond, $where);
+                 for my $undefined_cond (@undefined_conds)
+                   {
+                     my $condparagraph = $paragraph;
+                     $condparagraph =~ s/^/$undefined_cond->subst_string/gme;
+                     $result_rules .= "$spacing$comment$condparagraph\n";
+                   }
+                 if (scalar @undefined_conds == 0)
+                   {
+                     # Remember to discard next paragraphs
+                     # if they belong to this rule.
+                     # (but see also FIXME: #2 above.)
+                     $discard_rule = 1;
+                   }
+                 $comment = $spacing = '';
+                 last;
+               }
+           }
+       }
+
+       elsif (/$ASSIGNMENT_PATTERN/mso)
+       {
+           my ($var, $type, $val) = ($1, $2, $3);
+           error $where, "variable '$var' with trailing backslash"
+             if /\\$/;
+
+           $is_rule = 0;
+
+           Automake::Variable::define ($var,
+                                       $is_am ? VAR_AUTOMAKE : VAR_MAKEFILE,
+                                       $type, $cond, $val, $comment, $where,
+                                       VAR_ASIS)
+             if $cond != FALSE;
+
+           $comment = $spacing = '';
+       }
+       else
+       {
+           # This isn't an error; it is probably some tokens which
+           # configure is supposed to replace, such as '@SET-MAKE@',
+           # or some part of a rule cut by an if/endif.
+           if (! $cond->false && ! ($is_rule && $discard_rule))
+             {
+               s/^/$cond->subst_string/gme;
+               $result_rules .= "$spacing$comment$_\n";
+             }
+           $comment = $spacing = '';
+       }
+    }
+
+    error ($where, @cond_stack ?
+          "unterminated conditionals: @cond_stack" :
+          "too many conditionals closed in include file")
+      if "@saved_cond_stack" ne "@cond_stack";
+
+    return ($comment, $result_vars, $result_rules);
+}
+
+
+# $CONTENTS
+# &file_contents ($BASENAME, $WHERE, [%TRANSFORM])
+# ------------------------------------------------
+# Return contents of a file from $libdir/am, automatically skipping
+# macros or rules which are already known.
+sub file_contents ($$%)
+{
+    my ($basename, $where, %transform) = @_;
+    my ($comments, $variables, $rules) =
+      file_contents_internal (1, "$libdir/am/$basename.am", $where,
+                             %transform);
+    return "$comments$variables$rules";
+}
+
+
+# @PREFIX
+# &am_primary_prefixes ($PRIMARY, $CAN_DIST, @PREFIXES)
+# -----------------------------------------------------
+# Find all variable prefixes that are used for install directories.  A
+# prefix 'zar' qualifies iff:
+#
+# * 'zardir' is a variable.
+# * 'zar_PRIMARY' is a variable.
+#
+# As a side effect, it looks for misspellings.  It is an error to have
+# a variable ending in a "reserved" suffix whose prefix is unknown, e.g.
+# "bni_PROGRAMS".  However, unusual prefixes are allowed if a variable
+# of the same name (with "dir" appended) exists.  For instance, if the
+# variable "zardir" is defined, then "zar_PROGRAMS" becomes valid.
+# This is to provide a little extra flexibility in those cases which
+# need it.
+sub am_primary_prefixes ($$@)
+{
+  my ($primary, $can_dist, @prefixes) = @_;
+
+  local $_;
+  my %valid = map { $_ => 0 } @prefixes;
+  $valid{'EXTRA'} = 0;
+  foreach my $var (variables $primary)
+    {
+      # Automake is allowed to define variables that look like primaries
+      # but which aren't.  E.g. INSTALL_sh_DATA.
+      # Autoconf can also define variables like INSTALL_DATA, so
+      # ignore all configure variables (at least those which are not
+      # redefined in Makefile.am).
+      # FIXME: We should make sure that these variables are not
+      # conditionally defined (or else adjust the condition below).
+      my $def = $var->def (TRUE);
+      next if $def && $def->owner != VAR_MAKEFILE;
+
+      my $varname = $var->name;
+
+      if ($varname =~ /^(nobase_)?(dist_|nodist_)?(.*)_[[:alnum:]]+$/)
+       {
+         my ($base, $dist, $X) = ($1 || '', $2 || '', $3 || '');
+         if ($dist ne '' && ! $can_dist)
+           {
+             err_var ($var,
+                      "invalid variable '$varname': 'dist' is forbidden");
+           }
+         # Standard directories must be explicitly allowed.
+         elsif (! defined $valid{$X} && exists $standard_prefix{$X})
+           {
+             err_var ($var,
+                      "'${X}dir' is not a legitimate directory " .
+                      "for '$primary'");
+           }
+         # A not explicitly valid directory is allowed if Xdir is defined.
+         elsif (! defined $valid{$X} &&
+                $var->requires_variables ("'$varname' is used", "${X}dir"))
+           {
+             # Nothing to do.  Any error message has been output
+             # by $var->requires_variables.
+           }
+         else
+           {
+             # Ensure all extended prefixes are actually used.
+             $valid{"$base$dist$X"} = 1;
+           }
+       }
+      else
+       {
+         prog_error "unexpected variable name: $varname";
+       }
+    }
+
+  # Return only those which are actually defined.
+  return sort grep { var ($_ . '_' . $primary) } keys %valid;
+}
+
+
+# Handle 'where_HOW' variable magic.  Does all lookups, generates
+# install code, and possibly generates code to define the primary
+# variable.  The first argument is the name of the .am file to munge,
+# the second argument is the primary variable (e.g. HEADERS), and all
+# subsequent arguments are possible installation locations.
+#
+# Returns list of [$location, $value] pairs, where
+# $value's are the values in all where_HOW variable, and $location
+# there associated location (the place here their parent variables were
+# defined).
+#
+# FIXME: this should be rewritten to be cleaner.  It should be broken
+# up into multiple functions.
+#
+# Usage is: am_install_var (OPTION..., file, HOW, where...)
+sub am_install_var
+{
+  my (@args) = @_;
+
+  my $do_require = 1;
+  my $can_dist = 0;
+  my $default_dist = 0;
+  while (@args)
+    {
+      if ($args[0] eq '-noextra')
+       {
+         $do_require = 0;
+       }
+      elsif ($args[0] eq '-candist')
+       {
+         $can_dist = 1;
+       }
+      elsif ($args[0] eq '-defaultdist')
+       {
+         $default_dist = 1;
+         $can_dist = 1;
+       }
+      elsif ($args[0] !~ /^-/)
+       {
+         last;
+       }
+      shift (@args);
+    }
+
+  my ($file, $primary, @prefix) = @args;
+
+  # Now that configure substitutions are allowed in where_HOW
+  # variables, it is an error to actually define the primary.  We
+  # allow 'JAVA', as it is customarily used to mean the Java
+  # interpreter.  This is but one of several Java hacks.  Similarly,
+  # 'PYTHON' is customarily used to mean the Python interpreter.
+  reject_var $primary, "'$primary' is an anachronism"
+    unless $primary eq 'JAVA' || $primary eq 'PYTHON';
+
+  # Get the prefixes which are valid and actually used.
+  @prefix = am_primary_prefixes ($primary, $can_dist, @prefix);
+
+  # If a primary includes a configure substitution, then the EXTRA_
+  # form is required.  Otherwise we can't properly do our job.
+  my $require_extra;
+
+  my @used = ();
+  my @result = ();
+
+  foreach my $X (@prefix)
+    {
+      my $nodir_name = $X;
+      my $one_name = $X . '_' . $primary;
+      my $one_var = var $one_name;
+
+      my $strip_subdir = 1;
+      # If subdir prefix should be preserved, do so.
+      if ($nodir_name =~ /^nobase_/)
+       {
+         $strip_subdir = 0;
+         $nodir_name =~ s/^nobase_//;
+       }
+
+      # If files should be distributed, do so.
+      my $dist_p = 0;
+      if ($can_dist)
+       {
+         $dist_p = (($default_dist && $nodir_name !~ /^nodist_/)
+                    || (! $default_dist && $nodir_name =~ /^dist_/));
+         $nodir_name =~ s/^(dist|nodist)_//;
+       }
+
+
+      # Use the location of the currently processed variable.
+      # We are not processing a particular condition, so pick the first
+      # available.
+      my $tmpcond = $one_var->conditions->one_cond;
+      my $where = $one_var->rdef ($tmpcond)->location->clone;
+
+      # Append actual contents of where_PRIMARY variable to
+      # @result, skipping @substitutions@.
+      foreach my $locvals ($one_var->value_as_list_recursive (location => 1))
+       {
+         my ($loc, $value) = @$locvals;
+         # Skip configure substitutions.
+         if ($value =~ /^\@.*\@$/)
+           {
+             if ($nodir_name eq 'EXTRA')
+               {
+                 error ($where,
+                        "'$one_name' contains configure substitution, "
+                        . "but shouldn't");
+               }
+             # Check here to make sure variables defined in
+             # configure.ac do not imply that EXTRA_PRIMARY
+             # must be defined.
+             elsif (! defined $configure_vars{$one_name})
+               {
+                 $require_extra = $one_name
+                   if $do_require;
+               }
+           }
+         else
+           {
+             # Strip any $(EXEEXT) suffix the user might have added, or this
+             # will confuse &handle_source_transform and &check_canonical_spelling.
+             # We'll add $(EXEEXT) back later anyway.
+             # Do it here rather than in handle_programs so the uniquifying at the
+             # end of this function works.
+             ${$locvals}[1] =~ s/\$\(EXEEXT\)$//
+               if $primary eq 'PROGRAMS';
+
+             push (@result, $locvals);
+           }
+       }
+      # A blatant hack: we rewrite each _PROGRAMS primary to include
+      # EXEEXT.
+      append_exeext { 1 } $one_name
+       if $primary eq 'PROGRAMS';
+      # "EXTRA" shouldn't be used when generating clean targets,
+      # all, or install targets.  We used to warn if EXTRA_FOO was
+      # defined uselessly, but this was annoying.
+      next
+       if $nodir_name eq 'EXTRA';
+
+      if ($nodir_name eq 'check')
+       {
+         push (@check, '$(' . $one_name . ')');
+       }
+      else
+       {
+         push (@used, '$(' . $one_name . ')');
+       }
+
+      # Is this to be installed?
+      my $install_p = $nodir_name ne 'noinst' && $nodir_name ne 'check';
+
+      # If so, with install-exec? (or install-data?).
+      my $exec_p = ($nodir_name =~ /$EXEC_DIR_PATTERN/o);
+
+      my $check_options_p = $install_p && !! option 'std-options';
+
+      # Use the location of the currently processed variable as context.
+      $where->push_context ("while processing '$one_name'");
+
+      # The variable containing all files to distribute.
+      my $distvar = "\$($one_name)";
+      $distvar = shadow_unconditionally ($one_name, $where)
+       if ($dist_p && $one_var->has_conditional_contents);
+
+      # Singular form of $PRIMARY.
+      (my $one_primary = $primary) =~ s/S$//;
+      $output_rules .= &file_contents ($file, $where,
+                                      PRIMARY     => $primary,
+                                      ONE_PRIMARY => $one_primary,
+                                      DIR         => $X,
+                                      NDIR        => $nodir_name,
+                                      BASE        => $strip_subdir,
+
+                                      EXEC      => $exec_p,
+                                      INSTALL   => $install_p,
+                                      DIST      => $dist_p,
+                                      DISTVAR   => $distvar,
+                                      'CK-OPTS' => $check_options_p);
+    }
+
+  # The JAVA variable is used as the name of the Java interpreter.
+  # The PYTHON variable is used as the name of the Python interpreter.
+  if (@used && $primary ne 'JAVA' && $primary ne 'PYTHON')
+    {
+      # Define it.
+      define_pretty_variable ($primary, TRUE, INTERNAL, @used);
+      $output_vars .= "\n";
+    }
+
+  err_var ($require_extra,
+          "'$require_extra' contains configure substitution,\n"
+          . "but 'EXTRA_$primary' not defined")
+    if ($require_extra && ! var ('EXTRA_' . $primary));
+
+  # Push here because PRIMARY might be configure time determined.
+  push (@all, '$(' . $primary . ')')
+    if @used && $primary ne 'JAVA' && $primary ne 'PYTHON';
+
+  # Make the result unique.  This lets the user use conditionals in
+  # a natural way, but still lets us program lazily -- we don't have
+  # to worry about handling a particular object more than once.
+  # We will keep only one location per object.
+  my %result = ();
+  for my $pair (@result)
+    {
+      my ($loc, $val) = @$pair;
+      $result{$val} = $loc;
+    }
+  my @l = sort keys %result;
+  return map { [$result{$_}->clone, $_] } @l;
+}
+
+
+################################################################
+
+# Each key in this hash is the name of a directory holding a
+# Makefile.in.  These variables are local to 'is_make_dir'.
+my %make_dirs = ();
+my $make_dirs_set = 0;
+
+sub is_make_dir
+{
+    my ($dir) = @_;
+    if (! $make_dirs_set)
+    {
+       foreach my $iter (@configure_input_files)
+       {
+           $make_dirs{dirname ($iter)} = 1;
+       }
+       # We also want to notice Makefile.in's.
+       foreach my $iter (@other_input_files)
+       {
+           if ($iter =~ /Makefile\.in$/)
+           {
+               $make_dirs{dirname ($iter)} = 1;
+           }
+       }
+       $make_dirs_set = 1;
+    }
+    return defined $make_dirs{$dir};
+}
+
+################################################################
+
+# Find the aux dir.  This should match the algorithm used by
+# ./configure. (See the Autoconf documentation for for
+# AC_CONFIG_AUX_DIR.)
+sub locate_aux_dir ()
+{
+  if (! $config_aux_dir_set_in_configure_ac)
+    {
+      # The default auxiliary directory is the first
+      # of ., .., or ../.. that contains install-sh.
+      # Assume . if install-sh doesn't exist yet.
+      for my $dir (qw (. .. ../..))
+       {
+         if (-f "$dir/install-sh")
+           {
+             $config_aux_dir = $dir;
+             last;
+           }
+       }
+      $config_aux_dir = '.' unless $config_aux_dir;
+    }
+  # Avoid unsightly '/.'s.
+  $am_config_aux_dir =
+    '$(top_srcdir)' . ($config_aux_dir eq '.' ? "" : "/$config_aux_dir");
+  $am_config_aux_dir =~ s,/*$,,;
+}
+
+
+# &push_required_file ($DIR, $FILE, $FULLFILE)
+# --------------------------------------------------
+# Push the given file onto DIST_COMMON.
+sub push_required_file
+{
+  my ($dir, $file, $fullfile) = @_;
+
+  # If the file to be distributed is in the same directory of the
+  # currently processed Makefile.am, then we want to distribute it
+  # from this same Makefile.am.
+  if ($dir eq $relative_dir)
+    {
+      push_dist_common ($file);
+    }
+  # This is needed to allow a construct in a non-top-level Makefile.am
+  # to require a file in the build-aux directory (see at least the test
+  # script 'test-driver-is-distributed.test').  This is related to the
+  # automake bug#9546.  Note that the use of $config_aux_dir instead
+  # of $am_config_aux_dir here is deliberate and necessary.
+  elsif ($dir eq $config_aux_dir)
+    {
+      push_dist_common ("$am_config_aux_dir/$file");
+    }
+  # FIXME: another spacial case, for AC_LIBOBJ/AC_LIBSOURCE support.
+  # We probably need some refactoring of this function and its callers,
+  # to have a more explicit and systematic handling of all the special
+  # cases; but, since there are only two of them, this is low-priority
+  # ATM.
+  elsif ($config_libobj_dir && $dir eq $config_libobj_dir)
+    {
+      # Avoid unsightly '/.'s.
+      my $am_config_libobj_dir =
+        '$(top_srcdir)' .
+        ($config_libobj_dir eq '.' ? "" : "/$config_libobj_dir");
+      $am_config_libobj_dir =~ s|/*$||;
+      push_dist_common ("$am_config_libobj_dir/$file");
+    }
+  elsif ($relative_dir eq '.' && ! &is_make_dir ($dir))
+    {
+      # If we are doing the topmost directory, and the file is in a
+      # subdir which does not have a Makefile, then we distribute it
+      # here.
+
+      # If a required file is above the source tree, it is important
+      # to prefix it with '$(srcdir)' so that no VPATH search is
+      # performed.  Otherwise problems occur with Make implementations
+      # that rewrite and simplify rules whose dependencies are found in a
+      # VPATH location.  Here is an example with OSF1/Tru64 Make.
+      #
+      #   % cat Makefile
+      #   VPATH = sub
+      #   distdir: ../a
+      #                  echo ../a
+      #   % ls
+      #   Makefile a
+      #   % make
+      #   echo a
+      #   a
+      #
+      # Dependency '../a' was found in 'sub/../a', but this make
+      # implementation simplified it as 'a'.  (Note that the sub/
+      # directory does not even exist.)
+      #
+      # This kind of VPATH rewriting seems hard to cancel.  The
+      # distdir.am hack against VPATH rewriting works only when no
+      # simplification is done, i.e., for dependencies which are in
+      # subdirectories, not in enclosing directories.  Hence, in
+      # the latter case we use a full path to make sure no VPATH
+      # search occurs.
+      $fullfile = '$(srcdir)/' . $fullfile
+       if $dir =~ m,^\.\.(?:$|/),;
+
+      push_dist_common ($fullfile);
+    }
+  else
+    {
+      prog_error "a Makefile in relative directory $relative_dir " .
+                 "can't add files in directory $dir to DIST_COMMON";
+    }
+}
+
+
+# If a file name appears as a key in this hash, then it has already
+# been checked for.  This allows us not to report the same error more
+# than once.
+my %required_file_not_found = ();
+
+# &required_file_check_or_copy ($WHERE, $DIRECTORY, $FILE)
+# --------------------------------------------------------
+# Verify that the file must exist in $DIRECTORY, or install it.
+sub required_file_check_or_copy ($$$)
+{
+  my ($where, $dir, $file) = @_;
+
+  my $fullfile = "$dir/$file";
+  my $found_it = 0;
+  my $dangling_sym = 0;
+
+  if (-l $fullfile && ! -f $fullfile)
+    {
+      $dangling_sym = 1;
+    }
+  elsif (dir_has_case_matching_file ($dir, $file))
+    {
+      $found_it = 1;
+    }
+
+  # '--force-missing' only has an effect if '--add-missing' is
+  # specified.
+  return
+    if $found_it && (! $add_missing || ! $force_missing);
+
+  # If we've already looked for it, we're done.  You might
+  # wonder why we don't do this before searching for the
+  # file.  If we do that, then something like
+  # AC_OUTPUT(subdir/foo foo) will fail to put foo.in into
+  # DIST_COMMON.
+  if (! $found_it)
+    {
+      return if defined $required_file_not_found{$fullfile};
+      $required_file_not_found{$fullfile} = 1;
+    }
+  if ($dangling_sym && $add_missing)
+    {
+      unlink ($fullfile);
+    }
+
+  my $trailer = '';
+  my $trailer2 = '';
+  my $suppress = 0;
+
+  # Only install missing files according to our desired
+  # strictness level.
+  my $message = "required file '$fullfile' not found";
+  if ($add_missing)
+    {
+      if (-f "$libdir/$file")
+        {
+          $suppress = 1;
+
+          # Install the missing file.  Symlink if we
+          # can, copy if we must.  Note: delete the file
+          # first, in case it is a dangling symlink.
+          $message = "installing '$fullfile'";
+
+          # The license file should not be volatile.
+          if ($file eq "COPYING")
+            {
+              $message .= " using GNU General Public License v3 file";
+              $trailer2 = "\n    Consider adding the COPYING file"
+                        . " to the version control system"
+                        . "\n    for your code, to avoid questions"
+                        . " about which license your project uses";
+            }
+
+          # Windows Perl will hang if we try to delete a
+          # file that doesn't exist.
+          unlink ($fullfile) if -f $fullfile;
+          if ($symlink_exists && ! $copy_missing)
+            {
+              if (! symlink ("$libdir/$file", $fullfile)
+                  || ! -e $fullfile)
+                {
+                  $suppress = 0;
+                  $trailer = "; error while making link: $!";
+                }
+            }
+          elsif (system ('cp', "$libdir/$file", $fullfile))
+            {
+              $suppress = 0;
+              $trailer = "\n    error while copying";
+            }
+          set_dir_cache_file ($dir, $file);
+        }
+    }
+  else
+    {
+      $trailer = "\n  'automake --add-missing' can install '$file'"
+        if -f "$libdir/$file";
+    }
+
+  # If --force-missing was specified, and we have
+  # actually found the file, then do nothing.
+  return
+    if $found_it && $force_missing;
+
+  # If we couldn't install the file, but it is a target in
+  # the Makefile, don't print anything.  This allows files
+  # like README, AUTHORS, or THANKS to be generated.
+  return
+    if !$suppress && rule $file;
+
+  msg ($suppress ? 'note' : 'error', $where, "$message$trailer$trailer2");
+}
+
+
+# &require_file_internal ($WHERE, $MYSTRICT, $DIRECTORY, $QUEUE, @FILES)
+# ----------------------------------------------------------------------
+# Verify that the file must exist in $DIRECTORY, or install it.
+# $MYSTRICT is the strictness level at which this file becomes required.
+# Worker threads may queue up the action to be serialized by the master,
+# if $QUEUE is true
+sub require_file_internal ($$$@)
+{
+  my ($where, $mystrict, $dir, $queue, @files) = @_;
+
+  return
+    unless $strictness >= $mystrict;
+
+  foreach my $file (@files)
+    {
+      push_required_file ($dir, $file, "$dir/$file");
+      if ($queue)
+        {
+          queue_required_file_check_or_copy ($required_conf_file_queue,
+                                             QUEUE_CONF_FILE, $relative_dir,
+                                             $where, $mystrict, @files);
+        }
+      else
+        {
+          required_file_check_or_copy ($where, $dir, $file);
+        }
+    }
+}
+
+# &require_file ($WHERE, $MYSTRICT, @FILES)
+# -----------------------------------------
+sub require_file ($$@)
+{
+    my ($where, $mystrict, @files) = @_;
+    require_file_internal ($where, $mystrict, $relative_dir, 0, @files);
+}
+
+# &require_file_with_macro ($COND, $MACRO, $MYSTRICT, @FILES)
+# -----------------------------------------------------------
+sub require_file_with_macro ($$$@)
+{
+    my ($cond, $macro, $mystrict, @files) = @_;
+    $macro = rvar ($macro) unless ref $macro;
+    require_file ($macro->rdef ($cond)->location, $mystrict, @files);
+}
+
+# &require_libsource_with_macro ($COND, $MACRO, $MYSTRICT, @FILES)
+# ----------------------------------------------------------------
+# Require an AC_LIBSOURCEd file.  If AC_CONFIG_LIBOBJ_DIR was called, it
+# must be in that directory.  Otherwise expect it in the current directory.
+sub require_libsource_with_macro ($$$@)
+{
+    my ($cond, $macro, $mystrict, @files) = @_;
+    $macro = rvar ($macro) unless ref $macro;
+    if ($config_libobj_dir)
+      {
+       require_file_internal ($macro->rdef ($cond)->location, $mystrict,
+                              $config_libobj_dir, 0, @files);
+      }
+    else
+      {
+       require_file ($macro->rdef ($cond)->location, $mystrict, @files);
+      }
+}
+
+# &queue_required_file_check_or_copy ($QUEUE, $KEY, $DIR, $WHERE,
+#                                     $MYSTRICT, @FILES)
+# ---------------------------------------------------------------
+sub queue_required_file_check_or_copy ($$$$@)
+{
+    my ($queue, $key, $dir, $where, $mystrict, @files) = @_;
+    my @serial_loc;
+    if (ref $where)
+      {
+        @serial_loc = (QUEUE_LOCATION, $where->serialize ());
+      }
+    else
+      {
+        @serial_loc = (QUEUE_STRING, $where);
+      }
+    $queue->enqueue ($key, $dir, @serial_loc, $mystrict, 0 + @files, @files);
+}
+
+# &require_queued_file_check_or_copy ($QUEUE)
+# -------------------------------------------
+sub require_queued_file_check_or_copy ($)
+{
+    my ($queue) = @_;
+    my $where;
+    my $dir = $queue->dequeue ();
+    my $loc_key = $queue->dequeue ();
+    if ($loc_key eq QUEUE_LOCATION)
+      {
+       $where = Automake::Location::deserialize ($queue);
+      }
+    elsif ($loc_key eq QUEUE_STRING)
+      {
+       $where = $queue->dequeue ();
+      }
+    else
+      {
+       prog_error "unexpected key $loc_key";
+      }
+    my $mystrict = $queue->dequeue ();
+    my $nfiles = $queue->dequeue ();
+    my @files;
+    push @files, $queue->dequeue ()
+      foreach (1 .. $nfiles);
+    return
+      unless $strictness >= $mystrict;
+    foreach my $file (@files)
+      {
+        required_file_check_or_copy ($where, $config_aux_dir, $file);
+      }
+}
+
+# &require_conf_file ($WHERE, $MYSTRICT, @FILES)
+# ----------------------------------------------
+# Looks in configuration path, as specified by AC_CONFIG_AUX_DIR.
+sub require_conf_file ($$@)
+{
+    my ($where, $mystrict, @files) = @_;
+    my $queue = defined $required_conf_file_queue ? 1 : 0;
+    require_file_internal ($where, $mystrict, $config_aux_dir,
+                           $queue, @files);
+}
+
+
+# &require_conf_file_with_macro ($COND, $MACRO, $MYSTRICT, @FILES)
+# ----------------------------------------------------------------
+sub require_conf_file_with_macro ($$$@)
+{
+    my ($cond, $macro, $mystrict, @files) = @_;
+    require_conf_file (rvar ($macro)->rdef ($cond)->location,
+                      $mystrict, @files);
+}
+
+################################################################
+
+# &require_build_directory ($DIRECTORY)
+# -------------------------------------
+# Emit rules to create $DIRECTORY if needed, and return
+# the file that any target requiring this directory should be made
+# dependent upon.
+# We don't want to emit the rule twice, and want to reuse it
+# for directories with equivalent names (e.g., 'foo/bar' and './foo//bar').
+sub require_build_directory ($)
+{
+  my $directory = shift;
+
+  return $directory_map{$directory} if exists $directory_map{$directory};
+
+  my $cdir = File::Spec->canonpath ($directory);
+
+  if (exists $directory_map{$cdir})
+    {
+      my $stamp = $directory_map{$cdir};
+      $directory_map{$directory} = $stamp;
+      return $stamp;
+    }
+
+  my $dirstamp = "$cdir/\$(am__dirstamp)";
+
+  $directory_map{$directory} = $dirstamp;
+  $directory_map{$cdir} = $dirstamp;
+
+  # Set a variable for the dirstamp basename.
+  define_pretty_variable ('am__dirstamp', TRUE, INTERNAL,
+                         '$(am__leading_dot)dirstamp');
+
+  # Directory must be removed by 'make distclean'.
+  $clean_files{$dirstamp} = DIST_CLEAN;
+
+  $output_rules .= ("$dirstamp:\n"
+                   . "\t\@\$(MKDIR_P) $directory\n"
+                   . "\t\@: > $dirstamp\n");
+
+  return $dirstamp;
+}
+
+# &require_build_directory_maybe ($FILE)
+# --------------------------------------
+# If $FILE lies in a subdirectory, emit a rule to create this
+# directory and return the file that $FILE should be made
+# dependent upon.  Otherwise, just return the empty string.
+sub require_build_directory_maybe ($)
+{
+    my $file = shift;
+    my $directory = dirname ($file);
+
+    if ($directory ne '.')
+    {
+       return require_build_directory ($directory);
+    }
+    else
+    {
+       return '';
+    }
+}
+
+################################################################
+
+# Push a list of files onto dist_common.
+sub push_dist_common
+{
+  prog_error "push_dist_common run after handle_dist"
+    if $handle_dist_run;
+  Automake::Variable::define ('DIST_COMMON', VAR_AUTOMAKE, '+', TRUE, "@_",
+                             '', INTERNAL, VAR_PRETTY);
+}
+
+
+################################################################
+
+# generate_makefile ($MAKEFILE_AM, $MAKEFILE_IN)
+# ----------------------------------------------
+# Generate a Makefile.in given the name of the corresponding Makefile and
+# the name of the file output by config.status.
+sub generate_makefile ($$)
+{
+  my ($makefile_am, $makefile_in) = @_;
+
+  # Reset all the Makefile.am related variables.
+  initialize_per_input;
+
+  # AUTOMAKE_OPTIONS can contains -W flags to disable or enable
+  # warnings for this file.  So hold any warning issued before
+  # we have processed AUTOMAKE_OPTIONS.
+  buffer_messages ('warning');
+
+  # Name of input file ("Makefile.am") and output file
+  # ("Makefile.in").  These have no directory components.
+  $am_file_name = basename ($makefile_am);
+  $in_file_name = basename ($makefile_in);
+
+  # $OUTPUT is encoded.  If it contains a ":" then the first element
+  # is the real output file, and all remaining elements are input
+  # files.  We don't scan or otherwise deal with these input files,
+  # other than to mark them as dependencies.  See
+  # &scan_autoconf_files for details.
+  my ($makefile, @inputs) = split (/:/, $output_files{$makefile_in});
+
+  $relative_dir = dirname ($makefile);
+  $am_relative_dir = dirname ($makefile_am);
+  $topsrcdir = backname ($relative_dir);
+
+  read_main_am_file ($makefile_am);
+  if (handle_options)
+    {
+      # Process buffered warnings.
+      flush_messages;
+      # Fatal error.  Just return, so we can continue with next file.
+      return;
+    }
+  # Process buffered warnings.
+  flush_messages;
+
+  # There are a few install-related variables that you should not define.
+  foreach my $var ('PRE_INSTALL', 'POST_INSTALL', 'NORMAL_INSTALL')
+    {
+      my $v = var $var;
+      if ($v)
+       {
+         my $def = $v->def (TRUE);
+         prog_error "$var not defined in condition TRUE"
+           unless $def;
+         reject_var $var, "'$var' should not be defined"
+           if $def->owner != VAR_AUTOMAKE;
+       }
+    }
+
+  # Catch some obsolete variables.
+  msg_var ('obsolete', 'INCLUDES',
+          "'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')")
+    if var ('INCLUDES');
+
+  # Must do this after reading .am file.
+  define_variable ('subdir', $relative_dir, INTERNAL);
+
+  # If DIST_SUBDIRS is defined, make sure SUBDIRS is, so that
+  # recursive rules are enabled.
+  define_pretty_variable ('SUBDIRS', TRUE, INTERNAL, '')
+    if var 'DIST_SUBDIRS' && ! var 'SUBDIRS';
+
+  # Check first, because we might modify some state.
+  check_cygnus;
+  check_gnu_standards;
+  check_gnits_standards;
+
+  handle_configure ($makefile_am, $makefile_in, $makefile, @inputs);
+  handle_gettext;
+  handle_libraries;
+  handle_ltlibraries;
+  handle_programs;
+  handle_scripts;
+
+  # These must be run after all the sources are scanned.  They
+  # use variables defined by &handle_libraries, &handle_ltlibraries,
+  # or &handle_programs.
+  handle_compile;
+  handle_languages;
+  handle_libtool;
+
+  # Variables used by distdir.am and tags.am.
+  define_pretty_variable ('SOURCES', TRUE, INTERNAL, @sources);
+  if (! option 'no-dist')
+    {
+      define_pretty_variable ('DIST_SOURCES', TRUE, INTERNAL, @dist_sources);
+    }
+
+  handle_texinfo;
+  handle_emacs_lisp;
+  handle_python;
+  handle_java;
+  handle_man_pages;
+  handle_data;
+  handle_headers;
+  handle_subdirs;
+  handle_tags;
+  handle_minor_options;
+  # Must come after handle_programs so that %known_programs is up-to-date.
+  handle_tests;
+
+  # This must come after most other rules.
+  handle_dist;
+
+  handle_footer;
+  do_check_merge_target;
+  handle_all ($makefile);
+
+  # FIXME: Gross!
+  if (var ('lib_LTLIBRARIES') && var ('bin_PROGRAMS'))
+    {
+      $output_rules .= "install-binPROGRAMS: install-libLTLIBRARIES\n\n";
+    }
+  if (var ('nobase_lib_LTLIBRARIES') && var ('bin_PROGRAMS'))
+    {
+      $output_rules .= "install-binPROGRAMS: install-nobase_libLTLIBRARIES\n\n";
+    }
+
+  handle_install;
+  handle_clean ($makefile);
+  handle_factored_dependencies;
+
+  # Comes last, because all the above procedures may have
+  # defined or overridden variables.
+  $output_vars .= output_variables;
+
+  check_typos;
+
+  if ($exit_code != 0)
+    {
+      verb "not writing $makefile_in because of earlier errors";
+      return;
+    }
+
+  mkdir ($am_relative_dir, 0755) if ! -d $am_relative_dir;
+
+  # We make sure that 'all:' is the first target.
+  my $output =
+    "$output_vars$output_all$output_header$output_rules$output_trailer";
+
+  # Decide whether we must update the output file or not.
+  # We have to update in the following situations.
+  #  * $force_generation is set.
+  #  * any of the output dependencies is younger than the output
+  #  * the contents of the output is different (this can happen
+  #    if the project has been populated with a file listed in
+  #    @common_files since the last run).
+  # Output's dependencies are split in two sets:
+  #  * dependencies which are also configure dependencies
+  #    These do not change between each Makefile.am
+  #  * other dependencies, specific to the Makefile.am being processed
+  #    (such as the Makefile.am itself, or any Makefile fragment
+  #    it includes).
+  my $timestamp = mtime $makefile_in;
+  if (! $force_generation
+      && $configure_deps_greatest_timestamp < $timestamp
+      && $output_deps_greatest_timestamp < $timestamp
+      && $output eq contents ($makefile_in))
+    {
+      verb "$makefile_in unchanged";
+      # No need to update.
+      return;
+    }
+
+  if (-e $makefile_in)
+    {
+      unlink ($makefile_in)
+       or fatal "cannot remove $makefile_in: $!";
+    }
+
+  my $gm_file = new Automake::XFile "> $makefile_in";
+  verb "creating $makefile_in";
+  print $gm_file $output;
+}
+
+################################################################
+
+
+
+
+################################################################
+
+# Helper function for usage().
+sub print_autodist_files (@)
+{
+  my @lcomm = sort (&uniq (@_));
+
+  my @four;
+  format USAGE_FORMAT =
+  @<<<<<<<<<<<<<<<<   @<<<<<<<<<<<<<<<<   @<<<<<<<<<<<<<<<<   @<<<<<<<<<<<<<<<<
+  $four[0],           $four[1],           $four[2],           $four[3]
+.
+  local $~ = "USAGE_FORMAT";
+
+  my $cols = 4;
+  my $rows = int(@lcomm / $cols);
+  my $rest = @lcomm % $cols;
+
+  if ($rest)
+    {
+      $rows++;
+    }
+  else
+    {
+      $rest = $cols;
+    }
+
+  for (my $y = 0; $y < $rows; $y++)
+    {
+      @four = ("", "", "", "");
+      for (my $x = 0; $x < $cols; $x++)
+        {
+          last if $y + 1 == $rows && $x == $rest;
+
+          my $idx = (($x > $rest)
+               ?  ($rows * $rest + ($rows - 1) * ($x - $rest))
+               : ($rows * $x));
+
+          $idx += $y;
+          $four[$x] = $lcomm[$idx];
+        }
+      write;
+    }
+}
+
+
+# Print usage information.
+sub usage ()
+{
+    print "Usage: $0 [OPTION]... [Makefile]...
+
+Generate Makefile.in for configure from Makefile.am.
+
+Operation modes:
+      --help               print this help, then exit
+      --version            print version number, then exit
+  -v, --verbose            verbosely list files processed
+      --no-force           only update Makefile.in's that are out of date
+  -W, --warnings=CATEGORY  report the warnings falling in CATEGORY
+
+Dependency tracking:
+  -i, --ignore-deps      disable dependency tracking code
+      --include-deps     enable dependency tracking code
+
+Flavors:
+      --cygnus           assume program is part of Cygnus-style tree
+      --foreign          set strictness to foreign
+      --gnits            set strictness to gnits
+      --gnu              set strictness to gnu
+
+Library files:
+  -a, --add-missing      add missing standard files to package
+      --libdir=DIR       set directory storing library files
+      --print-libdir     print directory storing library files
+  -c, --copy             with -a, copy missing files (default is symlink)
+  -f, --force-missing    force update of standard files
+
+";
+    Automake::ChannelDefs::usage;
+
+    print "\nFiles automatically distributed if found " .
+          "(always):\n";
+    print_autodist_files @common_files;
+    print "\nFiles automatically distributed if found " .
+          "(under certain conditions):\n";
+    print_autodist_files @common_sometimes;
+
+    print '
+Report bugs to <@PACKAGE_BUGREPORT@>.
+GNU Automake home page: <@PACKAGE_URL@>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+';
+
+    # --help always returns 0 per GNU standards.
+    exit 0;
+}
+
+
+# &version ()
+# -----------
+# Print version information
+sub version ()
+{
+  print <<EOF;
+automake (GNU $PACKAGE) $VERSION
+Copyright (C) $RELEASE_YEAR Free Software Foundation, Inc.
+License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Tom Tromey <tromey\@redhat.com>
+       and Alexandre Duret-Lutz <adl\@gnu.org>.
+EOF
+  # --version always returns 0 per GNU standards.
+  exit 0;
+}
+
+################################################################
+
+# Parse command line.
+sub parse_arguments ()
+{
+  my $strict = 'gnu';
+  my $cygnus = 0;
+  my $ignore_deps = 0;
+  my @warnings = ();
+
+  my %cli_options =
+    (
+     'version' => \&version,
+     'help'    => \&usage,
+     'libdir=s'        => \$libdir,
+     'print-libdir'     => sub { print "$libdir\n"; exit 0; },
+     'gnu'             => sub { $strict = 'gnu'; },
+     'gnits'           => sub { $strict = 'gnits'; },
+     'foreign'         => sub { $strict = 'foreign'; },
+     'cygnus'          => \$cygnus,
+     'include-deps'    => sub { $ignore_deps = 0; },
+     'i|ignore-deps'   => sub { $ignore_deps = 1; },
+     'no-force'        => sub { $force_generation = 0; },
+     'f|force-missing'  => \$force_missing,
+     'a|add-missing'   => \$add_missing,
+     'c|copy'          => \$copy_missing,
+     'v|verbose'       => sub { setup_channel 'verb', silent => 0; },
+     'W|warnings=s'     => \@warnings,
+     );
+
+  use Automake::Getopt ();
+  Automake::Getopt::parse_options %cli_options;
+
+  set_strictness ($strict);
+  my $cli_where = new Automake::Location;
+  set_global_option ('cygnus', $cli_where) if $cygnus;
+  set_global_option ('no-dependencies', $cli_where) if $ignore_deps;
+  for my $warning (@warnings)
+    {
+      &parse_warnings ('-W', $warning);
+    }
+
+  return unless @ARGV;
+
+  my $errspec = 0;
+  foreach my $arg (@ARGV)
+    {
+      fatal ("empty argument\nTry '$0 --help' for more information")
+       if ($arg eq '');
+
+      # Handle $local:$input syntax.
+      my ($local, @rest) = split (/:/, $arg);
+      @rest = ("$local.in",) unless @rest;
+      my $input = locate_am @rest;
+      if ($input)
+       {
+         push @input_files, $input;
+         $output_files{$input} = join (':', ($local, @rest));
+       }
+      else
+       {
+         error "no Automake input file found for '$arg'";
+         $errspec = 1;
+       }
+    }
+  fatal "no input file found among supplied arguments"
+    if $errspec && ! @input_files;
+}
+
+
+# handle_makefile ($MAKEFILE_IN)
+# ------------------------------
+# Deal with $MAKEFILE_IN.
+sub handle_makefile ($)
+{
+  my ($file) =  @_;
+  ($am_file = $file) =~ s/\.in$//;
+  if (! -f ($am_file . '.am'))
+    {
+      error "'$am_file.am' does not exist";
+    }
+  else
+    {
+      # Any warning setting now local to this Makefile.am.
+      dup_channel_setup;
+
+      generate_makefile ($am_file . '.am', $file);
+
+      # Back out any warning setting.
+      drop_channel_setup;
+    }
+}
+
+# handle_makefiles_serial ()
+# --------------------------
+# Deal with all makefiles, without threads.
+sub handle_makefiles_serial ()
+{
+  foreach my $file (@input_files)
+    {
+      handle_makefile ($file);
+    }
+}
+
+# get_number_of_threads ()
+# ------------------------
+# Logic for deciding how many worker threads to use.
+sub get_number_of_threads
+{
+  my $nthreads = $ENV{'AUTOMAKE_JOBS'} || 0;
+
+  $nthreads = 0
+    unless $nthreads =~ /^[0-9]+$/;
+
+  # It doesn't make sense to use more threads than makefiles,
+  my $max_threads = @input_files;
+
+  if ($nthreads > $max_threads)
+    {
+      $nthreads = $max_threads;
+    }
+  return $nthreads;
+}
+
+# handle_makefiles_threaded ($NTHREADS)
+# -------------------------------------
+# Deal with all makefiles, using threads.  The general strategy is to
+# spawn NTHREADS worker threads, dispatch makefiles to them, and let the
+# worker threads push back everything that needs serialization:
+# * warning and (normal) error messages, for stable stderr output
+#   order and content (avoiding duplicates, for example),
+# * races when installing aux files (and respective messages),
+# * races when collecting aux files for distribution.
+#
+# The latter requires that the makefile that deals with the aux dir
+# files be handled last, done by the master thread.
+sub handle_makefiles_threaded ($)
+{
+  my ($nthreads) = @_;
+
+  # The file queue distributes all makefiles, the message queues
+  # collect all serializations needed for respective files.
+  my $file_queue = Thread::Queue->new;
+  my %msg_queues;
+  foreach my $file (@input_files)
+    {
+      $msg_queues{$file} = Thread::Queue->new;
+    }
+
+  verb "spawning $nthreads worker threads";
+  my @threads = (1 .. $nthreads);
+  foreach my $t (@threads)
+    {
+      $t = threads->new (sub
+       {
+         while (my $file = $file_queue->dequeue)
+           {
+             verb "handling $file";
+             my $queue = $msg_queues{$file};
+             setup_channel_queue ($queue, QUEUE_MESSAGE);
+             $required_conf_file_queue = $queue;
+             handle_makefile ($file);
+             $queue->enqueue (undef);
+             setup_channel_queue (undef, undef);
+             $required_conf_file_queue = undef;
+           }
+         return $exit_code;
+       });
+    }
+
+  # Queue all makefiles.
+  verb "queuing " . @input_files . " input files";
+  $file_queue->enqueue (@input_files, (undef) x @threads);
+
+  # Collect and process serializations.
+  foreach my $file (@input_files)
+    {
+      verb "dequeuing messages for " . $file;
+      reset_local_duplicates ();
+      my $queue = $msg_queues{$file};
+      while (my $key = $queue->dequeue)
+       {
+         if ($key eq QUEUE_MESSAGE)
+           {
+             pop_channel_queue ($queue);
+           }
+         elsif ($key eq QUEUE_CONF_FILE)
+           {
+             require_queued_file_check_or_copy ($queue);
+           }
+         else
+           {
+             prog_error "unexpected key $key";
+           }
+       }
+    }
+
+  foreach my $t (@threads)
+    {
+      my @exit_thread = $t->join;
+      $exit_code = $exit_thread[0]
+       if ($exit_thread[0] > $exit_code);
+    }
+}
+
+################################################################
+
+# Parse the WARNINGS environment variable.
+parse_WARNINGS;
+
+# Parse command line.
+parse_arguments;
+
+$configure_ac = require_configure_ac;
+
+# Do configure.ac scan only once.
+scan_autoconf_files;
+
+if (! @input_files)
+  {
+    my $msg = '';
+    $msg = "\nDid you forget AC_CONFIG_FILES([Makefile]) in $configure_ac?"
+      if -f 'Makefile.am';
+    fatal ("no 'Makefile.am' found for any configure output$msg");
+  }
+
+my $nthreads = get_number_of_threads ();
+
+if ($perl_threads && $nthreads >= 1)
+  {
+    handle_makefiles_threaded ($nthreads);
+  }
+else
+  {
+    handle_makefiles_serial ();
+  }
+
+exit $exit_code;
+
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/bootstrap.sh b/bootstrap.sh
new file mode 100755 (executable)
index 0000000..4b12d2d
--- /dev/null
@@ -0,0 +1,123 @@
+#! /bin/sh
+
+# This script helps bootstrap automake, when checked out from git.
+#
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Originally written by Pavel Roskin <proski@gnu.org> September 2002.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Don't ignore failures.
+set -e
+
+# Set program basename.
+me=`echo "$0" | sed 's,^.*/,,'`
+
+# Let user choose which version of autoconf, autom4te and perl to use.
+: ${AUTOCONF=autoconf}
+export AUTOCONF  # might be used by aclocal and/or automake
+: ${AUTOM4TE=autom4te}
+export AUTOM4TE  # ditto
+: ${PERL=perl}
+
+# Variables to substitute.
+VERSION=`sed -ne '/AC_INIT/s/^[^[]*\[[^[]*\[\([^]]*\)\].*$/\1/p' configure.ac`
+PACKAGE=automake
+datadir=.
+PERL_THREADS=0
+# This should be automatically updated by the 'update-copyright'
+# rule of our Makefile.
+RELEASE_YEAR=2012
+
+# Override SHELL.  This is required on DJGPP so that Perl's system()
+# uses bash, not COMMAND.COM which doesn't quote arguments properly.
+# It's not used otherwise.
+if test -n "$DJDIR"; then
+  BOOTSTRAP_SHELL=/dev/env/DJDIR/bin/bash.exe
+else
+  BOOTSTRAP_SHELL=/bin/sh
+fi
+
+# Read the rule for calculating APIVERSION and execute it.
+apiver_cmd=`sed -ne 's/\[\[/[/g;s/\]\]/]/g;/^APIVERSION=/p' configure.ac`
+eval "$apiver_cmd"
+
+# Sanity checks.
+if test -z "$VERSION"; then
+  echo "$me: cannot find VERSION" >&2
+  exit 1
+fi
+
+if test -z "$APIVERSION"; then
+  echo "$me: cannot find APIVERSION" >&2
+  exit 1
+fi
+
+# Make a dummy versioned directory for aclocal.
+rm -rf aclocal-$APIVERSION
+mkdir aclocal-$APIVERSION
+if test -d automake-$APIVERSION; then
+  find automake-$APIVERSION -exec chmod u+wx '{}' ';'
+fi
+rm -rf automake-$APIVERSION
+# Can't use "ln -s lib automake-$APIVERSION", that would create a
+# lib.exe stub under DJGPP 2.03.
+mkdir automake-$APIVERSION
+cp -rf lib/* automake-$APIVERSION
+
+dosubst ()
+{
+  rm -f $2
+  in=`echo $1 | sed 's,^.*/,,'`
+  sed -e "s%@APIVERSION@%$APIVERSION%g" \
+      -e "s%@PACKAGE@%$PACKAGE%g" \
+      -e "s%@PERL@%$PERL%g" \
+      -e "s%@PERL_THREADS@%$PERL_THREADS%g" \
+      -e "s%@SHELL@%$BOOTSTRAP_SHELL%g" \
+      -e "s%@VERSION@%$VERSION%g" \
+      -e "s%@datadir@%$datadir%g" \
+      -e "s%@RELEASE_YEAR@%$RELEASE_YEAR%g" \
+      -e "s%@configure_input@%Generated from $in; do not edit by hand.%g" \
+      $1 > $2
+  chmod a-w $2
+}
+
+# Create temporary replacement for lib/Automake/Config.pm.
+dosubst automake-$APIVERSION/Automake/Config.in \
+        automake-$APIVERSION/Automake/Config.pm
+
+# Create temporary replacement for aclocal.
+dosubst aclocal.in aclocal.tmp
+
+# Overwrite amversion.m4.
+dosubst m4/amversion.in m4/amversion.m4
+
+# Create temporary replacement for automake.
+dosubst automake.in automake.tmp
+
+# Create required makefile snippets.
+$PERL ./gen-testsuite-part > t/testsuite-part.tmp
+chmod a-w t/testsuite-part.tmp
+mv -f t/testsuite-part.tmp t/testsuite-part.am
+
+# Run the autotools.
+# Use '-I' here so that our own *.m4 files in m4/ gets included,
+# not copied, in aclocal.m4.
+$PERL ./aclocal.tmp -I m4 --automake-acdir m4 --system-acdir m4/acdir
+$AUTOCONF
+$PERL ./automake.tmp
+
+# Remove temporary files and directories.
+rm -rf aclocal-$APIVERSION automake-$APIVERSION
+rm -f aclocal.tmp automake.tmp
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..8c6cb1a
--- /dev/null
+++ b/configure
@@ -0,0 +1,7614 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for GNU Automake 1.12.1.
+#
+# Report bugs to <bug-automake@gnu.org>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: bug-automake@gnu.org about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='GNU Automake'
+PACKAGE_TARNAME='automake'
+PACKAGE_VERSION='1.12.1'
+PACKAGE_STRING='GNU Automake 1.12.1'
+PACKAGE_BUGREPORT='bug-automake@gnu.org'
+PACKAGE_URL='http://www.gnu.org/software/automake/'
+
+ac_unique_file="automake.in"
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+ac_ct_GNU_GCJ
+GNU_GCJFLAGS
+GNU_GCJ
+ac_ct_GNU_F77
+GNU_FFLAGS
+GNU_F77
+ac_ct_GNU_FC
+GNU_FCFLAGS
+GNU_FC
+ac_ct_GNU_CXX
+GNU_CXXFLAGS
+GNU_CXX
+ac_ct_GNU_CC
+GNU_CFLAGS
+GNU_CC
+ac_ct_F77
+FFLAGS
+F77
+ac_ct_FC
+FCFLAGS
+FC
+ac_ct_CXX
+CXXFLAGS
+CXX
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+AM_TEST_RUNNER_SHELL
+am_candidate_sh
+FGREP
+EGREP
+GREP
+MODIFICATION_DELAY
+LN
+LEX
+YACC
+TEX
+PERL_THREADS
+PERL
+system_acdir
+automake_acdir
+amdir
+scriptdir
+pkgvdatadir
+APIVERSION
+RELEASE_YEAR
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+am_AUTOUPDATE
+am_AUTOHEADER
+am_AUTORECONF
+am_AUTOM4TE
+am_AUTOCONF
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+AM_TEST_RUNNER_SHELL
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+FC
+FCFLAGS
+F77
+FFLAGS
+GNU_CC
+GNU_CFLAGS
+GNU_CXX
+GNU_CXXFLAGS
+GNU_FC
+GNU_FCFLAGS
+GNU_F77
+GNU_FFLAGS
+GNU_GCJ
+GNU_GCJFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+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.12.1 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/automake]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of GNU Automake 1.12.1:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+
+Some influential environment variables:
+  AM_TEST_RUNNER_SHELL
+              a sturdy POSIX shell for our testsuite
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  FC          Fortran compiler command
+  FCFLAGS     Fortran compiler flags
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+  GNU_CC      GNU C compiler
+  GNU_CFLAGS  GNU C compiler flags
+  GNU_CXX     GNU C++ compiler
+  GNU_CXXFLAGS
+              GNU C++ compiler flags
+  GNU_FC      GNU Fortran compiler
+  GNU_FCFLAGS GNU Fortran compiler flags
+  GNU_F77     GNU Fortran 77 compiler
+  GNU_FFLAGS  GNU Fortran 77 compiler flags
+  GNU_GCJ     GNU Java compiler
+  GNU_GCJFLAGS
+              GNU Java compiler flags
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bug-automake@gnu.org>.
+GNU Automake home page: <http://www.gnu.org/software/automake/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+GNU Automake configure 1.12.1
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_fc_try_compile LINENO
+# ---------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_fc_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_fc_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_fc_try_compile
+
+# ac_fn_f77_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_f77_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_f77_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_f77_try_compile
+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.12.1, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ac_aux_dir=
+for ac_dir in lib "$srcdir"/lib; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in lib \"$srcdir\"/lib" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+
+# Save the AUTOCONF setting before AM_INIT_AUTOMAKE overrides it; this
+# way we can run Autoconf tests from configure (or from the test
+# suite) without being bothered by 'missing'.  Likewise for autom4te,
+# autoreconf, autoheader, and autoupdate.
+am_AUTOCONF="${AUTOCONF-autoconf}"
+
+am_AUTOM4TE="${AUTOM4TE-autom4te}"
+
+am_AUTORECONF="${AUTORECONF-autoreconf}"
+
+am_AUTOHEADER="${AUTOHEADER-autoheader}"
+
+am_AUTOUPDATE="${AUTOUPDATE-autoupdate}"
+
+
+am__api_version='1.12'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+       && test "$*" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='automake'
+ VERSION='1.12.1'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+## Keep this on a line of its own, since it must be found and processed
+## by the 'update-copyright' rule in our Makefile.
+RELEASE_YEAR=2012
+
+
+# The API version is the base version.  We must guarantee
+# compatibility for all releases with the same API version.
+# Our current rule is that:
+# * All releases, including the prereleases, in an X.Y series
+#   are compatible.  So 1.5.1c is compatible with 1.5.
+# * Prereleases on the trunk are all incompatible -- 1.5b and 1.5c
+#   aren't the same.
+APIVERSION=`echo "$VERSION" | sed -e 's/^\([0-9]*\.[0-9]*[a-z]*\).*$/\1/'`
+
+
+pkgvdatadir="\${datadir}/$PACKAGE-$APIVERSION"
+
+scriptdir="\${pkgvdatadir}"
+
+amdir="\${pkgvdatadir}/am"
+
+automake_acdir="\${datadir}/aclocal-$APIVERSION"
+
+system_acdir="\${datadir}/aclocal"
+
+
+# $AUTOMAKE and $ACLOCAL are always run after a "cd $top_srcdir",
+# hence '.' is really what we want for perllibdir, libdir, and acdir.
+ACLOCAL="perllibdir=\"`pwd`/lib$PATH_SEPARATOR./lib\" \"`pwd`/aclocal\" --acdir=m4 -I m4"
+AUTOMAKE="perllibdir=\"`pwd`/lib$PATH_SEPARATOR./lib\" \"`pwd`/automake\" --libdir=lib"
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$PERL"; then
+   as_fn_error $? "perl not found" "$LINENO" 5
+fi
+# Save details about the selected perl interpreter in config.log.
+{ echo "$as_me:$LINENO: $PERL --version" >&5
+   ($PERL --version) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+$PERL -e 'require 5.006;' || {
+   as_fn_error $? "perl 5.6 or better is required; perl 5.8.2 or better
+is recommended.  If you have several perl versions
+installed, select the one Automake should use using
+  ./configure PERL=/path/to/perl" "$LINENO" 5
+}
+
+# We require ithreads support, and version 5.7.2 for CLONE.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PERL supports ithreads" >&5
+$as_echo_n "checking whether $PERL supports ithreads... " >&6; }
+if ${am_cv_prog_PERL_ithreads+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $PERL -e '
+    require 5.007_002;
+    use Config;
+    if ($Config{useithreads})
+      {
+       require threads;
+       import threads;
+       require Thread::Queue;
+       import Thread::Queue;
+       exit 0;
+      }
+    exit 1;' >&5 2>&1
+then
+  am_cv_prog_PERL_ithreads=yes
+else
+  am_cv_prog_PERL_ithreads=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_PERL_ithreads" >&5
+$as_echo "$am_cv_prog_PERL_ithreads" >&6; }
+if test $am_cv_prog_PERL_ithreads = yes; then
+  PERL_THREADS=1;
+else
+  PERL_THREADS=0;
+fi
+
+
+# The test suite will skip some tests if tex is absent.
+# Extract the first word of "tex", so it can be a program name with args.
+set dummy tex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_TEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$TEX"; then
+  ac_cv_prog_TEX="$TEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_TEX="tex"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+TEX=$ac_cv_prog_TEX
+if test -n "$TEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEX" >&5
+$as_echo "$TEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Save details about the selected TeX program in config.log.
+# Redirect input from /dev/null, as TeX might otherwise hang waiting
+# for input from the terminal.
+{ echo "$as_me:$LINENO: $TEX --version </dev/null" >&5
+   ($TEX --version </dev/null) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+
+# The test suite will skip some tests if no lex or yacc program is
+# available.
+# We don't use AC_PROG_LEX nor AC_PROG_YACC here because:
+#  1. we don't want flex (resp. bison) to be preferred to system lex
+#     (resp. system yacc);
+#  2. we don't want $LEX (resp. $YACC) to be defined to ':' (resp. 'yacc')
+#     by default;
+#  3. we prefer not to have the variables YFLAGS, LEX_OUTPUT_ROOT and
+#     LEXLIB to be calculated and/or AC_SUBST'd;
+#  4. we prefer that the YACC and LEX variables are not reported in the
+#     configure help screen.
+for ac_prog in yacc byacc 'bison -y'
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_YACC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$YACC"; then
+  ac_cv_prog_YACC="$YACC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_YACC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+$as_echo "$YACC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="false"
+
+for ac_prog in lex flex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LEX"; then
+  ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LEX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LEX=$ac_cv_prog_LEX
+if test -n "$LEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
+$as_echo "$LEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$LEX" && break
+done
+test -n "$LEX" || LEX="false"
+
+
+# Test for Autoconf.  We run Autoconf in a subdirectory to ease
+# deletion of any files created (such as those added to
+# autom4te.cache).  We used to perform only the last of the three
+# following tests, but some users were unable to figure out that their
+# installation was broken since --version appeared to work.
+
+required_autoconf_version=2.62
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether autoconf is installed" >&5
+$as_echo_n "checking whether autoconf is installed... " >&6; }
+if ${am_cv_autoconf_installed+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if { echo "$as_me:$LINENO: $am_AUTOCONF --version" >&5
+   ($am_AUTOCONF --version) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); };
+then
+  am_cv_autoconf_installed=yes
+else
+  am_cv_autoconf_installed=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_autoconf_installed" >&5
+$as_echo "$am_cv_autoconf_installed" >&6; }
+if test "$am_cv_autoconf_installed" = no; then
+  as_fn_error $? "Autoconf $required_autoconf_version or better is required.
+    Please make sure it is installed and in your PATH." "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether autoconf works" >&5
+$as_echo_n "checking whether autoconf works... " >&6; }
+if ${am_cv_autoconf_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  mkdir conftest
+echo 'AC''_INIT' > conftest/conftest.ac
+if { echo "$as_me:$LINENO: cd conftest && $am_AUTOCONF -o /dev/null conftest.ac" >&5
+   (cd conftest && $am_AUTOCONF -o /dev/null conftest.ac) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); };
+then
+  am_cv_autoconf_works=yes
+else
+  am_cv_autoconf_works=no
+fi
+rm -rf conftest
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_autoconf_works" >&5
+$as_echo "$am_cv_autoconf_works" >&6; }
+if test "$am_cv_autoconf_works" = no; then
+  as_fn_error $? "The installed version of autoconf does not work.
+    Please check config.log for error messages before this one." "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether autoconf is recent enough" >&5
+$as_echo_n "checking whether autoconf is recent enough... " >&6; }
+if ${am_cv_autoconf_version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  mkdir conftest
+echo 'AC'"_PREREQ([$required_autoconf_version])" > conftest/conftest.ac
+if { echo "$as_me:$LINENO: cd conftest && $am_AUTOCONF -o /dev/null conftest.ac" >&5
+   (cd conftest && $am_AUTOCONF -o /dev/null conftest.ac) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); };
+then
+  am_cv_autoconf_version=yes
+else
+  am_cv_autoconf_version=no
+fi
+rm -rf conftest
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_autoconf_version" >&5
+$as_echo "$am_cv_autoconf_version" >&6; }
+if test "$am_cv_autoconf_version" = no; then
+  as_fn_error $? "Autoconf $required_autoconf_version or better is required." "$LINENO" 5
+fi
+
+# Test for ln.  We need use it to install the versioned binaries.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln works" >&5
+$as_echo_n "checking whether ln works... " >&6; }
+if ${am_cv_prog_ln+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+rm -f conftest conftest.file
+: >conftest.file
+if ln conftest.file conftest 2>/dev/null; then
+  am_cv_prog_ln=ln
+else
+  am_cv_prog_ln='cp -p'
+fi
+rm -f conftest conftest.file
+fi
+
+LN=$am_cv_prog_ln
+
+result=no
+test "x$am_cv_prog_ln" = xln && result=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $result" >&5
+$as_echo "$result" >&6; }
+
+# The amount we should wait after modifying files depends on the platform.
+# On Windows '95, '98 and ME, files modifications have 2-seconds
+# granularity and can be up to 3 seconds in the future w.r.t. the
+# system clock.  When it is important to ensure one file is older
+# than another we wait at least 5 seconds between creations.
+case $build in
+  *-pc-msdosdjgpp) MODIFICATION_DELAY=5;;
+  *)               MODIFICATION_DELAY=2;;
+esac
+
+
+## ------------------------------------------- ##
+##  Test for things needed by the test suite.  ##
+## ------------------------------------------- ##
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+
+
+
+
+
+# AM_CHECK_CANDIDATE_TEST_SHELL(SHELL-PATH)
+# -----------------------------------------
+#
+# Check if the given shell is good enough to run our test scripts.
+# Inspired to gnulib's 'tests/init.sh'.
+#
+# We require POSIX and XSI features (e.g., '$(...)' for command
+# substitutions, '$((...))' for shell arithmetic, and support for
+# '${var#...}' and '${var%...}' parameter expansions).
+#
+# We require that the shell can correctly trap EXIT when 'set -e' is in
+# effect (OSF1/Tru64 sh failed to do so, see commit v1.10b-52-g9fe8259).
+#
+# We also prefer shells that, when 'set -x' is in effect, do not also
+# redirect traces upon stderr redirections.  For example,
+#  $ set -x; echo x 2>file
+# would emit "+ echo x" into file with older zsh versions.  Similarly,
+#   $ set -x; P=1 true 2>file
+# would emit "P=1" into file with /usr/xpg4/bin/sh from Solaris 10 and
+# /bin/sh from SunOS 5.11 and OpenBSD 4.7.
+#
+# Finally, we look for weird bugs and portability problems mentioned in
+# the Autoconf manual, and reject shells that suffers from them. (TODO)
+#
+# Use '$am_score' to indicate the degree of acceptability of the shell.
+# A score of "10" means that the shell is good enough for our needs;
+# a score of "9" means that the shell has some minor bugs or limitation,
+# but is still (barely) acceptable for our uses.  Any other score means
+# that the shell is broken or unfit.
+#
+
+
+# These messages only goes to the config.log file.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: will now look for a sturdy POSIX shell, for our testsuite" >&5
+$as_echo "$as_me: will now look for a sturdy POSIX shell, for our testsuite" >&6;}
+
+am_bourne_compatible="# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+"
+if ${ac_cv_AM_TEST_RUNNER_SHELL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$AM_TEST_RUNNER_SHELL"; then
+    # Let the user override it.
+    ac_cv_AM_TEST_RUNNER_SHELL=$AM_TEST_RUNNER_SHELL
+  else
+    ac_cv_AM_TEST_RUNNER_SHELL=no
+    am_candidate_shells=${CONFIG_SHELL-}
+    # For the benefit of Solaris.
+    am_PATH=$PATH$PATH_SEPARATOR/usr/xpg6/bin$PATH_SEPARATOR/usr/xpg4/bin
+    for am_sh in sh sh5 dash ash bash zsh ksh pdksh; do
+      # Extract the first word of "$am_sh", so it can be a program name with args.
+set dummy $am_sh; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_am_candidate_sh+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $am_candidate_sh in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_am_candidate_sh="$am_candidate_sh" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $am_PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_am_candidate_sh="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+am_candidate_sh=$ac_cv_path_am_candidate_sh
+if test -n "$am_candidate_sh"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_candidate_sh" >&5
+$as_echo "$am_candidate_sh" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+      if test -n "$am_candidate_sh"; then
+        am_candidate_shells="$am_candidate_shells $am_candidate_sh"
+      fi
+
+      # Must nullify these in order not to interfere with the checks in
+      # the next loop.
+      { am_candidate_sh=; unset am_candidate_sh;}
+      { ac_cv_path_am_candidate_sh=; unset ac_cv_path_am_candidate_sh;}
+    done
+    { am_PATH=; unset am_PATH;} # Not required anymore
+    for am_sh in $am_candidate_shells; do
+      am_score=0
+      am_score=10
+  while :; do
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_sh supports \$(cmd)" >&5
+$as_echo_n "checking whether $am_sh supports \$(cmd)... " >&6; }
+  if { $am_sh -c "$am_bourne_compatible
+test \"\$(echo x)\" = x
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&5 2>&1; test $? -eq 77; }
+  then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    am_score=1; break
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_sh supports \$((expr))" >&5
+$as_echo_n "checking whether $am_sh supports \$((expr))... " >&6; }
+  if { $am_sh -c "$am_bourne_compatible
+test \$((1 + 2 * 3)) = 7
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&5 2>&1; test $? -eq 77; }
+  then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    am_score=1; break
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_sh supports \${var#glob}" >&5
+$as_echo_n "checking whether $am_sh supports \${var#glob}... " >&6; }
+  if { $am_sh -c "$am_bourne_compatible
+v=a/b/c; test \${v#*/} = b/c
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&5 2>&1; test $? -eq 77; }
+  then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    am_score=1; break
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_sh supports \${var##glob}" >&5
+$as_echo_n "checking whether $am_sh supports \${var##glob}... " >&6; }
+  if { $am_sh -c "$am_bourne_compatible
+v=a/b/c; test \${v##*/} = c
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&5 2>&1; test $? -eq 77; }
+  then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    am_score=1; break
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_sh supports \${var%glob}" >&5
+$as_echo_n "checking whether $am_sh supports \${var%glob}... " >&6; }
+  if { $am_sh -c "$am_bourne_compatible
+v=a.b.c; test \${v%.*} = a.b
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&5 2>&1; test $? -eq 77; }
+  then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    am_score=1; break
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_sh supports \${var%%glob}" >&5
+$as_echo_n "checking whether $am_sh supports \${var%%glob}... " >&6; }
+  if { $am_sh -c "$am_bourne_compatible
+v=a.b.c; test \${v%%.*} = a
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&5 2>&1; test $? -eq 77; }
+  then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    am_score=1; break
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_sh \"set -e\" preserves exit traps" >&5
+$as_echo_n "checking whether $am_sh \"set -e\" preserves exit traps... " >&6; }
+  if { $am_sh -c "$am_bourne_compatible
+set -e; trap 'exit \$?' 0; (exit 77); exit 77
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&5 2>&1; test $? -eq 77; }
+  then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    am_score=1; break
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_sh \"set -x\" corrupts stderr" >&5
+$as_echo_n "checking whether $am_sh \"set -x\" corrupts stderr... " >&6; }
+  if { $am_sh -c "$am_bourne_compatible
+(set -x; P=1 true 2>&3) 3>&1 2>/dev/null | grep P=1
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&5 2>&1; test $? -eq 77; }
+  then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    am_score=9
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+  fi
+
+    break
+  done
+      if test $am_score -eq 9; then
+        # The shell is barely acceptable for our needs.  We might
+        # still find one that is even better, so continue looking.
+        { $as_echo "$as_me:${as_lineno-$LINENO}: shell $am_sh is acceptable, but we might do better" >&5
+$as_echo "$as_me: shell $am_sh is acceptable, but we might do better" >&6;}
+        ac_cv_AM_TEST_RUNNER_SHELL=$am_sh
+      elif test $am_score -eq 10; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: shell $am_sh is good enough, stop looking" >&5
+$as_echo "$as_me: shell $am_sh is good enough, stop looking" >&6;}
+        ac_cv_AM_TEST_RUNNER_SHELL=$am_sh
+        break
+      fi
+    done
+  fi
+  AM_TEST_RUNNER_SHELL=$ac_cv_AM_TEST_RUNNER_SHELL
+fi
+
+
+if test $AM_TEST_RUNNER_SHELL = no; then
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no POSIX shell found that is good enough to be used in our testsuite
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: will use $AM_TEST_RUNNER_SHELL as the testsuite shell" >&5
+$as_echo "$as_me: will use $AM_TEST_RUNNER_SHELL as the testsuite shell" >&6;}
+fi
+
+
+
+## ---------------------- ##
+##  Create output files.  ##
+## ---------------------- ##
+
+
+###########################################################################
+
+# Look for C, C++ and fortran compilers to be used in the testsuite.
+
+
+
+
+
+
+
+
+# Prefer generic compilers to GNU ones when possible.  This will ensure
+# more testsuite coverage "in the wild".
+# Note that we don't look for the MSVC C/C++ compiler here.  This is
+# deliberate; for more discussion and rationale, see:
+# <http://lists.gnu.org/archive/html/automake-patches/2012-01/msg00130.html>
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: will now look for generic compilers" >&5
+$as_echo "$as_me: will now look for generic compilers" >&6;}
+
+# C compiler.
+
+
+
+  am__failed=no
+  while :; do
+       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in cc gcc
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cc gcc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+
+test -z "$CC" &&  {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no acceptable C compiler found in \$PATH" >&5
+$as_echo "$as_me: WARNING: no acceptable C compiler found in \$PATH" >&2;}
+  am__failed=yes
+  break
+}
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler cannot create executables" >&5
+$as_echo "$as_me: WARNING: C compiler cannot create executables" >&2;}
+  am__failed=yes
+  break
+}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+   {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot compute suffix of executables: cannot compile and link" >&5
+$as_echo "$as_me: WARNING: cannot compute suffix of executables: cannot compile and link" >&2;}
+  am__failed=yes
+  break
+}
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+        {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+$as_echo "$as_me: WARNING: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+  am__failed=yes
+  break
+}
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot compute suffix of object files: cannot compile" >&5
+$as_echo "$as_me: WARNING: cannot compute suffix of object files: cannot compile" >&2;}
+  am__failed=yes
+  break
+}
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     break
+  done
+  if test $am__failed = yes; then :
+  CC=false; { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the C compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the C compiler will be skipped" >&6;}
+fi
+  # We have to clear these cache variables, so that future checks on
+  # compilers for different languages won't be confused.
+  unset ac_cv_objext ac_cv_exeext
+  # We also need to meddle with the autoconf internals to ensure that
+  # checks to find object and executable extensions will be run anew.
+  # FIXME: In the long run, the better thing to do would be to fix
+  # FIXME: autoconf instead ...
+
+
+
+
+
+
+if test x"$GCC" = x"yes"; then :
+  am_CC_is_GNU=yes
+else
+  am_CC_is_GNU=no
+fi
+
+# The list of C++ compilers here has been copied, pasted and edited
+# from 'lib/autoconf/c.m4:AC_PROG_CXX' in the Autoconf distribution.
+# Keep it in sync, or better again, find out a way to avoid this code
+# duplication.
+
+
+
+  am__failed=no
+  while :; do
+     ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in   aCC CC FCC KCC RCC xlC_r xlC c++ cxx cc++ gpp g++
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in   aCC CC FCC KCC RCC xlC_r xlC c++ cxx cc++ gpp g++
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C++ compiler cannot create executables" >&5
+$as_echo "$as_me: WARNING: C++ compiler cannot create executables" >&2;}
+  am__failed=yes
+  break
+}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+   {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot compute suffix of executables: cannot compile and link" >&5
+$as_echo "$as_me: WARNING: cannot compute suffix of executables: cannot compile and link" >&2;}
+  am__failed=yes
+  break
+}
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+        {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+$as_echo "$as_me: WARNING: cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+  am__failed=yes
+  break
+}
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot compute suffix of object files: cannot compile" >&5
+$as_echo "$as_me: WARNING: cannot compute suffix of object files: cannot compile" >&2;}
+  am__failed=yes
+  break
+}
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+        CXXFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     break
+  done
+  if test $am__failed = yes; then :
+  CXX=false; { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the C++ compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the C++ compiler will be skipped" >&6;}
+fi
+  # We have to clear these cache variables, so that future checks on
+  # compilers for different languages won't be confused.
+  unset ac_cv_objext ac_cv_exeext
+  # We also need to meddle with the autoconf internals to ensure that
+  # checks to find object and executable extensions will be run anew.
+  # FIXME: In the long run, the better thing to do would be to fix
+  # FIXME: autoconf instead ...
+
+
+
+
+
+
+if test x"$GXX" = x"yes"; then :
+  am_CXX_is_GNU=yes
+else
+  am_CXX_is_GNU=no
+fi
+
+# The lists of Fortran compilers here has been copied, pasted and edited
+# from file 'lib/autoconf/fortran.m4' in the Autoconf distribution.
+# Keep it in sync, or better again, find out a way to avoid this code
+# duplication.
+
+
+
+
+  am__failed=no
+  while :; do
+     ac_ext=${ac_fc_srcext-f}
+ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in   xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor   xlf90 f90 pgf90 pghpf epcf90 g95 gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_FC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$FC"; then
+  ac_cv_prog_FC="$FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+FC=$ac_cv_prog_FC
+if test -n "$FC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
+$as_echo "$FC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$FC" && break
+  done
+fi
+if test -z "$FC"; then
+  ac_ct_FC=$FC
+  for ac_prog in   xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor   xlf90 f90 pgf90 pghpf epcf90 g95 gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_FC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_FC"; then
+  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_FC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_FC=$ac_cv_prog_ac_ct_FC
+if test -n "$ac_ct_FC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
+$as_echo "$ac_ct_FC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_FC" && break
+done
+
+  if test "x$ac_ct_FC" = x; then
+    FC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    FC=$ac_ct_FC
+  fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+rm -f a.out
+
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Fortran compiler works" >&5
+$as_echo_n "checking whether the Fortran compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Fortran compiler cannot create executables" >&5
+$as_echo "$as_me: WARNING: Fortran compiler cannot create executables" >&2;}
+  am__failed=yes
+  break
+}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler default output file name" >&5
+$as_echo_n "checking for Fortran compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+   {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot compute suffix of executables: cannot compile and link" >&5
+$as_echo "$as_me: WARNING: cannot compute suffix of executables: cannot compile and link" >&2;}
+  am__failed=yes
+  break
+}
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+      open(unit=9,file='conftest.out')
+      close(unit=9)
+
+      end
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+        {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot run Fortran compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+$as_echo "$as_me: WARNING: cannot run Fortran compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+  am__failed=yes
+  break
+}
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot compute suffix of object files: cannot compile" >&5
+$as_echo "$as_me: WARNING: cannot compute suffix of object files: cannot compile" >&2;}
+  am__failed=yes
+  break
+}
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
+if ${ac_cv_fc_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+if ac_fn_fc_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_fc_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
+$as_echo "$ac_cv_fc_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FCFLAGS=${FCFLAGS+set}
+ac_save_FCFLAGS=$FCFLAGS
+FCFLAGS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
+$as_echo_n "checking whether $FC accepts -g... " >&6; }
+if ${ac_cv_prog_fc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  FCFLAGS=-g
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+if ac_fn_fc_try_compile "$LINENO"; then :
+  ac_cv_prog_fc_g=yes
+else
+  ac_cv_prog_fc_g=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
+$as_echo "$ac_cv_prog_fc_g" >&6; }
+if test "$ac_test_FCFLAGS" = set; then
+  FCFLAGS=$ac_save_FCFLAGS
+elif test $ac_cv_prog_fc_g = yes; then
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-g -O2"
+  else
+    FCFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-O2"
+  else
+    FCFLAGS=
+  fi
+fi
+
+if test $ac_compiler_gnu = yes; then
+  GFC=yes
+else
+  GFC=
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     break
+  done
+  if test $am__failed = yes; then :
+  FC=false; { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the Fortran compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the Fortran compiler will be skipped" >&6;}
+fi
+  # We have to clear these cache variables, so that future checks on
+  # compilers for different languages won't be confused.
+  unset ac_cv_objext ac_cv_exeext
+  # We also need to meddle with the autoconf internals to ensure that
+  # checks to find object and executable extensions will be run anew.
+  # FIXME: In the long run, the better thing to do would be to fix
+  # FIXME: autoconf instead ...
+
+
+
+
+
+
+if test x"$GFC" = x"yes"; then :
+  am_FC_is_GNU=yes
+else
+  am_FC_is_GNU=no
+fi
+
+
+
+
+  am__failed=no
+  while :; do
+     ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in   xlf f77 frt pgf77 cf77 fort77 fl32 af77 g77 gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_F77+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
+$as_echo "$F77" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in   xlf f77 frt pgf77 cf77 fort77 fl32 af77 g77 gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_F77+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
+$as_echo "$ac_ct_F77" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_F77" && break
+done
+
+  if test "x$ac_ct_F77" = x; then
+    F77=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    F77=$ac_ct_F77
+  fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+rm -f a.out
+
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Fortran 77 compiler works" >&5
+$as_echo_n "checking whether the Fortran 77 compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Fortran 77 compiler cannot create executables" >&5
+$as_echo "$as_me: WARNING: Fortran 77 compiler cannot create executables" >&2;}
+  am__failed=yes
+  break
+}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler default output file name" >&5
+$as_echo_n "checking for Fortran 77 compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+   {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot compute suffix of executables: cannot compile and link" >&5
+$as_echo "$as_me: WARNING: cannot compute suffix of executables: cannot compile and link" >&2;}
+  am__failed=yes
+  break
+}
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+      open(unit=9,file='conftest.out')
+      close(unit=9)
+
+      end
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+        {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot run Fortran 77 compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+$as_echo "$as_me: WARNING: cannot run Fortran 77 compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+  am__failed=yes
+  break
+}
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ {
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot compute suffix of object files: cannot compile" >&5
+$as_echo "$as_me: WARNING: cannot compute suffix of object files: cannot compile" >&2;}
+  am__failed=yes
+  break
+}
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
+if ${ac_cv_f77_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
+$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
+$as_echo_n "checking whether $F77 accepts -g... " >&6; }
+if ${ac_cv_prog_f77_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  FFLAGS=-g
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+  ac_cv_prog_f77_g=yes
+else
+  ac_cv_prog_f77_g=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
+$as_echo "$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+if test $ac_compiler_gnu = yes; then
+  G77=yes
+else
+  G77=
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     break
+  done
+  if test $am__failed = yes; then :
+  F77=false; { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the Fortran 77 compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the Fortran 77 compiler will be skipped" >&6;}
+fi
+  # We have to clear these cache variables, so that future checks on
+  # compilers for different languages won't be confused.
+  unset ac_cv_objext ac_cv_exeext
+  # We also need to meddle with the autoconf internals to ensure that
+  # checks to find object and executable extensions will be run anew.
+  # FIXME: In the long run, the better thing to do would be to fix
+  # FIXME: autoconf instead ...
+
+
+
+
+
+
+if test x"$G77" = x"yes"; then :
+  am_F77_is_GNU=yes
+else
+  am_F77_is_GNU=no
+fi
+
+# Some tests will need the GNU compilers.  Searching for them here would
+# be overkill, since our testsuite already handles their search and setup
+# pretty well.  But in case the compilers already found are the GNU ones,
+# we want to use them in the testsuite where GNU compilers are required.
+# Also, in case the compilers detected above (at configure time) are not
+# the GNU ones, we cannot use the values of CFLAGS, CXXFLAGS, FCFLAGS and
+# FFLAGS detected for them with the GNU compilers too, since it's likely
+# they won't be compatible.  So we allow the user to define variants of
+# these variables for the GNU compilers separately.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: will now look for GNU compilers" >&5
+$as_echo "$as_me: will now look for GNU compilers" >&6;}
+
+# GNU C compiler.
+
+
+if test $am_CC_is_GNU = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: $CC is already a GNU C compiler" >&5
+$as_echo "$as_me: $CC is already a GNU C compiler" >&6;}
+  GNU_CC=$CC GNU_CFLAGS=${GNU_CFLAGS-$CFLAGS}
+else
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in gcc
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GNU_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GNU_CC"; then
+  ac_cv_prog_GNU_CC="$GNU_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GNU_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GNU_CC=$ac_cv_prog_GNU_CC
+if test -n "$GNU_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNU_CC" >&5
+$as_echo "$GNU_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$GNU_CC" && break
+  done
+fi
+if test -z "$GNU_CC"; then
+  ac_ct_GNU_CC=$GNU_CC
+  for ac_prog in gcc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GNU_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GNU_CC"; then
+  ac_cv_prog_ac_ct_GNU_CC="$ac_ct_GNU_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GNU_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GNU_CC=$ac_cv_prog_ac_ct_GNU_CC
+if test -n "$ac_ct_GNU_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GNU_CC" >&5
+$as_echo "$ac_ct_GNU_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_GNU_CC" && break
+done
+
+  if test "x$ac_ct_GNU_CC" = x; then
+    GNU_CC="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    GNU_CC=$ac_ct_GNU_CC
+  fi
+fi
+
+fi
+if { echo "$as_me:$LINENO: $GNU_CC --version && $GNU_CC -v" >&5
+   ($GNU_CC --version && $GNU_CC -v) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: botched installation for GNU C compiler" >&5
+$as_echo "$as_me: WARNING: botched installation for GNU C compiler" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the GNU C compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the GNU C compiler will be skipped" >&6;}
+fi
+
+# GNU C++ compiler.
+
+
+if test $am_CXX_is_GNU = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: $CXX is already a GNU C++ compiler" >&5
+$as_echo "$as_me: $CXX is already a GNU C++ compiler" >&6;}
+  GNU_CXX=$CXX
+  GNU_CXXFLAGS=${GNU_CXXFLAGS-$CXXFLAGS}
+else
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ gpp
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GNU_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GNU_CXX"; then
+  ac_cv_prog_GNU_CXX="$GNU_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GNU_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GNU_CXX=$ac_cv_prog_GNU_CXX
+if test -n "$GNU_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNU_CXX" >&5
+$as_echo "$GNU_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$GNU_CXX" && break
+  done
+fi
+if test -z "$GNU_CXX"; then
+  ac_ct_GNU_CXX=$GNU_CXX
+  for ac_prog in g++ gpp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GNU_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GNU_CXX"; then
+  ac_cv_prog_ac_ct_GNU_CXX="$ac_ct_GNU_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GNU_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GNU_CXX=$ac_cv_prog_ac_ct_GNU_CXX
+if test -n "$ac_ct_GNU_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GNU_CXX" >&5
+$as_echo "$ac_ct_GNU_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_GNU_CXX" && break
+done
+
+  if test "x$ac_ct_GNU_CXX" = x; then
+    GNU_CXX="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    GNU_CXX=$ac_ct_GNU_CXX
+  fi
+fi
+
+fi
+if { echo "$as_me:$LINENO: $GNU_CXX --version && $GNU_CXX -v" >&5
+   ($GNU_CXX --version && $GNU_CXX -v) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: botched installation for GNU C++ compiler" >&5
+$as_echo "$as_me: WARNING: botched installation for GNU C++ compiler" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the GNU C++ compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the GNU C++ compiler will be skipped" >&6;}
+fi
+
+# GNU Fortran compiler.
+
+
+if test $am_FC_is_GNU = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: $FC is already a GNU Fortran compiler" >&5
+$as_echo "$as_me: $FC is already a GNU Fortran compiler" >&6;}
+  GNU_FC=$FC
+  GNU_FCFLAGS=${GNU_FCFLAGS-$FCFLAGS}
+else
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GNU_FC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GNU_FC"; then
+  ac_cv_prog_GNU_FC="$GNU_FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GNU_FC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GNU_FC=$ac_cv_prog_GNU_FC
+if test -n "$GNU_FC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNU_FC" >&5
+$as_echo "$GNU_FC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$GNU_FC" && break
+  done
+fi
+if test -z "$GNU_FC"; then
+  ac_ct_GNU_FC=$GNU_FC
+  for ac_prog in gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GNU_FC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GNU_FC"; then
+  ac_cv_prog_ac_ct_GNU_FC="$ac_ct_GNU_FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GNU_FC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GNU_FC=$ac_cv_prog_ac_ct_GNU_FC
+if test -n "$ac_ct_GNU_FC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GNU_FC" >&5
+$as_echo "$ac_ct_GNU_FC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_GNU_FC" && break
+done
+
+  if test "x$ac_ct_GNU_FC" = x; then
+    GNU_FC="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    GNU_FC=$ac_ct_GNU_FC
+  fi
+fi
+
+fi
+if { echo "$as_me:$LINENO: $GNU_FC --version && $GNU_FC -v" >&5
+   ($GNU_FC --version && $GNU_FC -v) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: botched installation for GNU Fortran compiler" >&5
+$as_echo "$as_me: WARNING: botched installation for GNU Fortran compiler" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the GNU Fortran compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the GNU Fortran compiler will be skipped" >&6;}
+fi
+
+# GNU Fortran 77 compiler.
+
+
+if test $am_F77_is_GNU = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: $F77 is already a GNU Fortran 77 compiler" >&5
+$as_echo "$as_me: $F77 is already a GNU Fortran 77 compiler" >&6;}
+  GNU_F77=$F77
+  GNU_FFLAGS=${GNU_FFLAGS-$FFLAGS}
+else
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GNU_F77+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GNU_F77"; then
+  ac_cv_prog_GNU_F77="$GNU_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GNU_F77="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GNU_F77=$ac_cv_prog_GNU_F77
+if test -n "$GNU_F77"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNU_F77" >&5
+$as_echo "$GNU_F77" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$GNU_F77" && break
+  done
+fi
+if test -z "$GNU_F77"; then
+  ac_ct_GNU_F77=$GNU_F77
+  for ac_prog in g77 gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GNU_F77+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GNU_F77"; then
+  ac_cv_prog_ac_ct_GNU_F77="$ac_ct_GNU_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GNU_F77="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GNU_F77=$ac_cv_prog_ac_ct_GNU_F77
+if test -n "$ac_ct_GNU_F77"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GNU_F77" >&5
+$as_echo "$ac_ct_GNU_F77" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_GNU_F77" && break
+done
+
+  if test "x$ac_ct_GNU_F77" = x; then
+    GNU_F77="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    GNU_F77=$ac_ct_GNU_F77
+  fi
+fi
+
+fi
+if { echo "$as_me:$LINENO: $GNU_F77 --version && $GNU_F77 -v" >&5
+   ($GNU_F77 --version && $GNU_F77 -v) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: botched installation for GNU Fortran 77 compiler" >&5
+$as_echo "$as_me: WARNING: botched installation for GNU Fortran 77 compiler" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the GNU Fortran 77 compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the GNU Fortran 77 compiler will be skipped" >&6;}
+fi
+
+# GNU Java compiler.
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in gcj
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GNU_GCJ+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GNU_GCJ"; then
+  ac_cv_prog_GNU_GCJ="$GNU_GCJ" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GNU_GCJ="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GNU_GCJ=$ac_cv_prog_GNU_GCJ
+if test -n "$GNU_GCJ"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNU_GCJ" >&5
+$as_echo "$GNU_GCJ" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$GNU_GCJ" && break
+  done
+fi
+if test -z "$GNU_GCJ"; then
+  ac_ct_GNU_GCJ=$GNU_GCJ
+  for ac_prog in gcj
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GNU_GCJ+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GNU_GCJ"; then
+  ac_cv_prog_ac_ct_GNU_GCJ="$ac_ct_GNU_GCJ" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GNU_GCJ="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GNU_GCJ=$ac_cv_prog_ac_ct_GNU_GCJ
+if test -n "$ac_ct_GNU_GCJ"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GNU_GCJ" >&5
+$as_echo "$ac_ct_GNU_GCJ" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_GNU_GCJ" && break
+done
+
+  if test "x$ac_ct_GNU_GCJ" = x; then
+    GNU_GCJ="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    GNU_GCJ=$ac_ct_GNU_GCJ
+  fi
+fi
+
+if { echo "$as_me:$LINENO: $GNU_GCJ --version && $GNU_GCJ -v" >&5
+   ($GNU_GCJ --version && $GNU_GCJ -v) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: botched installation for GNU Java compiler" >&5
+$as_echo "$as_me: WARNING: botched installation for GNU Java compiler" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: tests requiring the GNU Java compiler will be skipped" >&5
+$as_echo "$as_me: tests requiring the GNU Java compiler will be skipped" >&6;}
+fi
+
+# If we have been able to find at least a working compiler above, we
+# know what the object and executable extensions for this platform are.
+OBJEXT=${ac_cv_objext-UNKNOWN}
+EXEEXT=${ac_cv_exeext-UNKNOWN}
+
+
+
+###########################################################################
+
+ac_config_files="$ac_config_files Makefile"
+
+
+ac_config_links="$ac_config_links GNUmakefile:GNUmakefile"
+
+ac_config_links="$ac_config_links defs:defs"
+
+
+ac_config_files="$ac_config_files t/wrap/aclocal-${APIVERSION}:t/wrap/aclocal.in"
+
+ac_config_files="$ac_config_files t/wrap/automake-${APIVERSION}:t/wrap/automake.in"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[     `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+       g
+       s/^\n//
+       s/\n/ /g
+       p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# 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.12.1, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_links="$ac_config_links"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration links:
+$config_links
+
+Report bugs to <bug-automake@gnu.org>.
+GNU Automake home page: <http://www.gnu.org/software/automake/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+GNU Automake config.status 1.12.1
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+APIVERSION=$APIVERSION
+APIVERSION=$APIVERSION
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "GNUmakefile") CONFIG_LINKS="$CONFIG_LINKS GNUmakefile:GNUmakefile" ;;
+    "defs") CONFIG_LINKS="$CONFIG_LINKS defs:defs" ;;
+    "t/wrap/aclocal-${APIVERSION}") CONFIG_FILES="$CONFIG_FILES t/wrap/aclocal-${APIVERSION}:t/wrap/aclocal.in" ;;
+    "t/wrap/automake-${APIVERSION}") CONFIG_FILES="$CONFIG_FILES t/wrap/automake-${APIVERSION}:t/wrap/automake.in" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES    :L $CONFIG_LINKS  "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+  :L)
+  #
+  # CONFIG_LINK
+  #
+
+  if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then
+    :
+  else
+    # Prefer the file from the source tree if names are identical.
+    if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
+      ac_source=$srcdir/$ac_source
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5
+$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
+
+    if test ! -r "$ac_source"; then
+      as_fn_error $? "$ac_source: file not found" "$LINENO" 5
+    fi
+    rm -f "$ac_file"
+
+    # Try a relative symlink, then a hard link, then a copy.
+    case $ac_source in
+    [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
+       *) ac_rel_source=$ac_top_build_prefix$ac_source ;;
+    esac
+    ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
+      ln "$ac_source" "$ac_file" 2>/dev/null ||
+      cp -p "$ac_source" "$ac_file" ||
+      as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
+  fi
+ ;;
+
+  esac
+
+
+  case $ac_file$ac_mode in
+    "t/wrap/aclocal-${APIVERSION}":F) chmod +x t/wrap/aclocal-${APIVERSION} ;;
+    "t/wrap/automake-${APIVERSION}":F) chmod +x t/wrap/automake-${APIVERSION} ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+# Inform the user if this version of automake is a beta release or
+# a development snapshot.
+# According to HACKING, the version of a development snapshot should
+# end with an "odd" letter (a, c, ...), the version of a test release
+# should end wit an "even" letter (b, d, ...).
+
+am_stable_version_rx='[1-9]\.[0-9]+(\.[0-9]+)?'
+am_beta_version_rx="$am_stable_version_rx[bdfhjlnprtvxz]"
+
+am_release_type=`$as_echo "$PACKAGE_VERSION" | LC_ALL=C awk "
+  /^$am_stable_version_rx$/ { print \"stable\"; exit(0); }
+  /^$am_beta_version_rx$/ { print \"beta version\"; exit(0); }
+  { print \"development snapshot\"; }"`
+
+test "$am_release_type" = stable || cat <<EOF
+
+WARNING: You are about to use a $am_release_type of automake.
+WARNING: It might easily suffer from new bugs or regressions.
+WARNING: You are strongly advised not to use it in production code.
+
+Please report bugs, problems and feedback to <bug-automake@gnu.org>.
+EOF
+
+as_fn_exit 0
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..0958b0e
--- /dev/null
@@ -0,0 +1,593 @@
+# Process this file with autoconf to produce a configure script.
+
+# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+AC_PREREQ([2.69])
+AC_INIT([GNU Automake], [1.12.1], [bug-automake@gnu.org])
+
+AC_CONFIG_SRCDIR([automake.in])
+AC_CONFIG_AUX_DIR([lib])
+
+AM_SILENT_RULES([yes])
+
+AC_CANONICAL_HOST
+AC_CANONICAL_BUILD
+
+# Save the AUTOCONF setting before AM_INIT_AUTOMAKE overrides it; this
+# way we can run Autoconf tests from configure (or from the test
+# suite) without being bothered by 'missing'.  Likewise for autom4te,
+# autoreconf, autoheader, and autoupdate.
+AC_SUBST([am_AUTOCONF], ["${AUTOCONF-autoconf}"])
+AC_SUBST([am_AUTOM4TE], ["${AUTOM4TE-autom4te}"])
+AC_SUBST([am_AUTORECONF], ["${AUTORECONF-autoreconf}"])
+AC_SUBST([am_AUTOHEADER], ["${AUTOHEADER-autoheader}"])
+AC_SUBST([am_AUTOUPDATE], ["${AUTOUPDATE-autoupdate}"])
+
+dnl We call AC_PROG_CC in an unusual way, and only for use in our
+dnl testsuite, so also use 'no-dependencies' and 'no-define' among
+dnl the automake options to avoid bloating and potential problems.
+AM_INIT_AUTOMAKE([dist-xz filename-length-max=99 color-tests
+                 parallel-tests silent-rules no-define no-dependencies])
+
+## Keep this on a line of its own, since it must be found and processed
+## by the 'update-copyright' rule in our Makefile.
+RELEASE_YEAR=2012
+AC_SUBST([RELEASE_YEAR])
+
+# The API version is the base version.  We must guarantee
+# compatibility for all releases with the same API version.
+# Our current rule is that:
+# * All releases, including the prereleases, in an X.Y series
+#   are compatible.  So 1.5.1c is compatible with 1.5.
+# * Prereleases on the trunk are all incompatible -- 1.5b and 1.5c
+#   aren't the same.
+APIVERSION=`echo "$VERSION" | sed -e 's/^\([[0-9]]*\.[[0-9]]*[[a-z]]*\).*$/\1/'`
+AC_SUBST([APIVERSION])
+
+AC_SUBST([pkgvdatadir], ["\${datadir}/$PACKAGE-$APIVERSION"])
+AC_SUBST([scriptdir], ["\${pkgvdatadir}"])
+AC_SUBST([amdir], ["\${pkgvdatadir}/am"])
+AC_SUBST([automake_acdir], ["\${datadir}/aclocal-$APIVERSION"])
+AC_SUBST([system_acdir], ["\${datadir}/aclocal"])
+
+# $AUTOMAKE and $ACLOCAL are always run after a "cd $top_srcdir",
+# hence '.' is really what we want for perllibdir, libdir, and acdir.
+ACLOCAL="perllibdir=\"`pwd`/lib$PATH_SEPARATOR./lib\" \"`pwd`/aclocal\" --acdir=m4 -I m4"
+AUTOMAKE="perllibdir=\"`pwd`/lib$PATH_SEPARATOR./lib\" \"`pwd`/automake\" --libdir=lib"
+
+AC_PATH_PROG([PERL], [perl])
+if test -z "$PERL"; then
+   AC_MSG_ERROR([perl not found])
+fi
+# Save details about the selected perl interpreter in config.log.
+AM_RUN_LOG([$PERL --version])
+$PERL -e 'require 5.006;' || {
+   AC_MSG_ERROR(
+[perl 5.6 or better is required; perl 5.8.2 or better
+is recommended.  If you have several perl versions
+installed, select the one Automake should use using
+  ./configure PERL=/path/to/perl])
+}
+
+# We require ithreads support, and version 5.7.2 for CLONE.
+AC_CACHE_CHECK([whether $PERL supports ithreads], [am_cv_prog_PERL_ithreads],
+[if $PERL -e '
+    require 5.007_002;
+    use Config;
+    if ($Config{useithreads})
+      {
+       require threads;
+       import threads;
+       require Thread::Queue;
+       import Thread::Queue;
+       exit 0;
+      }
+    exit 1;' >&AS_MESSAGE_LOG_FD 2>&1
+then
+  am_cv_prog_PERL_ithreads=yes
+else
+  am_cv_prog_PERL_ithreads=no
+fi])
+if test $am_cv_prog_PERL_ithreads = yes; then
+  PERL_THREADS=1;
+else
+  PERL_THREADS=0;
+fi
+AC_SUBST([PERL_THREADS])
+
+# The test suite will skip some tests if tex is absent.
+AC_CHECK_PROG([TEX], [tex], [tex])
+# Save details about the selected TeX program in config.log.
+# Redirect input from /dev/null, as TeX might otherwise hang waiting
+# for input from the terminal.
+AM_RUN_LOG([$TEX --version </dev/null])
+
+# The test suite will skip some tests if no lex or yacc program is
+# available.
+# We don't use AC_PROG_LEX nor AC_PROG_YACC here because:
+#  1. we don't want flex (resp. bison) to be preferred to system lex
+#     (resp. system yacc);
+#  2. we don't want $LEX (resp. $YACC) to be defined to ':' (resp. 'yacc')
+#     by default;
+#  3. we prefer not to have the variables YFLAGS, LEX_OUTPUT_ROOT and
+#     LEXLIB to be calculated and/or AC_SUBST'd;
+#  4. we prefer that the YACC and LEX variables are not reported in the
+#     configure help screen.
+AC_CHECK_PROGS([YACC], [yacc byacc 'bison -y'], [false])
+AC_CHECK_PROGS([LEX], [lex flex], [false])
+
+# Test for Autoconf.  We run Autoconf in a subdirectory to ease
+# deletion of any files created (such as those added to
+# autom4te.cache).  We used to perform only the last of the three
+# following tests, but some users were unable to figure out that their
+# installation was broken since --version appeared to work.
+
+required_autoconf_version=2.62
+AC_CACHE_CHECK([whether autoconf is installed], [am_cv_autoconf_installed],
+[if AM_RUN_LOG([$am_AUTOCONF --version]);
+then
+  am_cv_autoconf_installed=yes
+else
+  am_cv_autoconf_installed=no
+fi])
+if test "$am_cv_autoconf_installed" = no; then
+  AC_MSG_ERROR([Autoconf $required_autoconf_version or better is required.
+    Please make sure it is installed and in your PATH.])
+fi
+
+AC_CACHE_CHECK([whether autoconf works], [am_cv_autoconf_works],
+[mkdir conftest
+echo 'AC''_INIT' > conftest/conftest.ac
+if AM_RUN_LOG([cd conftest && $am_AUTOCONF -o /dev/null conftest.ac]);
+then
+  am_cv_autoconf_works=yes
+else
+  am_cv_autoconf_works=no
+fi
+rm -rf conftest])
+if test "$am_cv_autoconf_works" = no; then
+  AC_MSG_ERROR([The installed version of autoconf does not work.
+    Please check config.log for error messages before this one.])
+fi
+
+AC_CACHE_CHECK([whether autoconf is recent enough], [am_cv_autoconf_version],
+[mkdir conftest
+dnl Creative quoting required to avoid spurious expansion of AC_PREREQ macro
+echo 'AC'"_PREREQ([[$required_autoconf_version]])" > conftest/conftest.ac
+if AM_RUN_LOG([cd conftest && $am_AUTOCONF -o /dev/null conftest.ac]);
+then
+  am_cv_autoconf_version=yes
+else
+  am_cv_autoconf_version=no
+fi
+rm -rf conftest])
+if test "$am_cv_autoconf_version" = no; then
+  AC_MSG_ERROR([Autoconf $required_autoconf_version or better is required.])
+fi
+
+# Test for ln.  We need use it to install the versioned binaries.
+AC_MSG_CHECKING([whether ln works])
+AC_CACHE_VAL([am_cv_prog_ln], [
+rm -f conftest conftest.file
+: >conftest.file
+if ln conftest.file conftest 2>/dev/null; then
+  am_cv_prog_ln=ln
+else
+  am_cv_prog_ln='cp -p'
+fi
+rm -f conftest conftest.file])
+AC_SUBST([LN], [$am_cv_prog_ln])
+result=no
+test "x$am_cv_prog_ln" = xln && result=yes
+AC_MSG_RESULT([$result])
+
+# The amount we should wait after modifying files depends on the platform.
+# On Windows '95, '98 and ME, files modifications have 2-seconds
+# granularity and can be up to 3 seconds in the future w.r.t. the
+# system clock.  When it is important to ensure one file is older
+# than another we wait at least 5 seconds between creations.
+case $build in
+  *-pc-msdosdjgpp) MODIFICATION_DELAY=5;;
+  *)               MODIFICATION_DELAY=2;;
+esac
+AC_SUBST([MODIFICATION_DELAY])
+
+## ------------------------------------------- ##
+##  Test for things needed by the test suite.  ##
+## ------------------------------------------- ##
+
+AC_PROG_EGREP
+AC_PROG_FGREP
+
+dnl FIXME: could we extract this in a simpler way through autoconf
+dnl FIXME: idioms or internals?
+AC_DEFUN(
+  [_AM_INIT_BOURNE_COMPATIBLE_VAR],
+  [am_bourne_compatible="AS_ESCAPE(_m4_expand([AS_BOURNE_COMPATIBLE]))"])
+
+dnl
+dnl Arguments to this macro:
+dnl
+dnl   $1 - shell to test
+dnl   $2 - description of the tested feature
+dnl   $3 - shell code used to check the feature; to indicate success,
+dnl        it can either exit with status 77, or have the last command
+dnl        returning with exit status of zero
+dnl   $4 - shell code to execute if the check on the shell is successful
+dnl        (defaults to nothing)
+dnl   $5 - shell code to execute if the check on the shell is not
+dnl        successful (defaults to nothing)
+dnl
+AC_DEFUN([_AM_CHECK_SHELL_FEATURE],
+  [AC_REQUIRE([_AM_INIT_BOURNE_COMPATIBLE_VAR])
+  AC_MSG_CHECKING([whether $1 $2])
+  if { $1 -c "$am_bourne_compatible
+AS_ESCAPE([$3])
+test \$? -eq 0 || exit 1
+# Use 77 to indicate success (rather than 0), in case some shell
+# acts like Solaris 10's /bin/sh, exiting successfully on some
+# syntax errors.
+exit 77" >&AS_MESSAGE_LOG_FD 2>&1; test $? -eq 77; }
+  then
+    AC_MSG_RESULT([yes])
+    $4
+  else
+    AC_MSG_RESULT([no])
+    $5
+  fi])
+
+# AM_CHECK_CANDIDATE_TEST_SHELL(SHELL-PATH)
+# -----------------------------------------
+#
+# Check if the given shell is good enough to run our test scripts.
+# Inspired to gnulib's 'tests/init.sh'.
+#
+# We require POSIX and XSI features (e.g., '$(...)' for command
+# substitutions, '$((...))' for shell arithmetic, and support for
+# '${var#...}' and '${var%...}' parameter expansions).
+#
+# We require that the shell can correctly trap EXIT when 'set -e' is in
+# effect (OSF1/Tru64 sh failed to do so, see commit v1.10b-52-g9fe8259).
+#
+# We also prefer shells that, when 'set -x' is in effect, do not also
+# redirect traces upon stderr redirections.  For example,
+#  $ set -x; echo x 2>file
+# would emit "+ echo x" into file with older zsh versions.  Similarly,
+#   $ set -x; P=1 true 2>file
+# would emit "P=1" into file with /usr/xpg4/bin/sh from Solaris 10 and
+# /bin/sh from SunOS 5.11 and OpenBSD 4.7.
+#
+# Finally, we look for weird bugs and portability problems mentioned in
+# the Autoconf manual, and reject shells that suffers from them. (TODO)
+#
+# Use '$am_score' to indicate the degree of acceptability of the shell.
+# A score of "10" means that the shell is good enough for our needs;
+# a score of "9" means that the shell has some minor bugs or limitation,
+# but is still (barely) acceptable for our uses.  Any other score means
+# that the shell is broken or unfit.
+#
+AC_DEFUN([_AM_CHECK_CANDIDATE_SHELL],
+  [am_score=10
+  while :; do
+
+    _AM_CHECK_SHELL_FEATURE([$1],
+      [supports \$(cmd)],
+      [test "$(echo x)" = x],
+      [], [am_score=1; break])
+
+    _AM_CHECK_SHELL_FEATURE([$1],
+      [supports \$((expr))],
+      [test $((1 + 2 * 3)) = 7],
+      [], [am_score=1; break])
+
+    _AM_CHECK_SHELL_FEATURE([$1],
+      [supports \${var@%:@glob}],
+      [v=a/b/c; test ${v@%:@*/} = b/c],
+      [], [am_score=1; break])
+
+    _AM_CHECK_SHELL_FEATURE([$1],
+      [supports \${var@%:@@%:@glob}],
+      [v=a/b/c; test ${v@%:@@%:@*/} = c],
+      [], [am_score=1; break])
+
+    _AM_CHECK_SHELL_FEATURE([$1],
+      [supports \${var%glob}],
+      [v=a.b.c; test ${v%.*} = a.b],
+      [], [am_score=1; break])
+
+    _AM_CHECK_SHELL_FEATURE([$1],
+      [supports \${var%%glob}],
+      [v=a.b.c; test ${v%%.*} = a],
+      [], [am_score=1; break])
+
+    _AM_CHECK_SHELL_FEATURE([$1],
+      ["set -e" preserves exit traps],
+      [set -e; trap 'exit $?' 0; (exit 77); exit 77],
+      [], [am_score=1; break])
+
+    _AM_CHECK_SHELL_FEATURE([$1],
+      ["set -x" corrupts stderr],
+      [(set -x; P=1 true 2>&3) 3>&1 2>/dev/null | grep P=1],
+      [am_score=9], [])
+
+    break
+  done])
+
+# These messages only goes to the config.log file.
+AC_MSG_NOTICE([will now look for a sturdy POSIX shell, for our testsuite])
+
+AC_CACHE_VAL(
+  [ac_cv_AM_TEST_RUNNER_SHELL],
+  [if test "$AM_TEST_RUNNER_SHELL"; then
+    # Let the user override it.
+    ac_cv_AM_TEST_RUNNER_SHELL=$AM_TEST_RUNNER_SHELL
+  else
+    ac_cv_AM_TEST_RUNNER_SHELL=no
+    am_candidate_shells=${CONFIG_SHELL-}
+    # For the benefit of Solaris.
+    am_PATH=$PATH$PATH_SEPARATOR/usr/xpg6/bin$PATH_SEPARATOR/usr/xpg4/bin
+    for am_sh in sh sh5 dash ash bash zsh ksh pdksh; do
+      AC_PATH_PROG([am_candidate_sh], [$am_sh], [], [$am_PATH])
+      if test -n "$am_candidate_sh"; then
+        am_candidate_shells="$am_candidate_shells $am_candidate_sh"
+      fi
+      AM_SUBST_NOTMAKE([am_candidate_sh])
+      # Must nullify these in order not to interfere with the checks in
+      # the next loop.
+      AS_UNSET([am_candidate_sh])
+      AS_UNSET([ac_cv_path_am_candidate_sh])
+    done
+    AS_UNSET([am_PATH]) # Not required anymore
+    for am_sh in $am_candidate_shells; do
+      am_score=0
+      _AM_CHECK_CANDIDATE_SHELL([$am_sh])
+      if test $am_score -eq 9; then
+        # The shell is barely acceptable for our needs.  We might
+        # still find one that is even better, so continue looking.
+        AC_MSG_NOTICE([shell $am_sh is acceptable, but we might do better])
+        ac_cv_AM_TEST_RUNNER_SHELL=$am_sh
+      elif test $am_score -eq 10; then
+        AC_MSG_NOTICE([shell $am_sh is good enough, stop looking])
+        ac_cv_AM_TEST_RUNNER_SHELL=$am_sh
+        break
+      fi
+    done
+  fi
+  AM_TEST_RUNNER_SHELL=$ac_cv_AM_TEST_RUNNER_SHELL])
+
+if test $AM_TEST_RUNNER_SHELL = no; then
+  AC_MSG_FAILURE([m4_normalize([no POSIX shell found that is good
+                                enough to be used in our testsuite])])
+else
+  AC_MSG_NOTICE([will use $AM_TEST_RUNNER_SHELL as the testsuite shell])
+fi
+
+AC_ARG_VAR([AM_TEST_RUNNER_SHELL],
+           [a sturdy POSIX shell for our testsuite])
+
+## ---------------------- ##
+##  Create output files.  ##
+## ---------------------- ##
+
+
+###########################################################################
+
+# Look for C, C++ and fortran compilers to be used in the testsuite.
+
+dnl We don't want to abort our configuration script if no C compiler is
+dnl available, as such a compiler is only required to run part of the
+dnl testsuite, not to build or install Automake.  Ditto for C++, Fortran
+dnl and Fortran 77 compilers.  Unfortunately, autoconf does not offer an
+dnl easy way to obtain this behaviour, so we'll need a few hacks.
+
+dnl We want the body of this macro to expand as a single shell statement,
+dnl thus we wrap it into { ... } brackets.
+AC_DEFUN([_AM_WRAP_MSG_ERROR], [ {
+  AC_MSG_WARN([$1])
+  am__failed=yes
+  break
+} ])
+
+AC_DEFUN([_AM_COMPILER_CAN_FAIL], [
+  m4_pushdef([AC_MSG_FAILURE], m4_defn([_AM_WRAP_MSG_ERROR]))
+  m4_pushdef([AC_MSG_ERROR],   m4_defn([_AM_WRAP_MSG_ERROR]))
+  am__failed=no
+  while :; do
+     $1
+     break
+  done
+  AS_IF([test $am__failed = yes], [$2])
+  # We have to clear these cache variables, so that future checks on
+  # compilers for different languages won't be confused.
+  unset ac_cv_objext ac_cv_exeext
+  # We also need to meddle with the autoconf internals to ensure that
+  # checks to find object and executable extensions will be run anew.
+  # FIXME: In the long run, the better thing to do would be to fix
+  # FIXME: autoconf instead ...
+  m4_undefine([m4_provide(_AC_COMPILER_OBJEXT)])
+  m4_undefine([m4_provide(_AC_COMPILER_EXEEXT)])
+  m4_popdef([AC_MSG_FAILURE])
+  m4_popdef([AC_MSG_ERROR])
+])
+
+AC_DEFUN([_AM_SKIP_COMP_TESTS],
+  [AC_MSG_NOTICE([tests requiring the $1 compiler will be skipped])])
+
+# Prefer generic compilers to GNU ones when possible.  This will ensure
+# more testsuite coverage "in the wild".
+# Note that we don't look for the MSVC C/C++ compiler here.  This is
+# deliberate; for more discussion and rationale, see:
+# <http://lists.gnu.org/archive/html/automake-patches/2012-01/msg00130.html>
+
+AC_MSG_NOTICE([will now look for generic compilers])
+
+# C compiler.
+_AM_COMPILER_CAN_FAIL(dnl
+  [AC_PROG_CC([cc gcc])],
+  [CC=false; _AM_SKIP_COMP_TESTS([C])])
+
+AS_IF([test x"$GCC" = x"yes"], [am_CC_is_GNU=yes], [am_CC_is_GNU=no])
+
+# The list of C++ compilers here has been copied, pasted and edited
+# from 'lib/autoconf/c.m4:AC_PROG_CXX' in the Autoconf distribution.
+# Keep it in sync, or better again, find out a way to avoid this code
+# duplication.
+_AM_COMPILER_CAN_FAIL([AC_PROG_CXX(dnl
+  [aCC CC FCC KCC RCC xlC_r xlC c++ cxx cc++ gpp g++])],
+  [CXX=false; _AM_SKIP_COMP_TESTS([C++])])
+
+AS_IF([test x"$GXX" = x"yes"], [am_CXX_is_GNU=yes], [am_CXX_is_GNU=no])
+
+# The lists of Fortran compilers here has been copied, pasted and edited
+# from file 'lib/autoconf/fortran.m4' in the Autoconf distribution.
+# Keep it in sync, or better again, find out a way to avoid this code
+# duplication.
+
+_AM_COMPILER_CAN_FAIL([AC_PROG_FC(dnl
+  [xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor] dnl
+  [xlf90 f90 pgf90 pghpf epcf90 g95 gfortran])],
+  [FC=false; _AM_SKIP_COMP_TESTS([Fortran])])
+
+AS_IF([test x"$GFC" = x"yes"], [am_FC_is_GNU=yes], [am_FC_is_GNU=no])
+
+_AM_COMPILER_CAN_FAIL([AC_PROG_F77(dnl
+  [xlf f77 frt pgf77 cf77 fort77 fl32 af77 g77 gfortran])],
+  [F77=false; _AM_SKIP_COMP_TESTS([Fortran 77])])
+
+AS_IF([test x"$G77" = x"yes"], [am_F77_is_GNU=yes], [am_F77_is_GNU=no])
+
+# Some tests will need the GNU compilers.  Searching for them here would
+# be overkill, since our testsuite already handles their search and setup
+# pretty well.  But in case the compilers already found are the GNU ones,
+# we want to use them in the testsuite where GNU compilers are required.
+# Also, in case the compilers detected above (at configure time) are not
+# the GNU ones, we cannot use the values of CFLAGS, CXXFLAGS, FCFLAGS and
+# FFLAGS detected for them with the GNU compilers too, since it's likely
+# they won't be compatible.  So we allow the user to define variants of
+# these variables for the GNU compilers separately.
+
+AC_MSG_NOTICE([will now look for GNU compilers])
+
+# GNU C compiler.
+AC_ARG_VAR([GNU_CC],     [GNU C compiler])
+AC_ARG_VAR([GNU_CFLAGS], [GNU C compiler flags])
+if test $am_CC_is_GNU = yes; then
+  AC_MSG_NOTICE([$CC is already a GNU C compiler])
+  GNU_CC=$CC GNU_CFLAGS=${GNU_CFLAGS-$CFLAGS}
+else
+  AC_CHECK_TOOLS([GNU_CC], [gcc], [false])
+fi
+AS_IF([AM_RUN_LOG([$GNU_CC --version && $GNU_CC -v])], [],
+      [AC_MSG_WARN([botched installation for GNU C compiler])
+       _AM_SKIP_COMP_TESTS([GNU C])])
+
+# GNU C++ compiler.
+AC_ARG_VAR([GNU_CXX],      [GNU C++ compiler])
+AC_ARG_VAR([GNU_CXXFLAGS], [GNU C++ compiler flags])
+if test $am_CXX_is_GNU = yes; then
+  AC_MSG_NOTICE([$CXX is already a GNU C++ compiler])
+  GNU_CXX=$CXX
+  GNU_CXXFLAGS=${GNU_CXXFLAGS-$CXXFLAGS}
+else
+  AC_CHECK_TOOLS([GNU_CXX], [g++ gpp], [false])
+fi
+AS_IF([AM_RUN_LOG([$GNU_CXX --version && $GNU_CXX -v])], [],
+      [AC_MSG_WARN([botched installation for GNU C++ compiler])
+       _AM_SKIP_COMP_TESTS([GNU C++])])
+
+# GNU Fortran compiler.
+AC_ARG_VAR([GNU_FC],      [GNU Fortran compiler])
+AC_ARG_VAR([GNU_FCFLAGS], [GNU Fortran compiler flags])
+if test $am_FC_is_GNU = yes; then
+  AC_MSG_NOTICE([$FC is already a GNU Fortran compiler])
+  GNU_FC=$FC
+  GNU_FCFLAGS=${GNU_FCFLAGS-$FCFLAGS}
+else
+  AC_CHECK_TOOLS([GNU_FC], [gfortran], [false])
+fi
+AS_IF([AM_RUN_LOG([$GNU_FC --version && $GNU_FC -v])], [],
+      [AC_MSG_WARN([botched installation for GNU Fortran compiler])
+       _AM_SKIP_COMP_TESTS([GNU Fortran])])
+
+# GNU Fortran 77 compiler.
+AC_ARG_VAR([GNU_F77],    [GNU Fortran 77 compiler])
+AC_ARG_VAR([GNU_FFLAGS], [GNU Fortran 77 compiler flags])
+if test $am_F77_is_GNU = yes; then
+  AC_MSG_NOTICE([$F77 is already a GNU Fortran 77 compiler])
+  GNU_F77=$F77
+  GNU_FFLAGS=${GNU_FFLAGS-$FFLAGS}
+else
+  AC_CHECK_TOOLS([GNU_F77], [g77 gfortran], [false])
+fi
+AS_IF([AM_RUN_LOG([$GNU_F77 --version && $GNU_F77 -v])], [],
+      [AC_MSG_WARN([botched installation for GNU Fortran 77 compiler])
+      _AM_SKIP_COMP_TESTS([GNU Fortran 77])])
+
+# GNU Java compiler.
+AC_ARG_VAR([GNU_GCJ], [GNU Java compiler])
+AC_ARG_VAR([GNU_GCJFLAGS], [GNU Java compiler flags])
+AC_CHECK_TOOLS([GNU_GCJ], [gcj], [false])
+AS_IF([AM_RUN_LOG([$GNU_GCJ --version && $GNU_GCJ -v])], [],
+      [AC_MSG_WARN([botched installation for GNU Java compiler])
+      _AM_SKIP_COMP_TESTS([GNU Java])])
+
+# If we have been able to find at least a working compiler above, we
+# know what the object and executable extensions for this platform are.
+OBJEXT=${ac_cv_objext-UNKNOWN}
+EXEEXT=${ac_cv_exeext-UNKNOWN}
+AC_SUBST([OBJEXT])
+AC_SUBST([EXEEXT])
+
+###########################################################################
+
+AC_CONFIG_FILES([Makefile])
+
+AC_CONFIG_LINKS([GNUmakefile:GNUmakefile])
+AC_CONFIG_LINKS([defs:defs])
+
+AC_CONFIG_FILES([t/wrap/aclocal-${APIVERSION}:t/wrap/aclocal.in],
+                [chmod +x t/wrap/aclocal-${APIVERSION}],
+               [APIVERSION=$APIVERSION])
+AC_CONFIG_FILES([t/wrap/automake-${APIVERSION}:t/wrap/automake.in],
+                [chmod +x t/wrap/automake-${APIVERSION}],
+               [APIVERSION=$APIVERSION])
+
+AC_OUTPUT
+
+# Inform the user if this version of automake is a beta release or
+# a development snapshot.
+# According to HACKING, the version of a development snapshot should
+# end with an "odd" letter (a, c, ...), the version of a test release
+# should end wit an "even" letter (b, d, ...).
+
+am_stable_version_rx='[[1-9]\.[0-9]+(\.[0-9]+)?]'
+am_beta_version_rx="[$am_stable_version_rx[bdfhjlnprtvxz]]"
+
+am_release_type=`AS_ECHO(["$PACKAGE_VERSION"]) | LC_ALL=C awk ["
+  /^$am_stable_version_rx$/ { print \"stable\"; exit(0); }
+  /^$am_beta_version_rx$/ { print \"beta version\"; exit(0); }
+  { print \"development snapshot\"; }"]`
+
+test "$am_release_type" = stable || cat <<EOF
+
+WARNING: You are about to use a $am_release_type of automake.
+WARNING: It might easily suffer from new bugs or regressions.
+WARNING: You are strongly advised not to use it in production code.
+
+Please report bugs, problems and feedback to <AC_PACKAGE_BUGREPORT>.
+EOF
+
+AS_EXIT([0])
diff --git a/contrib/README b/contrib/README
new file mode 100644 (file)
index 0000000..a4d7eeb
--- /dev/null
@@ -0,0 +1,26 @@
+This is the 'contrib' directory of the GNU Automake distribution.
+
+Here you'll find additions to the Automake base distribution, in form of
+makefile fragments, m4 macros, scripts, documentation, et cetera.  Such
+addition that might be useful for a significant percentage of its general
+audience, but (for one reason or another) are not deemed appropriate for
+inclusion into the Automake core.
+
+There are several reasons for which a feature can be kept in contrib:
+
+  1. The long-term usefulness of the feature is debatable and uncertain;
+     on-field and real-word testing are necessary to prove or disprove
+     its usefulness, before the feature can be committed into the Automake
+     core (as doing so too early would later force us to continue the
+     support for backward-compatibility, even if the features proves
+     flawed or fails to attract widespread use).
+
+  2. The APIs or overall design of the feature are still unstable, and
+     need on-field testing to iron warts and usability bugs, or uncover
+     potential flaws.
+
+  3. The feature was an historical one, mostly obsoleted but still used
+     "here and there" in the wild; so we want to to deprecate it and
+     remove it from the Automake core, but cannot remove it altogether,
+     for the sake of those still-existing usage.  So it gets moved in
+     contrib.
diff --git a/contrib/check-html.am b/contrib/check-html.am
new file mode 100644 (file)
index 0000000..4495ac0
--- /dev/null
@@ -0,0 +1,58 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## Makefile.am fragment to produce HTML output from RST-formatted
+## log files produced by the parallel-tests output.
+## This fragment was part of the automake core in the 1.11.x release
+## series, but has been then moved to contrib.
+
+TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html)
+
+mostlyclean-local: mostlyclean-check-html
+.PHONY: mostlyclean-check-html
+mostlyclean-check-html:
+## Expand $(TEST_LOGS) only once, to avoid exceeding line length limits.
+       list='$(TEST_LOGS:.log=.html)'; test -z "$$list" || rm -f $$list
+       rm -f $(TEST_SUITE_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 $< >$@.tmp
+       @mv $@.tmp $@
+
+# 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 recheck-html:
+       @target=`echo $@ | sed 's/-html$$//'`; \
+       rv=0; $(MAKE) $(AM_MAKEFLAGS) $$target || rv=$$?; \
+## The nullification of $(TEST_LOGS) is required to ensure that
+## "make recheck-html" do not try to uselessly re-run tests.
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) TEST_LOGS= || exit 4; \
+       exit $$rv
+
+.PHONY: check-html recheck-html
+.MAKE: check-html recheck-html
diff --git a/contrib/multilib/README b/contrib/multilib/README
new file mode 100644 (file)
index 0000000..35c726f
--- /dev/null
@@ -0,0 +1,9 @@
+Minimal support for multilib builds.
+
+For a little more information, see:
+<http://airs.com/ian/configure/configure_8.html>
+
+The master (and probably more up-to-date) copies of the 'config-ml.in'
+and 'symlink-tree' files are maintained in the GCC development tree
+at <http://gcc.gnu.org/svn.html>.  The same is probably true also for
+the 'multi.m4' file.
diff --git a/contrib/multilib/config-ml.in b/contrib/multilib/config-ml.in
new file mode 100644 (file)
index 0000000..0734a95
--- /dev/null
@@ -0,0 +1,876 @@
+# Configure fragment invoked in the post-target section for subdirs
+# wanting multilib support.
+#
+# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+#
+# This file 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 of the License, 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+#
+# Please report bugs to <gcc-bugs@gnu.org>
+# and send patches to <gcc-patches@gnu.org>.
+
+# It is advisable to support a few --enable/--disable options to let the
+# user select which libraries s/he really wants.
+#
+# Subdirectories wishing to use multilib should put the following lines
+# in the "post-target" section of configure.in.
+#
+# if [ "${srcdir}" = "." ] ; then
+#   if [ "${with_target_subdir}" != "." ] ; then
+#     . ${with_multisrctop}../../config-ml.in
+#   else
+#     . ${with_multisrctop}../config-ml.in
+#   fi
+# else
+#   . ${srcdir}/../config-ml.in
+# fi
+#
+#
+# Things are complicated because 6 separate cases must be handled:
+# 2 (native, cross) x 3 (absolute-path, relative-not-dot, dot) = 6.
+#
+# srcdir=. is special.  It must handle make programs that don't handle VPATH.
+# To implement this, a symlink tree is built for each library and for each
+# multilib subdir.
+#
+# The build tree is laid out as
+#
+# ./
+#   newlib
+#   m68020/
+#          newlib
+#          m68881/
+#                 newlib
+#
+# The nice feature about this arrangement is that inter-library references
+# in the build tree work without having to care where you are.  Note that
+# inter-library references also work in the source tree because symlink trees
+# are built when srcdir=.
+#
+# Unfortunately, trying to access the libraries in the build tree requires
+# the user to manually choose which library to use as GCC won't be able to
+# find the right one.  This is viewed as the lesser of two evils.
+#
+# Configure variables:
+# ${with_target_subdir} = "." for native, or ${target_alias} for cross.
+# Set by top level Makefile.
+# ${with_multisrctop} = how many levels of multilibs there are in the source
+# tree.  It exists to handle the case of configuring in the source tree:
+# ${srcdir} is not constant.
+# ${with_multisubdir} = name of multilib subdirectory (eg: m68020/m68881).
+#
+# Makefile variables:
+# MULTISRCTOP = number of multilib levels in source tree (+1 if cross)
+# (FIXME: note that this is different than ${with_multisrctop}.  Check out.).
+# MULTIBUILDTOP = number of multilib levels in build tree
+# MULTIDIRS = list of multilib subdirs (eg: m68000 m68020 ...)
+# (only defined in each library's main Makefile).
+# MULTISUBDIR = installed subdirectory name with leading '/' (eg: /m68000)
+# (only defined in each multilib subdir).
+
+# FIXME: Multilib is currently disabled by default for everything other than
+# newlib.  It is up to each target to turn on multilib support for the other
+# libraries as desired.
+
+# Autoconf incoming variables:
+# srcdir, host, ac_configure_args
+#
+# We *could* figure srcdir and host out, but we'd have to do work that
+# our caller has already done to figure them out and requiring these two
+# seems reasonable.
+# Note that `host' in this case is GCC's `target'.  Target libraries are
+# configured for a particular host.
+
+Makefile=${ac_file-Makefile}
+ml_config_shell=${CONFIG_SHELL-/bin/sh}
+ml_realsrcdir=${srcdir}
+
+# Scan all the arguments and set all the ones we need.
+
+ml_verbose=--verbose
+for option in ${ac_configure_args}
+do
+  # strip single quotes surrounding individual options
+  case $option in
+  \'*\') eval option=$option ;;
+  esac
+
+  case $option in
+  --*) ;;
+  -*) option=-$option ;;
+  esac
+
+  case $option in
+  --*=*)
+       optarg=`echo $option | sed -e 's/^[^=]*=//'`
+       ;;
+  esac
+
+  case $option in
+  --disable-*)
+       enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
+       eval $enableopt=no
+       ;;
+  --enable-*)
+       case "$option" in
+       *=*)    ;;
+       *)      optarg=yes ;;
+       esac
+       enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
+       # enable_shared and enable_static are handled by configure.
+       # Don't undo its work.
+       case $enableopt in
+       enable_shared | enable_static) ;;
+       *) eval $enableopt="$optarg" ;;
+       esac
+       ;;
+  --norecursion | --no-recursion)
+       ml_norecursion=yes
+       ;;
+  --silent | --sil* | --quiet | --q*)
+       ml_verbose=--silent
+       ;;
+  --verbose | --v | --verb*)
+       ml_verbose=--verbose
+       ;;
+  --with-*)
+       case "$option" in
+       *=*)    ;;
+       *)      optarg=yes ;;
+       esac
+       withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
+       eval $withopt="$optarg"
+       ;;
+  --without-*)
+       withopt=`echo ${option} | sed 's:^--::;s:out::;s:-:_:g'`
+       eval $withopt=no
+       ;;
+  esac
+done
+
+# Only do this if --enable-multilib.
+if [ "${enable_multilib}" = yes ]; then
+
+# Compute whether this is the library's top level directory
+# (ie: not a multilib subdirectory, and not a subdirectory like newlib/src).
+# ${with_multisubdir} tells us we're in the right branch, but we could be
+# in a subdir of that.
+# ??? The previous version could void this test by separating the process into
+# two files: one that only the library's toplevel configure.in ran (to
+# configure the multilib subdirs), and another that all configure.in's ran to
+# update the Makefile.  It seemed reasonable to collapse all multilib support
+# into one file, but it does leave us with having to perform this test.
+ml_toplevel_p=no
+if [ -z "${with_multisubdir}" ]; then
+  if [ "${srcdir}" = "." ]; then
+    # Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
+    # ${with_target_subdir} = "." for native, otherwise target alias.
+    if [ "${with_target_subdir}" = "." ]; then
+      if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
+       ml_toplevel_p=yes
+      fi
+    else
+      if [ -f ${ml_realsrcdir}/../../config-ml.in ]; then
+       ml_toplevel_p=yes
+      fi
+    fi
+  else
+    # Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
+    if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
+      ml_toplevel_p=yes
+    fi
+  fi
+fi
+
+# If this is the library's top level directory, set multidirs to the
+# multilib subdirs to support.  This lives at the top because we need
+# `multidirs' set right away.
+
+if [ "${ml_toplevel_p}" = yes ]; then
+
+multidirs=
+for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
+  dir=`echo $i | sed -e 's/;.*$//'`
+  if [ "${dir}" = "." ]; then
+    true
+  else
+    if [ -z "${multidirs}" ]; then
+      multidirs="${dir}"
+    else
+      multidirs="${multidirs} ${dir}"
+    fi
+  fi
+done
+
+# Target libraries are configured for the host they run on, so we check
+# $host here, not $target.
+
+case "${host}" in
+arm-*-*)
+       if [ x"$enable_fpu" = xno ]
+       then
+         old_multidirs=${multidirs}
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "${x}" in
+             *fpu*) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x"$enable_26bit" = xno ]
+       then
+         old_multidirs=${multidirs}
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "${x}" in
+             *26bit*) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x"$enable_underscore" = xno ]
+       then
+         old_multidirs=${multidirs}
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "${x}" in
+             *under*) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x"$enable_interwork" = xno ]
+       then
+         old_multidirs=${multidirs}
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "${x}" in
+             *interwork*) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_biendian = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *le* ) : ;;
+             *be* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x"$enable_nofmult" = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *nofmult* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       ;;
+m68*-*-*)
+       if [ x$enable_softfloat = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *soft-float* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_m68881 = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *m68881* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_m68000 = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *m68000* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_m68020 = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *m68020* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       ;;
+mips*-*-*)
+       if [ x$enable_single_float = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *single* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_biendian = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *el* ) : ;;
+             *eb* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_softfloat = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *soft-float* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       ;;
+powerpc*-*-* | rs6000*-*-*)
+       if [ x$enable_aix64 = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *ppc64* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_pthread = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *pthread* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_softfloat = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *soft-float* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_powercpu = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             power | */power | */power/* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_powerpccpu = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *powerpc* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_powerpcos = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *mcall-linux* | *mcall-solaris* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_biendian = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *mlittle* | *mbig* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       if [ x$enable_sysv = xno ]
+       then
+         old_multidirs="${multidirs}"
+         multidirs=""
+         for x in ${old_multidirs}; do
+           case "$x" in
+             *mcall-sysv* ) : ;;
+             *) multidirs="${multidirs} ${x}" ;;
+           esac
+         done
+       fi
+       ;;
+esac
+
+# Remove extraneous blanks from multidirs.
+# Tests like `if [ -n "$multidirs" ]' require it.
+multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
+
+# Add code to library's top level makefile to handle building the multilib
+# subdirs.
+
+cat > Multi.tem <<\EOF
+
+PWD_COMMAND=$${PWDCMD-pwd}
+
+# FIXME: There should be an @-sign in front of the `if'.
+# Leave out until this is tested a bit more.
+multi-do:
+       if [ -z "$(MULTIDIRS)" ]; then \
+         true; \
+       else \
+         rootpre=`${PWD_COMMAND}`/; export rootpre; \
+         srcrootpre=`cd $(srcdir); ${PWD_COMMAND}`/; export srcrootpre; \
+         lib=`echo "$${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$$,\1,'`; \
+         compiler="$(CC)"; \
+         for i in `$${compiler} --print-multi-lib 2>/dev/null`; do \
+           dir=`echo $$i | sed -e 's/;.*$$//'`; \
+           if [ "$${dir}" = "." ]; then \
+             true; \
+           else \
+             if [ -d ../$${dir}/$${lib} ]; then \
+               flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
+               if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
+                               CFLAGS="$(CFLAGS) $${flags}" \
+                               CCASFLAGS="$(CCASFLAGS) $${flags}" \
+                               FCFLAGS="$(FCFLAGS) $${flags}" \
+                               FFLAGS="$(FFLAGS) $${flags}" \
+                               ADAFLAGS="$(ADAFLAGS) $${flags}" \
+                               prefix="$(prefix)" \
+                               exec_prefix="$(exec_prefix)" \
+                               GCJFLAGS="$(GCJFLAGS) $${flags}" \
+                               GOCFLAGS="$(GOCFLAGS) $${flags}" \
+                               CXXFLAGS="$(CXXFLAGS) $${flags}" \
+                               LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
+                               LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
+                               LDFLAGS="$(LDFLAGS) $${flags}" \
+                               MULTIFLAGS="$${flags}" \
+                               DESTDIR="$(DESTDIR)" \
+                               INSTALL="$(INSTALL)" \
+                               INSTALL_DATA="$(INSTALL_DATA)" \
+                               INSTALL_PROGRAM="$(INSTALL_PROGRAM)" \
+                               INSTALL_SCRIPT="$(INSTALL_SCRIPT)" \
+                               $(DO)); then \
+                 true; \
+               else \
+                 exit 1; \
+               fi; \
+             else true; \
+             fi; \
+           fi; \
+         done; \
+       fi
+
+# FIXME: There should be an @-sign in front of the `if'.
+# Leave out until this is tested a bit more.
+multi-clean:
+       if [ -z "$(MULTIDIRS)" ]; then \
+         true; \
+       else \
+         lib=`${PWD_COMMAND} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
+         for dir in : $(MULTIDIRS); do \
+           test $$dir != : || continue; \
+EOF
+cat >>Multi.tem <<EOF
+           if [ -f ../\$\${dir}/\$\${lib}/${Makefile} ]; then \\
+EOF
+cat >>Multi.tem <<\EOF
+             if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) $(DO)); \
+             then true; \
+             else exit 1; \
+             fi; \
+           else true; \
+           fi; \
+         done; \
+       fi
+EOF
+
+cat ${Makefile} Multi.tem > Makefile.tem
+rm -f ${Makefile} Multi.tem
+mv Makefile.tem ${Makefile}
+
+fi # ${ml_toplevel_p} = yes
+
+if [ "${ml_verbose}" = --verbose ]; then
+  echo "Adding multilib support to ${Makefile} in ${ml_realsrcdir}"
+  if [ "${ml_toplevel_p}" = yes ]; then
+    echo "multidirs=${multidirs}"
+  fi
+  echo "with_multisubdir=${with_multisubdir}"
+fi
+
+if [ "${srcdir}" = "." ]; then
+  if [ "${with_target_subdir}" != "." ]; then
+    ml_srcdotdot="../"
+  else
+    ml_srcdotdot=""
+  fi
+else
+  ml_srcdotdot=""
+fi
+
+if [ -z "${with_multisubdir}" ]; then
+  ml_subdir=
+  ml_builddotdot=
+  : # ml_srcdotdot= # already set
+else
+  ml_subdir="/${with_multisubdir}"
+  # The '[^/][^/]*' appears that way to work around a SunOS sed bug.
+  ml_builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`/
+  if [ "$srcdir" = "." ]; then
+    ml_srcdotdot=${ml_srcdotdot}${ml_builddotdot}
+  else
+    : # ml_srcdotdot= # already set
+  fi
+fi
+
+if [ "${ml_toplevel_p}" = yes ]; then
+  ml_do='$(MAKE)'
+  ml_clean='$(MAKE)'
+else
+  ml_do=true
+  ml_clean=true
+fi
+
+# TOP is used by newlib and should not be used elsewhere for this purpose.
+# MULTI{SRC,BUILD}TOP are the proper ones to use.  MULTISRCTOP is empty
+# when srcdir != builddir.  MULTIBUILDTOP is always some number of ../'s.
+# FIXME: newlib needs to be updated to use MULTI{SRC,BUILD}TOP so we can
+# delete TOP.  Newlib may wish to continue to use TOP for its own purposes
+# of course.
+# MULTIDIRS is non-empty for the cpu top level Makefile (eg: newlib/Makefile)
+# and lists the subdirectories to recurse into.
+# MULTISUBDIR is non-empty in each cpu subdirectory's Makefile
+# (eg: newlib/h8300h/Makefile) and is the installed subdirectory name with
+# a leading '/'.
+# MULTIDO is used for targets like all, install, and check where
+# $(FLAGS_TO_PASS) augmented with the subdir's compiler option is needed.
+# MULTICLEAN is used for the *clean targets.
+#
+# ??? It is possible to merge MULTIDO and MULTICLEAN into one.  They are
+# currently kept separate because we don't want the *clean targets to require
+# the existence of the compiler (which MULTIDO currently requires) and
+# therefore we'd have to record the directory options as well as names
+# (currently we just record the names and use --print-multi-lib to get the
+# options).
+
+sed -e "s:^TOP[        ]*=[    ]*\([./]*\)[    ]*$:TOP = ${ml_builddotdot}\1:" \
+    -e "s:^MULTISRCTOP[        ]*=.*$:MULTISRCTOP = ${ml_srcdotdot}:" \
+    -e "s:^MULTIBUILDTOP[      ]*=.*$:MULTIBUILDTOP = ${ml_builddotdot}:" \
+    -e "s:^MULTIDIRS[  ]*=.*$:MULTIDIRS = ${multidirs}:" \
+    -e "s:^MULTISUBDIR[        ]*=.*$:MULTISUBDIR = ${ml_subdir}:" \
+    -e "s:^MULTIDO[    ]*=.*$:MULTIDO = $ml_do:" \
+    -e "s:^MULTICLEAN[         ]*=.*$:MULTICLEAN = $ml_clean:" \
+       ${Makefile} > Makefile.tem
+rm -f ${Makefile}
+mv Makefile.tem ${Makefile}
+
+# If this is the library's top level, configure each multilib subdir.
+# This is done at the end because this is the loop that runs configure
+# in each multilib subdir and it seemed reasonable to finish updating the
+# Makefile before going on to configure the subdirs.
+
+if [ "${ml_toplevel_p}" = yes ]; then
+
+# We must freshly configure each subdirectory.  This bit of code is
+# actually partially stolen from the main configure script.  FIXME.
+
+if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
+
+  if [ "${ml_verbose}" = --verbose ]; then
+    echo "Running configure in multilib subdirs ${multidirs}"
+    echo "pwd: `${PWDCMD-pwd}`"
+  fi
+
+  ml_origdir=`${PWDCMD-pwd}`
+  ml_libdir=`echo "$ml_origdir" | sed -e 's,^.*/,,'`
+  # cd to top-level-build-dir/${with_target_subdir}
+  cd ..
+
+  for ml_dir in ${multidirs}; do
+
+    if [ "${ml_verbose}" = --verbose ]; then
+      echo "Running configure in multilib subdir ${ml_dir}"
+      echo "pwd: `${PWDCMD-pwd}`"
+    fi
+
+    if [ -d ${ml_dir} ]; then true; else
+      # ``mkdir -p ${ml_dir}'' See also mkinstalldirs.
+      pathcomp=""
+      for d in `echo ":${ml_dir}" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`; do
+        pathcomp="$pathcomp$d"
+        case "$pathcomp" in
+          -* ) pathcomp=./$pathcomp ;;
+        esac
+        if test ! -d "$pathcomp"; then
+           echo "mkdir $pathcomp" 1>&2
+           mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
+        fi
+        if test ! -d "$pathcomp"; then
+          exit $lasterr
+        fi
+        pathcomp="$pathcomp/"
+      done
+    fi
+    if [ -d ${ml_dir}/${ml_libdir} ]; then true; else mkdir ${ml_dir}/${ml_libdir}; fi
+
+    # Eg: if ${ml_dir} = m68000/m68881, dotdot = ../../
+    dotdot=../`echo ${ml_dir} | sed -e 's|[^/]||g' -e 's|/|../|g'`
+
+    case ${srcdir} in
+    ".")
+      echo "Building symlink tree in `${PWDCMD-pwd}`/${ml_dir}/${ml_libdir}"
+      if [ "${with_target_subdir}" != "." ]; then
+       ml_unsubdir="../"
+      else
+       ml_unsubdir=""
+      fi
+      (cd ${ml_dir}/${ml_libdir};
+       ../${dotdot}${ml_unsubdir}symlink-tree ../${dotdot}${ml_unsubdir}${ml_libdir} "")
+      if [ -f ${ml_dir}/${ml_libdir}/${Makefile} ]; then
+       if [ x"${MAKE}" = x ]; then
+         (cd ${ml_dir}/${ml_libdir}; make distclean)
+       else
+         (cd ${ml_dir}/${ml_libdir}; ${MAKE} distclean)
+       fi
+      fi
+      ml_newsrcdir="."
+      ml_srcdiroption=
+      multisrctop=${dotdot}
+      ;;
+    *)
+      case "${srcdir}" in
+      /* | [A-Za-z]:[\\/]* ) # absolute path
+        ml_newsrcdir=${srcdir}
+        ;;
+      *) # otherwise relative
+        ml_newsrcdir=${dotdot}${srcdir}
+        ;;
+      esac
+      ml_srcdiroption="-srcdir=${ml_newsrcdir}"
+      multisrctop=
+      ;;
+    esac
+
+    case "${progname}" in
+    /* | [A-Za-z]:[\\/]* )     ml_recprog=${progname} ;;
+    *)      ml_recprog=${dotdot}${progname} ;;
+    esac
+
+    # FIXME: POPDIR=${PWD=`pwd`} doesn't work here.
+    ML_POPDIR=`${PWDCMD-pwd}`
+    cd ${ml_dir}/${ml_libdir}
+
+    if [ -f ${ml_newsrcdir}/configure ]; then
+      ml_recprog="${ml_newsrcdir}/configure"
+    fi
+
+    # find compiler flag corresponding to ${ml_dir}
+    for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
+      dir=`echo $i | sed -e 's/;.*$//'`
+      if [ "${dir}" = "${ml_dir}" ]; then
+        flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`
+        break
+      fi
+    done
+    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GCJ="${GCJ_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags"'
+
+    if [ "${with_target_subdir}" = "." ]; then
+       CC_=$CC' '
+       CXX_=$CXX' '
+       F77_=$F77' '
+       GCJ_=$GCJ' '
+       GFORTRAN_=$GFORTRAN' '
+       GOC_=$GOC' '
+    else
+       # Create a regular expression that matches any string as long
+       # as ML_POPDIR.
+       popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'`
+       CC_=
+       for arg in ${CC}; do
+         case $arg in
+         -[BIL]"${ML_POPDIR}"/*)
+           CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
+         "${ML_POPDIR}"/*)
+           CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         *)
+           CC_="${CC_}${arg} " ;;
+         esac
+       done
+
+       CXX_=
+       for arg in ${CXX}; do
+         case $arg in
+         -[BIL]"${ML_POPDIR}"/*)
+           CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         "${ML_POPDIR}"/*)
+           CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         *)
+           CXX_="${CXX_}${arg} " ;;
+         esac
+       done
+
+       F77_=
+       for arg in ${F77}; do
+         case $arg in
+         -[BIL]"${ML_POPDIR}"/*)
+           F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         "${ML_POPDIR}"/*)
+           F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         *)
+           F77_="${F77_}${arg} " ;;
+         esac
+       done
+
+       GCJ_=
+       for arg in ${GCJ}; do
+         case $arg in
+         -[BIL]"${ML_POPDIR}"/*)
+           GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         "${ML_POPDIR}"/*)
+           GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         *)
+           GCJ_="${GCJ_}${arg} " ;;
+         esac
+       done
+
+       GFORTRAN_=
+       for arg in ${GFORTRAN}; do
+         case $arg in
+         -[BIL]"${ML_POPDIR}"/*)
+           GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         "${ML_POPDIR}"/*)
+           GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         *)
+           GFORTRAN_="${GFORTRAN_}${arg} " ;;
+         esac
+       done
+
+       GOC_=
+       for arg in ${GOC}; do
+         case $arg in
+         -[BIL]"${ML_POPDIR}"/*)
+           GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         "${ML_POPDIR}"/*)
+           GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+         *)
+           GOC_="${GOC_}${arg} " ;;
+         esac
+       done
+
+       if test "x${LD_LIBRARY_PATH+set}" = xset; then
+         LD_LIBRARY_PATH_=
+         for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
+           case "$arg" in
+           "${ML_POPDIR}"/*)
+             arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
+             ;;
+           esac
+           if test "x$LD_LIBRARY_PATH_" != x; then
+             LD_LIBRARY_PATH_=$LD_LIBRARY_PATH_:$arg
+           else
+             LD_LIBRARY_PATH_=$arg
+           fi
+          done
+         ml_config_env="$ml_config_env LD_LIBRARY_PATH=$LD_LIBRARY_PATH_"
+       fi
+
+       if test "x${SHLIB_PATH+set}" = xset; then
+         SHLIB_PATH_=
+         for arg in `echo "$SHLIB_PATH" | tr ':' ' '`; do
+           case "$arg" in
+           "${ML_POPDIR}"/*)
+             arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
+             ;;
+           esac
+           if test "x$SHLIB_PATH_" != x; then
+             SHLIB_PATH_=$SHLIB_PATH_:$arg
+           else
+             SHLIB_PATH_=$arg
+           fi
+          done
+         ml_config_env="$ml_config_env SHLIB_PATH=$SHLIB_PATH_"
+       fi
+    fi
+
+    if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
+       --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
+       ${ac_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then
+      true
+    else
+      exit 1
+    fi
+
+    cd "${ML_POPDIR}"
+
+  done
+
+  cd "${ml_origdir}"
+fi
+
+fi # ${ml_toplevel_p} = yes
+fi # ${enable_multilib} = yes
diff --git a/contrib/multilib/multi.m4 b/contrib/multilib/multi.m4
new file mode 100644 (file)
index 0000000..d1320d6
--- /dev/null
@@ -0,0 +1,64 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 1998-2012 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 6
+
+# AM_ENABLE_MULTILIB([MAKEFILE], [REL-TO-TOP-SRCDIR])
+# ---------------------------------------------------
+# Add --enable-multilib to configure.
+AC_DEFUN([AM_ENABLE_MULTILIB],
+[# Default to --enable-multilib
+AC_ARG_ENABLE(multilib,
+[  --enable-multilib       build many library versions (default)],
+[case "$enableval" in
+  yes) multilib=yes ;;
+  no)  multilib=no ;;
+  *)   AC_MSG_ERROR([bad value $enableval for multilib option]) ;;
+ esac],
+             [multilib=yes])
+
+# We may get other options which we leave undocumented:
+# --with-target-subdir, --with-multisrctop, --with-multisubdir
+# See config-ml.in if you want the gory details.
+
+if test "$srcdir" = "."; then
+  if test "$with_target_subdir" != "."; then
+    multi_basedir="$srcdir/$with_multisrctop../$2"
+  else
+    multi_basedir="$srcdir/$with_multisrctop$2"
+  fi
+else
+  multi_basedir="$srcdir/$2"
+fi
+AC_SUBST(multi_basedir)
+
+# Even if the default multilib is not a cross compilation,
+# it may be that some of the other multilibs are.
+if test $cross_compiling = no && test $multilib = yes \
+   && test "x${with_multisubdir}" != x ; then
+   cross_compiling=maybe
+fi
+
+AC_OUTPUT_COMMANDS([
+# Only add multilib support code if we just rebuilt the top-level
+# Makefile.
+case " $CONFIG_FILES " in
+ *" ]m4_default([$1],Makefile)[ "*)
+   ac_file=]m4_default([$1],Makefile)[ . ${multi_basedir}/config-ml.in
+   ;;
+esac],
+                  [
+srcdir="$srcdir"
+host="$host"
+target="$target"
+with_multisubdir="$with_multisubdir"
+with_multisrctop="$with_multisrctop"
+with_target_subdir="$with_target_subdir"
+ac_configure_args="${multilib_arg} ${ac_configure_args}"
+multi_basedir="$multi_basedir"
+CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+CC="$CC"])])dnl
diff --git a/contrib/multilib/multilib.am b/contrib/multilib/multilib.am
new file mode 100644 (file)
index 0000000..bca9069
--- /dev/null
@@ -0,0 +1,45 @@
+## automake - create Makefile.in from Makefile.am
+
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+## This Makefile.in 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.
+
+## 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.
+
+MULTISRCTOP =
+MULTIBUILDTOP =
+MULTIDIRS =
+MULTISUBDIR =
+MULTIDO = true
+MULTICLEAN = true
+
+# GNU Make needs to see an explicit $(MAKE) variable in the command it
+# runs to enable its job server during parallel builds.  Hence the
+# comments below.
+all-multi:
+       $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
+install-multi:
+       $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
+mostlyclean-multi:
+       $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
+clean-multi:
+       $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
+distclean-multi:
+       $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
+maintainer-clean-multi:
+       $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE)
+
+.MAKE .PHONY: all-multi clean-multi distclean-multi install-am \
+             install-multi maintainer-clean-multi mostlyclean-multi
+
+install-exec-local: install-multi
+
+all-local: all-multi
+mostlyclean-local: mostlyclean-multi
+clean-local: clean-multi
+distclean-local: distclean-multi
+maintainer-clean-local: maintainer-clean-multi
diff --git a/contrib/multilib/symlink-tree b/contrib/multilib/symlink-tree
new file mode 100755 (executable)
index 0000000..f1877f9
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/sh
+# Create a symlink tree.
+#
+# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+#
+# This file 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 of the License, 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+#
+# Please report bugs to <gcc-bugs@gnu.org>
+# and send patches to <gcc-patches@gnu.org>.
+
+# Syntax: symlink-tree srcdir "ignore1 ignore2 ..."
+#
+# where srcdir is the directory to create a symlink tree to,
+# and "ignoreN" is a list of files/directories to ignore.
+
+prog=$0
+srcdir=$1
+ignore="$2"
+
+if test $# -lt 1; then
+  echo "symlink-tree error:  Usage: symlink-tree srcdir \"ignore1 ignore2 ...\""
+  exit 1
+fi
+
+ignore_additional=". .. CVS"
+
+# If we were invoked with a relative path name, adjust ${prog} to work
+# in subdirs.
+case ${prog} in
+/* | [A-Za-z]:[\\/]*) ;;
+*) prog=../${prog} ;;
+esac
+
+# Set newsrcdir to something subdirectories can use.
+case ${srcdir} in
+/* | [A-Za-z]:[\\/]*) newsrcdir=${srcdir} ;;
+*) newsrcdir=../${srcdir} ;;
+esac
+
+for f in `ls -a ${srcdir}`; do
+  if [ -d ${srcdir}/$f ]; then
+    found=
+    for i in ${ignore} ${ignore_additional}; do
+      if [ "$f" = "$i" ]; then
+       found=yes
+      fi
+    done
+    if [ -z "${found}" ]; then
+      echo "$f         ..working in"
+      if [ -d $f ]; then true; else mkdir $f; fi
+      (cd $f; ${prog} ${newsrcdir}/$f "${ignore}")
+    fi
+  else
+    echo "$f           ..linked"
+    rm -f $f
+    ln -s ${srcdir}/$f .
+  fi
+done
+
+exit 0
diff --git a/defs b/defs
new file mode 100644 (file)
index 0000000..612855e
--- /dev/null
+++ b/defs
@@ -0,0 +1,1116 @@
+# -*- shell-script -*-
+#
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+########################################################
+###  IMPORTANT NOTE: keep this file 'set -e' clean.  ###
+########################################################
+
+# NOTE: This file should execute correctly with any system's /bin/sh
+# shell, and not only with configure-time detected $AM_TEST_RUNNER_SHELL,
+# *until differently and explicitly specified*.
+
+## -------------------------------------------------------- ##
+##  Source static setup and definitions for the testsuite.  ##
+## -------------------------------------------------------- ##
+
+# Ensure we are running from the right directory.
+test -f ./defs-static || {
+   echo "$0: ./defs-static: not found in current directory" >&2
+   exit 99
+}
+
+# Source the shell sanitization and variables' definitions.
+. ./defs-static || exit 99
+
+# Enable the errexit shell flag early.
+set -e
+
+# The name of the current test (without the '.sh' or '.tap' suffix).
+# Test scripts can override it if they need to (but this should
+# be done carefully, and *before* including ./defs).
+if test -z "$me"; then
+  # Guard against failure to spawn sed (seen on MSYS), or empty $argv0.
+  me=`echo "$argv0" | sed -e 's,.*[\\/],,;s/\.sh$//;s/\.tap$//'` \
+    && test -n "$me" \
+    || { echo "$argv0: failed to define \$me" >&2; exit 99; }
+fi
+
+## ---------------------- ##
+##  Early sanity checks.  ##
+## ---------------------- ##
+
+# A single whitespace character.
+sp=' '
+# A tabulation character.
+tab='  '
+# A newline character.
+nl='
+'
+
+# As autoconf-generated configure scripts do, ensure that IFS
+# is defined initially, so that saving and restoring $IFS works.
+IFS=$sp$tab$nl
+
+# Ensure $am_top_srcdir is set correctly.
+test -f "$am_top_srcdir/defs-static.in" || {
+   echo "$me: $am_top_srcdir/defs-static.in not found," \
+        "check \$am_top_srcdir" >&2
+   exit 99
+}
+
+# Ensure $am_top_builddir is set correctly.
+test -f "$am_top_builddir/defs-static" || {
+   echo "$me: $am_top_builddir/defs-static not found," \
+        "check \$am_top_builddir" >&2
+   exit 99
+}
+
+
+## ------------------------------------ ##
+##  Ensure we run with a proper shell.  ##
+## ------------------------------------ ##
+
+# Make sure we run with the shell detected at configure time (unless
+# the user forbids it).
+case ${AM_TESTS_REEXEC-yes} in
+  n|no|false|0)
+    ;;
+  *)
+    # Ensure we can find ourselves.
+    if test ! -f "$0"; then
+      echo "$me: unable to find myself: $0" >&2
+      exit 99
+    fi
+    AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
+    # Cannot simply do "opts=$-", since the content of $- is not
+    # portable among different shells.  So try to propagate only
+    # the portable and interesting options.
+    case $- in
+      *x*v*|*v*x) opts=-vx;;
+      *v*) opts=-v;;
+      *x*) opts=-x;;
+      *) opts=;;
+    esac
+    echo $me: exec $AM_TEST_RUNNER_SHELL $opts "$0" "$*"
+    exec $AM_TEST_RUNNER_SHELL $opts "$0" ${1+"$@"} || {
+      echo "$me: failed to re-execute with $AM_TEST_RUNNER_SHELL" >&2
+      exit 99
+    }
+    ;;
+esac
+
+# NOTE: From this point on, we can assume this file is being executed
+# by the configure-time detected $AM_TEST_RUNNER_SHELL.
+
+
+## ----------------------- ##
+##  Early debugging info.  ##
+## ----------------------- ##
+
+echo "Running from installcheck: $am_running_installcheck"
+echo "Using TAP: $am_using_tap"
+echo "PATH = $PATH"
+
+
+## ---------------------- ##
+##  Environment cleanup.  ##
+## ---------------------- ##
+
+# Temporarily disable this, since some shells (e.g., older version
+# of Bash) can return a non-zero exit status upon the when a non-set
+# variable is unset.
+set +e
+
+# Unset some make-related variables that may cause $MAKE to act like
+# a recursively invoked sub-make.  Any $MAKE invocation in a test is
+# conceptually an independent invocation, not part of the main
+# 'automake' build.
+unset MFLAGS MAKEFLAGS AM_MAKEFLAGS MAKELEVEL
+unset __MKLVL__ MAKE_JOBS_FIFO                     # For BSD make.
+unset DMAKE_CHILD DMAKE_DEF_PRINTED DMAKE_MAX_JOBS # For Solaris dmake.
+# Unset verbosity flag.
+unset V
+# Also unset variables that will let "make -e install" divert
+# files into unwanted directories.
+unset DESTDIR
+unset prefix exec_prefix bindir datarootdir datadir docdir dvidir
+unset htmldir includedir infodir libdir libexecdir localedir mandir
+unset oldincludedir pdfdir psdir sbindir sharedstatedir sysconfdir
+# Unset variables that might change the "make distcheck" behaviour.
+unset DISTCHECK_CONFIGURE_FLAGS AM_DISTCHECK_CONFIGURE_FLAGS
+# Used by install rules for info files.
+unset AM_UPDATE_INFO_DIR
+# The tests call "make -e" but we do not want $srcdir from the environment
+# to override the definition from the Makefile.
+unset srcdir
+# 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 TESTS_ENVIRONMENT AM_TESTS_ENVIRONMENT
+unset DISABLE_HARD_ERRORS
+unset AM_COLOR_TESTS
+unset TESTS
+unset XFAIL_TESTS
+unset TEST_LOGS
+unset TEST_SUITE_LOG
+unset RECHECK_LOGS
+unset VERBOSE
+for pfx in TEST_ SH_ TAP_ ''; do
+  unset ${pfx}LOG_COMPILER
+  unset ${pfx}LOG_COMPILE # Not a typo!
+  unset ${pfx}LOG_FLAGS
+  unset AM_${pfx}LOG_FLAGS
+  unset ${pfx}LOG_DRIVER
+  unset ${pfx}LOG_DRIVER_FLAGS
+  unset AM_${pfx}LOG_DRIVER_FLAGS
+done
+unset pfx
+
+# Re-enable, it had been temporarily disabled above.
+set -e
+
+## ---------------------------- ##
+##  Auxiliary shell functions.  ##
+## ---------------------------- ##
+
+# Tell whether we should keep the test directories around, even in
+# case of success.  By default, we don't.
+am_keeping_testdirs ()
+{
+  case $keep_testdirs in
+     ""|n|no|NO) return 1;;
+              *) return 0;;
+  esac
+}
+
+# This is used in 'Exit' and in the exit trap.  See comments in the latter
+# for more information,
+am__test_skipped=no
+
+# We use a trap below for cleanup.  This requires us to go through
+# hoops to get the right exit status transported through the signal.
+# So use "Exit STATUS" instead of "exit STATUS" inside of the tests.
+# Turn off errexit here so that we don't trip the bug with OSF1/Tru64
+# sh inside this function.
+Exit ()
+{
+  set +e
+  # See comments in the exit trap for the reason we do this.
+  test 77 = $1 && am__test_skipped=yes
+  (exit $1); exit $1
+}
+
+if test $am_using_tap = yes; then
+  am_funcs_file=tap-functions.sh
+else
+  am_funcs_file=plain-functions.sh
+fi
+
+if test -f "$am_testauxdir/$am_funcs_file"; then
+  . "$am_testauxdir/$am_funcs_file" || {
+    echo "$me: error sourcing $am_testauxdir/$am_funcs_file" >&2
+    Exit 99
+  }
+else
+  echo "$me: $am_testauxdir/$am_funcs_file not found" >&2
+  Exit 99
+fi
+unset am_funcs_file
+
+# cross_compiling
+# ---------------
+# Tell whether we are cross-compiling.  This is especially useful to skip
+# tests (or portions of them) that requires a native compiler.
+cross_compiling ()
+{
+  # Quoting from the autoconf manual:
+  #   ... [$host_alias and $build both] default to the result of running
+  #   config.guess, unless you specify either --build or --host.  In
+  #   this case, the default becomes the system type you specified.
+  #   If you specify both, *and they're different*, configure enters
+  #   cross compilation mode (so it doesn't run any tests that require
+  #   execution).
+  test x"$host_alias" != x && test x"$build_alias" != x"$host_alias"
+}
+
+# is_newest FILE FILES
+# --------------------
+# Return false if any file in FILES is newer than FILE.
+# Resolve ties in favor of FILE.
+is_newest ()
+{
+  is_newest_files=`find "$@" -prune -newer "$1"`
+  test -z "$is_newest_files"
+}
+
+# is_blocked_signal SIGNAL-NUMBER
+# --------------------------------
+# Return success if the given signal number is blocked in the shell,
+# return a non-zero exit status and print a proper diagnostic otherwise.
+is_blocked_signal ()
+{
+  # Use perl, since trying to do this portably in the shell can be
+  # very tricky, if not downright impossible.  For reference, see:
+  # <http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html>
+  if $PERL -w -e '
+    use strict;
+    use warnings FATAL => "all";
+    use POSIX;
+    my %oldsigaction = ();
+    sigaction('"$1"', 0, \%oldsigaction);
+    exit ($oldsigaction{"HANDLER"} eq "IGNORE" ? 0 : 77);
+  '; then
+    return 0
+  elif test $? -eq 77; then
+    return 1
+  else
+    fatal_ "couldn't determine whether signal $1 is blocked"
+  fi
+}
+
+# AUTOMAKE_run [-e STATUS] [-d DESCRIPTION] [--] [AUTOMAKE-ARGS...]
+# -----------------------------------------------------------------
+# Run automake with AUTOMAKE-ARGS, and fail if it doesn't exit with
+# STATUS.  Should be polymorphic for TAP and "plain" tests.  The
+# DESCRIPTION, when provided, is used for console reporting, only if
+# the TAP protocol is in use in the current test script.
+AUTOMAKE_run ()
+{
+  am__desc=
+  am__exp_rc=0
+  while test $# -gt 0; do
+    case $1 in
+      -d) am__desc=$2; shift;;
+      -e) am__exp_rc=$2; shift;;
+      --) shift; break;;
+       # Don't fail on unknown option: assume they (and the rest of the
+       # command line) are to be passed verbatim to automake (so stop our
+       # own option parsing).
+       *) break;;
+    esac
+    shift
+  done
+  am__got_rc=0
+  $AUTOMAKE ${1+"$@"} >stdout 2>stderr || am__got_rc=$?
+  cat stderr >&2
+  cat stdout
+  if test $am_using_tap != yes; then
+    test $am__got_rc -eq $am__exp_rc || Exit 1
+    return
+  fi
+  if test -z "$am__desc"; then
+    if test $am__got_rc -eq $am__exp_rc; then
+      am__desc="automake exited $am__got_rc"
+    else
+      am__desc="automake exited $am__got_rc, expecting $am__exp_rc"
+    fi
+  fi
+  command_ok_ "$am__desc" test $am__got_rc -eq $am__exp_rc
+}
+
+# AUTOMAKE_fails [-d DESCRIPTION] [OPTIONS...]
+# --------------------------------------------
+# Run automake with OPTIONS, and fail if doesn't exit with status 1.
+# Should be polymorphic for TAP and "plain" tests.  The DESCRIPTION,
+# when provided, is used for console reporting, only if the TAP
+# protocol is in use in the current test script.
+AUTOMAKE_fails ()
+{
+  AUTOMAKE_run -e 1 ${1+"$@"}
+}
+
+# extract_configure_help { --OPTION | VARIABLE-NAME } [FILES]
+# -----------------------------------------------------------
+# Use this to extract from the output of "./configure --help" (or similar)
+# the description or help message associated to the given --OPTION or
+# VARIABLE-NAME.
+extract_configure_help ()
+{
+  am__opt_re='' am__var_re=''
+  case $1 in
+    --*'=')   am__opt_re="^  $1";;
+    --*'[=]') am__opt_re='^  '`printf '%s\n' "$1" | sed 's/...$//'`'\[=';;
+    --*)      am__opt_re="^  $1( .*|$)";;
+      *)      am__var_re="^  $1( .*|$)";;
+  esac
+  shift
+  if test x"$am__opt_re" != x; then
+    LC_ALL=C awk '
+      /'"$am__opt_re"'/        { print; do_print = 1; next; }
+      /^$/                     { do_print = 0; next }
+      /^  --/                  { do_print = 0; next }
+      (do_print == 1)          { print }
+    ' ${1+"$@"}
+  else
+    LC_ALL=C awk '
+      /'"$am__var_re"'/        { print; do_print = 1; next; }
+      /^$/                     { do_print = 0; next }
+      /^  [A-Z][A-Z0-9_]* /    { do_print = 0; next }
+      /^  [A-Z][A-Z0-9_]*$/    { do_print = 0; next }
+      (do_print == 1)          { print }
+    ' ${1+"$@"}
+  fi
+}
+
+# grep_configure_help { --OPTION | VARIABLE-NAME } REGEXP
+# -------------------------------------------------------
+# Grep the section of "./configure --help" output associated with either
+# --OPTION or VARIABLE-NAME for the given *extended* regular expression.
+grep_configure_help ()
+{
+  ./configure --help > am--all-help \
+    || { cat am--all-help; Exit 1; }
+  cat am--all-help
+  extract_configure_help "$1" am--all-help > am--our-help \
+    || { cat am--our-help; Exit 1; }
+  cat am--our-help
+  $EGREP "$2" am--our-help || Exit 1
+}
+
+# using_gmake
+# -----------
+# Return success if $MAKE is GNU make, return failure otherwise.
+# Caches the result for speed reasons.
+using_gmake ()
+{
+  case $am__using_gmake in
+    yes)
+      return 0;;
+    no)
+      return 1;;
+    '')
+      # Use --version AND -v, because SGI Make doesn't fail on --version.
+      # Also grep for GNU because newer versions of FreeBSD make do
+      # not complain about --version (they seem to silently ignore it).
+      if $MAKE --version -v | grep GNU; then
+        am__using_gmake=yes
+        return 0
+      else
+        am__using_gmake=no
+        return 1
+      fi;;
+    *)
+      fatal_ "invalid value for \$am__using_gmake: '$am__using_gmake'";;
+  esac
+}
+am__using_gmake="" # Avoid interferences from the environment.
+
+# make_can_chain_suffix_rules
+# ---------------------------
+# Return 0 if $MAKE is a make implementation that can chain suffix rules
+# automatically, return 1 otherwise.  Caches the result for speed reasons.
+make_can_chain_suffix_rules ()
+{
+  if test -z "$am__can_chain_suffix_rules"; then
+    if using_gmake; then
+      am__can_chain_suffix_rules=yes
+      return 0
+    else
+      mkdir am__chain.dir$$
+      cd am__chain.dir$$
+      unindent > Makefile << 'END'
+        .SUFFIXES: .u .v .w
+        .u.v: ; cp $< $@
+        .v.w: ; cp $< $@
+END
+      echo make can chain suffix rules > foo.u
+      if $MAKE foo.w && diff foo.u foo.w; then
+        am__can_chain_suffix_rules=yes
+      else
+        am__can_chain_suffix_rules=no
+      fi
+      cd ..
+      rm -rf am__chain.dir$$
+    fi
+  fi
+  case $am__can_chain_suffix_rules in
+    yes) return 0;;
+     no) return 1;;
+      *) fatal_ "make_can_chain_suffix_rules: internal error";;
+  esac
+}
+am__can_chain_suffix_rules="" # Avoid interferences from the environment.
+
+# useless_vpath_rebuild
+# ---------------------
+# Tell whether $MAKE suffers of the bug triggering automake bug#7884.
+# For example, this happens with FreeBSD make, since in a VPATH build
+# it tends to rebuilt files for which there is an explicit or even just
+# a suffix rule, even if said files are already available in the VPATH
+# directory.
+useless_vpath_rebuild ()
+{
+  if test -z "$am__useless_vpath_rebuild"; then
+    if using_gmake; then
+      am__useless_vpath_rebuild=no
+      return 1
+    fi
+    mkdir am__vpath.dir$$
+    cd am__vpath.dir$$
+    touch foo.a foo.b bar baz
+    mkdir build
+    cd build
+    unindent > Makefile << 'END'
+        .SUFFIXES: .a .b
+        VPATH = ..
+        all: foo.b baz
+        .PHONY: all
+        .a.b: ; cp $< $@
+        baz: bar ; cp ../baz bar
+END
+    if $MAKE all && test ! -f foo.b && test ! -f bar; then
+      am__useless_vpath_rebuild=no
+    else
+      am__useless_vpath_rebuild=yes
+    fi
+    cd ../..
+    rm -rf am__vpath.dir$$
+  fi
+  case $am__useless_vpath_rebuild in
+    yes) return 0;;
+     no) return 1;;
+     "") ;;
+      *) fatal_ "no_useless_builddir_remake: internal error";;
+  esac
+}
+am__useless_vpath_rebuild=""
+
+yl_distcheck () { useless_vpath_rebuild || $MAKE distcheck ${1+"$@"}; }
+
+# seq_ - print a sequence of numbers
+# ----------------------------------
+# This function simulates GNU seq(1) portably.  Valid usages:
+#  - seq LAST
+#  - seq FIRST LAST
+#  - seq FIRST INCREMENT LAST
+seq_ ()
+{
+  case $# in
+    0) fatal_ "seq_: missing argument";;
+    1) seq_first=1  seq_incr=1  seq_last=$1;;
+    2) seq_first=$1 seq_incr=1  seq_last=$2;;
+    3) seq_first=$1 seq_incr=$2 seq_last=$3;;
+    *) fatal_ "seq_: too many arguments";;
+  esac
+  # Try to avoid forks if possible.
+  case "$BASH_VERSION" in
+    ""|[12].*)
+      : Not bash, or a too old bash version. ;;
+    *)
+      # Use eval to protect dumber shells from parsing errors.
+      eval 'for ((i = seq_first; i <= seq_last; i += seq_incr)); do
+              echo $i
+            done'
+      return 0;;
+  esac
+  # Else, use GNU seq if available.
+  seq "$@" && return 0
+  # Otherwise revert to a slower loop using expr(1).
+  i=$seq_first
+  while test $i -le $seq_last; do
+    echo $i
+    i=`expr $i + $seq_incr`
+  done
+}
+
+# rm_rf_ [FILES OR DIRECTORIES ...]
+# ---------------------------------
+# Recursively remove the given files or directory, also handling the case
+# of non-writable subdirectories.
+rm_rf_ ()
+{
+  test $# -gt 0 || return 0
+  # Ignore failures in find, we are only interested in failures of the
+  # final rm.
+  find "$@" -type d ! -perm -700 -exec chmod u+rwx {} \; || :
+  rm -rf "$@"
+}
+
+# count_test_results total=N pass=N fail=N xpass=N xfail=N skip=N error=N
+# -----------------------------------------------------------------------
+# Check that a testsuite run driven by the parallel-tests harness has
+# had the specified numbers of test results (specified by kind).
+# This function assumes that the output of "make check" or "make recheck"
+# has been saved in the 'stdout' file in the current directory, and its
+# log in the 'test-suite.log' file.
+count_test_results ()
+{
+  # Use a subshell so that we won't pollute the script namespace.
+  (
+    # TODO: Do proper checks on the arguments?
+    total=ERR pass=ERR fail=ERR xpass=ERR xfail=ERR skip=ERR error=ERR
+    eval "$@"
+    # For debugging.
+    $EGREP -i '(total|x?pass|x?fail|skip|error)' stdout || :
+    rc=0
+    # Avoid spurious failures with shells with "overly sensible"
+    # errexit shell flag, such as e.g., Solaris /bin/sh.
+    set +e
+    test `grep -c '^PASS:'  stdout` -eq $pass  || rc=1
+    test `grep -c '^XFAIL:' stdout` -eq $xfail || rc=1
+    test `grep -c '^SKIP:'  stdout` -eq $skip  || rc=1
+    test `grep -c '^FAIL:'  stdout` -eq $fail  || rc=1
+    test `grep -c '^XPASS:' stdout` -eq $xpass || rc=1
+    test `grep -c '^ERROR:' stdout` -eq $error || rc=1
+    grep "^# TOTAL:  *$total$" stdout || rc=1
+    grep "^# PASS:  *$pass$"   stdout || rc=1
+    grep "^# XFAIL:  *$xfail$" stdout || rc=1
+    grep "^# SKIP:  *$skip$"   stdout || rc=1
+    grep "^# FAIL:  *$fail$"   stdout || rc=1
+    grep "^# XPASS:  *$xpass$" stdout || rc=1
+    grep "^# ERROR:  *$error$" stdout || rc=1
+    test $rc -eq 0
+  )
+}
+
+commented_sed_unindent_prog='
+  /^$/b                    # Nothing to do for empty lines.
+  x                        # Get x<indent> into pattern space.
+  /^$/{                    # No prior x<indent>, go prepare it.
+    g                      # Copy this 1st non-blank line into pattern space.
+    s/^\(['"$tab"' ]*\).*/x\1/   # Prepare x<indent> in pattern space.
+  }                        # Now: x<indent> in pattern and <line> in hold.
+  G                        # Build x<indent>\n<line> in pattern space, and
+  h                        # duplicate it into hold space.
+  s/\n.*$//                # Restore x<indent> in pattern space, and
+  x                        # exchange with the above duplicate in hold space.
+  s/^x\(.*\)\n\1//         # Remove leading <indent> from <line>.
+  s/^x.*\n//               # Restore <line> when there is no leading <indent>.
+'
+
+# unindent [input files...]
+# -------------------------
+# Remove the "proper" amount of leading whitespace from the given files,
+# and output the result on stdout.  That amount is determined by looking
+# at the leading whitespace of the first non-blank line in the input
+# files.  If no input file is specified, standard input is implied.
+unindent ()
+{
+  if test x"$sed_unindent_prog" = x; then
+    sed_unindent_prog=`printf '%s\n' "$commented_sed_unindent_prog" | sed -e "s/  *# .*//"`
+  fi
+  sed "$sed_unindent_prog" ${1+"$@"}
+}
+sed_unindent_prog="" # Avoid interferences from the environment.
+
+# get_shell_script SCRIPT-NAME
+# -----------------------------
+# Fetch an Automake-provided shell script from the 'lib/' directory into
+# the current directory, and, if the '$am_test_prefer_config_shell'
+# variable is set to "yes", modify its shebang line to use $SHELL instead
+# of /bin/sh.
+get_shell_script ()
+{
+  test ! -f "$1" || rm -f "$1" || return 99
+  if test x"$am_test_prefer_config_shell" = x"yes"; then
+    sed "1s|#!.*|#! $SHELL|" "$am_scriptdir/$1" > "$1" \
+     && chmod a+x "$1" \
+     || return 99
+  else
+    cp -f "$am_scriptdir/$1" . || return 99
+  fi
+  sed 10q "$1" # For debugging.
+}
+
+# require_xsi SHELL
+# -----------------
+# Skip the test if the given shell fails to support common XSI constructs.
+require_xsi ()
+{
+  test $# -eq 1 || fatal_ "require_xsi needs exactly one argument"
+  echo "$me: trying some XSI constructs with $1"
+  $1 -c "$xsi_shell_code" || skip_all_ "$1 lacks XSI features"
+}
+# Shell code supposed to work only with XSI shells.  Keep this in sync
+# with libtool.m4:_LT_CHECK_SHELL_FEATURES.
+xsi_shell_code='
+  _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval '\''test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5'\'
+
+# fetch_tap_driver
+# ----------------
+# Fetch the Automake-provided TAP driver from the 'lib/' directory into
+# the current directory, and edit its shebang line so that it will be
+# run with the perl interpreter determined at configure time.
+fetch_tap_driver ()
+{
+  # TODO: we should devise a way to make the shell TAP driver tested also
+  # TODO: with /bin/sh, for better coverage.
+  case $am_tap_implementation in
+    perl)
+      $PERL -MTAP::Parser -e 1 \
+        || skip_all_ "cannot import TAP::Parser perl module"
+      sed "1s|#!.*|#! $PERL -w|" "$am_scriptdir"/tap-driver.pl >tap-driver
+      ;;
+    shell)
+      AM_TAP_AWK=$AWK; export AM_TAP_AWK
+      sed "1s|#!.*|#! $SHELL|" "$am_scriptdir"/tap-driver.sh >tap-driver
+      ;;
+    *)
+      fatal_ "invalid \$am_tap_implementation '$am_tap_implementation'" ;;
+  esac \
+    && chmod a+x tap-driver \
+    || framework_failure_ "couldn't fetch $am_tap_implementation TAP driver"
+  sed 10q tap-driver # For debugging.
+}
+# The shell/awk implementation of the TAP driver is still mostly dummy, so
+# use the perl implementation by default for the moment.
+am_tap_implementation=${am_tap_implementation-shell}
+
+# Usage: require_compiler_ {cc|c++|fortran|fortran77}
+require_compiler_ ()
+{
+  case $# in
+    0) fatal_ "require_compiler_: missing argument";;
+    1) ;;
+    *) fatal_ "require_compiler_: too many arguments";;
+  esac
+  case $1 in
+    cc)
+      am__comp_lang="C"
+      am__comp_var=CC
+      am__comp_flag_vars='CFLAGS CPPFLAGS'
+      ;;
+    c++)
+      am__comp_lang="C++"
+      am__comp_var=CXX
+      am__comp_flag_vars='CXXFLAGS CPPFLAGS'
+      ;;
+    fortran)
+      am__comp_lang="Fortran"
+      am__comp_var=FC
+      am__comp_flag_vars='FCFLAGS'
+      ;;
+    fortran77)
+      am__comp_lang="Fortran 77"
+      am__comp_var=F77
+      am__comp_flag_vars='FFLAGS'
+      ;;
+  esac
+  shift
+  eval "am__comp_prog=\${$am__comp_var}" \
+    || fatal_ "expanding \${$am__comp_var} in require_compiler_"
+  case $am__comp_prog in
+    "")
+      fatal_ "botched configuration: \$$am__comp_var is empty";;
+    false)
+      skip_all_ "no $am__comp_lang compiler available";;
+    autodetect|autodetected)
+      # Let the ./configure commands in the test script try to determine
+      # these automatically.
+      unset $am__comp_var $am__comp_flag_vars;;
+    *)
+      # Pre-set these for the ./configure commands in the test script.
+      export $am__comp_var $am__comp_flag_vars;;
+  esac
+  # Delete private variables.
+  unset am__comp_lang am__comp_prog am__comp_var am__comp_flag_vars
+}
+
+## ----------------------------------------------------------- ##
+##  Checks for required tools, and additional setups (if any)  ##
+##  required by them.                                          ##
+## ----------------------------------------------------------- ##
+
+# Performance tests must be enabled explicitly.
+case $argv0 in
+  */perf/*)
+    case $AM_TESTSUITE_PERF in
+      [yY]|[yY]es|1) ;;
+      *) skip_ "performance tests not explicitly enabled" ;;
+    esac
+    ;;
+esac
+
+# Look for (and maybe set up) required tools and/or system features; skip
+# the current test if they are not found.
+for tool in : $required
+do
+  # Check that each required tool is present.
+  case $tool in
+    :) ;;
+    cc|c++|fortran|fortran77)
+      require_compiler_ $tool;;
+    xsi-lib-shell)
+      if test x"$am_test_prefer_config_shell" = x"yes"; then
+        require_xsi "$SHELL"
+      else
+        require_xsi "/bin/sh"
+      fi
+      ;;
+    bzip2)
+      # Do not use --version, older versions bzip2 still tries to compress
+      # stdin.
+      echo "$me: running bzip2 --help"
+      bzip2 --help \
+        || skip_all_ "required program 'bzip2' not available"
+      ;;
+    cl)
+      CC=cl
+      # Don't export CFLAGS, as that could have been initialized to only
+      # work with the C compiler detected at configure time.  If the user
+      # wants CFLAGS to also influence 'cl', he can still export CFLAGS
+      # in the environment "by hand" before calling the testsuite.
+      export CC CPPFLAGS
+      echo "$me: running $CC -?"
+      $CC -? || skip_all_ "Microsoft C compiler '$CC' not available"
+      ;;
+    etags)
+      # Exuberant Ctags will create a TAGS file even
+      # when asked for --help or --version.  (Emacs's etags
+      # does not have such problem.)  Use -o /dev/null
+      # to make sure we do not pollute the build directory.
+      echo "$me: running etags --version -o /dev/null"
+      etags --version -o /dev/null \
+        || skip_all_ "required program 'etags' not available"
+      ;;
+    GNUmake)
+      for make_ in "$MAKE" gmake gnumake :; do
+        MAKE=$make_ am__using_gmake=''
+        test "$MAKE" =  : && break
+        echo "$me: determine whether $MAKE is GNU make"
+        # Don't use "&&" here, or a bug of 'set -e' present in some
+        # versions of the BSD shell will be triggered.  We add the
+        # dummy "else" branch for extra safety.
+        if using_gmake; then break; else :; fi
+      done
+      test "$MAKE" = : && skip_all_ "this test requires GNU make"
+      export MAKE
+      unset make_
+      ;;
+    gcj)
+      GCJ=$GNU_GCJ GCJFLAGS=$GNU_GCJFLAGS; export GCJ GCJFLAGS
+      test "$GCJ" = false && skip_all_ "GNU Java compiler unavailable"
+      : For shells with busted 'set -e'.
+      ;;
+    gcc)
+      CC=$GNU_CC CFLAGS=$GNU_CFLAGS; export CC CFLAGS CPPFLAGS
+      test "$CC" = false && skip_all_ "GNU C compiler unavailable"
+      : For shells with busted 'set -e'.
+      ;;
+    g++)
+      CXX=$GNU_CXX CXXFLAGS=$GNU_CXXFLAGS; export CXX CXXFLAGS CPPFLAGS
+      test "$CXX" = false && skip_all_ "GNU C++ compiler unavailable"
+      : For shells with busted 'set -e'.
+      ;;
+    gfortran)
+      FC=$GNU_FC FCFLAGS=$GNU_FCFLAGS; export FC FCFLAGS
+      test "$FC" = false && skip_all_ "GNU Fortran compiler unavailable"
+      case " $required " in
+        *\ g77\ *) ;;
+        *) F77=$FC FFLAGS=$FCFLAGS; export F77 FFLAGS;;
+      esac
+      ;;
+    g77)
+      F77=$GNU_F77 FFLAGS=$GNU_FFLAGS; export F77 FFLAGS
+      test "$F77" = false && skip_all_ "GNU Fortran 77 compiler unavailable"
+      case " $required " in
+        *\ gfortran\ *) ;;
+        *) FC=$F77 FCFLAGS=$FFLAGS; export FC FCFLAGS;;
+      esac
+      ;;
+    javac)
+      # The Java compiler from JDK 1.5 (and presumably earlier versions)
+      # cannot handle the '-version' option by itself: it bails out
+      # telling that source files are missing.  Adding also the '-help'
+      # option seems to solve the problem.
+      echo "$me: running javac -version -help"
+      javac -version -help || skip_all_ "Sun Java compiler not available"
+      ;;
+    java)
+      # See the comments above about 'javac' for why we use also '-help'.
+      echo "$me: running java -version -help"
+      java -version -help || skip_all_ "Sun Java interpreter not found"
+      ;;
+    lib)
+      AR=lib
+      export AR
+      # Attempting to create an empty archive will actually not
+      # create the archive, but lib will output its version.
+      echo "$me: running $AR -out:defstest.lib"
+      $AR -out:defstest.lib \
+        || skip_all_ "Microsoft 'lib' utility not available"
+      ;;
+    makedepend)
+      echo "$me: running makedepend -f-"
+      makedepend -f- \
+        || skip_all_ "required program 'makedepend' not available"
+      ;;
+    makeinfo-html)
+      # Make sure we have makeinfo, and it understands '--html'.
+      echo "$me: running makeinfo --html --version"
+      makeinfo --html --version \
+        || skip_all_ "cannot find a makeinfo program that groks" \
+                     "the '--html' option"
+      ;;
+    mingw)
+      uname_s=`uname -s || echo UNKNOWN`
+      echo "$me: system name: $uname_s"
+      case $uname_s in
+        MINGW*) ;;
+        *) skip_all_ "this test requires MSYS in MinGW mode" ;;
+      esac
+      ;;
+    non-root)
+      # Skip this test case if the user is root.
+      # We try to append to a read-only file to detect this.
+      priv_check_temp=priv-check.$$
+      touch $priv_check_temp && chmod a-w $priv_check_temp \
+        || framework_failure_ "creating unwritable file $priv_check_temp"
+      # Not a useless use of subshell: lesser shells like Solaris /bin/sh
+      # can exit if a builtin fails.
+      overwrite_status=0
+      (echo foo >> $priv_check_temp) || overwrite_status=$?
+      rm -f $priv_check_temp
+      if test $overwrite_status -eq 0; then
+        skip_all_ "cannot drop file write permissions"
+      fi
+      unset priv_check_temp overwrite_status
+      ;;
+    perl-threads)
+      if test "$WANT_NO_THREADS" = "yes"; then
+        skip_all_ "Devel::Cover cannot cope with threads"
+      fi
+      ;;
+    native)
+      # Don't use "&&" here, to avoid a bug of 'set -e' present in
+      # some (even relatively recent) versions of the BSD shell.
+      # We add the dummy "else" branch for extra safety.
+      if cross_compiling; then
+        skip_all_ "doesn't work in cross-compile mode"
+      else :; fi
+      ;;
+    python)
+      # Python doesn't support --version, it has -V
+      echo "$me: running python -V"
+      python -V || skip_all_ "python interpreter not available"
+      ;;
+    ro-dir)
+      # Skip this test case if read-only directories aren't supported
+      # (e.g., under DOS.)
+      ro_dir_temp=ro_dir.$$
+      mkdir $ro_dir_temp && chmod a-w $ro_dir_temp \
+        || framework_failure_ "creating unwritable directory $ro_dir_temp"
+      # Not a useless use of subshell: lesser shells like Solaris /bin/sh
+      # can exit if a builtin fails.
+      create_status=0
+      (: > $ro_dir_temp/probe) || create_status=$?
+      rm -rf $ro_dir_temp
+      if test $create_status -eq 0; then
+        skip_all_ "cannot drop directory write permissions"
+      fi
+      unset ro_dir_temp create_status
+      ;;
+    runtest)
+      # DejaGnu's runtest program. We rely on being able to specify
+      # the program on the runtest command-line. This requires
+      # DejaGnu 1.4.3 or later.
+      echo "$me: running runtest SOMEPROGRAM=someprogram --version"
+      runtest SOMEPROGRAM=someprogram --version \
+        || skip_all_ "DejaGnu is not available"
+      ;;
+    tex)
+      # No all versions of Tex support '--version', so we use
+      # a configure check.
+      if test -z "$TEX"; then
+        skip_all_ "TeX is required, but it wasn't found by configure"
+      fi
+      ;;
+    texi2dvi-o)
+      # Texi2dvi supports '-o' since Texinfo 4.1.
+      echo "$me: running texi2dvi -o /dev/null --version"
+      texi2dvi -o /dev/null --version \
+        || skip_all_ "required program 'texi2dvi' not available"
+      ;;
+    lex)
+      test x"$LEX" = x"false" && skip_all_ "lex not found or disabled"
+      export LEX
+      ;;
+    yacc)
+      test x"$YACC" = x"false" && skip_all_ "yacc not found or disabled"
+      export YACC
+      ;;
+    flex)
+      LEX=flex; export LEX
+      echo "$me: running flex --version"
+      flex --version || skip_all_ "required program 'flex' not available"
+      ;;
+    bison)
+      YACC='bison -y'; export YACC
+      echo "$me: running bison --version"
+      bison --version || skip_all_ "required program 'bison' not available"
+      ;;
+    *)
+      # Generic case: the tool must support --version.
+      echo "$me: running $tool --version"
+      # It is not likely but possible that $tool is a special builtin,
+      # in which case the shell is allowed to exit after an error.  So
+      # we need the subshell here.  Also, some tools, like Sun cscope,
+      # can be interactive without redirection.
+      ($tool --version) </dev/null \
+        || skip_all_ "required program '$tool' not available"
+      ;;
+  esac
+done
+
+# Using just $am_top_builddir for the check here is ok, since the
+# further temporary subdirectory where the test will be run is
+# ensured not to contain any whitespace character.
+case $am_top_builddir in
+  *\ *|*\      *)
+    case " $required " in
+      *' libtool '* | *' libtoolize '* )
+        skip_all_ "libtool has problems with spaces in builddir name";;
+    esac
+    ;;
+esac
+
+# This test is necessary, although Automake's configure script bails out
+# when $srcdir contains spaces.  This is because $am_top_srcdir is in not
+# configure-time $srcdir, but is instead configure-time $abs_srcdir, and
+# that is allowed to contain spaces.
+case $am_top_srcdir in
+  *\ * |*\     *)
+    case " $required " in
+      *' libtool '* | *' libtoolize '* | *' gettext '* )
+        skip_all_ "spaces in srcdir name: libtool/gettext tests won't work";;
+   esac
+   ;;
+esac
+
+# We might need extra macros, e.g., from Libtool or Gettext.
+case " $required " in *\ libtool*) . ./t/libtool-macros.dir/get.sh;; esac
+case " $required " in *\ gettext*) . ./t/gettext-macros.dir/get.sh;; esac
+
+
+## ---------------------------------------------------------------- ##
+##  Create and set up of the temporary directory used by the test.  ##
+##  Set up of the exit trap for cleanup of said directory.          ##
+## ---------------------------------------------------------------- ##
+
+# This might be used in testcases checking distribution-related features.
+# Test scripts are free to override this if they need to.
+distdir=$me-1.0
+
+# Set up the exit trap.
+trap 'exit_status=$?
+  set +e
+  cd "$am_top_builddir"
+  if test $am_using_tap = yes; then
+    if test "$planned_" = later && test $exit_status -eq 0; then
+      plan_ "now"
+    fi
+    test $exit_status -eq 0 && test $tap_pass_count_ -eq $tap_count_ \
+      || keep_testdirs=yes
+  else
+    # This is to ensure that a test script does give a SKIP outcome just
+    # because a command in it happens to exit with status 77.  This
+    # behaviour, while from time to time useful to developers, is not
+    # meant to be enabled by default, as it could cause spurious failures
+    # in the wild.  Thus it will be enabled only when the variable
+    # "am_explicit_skips" is set to a "true" value.
+    case $am_explicit_skips in
+      [yY]|[yY]es|1)
+        if test $exit_status -eq 77 && test $am__test_skipped != yes; then
+          echo "$me: implicit skip turned into failure"
+          exit_status=78
+        fi;;
+    esac
+    test $exit_status -eq 0 || keep_testdirs=yes
+  fi
+  am_keeping_testdirs || rm_rf_ $testSubDir
+  set +x
+  echo "$me: exit $exit_status"
+  exit $exit_status
+' 0
+trap "fatal_ 'caught signal SIGHUP'" 1
+trap "fatal_ 'caught signal SIGINT'" 2
+trap "fatal_ 'caught signal SIGTERM'" 15
+# Various shells seems to just ignore SIGQUIT under some circumstances,
+# even if the signal is not blocked; however, if the signal it trapped,
+# the trap gets correctly executed.  So we also trap SIGQUIT.
+# Here is a list of some shells that have been verified to exhibit the
+# problematic behavior with SIGQUIT:
+#  - zsh 4.3.12 on Debian GNU/Linux
+#  - /bin/ksh and /usr/xpg4/bin/sh on Solaris 10
+#  - Bash 3.2.51 on Solaris 10 and bash 4.1.5 on Debian GNU/Linux
+#  - AT&T ksh on Debian Gnu/Linux (deb package ksh, version 93u-1)
+# OTOH, at least these shells that do *not* exhibit that behaviour:
+#  - modern version of the Almquist Shell (at least 0.5.5.1), on
+#    both Solaris and GNU/Linux
+#  - Solaris 10 /bin/sh
+#  - public domain Korn Shell, version 5.2.14, on Debian GNU/Linux
+trap "fatal_ 'caught signal SIGQUIT'" 3
+# Ignore further SIGPIPE in the trap code.  This is required to avoid
+# a very weird issue with some shells, at least when the execution of
+# the automake testsuite is driven by the 'prove' utility: if prove
+# (or the make process that has spawned it) gets interrupted with
+# Ctrl-C, the shell might go in a loop, continually getting a SIGPIPE,
+# sometimes finally dumping core, other times hanging indefinitely.
+# See also Test::Harness bug [rt.cpan.org #70855], archived at
+# <https://rt.cpan.org/Ticket/Display.html?id=70855>
+trap "trap '' 13; fatal_ 'caught signal SIGPIPE'" 13
+
+# Create and populate the temporary directory, if and as required.
+if test x"$am_create_testdir" = x"no"; then
+  testSubDir=
+else
+  # The subdirectory where the current test script will run and write its
+  # temporary/data files.  This will be created shortly, and will be removed
+  # by the cleanup trap below if the test passes.  If the test doesn't pass,
+  # this directory will be kept, to facilitate debugging.
+  testSubDir=t/$me.dir
+  test ! -d $testSubDir || rm_rf_ $testSubDir \
+    || framework_failure_ "removing old test subdirectory"
+  test -d t || mkdir t
+  mkdir $testSubDir \
+    || framework_failure_ "creating test subdirectory"
+  # The trailing './'ris to avoid CDPATH issues.
+  cd ./$testSubDir \
+    || framework_failure_ "cannot chdir into test subdirectory"
+  if test x"$am_create_testdir" != x"empty"; then
+    cp "$am_scriptdir"/install-sh "$am_scriptdir"/missing \
+       "$am_scriptdir"/depcomp . \
+      || framework_failure_ "fetching common files from $am_scriptdir"
+    # Build appropriate environment in test directory.  E.g., create
+    # configure.ac, touch all necessary files, etc.  Don't use AC_OUTPUT,
+    # but AC_CONFIG_FILES so that appending still produces a valid
+    # configure.ac.  But then, tests running config.status really need
+    # to append AC_OUTPUT.
+    {
+      echo "AC_INIT([$me], [1.0])"
+      if test x"$am_serial_tests" = x"yes"; then
+        echo "AM_INIT_AUTOMAKE"
+      else
+        echo "AM_INIT_AUTOMAKE([parallel-tests])"
+      fi
+      echo "AC_CONFIG_FILES([Makefile])"
+    } >configure.ac || framework_failure_ "creating configure.ac skeleton"
+  fi
+fi
+
+
+## ---------------- ##
+##  Ready to go...  ##
+## ---------------- ##
+
+set -x
+pwd
diff --git a/defs-static.in b/defs-static.in
new file mode 100644 (file)
index 0000000..1dfd8d3
--- /dev/null
@@ -0,0 +1,247 @@
+# -*- shell-script -*-
+# @configure_input@
+#
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Defines and minimal setup for Automake testing environment.
+
+# IMPORTANT NOTES AND REQUIREMENTS
+#   - Multiple inclusions of this file should be idempotent.
+#   - This code has to be 'set -e' clean.
+#   - This file should execute correctly with any system's /bin/sh
+#     shell, not only with configure-time detected $SHELL and/or
+#     $AM_TEST_RUNNER_SHELL.
+
+# Be more Bourne compatible.
+# (Snippet inspired to configure's initialization in Autoconf 2.64)
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+  # If Zsh is not started directly in Bourne-compatibility mode, it has
+  # some incompatibilities in the handling of $0 that conflict with
+  # our usage: i.e., $0 inside a file sourced with the '.' builtin is
+  # temporarily set to the name of the sourced file.
+  # Work around this when possible, otherwise abort the script.
+  # Note that a bug in some versions of Zsh prevents us from resetting $0
+  # in a sourced script, so the use of $argv0.  For more info see:
+  #  <http://www.zsh.org/mla/workers/2009/msg01140.html>
+  # Note: the apparently useless 'eval' below are needed by at least
+  # dash 0.5.2, to prevent it from bailing out with an error like
+  # "Syntax error: Bad substitution"
+  if eval '[[ "$0" = *."test" ]]'; then
+    # Good, FUNCTION_ARGZERO option was already off when this file was
+    # sourced.  Thus we've nothing to do.
+    argv0=$0
+  elif eval 'test -n "${functrace[-1]}"'; then
+    # FUNCTION_ARGZERO option was on, but we have a easy workaround.
+    eval 'argv0=${functrace[-1]%:*}'
+  else
+    # Give up.
+    echo "$0: cannot determine the path of running test script" >&2
+    echo "$0: test was running with Zsh version $ZSH_VERSION" >&2
+    echo "$0: did you enable the NO_FUNCTION_ARGZERO option?" >&2
+    exit 99
+  fi
+else
+  argv0=$0
+  # Avoid command substitution failure, for Tru64 sh -e and instspc*.test.
+  case `(set -o) 2>/dev/null || :` in *posix*) set -o posix;; esac
+fi
+
+# Check that the environment is properly sanitized.
+# Having variables exported to the empty string is OK, since our code
+# treats such variables as if they were unset.
+for var in \
+  me \
+  required \
+  am_using_tap \
+  am_serial_tests \
+  am_create_testdir \
+  am_tap_implementation \
+  am_test_prefer_config_shell \
+  am_original_AUTOMAKE \
+  am_original_ACLOCAL \
+; do
+  if eval "test x\"\$$var\" != x" && env | grep "^$var=" >/dev/null; then
+    echo "$argv0: variable '$var' is set in the environment:" \
+         "this is unsafe" >&2
+    exit 99
+  fi
+done
+unset var
+
+# See whether the current test script is expected to use TAP or not.
+# Use a sensible default, while allowing the scripts to override this
+# check.
+if test -z "$am_using_tap"; then
+  case $argv0 in *.tap) am_using_tap=yes;; *) am_using_tap=no;; esac
+fi
+
+am_top_srcdir='@abs_srcdir@'
+am_top_builddir='@abs_builddir@'
+testprefix='@prefix@'
+
+# Where testsuite-related helper scripts, data files and shell libraries
+# are placed.
+am_testauxdir=$am_top_srcdir/t/ax
+
+# Support for the "installcheck" target.
+case ${am_running_installcheck:=no} in
+  yes)
+    am_amdir='@amdir@'
+    am_automake_acdir='@automake_acdir@'
+    am_bindir='@bindir@'
+    am_datadir='@datadir@'
+    am_docdir='@docdir@'
+    am_pkgvdatadir='@pkgvdatadir@'
+    am_scriptdir='@scriptdir@'
+    am_system_acdir='@system_acdir@'
+    ;;
+  no)
+    am_amdir=$am_top_srcdir/lib/am
+    am_automake_acdir=$am_top_srcdir/m4
+    am_bindir=$am_top_builddir/t/wrap
+    am_datadir=$am_top_srcdir
+    am_docdir=$am_top_srcdir/doc
+    am_pkgvdatadir=$am_top_srcdir/lib
+    am_scriptdir=$am_top_srcdir/lib
+    am_system_acdir=$am_top_srcdir/m4/acdir
+    ;;
+  *)
+    echo "$argv0: variable 'am_running_installcheck' has invalid"
+         "value '$am_running_installcheck'" >&2
+    exit 99
+    ;;
+esac
+
+APIVERSION='@APIVERSION@'
+PATH_SEPARATOR='@PATH_SEPARATOR@'
+
+host_alias=${host_alias-'@host_alias@'}; export host_alias
+build_alias=${build_alias-'@build_alias@'}; export build_alias
+
+# The shell we use to run our own test scripts, determined at configure
+# time.  It is required in the self tests, and most importantly for the
+# the automatic re-execution of test scripts.
+AM_TEST_RUNNER_SHELL='@AM_TEST_RUNNER_SHELL@'
+
+# Make sure we override the user shell.  And do not read the value of
+# $SHELL from the environment (think to the non-uncommon situation where
+# e.g., $SHELL=/bin/tcsh).
+SHELL=${AM_TESTSUITE_SHELL-'@SHELL@'}; export SHELL
+
+# User can override various tools used.  Prefer overriding specific for
+# that automake testsuite, if they are available.
+AWK=${AM_TESTSUITE_AWK-${AWK-'@AWK@'}}
+PERL=${AM_TESTSUITE_PERL-${PERL-'@PERL@'}}
+MAKE=${AM_TESTSUITE_MAKE-${MAKE-'make'}}
+YACC=${AM_TESTSUITE_YACC-${YACC-'@YACC@'}}
+LEX=${AM_TESTSUITE_LEX-${LEX-'@LEX@'}}
+AUTOCONF=${AM_TESTSUITE_AUTOCONF-${AUTOCONF-'@am_AUTOCONF@'}}
+AUTOM4TE=${AM_TESTSUITE_AUTOM4TE-${AUTOM4TE-'@am_AUTOM4TE@'}}
+AUTORECONF=${AM_TESTSUITE_AUTORECONF-${AUTORECONF-'@am_AUTORECONF@'}}
+AUTOHEADER=${AM_TESTSUITE_AUTOHEADER-${AUTOHEADER-'@am_AUTOHEADER@'}}
+AUTOUPDATE=${AM_TESTSUITE_AUTOUPDATE-${AUTOUPDATE-'@am_AUTOUPDATE@'}}
+
+# Tests who want complete control over aclocal or automake command-line
+# options should use $am_original_ACLOCAL or $am_original_AUTOMAKE.  The
+# "test -z" tests take care not to re-initialize them if defs-static
+# is re-sourced, as we want defs-static to remain really idempotent.
+if test -z "$am_original_AUTOMAKE"; then
+  am_original_AUTOMAKE=${AM_TESTSUITE_AUTOMAKE-${AUTOMAKE-"automake-$APIVERSION"}}
+fi
+if test -z "$am_original_ACLOCAL"; then
+  am_original_ACLOCAL=${AM_TESTSUITE_ACLOCAL-${ACLOCAL-"aclocal-$APIVERSION"}}
+fi
+
+# Use -Werror because this also turns some Perl warnings into error.
+# Tests for which this is inappropriate should use -Wno-error.
+# Tests who want complete control over aclocal command-line options
+# should use $am_original_ACLOCAL instead.
+ACLOCAL="$am_original_ACLOCAL -Werror"
+
+# See how Automake should be run.  We put --foreign as the default
+# strictness to avoid having to create lots and lots of files.  A test
+# can override this by specifying a different strictness.  Use -Wall
+# -Werror by default.  Tests for which this is inappropriate (e.g. when
+# testing that a warning is enabled by a specific switch) should use
+# -Wnone or/and -Wno-error.
+# Tests who want complete control over automake command-line options
+# should use $am_original_AUTOMAKE instead.
+AUTOMAKE="$am_original_AUTOMAKE --foreign -Werror -Wall"
+
+# POSIX no longer requires 'egrep' and 'fgrep',
+# but some hosts lack 'grep -E' and 'grep -F'.
+EGREP=${AM_TESTSUITE_EGREP-'@EGREP@'}
+FGREP=${AM_TESTSUITE_FGREP-'@FGREP@'}
+
+# Compilers and their flags.  These can point to non-GNU compilers (and
+# on non-Linux and non-BSD systems, they probably will).
+CC=${AM_TESTSUITE_CC-${CC-'@CC@'}}
+CXX=${AM_TESTSUITE_CXX-${CXX-'@CXX@'}}
+F77=${AM_TESTSUITE_F77-${F77-'@F77@'}}
+FC=${AM_TESTSUITE_FC-${FC-'@FC@'}}
+CFLAGS=${AM_TESTSUITE_CFLAGS-${CFLAGS-'@CFLAGS@'}}
+CXXFLAGS=${AM_TESTSUITE_CXXFLAGS-${CXXFLAGS-'@CXXFLAGS@'}}
+FCFLAGS=${AM_TESTSUITE_FCFLAGS-${FCFLAGS-'@FCFLAGS@'}}
+FFLAGS=${AM_TESTSUITE_FFLAGS-${FFLAGS-'@FFLAGS@'}}
+CPPFLAGS=${AM_TESTSUITE_CPPFLAGS-${CPPFLAGS-'@CPPFLAGS@'}}
+
+# GNU compilers and their flags.
+GNU_CC=${AM_TESTSUITE_GNU_CC-${GNU_CC-'@GNU_CC@'}}
+GNU_CXX=${AM_TESTSUITE_GNU_CXX-${GNU_CXX-'@GNU_CXX@'}}
+GNU_F77=${AM_TESTSUITE_GNU_F77-${GNU_F77-'@GNU_F77@'}}
+GNU_FC=${AM_TESTSUITE_GNU_FC-${GNU_FC-'@GNU_FC@'}}
+GNU_FFLAGS=${AM_TESTSUITE_GNU_FFLAGS-${GNU_FFLAGS-'@GNU_FFLAGS@'}}
+GNU_FCFLAGS=${AM_TESTSUITE_GNU_FCFLAGS-${GNU_FCFLAGS-'@GNU_FCFLAGS@'}}
+GNU_CXXFLAGS=${AM_TESTSUITE_GNU_CXXFLAGS-${GNU_CXXFLAGS-'@GNU_CXXFLAGS@'}}
+GNU_CFLAGS=${AM_TESTSUITE_GNU_CFLAGS-${GNU_CFLAGS-'@GNU_CFLAGS@'}}
+GNU_GCJ=${AM_TESTSUITE_GNU_GCJ-${GNU_GCJ-'@GNU_GCJ@'}}
+GNU_GCJFLAGS=${AM_TESTSUITE_GNU_GCJFLAGS-${GNU_GCJFLAGS-'@GNU_GCJFLAGS@'}}
+
+# No all versions of Tex support '--version', so we use a configure
+# check to decide if tex is available.  This decision is embodied in
+# this variable.
+TEX=${AM_TESTSUITE_TEX-'@TEX@'}
+
+# The amount we should wait after modifying files depends on the platform.
+# For instance, Windows '95, '98 and ME have 2-second granularity
+# and can be up to 3 seconds in the future w.r.t. the system clock.
+sleep='sleep @MODIFICATION_DELAY@'
+
+# An old timestamp that can be given to a file, in "touch -t" format.
+# The time stamp should be portable to all file systems of interest.
+# Just for fun, choose the exact time of the announcement of the GNU project
+# in UTC; see <http://www.gnu.org/gnu/initial-announcement.html>.
+old_timestamp=198309271735.59
+
+# Make our wrapper script (or installed scripts, if running under
+# "installcheck") accessible by default.  And avoid to uselessly
+# extend $PATH multiple times if this file is sourced multiple times.
+case $PATH in
+  $am_bindir$PATH_SEPARATOR*) ;;
+  *) PATH=$am_bindir$PATH_SEPARATOR$PATH;;
+esac
+
+# Make our helper script accessible by default.
+PATH=$am_testauxdir$PATH_SEPARATOR$PATH
+
+export PATH
diff --git a/doc/amhello-1.0.tar.gz b/doc/amhello-1.0.tar.gz
new file mode 100644 (file)
index 0000000..13c6b9d
Binary files /dev/null and b/doc/amhello-1.0.tar.gz differ
diff --git a/doc/amhello/Makefile.am b/doc/amhello/Makefile.am
new file mode 100644 (file)
index 0000000..8d230a8
--- /dev/null
@@ -0,0 +1,6 @@
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# This Makefile.am is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+SUBDIRS = src
+dist_doc_DATA = README
diff --git a/doc/amhello/README b/doc/amhello/README
new file mode 100644 (file)
index 0000000..d24723a
--- /dev/null
@@ -0,0 +1,2 @@
+This is a demonstration package for GNU Automake.
+Type `info Automake' to read the Automake manual.
diff --git a/doc/amhello/configure.ac b/doc/amhello/configure.ac
new file mode 100644 (file)
index 0000000..6d966a2
--- /dev/null
@@ -0,0 +1,13 @@
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# This configure.ac script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+AC_INIT([amhello], [1.0], [bug-automake@gnu.org])
+AM_INIT_AUTOMAKE([-Wall -Werror foreign])
+AC_PROG_CC
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([
+ Makefile
+ src/Makefile
+])
+AC_OUTPUT
diff --git a/doc/amhello/src/Makefile.am b/doc/amhello/src/Makefile.am
new file mode 100644 (file)
index 0000000..9e17883
--- /dev/null
@@ -0,0 +1,6 @@
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# This Makefile.am is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+bin_PROGRAMS = hello
+hello_SOURCES = main.c
diff --git a/doc/amhello/src/main.c b/doc/amhello/src/main.c
new file mode 100644 (file)
index 0000000..c782738
--- /dev/null
@@ -0,0 +1,14 @@
+/* Copyright (C) 2006-2012 Free Software Foundation, Inc.
+   This program is free software; the Free Software Foundation
+   gives unlimited permission to copy, distribute and modify it.  */
+
+#include <config.h>
+#include <stdio.h>
+
+int
+main (void)
+{
+  puts ("Hello World!");
+  puts ("This is " PACKAGE_STRING ".");
+  return 0;
+}
diff --git a/doc/automake-history.info b/doc/automake-history.info
new file mode 100644 (file)
index 0000000..ad592b1
--- /dev/null
@@ -0,0 +1,1672 @@
+This is doc/automake-history.info, produced by makeinfo version 4.13
+from ./doc/automake-history.texi.
+
+This manual describes (part of) the history of GNU Automake, a program
+that creates GNU standards-compliant Makefiles from template files.
+
+   Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with no Front-Cover texts,
+     and with no Back-Cover Texts.  A copy of the license is included
+     in the section entitled "GNU Free Documentation License."
+
+
+\1f
+File: automake-history.info,  Node: Top,  Next: Timeline,  Up: (dir)
+
+Brief History of Automake
+*************************
+
+This manual describes (part of) the history of GNU Automake, a program
+that creates GNU standards-compliant Makefiles from template files.
+
+   Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with no Front-Cover texts,
+     and with no Back-Cover Texts.  A copy of the license is included
+     in the section entitled "GNU Free Documentation License."
+
+
+* Menu:
+
+* Timeline::                      The Automake story.
+* Dependency Tracking Evolution:: Evolution of Automatic Dependency Tracking
+* Releases::                      Release statistics
+* Copying This Manual::           How to make copies of this manual
+
+ --- The Detailed Node Listing ---
+
+Evolution of Automatic Dependency Tracking
+
+* 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
+
+Techniques for Computing Dependencies
+
+* Recommendations for Tool Writers::
+* Future Directions for Dependencies::
+
+Copying This Manual
+
+* GNU Free Documentation License::  License for copying this manual
+
+\1f
+File: automake-history.info,  Node: Timeline,  Next: Dependency Tracking Evolution,  Prev: Top,  Up: Top
+
+1 Timeline
+**********
+
+1994-09-19 First CVS commit.
+     If we can trust the CVS repository, David J. MacKenzie (djm)
+     started working on Automake (or AutoMake, as it was spelt then)
+     this Monday.
+
+     The first version of the `automake' script looks as follows.
+
+          #!/bin/sh
+
+          status=0
+
+          for makefile
+          do
+            if test ! -f ${makefile}.am; then
+              echo "automake: ${makefile}.am: No such honkin' file"
+              status=1
+              continue
+            fi
+
+            exec 4> ${makefile}.in
+
+          done
+
+     From this you can already see that Automake will be about reading
+     `*.am' file and producing `*.in' files.  You cannot see anything
+     else, but if you also know that David is the one who created
+     Autoconf two years before you can guess the rest.
+
+     Several commits follow, and by the end of the day Automake is
+     reported to work for GNU fileutils and GNU m4.
+
+     The modus operandi is the one that is still used today: variable
+     assignments in `Makefile.am' files trigger injections of precanned
+     `Makefile' fragments into the generated `Makefile.in'.  The use of
+     `Makefile' fragments was inspired by the 4.4BSD `make' and include
+     files, however Automake aims to be portable and to conform to the
+     GNU standards for `Makefile' variables and targets.
+
+     At this point, the most recent release of Autoconf is version 1.11,
+     and David is preparing to release Autoconf 2.0 in late October.
+     As a matter of fact, he will barely touch Automake after September.
+
+1994-11-05 David MacKenzie's last commit.
+     At this point Automake is a 200 line portable shell script, plus
+     332 lines of `Makefile' fragments.  In the `README', David states
+     his ambivalence between "portable shell" and "more appropriate
+     language":
+
+          I wrote it keeping in mind the possibility of it becoming an
+          Autoconf macro, so it would run at configure-time.  That
+          would slow configuration down a bit, but allow users to
+          modify the Makefile.am without needing to fetch the AutoMake
+          package.  And, the Makefile.in files wouldn't need to be
+          distributed.  But all of AutoMake would.  So I might
+          reimplement AutoMake in Perl, m4, or some other more
+          appropriate language.
+
+     Automake is described as "an experimental Makefile generator".
+     There is no documentation.  Adventurous users are referred to the
+     examples and patches needed to use Automake with GNU m4 1.3,
+     fileutils 3.9, time 1.6, and development versions of find and
+     indent.
+
+     These examples seem to have been lost.  However at the time of
+     writing (10 years later in September, 2004) the FSF still
+     distributes a package that uses this version of Automake: check
+     out GNU termutils 2.0.
+
+1995-11-12 Tom Tromey's first commit.
+     After one year of inactivity, Tom Tromey takes over the package.
+     Tom was working on GNU cpio back then, and doing this just for fun,
+     having trouble finding a project to contribute to.  So while
+     hacking he wanted to bring the `Makefile.in' up to GNU standards.
+     This was hard, and one day he saw Automake on
+     `ftp://alpha.gnu.org/', grabbed it and tried it out.
+
+     Tom didn't talk to djm about it until later, just to make sure he
+     didn't mind if he made a release.  He did a bunch of early
+     releases to the Gnits folks.
+
+     Gnits was (and still is) totally informal, just a few GNU friends
+     who Franc,ois Pinard knew, who were all interested in making a
+     common infrastructure for GNU projects, and shared a similar
+     outlook on how to do it.  So they were able to make some progress.
+     It came along with Autoconf and extensions thereof, and then
+     Automake from David and Tom (who were both gnitsians).  One of
+     their ideas was to write a document paralleling the GNU standards,
+     that was more strict in some ways and more detailed.  They never
+     finished the GNITS standards, but the ideas mostly made their way
+     into Automake.
+
+1995-11-23 Automake 0.20
+     Besides introducing automatic dependency tracking (*note
+     Dependency Tracking Evolution::), this version also supplies a
+     9-page manual.
+
+     At this time `aclocal' and `AM_INIT_AUTOMAKE' did not exist, so
+     many things had to be done by hand.  For instance, here is what a
+     configure.in (this is the former name of the `configure.ac' we use
+     today) must contain in order to use Automake 0.20:
+
+          PACKAGE=cpio
+          VERSION=2.3.911
+          AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
+          AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
+          AC_SUBST(PACKAGE)
+          AC_SUBST(VERSION)
+          AC_ARG_PROGRAM
+          AC_PROG_INSTALL
+
+     (Today all of the above is achieved by `AC_INIT' and
+     `AM_INIT_AUTOMAKE'.)
+
+     Here is how programs are specified in `Makefile.am':
+
+          PROGRAMS = hello
+          hello_SOURCES = hello.c
+
+     This looks pretty much like what we do today, except the
+     `PROGRAMS' variable has no directory prefix specifying where
+     `hello' should be installed: all programs are installed in
+     `$(bindir)'.  `LIBPROGRAMS' can be used to specify programs that
+     must be built but not installed (it is called `noinst_PROGRAMS'
+     nowadays).
+
+     Programs can be built conditionally using `AC_SUBST'itutions:
+
+          PROGRAMS = @progs@
+          AM_PROGRAMS = foo bar baz
+
+     (`AM_PROGRAMS' has since then been renamed to `EXTRA_PROGRAMS'.)
+
+     Similarly scripts, static libraries, and data can be built and
+     installed using the `LIBRARIES', `SCRIPTS', and `DATA' variables.
+     However `LIBRARIES' were treated a bit specially in that Automake
+     did automatically supply the `lib' and `.a' prefixes.  Therefore
+     to build `libcpio.a', one had to write
+
+          LIBRARIES = cpio
+          cpio_SOURCES = ...
+
+     Extra files to distribute must be listed in `DIST_OTHER' (the
+     ancestor of `EXTRA_DIST').  Also extra directories that are to be
+     distributed should appear in `DIST_SUBDIRS', but the manual
+     describes this as a temporary ugly hack (today extra directories
+     should also be listed in `EXTRA_DIST', and `DIST_SUBDIRS' is used
+     for another purpose, *note Conditional Subdirectories:
+     (automake)Conditional Subdirectories.).
+
+1995-11-26 Automake 0.21
+     In less time than it takes to cook a frozen pizza, Tom rewrites
+     Automake using Perl.  At this time Perl 5 is only one year old, and
+     Perl 4.036 is in use at many sites.  Supporting several Perl
+     versions has been a source of problems through the whole history
+     of Automake.
+
+     If you never used Perl 4, imagine Perl 5 without objects, without
+     `my' variables (only dynamically scoped `local' variables),
+     without function prototypes, with function calls that needs to be
+     prefixed with `&', etc.  Traces of this old style can still be
+     found in today's `automake'.
+
+1995-11-28 Automake 0.22
+1995-11-29 Automake 0.23
+     Bug fixes.
+
+1995-12-08 Automake 0.24
+1995-12-10 Automake 0.25
+     Releases are raining.  0.24 introduces the uniform naming scheme we
+     use today, i.e., `bin_PROGRAMS' instead of `PROGRAMS',
+     `noinst_LIBRARIES' instead of `LIBLIBRARIES', etc.  (However
+     `EXTRA_PROGRAMS' does not exist yet, `AM_PROGRAMS' is still in
+     use; and `TEXINFOS' and `MANS' still have no directory prefixes.)
+     Adding support for prefixes like that was one of the major ideas
+     in `automake'; it has lasted pretty well.
+
+     AutoMake is renamed to Automake (Tom seems to recall it was
+     Franc,ois Pinard's doing).
+
+     0.25 fixes a Perl 4 portability bug.
+
+1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
+
+1995-12-31 Franc,ois Pinard starts using Automake in GNU tar.
+
+1996-01-03 Automake 0.26
+1996-01-03 Automake 0.27
+     Of the many changes and suggestions sent by Franc,ois Pinard and
+     included in 0.26, perhaps the most important is the advice that to
+     ease customization a user rule or variable definition should always
+     override an Automake rule or definition.
+
+     Gordon Matzigkeit and Jim Meyering are two other early contributors
+     that have been sending fixes.
+
+     0.27 fixes yet another Perl 4 portability bug.
+
+1996-01-13 Automake 0.28
+     Automake starts scanning `configure.in' for `LIBOBJS' support.
+     This is an important step because until this version Automake only
+     knew about the `Makefile.am's it processed.  `configure.in' was
+     Autoconf's world and the link between Autoconf and Automake had to
+     be done by the `Makefile.am' author.  For instance, if `config.h'
+     was generated by `configure', it was the package maintainer's
+     responsibility to define the `CONFIG_HEADER' variable in each
+     `Makefile.am'.
+
+     Succeeding releases will rely more and more on scanning
+     `configure.in' to better automate the Autoconf integration.
+
+     0.28 also introduces the `AUTOMAKE_OPTIONS' variable and the
+     `--gnu' and `--gnits' options, the latter being stricter.
+
+1996-02-07 Automake 0.29
+     Thanks to `configure.in' scanning, `CONFIG_HEADER' is gone, and
+     rebuild rules for `configure'-generated file are automatically
+     output.
+
+     `TEXINFOS' and `MANS' converted to the uniform naming scheme.
+
+1996-02-24 Automake 0.30
+     The test suite is born.  It contains 9 tests.  From now on test
+     cases will be added pretty regularly (*note Releases::), and this
+     proved to be really helpful later on.
+
+     `EXTRA_PROGRAMS' finally replaces `AM_PROGRAMS'.
+
+     All the third-party Autoconf macros, written mostly by Franc,ois
+     Pinard (and later Jim Meyering), are distributed in Automake's
+     hand-written `aclocal.m4' file.  Package maintainers are expected
+     to extract the necessary macros from this file.  (In previous
+     versions you had to copy and paste them from the manual...)
+
+1996-03-11 Automake 0.31
+     The test suite in 0.30 was run via a long `check-local' rule.  Upon
+     Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
+     whenever the `TESTS' variable is defined.
+
+     `DIST_OTHER' is renamed to `EXTRA_DIST', and the `check_' prefix
+     is introduced.  The syntax is now the same as today.
+
+1996-03-15 Gordon Matzigkeit starts writing libtool.
+
+1996-04-27 Automake 0.32
+     `-hook' targets are introduced; an idea from Dieter Baron.
+
+     `*.info' files, which were output in the build directory are now
+     built in the source directory, because they are distributed.  It
+     seems these files like to move back and forth as that will happen
+     again in future versions.
+
+1996-05-18 Automake 0.33
+     Gord Matzigkeit's main two contributions:
+
+        * very preliminary libtool support
+
+        * the distcheck rule
+
+     Although they were very basic at this point, these are probably
+     among the top features for Automake today.
+
+     Jim Meyering also provides the infamous `jm_MAINTAINER_MODE', since
+     then renamed to `AM_MAINTAINER_MODE' and abandoned by its author
+     (*note maintainer-mode: (automake)maintainer-mode.).
+
+1996-05-28 Automake 1.0
+     After only six months of heavy development, the `automake' script
+     is 3134 lines long, plus 973 lines of `Makefile' fragments.  The
+     package has 30 pages of documentation, and 38 test cases.
+     `aclocal.m4' contains 4 macros.
+
+     From now on and until version 1.4, new releases will occur at a
+     rate of about one a year.  1.1 did not exist, actually 1.1b to
+     1.1p have been the name of beta releases for 1.2.  This is the
+     first time Automake uses suffix letters to designate beta
+     releases, a habit that lasts.
+
+1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
+
+1996-11-26 David J. MacKenzie releases Autoconf 2.12.
+     Between June and October, the Autoconf development is almost
+     stalled.  Roland McGrath has been working at the beginning of the
+     year.  David comes back in November to release 2.12, but he won't
+     touch Autoconf anymore after this year, and Autoconf then really
+     stagnates.  The desolate Autoconf `ChangeLog' for 1997 lists only
+     7 commits.
+
+1997-02-28 <automake@gnu.ai.mit.edu> list alive
+     The mailing list is announced as follows:
+          I've created the "automake" mailing list.  It is
+          "automake@gnu.ai.mit.edu".  Administrivia, as always, to
+          automake-request@gnu.ai.mit.edu.
+
+          The charter of this list is discussion of automake, autoconf, and
+          other configuration/portability tools (e.g., libtool).  It is expected
+          that discussion will range from pleas for help all the way up to
+          patches.
+
+          This list is archived on the FSF machines.  Offhand I don't know if
+          you can get the archive without an account there.
+
+          This list is open to anybody who wants to join.  Tell all your
+          friends!
+          -- Tom Tromey
+
+     Before that people were discussing Automake privately, on the Gnits
+     mailing list (which is not public either), and less frequently on
+     `gnu.misc.discuss'.
+
+     `gnu.ai.mit.edu' is now `gnu.org', in case you never noticed.  The
+     archives of the early years of the `automake@gnu.org' list have
+     been lost, so today it is almost impossible to find traces of
+     discussions that occurred before 1999.  This has been annoying
+     more than once, as such discussions can be useful to understand
+     the rationale behind a piece of uncommented code that was
+     introduced back then.
+
+1997-06-22 Automake 1.2
+     Automake developments continues, and more and more new Autoconf
+     macros are required.  Distributing them in `aclocal.m4' and
+     requiring people to browse this file to extract the relevant
+     macros becomes uncomfortable.  Ideally, some of them should be
+     contributed to Autoconf so that they can be used directly, however
+     Autoconf is currently inactive.  Automake 1.2 consequently
+     introduces `aclocal' (`aclocal' was actually started on
+     1996-07-28), a tool that automatically constructs an `aclocal.m4'
+     file from a repository of third-party macros.  Because Autoconf has
+     stalled, Automake also becomes a kind of repository for such
+     third-party macros, even macros completely unrelated to Automake
+     (for instance macros that fix broken Autoconf macros).
+
+     The 1.2 release contains 20 macros, including the
+     `AM_INIT_AUTOMAKE' macro that simplifies the creation of
+     `configure.in'.
+
+     Libtool is fully supported using `*_LTLIBRARIES'.
+
+     The missing script is introduced by Franc,ois Pinard; it is meant
+     to be a better solution than `AM_MAINTAINER_MODE' (*note
+     maintainer-mode: (automake)maintainer-mode.).
+
+     Conditionals support was implemented by Ian Lance Taylor.  At the
+     time, Tom and Ian were working on an internal project at Cygnus.
+     They were using ILU, which is pretty similar to CORBA.  They
+     wanted to integrate ILU into their build, which was all
+     `configure'-based, and Ian thought that adding conditionals to
+     `automake' was simpler than doing all the work in `configure'
+     (which was the standard at the time).  So this was actually funded
+     by Cygnus.
+
+     This very useful but tricky feature will take a lot of time to
+     stabilize.  (At the time this text is written, there are still
+     primaries that have not been updated to support conditional
+     definitions in Automake 1.9.)
+
+     The `automake' script has almost doubled: 6089 lines of Perl, plus
+     1294 lines of `Makefile' fragments.
+
+1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
+
+1998-04-05 Automake 1.3
+     This is a small advance compared to 1.2.  It adds support for
+     assembly, and preliminary support for Java.
+
+     Perl 5.004_04 is out, but fixes to support Perl 4 are still
+     regularly submitted whenever Automake breaks it.
+
+1998-09-06 `sourceware.cygnus.com' is on-line.
+     Sourceware was setup by Jason Molenda to host open source projects.
+
+1998-09-19  Automake CVS repository moved to `sourceware.cygnus.com'
+1998-10-26  `sourceware.cygnus.com' announces it hosts Automake:
+     Automake is now hosted on `sourceware.cygnus.com'.  It has a
+     publicly accessible CVS repository.  This CVS repository is a copy
+     of the one Tom was using on his machine, which in turn is based on
+     a copy of the CVS repository of David MacKenzie.  This is why we
+     still have to full source history.  (Automake was on Sourceware
+     until 2007-10-29, when it moved to a git repository on
+     `savannah.gnu.org', but the Sourceware host had been renamed to
+     `sources.redhat.com'.)
+
+     The oldest file in the administrative directory of the CVS
+     repository that was created on Sourceware is dated 1998-09-19,
+     while the announcement that `automake' and `autoconf' had joined
+     `sourceware' was made on 1998-10-26.  They were among the first
+     projects to be hosted there.
+
+     The heedful reader will have noticed Automake was exactly 4 years
+     old on 1998-09-19.
+
+1999-01-05 Ben Elliston releases Autoconf 2.13.
+
+1999-01-14 Automake 1.4
+     This release adds support for Fortran 77 and for the `include'
+     statement.  Also, `+=' assignments are introduced, but it is still
+     quite easy to fool Automake when mixing this with conditionals.
+
+     These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
+     will be used together for years.
+
+     `automake' is 7228 lines, plus 1591 lines of Makefile fragment, 20
+     macros (some 1.3 macros were finally contributed back to
+     Autoconf), 197 test cases, and 51 pages of documentation.
+
+1999-03-27 The `user-dep-branch' is created on the CVS repository.
+     This implements a new dependency tracking schemed that should be
+     able to handle automatic dependency tracking using any compiler
+     (not just gcc) and any make (not just GNU `make').  In addition,
+     the new scheme should be more reliable than the old one, as
+     dependencies are generated on the end user's machine.  Alexandre
+     Oliva creates depcomp for this purpose.
+
+     *Note Dependency Tracking Evolution::, for more details about the
+     evolution of automatic dependency tracking in Automake.
+
+1999-11-21 The `user-dep-branch' is merged into the main trunk.
+     This was a huge problem since we also had patches going in on the
+     trunk.  The merge took a long time and was very painful.
+
+2000-05-10
+     Since September 1999 and until 2003, Akim Demaille will be
+     zealously revamping Autoconf.
+
+          I think the next release should be called "3.0".
+          Let's face it: you've basically rewritten autoconf.
+          Every weekend there are 30 new patches.
+          I don't see how we could call this "2.15" with a straight
+          face.
+          - Tom Tromey on <autoconf@gnu.org>
+
+     Actually Akim works like a submarine: he will pile up patches
+     while he works off-line during the weekend, and flush them in
+     batch when he resurfaces on Monday.
+
+2001-01-24
+     On this Wednesday, Autoconf 2.49c, the last beta before Autoconf
+     2.50 is out, and Akim has to find something to do during his
+     week-end :)
+
+2001-01-28
+     Akim sends a batch of 14 patches to <automake@gnu.org>.
+
+          Aiieeee!  I was dreading the day that the Demaillator turned
+          his sights on automake... and now it has arrived! - Tom Tromey
+
+     It's only the beginning: in two months he will send 192 patches.
+     Then he would slow down so Tom can catch up and review all this.
+     Initially Tom actually read all these patches, then he probably
+     trustingly answered OK to most of them, and finally gave up and
+     let Akim apply whatever he wanted.  There was no way to keep up
+     with that patch rate.
+
+          Anyway the patch below won't apply since it predates Akim's
+          sourcequake; I have yet to figure where the relevant passage
+          has been moved :) - Alexandre Duret-Lutz
+
+     All these patches were sent to and discussed on
+     <automake@gnu.org>, so subscribed users were literally drowning in
+     technical mails.  Eventually, the <automake-patches@gnu.org>
+     mailing list was created in May.
+
+     Year after year, Automake had drifted away from its initial design:
+     construct `Makefile.in' by assembling various `Makefile'
+     fragments.  In 1.4, lots of `Makefile' rules are being emitted at
+     various places in the `automake' script itself; this does not help
+     ensuring a consistent treatment of these rules (for instance
+     making sure that user-defined rules override Automake's own rules).
+     One of Akim's goal was moving all these hard-coded rules to
+     separate `Makefile' fragments, so the logic could be centralized
+     in a `Makefile' fragment processor.
+
+     Another significant contribution of Akim is the interface with the
+     "trace" feature of Autoconf.  The way to scan `configure.in' at
+     this time was to read the file and grep the various macro of
+     interest to Automake.  Doing so could break in many unexpected
+     ways; `automake' could miss some definition (for instance
+     `AC_SUBST([$1], [$2])' where the arguments are known only when M4
+     is run), or conversely it could detect some macro that was not
+     expanded (because it is called conditionally).  In the CVS version
+     of Autoconf, Akim had implemented the `--trace' option, which
+     provides accurate information about where macros are actually
+     called and with what arguments.  Akim will equip Automake with a
+     second `configure.in' scanner that uses this `--trace' interface.
+     Since it was not sensible to drop the Autoconf 2.13 compatibility
+     yet, this experimental scanner was only used when an environment
+     variable was set, the traditional grep-scanner being still the
+     default.
+
+2001-04-25 Gary V. Vaughan releases Libtool 1.4
+     It has been more than two years since Automake 1.4, CVS Automake
+     has suffered lot's of heavy changes and still is not ready for
+     release.  Libtool 1.4 had to be distributed with a patch against
+     Automake 1.4.
+
+2001-05-08 Automake 1.4-p1
+2001-05-24 Automake 1.4-p2
+     Gary V. Vaughan, the principal Libtool maintainer, makes a "patch
+     release" of Automake:
+
+          The main purpose of this release is to have a stable automake
+          which is compatible with the latest stable libtool.
+
+     The release also contains obvious fixes for bugs in Automake 1.4,
+     some of which were reported almost monthly.
+
+2001-05-21 Akim Demaille releases Autoconf 2.50
+
+2001-06-07 Automake 1.4-p3
+2001-06-10 Automake 1.4-p4
+2001-07-15 Automake 1.4-p5
+     Gary continues his patch-release series.  These also add support
+     for some new Autoconf 2.50 idioms.  Essentially, Autoconf now
+     advocates `configure.ac' over `configure.in', and it introduces a
+     new syntax for `AC_OUTPUT'ing files.
+
+2001-08-23 Automake 1.5
+     A major and long-awaited release, that comes more than two years
+     after 1.4.  It brings many changes, among which:
+        * The new dependency tracking scheme that uses `depcomp'.
+          Aside from the improvement on the dependency tracking itself
+          (*note Dependency Tracking Evolution::), this also
+          streamlines the use of `automake'-generated `Makefile.in's as
+          the `Makefile.in's used during development are now the same
+          as those used in distributions.  Before that the
+          `Makefile.in's generated for maintainers required GNU `make'
+          and GCC, they were different from the portable `Makefile'
+          generated for distribution; this was causing some confusion.
+
+        * Support for per-target compilation flags.
+
+        * Support for reference to files in subdirectories in most
+          `Makefile.am' variables.
+
+        * Introduction of the `dist_', `nodist_', and `nobase_'
+          prefixes.
+
+        * Perl 4 support is finally dropped.
+
+     1.5 did break several packages that worked with 1.4.  Enough so
+     that Linux distributions could not easily install the new Automake
+     version without breaking many of the packages for which they had
+     to run `automake'.
+
+     Some of these breakages were effectively bugs that would
+     eventually be fixed in the next release.  However, a lot of damage
+     was caused by some changes made deliberately to render Automake
+     stricter on some setup we did consider bogus.  For instance, `make
+     distcheck' was improved to check that `make uninstall' did remove
+     all the files `make install' installed, that `make distclean' did
+     not omit some file, and that a VPATH build would work even if the
+     source directory was read-only.  Similarly, Automake now rejects
+     multiple definitions of the same variable (because that would mix
+     very badly with conditionals), and `+=' assignments with no
+     previous definition.  Because these changes all occurred suddenly
+     after 1.4 had been established for more than two years, it hurt
+     users.
+
+     To make matter worse, meanwhile Autoconf (now at version 2.52) was
+     facing similar troubles, for similar reasons.
+
+2002-03-05 Automake 1.6
+     This release introduced versioned installation (*note API
+     Versioning: (automake)API 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 Autoconf 2.13 and Automake
+     1.4.
+
+     The idea was to call this version `automake-1.6', call all its
+     bug-fix versions identically, and switch to `automake-1.7' for the
+     next release that adds new features or changes some rules.  This
+     scheme implies maintaining a bug-fix branch in addition to the
+     development trunk, which means more work from the maintainer, but
+     providing regular bug-fix releases proved to be really worthwhile.
+
+     Like 1.5, 1.6 also introduced a bunch of incompatibilities,
+     intentional or not.  Perhaps the more annoying was the dependence
+     on the newly released Autoconf 2.53.  Autoconf seemed to have
+     stabilized enough since its explosive 2.50 release and included
+     changes required to fix some bugs in Automake.  In order to
+     upgrade to Automake 1.6, people now had to upgrade Autoconf too;
+     for some packages it was no picnic.
+
+     While versioned installation helped people to upgrade, it also
+     unfortunately allowed people not to upgrade.  At the time of
+     writing, some Linux distributions are shipping packages for
+     Automake 1.4, 1.5, 1.6, 1.7, 1.8, and 1.9.  Most of these still
+     install 1.4 by default.  Some distribution also call 1.4 the
+     "stable" version, and present "1.9" as the development version;
+     this does not really makes sense since 1.9 is way more solid than
+     1.4.  All this does not help the newcomer.
+
+2002-04-11 Automake 1.6.1
+     1.6, and the upcoming 1.4-p6 release were the last release by Tom.
+     This one and those following will be handled by Alexandre
+     Duret-Lutz.  Tom is still around, and will be there until about
+     1.7, but his interest into Automake is drifting away towards
+     projects like `gcj'.
+
+     Alexandre has been using Automake since 2000, and started to
+     contribute mostly on Akim's incitement (Akim and Alexandre have
+     been working in the same room from 1999 to 2002).  In 2001 and
+     2002 he had a lot of free time to enjoy hacking Automake.
+
+2002-06-14 Automake 1.6.2
+
+2002-07-28 Automake 1.6.3
+2002-07-28 Automake 1.4-p6
+     Two releases on the same day.  1.6.3 is a bug-fix release.
+
+     Tom Tromey backported the versioned installation mechanism on the
+     1.4 branch, so that Automake 1.6.x and Automake 1.4-p6 could be
+     installed side by side.  Another request from the GNOME folks.
+
+2002-09-25 Automake 1.7
+     This release switches to the new `configure.ac' scanner Akim was
+     experimenting in 1.5.
+
+2002-10-16 Automake 1.7.1
+2002-12-06 Automake 1.7.2
+2003-02-20 Automake 1.7.3
+2003-04-23 Automake 1.7.4
+2003-05-18 Automake 1.7.5
+2003-07-10 Automake 1.7.6
+2003-09-07 Automake 1.7.7
+2003-10-07 Automake 1.7.8
+     Many bug-fix releases.  1.7 lasted because the development version
+     (upcoming 1.8) was suffering some major internal revamping.
+
+2003-10-26 Automake on screen
+     Episode 49, `Repercussions', in the third season of the `Alias' TV
+     show is first aired.
+
+     Marshall, one of the characters, is working on a computer virus
+     that he has to modify before it gets into the wrong hands or
+     something like that.  The screenshots you see do not show any
+     program code, they show a `Makefile.in' generated by automake...
+
+2003-11-09 Automake 1.7.9
+
+2003-12-10 Automake 1.8
+     The most striking update is probably that of `aclocal'.
+
+     `aclocal' now uses `m4_include' in the produced `aclocal.m4' when
+     the included macros are already distributed with the package (an
+     idiom used in many packages), which reduces code duplication.
+     Many people liked that, but in fact this change was really
+     introduced to fix a bug in rebuild rules: `Makefile.in' must be
+     rebuilt whenever a dependency of `configure' changes, but all the
+     `m4' files included in `aclocal.m4' where unknown from `automake'.
+     Now `automake' can just trace the `m4_include's to discover the
+     dependencies.
+
+     `aclocal' also starts using the `--trace' Autoconf option in order
+     to discover used macros more accurately.  This will turn out to be
+     very tricky (later releases will improve this) as people had
+     devised many ways to cope with the limitation of previous
+     `aclocal' versions, notably using handwritten `m4_include's:
+     `aclocal' must make sure not to redefine a rule that is already
+     included by such statement.
+
+     Automake also has seen its guts rewritten.  Although this rewriting
+     took a lot of efforts, it is only apparent to the users in that
+     some constructions previously disallowed by the implementation now
+     work nicely.  Conditionals, Locations, Variable and Rule
+     definitions, Options: these items on which Automake works have
+     been rewritten as separate Perl modules, and documented.
+
+2004-01-11 Automake 1.8.1
+2004-01-12 Automake 1.8.2
+2004-03-07 Automake 1.8.3
+2004-04-25 Automake 1.8.4
+2004-05-16 Automake 1.8.5
+
+2004-07-28 Automake 1.9
+     This release tries to simplify the compilation rules it outputs to
+     reduce the size of the Makefile.  The complaint initially come from
+     the libgcj developers.  Their `Makefile.in' generated with
+     Automake 1.4 and custom build rules (1.4 did not support compiled
+     Java) is 250KB.  The one generated by 1.8 was over 9MB!  1.9 gets
+     it down to 1.2MB.
+
+     Aside from this it contains mainly minor changes and bug-fixes.
+
+2004-08-11 Automake 1.9.1
+2004-09-19 Automake 1.9.2
+     Automake has ten years.  This chapter of the manual was initially
+     written for this occasion.
+
+2007-10-29 Automake repository moves to `savannah.gnu.org'
+     and uses git as primary repository.
+
+
+\1f
+File: automake-history.info,  Node: Dependency Tracking Evolution,  Next: Releases,  Prev: Timeline,  Up: Top
+
+2 Evolution of Automatic Dependency Tracking
+********************************************
+
+Over the years Automake has deployed three different dependency
+tracking methods.  Each method, including the current one, has had
+flaws of various sorts.  Here we lay out the different dependency
+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.
+
+* Menu:
+
+* 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
+
+\1f
+File: automake-history.info,  Node: First Take on Dependencies,  Next: Dependencies As Side Effects,  Up: Dependency Tracking Evolution
+
+2.1 First Take on Dependency Tracking
+=====================================
+
+Description
+-----------
+
+Our first attempt at automatic dependency tracking was based on the
+method recommended by GNU `make'.  (*note Generating Prerequisites
+Automatically: (make)Automatic Prerequisites.)
+
+   This version worked by precomputing dependencies ahead of time.  For
+each source file, it had a special `.P' file that held the
+dependencies.  There was a rule to generate a `.P' file by invoking the
+compiler appropriately.  All such `.P' files were included by the
+`Makefile', thus implicitly becoming dependencies of `Makefile'.
+
+Bugs
+----
+
+This approach had several critical bugs.
+
+   * The code to generate the `.P' file relied on `gcc'.  (A
+     limitation, not technically a bug.)
+
+   * The dependency tracking mechanism itself relied on GNU `make'.  (A
+     limitation, not technically a bug.)
+
+   * Because each `.P' file was a dependency of `Makefile', this meant
+     that dependency tracking was done eagerly by `make'.  For
+     instance, `make clean' would cause all the dependency files to be
+     updated, and then immediately removed.  This eagerness also caused
+     problems with some configurations; if a certain source file could
+     not be compiled on a given architecture for some reason,
+     dependency tracking would fail, aborting the entire build.
+
+   * As dependency tracking was done as a pre-pass, compile times were
+     doubled-the compiler had to be run twice per source file.
+
+   * `make dist' re-ran `automake' to generate a `Makefile' that did
+     not have automatic dependency tracking (and that was thus portable
+     to any version of `make').  In order to do this portably, Automake
+     had to scan the dependency files and remove any reference that was
+     to a source file not in the distribution.  This process was
+     error-prone.  Also, if `make dist' was run in an environment where
+     some object file had a dependency on a source file that was only
+     conditionally created, Automake would generate a `Makefile' that
+     referred to a file that might not appear in the end user's build.
+     A special, hacky mechanism was required to work around this.
+
+Historical Note
+---------------
+
+The code generated by Automake is often inspired by the `Makefile'
+style of a particular author.  In the case of the first 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.)
+
+\1f
+File: automake-history.info,  Node: Dependencies As Side Effects,  Next: Dependencies for the User,  Prev: First Take on Dependencies,  Up: Dependency Tracking Evolution
+
+2.2 Dependencies As Side Effects
+================================
+
+Description
+-----------
+
+The next refinement of Automake's automatic dependency tracking scheme
+was to implement dependencies as side effects of the compilation.  This
+was aimed at solving the most commonly reported problems with the first
+approach.  In particular we were most concerned with eliminating the
+weird rebuilding effect associated with make clean.
+
+   In this approach, the `.P' files were included using the `-include'
+command, which let us create these files lazily.  This avoided the
+`make clean' problem.
+
+   We only computed dependencies when a file was actually compiled.
+This avoided the performance penalty associated with scanning each file
+twice.  It also let us avoid the other problems associated with the
+first, eager, implementation.  For instance, dependencies would never
+be generated for a source file that was not compilable on a given
+architecture (because it in fact would never be compiled).
+
+Bugs
+----
+
+   * This approach also relied on the existence of `gcc' and GNU
+     `make'.  (A limitation, not technically a bug.)
+
+   * Dependency tracking was still done by the developer, so the
+     problems from the first implementation relating to massaging of
+     dependencies by `make dist' were still in effect.
+
+   * This implementation suffered from the "deleted header file"
+     problem.  Suppose a lazily-created `.P' file includes a dependency
+     on a given header file, like this:
+
+          maude.o: maude.c something.h
+
+     Now suppose that you remove `something.h' and update `maude.c' so
+     that this include is no longer needed.  If you run `make', you
+     will get an error because there is no way to create `something.h'.
+
+     We fixed this problem in a later release by further massaging the
+     output of `gcc' to include a dummy dependency for each header file.
+
+\1f
+File: automake-history.info,  Node: Dependencies for the User,  Next: Techniques for Dependencies,  Prev: Dependencies As Side Effects,  Up: Dependency Tracking Evolution
+
+2.3 Dependencies for the User
+=============================
+
+Description
+-----------
+
+The bugs associated with `make dist', over time, became a real problem.
+Packages using Automake were being built on a large number of
+platforms, and were becoming increasingly complex.  Broken dependencies
+were distributed in "portable" `Makefile.in's, leading to user
+complaints.  Also, the requirement for `gcc' and GNU `make' was a
+constant source of bug reports.  The next implementation of dependency
+tracking aimed to remove these problems.
+
+   We realized that the only truly reliable way to automatically track
+dependencies was to do it when the package itself was built.  This
+meant discovering a method portable to any version of make and any
+compiler.  Also, we wanted to preserve what we saw as the best point of
+the second implementation: dependency computation as a side effect of
+compilation.
+
+   In the end we found that most modern make implementations support
+some form of include directive.  Also, we wrote a wrapper script that
+let us abstract away differences between dependency tracking methods for
+compilers.  For instance, some compilers cannot generate dependencies
+as a side effect of compilation.  In this case we simply have the
+script run the compiler twice.  Currently our wrapper script
+(`depcomp') knows about twelve different compilers (including a
+"compiler" that simply invokes `makedepend' and then the real compiler,
+which is assumed to be a standard Unix-like C compiler with no way to
+do dependency tracking).
+
+Bugs
+----
+
+   * Running a wrapper script for each compilation slows down the build.
+
+   * Many users don't really care about precise dependencies.
+
+   * This implementation, like every other automatic dependency tracking
+     scheme in common use today (indeed, every one we've ever heard of),
+     suffers from the "duplicated new header" bug.
+
+     This bug occurs because dependency tracking tools, such as the
+     compiler, only generate dependencies on the successful opening of a
+     file, and not on every probe.
+
+     Suppose for instance that the compiler searches three directories
+     for a given header, and that the header is found in the third
+     directory.  If the programmer erroneously adds a header file with
+     the same name to the first directory, then a clean rebuild from
+     scratch could fail (suppose the new header file is buggy), whereas
+     an incremental rebuild will succeed.
+
+     What has happened here is that people have a misunderstanding of
+     what a dependency is.  Tool writers think a dependency encodes
+     information about which files were read by the compiler.  However,
+     a dependency must actually encode information about what the
+     compiler tried to do.
+
+     This problem is not serious in practice.  Programmers typically do
+     not use the same name for a header file twice in a given project.
+     (At least, not in C or C++.  This problem may be more troublesome
+     in Java.)  This problem is easy to fix, by modifying dependency
+     generators to record every probe, instead of every successful open.
+
+   * Since Automake generates dependencies as a side effect of
+     compilation, there is a bootstrapping problem when header files
+     are generated by running a program.  The problem is that, the
+     first time the build is done, there is no way by default to know
+     that the headers are required, so make might try to run a
+     compilation for which the headers have not yet been built.
+
+     This was also a problem in the previous dependency tracking
+     implementation.
+
+     The current fix is to use `BUILT_SOURCES' to list built headers
+     (*note Sources: (automake)Sources.).  This causes them to be built
+     before any other build rules are run.  This is unsatisfactory as a
+     general solution, however in practice it seems sufficient for most
+     actual programs.
+
+   This code is used since Automake 1.5.
+
+   In GCC 3.0, we managed to convince the maintainers to add special
+command-line options to help Automake more efficiently do its job.  We
+hoped this would let us avoid the use of a wrapper script when
+Automake's automatic dependency tracking was used with `gcc'.
+
+   Unfortunately, this code doesn't quite do what we want.  In
+particular, it removes the dependency file if the compilation fails;
+we'd prefer that it instead only touch the file in any way if the
+compilation succeeds.
+
+   Nevertheless, since Automake 1.7, when a recent `gcc' is detected at
+`configure' time, we inline the dependency-generation code and do not
+use the `depcomp' wrapper script.  This makes compilations faster for
+those using this compiler (probably our primary user base).  The
+counterpart is that because we have to encode two compilation rules in
+`Makefile' (with or without `depcomp'), the produced `Makefile's are
+larger.
+
+\1f
+File: automake-history.info,  Node: Techniques for Dependencies,  Prev: Dependencies for the User,  Up: Dependency Tracking Evolution
+
+2.4 Techniques for Computing Dependencies
+=========================================
+
+There are actually several ways for a build tool like Automake to cause
+tools to generate dependencies.
+
+`makedepend'
+     This was a commonly-used method in the past.  The idea is to run a
+     special program over the source and have it generate dependency
+     information.  Traditional implementations of `makedepend' are not
+     completely precise; ordinarily they were conservative and
+     discovered too many dependencies.
+
+The tool
+     An obvious way to generate dependencies is to simply write the
+     tool so that it can generate the information needed by the build
+     tool.  This is also the most portable method.  Many compilers have
+     an option to generate dependencies.  Unfortunately, not all tools
+     provide such an option.
+
+The file system
+     It is possible to write a special file system that tracks opens,
+     reads, writes, etc, and then feed this information back to the
+     build tool.  `clearmake' does this.  This is a very powerful
+     technique, as it doesn't require cooperation from the tool.
+     Unfortunately it is also very difficult to implement and also not
+     practical in the general case.
+
+`LD_PRELOAD'
+     Rather than use the file system, one could write a special library
+     to intercept `open' and other syscalls.  This technique is also
+     quite powerful, but unfortunately it is not portable enough for
+     use in `automake'.
+
+* Menu:
+
+* Recommendations for Tool Writers::
+* Future Directions for Dependencies::
+
+\1f
+File: automake-history.info,  Node: Recommendations for Tool Writers,  Next: Future Directions for Dependencies,  Up: Techniques for Dependencies
+
+2.4.1 Recommendations for Tool Writers
+--------------------------------------
+
+We think that every compilation tool ought to be able to generate
+dependencies as a side effect of compilation.  Furthermore, at least
+while `make'-based tools are nearly universally in use (at least in the
+free software community), the tool itself should generate dummy
+dependencies for header files, to avoid the deleted header file 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.
+
+\1f
+File: automake-history.info,  Node: Future Directions for Dependencies,  Prev: Recommendations for Tool Writers,  Up: Techniques for Dependencies
+
+2.4.2 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 practical
+(and worthwhile) to let this support be extended by the user to
+languages unknown to Automake.
+
+\1f
+File: automake-history.info,  Node: Releases,  Next: Copying This Manual,  Prev: Dependency Tracking Evolution,  Up: Top
+
+3 Release Statistics
+********************
+
+The following table (inspired by `perlhist(1)') quantifies the
+evolution of Automake using these metrics:
+
+Date, Rel
+     The date and version of the release.
+
+am
+     The number of lines of the `automake' script.
+
+acl
+     The number of lines of the `aclocal' script.
+
+pm
+     The number of lines of the `Perl' supporting modules.
+
+`*.am'
+     The number of lines of the `Makefile' fragments.  The number in
+     parentheses is the number of files.
+
+m4
+     The number of lines (and files) of Autoconf macros.
+
+doc
+     The number of pages of the documentation (the Postscript version).
+
+t
+     The number of test cases in the test suite.  Of those, the number
+     in parentheses is the number of generated test cases.
+
+Date         Rel      am     acl    pm     `*.am'      m4          doc   t
+------------------------------------------------------------------------------------ 
+1994-09-19   CVS      141                  299 (24)                      
+1994-11-05   CVS      208                  332 (28)                      
+1995-11-23   0.20     533                  458 (35)                9     
+1995-11-26   0.21     613                  480 (36)                11    
+1995-11-28   0.22     1116                 539 (38)                12    
+1995-11-29   0.23     1240                 541 (38)                12    
+1995-12-08   0.24     1462                 504 (33)                14    
+1995-12-10   0.25     1513                 511 (37)                15    
+1996-01-03   0.26     1706                 438 (36)                16    
+1996-01-03   0.27     1706                 438 (36)                16    
+1996-01-13   0.28     1964                 934 (33)                16    
+1996-02-07   0.29     2299                 936 (33)                17    
+1996-02-24   0.30     2544                 919 (32)    85 (1)      20    9
+1996-03-11   0.31     2877                 919 (32)    85 (1)      29    17
+1996-04-27   0.32     3058                 921 (31)    85 (1)      30    26
+1996-05-18   0.33     3110                 926 (31)    105 (1)     30    35
+1996-05-28   1.0      3134                 973 (32)    105 (1)     30    38
+1997-06-22   1.2      6089   385           1294 (36)   592 (20)    37    126
+1998-04-05   1.3      6415   422           1470 (39)   741 (23)    39    156
+1999-01-14   1.4      7240   426           1591 (40)   734 (20)    51    197
+2001-05-08   1.4-p1   7251   426           1591 (40)   734 (20)    51    197
+2001-05-24   1.4-p2   7268   439           1591 (40)   734 (20)    49    197
+2001-06-07   1.4-p3   7312   439           1591 (40)   734 (20)    49    197
+2001-06-10   1.4-p4   7321   439           1591 (40)   734 (20)    49    198
+2001-07-15   1.4-p5   7228   426           1596 (40)   734 (20)    51    198
+2001-08-23   1.5      8016   475    600    2654 (39)   1166 (29)   63    327
+2002-03-05   1.6      8465   475    1136   2732 (39)   1603 (27)   66    365
+2002-04-11   1.6.1    8544   475    1136   2741 (39)   1603 (27)   66    372
+2002-06-14   1.6.2    8575   475    1136   2800 (39)   1609 (27)   67    386
+2002-07-28   1.6.3    8600   475    1153   2809 (39)   1609 (27)   67    391
+2002-07-28   1.4-p6   7332   455           1596 (40)   735 (20)    49    197
+2002-09-25   1.7      9189   471    1790   2965 (39)   1606 (28)   73    430
+2002-10-16   1.7.1    9229   475    1790   2977 (39)   1606 (28)   73    437
+2002-12-06   1.7.2    9334   475    1790   2988 (39)   1606 (28)   77    445
+2003-02-20   1.7.3    9389   475    1790   3023 (39)   1651 (29)   84    448
+2003-04-23   1.7.4    9429   475    1790   3031 (39)   1644 (29)   85    458
+2003-05-18   1.7.5    9429   475    1790   3033 (39)   1645 (29)   85    459
+2003-07-10   1.7.6    9442   475    1790   3033 (39)   1660 (29)   85    461
+2003-09-07   1.7.7    9443   475    1790   3041 (39)   1660 (29)   90    467
+2003-10-07   1.7.8    9444   475    1790   3041 (39)   1660 (29)   90    468
+2003-11-09   1.7.9    9444   475    1790   3048 (39)   1660 (29)   90    468
+2003-12-10   1.8      7171   585    7730   3236 (39)   1666 (31)   104   521
+2004-01-11   1.8.1    7217   663    7726   3287 (39)   1686 (31)   104   525
+2004-01-12   1.8.2    7217   663    7726   3288 (39)   1686 (31)   104   526
+2004-03-07   1.8.3    7214   686    7735   3303 (39)   1695 (31)   111   530
+2004-04-25   1.8.4    7214   686    7736   3310 (39)   1701 (31)   112   531
+2004-05-16   1.8.5    7240   686    7736   3299 (39)   1701 (31)   112   533
+2004-07-28   1.9      7508   715    7794   3352 (40)   1812 (32)   115   551
+2004-08-11   1.9.1    7512   715    7794   3354 (40)   1812 (32)   115   552
+2004-09-19   1.9.2    7512   715    7794   3354 (40)   1812 (32)   132   554
+2004-11-01   1.9.3    7507   718    7804   3354 (40)   1812 (32)   134   556
+2004-12-18   1.9.4    7508   718    7856   3361 (40)   1811 (32)   140   560
+2005-02-13   1.9.5    7523   719    7859   3373 (40)   1453 (32)   142   562
+2005-07-10   1.9.6    7539   699    7867   3400 (40)   1453 (32)   144   570
+2006-10-15   1.10     7859   1072   8024   3512 (40)   1496 (34)   172   604
+2008-01-19   1.10.1   7870   1089   8025   3520 (40)   1499 (34)   173   617
+2008-11-23   1.10.2   7882   1089   8027   3540 (40)   1509 (34)   176   628
+2009-05-17   1.11     8721   1092   8289   4164 (42)   1714 (37)   181   732 (20)
+
+\1f
+File: automake-history.info,  Node: Copying This Manual,  Prev: Releases,  Up: Top
+
+Appendix A Copying This Manual
+******************************
+
+* Menu:
+
+* GNU Free Documentation License::  License for copying this manual
+
+\1f
+File: automake-history.info,  Node: GNU Free Documentation License,  Up: Copying This Manual
+
+A.1 GNU Free Documentation License
+==================================
+
+                     Version 1.3, 3 November 2008
+
+     Copyright (C) 2000-2012 Free Software Foundation, Inc.
+     `http://fsf.org/'
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it
+     can be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You
+     accept the license if you copy, modify or distribute the work in a
+     way requiring permission under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter section
+     of the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could
+     fall directly within that overall subject.  (Thus, if the Document
+     is in part a textbook of mathematics, a Secondary Section may not
+     explain any mathematics.)  The relationship could be a matter of
+     historical connection with the subject or with related matters, or
+     of legal, commercial, philosophical, ethical or political position
+     regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.  If a section does not fit the above definition of
+     Secondary then it is not allowed to be designated as Invariant.
+     The Document may contain zero Invariant Sections.  If the Document
+     does not identify any Invariant Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup, or absence of
+     markup, has been arranged to thwart or discourage subsequent
+     modification by readers is not Transparent.  An image format is
+     not Transparent if used for any substantial amount of text.  A
+     copy that is not "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML, PostScript or PDF designed for
+     human modification.  Examples of transparent image formats include
+     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+     can be read and edited only by proprietary word processors, SGML or
+     XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML, PostScript or PDF
+     produced by some word processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+     The "publisher" means any person or entity that distributes copies
+     of the Document to the public.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a computer-network location from
+     which the general network-using public has access to download
+     using public-standard network protocols a complete Transparent
+     copy of the Document, free of added material.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+       A. Use in the Title Page (and on the covers, if any) a title
+          distinct from that of the Document, and from those of
+          previous versions (which should, if there were any, be listed
+          in the History section of the Document).  You may use the
+          same title as a previous version if the original publisher of
+          that version gives permission.
+
+       B. List on the Title Page, as authors, one or more persons or
+          entities responsible for authorship of the modifications in
+          the Modified Version, together with at least five of the
+          principal authors of the Document (all of its principal
+          authors, if it has fewer than five), unless they release you
+          from this requirement.
+
+       C. State on the Title page the name of the publisher of the
+          Modified Version, as the publisher.
+
+       D. Preserve all the copyright notices of the Document.
+
+       E. Add an appropriate copyright notice for your modifications
+          adjacent to the other copyright notices.
+
+       F. Include, immediately after the copyright notices, a license
+          notice giving the public permission to use the Modified
+          Version under the terms of this License, in the form shown in
+          the Addendum below.
+
+       G. Preserve in that license notice the full lists of Invariant
+          Sections and required Cover Texts given in the Document's
+          license notice.
+
+       H. Include an unaltered copy of this License.
+
+       I. Preserve the section Entitled "History", Preserve its Title,
+          and add to it an item stating at least the title, year, new
+          authors, and publisher of the Modified Version as given on
+          the Title Page.  If there is no section Entitled "History" in
+          the Document, create one stating the title, year, authors,
+          and publisher of the Document as given on its Title Page,
+          then add an item describing the Modified Version as stated in
+          the previous sentence.
+
+       J. Preserve the network location, if any, given in the Document
+          for public access to a Transparent copy of the Document, and
+          likewise the network locations given in the Document for
+          previous versions it was based on.  These may be placed in
+          the "History" section.  You may omit a network location for a
+          work that was published at least four years before the
+          Document itself, or if the original publisher of the version
+          it refers to gives permission.
+
+       K. For any section Entitled "Acknowledgements" or "Dedications",
+          Preserve the Title of the section, and preserve in the
+          section all the substance and tone of each of the contributor
+          acknowledgements and/or dedications given therein.
+
+       L. Preserve all the Invariant Sections of the Document,
+          unaltered in their text and in their titles.  Section numbers
+          or the equivalent are not considered part of the section
+          titles.
+
+       M. Delete any section Entitled "Endorsements".  Such a section
+          may not be included in the Modified Version.
+
+       N. Do not retitle any existing section to be Entitled
+          "Endorsements" or to conflict in title with any Invariant
+          Section.
+
+       O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section Entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections Entitled
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense, or distribute it is void,
+     and will automatically terminate your rights under this License.
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly
+     and finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from
+     you under this License.  If your rights have been terminated and
+     not permanently reinstated, receipt of a copy of some or all of
+     the same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     `http://www.gnu.org/copyleft/'.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.  If the Document specifies that a proxy
+     can decide which future versions of this License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+     World Wide Web server that publishes copyrightable works and also
+     provides prominent facilities for anybody to edit those works.  A
+     public wiki that anybody can edit is an example of such a server.
+     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+     site means any set of copyrightable works thus published on the MMC
+     site.
+
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+     license published by Creative Commons Corporation, a not-for-profit
+     corporation with a principal place of business in San Francisco,
+     California, as well as future copyleft versions of that license
+     published by that same organization.
+
+     "Incorporate" means to publish or republish a Document, in whole or
+     in part, as part of another Document.
+
+     An MMC is "eligible for relicensing" if it is licensed under this
+     License, and if all works that were first published under this
+     License somewhere other than this MMC, and subsequently
+     incorporated in whole or in part into the MMC, (1) had no cover
+     texts or invariant sections, and (2) were thus incorporated prior
+     to November 1, 2008.
+
+     The operator of an MMC Site may republish an MMC contained in the
+     site under CC-BY-SA on the same site at any time before August 1,
+     2009, provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+       Copyright (C)  YEAR  YOUR NAME.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.3
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+         with the Invariant Sections being LIST THEIR TITLES, with
+         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+         being LIST.
+
+   If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+\1f
+Tag Table:
+Node: Top\7f714
+Node: Timeline\7f2250
+Node: Dependency Tracking Evolution\7f33686
+Node: First Take on Dependencies\7f34528
+Node: Dependencies As Side Effects\7f37191
+Node: Dependencies for the User\7f39253
+Node: Techniques for Dependencies\7f44287
+Node: Recommendations for Tool Writers\7f45989
+Node: Future Directions for Dependencies\7f46708
+Node: Releases\7f47178
+Node: Copying This Manual\7f52658
+Node: GNU Free Documentation License\7f52885
+\1f
+End Tag Table
diff --git a/doc/automake-history.texi b/doc/automake-history.texi
new file mode 100644 (file)
index 0000000..5cb3685
--- /dev/null
@@ -0,0 +1,1214 @@
+\input texinfo   @c -*-texinfo-*-
+@c %**start of header
+@setfilename automake-history.info
+@settitle automake-history
+@setchapternewpage on
+@c %**end of header
+
+@copying
+
+This manual describes (part of) the history of GNU Automake, a program
+that creates GNU standards-compliant Makefiles from template files.
+
+Copyright @copyright{} 1995-2012 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with no Front-Cover texts,
+and with no Back-Cover Texts.  A copy of the license is included in the
+section entitled ``GNU Free Documentation License.''
+
+@end quotation
+@end copying
+
+@titlepage
+@title Brief History of Automake
+@author David MacKenzie
+@author Tom Tromey
+@author Alexandre Duret-Lutz
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@comment  node-name,  next,  previous,  up
+@top Brief History of Automake
+
+@insertcopying
+
+@menu
+* Timeline::                      The Automake story.
+* Dependency Tracking Evolution:: Evolution of Automatic Dependency Tracking
+* Releases::                      Release statistics
+* Copying This Manual::           How to make copies of this manual
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Evolution of Automatic Dependency Tracking
+
+* 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
+
+Techniques for Computing Dependencies
+
+* Recommendations for Tool Writers::
+* Future Directions for Dependencies::
+
+Copying This Manual
+
+* GNU Free Documentation License::  License for copying this manual
+
+@end detailmenu
+@end menu
+
+@end ifnottex
+
+@node Timeline
+@chapter Timeline
+
+@table @asis
+@item 1994-09-19 First CVS commit.
+
+If we can trust the CVS repository, David J.@tie{}MacKenzie (djm) started
+working on Automake (or AutoMake, as it was spelt then) this Monday.
+
+The first version of the @command{automake} script looks as follows.
+
+@example
+#!/bin/sh
+
+status=0
+
+for makefile
+do
+  if test ! -f $@{makefile@}.am; then
+    echo "automake: $@{makefile@}.am: No such honkin' file"
+    status=1
+    continue
+  fi
+
+  exec 4> $@{makefile@}.in
+
+done
+@end example
+
+From this you can already see that Automake will be about reading
+@file{*.am} file and producing @file{*.in} files.  You cannot see
+anything else, but if you also know that David is the one who created
+Autoconf two years before you can guess the rest.
+
+Several commits follow, and by the end of the day Automake is
+reported to work for GNU fileutils and GNU m4.
+
+The modus operandi is the one that is still used today: variable
+assignments in @file{Makefile.am} files trigger injections of
+precanned @file{Makefile} fragments into the generated
+@file{Makefile.in}.  The use of @file{Makefile} fragments was inspired
+by the 4.4BSD @command{make} and include files, however Automake aims
+to be portable and to conform to the GNU standards for @file{Makefile}
+variables and targets.
+
+At this point, the most recent release of Autoconf is version 1.11,
+and David is preparing to release Autoconf 2.0 in late October.  As a
+matter of fact, he will barely touch Automake after September.
+
+@item 1994-11-05 David MacKenzie's last commit.
+
+At this point Automake is a 200 line portable shell script, plus 332
+lines of @file{Makefile} fragments.  In the @file{README}, David
+states his ambivalence between ``portable shell'' and ``more
+appropriate language'':
+
+@quotation
+I wrote it keeping in mind the possibility of it becoming an Autoconf
+macro, so it would run at configure-time.  That would slow
+configuration down a bit, but allow users to modify the Makefile.am
+without needing to fetch the AutoMake package.  And, the Makefile.in
+files wouldn't need to be distributed.  But all of AutoMake would.  So
+I might reimplement AutoMake in Perl, m4, or some other more
+appropriate language.
+@end quotation
+
+Automake is described as ``an experimental Makefile generator''.
+There is no documentation.  Adventurous users are referred to the
+examples and patches needed to use Automake with GNU m4 1.3, fileutils
+3.9, time 1.6, and development versions of find and indent.
+
+These examples seem to have been lost.  However at the time of writing
+(10 years later in September, 2004) the FSF still distributes a
+package that uses this version of Automake: check out GNU termutils
+2.0.
+
+@item 1995-11-12 Tom Tromey's first commit.
+
+After one year of inactivity, Tom Tromey takes over the package.
+Tom was working on GNU cpio back then, and doing this just for fun,
+having trouble finding a project to contribute to.  So while hacking
+he wanted to bring the @file{Makefile.in} up to GNU standards.  This
+was hard, and one day he saw Automake on @url{ftp://alpha.gnu.org/},
+grabbed it and tried it out.
+
+Tom didn't talk to djm about it until later, just to make sure he
+didn't mind if he made a release.  He did a bunch of early releases to
+the Gnits folks.
+
+Gnits was (and still is) totally informal, just a few GNU friends who
+Fran@,cois Pinard knew, who were all interested in making a common
+infrastructure for GNU projects, and shared a similar outlook on how
+to do it.  So they were able to make some progress.  It came along
+with Autoconf and extensions thereof, and then Automake from David and
+Tom (who were both gnitsians).  One of their ideas was to write a
+document paralleling the GNU standards, that was more strict in some
+ways and more detailed.  They never finished the GNITS standards, but
+the ideas mostly made their way into Automake.
+
+@item 1995-11-23 Automake 0.20
+
+Besides introducing automatic dependency tracking (@pxref{Dependency
+Tracking Evolution}), this version also supplies a 9-page manual.
+
+At this time @command{aclocal} and @code{AM_INIT_AUTOMAKE} did not
+exist, so many things had to be done by hand.  For instance, here is
+what a configure.in (this is the former name of the
+@file{configure.ac} we use today) must contain in order to use
+Automake 0.20:
+
+@example
+PACKAGE=cpio
+VERSION=2.3.911
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
+AC_SUBST(PACKAGE)
+AC_SUBST(VERSION)
+AC_ARG_PROGRAM
+AC_PROG_INSTALL
+@end example
+
+(Today all of the above is achieved by @code{AC_INIT} and
+@code{AM_INIT_AUTOMAKE}.)
+
+Here is how programs are specified in @file{Makefile.am}:
+
+@example
+PROGRAMS = hello
+hello_SOURCES = hello.c
+@end example
+
+This looks pretty much like what we do today, except the
+@code{PROGRAMS} variable has no directory prefix specifying where
+@file{hello} should be installed: all programs are installed in
+@samp{$(bindir)}.  @code{LIBPROGRAMS} can be used to specify programs
+that must be built but not installed (it is called
+@code{noinst_PROGRAMS} nowadays).
+
+Programs can be built conditionally using @code{AC_SUBST}itutions:
+
+@example
+PROGRAMS = @@progs@@
+AM_PROGRAMS = foo bar baz
+@end example
+
+(@code{AM_PROGRAMS} has since then been renamed to
+@code{EXTRA_PROGRAMS}.)
+
+Similarly scripts, static libraries, and data can be built and installed
+using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables.
+However @code{LIBRARIES} were treated a bit specially in that Automake
+did automatically supply the @file{lib} and @file{.a} prefixes.
+Therefore to build @file{libcpio.a}, one had to write
+
+@example
+LIBRARIES = cpio
+cpio_SOURCES = ...
+@end example
+
+Extra files to distribute must be listed in @code{DIST_OTHER} (the
+ancestor of @code{EXTRA_DIST}).  Also extra directories that are to be
+distributed should appear in @code{DIST_SUBDIRS}, but the manual
+describes this as a temporary ugly hack (today extra directories should
+also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used
+for another purpose, @pxref{Conditional Subdirectories, , Conditional
+Subdirectories, automake, GNU Automake}).
+
+@item 1995-11-26 Automake 0.21
+
+In less time than it takes to cook a frozen pizza, Tom rewrites
+Automake using Perl.  At this time Perl 5 is only one year old, and
+Perl 4.036 is in use at many sites.  Supporting several Perl versions
+has been a source of problems through the whole history of Automake.
+
+If you never used Perl 4, imagine Perl 5 without objects, without
+@samp{my} variables (only dynamically scoped @samp{local} variables),
+without function prototypes, with function calls that needs to be
+prefixed with @samp{&}, etc.  Traces of this old style can still be
+found in today's @command{automake}.
+
+@item 1995-11-28 Automake 0.22
+@itemx 1995-11-29 Automake 0.23
+
+Bug fixes.
+
+@item 1995-12-08 Automake 0.24
+@itemx 1995-12-10 Automake 0.25
+
+Releases are raining.  0.24 introduces the uniform naming scheme we
+use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS},
+@code{noinst_LIBRARIES} instead of @code{LIBLIBRARIES}, etc.  (However
+@code{EXTRA_PROGRAMS} does not exist yet, @code{AM_PROGRAMS} is still
+in use; and @code{TEXINFOS} and @code{MANS} still have no directory
+prefixes.)  Adding support for prefixes like that was one of the major
+ideas in @command{automake}; it has lasted pretty well.
+
+AutoMake is renamed to Automake (Tom seems to recall it was Fran@,cois
+Pinard's doing).
+
+0.25 fixes a Perl 4 portability bug.
+
+@item 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
+@item 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar.
+
+@item 1996-01-03 Automake 0.26
+@itemx 1996-01-03 Automake 0.27
+
+Of the many changes and suggestions sent by Fran@,cois Pinard and
+included in 0.26, perhaps the most important is the advice that to
+ease customization a user rule or variable definition should always
+override an Automake rule or definition.
+
+Gordon Matzigkeit and Jim Meyering are two other early contributors
+that have been sending fixes.
+
+0.27 fixes yet another Perl 4 portability bug.
+
+@item 1996-01-13 Automake 0.28
+
+Automake starts scanning @file{configure.in} for @code{LIBOBJS}
+support.  This is an important step because until this version
+Automake only knew about the @file{Makefile.am}s it processed.
+@file{configure.in} was Autoconf's world and the link between Autoconf
+and Automake had to be done by the @file{Makefile.am} author.  For
+instance, if @file{config.h} was generated by @file{configure}, it was the
+package maintainer's responsibility to define the @code{CONFIG_HEADER}
+variable in each @file{Makefile.am}.
+
+Succeeding releases will rely more and more on scanning
+@file{configure.in} to better automate the Autoconf integration.
+
+0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the
+@option{--gnu} and @option{--gnits} options, the latter being stricter.
+
+@item 1996-02-07 Automake 0.29
+
+Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone,
+and rebuild rules for @file{configure}-generated file are
+automatically output.
+
+@code{TEXINFOS} and @code{MANS} converted to the uniform naming
+scheme.
+
+@item 1996-02-24 Automake 0.30
+
+The test suite is born.  It contains 9 tests.  From now on test cases
+will be added pretty regularly (@pxref{Releases}), and this proved to
+be really helpful later on.
+
+@code{EXTRA_PROGRAMS} finally replaces @code{AM_PROGRAMS}.
+
+All the third-party Autoconf macros, written mostly by Fran@,cois
+Pinard (and later Jim Meyering), are distributed in Automake's
+hand-written @file{aclocal.m4} file.  Package maintainers are expected
+to extract the necessary macros from this file.  (In previous versions
+you had to copy and paste them from the manual...)
+
+@item 1996-03-11 Automake 0.31
+
+The test suite in 0.30 was run via a long @code{check-local} rule.  Upon
+Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
+whenever the @code{TESTS} variable is defined.
+
+@code{DIST_OTHER} is renamed to @code{EXTRA_DIST}, and the @code{check_}
+prefix is introduced.  The syntax is now the same as today.
+
+@item 1996-03-15 Gordon Matzigkeit starts writing libtool.
+
+@item 1996-04-27 Automake 0.32
+
+@code{-hook} targets are introduced; an idea from Dieter Baron.
+
+@file{*.info} files, which were output in the build directory are
+now built in the source directory, because they are distributed.  It
+seems these files like to move back and forth as that will happen
+again in future versions.
+
+@item 1996-05-18 Automake 0.33
+
+Gord Matzigkeit's main two contributions:
+
+@itemize
+@item very preliminary libtool support
+@item the distcheck rule
+@end itemize
+
+Although they were very basic at this point, these are probably
+among the top features for Automake today.
+
+Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE}, since
+then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its author
+(@pxref{maintainer-mode, , maintainer-mode, automake, GNU Automake}).
+
+@item 1996-05-28 Automake 1.0
+
+After only six months of heavy development, the @command{automake} script is
+3134 lines long, plus 973 lines of @file{Makefile} fragments.  The
+package has 30 pages of documentation, and 38 test cases.
+@file{aclocal.m4} contains 4 macros.
+
+From now on and until version 1.4, new releases will occur at a rate
+of about one a year.  1.1 did not exist, actually 1.1b to 1.1p have
+been the name of beta releases for 1.2.  This is the first time
+Automake uses suffix letters to designate beta releases, a habit that
+lasts.
+
+@item 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
+
+@item 1996-11-26 David J.@tie{}MacKenzie releases Autoconf 2.12.
+
+Between June and October, the Autoconf development is almost stalled.
+Roland McGrath has been working at the beginning of the year.  David
+comes back in November to release 2.12, but he won't touch Autoconf
+anymore after this year, and Autoconf then really stagnates.  The
+desolate Autoconf @file{ChangeLog} for 1997 lists only 7 commits.
+
+@item 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive
+
+The mailing list is announced as follows:
+@smallexample
+I've created the "automake" mailing list.  It is
+"automake@@gnu.ai.mit.edu".  Administrivia, as always, to
+automake-request@@gnu.ai.mit.edu.
+
+The charter of this list is discussion of automake, autoconf, and
+other configuration/portability tools (e.g., libtool).  It is expected
+that discussion will range from pleas for help all the way up to
+patches.
+
+This list is archived on the FSF machines.  Offhand I don't know if
+you can get the archive without an account there.
+
+This list is open to anybody who wants to join.  Tell all your
+friends!
+-- Tom Tromey
+@end smallexample
+
+Before that people were discussing Automake privately, on the Gnits
+mailing list (which is not public either), and less frequently on
+@code{gnu.misc.discuss}.
+
+@code{gnu.ai.mit.edu} is now @code{gnu.org}, in case you never
+noticed.  The archives of the early years of the
+@code{automake@@gnu.org} list have been lost, so today it is almost
+impossible to find traces of discussions that occurred before 1999.
+This has been annoying more than once, as such discussions can be
+useful to understand the rationale behind a piece of uncommented code
+that was introduced back then.
+
+@item 1997-06-22 Automake 1.2
+
+Automake developments continues, and more and more new Autoconf macros
+are required.  Distributing them in @file{aclocal.m4} and requiring
+people to browse this file to extract the relevant macros becomes
+uncomfortable.  Ideally, some of them should be contributed to
+Autoconf so that they can be used directly, however Autoconf is
+currently inactive.  Automake 1.2 consequently introduces
+@command{aclocal} (@command{aclocal} was actually started on
+1996-07-28), a tool that automatically constructs an @file{aclocal.m4}
+file from a repository of third-party macros.  Because Autoconf has
+stalled, Automake also becomes a kind of repository for such
+third-party macros, even macros completely unrelated to Automake (for
+instance macros that fix broken Autoconf macros).
+
+The 1.2 release contains 20 macros, including the
+@code{AM_INIT_AUTOMAKE} macro that simplifies the creation of
+@file{configure.in}.
+
+Libtool is fully supported using @code{*_LTLIBRARIES}.
+
+The missing script is introduced by Fran@,cois Pinard; it is meant
+to be a better solution than @code{AM_MAINTAINER_MODE}
+(@pxref{maintainer-mode, , maintainer-mode, automake, GNU Automake}).
+
+Conditionals support was implemented by Ian Lance Taylor.  At the
+time, Tom and Ian were working on an internal project at Cygnus.  They
+were using ILU, which is pretty similar to CORBA@.  They wanted to
+integrate ILU into their build, which was all @file{configure}-based,
+and Ian thought that adding conditionals to @command{automake} was
+simpler than doing all the work in @file{configure} (which was the
+standard at the time).  So this was actually funded by Cygnus.
+
+This very useful but tricky feature will take a lot of time to
+stabilize.  (At the time this text is written, there are still
+primaries that have not been updated to support conditional
+definitions in Automake 1.9.)
+
+The @command{automake} script has almost doubled: 6089 lines of Perl,
+plus 1294 lines of @file{Makefile} fragments.
+
+@item 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
+
+@item 1998-04-05 Automake 1.3
+
+This is a small advance compared to 1.2.
+It adds support for assembly, and preliminary support for Java.
+
+Perl 5.004_04 is out, but fixes to support Perl 4 are still
+regularly submitted whenever Automake breaks it.
+
+@item 1998-09-06 @code{sourceware.cygnus.com} is on-line.
+
+Sourceware was setup by Jason Molenda to host open source projects.
+
+@item 1998-09-19  Automake CVS repository moved to @code{sourceware.cygnus.com}
+@itemx 1998-10-26  @code{sourceware.cygnus.com} announces it hosts Automake:
+Automake is now hosted on @code{sourceware.cygnus.com}.  It has a
+publicly accessible CVS repository.  This CVS repository is a copy of
+the one Tom was using on his machine, which in turn is based on
+a copy of the CVS repository of David MacKenzie.  This is why we still
+have to full source history.  (Automake was on Sourceware until 2007-10-29,
+when it moved to a git repository on @code{savannah.gnu.org},
+but the Sourceware host had been renamed to @code{sources.redhat.com}.)
+
+The oldest file in the administrative directory of the CVS repository
+that was created on Sourceware is dated 1998-09-19, while the
+announcement that @command{automake} and @command{autoconf} had joined
+@command{sourceware} was made on 1998-10-26.  They were among the
+first projects to be hosted there.
+
+The heedful reader will have noticed Automake was exactly 4 years old
+on 1998-09-19.
+
+@item 1999-01-05 Ben Elliston releases Autoconf 2.13.
+
+@item 1999-01-14 Automake 1.4
+
+This release adds support for Fortran 77 and for the @code{include}
+statement.  Also, @samp{+=} assignments are introduced, but it is
+still quite easy to fool Automake when mixing this with conditionals.
+
+These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
+will be used together for years.
+
+@command{automake} is 7228 lines, plus 1591 lines of Makefile
+fragment, 20 macros (some 1.3 macros were finally contributed back to
+Autoconf), 197 test cases, and 51 pages of documentation.
+
+@item 1999-03-27 The @code{user-dep-branch} is created on the CVS repository.
+
+This implements a new dependency tracking schemed that should be
+able to handle automatic dependency tracking using any compiler (not
+just gcc) and any make (not just GNU @command{make}).  In addition,
+the new scheme should be more reliable than the old one, as
+dependencies are generated on the end user's machine.  Alexandre Oliva
+creates depcomp for this purpose.
+
+@xref{Dependency Tracking Evolution}, for more details about the
+evolution of automatic dependency tracking in Automake.
+
+@item 1999-11-21 The @code{user-dep-branch} is merged into the main trunk.
+
+This was a huge problem since we also had patches going in on the
+trunk.  The merge took a long time and was very painful.
+
+@item 2000-05-10
+
+Since September 1999 and until 2003, Akim Demaille will be zealously
+revamping Autoconf.
+
+@quotation
+I think the next release should be called "3.0".@*
+Let's face it: you've basically rewritten autoconf.@*
+Every weekend there are 30 new patches.@*
+I don't see how we could call this "2.15" with a straight face.@*
+-- Tom Tromey on @email{autoconf@@gnu.org}
+@end quotation
+
+Actually Akim works like a submarine: he will pile up patches while he
+works off-line during the weekend, and flush them in batch when he
+resurfaces on Monday.
+
+@item 2001-01-24
+
+On this Wednesday, Autoconf 2.49c, the last beta before Autoconf 2.50
+is out, and Akim has to find something to do during his week-end :)
+
+@item 2001-01-28
+
+Akim sends a batch of 14 patches to @email{automake@@gnu.org}.
+
+@quotation
+Aiieeee!  I was dreading the day that the Demaillator turned his
+sights on automake@dots{} and now it has arrived! -- Tom Tromey
+@end quotation
+
+It's only the beginning: in two months he will send 192 patches.  Then
+he would slow down so Tom can catch up and review all this.  Initially
+Tom actually read all these patches, then he probably trustingly
+answered OK to most of them, and finally gave up and let Akim apply
+whatever he wanted.  There was no way to keep up with that patch rate.
+
+@quotation
+Anyway the patch below won't apply since it predates Akim's
+sourcequake; I have yet to figure where the relevant passage has
+been moved :) -- Alexandre Duret-Lutz
+@end quotation
+
+All these patches were sent to and discussed on
+@email{automake@@gnu.org}, so subscribed users were literally drowning in
+technical mails.  Eventually, the @email{automake-patches@@gnu.org}
+mailing list was created in May.
+
+Year after year, Automake had drifted away from its initial design:
+construct @file{Makefile.in} by assembling various @file{Makefile}
+fragments.  In 1.4, lots of @file{Makefile} rules are being emitted at
+various places in the @command{automake} script itself; this does not
+help ensuring a consistent treatment of these rules (for instance
+making sure that user-defined rules override Automake's own rules).
+One of Akim's goal was moving all these hard-coded rules to separate
+@file{Makefile} fragments, so the logic could be centralized in a
+@file{Makefile} fragment processor.
+
+Another significant contribution of Akim is the interface with the
+``trace'' feature of Autoconf.  The way to scan @file{configure.in} at
+this time was to read the file and grep the various macro of interest
+to Automake.  Doing so could break in many unexpected ways; @command{automake}
+could miss some definition (for instance @samp{AC_SUBST([$1], [$2])}
+where the arguments are known only when M4 is run), or conversely it
+could detect some macro that was not expanded (because it is called
+conditionally).  In the CVS version of Autoconf, Akim had implemented
+the @option{--trace} option, which provides accurate information about
+where macros are actually called and with what arguments.  Akim will
+equip Automake with a second @file{configure.in} scanner that uses
+this @option{--trace} interface.  Since it was not sensible to drop the
+Autoconf 2.13 compatibility yet, this experimental scanner was only
+used when an environment variable was set, the traditional
+grep-scanner being still the default.
+
+@item 2001-04-25 Gary V.@tie{}Vaughan releases Libtool 1.4
+
+It has been more than two years since Automake 1.4, CVS Automake has
+suffered lot's of heavy changes and still is not ready for release.
+Libtool 1.4 had to be distributed with a patch against Automake 1.4.
+
+@item 2001-05-08 Automake 1.4-p1
+@itemx 2001-05-24 Automake 1.4-p2
+
+Gary V.@tie{}Vaughan, the principal Libtool maintainer, makes a ``patch
+release'' of Automake:
+
+@quotation
+The main purpose of this release is to have a stable automake
+which is compatible with the latest stable libtool.
+@end quotation
+
+The release also contains obvious fixes for bugs in Automake 1.4,
+some of which were reported almost monthly.
+
+@item 2001-05-21 Akim Demaille releases Autoconf 2.50
+
+@item 2001-06-07 Automake 1.4-p3
+@itemx 2001-06-10 Automake 1.4-p4
+@itemx 2001-07-15 Automake 1.4-p5
+
+Gary continues his patch-release series.  These also add support for
+some new Autoconf 2.50 idioms.  Essentially, Autoconf now advocates
+@file{configure.ac} over @file{configure.in}, and it introduces a new
+syntax for @code{AC_OUTPUT}ing files.
+
+@item 2001-08-23 Automake 1.5
+
+A major and long-awaited release, that comes more than two years after
+1.4.  It brings many changes, among which:
+@itemize
+@item The new dependency tracking scheme that uses @command{depcomp}.
+Aside from the improvement on the dependency tracking itself
+(@pxref{Dependency Tracking Evolution}), this also streamlines the use
+of @command{automake}-generated @file{Makefile.in}s as the @file{Makefile.in}s
+used during development are now the same as those used in
+distributions.  Before that the @file{Makefile.in}s generated for
+maintainers required GNU @command{make} and GCC, they were different
+from the portable @file{Makefile} generated for distribution; this was
+causing some confusion.
+
+@item Support for per-target compilation flags.
+
+@item Support for reference to files in subdirectories in most
+@file{Makefile.am} variables.
+
+@item Introduction of the @code{dist_}, @code{nodist_}, and @code{nobase_}
+prefixes.
+@item Perl 4 support is finally dropped.
+@end itemize
+
+1.5 did break several packages that worked with 1.4.  Enough so that
+Linux distributions could not easily install the new Automake version
+without breaking many of the packages for which they had to run
+@command{automake}.
+
+Some of these breakages were effectively bugs that would eventually be
+fixed in the next release.  However, a lot of damage was caused by
+some changes made deliberately to render Automake stricter on some
+setup we did consider bogus.  For instance, @samp{make distcheck} was
+improved to check that @samp{make uninstall} did remove all the files
+@samp{make install} installed, that @samp{make distclean} did not omit
+some file, and that a VPATH build would work even if the source
+directory was read-only.  Similarly, Automake now rejects multiple
+definitions of the same variable (because that would mix very badly
+with conditionals), and @samp{+=} assignments with no previous
+definition.  Because these changes all occurred suddenly after 1.4 had
+been established for more than two years, it hurt users.
+
+To make matter worse, meanwhile Autoconf (now at version 2.52) was
+facing similar troubles, for similar reasons.
+
+@item 2002-03-05 Automake 1.6
+
+This release introduced versioned installation (@pxref{API Versioning, ,
+API Versioning, automake, GNU Automake}). 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 Autoconf 2.13 and Automake 1.4.
+
+The idea was to call this version @file{automake-1.6}, call all its
+bug-fix versions identically, and switch to @file{automake-1.7} for
+the next release that adds new features or changes some rules.  This
+scheme implies maintaining a bug-fix branch in addition to the
+development trunk, which means more work from the maintainer, but
+providing regular bug-fix releases proved to be really worthwhile.
+
+Like 1.5, 1.6 also introduced a bunch of incompatibilities, intentional or
+not.  Perhaps the more annoying was the dependence on the newly
+released Autoconf 2.53.  Autoconf seemed to have stabilized enough
+since its explosive 2.50 release and included changes required to fix
+some bugs in Automake.  In order to upgrade to Automake 1.6, people
+now had to upgrade Autoconf too; for some packages it was no picnic.
+
+While versioned installation helped people to upgrade, it also
+unfortunately allowed people not to upgrade.  At the time of writing,
+some Linux distributions are shipping packages for Automake 1.4, 1.5,
+1.6, 1.7, 1.8, and 1.9.  Most of these still install 1.4 by default.
+Some distribution also call 1.4 the ``stable'' version, and present
+``1.9'' as the development version; this does not really makes sense
+since 1.9 is way more solid than 1.4.  All this does not help the
+newcomer.
+
+@item 2002-04-11 Automake 1.6.1
+
+1.6, and the upcoming 1.4-p6 release were the last release by Tom.
+This one and those following will be handled by Alexandre
+Duret-Lutz.  Tom is still around, and will be there until about 1.7,
+but his interest into Automake is drifting away towards projects like
+@command{gcj}.
+
+Alexandre has been using Automake since 2000, and started to
+contribute mostly on Akim's incitement (Akim and Alexandre have been
+working in the same room from 1999 to 2002).  In 2001 and 2002 he had
+a lot of free time to enjoy hacking Automake.
+
+@item 2002-06-14 Automake 1.6.2
+
+@item 2002-07-28 Automake 1.6.3
+@itemx 2002-07-28 Automake 1.4-p6
+
+Two releases on the same day.  1.6.3 is a bug-fix release.
+
+Tom Tromey backported the versioned installation mechanism on the 1.4
+branch, so that Automake 1.6.x and Automake 1.4-p6 could be installed
+side by side.  Another request from the GNOME folks.
+
+@item 2002-09-25 Automake 1.7
+
+This release switches to the new @file{configure.ac} scanner Akim
+was experimenting in 1.5.
+
+@item 2002-10-16 Automake 1.7.1
+@itemx 2002-12-06 Automake 1.7.2
+@itemx 2003-02-20 Automake 1.7.3
+@itemx 2003-04-23 Automake 1.7.4
+@itemx 2003-05-18 Automake 1.7.5
+@itemx 2003-07-10 Automake 1.7.6
+@itemx 2003-09-07 Automake 1.7.7
+@itemx 2003-10-07 Automake 1.7.8
+
+Many bug-fix releases.  1.7 lasted because the development version
+(upcoming 1.8) was suffering some major internal revamping.
+
+@item 2003-10-26 Automake on screen
+
+Episode 49, `Repercussions', in the third season of the `Alias' TV
+show is first aired.
+
+Marshall, one of the characters, is working on a computer virus that he
+has to modify before it gets into the wrong hands or something like
+that.  The screenshots you see do not show any program code, they show
+a @file{Makefile.in} generated by automake...
+
+@item 2003-11-09 Automake 1.7.9
+
+@item 2003-12-10 Automake 1.8
+
+The most striking update is probably that of @command{aclocal}.
+
+@command{aclocal} now uses @code{m4_include} in the produced
+@file{aclocal.m4} when the included macros are already distributed
+with the package (an idiom used in many packages), which reduces code
+duplication.  Many people liked that, but in fact this change was
+really introduced to fix a bug in rebuild rules: @file{Makefile.in}
+must be rebuilt whenever a dependency of @file{configure} changes, but
+all the @file{m4} files included in @file{aclocal.m4} where unknown
+from @command{automake}.  Now @command{automake} can just trace the
+@code{m4_include}s to discover the dependencies.
+
+@command{aclocal} also starts using the @option{--trace} Autoconf option
+in order to discover used macros more accurately.  This will turn out
+to be very tricky (later releases will improve this) as people had
+devised many ways to cope with the limitation of previous
+@command{aclocal} versions, notably using handwritten
+@code{m4_include}s: @command{aclocal} must make sure not to redefine a
+rule that is already included by such statement.
+
+Automake also has seen its guts rewritten.  Although this rewriting
+took a lot of efforts, it is only apparent to the users in that some
+constructions previously disallowed by the implementation now work
+nicely.  Conditionals, Locations, Variable and Rule definitions,
+Options: these items on which Automake works have been rewritten as
+separate Perl modules, and documented.
+
+@itemx 2004-01-11 Automake 1.8.1
+@itemx 2004-01-12 Automake 1.8.2
+@itemx 2004-03-07 Automake 1.8.3
+@itemx 2004-04-25 Automake 1.8.4
+@itemx 2004-05-16 Automake 1.8.5
+
+@item 2004-07-28 Automake 1.9
+
+This release tries to simplify the compilation rules it outputs to
+reduce the size of the Makefile.  The complaint initially come from
+the libgcj developers.  Their @file{Makefile.in} generated with
+Automake 1.4 and custom build rules (1.4 did not support compiled
+Java) is 250KB@.  The one generated by 1.8 was over 9MB@!  1.9 gets it
+down to 1.2MB@.
+
+Aside from this it contains mainly minor changes and bug-fixes.
+
+@itemx 2004-08-11 Automake 1.9.1
+@itemx 2004-09-19 Automake 1.9.2
+
+Automake has ten years.  This chapter of the manual was initially
+written for this occasion.
+
+@itemx 2007-10-29 Automake repository moves to @code{savannah.gnu.org}
+and uses git as primary repository.
+
+@end table
+
+@node Dependency Tracking Evolution
+@chapter Evolution of Automatic Dependency Tracking
+
+Over the years Automake has deployed three different dependency
+tracking methods.  Each method, including the current one, has had
+flaws of various sorts.  Here we lay out the different dependency
+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.
+
+@menu
+* 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
+@end menu
+
+@node First Take on Dependencies
+@section First Take on Dependency Tracking
+@unnumberedsubsec Description
+
+Our first attempt at automatic dependency tracking was based on the
+method recommended by GNU @command{make}.  (@pxref{Automatic
+Prerequisites, , Generating Prerequisites Automatically, make, The GNU
+make Manual})
+
+This version worked by precomputing dependencies ahead of time.  For
+each source file, it had a special @file{.P} file that held the
+dependencies.  There was a rule to generate a @file{.P} file by
+invoking the compiler appropriately.  All such @file{.P} files were
+included by the @file{Makefile}, thus implicitly becoming dependencies
+of @file{Makefile}.
+
+@unnumberedsubsec Bugs
+
+This approach had several critical bugs.
+
+@itemize
+@item
+The code to generate the @file{.P} file relied on @command{gcc}.
+(A limitation, not technically a bug.)
+@item
+The dependency tracking mechanism itself relied on GNU @command{make}.
+(A limitation, not technically a bug.)
+@item
+Because each @file{.P} file was a dependency of @file{Makefile}, this
+meant that dependency tracking was done eagerly by @command{make}.
+For instance, @samp{make clean} would cause all the dependency files
+to be updated, and then immediately removed.  This eagerness also
+caused problems with some configurations; if a certain source file
+could not be compiled on a given architecture for some reason,
+dependency tracking would fail, aborting the entire build.
+@item
+As dependency tracking was done as a pre-pass, compile times were
+doubled--the compiler had to be run twice per source file.
+@item
+@samp{make dist} re-ran @command{automake} to generate a
+@file{Makefile} that did not have automatic dependency tracking (and
+that was thus portable to any version of @command{make}).  In order to
+do this portably, Automake had to scan the dependency files and remove
+any reference that was to a source file not in the distribution.
+This process was error-prone.  Also, if @samp{make dist} was run in an
+environment where some object file had a dependency on a source file
+that was only conditionally created, Automake would generate a
+@file{Makefile} that referred to a file that might not appear in the
+end user's build.  A special, hacky mechanism was required to work
+around this.
+@end itemize
+
+@unnumberedsubsec Historical Note
+
+The code generated by Automake is often inspired by the
+@file{Makefile} style of a particular author.  In the case of the first
+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.)
+
+@node Dependencies As Side Effects
+@section Dependencies As Side Effects
+@unnumberedsubsec Description
+
+The next refinement of Automake's automatic dependency tracking scheme
+was to implement dependencies as side effects of the compilation.
+This was aimed at solving the most commonly reported problems with the
+first approach.  In particular we were most concerned with eliminating
+the weird rebuilding effect associated with make clean.
+
+In this approach, the @file{.P} files were included using the
+@code{-include} command, which let us create these files lazily.  This
+avoided the @samp{make clean} problem.
+
+We only computed dependencies when a file was actually compiled.  This
+avoided the performance penalty associated with scanning each file
+twice.  It also let us avoid the other problems associated with the
+first, eager, implementation.  For instance, dependencies would never
+be generated for a source file that was not compilable on a given
+architecture (because it in fact would never be compiled).
+
+@unnumberedsubsec Bugs
+
+@itemize
+@item
+This approach also relied on the existence of @command{gcc} and GNU
+@command{make}.  (A limitation, not technically a bug.)
+@item
+Dependency tracking was still done by the developer, so the problems
+from the first implementation relating to massaging of dependencies by
+@samp{make dist} were still in effect.
+@item
+This implementation suffered from the ``deleted header file'' problem.
+Suppose a lazily-created @file{.P} file includes a dependency on a
+given header file, like this:
+
+@example
+maude.o: maude.c something.h
+@end example
+
+Now suppose that you remove @file{something.h} and update @file{maude.c}
+so that this include is no longer needed.  If you run @command{make},
+you will get an error because there is no way to create
+@file{something.h}.
+
+We fixed this problem in a later release by further massaging the
+output of @command{gcc} to include a dummy dependency for each header
+file.
+@end itemize
+
+@node Dependencies for the User
+@section Dependencies for the User
+@unnumberedsubsec Description
+
+The bugs associated with @samp{make dist}, over time, became a real
+problem.  Packages using Automake were being built on a large number
+of platforms, and were becoming increasingly complex.  Broken
+dependencies were distributed in ``portable'' @file{Makefile.in}s,
+leading to user complaints.  Also, the requirement for @command{gcc}
+and GNU @command{make} was a constant source of bug reports.  The next
+implementation of dependency tracking aimed to remove these problems.
+
+We realized that the only truly reliable way to automatically track
+dependencies was to do it when the package itself was built.  This
+meant discovering a method portable to any version of make and any
+compiler.  Also, we wanted to preserve what we saw as the best point
+of the second implementation: dependency computation as a side effect
+of compilation.
+
+In the end we found that most modern make implementations support some
+form of include directive.  Also, we wrote a wrapper script that let
+us abstract away differences between dependency tracking methods for
+compilers.  For instance, some compilers cannot generate dependencies
+as a side effect of compilation.  In this case we simply have the
+script run the compiler twice.  Currently our wrapper script
+(@command{depcomp}) knows about twelve different compilers (including
+a "compiler" that simply invokes @command{makedepend} and then the
+real compiler, which is assumed to be a standard Unix-like C compiler
+with no way to do dependency tracking).
+
+@unnumberedsubsec Bugs
+
+@itemize
+@item
+Running a wrapper script for each compilation slows down the build.
+@item
+Many users don't really care about precise dependencies.
+@item
+This implementation, like every other automatic dependency tracking
+scheme in common use today (indeed, every one we've ever heard of),
+suffers from the ``duplicated new header'' bug.
+
+This bug occurs because dependency tracking tools, such as the
+compiler, only generate dependencies on the successful opening of a
+file, and not on every probe.
+
+Suppose for instance that the compiler searches three directories for
+a given header, and that the header is found in the third directory.
+If the programmer erroneously adds a header file with the same name to
+the first directory, then a clean rebuild from scratch could fail
+(suppose the new header file is buggy), whereas an incremental rebuild
+will succeed.
+
+What has happened here is that people have a misunderstanding of what
+a dependency is.  Tool writers think a dependency encodes information
+about which files were read by the compiler.  However, a dependency
+must actually encode information about what the compiler tried to do.
+
+This problem is not serious in practice.  Programmers typically do not
+use the same name for a header file twice in a given project.  (At
+least, not in C or C++.  This problem may be more troublesome in
+Java.)  This problem is easy to fix, by modifying dependency
+generators to record every probe, instead of every successful open.
+
+@item
+Since Automake generates dependencies as a side effect of compilation,
+there is a bootstrapping problem when header files are generated by
+running a program.  The problem is that, the first time the build is
+done, there is no way by default to know that the headers are
+required, so make might try to run a compilation for which the headers
+have not yet been built.
+
+This was also a problem in the previous dependency tracking implementation.
+
+The current fix is to use @code{BUILT_SOURCES} to list built headers
+(@pxref{Sources, , Sources, automake, GNU Automake}).  This causes them
+to be built before any other build rules are run.  This is unsatisfactory
+as a general solution, however in practice it seems sufficient for most
+actual programs.
+@end itemize
+
+This code is used since Automake 1.5.
+
+In GCC 3.0, we managed to convince the maintainers to add special
+command-line options to help Automake more efficiently do its job.  We
+hoped this would let us avoid the use of a wrapper script when
+Automake's automatic dependency tracking was used with @command{gcc}.
+
+Unfortunately, this code doesn't quite do what we want.  In
+particular, it removes the dependency file if the compilation fails;
+we'd prefer that it instead only touch the file in any way if the
+compilation succeeds.
+
+Nevertheless, since Automake 1.7, when a recent @command{gcc} is
+detected at @command{configure} time, we inline the
+dependency-generation code and do not use the @command{depcomp}
+wrapper script.  This makes compilations faster for those using this
+compiler (probably our primary user base).  The counterpart is that
+because we have to encode two compilation rules in @file{Makefile}
+(with or without @command{depcomp}), the produced @file{Makefile}s are
+larger.
+
+@node Techniques for Dependencies
+@section Techniques for Computing Dependencies
+
+There are actually several ways for a build tool like Automake to
+cause tools to generate dependencies.
+
+@table @asis
+@item @command{makedepend}
+This was a commonly-used method in the past.  The idea is to run a
+special program over the source and have it generate dependency
+information.  Traditional implementations of @command{makedepend} are
+not completely precise; ordinarily they were conservative and
+discovered too many dependencies.
+@item The tool
+An obvious way to generate dependencies is to simply write the tool so
+that it can generate the information needed by the build tool.  This is
+also the most portable method.  Many compilers have an option to
+generate dependencies.  Unfortunately, not all tools provide such an
+option.
+@item The file system
+It is possible to write a special file system that tracks opens,
+reads, writes, etc, and then feed this information back to the build
+tool.  @command{clearmake} does this.  This is a very powerful
+technique, as it doesn't require cooperation from the
+tool.  Unfortunately it is also very difficult to implement and also
+not practical in the general case.
+@item @code{LD_PRELOAD}
+Rather than use the file system, one could write a special library to
+intercept @code{open} and other syscalls.  This technique is also quite
+powerful, but unfortunately it is not portable enough for use in
+@command{automake}.
+@end table
+
+@menu
+* Recommendations for Tool Writers::
+* Future Directions for Dependencies::
+@end menu
+
+@node Recommendations for Tool Writers
+@subsection Recommendations for Tool Writers
+
+We think that every compilation tool ought to be able to generate
+dependencies as a side effect of compilation.  Furthermore, at least
+while @command{make}-based tools are nearly universally in use (at
+least in the free software community), the tool itself should generate
+dummy dependencies for header files, to avoid the deleted header file
+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.
+
+@node Future Directions for Dependencies
+@subsection 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
+practical (and worthwhile) to let this support be extended by the user
+to languages unknown to Automake.
+
+@node Releases
+@chapter Release Statistics
+
+The following table (inspired by @samp{perlhist(1)}) quantifies the
+evolution of Automake using these metrics:
+
+@table @asis
+@item Date, Rel
+The date and version of the release.
+@item am
+The number of lines of the @command{automake} script.
+@item acl
+The number of lines of the @command{aclocal} script.
+@item pm
+The number of lines of the @command{Perl} supporting modules.
+@item @file{*.am}
+The number of lines of the @file{Makefile} fragments.  The number in
+parentheses is the number of files.
+@item m4
+The number of lines (and files) of Autoconf macros.
+@item doc
+The number of pages of the documentation (the Postscript version).
+@item t
+The number of test cases in the test suite.  Of those, the number in
+parentheses is the number of generated test cases.
+@end table
+
+@multitable {8888-88-88} {8.8-p8} {8888} {8888} {8888} {8888 (88)} {8888 (88)} {888} {888 (88)}
+@headitem Date   @tab Rel    @tab   am @tab acl @tab   pm @tab @file{*.am} @tab m4 @tab doc @tab t
+@item 1994-09-19 @tab CVS    @tab  141 @tab     @tab      @tab  299 (24) @tab           @tab     @tab
+@item 1994-11-05 @tab CVS    @tab  208 @tab     @tab      @tab  332 (28) @tab           @tab     @tab
+@item 1995-11-23 @tab 0.20   @tab  533 @tab     @tab      @tab  458 (35) @tab           @tab   9 @tab
+@item 1995-11-26 @tab 0.21   @tab  613 @tab     @tab      @tab  480 (36) @tab           @tab  11 @tab
+@item 1995-11-28 @tab 0.22   @tab 1116 @tab     @tab      @tab  539 (38) @tab           @tab  12 @tab
+@item 1995-11-29 @tab 0.23   @tab 1240 @tab     @tab      @tab  541 (38) @tab           @tab  12 @tab
+@item 1995-12-08 @tab 0.24   @tab 1462 @tab     @tab      @tab  504 (33) @tab           @tab  14 @tab
+@item 1995-12-10 @tab 0.25   @tab 1513 @tab     @tab      @tab  511 (37) @tab           @tab  15 @tab
+@item 1996-01-03 @tab 0.26   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
+@item 1996-01-03 @tab 0.27   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
+@item 1996-01-13 @tab 0.28   @tab 1964 @tab     @tab      @tab  934 (33) @tab           @tab  16 @tab
+@item 1996-02-07 @tab 0.29   @tab 2299 @tab     @tab      @tab  936 (33) @tab           @tab  17 @tab
+@item 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  20 @tab 9
+@item 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  29 @tab 17
+@item 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 (31) @tab   85 (1)  @tab  30 @tab 26
+@item 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 (31) @tab  105 (1)  @tab  30 @tab 35
+@item 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 (32) @tab  105 (1)  @tab  30 @tab 38
+@item 1997-06-22 @tab 1.2    @tab 6089 @tab 385 @tab      @tab 1294 (36) @tab  592 (20) @tab  37 @tab 126
+@item 1998-04-05 @tab 1.3    @tab 6415 @tab 422 @tab      @tab 1470 (39) @tab  741 (23) @tab  39 @tab 156
+@item 1999-01-14 @tab 1.4    @tab 7240 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
+@item 2001-05-08 @tab 1.4-p1 @tab 7251 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
+@item 2001-05-24 @tab 1.4-p2 @tab 7268 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
+@item 2001-06-07 @tab 1.4-p3 @tab 7312 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
+@item 2001-06-10 @tab 1.4-p4 @tab 7321 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 198
+@item 2001-07-15 @tab 1.4-p5 @tab 7228 @tab 426 @tab      @tab 1596 (40) @tab  734 (20) @tab  51 @tab 198
+@item 2001-08-23 @tab 1.5    @tab 8016 @tab 475 @tab  600 @tab 2654 (39) @tab 1166 (29) @tab  63 @tab 327
+@item 2002-03-05 @tab 1.6    @tab 8465 @tab 475 @tab 1136 @tab 2732 (39) @tab 1603 (27) @tab  66 @tab 365
+@item 2002-04-11 @tab 1.6.1  @tab 8544 @tab 475 @tab 1136 @tab 2741 (39) @tab 1603 (27) @tab  66 @tab 372
+@item 2002-06-14 @tab 1.6.2  @tab 8575 @tab 475 @tab 1136 @tab 2800 (39) @tab 1609 (27) @tab  67 @tab 386
+@item 2002-07-28 @tab 1.6.3  @tab 8600 @tab 475 @tab 1153 @tab 2809 (39) @tab 1609 (27) @tab  67 @tab 391
+@item 2002-07-28 @tab 1.4-p6 @tab 7332 @tab 455 @tab      @tab 1596 (40) @tab  735 (20) @tab  49 @tab 197
+@item 2002-09-25 @tab 1.7    @tab 9189 @tab 471 @tab 1790 @tab 2965 (39) @tab 1606 (28) @tab  73 @tab 430
+@item 2002-10-16 @tab 1.7.1  @tab 9229 @tab 475 @tab 1790 @tab 2977 (39) @tab 1606 (28) @tab  73 @tab 437
+@item 2002-12-06 @tab 1.7.2  @tab 9334 @tab 475 @tab 1790 @tab 2988 (39) @tab 1606 (28) @tab  77 @tab 445
+@item 2003-02-20 @tab 1.7.3  @tab 9389 @tab 475 @tab 1790 @tab 3023 (39) @tab 1651 (29) @tab  84 @tab 448
+@item 2003-04-23 @tab 1.7.4  @tab 9429 @tab 475 @tab 1790 @tab 3031 (39) @tab 1644 (29) @tab  85 @tab 458
+@item 2003-05-18 @tab 1.7.5  @tab 9429 @tab 475 @tab 1790 @tab 3033 (39) @tab 1645 (29) @tab  85 @tab 459
+@item 2003-07-10 @tab 1.7.6  @tab 9442 @tab 475 @tab 1790 @tab 3033 (39) @tab 1660 (29) @tab  85 @tab 461
+@item 2003-09-07 @tab 1.7.7  @tab 9443 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 467
+@item 2003-10-07 @tab 1.7.8  @tab 9444 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 468
+@item 2003-11-09 @tab 1.7.9  @tab 9444 @tab 475 @tab 1790 @tab 3048 (39) @tab 1660 (29) @tab  90 @tab 468
+@item 2003-12-10 @tab 1.8    @tab 7171 @tab 585 @tab 7730 @tab 3236 (39) @tab 1666 (31) @tab 104 @tab 521
+@item 2004-01-11 @tab 1.8.1  @tab 7217 @tab 663 @tab 7726 @tab 3287 (39) @tab 1686 (31) @tab 104 @tab 525
+@item 2004-01-12 @tab 1.8.2  @tab 7217 @tab 663 @tab 7726 @tab 3288 (39) @tab 1686 (31) @tab 104 @tab 526
+@item 2004-03-07 @tab 1.8.3  @tab 7214 @tab 686 @tab 7735 @tab 3303 (39) @tab 1695 (31) @tab 111 @tab 530
+@item 2004-04-25 @tab 1.8.4  @tab 7214 @tab 686 @tab 7736 @tab 3310 (39) @tab 1701 (31) @tab 112 @tab 531
+@item 2004-05-16 @tab 1.8.5  @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 1701 (31) @tab 112 @tab 533
+@item 2004-07-28 @tab 1.9    @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 1812 (32) @tab 115 @tab 551
+@item 2004-08-11 @tab 1.9.1  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 115 @tab 552
+@item 2004-09-19 @tab 1.9.2  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 132 @tab 554
+@item 2004-11-01 @tab 1.9.3  @tab 7507 @tab 718 @tab 7804 @tab 3354 (40) @tab 1812 (32) @tab 134 @tab 556
+@item 2004-12-18 @tab 1.9.4  @tab 7508 @tab 718 @tab 7856 @tab 3361 (40) @tab 1811 (32) @tab 140 @tab 560
+@item 2005-02-13 @tab 1.9.5  @tab 7523 @tab 719 @tab 7859 @tab 3373 (40) @tab 1453 (32) @tab 142 @tab 562
+@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
+@item 2008-11-23 @tab 1.10.2 @tab 7882 @tab 1089 @tab 8027 @tab 3540 (40) @tab 1509 (34) @tab 176 @tab 628
+@item 2009-05-17 @tab 1.11   @tab 8721 @tab 1092 @tab 8289 @tab 4164 (42) @tab 1714 (37) @tab 181 @tab 732 (20)
+@end multitable
+
+
+@c ========================================================== Appendices
+
+@page
+@node Copying This Manual
+@appendix Copying This Manual
+
+@menu
+* GNU Free Documentation License::  License for copying this manual
+@end menu
+
+@node GNU Free Documentation License
+@appendixsec GNU Free Documentation License
+@include fdl.texi
+
+@bye
diff --git a/doc/automake.info b/doc/automake.info
new file mode 100644 (file)
index 0000000..ac56e15
--- /dev/null
@@ -0,0 +1,244 @@
+This is automake.info, produced by makeinfo version 4.13 from
+/home/stefano/src/am/branches/trunks/doc/automake.texi.
+
+This manual is for GNU Automake (version 1.12.1, 1 June 2012), a
+program that creates GNU standards-compliant Makefiles from template
+files.
+
+   Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with no Front-Cover texts,
+     and with no Back-Cover Texts.  A copy of the license is included
+     in the section entitled "GNU Free Documentation License."
+
+
+INFO-DIR-SECTION Software development
+START-INFO-DIR-ENTRY
+* Automake: (automake).         Making GNU standards-compliant Makefiles.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION Individual utilities
+START-INFO-DIR-ENTRY
+* aclocal-invocation: (automake)aclocal Invocation.   Generating aclocal.m4.
+* automake-invocation: (automake)automake Invocation. Generating Makefile.in.
+END-INFO-DIR-ENTRY
+
+\1f
+Indirect:
+automake.info-1: 1118
+automake.info-2: 297580
+automake.info-3: 529541
+\1f
+Tag Table:
+(Indirect)
+Node: Top\7f1118
+Node: Introduction\7f14528
+Ref: Introduction-Footnote-1\7f15992
+Node: Autotools Introduction\7f16141
+Node: GNU Build System\7f17492
+Node: Use Cases\7f20155
+Node: Basic Installation\7f22260
+Node: Standard Targets\7f25727
+Node: Standard Directory Variables\7f27220
+Node: Standard Configuration Variables\7f29028
+Node: config.site\7f30345
+Node: VPATH Builds\7f31727
+Node: Two-Part Install\7f35612
+Node: Cross-Compilation\7f38016
+Node: Renaming\7f40908
+Node: DESTDIR\7f42026
+Node: Preparing Distributions\7f44138
+Node: Dependency Tracking\7f46091
+Node: Nested Packages\7f48167
+Node: Why Autotools\7f49659
+Node: Hello World\7f51281
+Ref: amhello Explained\7f51690
+Node: Creating amhello\7f51858
+Node: amhello's configure.ac Setup Explained\7f56994
+Node: amhello's Makefile.am Setup Explained\7f61650
+Node: Generalities\7f65164
+Node: General Operation\7f65858
+Node: Strictness\7f69166
+Node: Uniform\7f71260
+Node: Length Limitations\7f76017
+Node: Canonicalization\7f78293
+Node: User Variables\7f79337
+Node: Auxiliary Programs\7f80782
+Node: Examples\7f84410
+Node: Complete\7f85276
+Node: true\7f87263
+Node: automake Invocation\7f89642
+Ref: Invoking automake\7f89793
+Node: configure\7f97335
+Node: Requirements\7f98230
+Node: Optional\7f103205
+Node: aclocal Invocation\7f111960
+Ref: Invoking aclocal\7f112121
+Node: aclocal Options\7f115030
+Node: Macro Search Path\7f118380
+Ref: ACLOCAL_PATH\7f122507
+Node: Extending aclocal\7f124010
+Node: Local Macros\7f127646
+Node: Serials\7f132147
+Node: Future of aclocal\7f137274
+Node: Macros\7f139546
+Node: Public Macros\7f140075
+Ref: Modernize AM_INIT_AUTOMAKE invocation\7f141041
+Node: Obsolete Macros\7f144805
+Node: Private Macros\7f146883
+Node: Directories\7f148286
+Node: Subdirectories\7f149225
+Node: Conditional Subdirectories\7f151529
+Node: SUBDIRS vs DIST_SUBDIRS\7f153125
+Node: Subdirectories with AM_CONDITIONAL\7f154671
+Node: Subdirectories with AC_SUBST\7f155785
+Node: Unconfigured Subdirectories\7f156584
+Node: Alternative\7f159883
+Ref: Alternative-Footnote-1\7f162024
+Node: Subpackages\7f162149
+Node: Programs\7f165345
+Node: A Program\7f166885
+Node: Program Sources\7f167608
+Node: Linking\7f169421
+Node: Conditional Sources\7f172880
+Node: Conditional Programs\7f175695
+Node: A Library\7f177511
+Node: A Shared Library\7f180061
+Node: Libtool Concept\7f181063
+Node: Libtool Libraries\7f183119
+Node: Conditional Libtool Libraries\7f184793
+Node: Conditional Libtool Sources\7f187157
+Node: Libtool Convenience Libraries\7f188496
+Node: Libtool Modules\7f191820
+Node: Libtool Flags\7f193089
+Node: LTLIBOBJS\7f194870
+Node: Libtool Issues\7f195461
+Node: Error required file ltmain.sh not found\7f195800
+Node: Objects created both with libtool and without\7f196964
+Node: Program and Library Variables\7f198800
+Ref: Program and Library Variables-Footnote-1\7f209763
+Node: Default _SOURCES\7f209838
+Node: LIBOBJS\7f212193
+Node: Program Variables\7f217164
+Node: Yacc and Lex\7f220627
+Ref: Yacc and Lex-Footnote-1\7f225961
+Node: C++ Support\7f226190
+Node: Objective C Support\7f227032
+Node: Objective C++ Support\7f227967
+Node: Unified Parallel C Support\7f228951
+Node: Assembly Support\7f229909
+Node: Fortran 77 Support\7f230989
+Ref: Fortran 77 Support-Footnote-1\7f232622
+Node: Preprocessing Fortran 77\7f232825
+Node: Compiling Fortran 77 Files\7f233402
+Node: Mixing Fortran 77 With C and C++\7f233975
+Ref: Mixing Fortran 77 With C and C++-Footnote-1\7f236212
+Node: How the Linker is Chosen\7f236515
+Node: Fortran 9x Support\7f237998
+Node: Compiling Fortran 9x Files\7f239006
+Node: Java Support with gcj\7f239591
+Node: Vala Support\7f240976
+Node: Support for Other Languages\7f242420
+Node: Dependencies\7f243128
+Node: EXEEXT\7f244958
+Node: Other Objects\7f247118
+Node: Scripts\7f247710
+Node: Headers\7f250450
+Node: Data\7f252175
+Node: Sources\7f252834
+Node: Built Sources Example\7f255604
+Node: Other GNU Tools\7f262514
+Node: Emacs Lisp\7f263039
+Node: gettext\7f264863
+Node: Libtool\7f265515
+Node: Java\7f265770
+Node: Python\7f268180
+Node: Documentation\7f273030
+Node: Texinfo\7f273334
+Node: Man Pages\7f279726
+Node: Install\7f282740
+Node: Basics of Installation\7f283440
+Node: The Two Parts of Install\7f284930
+Node: Extending Installation\7f286350
+Node: Staged Installs\7f287098
+Node: Install Rules for the User\7f288467
+Node: Clean\7f288995
+Node: Dist\7f291073
+Node: Basics of Distribution\7f291565
+Node: Fine-grained Distribution Control\7f294288
+Node: The dist Hook\7f295195
+Node: Checking the Distribution\7f297580
+Node: The Types of Distributions\7f303042
+Node: Tests\7f304713
+Node: Generalities about Testing\7f305889
+Node: Simple Tests\7f308892
+Node: Scripts-based Testsuites\7f309273
+Ref: Testsuite progress on console\7f311732
+Ref: Simple tests and color-tests\7f312807
+Node: Serial Test Harness\7f316712
+Node: Parallel Test Harness\7f318587
+Ref: Basics of test metadata\7f319239
+Node: Custom Test Drivers\7f327428
+Node: Overview of Custom Test Drivers Support\7f327719
+Node: Declaring Custom Test Drivers\7f330646
+Node: API for Custom Test Drivers\7f332012
+Node: Command-line arguments for test drivers\7f332789
+Node: Log files generation and test results recording\7f335461
+Node: Testsuite progress output\7f339537
+Node: Using the TAP test protocol\7f340949
+Node: Introduction to TAP\7f341311
+Node: Use TAP with the Automake test harness\7f343109
+Node: Incompatibilities with other TAP parsers and drivers\7f348529
+Node: Links and external resources on TAP\7f349886
+Node: DejaGnu Tests\7f351467
+Node: Install Tests\7f353501
+Node: Rebuilding\7f353803
+Node: Options\7f357419
+Node: Options generalities\7f357718
+Node: List of Automake options\7f359436
+Ref: tar-formats\7f365632
+Node: Miscellaneous\7f368880
+Node: Tags\7f369223
+Node: Suffixes\7f372165
+Node: Include\7f373737
+Node: Conditionals\7f374628
+Node: Usage of Conditionals\7f375459
+Node: Limits of Conditionals\7f378700
+Node: Silencing Make\7f379881
+Node: Make verbosity\7f380231
+Ref: Make verbosity-Footnote-1\7f381531
+Node: Tricks For Silencing Make\7f381605
+Node: Automake silent-rules Option\7f384004
+Node: Gnits\7f390977
+Node: Cygnus\7f393282
+Node: Not Enough\7f395260
+Node: Extending\7f395698
+Node: Third-Party Makefiles\7f400431
+Node: Distributing\7f407018
+Node: API Versioning\7f407655
+Node: Upgrading\7f410294
+Node: FAQ\7f412245
+Node: CVS\7f413365
+Node: maintainer-mode\7f420089
+Node: Wildcards\7f424015
+Node: Limitations on File Names\7f427289
+Node: Errors with distclean\7f429865
+Node: Flag Variables Ordering\7f434615
+Node: Renamed Objects\7f442319
+Node: Per-Object Flags\7f443862
+Node: Multiple Outputs\7f446759
+Node: Hard-Coded Install Paths\7f458375
+Node: Debugging Make Rules\7f463388
+Ref: Debugging Make Rules-Footnote-1\7f465528
+Node: Reporting Bugs\7f465692
+Node: Copying This Manual\7f467623
+Node: GNU Free Documentation License\7f467853
+Node: Indices\7f492969
+Node: Macro Index\7f493258
+Node: Variable Index\7f498842
+Node: General Index\7f529541
+\1f
+End Tag Table
diff --git a/doc/automake.info-1 b/doc/automake.info-1
new file mode 100644 (file)
index 0000000..c7ac8c7
--- /dev/null
@@ -0,0 +1,7239 @@
+This is automake.info, produced by makeinfo version 4.13 from
+/home/stefano/src/am/branches/trunks/doc/automake.texi.
+
+This manual is for GNU Automake (version 1.12.1, 1 June 2012), a
+program that creates GNU standards-compliant Makefiles from template
+files.
+
+   Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with no Front-Cover texts,
+     and with no Back-Cover Texts.  A copy of the license is included
+     in the section entitled "GNU Free Documentation License."
+
+
+INFO-DIR-SECTION Software development
+START-INFO-DIR-ENTRY
+* Automake: (automake).         Making GNU standards-compliant Makefiles.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION Individual utilities
+START-INFO-DIR-ENTRY
+* aclocal-invocation: (automake)aclocal Invocation.   Generating aclocal.m4.
+* automake-invocation: (automake)automake Invocation. Generating Makefile.in.
+END-INFO-DIR-ENTRY
+
+\1f
+File: automake.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+GNU Automake
+************
+
+This manual is for GNU Automake (version 1.12.1, 1 June 2012), a
+program that creates GNU standards-compliant Makefiles from template
+files.
+
+   Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with no Front-Cover texts,
+     and with no Back-Cover Texts.  A copy of the license is included
+     in the section entitled "GNU Free Documentation License."
+
+
+* Menu:
+
+* Introduction::                Automake's purpose
+* Autotools Introduction::      An Introduction to the Autotools
+* Generalities::                General ideas
+* Examples::                    Some example packages
+* automake Invocation::         Creating a Makefile.in
+* configure::                   Scanning configure.ac, using aclocal
+* Directories::                 Declaring subdirectories
+* Programs::                    Building programs and libraries
+* Other Objects::               Other derived objects
+* Other GNU Tools::             Other GNU Tools
+* Documentation::               Building documentation
+* Install::                     What gets installed
+* Clean::                       What gets cleaned
+* Dist::                        What goes in a distribution
+* Tests::                       Support for test suites
+* Rebuilding::                  Automatic rebuilding of Makefile
+* Options::                     Changing Automake's behavior
+* Miscellaneous::               Miscellaneous rules
+* Include::                     Including extra files in an Automake template
+* Conditionals::                Conditionals
+* Silencing Make::              Obtain less verbose output from `make'
+* Gnits::                       The effect of `--gnu' and `--gnits'
+* Cygnus::                      The effect of `--cygnus' (deprecated, soon to be removed)
+* Not Enough::                  When Automake is not Enough
+* Distributing::                Distributing the Makefile.in
+* API Versioning::              About compatibility between Automake versions
+* Upgrading::                   Upgrading to a Newer Automake Version
+* FAQ::                         Frequently Asked Questions
+* Copying This Manual::         How to make copies of this manual
+* Indices::                     Indices of variables, macros, and concepts
+
+ --- The Detailed Node Listing ---
+
+An Introduction to the Autotools
+
+* GNU Build System::            Introducing the GNU Build System
+* Use Cases::                   Use Cases for the GNU Build System
+* Why Autotools::               How Autotools Help
+* Hello World::                 A Small Hello World Package
+
+Use Cases for the GNU Build System
+
+* Basic Installation::          Common installation procedure
+* Standard Targets::            A list of standard Makefile targets
+* Standard Directory Variables::  A list of standard directory variables
+* Standard Configuration Variables::  Using configuration variables
+* config.site::                 Using a config.site file
+* VPATH Builds::                Parallel build trees
+* Two-Part Install::            Installing data and programs separately
+* Cross-Compilation::           Building for other architectures
+* Renaming::                    Renaming programs at install time
+* DESTDIR::                     Building binary packages with DESTDIR
+* Preparing Distributions::     Rolling out tarballs
+* Dependency Tracking::         Automatic dependency tracking
+* Nested Packages::             The GNU Build Systems can be nested
+
+A Small Hello World
+
+* Creating amhello::            Create `amhello-1.0.tar.gz' from scratch
+* amhello's configure.ac Setup Explained::
+* amhello's Makefile.am Setup Explained::
+
+General ideas
+
+* General Operation::           General operation of Automake
+* Strictness::                  Standards conformance checking
+* Uniform::                     The Uniform Naming Scheme
+* Length Limitations::          Staying below the command line length limit
+* Canonicalization::            How derived variables are named
+* User Variables::              Variables reserved for the user
+* Auxiliary Programs::          Programs automake might require
+
+Some example packages
+
+* Complete::                    A simple example, start to finish
+* true::                        Building true and false
+
+Scanning `configure.ac', using `aclocal'
+
+* Requirements::                Configuration requirements
+* Optional::                    Other things Automake recognizes
+* aclocal Invocation::          Auto-generating aclocal.m4
+* Macros::                      Autoconf macros supplied with Automake
+
+Auto-generating aclocal.m4
+
+* 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
+
+Autoconf macros supplied with Automake
+
+* Public Macros::               Macros that you can use.
+* Obsolete Macros::             Macros that will soon be removed.
+* Private Macros::              Macros that you should not use.
+
+Directories
+
+* Subdirectories::              Building subdirectories recursively
+* Conditional Subdirectories::  Conditionally not building 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 `Makefile'
+
+Building Programs and Libraries
+
+* A Program::                   Building a program
+* A Library::                   Building a library
+* A Shared Library::            Building a Libtool library
+* Program and Library Variables::  Variables controlling program and
+                                library builds
+* Default _SOURCES::            Default source files
+* LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
+* 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
+* Objective C++ Support::       Compiling Objective C++ sources
+* Unified Parallel C Support::  Compiling Unified Parallel C sources
+* Assembly Support::            Compiling assembly sources
+* Fortran 77 Support::          Compiling Fortran 77 sources
+* Fortran 9x Support::          Compiling Fortran 9x sources
+* Java Support with gcj::       Compiling Java sources using gcj
+* Vala Support::                Compiling Vala sources
+* Support for Other Languages::  Compiling other languages
+* Dependencies::                Automatic dependency tracking
+* EXEEXT::                      Support for executable extensions
+
+Building a program
+
+* Program Sources::             Defining program sources
+* Linking::                     Linking with libraries or extra objects
+* Conditional Sources::         Handling conditional sources
+* Conditional Programs::        Building a program conditionally
+
+Building a Shared Library
+
+* Libtool Concept::             Introducing Libtool
+* Libtool Libraries::           Declaring Libtool Libraries
+* Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
+* Conditional Libtool Sources::  Choosing Library Sources Conditionally
+* Libtool Convenience Libraries::  Building Convenience Libtool Libraries
+* Libtool Modules::             Building Libtool Modules
+* Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
+* LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
+* Libtool Issues::              Common Issues Related to Libtool's Use
+
+Common Issues Related to Libtool's Use
+
+* Error required file ltmain.sh not found::  The need to run libtoolize
+* Objects created both with libtool and without::  Avoid a specific build race
+
+Fortran 77 Support
+
+* Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
+* Compiling Fortran 77 Files::  Compiling Fortran 77 sources
+* Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
+
+Mixing Fortran 77 With C and C++
+
+* How the Linker is Chosen::    Automatic linker selection
+
+Fortran 9x Support
+
+* Compiling Fortran 9x Files::  Compiling Fortran 9x sources
+
+Other Derived Objects
+
+* Scripts::                     Executable scripts
+* Headers::                     Header files
+* Data::                        Architecture-independent data files
+* Sources::                     Derived sources
+
+Built Sources
+
+* Built Sources Example::       Several ways to handle built sources.
+
+Other GNU Tools
+
+* Emacs Lisp::                  Emacs Lisp
+* gettext::                     Gettext
+* Libtool::                     Libtool
+* Java::                        Java bytecode compilation (deprecated)
+* Python::                      Python
+
+Building documentation
+
+* Texinfo::                     Texinfo
+* Man Pages::                   Man pages
+
+What Gets Installed
+
+* 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
+
+What Goes in a Distribution
+
+* Basics of Distribution::      Files distributed by default
+* Fine-grained Distribution Control::  `dist_' and `nodist_' prefixes
+* The dist Hook::               A target for last-minute distribution changes
+* Checking the Distribution::   `make distcheck' explained
+* The Types of Distributions::  A variety of formats and compression methods
+
+Support for test suites
+
+* Generalities about Testing::  Generic concepts and terminology about testing
+* Simple Tests::                Listing test scripts in `TESTS'
+* Custom Test Drivers::         Writing and using custom test drivers
+* Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
+* DejaGnu Tests::               Interfacing with the `dejagnu' testing framework
+* Install Tests::               Running tests on installed packages
+
+Simple Tests
+
+* Scripts-based Testsuites::    Automake-specific concepts and terminology
+* Serial Test Harness::         Older (and obsolescent) serial test harness
+* Parallel Test Harness::       Generic concurrent test harness
+
+Using the TAP test protocol
+
+* Introduction to TAP::
+* Use TAP with the Automake test harness::
+* Incompatibilities with other TAP parsers and drivers::
+* Links and external resources on TAP::
+
+Custom Test Drivers
+
+* Overview of Custom Test Drivers Support::
+* Declaring Custom Test Drivers::
+* API for Custom Test Drivers::
+
+API for Custom Test Drivers
+
+* Command-line arguments for test drivers::
+* Log files generation and test results recording::
+* Testsuite progress output::
+
+Changing Automake's Behavior
+
+* Options generalities::        Semantics of Automake option
+* List of Automake options::    A comprehensive list of Automake options
+
+Miscellaneous Rules
+
+* Tags::                        Interfacing to cscope, etags and mkid
+* Suffixes::                    Handling new file extensions
+
+Conditionals
+
+* Usage of Conditionals::       Declaring conditional content
+* Limits of Conditionals::      Enclosing complete statements
+
+Silencing Make
+
+* Make verbosity::               Make is verbose by default
+* Tricks For Silencing Make::    Standard and generic ways to silence make
+* Automake silent-rules Option:: How Automake can help in silencing make
+
+When Automake Isn't Enough
+
+* Extending::                   Adding new rules or overriding existing ones.
+* Third-Party Makefiles::       Integrating Non-Automake `Makefile's.
+
+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
+* Errors with distclean::       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?
+* 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
+* Debugging Make Rules::        Strategies when things don't work as expected
+* Reporting Bugs::              Feedback on bugs and feature requests
+
+Copying This Manual
+
+* GNU Free Documentation License::  License for copying this manual
+
+Indices
+
+* Macro Index::                 Index of Autoconf macros
+* Variable Index::              Index of Makefile variables
+* General Index::               General index
+
+\1f
+File: automake.info,  Node: Introduction,  Next: Autotools Introduction,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+Automake is a tool for automatically generating `Makefile.in's from
+files called `Makefile.am'.  Each `Makefile.am' is basically a series
+of `make' variable definitions(1), with rules being thrown in
+occasionally.  The generated `Makefile.in's are compliant with the GNU
+Makefile standards.
+
+   The GNU Makefile Standards Document (*note Makefile Conventions:
+(standards)Makefile Conventions.)  is long, complicated, and subject to
+change.  The goal of Automake is to remove the burden of Makefile
+maintenance from the back of the individual GNU maintainer (and put it
+on the back of the Automake maintainers).
+
+   The typical Automake input file is simply a series of variable
+definitions.  Each such file is processed to create a `Makefile.in'.
+There should generally be one `Makefile.am' per directory of a project.
+
+   Automake does constrain a project in certain ways; for instance, it
+assumes that the project uses Autoconf (*note Introduction:
+(autoconf)Top.), and enforces certain restrictions on the
+`configure.ac' contents.
+
+   Automake requires `perl' in order to generate the `Makefile.in's.
+However, the distributions created by Automake are fully GNU
+standards-compliant, and do not require `perl' in order to be built.
+
+   For more information on bug reports, *Note Reporting Bugs::.
+
+   ---------- Footnotes ----------
+
+   (1) These variables are also called "make macros" in Make
+terminology, however in this manual we reserve the term "macro" for
+Autoconf's macros.
+
+\1f
+File: automake.info,  Node: Autotools Introduction,  Next: Generalities,  Prev: Introduction,  Up: Top
+
+2 An Introduction to the Autotools
+**********************************
+
+If you are new to Automake, maybe you know that it is part of a set of
+tools called _The Autotools_.  Maybe you've already delved into a
+package full of files named `configure', `configure.ac', `Makefile.in',
+`Makefile.am', `aclocal.m4', ..., some of them claiming to be
+_generated by_ Autoconf or Automake.  But the exact purpose of these
+files and their relations is probably fuzzy.  The goal of this chapter
+is to introduce you to this machinery, to show you how it works and how
+powerful it is.  If you've never installed or seen such a package, do
+not worry: this chapter will walk you through it.
+
+   If you need some teaching material, more illustrations, or a less
+`automake'-centered continuation, some slides for this introduction are
+available in Alexandre Duret-Lutz's Autotools Tutorial
+(http://www.lrde.epita.fr/~adl/autotools.html).  This chapter is the
+written version of the first part of his tutorial.
+
+* Menu:
+
+* GNU Build System::            Introducing the GNU Build System
+* Use Cases::                   Use Cases for the GNU Build System
+* Why Autotools::               How Autotools Help
+* Hello World::                 A Small Hello World Package
+
+\1f
+File: automake.info,  Node: GNU Build System,  Next: Use Cases,  Up: Autotools Introduction
+
+2.1 Introducing the GNU Build System
+====================================
+
+It is a truth universally acknowledged, that as a developer in
+possession of a new package, you must be in want of a build system.
+
+   In the Unix world, such a build system is traditionally achieved
+using the command `make' (*note Overview: (make)Top.).  You express the
+recipe to build your package in a `Makefile'.  This file is a set of
+rules to build the files in the package.  For instance the program
+`prog' may be built by running the linker on the files `main.o',
+`foo.o', and `bar.o'; the file `main.o' may be built by running the
+compiler on `main.c'; etc.  Each time `make' is run, it reads
+`Makefile', checks the existence and modification time of the files
+mentioned, decides what files need to be built (or rebuilt), and runs
+the associated commands.
+
+   When a package needs to be built on a different platform than the one
+it was developed on, its `Makefile' usually needs to be adjusted.  For
+instance the compiler may have another name or require more options.
+In 1991, David J. MacKenzie got tired of customizing `Makefile' for the
+20 platforms he had to deal with.  Instead, he handcrafted a little
+shell script called `configure' to automatically adjust the `Makefile'
+(*note Genesis: (autoconf)Genesis.).  Compiling his package was now as
+simple as running `./configure && make'.
+
+   Today this process has been standardized in the GNU project.  The GNU
+Coding Standards (*note The Release Process: (standards)Managing
+Releases.) explains how each package of the GNU project should have a
+`configure' script, and the minimal interface it should have.  The
+`Makefile' too should follow some established conventions.  The result?
+A unified build system that makes all packages almost indistinguishable
+by the installer.  In its simplest scenario, all the installer has to
+do is to unpack the package, run `./configure && make && make install',
+and repeat with the next package to install.
+
+   We call this build system the "GNU Build System", since it was grown
+out of the GNU project.  However it is used by a vast number of other
+packages: following any existing convention has its advantages.
+
+   The Autotools are tools that will create a GNU Build System for your
+package.  Autoconf mostly focuses on `configure' and Automake on
+`Makefile's.  It is entirely possible to create a GNU Build System
+without the help of these tools.  However it is rather burdensome and
+error-prone.  We will discuss this again after some illustration of the
+GNU Build System in action.
+
+\1f
+File: automake.info,  Node: Use Cases,  Next: Why Autotools,  Prev: GNU Build System,  Up: Autotools Introduction
+
+2.2 Use Cases for the GNU Build System
+======================================
+
+In this section we explore several use cases for the GNU Build System.
+You can replay all these examples on the `amhello-1.0.tar.gz' package
+distributed with Automake.  If Automake is installed on your system,
+you should find a copy of this file in
+`PREFIX/share/doc/automake/amhello-1.0.tar.gz', where PREFIX is the
+installation prefix specified during configuration (PREFIX defaults to
+`/usr/local', however if Automake was installed by some GNU/Linux
+distribution it most likely has been set to `/usr').  If you do not
+have a copy of Automake installed, you can find a copy of this file
+inside the `doc/' directory of the Automake package.
+
+   Some of the following use cases present features that are in fact
+extensions to the GNU Build System.  Read: they are not specified by
+the GNU Coding Standards, but they are nonetheless part of the build
+system created by the Autotools.  To keep things simple, we do not
+point out the difference.  Our objective is to show you many of the
+features that the build system created by the Autotools will offer to
+you.
+
+* Menu:
+
+* Basic Installation::          Common installation procedure
+* Standard Targets::            A list of standard Makefile targets
+* Standard Directory Variables::  A list of standard directory variables
+* Standard Configuration Variables::  Using configuration variables
+* config.site::                 Using a config.site file
+* VPATH Builds::                Parallel build trees
+* Two-Part Install::            Installing data and programs separately
+* Cross-Compilation::           Building for other architectures
+* Renaming::                    Renaming programs at install time
+* DESTDIR::                     Building binary packages with DESTDIR
+* Preparing Distributions::     Rolling out tarballs
+* Dependency Tracking::         Automatic dependency tracking
+* Nested Packages::             The GNU Build Systems can be nested
+
+\1f
+File: automake.info,  Node: Basic Installation,  Next: Standard Targets,  Up: Use Cases
+
+2.2.1 Basic Installation
+------------------------
+
+The most common installation procedure looks as follows.
+
+     ~ % tar zxf amhello-1.0.tar.gz
+     ~ % cd amhello-1.0
+     ~/amhello-1.0 % ./configure
+     ...
+     config.status: creating Makefile
+     config.status: creating src/Makefile
+     ...
+     ~/amhello-1.0 % make
+     ...
+     ~/amhello-1.0 % make check
+     ...
+     ~/amhello-1.0 % su
+     Password:
+     /home/adl/amhello-1.0 # make install
+     ...
+     /home/adl/amhello-1.0 # exit
+     ~/amhello-1.0 % make installcheck
+     ...
+
+   The user first unpacks the package.  Here, and in the following
+examples, we will use the non-portable `tar zxf' command for
+simplicity.  On a system without GNU `tar' installed, this command
+should read `gunzip -c amhello-1.0.tar.gz | tar xf -'.
+
+   The user then enters the newly created directory to run the
+`configure' script.  This script probes the system for various
+features, and finally creates the `Makefile's.  In this toy example
+there are only two `Makefile's, but in real-world projects, there may
+be many more, usually one `Makefile' per directory.
+
+   It is now possible to run `make'.  This will construct all the
+programs, libraries, and scripts that need to be constructed for the
+package.  In our example, this compiles the `hello' program.  All files
+are constructed in place, in the source tree; we will see later how
+this can be changed.
+
+   `make check' causes the package's tests to be run.  This step is not
+mandatory, but it is often good to make sure the programs that have
+been built behave as they should, before you decide to install them.
+Our example does not contain any tests, so running `make check' is a
+no-op.
+
+   After everything has been built, and maybe tested, it is time to
+install it on the system.  That means copying the programs, libraries,
+header files, scripts, and other data files from the source directory
+to their final destination on the system.  The command `make install'
+will do that.  However, by default everything will be installed in
+subdirectories of `/usr/local': binaries will go into `/usr/local/bin',
+libraries will end up in `/usr/local/lib', etc.  This destination is
+usually not writable by any user, so we assume that we have to become
+root before we can run `make install'.  In our example, running `make
+install' will copy the program `hello' into `/usr/local/bin' and
+`README' into `/usr/local/share/doc/amhello'.
+
+   A last and optional step is to run `make installcheck'.  This
+command may run tests on the installed files.  `make check' tests the
+files in the source tree, while `make installcheck' tests their
+installed copies.  The tests run by the latter can be different from
+those run by the former.  For instance, there are tests that cannot be
+run in the source tree.  Conversely, some packages are set up so that
+`make installcheck' will run the very same tests as `make check', only
+on different files (non-installed vs. installed).  It can make a
+difference, for instance when the source tree's layout is different
+from that of the installation.  Furthermore it may help to diagnose an
+incomplete installation.
+
+   Presently most packages do not have any `installcheck' tests because
+the existence of `installcheck' is little known, and its usefulness is
+neglected.  Our little toy package is no better: `make installcheck'
+does nothing.
+
+\1f
+File: automake.info,  Node: Standard Targets,  Next: Standard Directory Variables,  Prev: Basic Installation,  Up: Use Cases
+
+2.2.2 Standard `Makefile' Targets
+---------------------------------
+
+So far we have come across four ways to run `make' in the GNU Build
+System: `make', `make check', `make install', and `make installcheck'.
+The words `check', `install', and `installcheck', passed as arguments
+to `make', are called "targets".  `make' is a shorthand for `make all',
+`all' being the default target in the GNU Build System.
+
+   Here is a list of the most useful targets that the GNU Coding
+Standards specify.
+
+`make all'
+     Build programs, libraries, documentation, etc. (same as `make').
+
+`make install'
+     Install what needs to be installed, copying the files from the
+     package's tree to system-wide directories.
+
+`make install-strip'
+     Same as `make install', then strip debugging symbols.  Some users
+     like to trade space for useful bug reports...
+
+`make uninstall'
+     The opposite of `make install': erase the installed files.  (This
+     needs to be run from the same build tree that was installed.)
+
+`make clean'
+     Erase from the build tree the files built by `make all'.
+
+`make distclean'
+     Additionally erase anything `./configure' created.
+
+`make check'
+     Run the test suite, if any.
+
+`make installcheck'
+     Check the installed programs or libraries, if supported.
+
+`make dist'
+     Recreate `PACKAGE-VERSION.tar.gz' from all the source files.
+
+\1f
+File: automake.info,  Node: Standard Directory Variables,  Next: Standard Configuration Variables,  Prev: Standard Targets,  Up: Use Cases
+
+2.2.3 Standard Directory Variables
+----------------------------------
+
+The GNU Coding Standards also specify a hierarchy of variables to
+denote installation directories.  Some of these are:
+
+Directory variable   Default value
+------------------------------------------------------- 
+`prefix'             `/usr/local'
+  `exec_prefix'        `${prefix}'
+    `bindir'             `${exec_prefix}/bin'
+    `libdir'             `${exec_prefix}/lib'
+    ...                  
+  `includedir'         `${prefix}/include'
+  `datarootdir'        `${prefix}/share'
+    `datadir'            `${datarootdir}'
+    `mandir'             `${datarootdir}/man'
+    `infodir'            `${datarootdir}/info'
+    `docdir'             `${datarootdir}/doc/${PACKAGE}'
+  ...                  
+
+   Each of these directories has a role which is often obvious from its
+name.  In a package, any installable file will be installed in one of
+these directories.  For instance in `amhello-1.0', the program `hello'
+is to be installed in BINDIR, the directory for binaries.  The default
+value for this directory is `/usr/local/bin', but the user can supply a
+different value when calling `configure'.  Also the file `README' will
+be installed into DOCDIR, which defaults to
+`/usr/local/share/doc/amhello'.
+
+   As a user, if you wish to install a package on your own account, you
+could proceed as follows:
+
+     ~/amhello-1.0 % ./configure --prefix ~/usr
+     ...
+     ~/amhello-1.0 % make
+     ...
+     ~/amhello-1.0 % make install
+     ...
+
+   This would install `~/usr/bin/hello' and
+`~/usr/share/doc/amhello/README'.
+
+   The list of all such directory options is shown by `./configure
+--help'.
+
+\1f
+File: automake.info,  Node: Standard Configuration Variables,  Next: config.site,  Prev: Standard Directory Variables,  Up: Use Cases
+
+2.2.4 Standard Configuration Variables
+--------------------------------------
+
+The GNU Coding Standards also define a set of standard configuration
+variables used during the build.  Here are some:
+
+`CC'
+     C compiler command
+
+`CFLAGS'
+     C compiler flags
+
+`CXX'
+     C++ compiler command
+
+`CXXFLAGS'
+     C++ compiler flags
+
+`LDFLAGS'
+     linker flags
+
+`CPPFLAGS'
+     C/C++ preprocessor flags
+
+...
+
+   `configure' usually does a good job at setting appropriate values
+for these variables, but there are cases where you may want to override
+them.  For instance you may have several versions of a compiler
+installed and would like to use another one, you may have header files
+installed outside the default search path of the compiler, or even
+libraries out of the way of the linker.
+
+   Here is how one would call `configure' to force it to use `gcc-3' as
+C compiler, use header files from `~/usr/include' when compiling, and
+libraries from `~/usr/lib' when linking.
+
+     ~/amhello-1.0 % ./configure --prefix ~/usr CC=gcc-3 \
+     CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib
+
+   Again, a full list of these variables appears in the output of
+`./configure --help'.
+
+\1f
+File: automake.info,  Node: config.site,  Next: VPATH Builds,  Prev: Standard Configuration Variables,  Up: Use Cases
+
+2.2.5 Overriding Default Configuration Setting with `config.site'
+-----------------------------------------------------------------
+
+When installing several packages using the same setup, it can be
+convenient to create a file to capture common settings.  If a file
+named `PREFIX/share/config.site' exists, `configure' will source it at
+the beginning of its execution.
+
+   Recall the command from the previous section:
+
+     ~/amhello-1.0 % ./configure --prefix ~/usr CC=gcc-3 \
+     CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib
+
+   Assuming we are installing many package in `~/usr', and will always
+want to use these definitions of `CC', `CPPFLAGS', and `LDFLAGS', we
+can automate this by creating the following `~/usr/share/config.site'
+file:
+
+     test -z "$CC" && CC=gcc-3
+     test -z "$CPPFLAGS" && CPPFLAGS=-I$HOME/usr/include
+     test -z "$LDFLAGS" && LDFLAGS=-L$HOME/usr/lib
+
+   Now, any time a `configure' script is using the `~/usr' prefix, it
+will execute the above `config.site' and define these three variables.
+
+     ~/amhello-1.0 % ./configure --prefix ~/usr
+     configure: loading site script /home/adl/usr/share/config.site
+     ...
+
+   *Note Setting Site Defaults: (autoconf)Site Defaults, for more
+information about this feature.
+
+\1f
+File: automake.info,  Node: VPATH Builds,  Next: Two-Part Install,  Prev: config.site,  Up: Use Cases
+
+2.2.6 Parallel Build Trees (a.k.a. VPATH Builds)
+------------------------------------------------
+
+The GNU Build System distinguishes two trees: the source tree, and the
+build tree.
+
+   The source tree is rooted in the directory containing `configure'.
+It contains all the sources files (those that are distributed), and may
+be arranged using several subdirectories.
+
+   The build tree is rooted in the directory in which `configure' was
+run, and is populated with all object files, programs, libraries, and
+other derived files built from the sources (and hence not distributed).
+The build tree usually has the same subdirectory layout as the source
+tree; its subdirectories are created automatically by the build system.
+
+   If `configure' is executed in its own directory, the source and
+build trees are combined: derived files are constructed in the same
+directories as their sources.  This was the case in our first
+installation example (*note Basic Installation::).
+
+   A common request from users is that they want to confine all derived
+files to a single directory, to keep their source directories
+uncluttered.  Here is how we could run `configure' to build everything
+in a subdirectory called `build/'.
+
+     ~ % tar zxf ~/amhello-1.0.tar.gz
+     ~ % cd amhello-1.0
+     ~/amhello-1.0 % mkdir build && cd build
+     ~/amhello-1.0/build % ../configure
+     ...
+     ~/amhello-1.0/build % make
+     ...
+
+   These setups, where source and build trees are different, are often
+called "parallel builds" or "VPATH builds".  The expression _parallel
+build_ is misleading: the word _parallel_ is a reference to the way the
+build tree shadows the source tree, it is not about some concurrency in
+the way build commands are run.  For this reason we refer to such
+setups using the name _VPATH builds_ in the following.  _VPATH_ is the
+name of the `make' feature used by the `Makefile's to allow these
+builds (*note `VPATH' Search Path for All Prerequisites: (make)General
+Search.).
+
+   VPATH builds have other interesting uses.  One is to build the same
+sources with multiple configurations.  For instance:
+
+     ~ % tar zxf ~/amhello-1.0.tar.gz
+     ~ % cd amhello-1.0
+     ~/amhello-1.0 % mkdir debug optim && cd debug
+     ~/amhello-1.0/debug % ../configure CFLAGS='-g -O0'
+     ...
+     ~/amhello-1.0/debug % make
+     ...
+     ~/amhello-1.0/debug % cd ../optim
+     ~/amhello-1.0/optim % ../configure CFLAGS='-O3 -fomit-frame-pointer'
+     ...
+     ~/amhello-1.0/optim % make
+     ...
+
+   With network file systems, a similar approach can be used to build
+the same sources on different machines.  For instance, suppose that the
+sources are installed on a directory shared by two hosts: `HOST1' and
+`HOST2', which may be different platforms.
+
+     ~ % cd /nfs/src
+     /nfs/src % tar zxf ~/amhello-1.0.tar.gz
+
+   On the first host, you could create a local build directory:
+     [HOST1] ~ % mkdir /tmp/amh && cd /tmp/amh
+     [HOST1] /tmp/amh % /nfs/src/amhello-1.0/configure
+     ...
+     [HOST1] /tmp/amh % make && sudo make install
+     ...
+
+(Here we assume that the installer has configured `sudo' so it can
+execute `make install' with root privileges; it is more convenient than
+using `su' like in *note Basic Installation::).
+
+   On the second host, you would do exactly the same, possibly at the
+same time:
+     [HOST2] ~ % mkdir /tmp/amh && cd /tmp/amh
+     [HOST2] /tmp/amh % /nfs/src/amhello-1.0/configure
+     ...
+     [HOST2] /tmp/amh % make && sudo make install
+     ...
+
+   In this scenario, nothing forbids the `/nfs/src/amhello-1.0'
+directory from being read-only.  In fact VPATH builds are also a means
+of building packages from a read-only medium such as a CD-ROM.  (The
+FSF used to sell CD-ROM with unpacked source code, before the GNU
+project grew so big.)
+
+\1f
+File: automake.info,  Node: Two-Part Install,  Next: Cross-Compilation,  Prev: VPATH Builds,  Up: Use Cases
+
+2.2.7 Two-Part Installation
+---------------------------
+
+In our last example (*note VPATH Builds::), a source tree was shared by
+two hosts, but compilation and installation were done separately on
+each host.
+
+   The GNU Build System also supports networked setups where part of the
+installed files should be shared amongst multiple hosts.  It does so by
+distinguishing architecture-dependent files from
+architecture-independent files, and providing two `Makefile' targets to
+install each of these classes of files.
+
+   These targets are `install-exec' for architecture-dependent files
+and `install-data' for architecture-independent files.  The command we
+used up to now, `make install', can be thought of as a shorthand for
+`make install-exec install-data'.
+
+   From the GNU Build System point of view, the distinction between
+architecture-dependent files and architecture-independent files is
+based exclusively on the directory variable used to specify their
+installation destination.  In the list of directory variables we
+provided earlier (*note Standard Directory Variables::), all the
+variables based on EXEC-PREFIX designate architecture-dependent
+directories whose files will be installed by `make install-exec'.  The
+others designate architecture-independent directories and will serve
+files installed by `make install-data'.  *Note 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 `/usr',
+and (2) the directory `/usr/share' is shared by the two hosts.
+
+   On the first host we would run
+     [HOST1] ~ % mkdir /tmp/amh && cd /tmp/amh
+     [HOST1] /tmp/amh % /nfs/src/amhello-1.0/configure --prefix /usr
+     ...
+     [HOST1] /tmp/amh % make && sudo make install
+     ...
+
+   On the second host, however, we need only install the
+architecture-specific files.
+     [HOST2] ~ % mkdir /tmp/amh && cd /tmp/amh
+     [HOST2] /tmp/amh % /nfs/src/amhello-1.0/configure --prefix /usr
+     ...
+     [HOST2] /tmp/amh % make && sudo make install-exec
+     ...
+
+   In packages that have installation checks, it would make sense to run
+`make installcheck' (*note Basic Installation::) to verify that the
+package works correctly despite the apparent partial installation.
+
+\1f
+File: automake.info,  Node: Cross-Compilation,  Next: Renaming,  Prev: Two-Part Install,  Up: Use Cases
+
+2.2.8 Cross-Compilation
+-----------------------
+
+To "cross-compile" is to build on one platform a binary that will run
+on another platform.  When speaking of cross-compilation, it is
+important to distinguish between the "build platform" on which the
+compilation is performed, and the "host platform" on which the
+resulting executable is expected to run.  The following `configure'
+options are used to specify each of them:
+
+`--build=BUILD'
+     The system on which the package is built.
+
+`--host=HOST'
+     The system where built programs and libraries will run.
+
+   When the `--host' is used, `configure' will search for the
+cross-compiling suite for this platform.  Cross-compilation tools
+commonly have their target architecture as prefix of their name.  For
+instance my cross-compiler for MinGW32 has its binaries called
+`i586-mingw32msvc-gcc', `i586-mingw32msvc-ld', `i586-mingw32msvc-as',
+etc.
+
+   Here is how we could build `amhello-1.0' for `i586-mingw32msvc' on a
+GNU/Linux PC.
+
+     ~/amhello-1.0 % ./configure --build i686-pc-linux-gnu --host i586-mingw32msvc
+     checking for a BSD-compatible install... /usr/bin/install -c
+     checking whether build environment is sane... yes
+     checking for gawk... gawk
+     checking whether make sets $(MAKE)... yes
+     checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip
+     checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc
+     checking for C compiler default output file name... a.exe
+     checking whether the C compiler works... yes
+     checking whether we are cross compiling... yes
+     checking for suffix of executables... .exe
+     checking for suffix of object files... o
+     checking whether we are using the GNU C compiler... yes
+     checking whether i586-mingw32msvc-gcc accepts -g... yes
+     checking for i586-mingw32msvc-gcc option to accept ANSI C...
+     ...
+     ~/amhello-1.0 % make
+     ...
+     ~/amhello-1.0 % cd src; file hello.exe
+     hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
+
+   The `--host' and `--build' options are usually all we need for
+cross-compiling.  The only exception is if the package being built is
+itself a cross-compiler: we need a third option to specify its target
+architecture.
+
+`--target=TARGET'
+     When building compiler tools: the system for which the tools will
+     create output.
+
+   For instance when installing GCC, the GNU Compiler Collection, we can
+use `--target=TARGET' to specify that we want to build GCC as a
+cross-compiler for TARGET.  Mixing `--build' and `--target', we can
+actually cross-compile a cross-compiler; such a three-way
+cross-compilation is known as a "Canadian cross".
+
+   *Note Specifying the System Type: (autoconf)Specifying Names, for
+more information about these `configure' options.
+
+\1f
+File: automake.info,  Node: Renaming,  Next: DESTDIR,  Prev: Cross-Compilation,  Up: Use Cases
+
+2.2.9 Renaming Programs at Install Time
+---------------------------------------
+
+The GNU Build System provides means to automatically rename executables
+and manpages before they are installed (*note 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, you may want to install GNU `tar' as `gtar' so you can
+distinguish it from your vendor's `tar'.
+
+   This can be done using one of these three `configure' options.
+
+`--program-prefix=PREFIX'
+     Prepend PREFIX to installed program names.
+
+`--program-suffix=SUFFIX'
+     Append SUFFIX to installed program names.
+
+`--program-transform-name=PROGRAM'
+     Run `sed PROGRAM' on installed program names.
+
+   The following commands would install `hello' as
+`/usr/local/bin/test-hello', for instance.
+
+     ~/amhello-1.0 % ./configure --program-prefix test-
+     ...
+     ~/amhello-1.0 % make
+     ...
+     ~/amhello-1.0 % sudo make install
+     ...
+
+\1f
+File: automake.info,  Node: DESTDIR,  Next: Preparing Distributions,  Prev: Renaming,  Up: Use Cases
+
+2.2.10 Building Binary Packages Using DESTDIR
+---------------------------------------------
+
+The GNU Build System's `make install' and `make uninstall' interface
+does not exactly fit the needs of a system administrator who has to
+deploy and upgrade packages on lots of hosts.  In other words, the GNU
+Build System does not replace a package manager.
+
+   Such package managers usually need to know which files have been
+installed by a package, so a mere `make install' is inappropriate.
+
+   The `DESTDIR' variable can be used to perform a staged installation.
+The package should be configured as if it was going to be installed in
+its final location (e.g., `--prefix /usr'), but when running `make
+install', the `DESTDIR' should be set to the absolute name of a
+directory into which the installation will be diverted.  From this
+directory it is easy to review which files are being installed where,
+and finally copy them to their final location by some means.
+
+   For instance here is how we could create a binary package containing
+a snapshot of all the files to be installed.
+
+     ~/amhello-1.0 % ./configure --prefix /usr
+     ...
+     ~/amhello-1.0 % make
+     ...
+     ~/amhello-1.0 % make DESTDIR=$HOME/inst install
+     ...
+     ~/amhello-1.0 % cd ~/inst
+     ~/inst % find . -type f -print > ../files.lst
+     ~/inst % tar zcvf ~/amhello-1.0-i686.tar.gz `cat ../files.lst`
+     ./usr/bin/hello
+     ./usr/share/doc/amhello/README
+
+   After this example, `amhello-1.0-i686.tar.gz' is ready to be
+uncompressed in `/' on many hosts.  (Using ``cat ../files.lst`' instead
+of `.' as argument for `tar' avoids entries for each subdirectory in
+the archive: we would not like `tar' to restore the modification time
+of `/', `/usr/', etc.)
+
+   Note that when building packages for several architectures, it might
+be convenient to use `make install-data' and `make install-exec' (*note
+Two-Part Install::) to gather architecture-independent files in a
+single package.
+
+   *Note Install::, for more information.
+
+\1f
+File: automake.info,  Node: Preparing Distributions,  Next: Dependency Tracking,  Prev: DESTDIR,  Up: Use Cases
+
+2.2.11 Preparing Distributions
+------------------------------
+
+We have already mentioned `make dist'.  This target collects all your
+source files and the necessary parts of the build system to create a
+tarball named `PACKAGE-VERSION.tar.gz'.
+
+   Another, more useful command is `make distcheck'.  The `distcheck'
+target constructs `PACKAGE-VERSION.tar.gz' just as well as `dist', but
+it additionally ensures most of the use cases presented so far work:
+
+   * It attempts a full compilation of the package (*note Basic
+     Installation::), unpacking the newly constructed tarball, running
+     `make', `make check', `make install', as well as `make
+     installcheck', and even `make dist',
+
+   * it tests VPATH builds with read-only source tree (*note VPATH
+     Builds::),
+
+   * it makes sure `make clean', `make distclean', and `make uninstall'
+     do not omit any file (*note Standard Targets::),
+
+   * and it checks that `DESTDIR' installations work (*note DESTDIR::).
+
+   All of these actions are performed in a temporary subdirectory, so
+that no root privileges are required.
+
+   Releasing a package that fails `make distcheck' means that one of
+the scenarios we presented will not work and some users will be
+disappointed.  Therefore it is a good practice to release a package
+only after a successful `make distcheck'.  This of course does not
+imply that the package will be flawless, but at least it will prevent
+some of the embarrassing errors you may find in packages released by
+people who have never heard about `distcheck' (like `DESTDIR' not
+working because of a typo, or a distributed file being erased by `make
+clean', or even `VPATH' builds not working).
+
+   *Note Creating amhello::, to recreate `amhello-1.0.tar.gz' using
+`make distcheck'.  *Note Checking the Distribution::, for more
+information about `distcheck'.
+
+\1f
+File: automake.info,  Node: Dependency Tracking,  Next: Nested Packages,  Prev: Preparing Distributions,  Up: Use Cases
+
+2.2.12 Automatic Dependency Tracking
+------------------------------------
+
+Dependency tracking is performed as a side-effect of compilation.  Each
+time the build system compiles a source file, it computes its list of
+dependencies (in C these are the header files included by the source
+being compiled).  Later, any time `make' is run and a dependency
+appears to have changed, the dependent files will be rebuilt.
+
+   Automake generates code for automatic dependency tracking by default,
+unless the developer chooses to override it; for more information,
+*note Dependencies::.
+
+   When `configure' is executed, you can see it probing each compiler
+for the dependency mechanism it supports (several mechanisms can be
+used):
+
+     ~/amhello-1.0 % ./configure --prefix /usr
+     ...
+     checking dependency style of gcc... gcc3
+     ...
+
+   Because dependencies are only computed as a side-effect of the
+compilation, no dependency information exists the first time a package
+is built.  This is OK because all the files need to be built anyway:
+`make' does not have to decide which files need to be rebuilt.  In
+fact, dependency tracking is completely useless for one-time builds and
+there is a `configure' option to disable this:
+
+`--disable-dependency-tracking'
+     Speed up one-time builds.
+
+   Some compilers do not offer any practical way to derive the list of
+dependencies as a side-effect of the compilation, requiring a separate
+run (maybe of another tool) to compute these dependencies.  The
+performance penalty implied by these methods is important enough to
+disable them by default.  The option `--enable-dependency-tracking'
+must be passed to `configure' to activate them.
+
+`--enable-dependency-tracking'
+     Do not reject slow dependency extractors.
+
+   *Note Dependency Tracking Evolution: (automake-history)Dependency
+Tracking Evolution, for some discussion about the different dependency
+tracking schemes used by Automake over the years.
+
+\1f
+File: automake.info,  Node: Nested Packages,  Prev: Dependency Tracking,  Up: Use Cases
+
+2.2.13 Nested Packages
+----------------------
+
+Although nesting packages isn't something we would recommend to someone
+who is discovering the Autotools, it is a nice feature worthy of
+mention in this small advertising tour.
+
+   Autoconfiscated packages (that means packages whose build system have
+been created by Autoconf and friends) can be nested to arbitrary depth.
+
+   A typical setup is that package A will distribute one of the
+libraries it needs in a subdirectory.  This library B is a complete
+package with its own GNU Build System.  The `configure' script of A will
+run the `configure' script of B as part of its execution, building and
+installing A will also build and install B.  Generating a distribution
+for A will also include B.
+
+   It is possible to gather several packages like this.  GCC is a heavy
+user of this feature.  This gives installers a single package to
+configure, build and install, while it allows developers to work on
+subpackages independently.
+
+   When configuring nested packages, the `configure' options given to
+the top-level `configure' are passed recursively to nested
+`configure's.  A package that does not understand an option will ignore
+it, assuming it is meaningful to some other package.
+
+   The command `configure --help=recursive' can be used to display the
+options supported by all the included packages.
+
+   *Note Subpackages::, for an example setup.
+
+\1f
+File: automake.info,  Node: Why Autotools,  Next: Hello World,  Prev: Use Cases,  Up: Autotools Introduction
+
+2.3 How Autotools Help
+======================
+
+There are several reasons why you may not want to implement the GNU
+Build System yourself (read: write a `configure' script and `Makefile's
+yourself).
+
+   * As we have seen, the GNU Build System has a lot of features (*note
+     Use Cases::).  Some users may expect features you have not
+     implemented because you did not need them.
+
+   * Implementing these features portably is difficult and exhausting.
+     Think of writing portable shell scripts, and portable `Makefile's,
+     for systems you may not have handy.  *Note Portable Shell
+     Programming: (autoconf)Portable Shell, to convince yourself.
+
+   * You will have to upgrade your setup to follow changes to the GNU
+     Coding Standards.
+
+   The GNU Autotools take all this burden off your back and provide:
+
+   * Tools to create a portable, complete, and self-contained GNU Build
+     System, from simple instructions.  _Self-contained_ meaning the
+     resulting build system does not require the GNU Autotools.
+
+   * A central place where fixes and improvements are made: a bug-fix
+     for a portability issue will benefit every package.
+
+   Yet there also exist reasons why you may want NOT to use the
+Autotools... For instance you may be already using (or used to) another
+incompatible build system.  Autotools will only be useful if you do
+accept the concepts of the GNU Build System.  People who have their own
+idea of how a build system should work will feel frustrated by the
+Autotools.
+
+\1f
+File: automake.info,  Node: Hello World,  Prev: Why Autotools,  Up: Autotools Introduction
+
+2.4 A Small Hello World
+=======================
+
+In this section we recreate the `amhello-1.0' package from scratch.
+The first subsection shows how to call the Autotools to instantiate the
+GNU Build System, while the second explains the meaning of the
+`configure.ac' and `Makefile.am' files read by the Autotools.
+
+* Menu:
+
+* Creating amhello::            Create `amhello-1.0.tar.gz' from scratch
+* amhello's configure.ac Setup Explained::
+* amhello's Makefile.am Setup Explained::
+
+\1f
+File: automake.info,  Node: Creating amhello,  Next: amhello's configure.ac Setup Explained,  Up: Hello World
+
+2.4.1 Creating `amhello-1.0.tar.gz'
+-----------------------------------
+
+Here is how we can recreate `amhello-1.0.tar.gz' from scratch.  The
+package is simple enough so that we will only need to write 5 files.
+(You may copy them from the final `amhello-1.0.tar.gz' that is
+distributed with Automake if you do not want to write them.)
+
+   Create the following files in an empty directory.
+
+   * `src/main.c' is the source file for the `hello' program.  We store
+     it in the `src/' subdirectory, because later, when the package
+     evolves, it will ease the addition of a `man/' directory for man
+     pages, a `data/' directory for data files, etc.
+          ~/amhello % cat src/main.c
+          #include <config.h>
+          #include <stdio.h>
+
+          int
+          main (void)
+          {
+            puts ("Hello World!");
+            puts ("This is " PACKAGE_STRING ".");
+            return 0;
+          }
+
+   * `README' contains some very limited documentation for our little
+     package.
+          ~/amhello % cat README
+          This is a demonstration package for GNU Automake.
+          Type `info Automake' to read the Automake manual.
+
+   * `Makefile.am' and `src/Makefile.am' contain Automake instructions
+     for these two directories.
+
+          ~/amhello % cat src/Makefile.am
+          bin_PROGRAMS = hello
+          hello_SOURCES = main.c
+          ~/amhello % cat Makefile.am
+          SUBDIRS = src
+          dist_doc_DATA = README
+
+   * Finally, `configure.ac' contains Autoconf instructions to create
+     the `configure' script.
+
+          ~/amhello % cat configure.ac
+          AC_INIT([amhello], [1.0], [bug-automake@gnu.org])
+          AM_INIT_AUTOMAKE([-Wall -Werror foreign])
+          AC_PROG_CC
+          AC_CONFIG_HEADERS([config.h])
+          AC_CONFIG_FILES([
+           Makefile
+           src/Makefile
+          ])
+          AC_OUTPUT
+
+   Once you have these five files, it is time to run the Autotools to
+instantiate the build system.  Do this using the `autoreconf' command
+as follows:
+
+     ~/amhello % autoreconf --install
+     configure.ac: installing `./install-sh'
+     configure.ac: installing `./missing'
+     src/Makefile.am: installing `./depcomp'
+
+   At this point the build system is complete.
+
+   In addition to the three scripts mentioned in its output, you can see
+that `autoreconf' created four other files: `configure', `config.h.in',
+`Makefile.in', and `src/Makefile.in'.  The latter three files are
+templates that will be adapted to the system by `configure' under the
+names `config.h', `Makefile', and `src/Makefile'.  Let's do this:
+
+     ~/amhello % ./configure
+     checking for a BSD-compatible install... /usr/bin/install -c
+     checking whether build environment is sane... yes
+     checking for gawk... no
+     checking for mawk... mawk
+     checking whether make sets $(MAKE)... yes
+     checking for gcc... gcc
+     checking for C compiler default output file name... a.out
+     checking whether the C compiler works... yes
+     checking whether we are cross compiling... no
+     checking for suffix of executables...
+     checking for suffix of object files... o
+     checking whether we are using the GNU C compiler... yes
+     checking whether gcc accepts -g... yes
+     checking for gcc option to accept ISO C89... none needed
+     checking for style of include used by make... GNU
+     checking dependency style of gcc... gcc3
+     configure: creating ./config.status
+     config.status: creating Makefile
+     config.status: creating src/Makefile
+     config.status: creating config.h
+     config.status: executing depfiles commands
+
+   You can see `Makefile', `src/Makefile', and `config.h' being created
+at the end after `configure' has probed the system.  It is now possible
+to run all the targets we wish (*note Standard Targets::).  For
+instance:
+
+     ~/amhello % make
+     ...
+     ~/amhello % src/hello
+     Hello World!
+     This is amhello 1.0.
+     ~/amhello % make distcheck
+     ...
+     =============================================
+     amhello-1.0 archives ready for distribution:
+     amhello-1.0.tar.gz
+     =============================================
+
+   Note that running `autoreconf' is only needed initially when the GNU
+Build System does not exist.  When you later change some instructions
+in a `Makefile.am' or `configure.ac', the relevant part of the build
+system will be regenerated automatically when you execute `make'.
+
+   `autoreconf' is a script that calls `autoconf', `automake', and a
+bunch of other commands in the right order.  If you are beginning with
+these tools, it is not important to figure out in which order all these
+tools should be invoked and why.  However, because Autoconf and
+Automake have separate manuals, the important point to understand is
+that `autoconf' is in charge of creating `configure' from
+`configure.ac', while `automake' is in charge of creating
+`Makefile.in's from `Makefile.am's and `configure.ac'.  This should at
+least direct you to the right manual when seeking answers.
+
+\1f
+File: automake.info,  Node: amhello's configure.ac Setup Explained,  Next: amhello's Makefile.am Setup Explained,  Prev: Creating amhello,  Up: Hello World
+
+2.4.2 `amhello''s `configure.ac' Setup Explained
+------------------------------------------------
+
+Let us begin with the contents of `configure.ac'.
+
+     AC_INIT([amhello], [1.0], [bug-automake@gnu.org])
+     AM_INIT_AUTOMAKE([-Wall -Werror foreign])
+     AC_PROG_CC
+     AC_CONFIG_HEADERS([config.h])
+     AC_CONFIG_FILES([
+      Makefile
+      src/Makefile
+     ])
+     AC_OUTPUT
+
+   This file is read by both `autoconf' (to create `configure') and
+`automake' (to create the various `Makefile.in's).  It contains a
+series of M4 macros that will be expanded as shell code to finally form
+the `configure' script.  We will not elaborate on the syntax of this
+file, because the Autoconf manual has a whole section about it (*note
+Writing `configure.ac': (autoconf)Writing Autoconf Input.).
+
+   The macros prefixed with `AC_' are Autoconf macros, documented in
+the Autoconf manual (*note Autoconf Macro Index: (autoconf)Autoconf
+Macro Index.).  The macros that start with `AM_' are Automake macros,
+documented later in this manual (*note Macro Index::).
+
+   The first two lines of `configure.ac' initialize Autoconf and
+Automake.  `AC_INIT' takes in as parameters the name of the package,
+its version number, and a contact address for bug-reports about the
+package (this address is output at the end of `./configure --help', for
+instance).  When adapting this setup to your own package, by all means
+please do not blindly copy Automake's address: use the mailing list of
+your package, or your own mail address.
+
+   The argument to `AM_INIT_AUTOMAKE' is a list of options for
+`automake' (*note Options::).  `-Wall' and `-Werror' ask `automake' to
+turn on all warnings and report them as errors.  We are speaking of
+*Automake* warnings here, such as dubious instructions in
+`Makefile.am'.  This has absolutely nothing to do with how the compiler
+will be called, even though it may support options with similar names.
+Using `-Wall -Werror' is a safe setting when starting to work on a
+package: you do not want to miss any issues.  Later you may decide to
+relax things a bit.  The `foreign' option tells Automake that this
+package will not follow the GNU Standards.  GNU packages should always
+distribute additional files such as `ChangeLog', `AUTHORS', etc.  We do
+not want `automake' to complain about these missing files in our small
+example.
+
+   The `AC_PROG_CC' line causes the `configure' script to search for a
+C compiler and define the variable `CC' with its name.  The
+`src/Makefile.in' file generated by Automake uses the variable `CC' to
+build `hello', so when `configure' creates `src/Makefile' from
+`src/Makefile.in', it will define `CC' with the value it has found.  If
+Automake is asked to create a `Makefile.in' that uses `CC' but
+`configure.ac' does not define it, it will suggest you add a call to
+`AC_PROG_CC'.
+
+   The `AC_CONFIG_HEADERS([config.h])' invocation causes the
+`configure' script to create a `config.h' file gathering `#define's
+defined by other macros in `configure.ac'.  In our case, the `AC_INIT'
+macro already defined a few of them.  Here is an excerpt of `config.h'
+after `configure' has run:
+
+     ...
+     /* Define to the address where bug reports for this package should be sent. */
+     #define PACKAGE_BUGREPORT "bug-automake@gnu.org"
+
+     /* Define to the full name and version of this package. */
+     #define PACKAGE_STRING "amhello 1.0"
+     ...
+
+   As you probably noticed, `src/main.c' includes `config.h' so it can
+use `PACKAGE_STRING'.  In a real-world project, `config.h' can grow
+really big, with one `#define' per feature probed on the system.
+
+   The `AC_CONFIG_FILES' macro declares the list of files that
+`configure' should create from their `*.in' templates.  Automake also
+scans this list to find the `Makefile.am' files it must process.  (This
+is important to remember: when adding a new directory to your project,
+you should add its `Makefile' to this list, otherwise Automake will
+never process the new `Makefile.am' you wrote in that directory.)
+
+   Finally, the `AC_OUTPUT' line is a closing command that actually
+produces the part of the script in charge of creating the files
+registered with `AC_CONFIG_HEADERS' and `AC_CONFIG_FILES'.
+
+   When starting a new project, we suggest you start with such a simple
+`configure.ac', and gradually add the other tests it requires.  The
+command `autoscan' can also suggest a few of the tests your package may
+need (*note Using `autoscan' to Create `configure.ac':
+(autoconf)autoscan Invocation.).
+
+\1f
+File: automake.info,  Node: amhello's Makefile.am Setup Explained,  Prev: amhello's configure.ac Setup Explained,  Up: Hello World
+
+2.4.3 `amhello''s `Makefile.am' Setup Explained
+-----------------------------------------------
+
+We now turn to `src/Makefile.am'.  This file contains Automake
+instructions to build and install `hello'.
+
+     bin_PROGRAMS = hello
+     hello_SOURCES = main.c
+
+   A `Makefile.am' has the same syntax as an ordinary `Makefile'.  When
+`automake' processes a `Makefile.am' it copies the entire file into the
+output `Makefile.in' (that will be later turned into `Makefile' by
+`configure') but will react to certain variable definitions by
+generating some build rules and other variables.  Often `Makefile.am's
+contain only a list of variable definitions as above, but they can also
+contain other variable and rule definitions that `automake' will pass
+along without interpretation.
+
+   Variables that end with `_PROGRAMS' are special variables that list
+programs that the resulting `Makefile' should build.  In Automake
+speak, this `_PROGRAMS' suffix is called a "primary"; Automake
+recognizes other primaries such as `_SCRIPTS', `_DATA', `_LIBRARIES',
+etc. corresponding to different types of files.
+
+   The `bin' part of the `bin_PROGRAMS' tells `automake' that the
+resulting programs should be installed in BINDIR.  Recall that the GNU
+Build System uses a set of variables to denote destination directories
+and allow users to customize these locations (*note Standard Directory
+Variables::).  Any such directory variable can be put in front of a
+primary (omitting the `dir' suffix) to tell `automake' where to install
+the listed files.
+
+   Programs need to be built from source files, so for each program
+`PROG' listed in a `_PROGRAMS' variable, `automake' will look for
+another variable named `PROG_SOURCES' listing its source files.  There
+may be more than one source file: they will all be compiled and linked
+together.
+
+   Automake also knows that source files need to be distributed when
+creating a tarball (unlike built programs).  So a side-effect of this
+`hello_SOURCES' declaration is that `main.c' will be part of the
+tarball created by `make dist'.
+
+   Finally here are some explanations regarding the top-level
+`Makefile.am'.
+
+     SUBDIRS = src
+     dist_doc_DATA = README
+
+   `SUBDIRS' is a special variable listing all directories that `make'
+should recurse into before processing the current directory.  So this
+line is responsible for `make' building `src/hello' even though we run
+it from the top-level.  This line also causes `make install' to install
+`src/hello' before installing `README' (not that this order matters).
+
+   The line `dist_doc_DATA = README' causes `README' to be distributed
+and installed in DOCDIR.  Files listed with the `_DATA' primary are not
+automatically part of the tarball built with `make dist', so we add the
+`dist_' prefix so they get distributed.  However, for `README' it would
+not have been necessary: `automake' automatically distributes any
+`README' file it encounters (the list of other files automatically
+distributed is presented by `automake --help').  The only important
+effect of this second line is therefore to install `README' during
+`make install'.
+
+   One thing not covered in this example is accessing the installation
+directory values (*note Standard Directory Variables::) from your
+program code, that is, converting them into defined macros.  For this,
+*note Defining Directories: (autoconf)Defining Directories.
+
+\1f
+File: automake.info,  Node: Generalities,  Next: Examples,  Prev: Autotools Introduction,  Up: Top
+
+3 General ideas
+***************
+
+The following sections cover a few basic ideas that will help you
+understand how Automake works.
+
+* Menu:
+
+* General Operation::           General operation of Automake
+* Strictness::                  Standards conformance checking
+* Uniform::                     The Uniform Naming Scheme
+* Length Limitations::          Staying below the command line length limit
+* Canonicalization::            How derived variables are named
+* User Variables::              Variables reserved for the user
+* Auxiliary Programs::          Programs automake might require
+
+\1f
+File: automake.info,  Node: General Operation,  Next: Strictness,  Up: Generalities
+
+3.1 General Operation
+=====================
+
+Automake works by reading a `Makefile.am' and generating a
+`Makefile.in'.  Certain variables and rules defined in the
+`Makefile.am' instruct Automake to generate more specialized code; for
+instance, a `bin_PROGRAMS' variable definition will cause rules for
+compiling and linking programs to be generated.
+
+   The variable definitions and rules in the `Makefile.am' are copied
+mostly verbatim into the generated file, with all variable definitions
+preceding all rules.  This allows you to add almost arbitrary code into
+the generated `Makefile.in'.  For instance, the Automake distribution
+includes a non-standard rule for the `git-dist' target, which the
+Automake maintainer uses to make distributions from the source control
+system.
+
+   Note that most GNU make extensions are not recognized by Automake.
+Using such extensions in a `Makefile.am' will lead to errors or
+confusing behavior.
+
+   A special exception is that the GNU make append operator, `+=', is
+supported.  This operator appends its right hand argument to the
+variable specified on the left.  Automake will translate the operator
+into an ordinary `=' operator; `+=' will thus work with any make
+program.
+
+   Automake tries to keep comments grouped with any adjoining rules or
+variable definitions.
+
+   Generally, Automake is not particularly smart in the parsing of
+unusual Makefile constructs, so you're advised to avoid fancy
+constructs or "creative" use of whitespaces.  For example, <TAB>
+characters cannot be used between a target name and the following "`:'"
+character, and variable assignments shouldn't be indented with <TAB>
+characters.  Also, using more complex macro in target names can cause
+trouble:
+
+     % cat Makefile.am
+     $(FOO:=x): bar
+     % automake
+     Makefile.am:1: bad characters in variable name `$(FOO'
+     Makefile.am:1: `:='-style assignments are not portable
+
+   A rule defined in `Makefile.am' generally overrides any such rule of
+a similar name that would be automatically generated by `automake'.
+Although this is a supported feature, it is generally best to avoid
+making use of it, as sometimes the generated rules are very particular.
+
+   Similarly, a variable defined in `Makefile.am' or `AC_SUBST'ed from
+`configure.ac' will override any definition of the variable that
+`automake' would ordinarily create.  This feature is more often useful
+than the ability to override a rule.  Be warned that many of the
+variables generated by `automake' are considered to be for internal use
+only, and their names might change in future releases.
+
+   When examining a variable definition, Automake will recursively
+examine variables referenced in the definition.  For example, if
+Automake is looking at the content of `foo_SOURCES' in this snippet
+
+     xs = a.c b.c
+     foo_SOURCES = c.c $(xs)
+
+   it would use the files `a.c', `b.c', and `c.c' as the contents of
+`foo_SOURCES'.
+
+   Automake also allows a form of comment that is _not_ copied into the
+output; all lines beginning with `##' (leading spaces allowed) are
+completely ignored by Automake.
+
+   It is customary to make the first line of `Makefile.am' read:
+
+     ## Process this file with automake to produce Makefile.in
+
+\1f
+File: automake.info,  Node: Strictness,  Next: Uniform,  Prev: General Operation,  Up: Generalities
+
+3.2 Strictness
+==============
+
+While Automake is intended to be used by maintainers of GNU packages, it
+does make some effort to accommodate those who wish to use it, but do
+not want to use all the GNU conventions.
+
+   To this end, Automake supports three levels of "strictness"--the
+strictness indicating how stringently Automake should check standards
+conformance.
+
+   The valid strictness levels are:
+
+`foreign'
+     Automake will check for only those things that are absolutely
+     required for proper operations.  For instance, whereas GNU
+     standards dictate the existence of a `NEWS' file, it will not be
+     required in this mode.  This strictness will also turn off some
+     warnings by default (among them, portability warnings).  The name
+     comes from the fact that Automake is intended to be used for GNU
+     programs; these relaxed rules are not the standard mode of
+     operation.
+
+`gnu'
+     Automake will check--as much as possible--for compliance to the GNU
+     standards for packages.  This is the default.
+
+`gnits'
+     Automake will check for compliance to the as-yet-unwritten "Gnits
+     standards".  These are based on the GNU standards, but are even
+     more detailed.  Unless you are a Gnits standards contributor, it is
+     recommended that you avoid this option until such time as the Gnits
+     standard is actually published (which may never happen).
+
+   *Note Gnits::, for more information on the precise implications of
+the strictness level.
+
+   Automake also has a special (and _today deprecated_) "cygnus" mode
+that is similar to strictness but handled differently.  This mode is
+useful for packages that are put into a "Cygnus" style tree (e.g., older
+versions of the GCC and gdb trees).  *Note Cygnus::, for more
+information on this mode.  Please note that this mode _is deprecated
+and will be removed in the next major Automake release (1.13)_; you
+must avoid its use in new packages, and should stop using it in
+existing packages as well.
+
+\1f
+File: automake.info,  Node: Uniform,  Next: Length Limitations,  Prev: Strictness,  Up: Generalities
+
+3.3 The Uniform Naming Scheme
+=============================
+
+Automake variables generally follow a "uniform naming scheme" that
+makes it easy to decide how programs (and other derived objects) are
+built, and how they are installed.  This scheme also supports
+`configure' time determination of what should be built.
+
+   At `make' time, certain variables are used to determine which
+objects are to be built.  The variable names are made of several pieces
+that are concatenated together.
+
+   The piece that tells `automake' what is being built is commonly
+called the "primary".  For instance, the primary `PROGRAMS' holds a
+list of programs that are to be compiled and linked.  
+
+   A different set of names is used to decide where the built objects
+should be installed.  These names are prefixes to the primary, and they
+indicate which standard directory should be used as the installation
+directory.  The standard directory names are given in the GNU standards
+(*note Directory Variables: (standards)Directory Variables.).  Automake
+extends this list with `pkgdatadir', `pkgincludedir', `pkglibdir', and
+`pkglibexecdir'; these are the same as the non-`pkg' versions, but with
+`$(PACKAGE)' appended.  For instance, `pkglibdir' is defined as
+`$(libdir)/$(PACKAGE)'.
+
+   For each primary, there is one additional variable named by
+prepending `EXTRA_' to the primary name.  This variable is used to list
+objects that may or may not be built, depending on what `configure'
+decides.  This variable is required because Automake must statically
+know the entire list of objects that may be built in order to generate
+a `Makefile.in' that will work in all cases.
+
+   For instance, `cpio' decides at configure time which programs should
+be built.  Some of the programs are installed in `bindir', and some are
+installed in `sbindir':
+
+     EXTRA_PROGRAMS = mt rmt
+     bin_PROGRAMS = cpio pax
+     sbin_PROGRAMS = $(MORE_PROGRAMS)
+
+   Defining a primary without a prefix as a variable, e.g., `PROGRAMS',
+is an error.
+
+   Note that the common `dir' suffix is left off when constructing the
+variable names; thus one writes `bin_PROGRAMS' and not
+`bindir_PROGRAMS'.
+
+   Not every sort of object can be installed in every directory.
+Automake will flag those attempts it finds in error (but see below how
+to override the check if you really need to).  Automake will also
+diagnose obvious misspellings in directory names.
+
+   Sometimes the standard directories--even as augmented by
+Automake--are not enough.  In particular it is sometimes useful, for
+clarity, to install objects in a subdirectory of some predefined
+directory.  To this end, Automake allows you to extend the list of
+possible installation directories.  A given prefix (e.g., `zar') is
+valid if a variable of the same name with `dir' appended is defined
+(e.g., `zardir').
+
+   For instance, the following snippet will install `file.xml' into
+`$(datadir)/xml'.
+
+     xmldir = $(datadir)/xml
+     xml_DATA = file.xml
+
+   This feature can also be used to override the sanity checks Automake
+performs to diagnose suspicious directory/primary couples (in the
+unlikely case these checks are undesirable, and you really know what
+you're doing).  For example, Automake would error out on this input:
+
+     # Forbidden directory combinations, automake will error out on this.
+     pkglib_PROGRAMS = foo
+     doc_LIBRARIES = libquux.a
+
+but it will succeed with this:
+
+     # Work around forbidden directory combinations.  Do not use this
+     # without a very good reason!
+     my_execbindir = $(pkglibdir)
+     my_doclibdir = $(docdir)
+     my_execbin_PROGRAMS = foo
+     my_doclib_LIBRARIES = libquux.a
+
+   The `exec' substring of the `my_execbindir' variable lets the files
+be installed at the right time (*note The Two Parts of Install::).
+
+   The special prefix `noinst_' indicates that the objects in question
+should be built but not installed at all.  This is usually used for
+objects required to build the rest of your package, for instance static
+libraries (*note A Library::), or helper scripts.
+
+   The special prefix `check_' indicates that the objects in question
+should not be built until the `make check' command is run.  Those
+objects are not installed either.
+
+   The current primary names are `PROGRAMS', `LIBRARIES',
+`LTLIBRARIES', `LISP', `PYTHON', `JAVA', `SCRIPTS', `DATA', `HEADERS',
+`MANS', and `TEXINFOS'.  
+
+   Some primaries also allow additional prefixes that control other
+aspects of `automake''s behavior.  The currently defined prefixes are
+`dist_', `nodist_', `nobase_', and `notrans_'.  These prefixes are
+explained later (*note Program and Library Variables::) (*note Man
+Pages::).
+
+\1f
+File: automake.info,  Node: Length Limitations,  Next: Canonicalization,  Prev: Uniform,  Up: Generalities
+
+3.4 Staying below the command line length limit
+===============================================
+
+Traditionally, most unix-like systems have a length limitation for the
+command line arguments and environment contents when creating new
+processes (see for example
+`http://www.in-ulm.de/~mascheck/various/argmax/' for an overview on
+this issue), which of course also applies to commands spawned by `make'.
+POSIX requires this limit to be at least 4096 bytes, and most modern
+systems have quite high limits (or are unlimited).
+
+   In order to create portable Makefiles that do not trip over these
+limits, it is necessary to keep the length of file lists bounded.
+Unfortunately, it is not possible to do so fully transparently within
+Automake, so your help may be needed.  Typically, you can split long
+file lists manually and use different installation directory names for
+each list.  For example,
+
+     data_DATA = file1 ... fileN fileN+1 ... file2N
+
+may also be written as
+
+     data_DATA = file1 ... fileN
+     data2dir = $(datadir)
+     data2_DATA = fileN+1 ... file2N
+
+and will cause Automake to treat the two lists separately during `make
+install'.  See *note The Two Parts of Install:: for choosing directory
+names that will keep the ordering of the two parts of installation Note
+that `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 `${srcdir}/' is prepended to file names, as
+can happen with above `$(data_DATA)' lists, it limits the amount of
+arguments passed to external commands.
+
+   Unfortunately, some system's `make' commands may prepend `VPATH'
+prefixes like `${srcdir}/' to file names from the source tree
+automatically (*note Automatic Rule Rewriting: (autoconf)Automatic Rule
+Rewriting.).  In this case, the user may have to switch to use GNU
+Make, or refrain from using VPATH builds, in order to stay below the
+length limit.
+
+   For libraries and programs built from many sources, convenience
+archives may be used as intermediates in order to limit the object list
+length (*note Libtool Convenience Libraries::).
+
+\1f
+File: automake.info,  Node: Canonicalization,  Next: User Variables,  Prev: Length Limitations,  Up: Generalities
+
+3.5 How derived variables are named
+===================================
+
+Sometimes a Makefile variable name is derived from some text the
+maintainer supplies.  For instance, a program name listed in
+`_PROGRAMS' is rewritten into the name of a `_SOURCES' variable.  In
+cases like this, Automake canonicalizes the text, so that program names
+and the like do not have to follow Makefile variable naming rules.  All
+characters in the name except for letters, numbers, the strudel (@),
+and the underscore are turned into underscores when making variable
+references.
+
+   For example, if your program is named `sniff-glue', the derived
+variable name would be `sniff_glue_SOURCES', not `sniff-glue_SOURCES'.
+Similarly the sources for a library named `libmumble++.a' should be
+listed in the `libmumble___a_SOURCES' variable.
+
+   The strudel is an addition, to make the use of Autoconf
+substitutions in variable names less obfuscating.
+
+\1f
+File: automake.info,  Node: User Variables,  Next: Auxiliary Programs,  Prev: Canonicalization,  Up: Generalities
+
+3.6 Variables reserved for the user
+===================================
+
+Some `Makefile' variables are reserved by the GNU Coding Standards for
+the use of the "user"--the person building the package.  For instance,
+`CFLAGS' is one such variable.
+
+   Sometimes package developers are tempted to set user variables such
+as `CFLAGS' because it appears to make their job easier.  However, the
+package itself should never set a user variable, particularly not to
+include switches that are required for proper compilation of the
+package.  Since these variables are documented as being for the package
+builder, that person rightfully expects to be able to override any of
+these variables at build time.
+
+   To get around this problem, Automake introduces an automake-specific
+shadow variable for each user flag variable.  (Shadow variables are not
+introduced for variables like `CC', where they would make no sense.)
+The shadow variable is named by prepending `AM_' to the user variable's
+name.  For instance, the shadow variable for `YFLAGS' is `AM_YFLAGS'.
+The package maintainer--that is, the author(s) of the `Makefile.am' and
+`configure.ac' files--may adjust these shadow variables however
+necessary.
+
+   *Note Flag Variables Ordering::, for more discussion about these
+variables and how they interact with per-target variables.
+
+\1f
+File: automake.info,  Node: Auxiliary Programs,  Prev: User Variables,  Up: Generalities
+
+3.7 Programs automake might require
+===================================
+
+Automake sometimes requires helper programs so that the generated
+`Makefile' can do its work properly.  There are a fairly large number
+of them, and we list them here.
+
+   Although all of these files are distributed and installed with
+Automake, a couple of them are maintained separately.  The Automake
+copies are updated before each release, but we mention the original
+source in case you need more recent versions.
+
+`ar-lib'
+     This is a wrapper primarily for the Microsoft lib archiver, to make
+     it more POSIX-like.
+
+`compile'
+     This is a wrapper for compilers that do not accept options `-c'
+     and `-o' at the same time.  It is only used when absolutely
+     required.  Such compilers are rare, with the Microsoft C/C++
+     Compiler as the most notable exception. This wrapper also makes
+     the following common options available for that compiler, while
+     performing file name translation where needed: `-I', `-L', `-l',
+     `-Wl,' and `-Xlinker'.
+
+`config.guess'
+`config.sub'
+     These two programs compute the canonical triplets for the given
+     build, host, or target architecture.  These programs are updated
+     regularly to support new architectures and fix probes broken by
+     changes in new kernel versions.  Each new release of Automake
+     comes with up-to-date copies of these programs.  If your copy of
+     Automake is getting old, you are encouraged to fetch the latest
+     versions of these files from
+     `http://savannah.gnu.org/git/?group=config' before making a
+     release.
+
+`depcomp'
+     This program understands how to run a compiler so that it will
+     generate not only the desired output but also dependency
+     information that is then used by the automatic dependency tracking
+     feature (*note Dependencies::).
+
+`elisp-comp'
+     This program is used to byte-compile Emacs Lisp code.
+
+`install-sh'
+     This is a replacement for the `install' program that works on
+     platforms where `install' is unavailable or unusable.
+
+`mdate-sh'
+     This script is used to generate a `version.texi' file.  It examines
+     a file and prints some date information about it.
+
+`missing'
+     This wraps a number of programs that are typically only required by
+     maintainers.  If the program in question doesn't exist, `missing'
+     prints an informative warning and attempts to fix things so that
+     the build can continue.
+
+`mkinstalldirs'
+     This script used to be a wrapper around `mkdir -p', which is not
+     portable.  Now we prefer to use `install-sh -d' when `configure'
+     finds that `mkdir -p' does not work, this makes one less script to
+     distribute.
+
+     For backward compatibility `mkinstalldirs' is still used and
+     distributed when `automake' finds it in a package.  But it is no
+     longer installed automatically, and it should be safe to remove it.
+
+`py-compile'
+     This is used to byte-compile Python scripts.
+
+`test-driver'
+     This implements the default test driver offered by the parallel
+     testsuite harness.
+
+`texinfo.tex'
+     Not a program, this file is required for `make dvi', `make ps' and
+     `make pdf' to work when Texinfo sources are in the package.  The
+     latest version can be downloaded from
+     `http://www.gnu.org/software/texinfo/'.
+
+`ylwrap'
+     This program wraps `lex' and `yacc' to rename their output files.
+     It also ensures that, for instance, multiple `yacc' instances can
+     be invoked in a single directory in parallel.
+
+
+\1f
+File: automake.info,  Node: Examples,  Next: automake Invocation,  Prev: Generalities,  Up: Top
+
+4 Some example packages
+***********************
+
+This section contains two small examples.
+
+   The first example (*note Complete::) assumes you have an existing
+project already using Autoconf, with handcrafted `Makefile's, and that
+you want to convert it to using Automake.  If you are discovering both
+tools, it is probably better that you look at the Hello World example
+presented earlier (*note Hello World::).
+
+   The second example (*note true::) shows how two programs can be built
+from the same file, using different compilation parameters.  It
+contains some technical digressions that are probably best skipped on
+first read.
+
+* Menu:
+
+* Complete::                    A simple example, start to finish
+* true::                        Building true and false
+
+\1f
+File: automake.info,  Node: Complete,  Next: true,  Up: Examples
+
+4.1 A simple example, start to finish
+=====================================
+
+Let's suppose you just finished writing `zardoz', a program to make
+your head float from vortex to vortex.  You've been using Autoconf to
+provide a portability framework, but your `Makefile.in's have been
+ad-hoc.  You want to make them bulletproof, so you turn to Automake.
+
+   The first step is to update your `configure.ac' to include the
+commands that `automake' needs.  The way to do this is to add an
+`AM_INIT_AUTOMAKE' call just after `AC_INIT':
+
+     AC_INIT([zardoz], [1.0])
+     AM_INIT_AUTOMAKE
+     ...
+
+   Since your program doesn't have any complicating factors (e.g., it
+doesn't use `gettext', it doesn't want to build a shared library),
+you're done with this part.  That was easy!
+
+   Now you must regenerate `configure'.  But to do that, you'll need to
+tell `autoconf' how to find the new macro you've used.  The easiest way
+to do this is to use the `aclocal' program to generate your
+`aclocal.m4' for you.  But wait... maybe you already have an
+`aclocal.m4', because you had to write some hairy macros for your
+program.  The `aclocal' program lets you put your own macros into
+`acinclude.m4', so simply rename and then run:
+
+     mv aclocal.m4 acinclude.m4
+     aclocal
+     autoconf
+
+   Now it is time to write your `Makefile.am' for `zardoz'.  Since
+`zardoz' is a user program, you want to install it where the rest of
+the user programs go: `bindir'.  Additionally, `zardoz' has some
+Texinfo documentation.  Your `configure.ac' script uses
+`AC_REPLACE_FUNCS', so you need to link against `$(LIBOBJS)'.  So
+here's what you'd write:
+
+     bin_PROGRAMS = zardoz
+     zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
+     zardoz_LDADD = $(LIBOBJS)
+
+     info_TEXINFOS = zardoz.texi
+
+   Now you can run `automake --add-missing' to generate your
+`Makefile.in' and grab any auxiliary files you might need, and you're
+done!
+
+\1f
+File: automake.info,  Node: true,  Prev: Complete,  Up: Examples
+
+4.2 Building true and false
+===========================
+
+Here is another, trickier example.  It shows how to generate two
+programs (`true' and `false') from the same source file (`true.c').
+The difficult part is that each compilation of `true.c' requires
+different `cpp' flags.
+
+     bin_PROGRAMS = true false
+     false_SOURCES =
+     false_LDADD = false.o
+
+     true.o: true.c
+             $(COMPILE) -DEXIT_CODE=0 -c true.c
+
+     false.o: true.c
+             $(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c
+
+   Note that there is no `true_SOURCES' definition.  Automake will
+implicitly assume that there is a source file named `true.c' (*note
+Default _SOURCES::), and define rules to compile `true.o' and link
+`true'.  The `true.o: true.c' rule supplied by the above `Makefile.am',
+will override the Automake generated rule to build `true.o'.
+
+   `false_SOURCES' is defined to be empty--that way no implicit value
+is substituted.  Because we have not listed the source of `false', we
+have to tell Automake how to link the program.  This is the purpose of
+the `false_LDADD' line.  A `false_DEPENDENCIES' variable, holding the
+dependencies of the `false' target will be automatically generated by
+Automake from the content of `false_LDADD'.
+
+   The above rules won't work if your compiler doesn't accept both `-c'
+and `-o'.  The simplest fix for this is to introduce a bogus dependency
+(to avoid problems with a parallel `make'):
+
+     true.o: true.c false.o
+             $(COMPILE) -DEXIT_CODE=0 -c true.c
+
+     false.o: true.c
+             $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o
+
+   As it turns out, there is also a much easier way to do this same
+task.  Some of the above technique is useful enough that we've kept the
+example in the manual.  However if you were to build `true' and `false'
+in real life, you would probably use per-program compilation flags,
+like so:
+
+     bin_PROGRAMS = false true
+
+     false_SOURCES = true.c
+     false_CPPFLAGS = -DEXIT_CODE=1
+
+     true_SOURCES = true.c
+     true_CPPFLAGS = -DEXIT_CODE=0
+
+   In this case Automake will cause `true.c' to be compiled twice, with
+different flags.  In this instance, the names of the object files would
+be chosen by automake; they would be `false-true.o' and `true-true.o'.
+(The name of the object files rarely matters.)
+
+\1f
+File: automake.info,  Node: automake Invocation,  Next: configure,  Prev: Examples,  Up: Top
+
+5 Creating a `Makefile.in'
+**************************
+
+To create all the `Makefile.in's for a package, run the `automake'
+program in the top level directory, with no arguments.  `automake' will
+automatically find each appropriate `Makefile.am' (by scanning
+`configure.ac'; *note configure::) and generate the corresponding
+`Makefile.in'.  Note that `automake' has a rather simplistic view of
+what constitutes a package; it assumes that a package has only one
+`configure.ac', at the top.  If your package has multiple
+`configure.ac's, then you must run `automake' in each directory holding
+a `configure.ac'.  (Alternatively, you may rely on Autoconf's
+`autoreconf', which is able to recurse your package tree and run
+`automake' where appropriate.)
+
+   You can optionally give `automake' an argument; `.am' is appended to
+the argument and the result is used as the name of the input file.
+This feature is generally only used to automatically rebuild an
+out-of-date `Makefile.in'.  Note that `automake' must always be run
+from the topmost directory of a project, even if being used to
+regenerate the `Makefile.in' in some subdirectory.  This is necessary
+because `automake' must scan `configure.ac', and because `automake'
+uses the knowledge that a `Makefile.in' is in a subdirectory to change
+its behavior in some cases.
+
+   Automake will run `autoconf' to scan `configure.ac' and its
+dependencies (i.e., `aclocal.m4' and any included file), therefore
+`autoconf' must be in your `PATH'.  If there is an `AUTOCONF' variable
+in your environment it will be used instead of `autoconf', this allows
+you to select a particular version of Autoconf.  By the way, don't
+misunderstand this paragraph: `automake' runs `autoconf' to *scan* your
+`configure.ac', this won't build `configure' and you still have to run
+`autoconf' yourself for this purpose.
+
+   `automake' accepts the following options:
+
+`-a'
+`--add-missing'
+     Automake requires certain common files to exist in certain
+     situations; for instance, `config.guess' is required if
+     `configure.ac' invokes `AC_CANONICAL_HOST'.  Automake is
+     distributed with several of these files (*note Auxiliary
+     Programs::); this option will cause the missing ones to be
+     automatically added to the package, whenever possible.  In general
+     if Automake tells you a file is missing, try using this option.
+     By default Automake tries to make a symbolic link pointing to its
+     own copy of the missing file; this can be changed with `--copy'.
+
+     Many of the potentially-missing files are common scripts whose
+     location may be specified via the `AC_CONFIG_AUX_DIR' macro.
+     Therefore, `AC_CONFIG_AUX_DIR''s setting affects whether a file is
+     considered missing, and where the missing file is added (*note
+     Optional::).
+
+     In some strictness modes, additional files are installed, see
+     *note Gnits:: for more information.
+
+`--libdir=DIR'
+     Look for Automake data files in directory DIR instead of in the
+     installation directory.  This is typically used for debugging.
+
+`--print-libdir'
+     Print the path of the installation directory containing
+     Automake-provided scripts and data files (like e.g.,
+     `texinfo.texi' and `install-sh').
+
+`-c'
+`--copy'
+     When used with `--add-missing', causes installed files to be
+     copied.  The default is to make a symbolic link.
+
+`--cygnus'
+     Causes the generated `Makefile.in's to follow Cygnus rules, instead
+     of GNU or Gnits rules.  For more information, see *note Cygnus::.
+     Note that _this mode of operation is deprecated, and will be
+     removed_ in the next major Automake release (1.13).
+
+`-f'
+`--force-missing'
+     When used with `--add-missing', causes standard files to be
+     reinstalled even if they already exist in the source tree.  This
+     involves removing the file from the source tree before creating
+     the new symlink (or, with `--copy', copying the new file).
+
+`--foreign'
+     Set the global strictness to `foreign'.  For more information, see
+     *note Strictness::.
+
+`--gnits'
+     Set the global strictness to `gnits'.  For more information, see
+     *note Gnits::.
+
+`--gnu'
+     Set the global strictness to `gnu'.  For more information, see
+     *note Gnits::.  This is the default strictness.
+
+`--help'
+     Print a summary of the command line options and exit.
+
+`-i'
+`--ignore-deps'
+     This disables the dependency tracking feature in generated
+     `Makefile's; see *note Dependencies::.
+
+`--include-deps'
+     This enables the dependency tracking feature.  This feature is
+     enabled by default.  This option is provided for historical
+     reasons only and probably should not be used.
+
+`--no-force'
+     Ordinarily `automake' creates all `Makefile.in's mentioned in
+     `configure.ac'.  This option causes it to only update those
+     `Makefile.in's that are out of date with respect to one of their
+     dependents.
+
+`-o DIR'
+`--output-dir=DIR'
+     Put the generated `Makefile.in' in the directory DIR.  Ordinarily
+     each `Makefile.in' is created in the directory of the
+     corresponding `Makefile.am'.  This option is deprecated and will be
+     removed in a future release.
+
+`-v'
+`--verbose'
+     Cause Automake to print information about which files are being
+     read or created.
+
+`--version'
+     Print the version number of Automake and exit.
+
+`-W CATEGORY'
+`--warnings=CATEGORY'
+     Output warnings falling in CATEGORY.  CATEGORY can be one of:
+    `gnu'
+          warnings related to the GNU Coding Standards (*note Top:
+          (standards)Top.).
+
+    `obsolete'
+          obsolete features or constructions
+
+    `override'
+          user redefinitions of Automake rules or variables
+
+    `portability'
+          portability issues (e.g., use of `make' features that are
+          known to be not portable)
+
+    `extra-portability'
+          extra portability issues related to obscure tools.  One
+          example of such a tool is the Microsoft `lib' archiver.
+
+    `syntax'
+          weird syntax, unused variables, typos
+
+    `unsupported'
+          unsupported or incomplete features
+
+    `all'
+          all the warnings
+
+    `none'
+          turn off all the warnings
+
+    `error'
+          treat warnings as errors
+
+     A category can be turned off by prefixing its name with `no-'.  For
+     instance, `-Wno-syntax' will hide the warnings about unused
+     variables.
+
+     The categories output by default are `syntax' and `unsupported'.
+     Additionally, `gnu' and `portability' are enabled in `--gnu' and
+     `--gnits' strictness.  On the other hand, the `silent-rules'
+     options (*note Options::) turns off portability warnings about
+     recursive variable expansions.
+
+     Turning off `portability' will also turn off `extra-portability',
+     and similarly turning on `extra-portability' will also turn on
+     `portability'.  However, turning on `portability' or turning off
+     `extra-portability' will not affect the other category.
+
+     The environment variable `WARNINGS' can contain a comma separated
+     list of categories to enable.  It will be taken into account
+     before the command-line switches, this way `-Wnone' will also
+     ignore any warning category enabled by `WARNINGS'.  This variable
+     is also used by other tools like `autoconf'; unknown categories
+     are ignored for this reason.
+
+
+   If the environment variable `AUTOMAKE_JOBS' contains a positive
+number, it is taken as the maximum number of Perl threads to use in
+`automake' for generating multiple `Makefile.in' files concurrently.
+This is an experimental feature.
+
+\1f
+File: automake.info,  Node: configure,  Next: Directories,  Prev: automake Invocation,  Up: Top
+
+6 Scanning `configure.ac', using `aclocal'
+******************************************
+
+Automake scans the package's `configure.ac' to determine certain
+information about the package.  Some `autoconf' macros are required and
+some variables must be defined in `configure.ac'.  Automake will also
+use information from `configure.ac' to further tailor its output.
+
+   Automake also supplies some Autoconf macros to make the maintenance
+easier.  These macros can automatically be put into your `aclocal.m4'
+using the `aclocal' program.
+
+* Menu:
+
+* Requirements::                Configuration requirements
+* Optional::                    Other things Automake recognizes
+* aclocal Invocation::          Auto-generating aclocal.m4
+* Macros::                      Autoconf macros supplied with Automake
+
+\1f
+File: automake.info,  Node: Requirements,  Next: Optional,  Up: configure
+
+6.1 Configuration requirements
+==============================
+
+The one real requirement of Automake is that your `configure.ac' call
+`AM_INIT_AUTOMAKE'.  This macro does several things that are required
+for proper Automake operation (*note Macros::).
+
+   Here are the other macros that Automake requires but which are not
+run by `AM_INIT_AUTOMAKE':
+
+`AC_CONFIG_FILES'
+`AC_OUTPUT'
+     These two macros are usually invoked as follows near the end of
+     `configure.ac'.
+
+          ...
+          AC_CONFIG_FILES([
+            Makefile
+            doc/Makefile
+            src/Makefile
+            src/lib/Makefile
+            ...
+          ])
+          AC_OUTPUT
+
+     Automake uses these to determine which files to create (*note
+     Creating Output Files: (autoconf)Output.).  A listed file is
+     considered to be an Automake generated `Makefile' if there exists
+     a file with the same name and the `.am' extension appended.
+     Typically, `AC_CONFIG_FILES([foo/Makefile])' will cause Automake to
+     generate `foo/Makefile.in' if `foo/Makefile.am' exists.
+
+     When using `AC_CONFIG_FILES' with multiple input files, as in
+
+          AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])
+
+     `automake' will generate the first `.in' input file for which a
+     `.am' file exists.  If no such file exists the output file is not
+     considered to be generated by Automake.
+
+     Files created by `AC_CONFIG_FILES', be they Automake `Makefile's
+     or not, are all removed by `make distclean'.  Their inputs are
+     automatically distributed, unless they are the output of prior
+     `AC_CONFIG_FILES' commands.  Finally, rebuild rules are generated
+     in the Automake `Makefile' existing in the subdirectory of the
+     output file, if there is one, or in the top-level `Makefile'
+     otherwise.
+
+     The above machinery (cleaning, distributing, and rebuilding) works
+     fine if the `AC_CONFIG_FILES' specifications contain only
+     literals.  If part of the specification uses shell variables,
+     `automake' will not be able to fulfill this setup, and you will
+     have to complete the missing bits by hand.  For instance, on
+
+          file=input
+          ...
+          AC_CONFIG_FILES([output:$file],, [file=$file])
+
+     `automake' will output rules to clean `output', and rebuild it.
+     However the rebuild rule will not depend on `input', and this file
+     will not be distributed either.  (You must add `EXTRA_DIST =
+     input' to your `Makefile.am' if `input' is a source file.)
+
+     Similarly
+
+          file=output
+          file2=out:in
+          ...
+          AC_CONFIG_FILES([$file:input],, [file=$file])
+          AC_CONFIG_FILES([$file2],, [file2=$file2])
+
+     will only cause `input' to be distributed.  No file will be
+     cleaned automatically (add `DISTCLEANFILES = output out'
+     yourself), and no rebuild rule will be output.
+
+     Obviously `automake' cannot guess what value `$file' is going to
+     hold later when `configure' is run, and it cannot use the shell
+     variable `$file' in a `Makefile'.  However, if you make reference
+     to `$file' as `${file}' (i.e., in a way that is compatible with
+     `make''s syntax) and furthermore use `AC_SUBST' to ensure that
+     `${file}' is meaningful in a `Makefile', then `automake' will be
+     able to use `${file}' to generate all these rules.  For instance,
+     here is how the Automake package itself generates versioned
+     scripts for its test suite:
+
+          AC_SUBST([APIVERSION], ...)
+          ...
+          AC_CONFIG_FILES(
+            [tests/aclocal-${APIVERSION}:tests/aclocal.in],
+            [chmod +x tests/aclocal-${APIVERSION}],
+            [APIVERSION=$APIVERSION])
+          AC_CONFIG_FILES(
+            [tests/automake-${APIVERSION}:tests/automake.in],
+            [chmod +x tests/automake-${APIVERSION}])
+
+     Here cleaning, distributing, and rebuilding are done automatically,
+     because `${APIVERSION}' is known at `make'-time.
+
+     Note that you should not use shell variables to declare `Makefile'
+     files for which `automake' must create `Makefile.in'.  Even
+     `AC_SUBST' does not help here, because `automake' needs to know
+     the file name when it runs in order to check whether `Makefile.am'
+     exists.  (In the very hairy case that your setup requires such use
+     of variables, you will have to tell Automake which `Makefile.in's
+     to generate on the command-line.)
+
+     It is possible to let `automake' emit conditional rules for
+     `AC_CONFIG_FILES' with the help of `AM_COND_IF' (*note Optional::).
+
+     To summarize:
+        * Use literals for `Makefile's, and for other files whenever
+          possible.
+
+        * Use `$file' (or `${file}' without `AC_SUBST([file])') for
+          files that `automake' should ignore.
+
+        * Use `${file}' and `AC_SUBST([file])' for files that
+          `automake' should not ignore.
+
+
+\1f
+File: automake.info,  Node: Optional,  Next: aclocal Invocation,  Prev: Requirements,  Up: configure
+
+6.2 Other things Automake recognizes
+====================================
+
+Every time Automake is run it calls Autoconf to trace `configure.ac'.
+This way it can recognize the use of certain macros and tailor the
+generated `Makefile.in' appropriately.  Currently recognized macros and
+their effects are:
+
+`AC_CANONICAL_BUILD'
+`AC_CANONICAL_HOST'
+`AC_CANONICAL_TARGET'
+     Automake will ensure that `config.guess' and `config.sub' exist.
+     Also, the `Makefile' variables `build_triplet', `host_triplet' and
+     `target_triplet' are introduced.  See *note Getting the Canonical
+     System Type: (autoconf)Canonicalizing.
+
+`AC_CONFIG_AUX_DIR'
+     Automake will look for various helper scripts, such as
+     `install-sh', in the directory named in this macro invocation.
+     (The full list of scripts is: `ar-lib', `config.guess',
+     `config.sub', `depcomp', `elisp-comp', `compile', `install-sh',
+     `ltmain.sh', `mdate-sh', `missing', `mkinstalldirs', `py-compile',
+     `test-driver', `texinfo.tex', `ylwrap'.)  Not all scripts are
+     always searched for; some scripts will only be sought if the
+     generated `Makefile.in' requires them.
+
+     If `AC_CONFIG_AUX_DIR' is not given, the scripts are looked for in
+     their standard locations.  For `mdate-sh', `texinfo.tex', and
+     `ylwrap', the standard location is the source directory
+     corresponding to the current `Makefile.am'.  For the rest, the
+     standard location is the first one of `.', `..', or `../..'
+     (relative to the top source directory) that provides any one of
+     the helper scripts.  *Note Finding `configure' Input:
+     (autoconf)Input.
+
+     Required files from `AC_CONFIG_AUX_DIR' are automatically
+     distributed, even if there is no `Makefile.am' in this directory.
+
+`AC_CONFIG_LIBOBJ_DIR'
+     Automake will require the sources file declared with
+     `AC_LIBSOURCE' (see below) in the directory specified by this
+     macro.
+
+`AC_CONFIG_HEADERS'
+     Automake will generate rules to rebuild these headers.  Older
+     versions of Automake required the use of `AM_CONFIG_HEADER' (*note
+     Macros::); this is no longer the case.
+
+     As with `AC_CONFIG_FILES' (*note Requirements::), parts of the
+     specification using shell variables will be ignored as far as
+     cleaning, distributing, and rebuilding is concerned.
+
+`AC_CONFIG_LINKS'
+     Automake will generate rules to remove `configure' generated links
+     on `make distclean' and to distribute named source files as part
+     of `make dist'.
+
+     As for `AC_CONFIG_FILES' (*note Requirements::), parts of the
+     specification using shell variables will be ignored as far as
+     cleaning and distributing is concerned.  (There are no rebuild
+     rules for links.)
+
+`AC_LIBOBJ'
+`AC_LIBSOURCE'
+`AC_LIBSOURCES'
+     Automake will automatically distribute any file listed in
+     `AC_LIBSOURCE' or `AC_LIBSOURCES'.
+
+     Note that the `AC_LIBOBJ' macro calls `AC_LIBSOURCE'.  So if an
+     Autoconf macro is documented to call `AC_LIBOBJ([file])', then
+     `file.c' will be distributed automatically by Automake.  This
+     encompasses many macros like `AC_FUNC_ALLOCA', `AC_FUNC_MEMCMP',
+     `AC_REPLACE_FUNCS', and others.
+
+     By the way, direct assignments to `LIBOBJS' are no longer
+     supported.  You should always use `AC_LIBOBJ' for this purpose.
+     *Note `AC_LIBOBJ' vs. `LIBOBJS': (autoconf)AC_LIBOBJ vs LIBOBJS.
+
+`AC_PROG_RANLIB'
+     This is required if any libraries are built in the package.  *Note
+     Particular Program Checks: (autoconf)Particular Programs.
+
+`AC_PROG_CXX'
+     This is required if any C++ source is included.  *Note Particular
+     Program Checks: (autoconf)Particular Programs.
+
+`AC_PROG_OBJC'
+     This is required if any Objective C source is included.  *Note
+     Particular Program Checks: (autoconf)Particular Programs.
+
+`AC_PROG_OBJCXX'
+     This is required if any Objective C++ source is included.  *Note
+     Particular Program Checks: (autoconf)Particular Programs.
+
+`AC_PROG_F77'
+     This is required if any Fortran 77 source is included.  *Note
+     Particular Program Checks: (autoconf)Particular Programs.
+
+`AC_F77_LIBRARY_LDFLAGS'
+     This is required for programs and shared libraries that are a
+     mixture of languages that include Fortran 77 (*note Mixing Fortran
+     77 With C and C++::).  *Note Autoconf macros supplied with
+     Automake: Macros.
+
+`AC_FC_SRCEXT'
+     Automake will add the flags computed by `AC_FC_SRCEXT' to
+     compilation of files with the respective source extension (*note
+     Fortran Compiler Characteristics: (autoconf)Fortran Compiler.).
+
+`AC_PROG_FC'
+     This is required if any Fortran 90/95 source is included.  This
+     macro is distributed with Autoconf version 2.58 and later.  *Note
+     Particular Program Checks: (autoconf)Particular Programs.
+
+`AC_PROG_LIBTOOL'
+     Automake will turn on processing for `libtool' (*note
+     Introduction: (libtool)Top.).
+
+`AC_PROG_YACC'
+     If a Yacc source file is seen, then you must either use this macro
+     or define the variable `YACC' in `configure.ac'.  The former is
+     preferred (*note Particular Program Checks: (autoconf)Particular
+     Programs.).
+
+`AC_PROG_LEX'
+     If a Lex source file is seen, then this macro must be used.  *Note
+     Particular Program Checks: (autoconf)Particular Programs.
+
+`AC_REQUIRE_AUX_FILE'
+     For each `AC_REQUIRE_AUX_FILE([FILE])', `automake' will ensure
+     that `FILE' exists in the aux directory, and will complain
+     otherwise.  It will also automatically distribute the file.  This
+     macro should be used by third-party Autoconf macros that require
+     some supporting files in the aux directory specified with
+     `AC_CONFIG_AUX_DIR' above.  *Note Finding `configure' Input:
+     (autoconf)Input.
+
+`AC_SUBST'
+     The first argument is automatically defined as a variable in each
+     generated `Makefile.in', unless `AM_SUBST_NOTMAKE' is also used
+     for this variable.  *Note Setting Output Variables:
+     (autoconf)Setting Output Variables.
+
+     For every substituted variable VAR, `automake' will add a line
+     `VAR = VALUE' to each `Makefile.in' file.  Many Autoconf macros
+     invoke `AC_SUBST' to set output variables this way, e.g.,
+     `AC_PATH_XTRA' defines `X_CFLAGS' and `X_LIBS'.  Thus, you can
+     access these variables as `$(X_CFLAGS)' and `$(X_LIBS)' in any
+     `Makefile.am' if `AC_PATH_XTRA' is called.
+
+`AM_CONDITIONAL'
+     This introduces an Automake conditional (*note Conditionals::).
+
+`AM_COND_IF'
+     This macro allows `automake' to detect subsequent access within
+     `configure.ac' to a conditional previously introduced with
+     `AM_CONDITIONAL', thus enabling conditional `AC_CONFIG_FILES'
+     (*note Usage of Conditionals::).
+
+`AM_GNU_GETTEXT'
+     This macro is required for packages that use GNU gettext (*note
+     gettext::).  It is distributed with gettext.  If Automake sees
+     this macro it ensures that the package meets some of gettext's
+     requirements.
+
+`AM_GNU_GETTEXT_INTL_SUBDIR'
+     This macro specifies that the `intl/' subdirectory is to be built,
+     even if the `AM_GNU_GETTEXT' macro was invoked with a first
+     argument of `external'.
+
+`AM_MAINTAINER_MODE([DEFAULT-MODE])'
+     This macro adds an `--enable-maintainer-mode' option to
+     `configure'.  If this is used, `automake' will cause
+     "maintainer-only" rules to be turned off by default in the
+     generated `Makefile.in's, unless DEFAULT-MODE is `enable'.  This
+     macro defines the `MAINTAINER_MODE' conditional, which you can use
+     in your own `Makefile.am'.  *Note maintainer-mode::.
+
+`AM_SUBST_NOTMAKE(VAR)'
+     Prevent Automake from defining a variable VAR, even if it is
+     substituted by `config.status'.  Normally, Automake defines a
+     `make' variable for each `configure' substitution, i.e., for each
+     `AC_SUBST([VAR])'.  This macro prevents that definition from
+     Automake.  If `AC_SUBST' has not been called for this variable,
+     then `AM_SUBST_NOTMAKE' has no effects.  Preventing variable
+     definitions may be useful for substitution of multi-line values,
+     where `VAR = @VALUE@' might yield unintended results.
+
+`m4_include'
+     Files included by `configure.ac' using this macro will be detected
+     by Automake and automatically distributed.  They will also appear
+     as dependencies in `Makefile' rules.
+
+     `m4_include' is seldom used by `configure.ac' authors, but can
+     appear in `aclocal.m4' when `aclocal' detects that some required
+     macros come from files local to your package (as opposed to macros
+     installed in a system-wide directory, *note aclocal Invocation::).
+
+
+\1f
+File: automake.info,  Node: aclocal Invocation,  Next: Macros,  Prev: Optional,  Up: configure
+
+6.3 Auto-generating aclocal.m4
+==============================
+
+Automake includes a number of Autoconf macros that can be used in your
+package (*note Macros::); some of them are actually required by
+Automake in certain situations.  These macros must be defined in your
+`aclocal.m4'; otherwise they will not be seen by `autoconf'.
+
+   The `aclocal' program will automatically generate `aclocal.m4' files
+based on the contents of `configure.ac'.  This provides a convenient
+way to get Automake-provided macros, without having to search around.
+The `aclocal' mechanism allows other packages to supply their own
+macros (*note Extending aclocal::).  You can also use it to maintain
+your own set of custom macros (*note Local Macros::).
+
+   At startup, `aclocal' scans all the `.m4' files it can find, looking
+for macro definitions (*note Macro Search Path::).  Then it scans
+`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 `aclocal.m4'.
+
+   _Putting_ the file that contains the macro definition into
+`aclocal.m4' is usually done by copying the entire text of this file,
+including unused macro definitions as well as both `#' and `dnl'
+comments.  If you want to make a comment that will be completely
+ignored by `aclocal', use `##' as the comment leader.
+
+   When a file selected by `aclocal' is located in a subdirectory
+specified as a relative search path with `aclocal''s `-I' argument,
+`aclocal' assumes the file belongs to the package and uses `m4_include'
+instead of copying it into `aclocal.m4'.  This makes the package
+smaller, eases dependency tracking, and cause the file to be
+distributed automatically.  (*Note Local Macros::, for an example.)
+Any macro that is found in a system-wide directory, or via an absolute
+search path will be copied.  So use `-I `pwd`/reldir' instead of `-I
+reldir' whenever some relative directory should be considered outside
+the package.
+
+   The contents of `acinclude.m4', if this file exists, are also
+automatically included in `aclocal.m4'.  We recommend against using
+`acinclude.m4' in new packages (*note Local Macros::).
+
+   While computing `aclocal.m4', `aclocal' runs `autom4te' (*note Using
+`Autom4te': (autoconf)Using autom4te.) in order to trace the macros
+that are really used, and omit from `aclocal.m4' all macros that are
+mentioned but otherwise unexpanded (this can happen when a macro is
+called conditionally).  `autom4te' is expected to be in the `PATH',
+just as `autoconf'.  Its location can be overridden using the
+`AUTOM4TE' environment variable.
+
+* Menu:
+
+* 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
+
+\1f
+File: automake.info,  Node: aclocal Options,  Next: Macro Search Path,  Up: aclocal Invocation
+
+6.3.1 aclocal Options
+---------------------
+
+`aclocal' accepts the following options:
+
+`--automake-acdir=DIR'
+     Look for the automake-provided macro files in DIR instead of in
+     the installation directory.  This is typically used for debugging.
+
+`--system-acdir=DIR'
+     Look for the system-wide third-party macro files (and the special
+     `dirlist' file) in DIR instead of in the installation directory.
+     This is typically used for debugging.
+
+`--diff[=COMMAND]'
+     Run COMMAND on M4 file that would be installed or overwritten by
+     `--install'.  The default COMMAND is `diff -u'.  This option
+     implies `--install' and `--dry-run'.
+
+`--dry-run'
+     Do not actually overwrite (or create) `aclocal.m4' and M4 files
+     installed by `--install'.
+
+`--help'
+     Print a summary of the command line options and exit.
+
+`-I DIR'
+     Add the directory DIR to the list of directories searched for
+     `.m4' files.
+
+`--install'
+     Install system-wide third-party macros into the first directory
+     specified with `-I DIR' instead of copying them in the output file.
+     Note that this will happen also if DIR is an absolute path.
+
+     When this option is used, and only when this option is used,
+     `aclocal' will also honor `#serial NUMBER' lines that appear in
+     macros: an M4 file is ignored if there exists another M4 file with
+     the same basename and a greater serial number in the search path
+     (*note Serials::).
+
+`--force'
+     Always overwrite the output file.  The default is to overwrite the
+     output file only when really needed, i.e., when its contents
+     changes or if one of its dependencies is younger.
+
+     This option forces the update of `aclocal.m4' (or the file
+     specified with `--output' below) and only this file, it has
+     absolutely no influence on files that may need to be installed by
+     `--install'.
+
+`--output=FILE'
+     Cause the output to be put into FILE instead of `aclocal.m4'.
+
+`--print-ac-dir'
+     Prints the name of the directory that `aclocal' will search to
+     find third-party `.m4' files.  When this option is given, normal
+     processing is suppressed.  This option was used _in the past_ by
+     third-party packages to determine where to install `.m4' macro
+     files, but _this usage is today discouraged_, since it causes
+     `$(prefix)' not to be thoroughly honoured (which violates the GNU
+     Coding Standards), and a similar semantics can be better obtained
+     with the `ACLOCAL_PATH' environment variable; *note Extending
+     aclocal::.
+
+`--verbose'
+     Print the names of the files it examines.
+
+`--version'
+     Print the version number of Automake and exit.
+
+`-W CATEGORY'
+
+`--warnings=CATEGORY'
+     Output warnings falling in CATEGORY.  CATEGORY can be one of:
+    `syntax'
+          dubious syntactic constructs, underquoted macros, unused
+          macros, etc.
+
+    `unsupported'
+          unknown macros
+
+    `all'
+          all the warnings, this is the default
+
+    `none'
+          turn off all the warnings
+
+    `error'
+          treat warnings as errors
+
+     All warnings are output by default.
+
+     The environment variable `WARNINGS' is honored in the same way as
+     it is for `automake' (*note automake Invocation::).
+
+
+\1f
+File: automake.info,  Node: Macro Search Path,  Next: Extending aclocal,  Prev: aclocal Options,  Up: aclocal Invocation
+
+6.3.2 Macro Search Path
+-----------------------
+
+By default, `aclocal' searches for `.m4' files in the following
+directories, in this order:
+
+`ACDIR-APIVERSION'
+     This is where the `.m4' macros distributed with Automake itself
+     are stored.  APIVERSION depends on the Automake release used; for
+     example, for Automake 1.11.x, APIVERSION = `1.11'.
+
+`ACDIR'
+     This directory is intended for third party `.m4' files, and is
+     configured when `automake' itself is built.  This is
+     `@datadir@/aclocal/', which typically expands to
+     `${prefix}/share/aclocal/'.  To find the compiled-in value of
+     ACDIR, use the `--print-ac-dir' option (*note aclocal Options::).
+
+   As an example, suppose that `automake-1.11.2' was configured with
+`--prefix=/usr/local'.  Then, the search path would be:
+
+  1. `/usr/local/share/aclocal-1.11.2/'
+
+  2. `/usr/local/share/aclocal/'
+
+   The paths for the ACDIR and ACDIR-APIVERSION directories can be
+changed respectively through aclocal options `--system-acdir' and
+`--automake-acdir' (*note aclocal Options::).  Note however that these
+options are only intended for use by the internal Automake test suite,
+or for debugging under highly unusual situations; they are not
+ordinarily needed by end-users.
+
+   As explained in (*note aclocal Options::), there are several options
+that can be used to change or extend this search path.
+
+Modifying the Macro Search Path: `-I DIR'
+.........................................
+
+Any extra directories specified using `-I' options (*note aclocal
+Options::) are _prepended_ to this search list.  Thus, `aclocal -I /foo
+-I /bar' results in the following search path:
+
+  1. `/foo'
+
+  2. `/bar'
+
+  3. ACDIR-APIVERSION
+
+  4. ACDIR
+
+Modifying the Macro Search Path: `dirlist'
+..........................................
+
+There is a third mechanism for customizing the search path.  If a
+`dirlist' file exists in ACDIR, then that file is assumed to contain a
+list of directory patterns, one per line.  `aclocal' expands these
+patterns to directory names, and adds them to the search list _after_
+all other directories.  `dirlist' entries may use shell wildcards such
+as `*', `?', or `[...]'.
+
+   For example, suppose `ACDIR/dirlist' contains the following:
+
+     /test1
+     /test2
+     /test3*
+
+and that `aclocal' was called with the `-I /foo -I /bar' options.
+Then, the search path would be
+
+  1. `/foo'
+
+  2. `/bar'
+
+  3. ACDIR-APIVERSION
+
+  4. ACDIR
+
+  5. `/test1'
+
+  6. `/test2'
+
+and all directories with path names starting with `/test3'.
+
+   If the `--system-acdir=DIR' option is used, then `aclocal' will
+search for the `dirlist' file in DIR; but remember the warnings  above
+against the use of `--system-acdir'.
+
+   `dirlist' is useful in the following situation: suppose that
+`automake' version `1.11.2' is installed with `--prefix=/usr' by the
+system vendor.  Thus, the default search directories are
+
+  1. `/usr/share/aclocal-1.11/'
+
+  2. `/usr/share/aclocal/'
+
+   However, suppose further that many packages have been manually
+installed on the system, with $prefix=/usr/local, as is typical.  In
+that case, many of these "extra" `.m4' files are in
+`/usr/local/share/aclocal'.  The only way to force `/usr/bin/aclocal'
+to find these "extra" `.m4' files is to always call `aclocal -I
+/usr/local/share/aclocal'.  This is inconvenient.  With `dirlist', one
+may create a file `/usr/share/aclocal/dirlist' containing only the
+single line
+
+     /usr/local/share/aclocal
+
+   Now, the "default" search path on the affected system is
+
+  1. `/usr/share/aclocal-1.11/'
+
+  2. `/usr/share/aclocal/'
+
+  3. `/usr/local/share/aclocal/'
+
+   without the need for `-I' options; `-I' options can be reserved for
+project-specific needs (`my-source-dir/m4/'), rather than using it to
+work around local system-dependent tool installation directories.
+
+   Similarly, `dirlist' can be handy if you have installed a local copy
+of Automake in your account and want `aclocal' to look for macros
+installed at other places on the system.
+
+Modifying the Macro Search Path: `ACLOCAL_PATH'
+...............................................
+
+The fourth and last mechanism to customize the macro search path is
+also the simplest.  Any directory included in the colon-separated
+environment variable `ACLOCAL_PATH' is added to the search path and
+takes precedence over system directories (including those found via
+`dirlist'), with the exception of the versioned directory
+ACDIR-APIVERSION (*note Macro Search Path::).  However, directories
+passed via `-I' will take precedence over directories in `ACLOCAL_PATH'.
+
+   Also note that, if the `--install' option is used, any `.m4' file
+containing a required macro that is found in a directory listed in
+`ACLOCAL_PATH' will be installed locally.  In this case, serial numbers
+in `.m4' are honoured too, *note Serials::.
+
+   Conversely to `dirlist', `ACLOCAL_PATH' is useful if you are using a
+global copy of Automake and want `aclocal' to look for macros somewhere
+under your home directory.
+
+Planned future incompatibilities
+................................
+
+The order in which the directories in the macro search path are
+currently looked up is confusing and/or suboptimal in various aspects,
+and is probably going to be changed in the future Automake release.  In
+particular, directories in `ACLOCAL_PATH' and `ACDIR' might end up
+taking precedence over `ACDIR-APIVERSION', and directories in
+`ACDIR/dirlist' might end up taking precedence over `ACDIR'.  _This is
+a possible future incompatibility!_
+
+\1f
+File: automake.info,  Node: Extending aclocal,  Next: Local Macros,  Prev: Macro Search Path,  Up: aclocal Invocation
+
+6.3.3 Writing your own aclocal macros
+-------------------------------------
+
+The `aclocal' program doesn't have any built-in knowledge of any
+macros, so it is easy to extend it with your own macros.
+
+   This can be used by libraries that want to supply their own Autoconf
+macros for use by other programs.  For instance, the `gettext' library
+supplies a macro `AM_GNU_GETTEXT' that should be used by any package
+using `gettext'.  When the library is installed, it installs this macro
+so that `aclocal' will find it.
+
+   A macro file's name should end in `.m4'.  Such files should be
+installed in `$(datadir)/aclocal'.  This is as simple as writing:
+
+     aclocaldir = $(datadir)/aclocal
+     aclocal_DATA = mymacro.m4 myothermacro.m4
+
+Please do use `$(datadir)/aclocal', and not something based on the
+result of `aclocal --print-ac-dir' (*note Hard-Coded Install Paths::,
+for arguments).  It might also be helpful to suggest to the user to add
+the `$(datadir)/aclocal' directory to his `ACLOCAL_PATH' variable
+(*note ACLOCAL_PATH::) so that `aclocal' will find the `.m4' files
+installed by your package automatically.
+
+   A file of macros should be a series of properly quoted `AC_DEFUN''s
+(*note Macro Definitions: (autoconf)Macro Definitions.).  The `aclocal'
+programs also understands `AC_REQUIRE' (*note Prerequisite Macros:
+(autoconf)Prerequisite Macros.), so it is safe to put each macro in a
+separate file.  Each file should have no side effects but macro
+definitions.  Especially, any call to `AC_PREREQ' should be done inside
+the defined macro, not at the beginning of the file.
+
+   Starting with Automake 1.8, `aclocal' will warn about all
+underquoted calls to `AC_DEFUN'.  We realize this will annoy a lot of
+people, because `aclocal' was not so strict in the past and many third
+party macros are underquoted; and we have to apologize for this
+temporary inconvenience.  The reason we have to be stricter is that a
+future implementation of `aclocal' (*note Future of aclocal::) will
+have to temporarily include all these third party `.m4' files, maybe
+several times, including even files that are not actually needed.
+Doing so should alleviate many problems of the current implementation,
+however it requires a stricter style from the macro authors.  Hopefully
+it is easy to revise the existing macros.  For instance,
+
+     # bad style
+     AC_PREREQ(2.68)
+     AC_DEFUN(AX_FOOBAR,
+     [AC_REQUIRE([AX_SOMETHING])dnl
+     AX_FOO
+     AX_BAR
+     ])
+
+should be rewritten as
+
+     AC_DEFUN([AX_FOOBAR],
+     [AC_PREREQ([2.68])dnl
+     AC_REQUIRE([AX_SOMETHING])dnl
+     AX_FOO
+     AX_BAR
+     ])
+
+   Wrapping the `AC_PREREQ' call inside the macro ensures that Autoconf
+2.68 will not be required if `AX_FOOBAR' is not actually used.  Most
+importantly, quoting the first argument of `AC_DEFUN' allows the macro
+to be redefined or included twice (otherwise this first argument would
+be expanded during the second definition).  For consistency we like to
+quote even arguments such as `2.68' that do not require it.
+
+   If you have been directed here by the `aclocal' diagnostic but are
+not the maintainer of the implicated macro, you will want to contact
+the maintainer of that macro.  Please make sure you have the latest
+version of the macro and that the problem hasn't already been reported
+before doing so: people tend to work faster when they aren't flooded by
+mails.
+
+   Another situation where `aclocal' is commonly used is to manage
+macros that are used locally by the package, *note Local Macros::.
+
+\1f
+File: automake.info,  Node: Local Macros,  Next: Serials,  Prev: Extending aclocal,  Up: aclocal Invocation
+
+6.3.4 Handling Local Macros
+---------------------------
+
+Feature tests offered by Autoconf do not cover all needs.  People often
+have to supplement existing tests with their own macros, or with
+third-party macros.
+
+   There are two ways to organize custom macros in a package.
+
+   The first possibility (the historical practice) is to list all your
+macros in `acinclude.m4'.  This file will be included in `aclocal.m4'
+when you run `aclocal', and its macro(s) will henceforth be visible to
+`autoconf'.  However if it contains numerous macros, it will rapidly
+become difficult to maintain, and it will be almost impossible to share
+macros between packages.
+
+   The second possibility, which we do recommend, is to write each macro
+in its own file and gather all these files in a directory.  This
+directory is usually called `m4/'.  To build `aclocal.m4', one should
+therefore instruct `aclocal' to scan `m4/'.  From the command line,
+this is done with `aclocal -I m4'.  The top-level `Makefile.am' should
+also be updated to define
+
+     ACLOCAL_AMFLAGS = -I m4
+
+   `ACLOCAL_AMFLAGS' contains options to pass to `aclocal' when
+`aclocal.m4' is to be rebuilt by `make'.  This line is also used by
+`autoreconf' (*note Using `autoreconf' to Update `configure' Scripts:
+(autoconf)autoreconf Invocation.) to run `aclocal' with suitable
+options, or by `autopoint' (*note Invoking the `autopoint' Program:
+(gettext)autopoint Invocation.)  and `gettextize' (*note Invoking the
+`gettextize' Program: (gettext)gettextize Invocation.) to locate the
+place where Gettext's macros should be installed.  So even if you do
+not really care about the rebuild rules, you should define
+`ACLOCAL_AMFLAGS'.
+
+   When `aclocal -I m4' is run, it will build an `aclocal.m4' that
+`m4_include's any file from `m4/' that defines a required macro.
+Macros not found locally will still be searched in system-wide
+directories, as explained in *note Macro Search Path::.
+
+   Custom macros should be distributed for the same reason that
+`configure.ac' is: so that other people have all the sources of your
+package if they want to work on it.  Actually, this distribution
+happens automatically because all `m4_include'd files are distributed.
+
+   However there is no consensus on the distribution of third-party
+macros that your package may use.  Many libraries install their own
+macro in the system-wide `aclocal' directory (*note Extending
+aclocal::).  For instance, Guile ships with a file called `guile.m4'
+that contains the macro `GUILE_FLAGS' that can be used to define setup
+compiler and linker flags appropriate for using Guile.  Using
+`GUILE_FLAGS' in `configure.ac' will cause `aclocal' to copy `guile.m4'
+into `aclocal.m4', but as `guile.m4' is not part of the project, it
+will not be distributed.  Technically, that means a user who needs to
+rebuild `aclocal.m4' will have to install Guile first.  This is
+probably OK, if Guile already is a requirement to build the package.
+However, if Guile is only an optional feature, or if your package might
+run on architectures where Guile cannot be installed, this requirement
+will hinder development.  An easy solution is to copy such third-party
+macros in your local `m4/' directory so they get distributed.
+
+   Since Automake 1.10, `aclocal' offers an option to copy these
+system-wide third-party macros in your local macro directory, solving
+the above problem.  Simply use:
+
+     ACLOCAL_AMFLAGS = -I m4 --install
+
+With this setup, system-wide macros will be copied to `m4/' the first
+time you run `autoreconf'.  Then the locally installed macros will have
+precedence over the system-wide installed macros each time `aclocal' is
+run again.
+
+   One reason why you should keep `--install' in the flags even after
+the first run is that when you later edit `configure.ac' and depend on
+a new macro, this macro will be installed in your `m4/' automatically.
+Another one is that serial numbers (*note Serials::) can be used to
+update the macros in your source tree automatically when new
+system-wide versions are installed.  A serial number should be a single
+line of the form
+
+     #serial NNN
+
+where NNN contains only digits and dots.  It should appear in the M4
+file before any macro definition.  It is a good practice to maintain a
+serial number for each macro you distribute, even if you do not use the
+`--install' option of `aclocal': this allows other people to use it.
+
+\1f
+File: automake.info,  Node: Serials,  Next: Future of aclocal,  Prev: Local Macros,  Up: aclocal Invocation
+
+6.3.5 Serial Numbers
+--------------------
+
+Because third-party macros defined in `*.m4' files are naturally shared
+between multiple projects, some people like to version them.  This
+makes it easier to tell which of two M4 files is newer.  Since at least
+1996, the tradition is to use a `#serial' line for this.
+
+   A serial number should be a single line of the form
+
+     # serial VERSION
+
+where VERSION is a version number containing only digits and dots.
+Usually people use a single integer, and they increment it each time
+they change the macro (hence the name of "serial").  Such a line should
+appear in the M4 file before any macro definition.
+
+   The `#' must be the first character on the line, and it is OK to
+have extra words after the version, as in
+
+     #serial VERSION GARBAGE
+
+   Normally these serial numbers are completely ignored by `aclocal'
+and `autoconf', like any genuine comment.  However when using
+`aclocal''s `--install' feature, these serial numbers will modify the
+way `aclocal' selects the macros to install in the package: if two
+files with the same basename exist in your search path, and if at least
+one of them uses a `#serial' line, `aclocal' will ignore the file that
+has the older `#serial' line (or the file that has none).
+
+   Note that a serial number applies to a whole M4 file, not to any
+macro it contains.  A file can contains multiple macros, but only one
+serial.
+
+   Here is a use case that illustrates the use of `--install' and its
+interaction with serial numbers.  Let's assume we maintain a package
+called MyPackage, the `configure.ac' of which requires a third-party
+macro `AX_THIRD_PARTY' defined in `/usr/share/aclocal/thirdparty.m4' as
+follows:
+
+     # serial 1
+     AC_DEFUN([AX_THIRD_PARTY], [...])
+
+   MyPackage uses an `m4/' directory to store local macros as explained
+in *note Local Macros::, and has
+
+     ACLOCAL_AMFLAGS = -I m4 --install
+
+in its top-level `Makefile.am'.
+
+   Initially the `m4/' directory is empty.  The first time we run
+`autoreconf', it will fetch the options to pass to `aclocal' in
+`Makefile.am', and run `aclocal -I m4 --install'.  `aclocal' will
+notice that
+
+   * `configure.ac' uses `AX_THIRD_PARTY'
+
+   * No local macros define `AX_THIRD_PARTY'
+
+   * `/usr/share/aclocal/thirdparty.m4' defines `AX_THIRD_PARTY' with
+     serial 1.
+
+Because `/usr/share/aclocal/thirdparty.m4' is a system-wide macro and
+`aclocal' was given the `--install' option, it will copy this file in
+`m4/thirdparty.m4', and output an `aclocal.m4' that contains
+`m4_include([m4/thirdparty.m4])'.
+
+   The next time `aclocal -I m4 --install' is run (either via
+`autoreconf', by hand, or from the `Makefile' rebuild rules) something
+different happens.  `aclocal' notices that
+
+   * `configure.ac' uses `AX_THIRD_PARTY'
+
+   * `m4/thirdparty.m4' defines `AX_THIRD_PARTY' with serial 1.
+
+   * `/usr/share/aclocal/thirdparty.m4' defines `AX_THIRD_PARTY' with
+     serial 1.
+
+Because both files have the same serial number, `aclocal' uses the
+first it found in its search path order (*note Macro Search Path::).
+`aclocal' therefore ignores `/usr/share/aclocal/thirdparty.m4' and
+outputs an `aclocal.m4' that contains `m4_include([m4/thirdparty.m4])'.
+
+   Local directories specified with `-I' are always searched before
+system-wide directories, so a local file will always be preferred to
+the system-wide file in case of equal serial numbers.
+
+   Now suppose the system-wide third-party macro is changed.  This can
+happen if the package installing this macro is updated.  Let's suppose
+the new macro has serial number 2.  The next time `aclocal -I m4
+--install' is run the situation is the following:
+
+   * `configure.ac' uses `AX_THIRD_PARTY'
+
+   * `m4/thirdparty.m4' defines `AX_THIRD_PARTY' with serial 1.
+
+   * `/usr/share/aclocal/thirdparty.m4' defines `AX_THIRD_PARTY' with
+     serial 2.
+
+When `aclocal' sees a greater serial number, it immediately forgets
+anything it knows from files that have the same basename and a smaller
+serial number.  So after it has found
+`/usr/share/aclocal/thirdparty.m4' with serial 2, `aclocal' will
+proceed as if it had never seen `m4/thirdparty.m4'.  This brings us
+back to a situation similar to that at the beginning of our example,
+where no local file defined the macro.  `aclocal' will install the new
+version of the macro in `m4/thirdparty.m4', in this case overriding the
+old version.  MyPackage just had its macro updated as a side effect of
+running `aclocal'.
+
+   If you are leery of letting `aclocal' update your local macro, you
+can run `aclocal -I m4 --diff' to review the changes `aclocal -I m4
+--install' would perform on these macros.
+
+   Finally, note that the `--force' option of `aclocal' has absolutely
+no effect on the files installed by `--install'.  For instance, if you
+have modified your local macros, do not expect `--install --force' to
+replace the local macros by their system-wide versions.  If you want to
+do so, simply erase the local macros you want to revert, and run
+`aclocal -I m4 --install'.
+
+\1f
+File: automake.info,  Node: Future of aclocal,  Prev: Serials,  Up: aclocal Invocation
+
+6.3.6 The Future of `aclocal'
+-----------------------------
+
+`aclocal' is expected to disappear.  This feature really should not be
+offered by Automake.  Automake should focus on generating `Makefile's;
+dealing with M4 macros really is Autoconf's job.  The fact that some
+people install Automake just to use `aclocal', but do not use
+`automake' otherwise is an indication of how that feature is misplaced.
+
+   The new implementation will probably be done slightly differently.
+For instance, it could enforce the `m4/'-style layout discussed in
+*note Local Macros::.
+
+   We have no idea when and how this will happen.  This has been
+discussed several times in the past, but someone still has to commit to
+that non-trivial task.
+
+   From the user point of view, `aclocal''s removal might turn out to
+be painful.  There is a simple precaution that you may take to make
+that switch more seamless: never call `aclocal' yourself.  Keep this
+guy under the exclusive control of `autoreconf' and Automake's rebuild
+rules.  Hopefully you won't need to worry about things breaking, when
+`aclocal' disappears, because everything will have been taken care of.
+If otherwise you used to call `aclocal' directly yourself or from some
+script, you will quickly notice the change.
+
+   Many packages come with a script called `bootstrap.sh' or
+`autogen.sh', that will just call `aclocal', `libtoolize', `gettextize'
+or `autopoint', `autoconf', `autoheader', and `automake' in the right
+order.  Actually this is precisely what `autoreconf' can do for you.
+If your package has such a `bootstrap.sh' or `autogen.sh' script,
+consider using `autoreconf'.  That should simplify its logic a lot
+(less things to maintain, yum!), it's even likely you will not need the
+script anymore, and more to the point you will not call `aclocal'
+directly anymore.
+
+   For the time being, third-party packages should continue to install
+public macros into `/usr/share/aclocal/'.  If `aclocal' is replaced by
+another tool it might make sense to rename the directory, but
+supporting `/usr/share/aclocal/' for backward compatibility should be
+really easy provided all macros are properly written (*note Extending
+aclocal::).
+
+\1f
+File: automake.info,  Node: Macros,  Prev: aclocal Invocation,  Up: configure
+
+6.4 Autoconf macros supplied with Automake
+==========================================
+
+Automake ships with several Autoconf macros that you can use from your
+`configure.ac'.  When you use one of them it will be included by
+`aclocal' in `aclocal.m4'.
+
+* Menu:
+
+* Public Macros::               Macros that you can use.
+* Obsolete Macros::             Macros that will soon be removed.
+* Private Macros::              Macros that you should not use.
+
+\1f
+File: automake.info,  Node: Public Macros,  Next: Obsolete Macros,  Up: Macros
+
+6.4.1 Public Macros
+-------------------
+
+`AM_INIT_AUTOMAKE([OPTIONS])'
+     Runs many macros required for proper operation of the generated
+     Makefiles.
+
+     Today, `AM_INIT_AUTOMAKE' is called with a single argument: a
+     space-separated list of Automake options that should be applied to
+     every `Makefile.am' in the tree.  The effect is as if each option
+     were listed in `AUTOMAKE_OPTIONS' (*note Options::).
+
+     This macro can also be called in _another, deprecated form_
+     (support for which will be _removed in the next major Automake
+     release (1.13)_): `AM_INIT_AUTOMAKE(PACKAGE, VERSION,
+     [NO-DEFINE])'.  In this form, there are two required arguments:
+     the package and the version number.  This form is obsolete because
+     the PACKAGE and VERSION can be obtained from Autoconf's `AC_INIT'
+     macro (which itself has an old and a new form).
+
+     If your `configure.ac' has:
+
+          AC_INIT([src/foo.c])
+          AM_INIT_AUTOMAKE([mumble], [1.5])
+
+     you should modernize it as follows:
+
+          AC_INIT([mumble], [1.5])
+          AC_CONFIG_SRCDIR([src/foo.c])
+          AM_INIT_AUTOMAKE
+
+     Note that if you're upgrading your `configure.ac' from an earlier
+     version of Automake, it is not always correct to simply move the
+     package and version arguments from `AM_INIT_AUTOMAKE' directly to
+     `AC_INIT', as in the example above.  The first argument to
+     `AC_INIT' should be the name of your package (e.g., `GNU
+     Automake'), not the tarball name (e.g., `automake') that you used
+     to pass to `AM_INIT_AUTOMAKE'.  Autoconf tries to derive a tarball
+     name from the package name, which should work for most but not all
+     package names.  (If it doesn't work for yours, you can use the
+     four-argument form of `AC_INIT' to provide the tarball name
+     explicitly).
+
+     By default this macro `AC_DEFINE''s `PACKAGE' and `VERSION'.  This
+     can be avoided by passing the `no-define' option:
+          AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
+
+`AM_PATH_LISPDIR'
+     Searches for the program `emacs', and, if found, sets the output
+     variable `lispdir' to the full path to Emacs' site-lisp directory.
+
+     Note that this test assumes the `emacs' found to be a version that
+     supports Emacs Lisp (such as GNU Emacs or XEmacs).  Other emacsen
+     can cause this test to hang (some, like old versions of
+     MicroEmacs, start up in interactive mode, requiring `C-x C-c' to
+     exit, which is hardly obvious for a non-emacs user).  In most
+     cases, however, you should be able to use `C-c' to kill the test.
+     In order to avoid problems, you can set `EMACS' to "no" in the
+     environment, or use the `--with-lispdir' option to `configure' to
+     explicitly set the correct path (if you're sure you have an
+     `emacs' that supports Emacs Lisp).
+
+`AM_PROG_AR([ACT-IF-FAIL])'
+     You must use this macro when you use the archiver in your project,
+     if you want support for unusual archivers such as Microsoft `lib'.
+     The content of the optional argument is executed if the archiver
+     interface is not recognized; the default action is to abort
+     configure with an error message.
+
+`AM_PROG_AS'
+     Use this macro when you have assembly code in your project.  This
+     will choose the assembler for you (by default the C compiler) and
+     set `CCAS', and will also set `CCASFLAGS' if required.
+
+`AM_PROG_CC_C_O'
+     This is like `AC_PROG_CC_C_O', but it generates its results in the
+     manner required by Automake.  You must use this instead of
+     `AC_PROG_CC_C_O' when you need this functionality, that is, when
+     using per-target flags or subdir-objects with C sources.
+
+`AM_PROG_LEX'
+     Like `AC_PROG_LEX' (*note Particular Program Checks:
+     (autoconf)Particular Programs.), but uses the `missing' script on
+     systems that do not have `lex'.  HP-UX 10 is one such system.
+
+`AM_PROG_GCJ'
+     This macro finds the `gcj' program or causes an error.  It sets
+     `GCJ' and `GCJFLAGS'.  `gcj' is the Java front-end to the GNU
+     Compiler Collection.
+
+`AM_PROG_UPC([COMPILER-SEARCH-LIST])'
+     Find a compiler for Unified Parallel C and define the `UPC'
+     variable.  The default COMPILER-SEARCH-LIST is `upcc upc'.  This
+     macro will abort `configure' if no Unified Parallel C compiler is
+     found.
+
+`AM_SILENT_RULES'
+     Enable the machinery for less verbose build output (*note
+     Options::).
+
+`AM_WITH_DMALLOC'
+     Add support for the Dmalloc package (http://dmalloc.com/).  If the
+     user runs `configure' with `--with-dmalloc', then define
+     `WITH_DMALLOC' and add `-ldmalloc' to `LIBS'.
+
+
+\1f
+File: automake.info,  Node: Obsolete Macros,  Next: Private Macros,  Prev: Public Macros,  Up: Macros
+
+6.4.2 Obsolete Macros
+---------------------
+
+Although using some of the following macros was required in past
+releases, you should not use any of them in new code.  _All these
+macros will be removed in the next major Automake version_; if you are
+still using them, running `autoupdate' should adjust your
+`configure.ac' automatically (*note Using `autoupdate' to Modernize
+`configure.ac': (autoconf)autoupdate Invocation.).  _Do it NOW!_
+
+`AM_CONFIG_HEADER'
+     Automake will generate rules to automatically regenerate the config
+     header.  This obsolete macro is a synonym of `AC_CONFIG_HEADERS'
+     today (*note Optional::).
+
+`AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL'
+     If the use of `TIOCGWINSZ' requires `<sys/ioctl.h>', then define
+     `GWINSZ_IN_SYS_IOCTL'.  Otherwise `TIOCGWINSZ' can be found in
+     `<termios.h>'.  This macro is obsolete, you should use Autoconf's
+     `AC_HEADER_TIOCGWINSZ' instead.
+
+`AM_PROG_MKDIR_P'
+     From Automake 1.8 to 1.9.6 this macro used to define the output
+     variable `mkdir_p' to one of `mkdir -p', `install-sh -d', or
+     `mkinstalldirs'.
+
+     Nowadays Autoconf provides a similar functionality with
+     `AC_PROG_MKDIR_P' (*note Particular Program Checks:
+     (autoconf)Particular Programs.), however this defines the output
+     variable `MKDIR_P' instead.  In case you are still using the
+     `AM_PROG_MKDIR_P' macro in your `configure.ac', or its provided
+     variable `$(mkdir_p)' in your `Makefile.am', you are advised to
+     switch ASAP to the more modern Autoconf-provided interface
+     instead; both the macro and the variable _will be removed_ in the
+     next major Automake release.
+
+`AM_SYS_POSIX_TERMIOS'
+     Check to see if POSIX termios headers and functions are available
+     on the system.  If so, set the shell variable
+     `am_cv_sys_posix_termios' to `yes'.  If not, set the variable to
+     `no'.  This macro is obsolete, you should use Autoconf's
+     `AC_SYS_POSIX_TERMIOS' instead.
+
+
+\1f
+File: automake.info,  Node: Private Macros,  Prev: Obsolete Macros,  Up: Macros
+
+6.4.3 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
+rely on them, as they might be changed in a future version.  Consider
+them as implementation details; or better, do not consider them at all:
+skip this section!
+
+`_AM_DEPENDENCIES'
+`AM_SET_DEPDIR'
+`AM_DEP_TRACK'
+`AM_OUTPUT_DEPENDENCY_COMMANDS'
+     These macros are used to implement Automake's automatic dependency
+     tracking scheme.  They are called automatically by Automake when
+     required, and there should be no need to invoke them manually.
+
+`AM_MAKE_INCLUDE'
+     This macro is used to discover how the user's `make' handles
+     `include' statements.  This macro is automatically invoked when
+     needed; there should be no need to invoke it manually.
+
+`AM_PROG_INSTALL_STRIP'
+     This is used to find a version of `install' that can be used to
+     strip a program at installation time.  This macro is automatically
+     included when required.
+
+`AM_SANITY_CHECK'
+     This checks to make sure that a file created in the build
+     directory is newer than a file in the source directory.  This can
+     fail on systems where the clock is set incorrectly.  This macro is
+     automatically run from `AM_INIT_AUTOMAKE'.
+
+
+\1f
+File: automake.info,  Node: Directories,  Next: Programs,  Prev: configure,  Up: Top
+
+7 Directories
+*************
+
+For simple projects that distribute all files in the same directory it
+is enough to have a single `Makefile.am' that builds everything in
+place.
+
+   In larger projects it is common to organize files in different
+directories, in a tree.  For instance one directory per program, per
+library or per module.  The traditional approach is to build these
+subdirectories recursively: each directory contains its `Makefile'
+(generated from `Makefile.am'), and when `make' is run from the top
+level directory it enters each subdirectory in turn to build its
+contents.
+
+* Menu:
+
+* Subdirectories::              Building subdirectories recursively
+* Conditional Subdirectories::  Conditionally not building directories
+* Alternative::                 Subdirectories without recursion
+* Subpackages::                 Nesting packages
+
+\1f
+File: automake.info,  Node: Subdirectories,  Next: Conditional Subdirectories,  Up: Directories
+
+7.1 Recursing subdirectories
+============================
+
+In packages with subdirectories, the top level `Makefile.am' must tell
+Automake which subdirectories are to be built.  This is done via the
+`SUBDIRS' variable.  
+
+   The `SUBDIRS' variable holds a list of subdirectories in which
+building of various sorts can occur.  The rules for many targets (e.g.,
+`all') in the generated `Makefile' will run commands both locally and
+in all specified subdirectories.  Note that the directories listed in
+`SUBDIRS' are not required to contain `Makefile.am's; only `Makefile's
+(after configuration).  This allows inclusion of libraries from
+packages that do not use Automake (such as `gettext'; see also *note
+Third-Party Makefiles::).
+
+   In packages that use subdirectories, the top-level `Makefile.am' is
+often very short.  For instance, here is the `Makefile.am' from the GNU
+Hello distribution:
+
+     EXTRA_DIST = BUGS ChangeLog.O README-alpha
+     SUBDIRS = doc intl po src tests
+
+   When Automake invokes `make' in a subdirectory, it uses the value of
+the `MAKE' variable.  It passes the value of the variable
+`AM_MAKEFLAGS' to the `make' invocation; this can be set in
+`Makefile.am' if there are flags you must always pass to `make'.  
+
+   The directories mentioned in `SUBDIRS' are usually direct children
+of the current directory, each subdirectory containing its own
+`Makefile.am' with a `SUBDIRS' pointing to deeper subdirectories.
+Automake can be used to construct packages of arbitrary depth this way.
+
+   By default, Automake generates `Makefiles' that work depth-first in
+postfix order: the subdirectories are built before the current
+directory.  However, it is possible to change this ordering.  You can
+do this by putting `.' into `SUBDIRS'.  For instance, putting `.' first
+will cause a prefix ordering of directories.
+
+   Using
+
+     SUBDIRS = lib src . test
+
+will cause `lib/' to be built before `src/', then the current directory
+will be built, finally the `test/' directory will be built.  It is
+customary to arrange test directories to be built after everything else
+since they are meant to test what has been constructed.
+
+   All `clean' rules are run in reverse order of build rules.
+
+\1f
+File: automake.info,  Node: Conditional Subdirectories,  Next: Alternative,  Prev: Subdirectories,  Up: Directories
+
+7.2 Conditional Subdirectories
+==============================
+
+It is possible to define the `SUBDIRS' variable conditionally if, like
+in the case of GNU Inetutils, you want to only build a subset of the
+entire package.
+
+   To illustrate how this works, let's assume we have two directories
+`src/' and `opt/'.  `src/' should always be built, but we want to
+decide in `configure' whether `opt/' will be built or not.  (For this
+example we will assume that `opt/' should be built when the variable
+`$want_opt' was set to `yes'.)
+
+   Running `make' should thus recurse into `src/' always, and then
+maybe in `opt/'.
+
+   However `make dist' should always recurse into both `src/' and
+`opt/'.  Because `opt/' should be distributed even if it is not needed
+in the current configuration.  This means `opt/Makefile' should be
+created _unconditionally_.
+
+   There are two ways to setup a project like this.  You can use
+Automake conditionals (*note Conditionals::) or use Autoconf `AC_SUBST'
+variables (*note Setting Output Variables: (autoconf)Setting Output
+Variables.).  Using Automake conditionals is the preferred solution.
+Before we illustrate these two possibilities, let's introduce
+`DIST_SUBDIRS'.
+
+* Menu:
+
+* 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 `Makefile'
+
+\1f
+File: automake.info,  Node: SUBDIRS vs DIST_SUBDIRS,  Next: Subdirectories with AM_CONDITIONAL,  Up: Conditional Subdirectories
+
+7.2.1 `SUBDIRS' vs. `DIST_SUBDIRS'
+----------------------------------
+
+Automake considers two sets of directories, defined by the variables
+`SUBDIRS' and `DIST_SUBDIRS'.
+
+   `SUBDIRS' contains the subdirectories of the current directory that
+must be built (*note Subdirectories::).  It must be defined manually;
+Automake will never guess a directory is to be built.  As we will see
+in the next two sections, it is possible to define it conditionally so
+that some directory will be omitted from the build.
+
+   `DIST_SUBDIRS' is used in rules that need to recurse in all
+directories, even those that have been conditionally left out of the
+build.  Recall our example where we may not want to build subdirectory
+`opt/', but yet we want to distribute it?  This is where `DIST_SUBDIRS'
+comes into play: `opt' may not appear in `SUBDIRS', but it must appear
+in `DIST_SUBDIRS'.
+
+   Precisely, `DIST_SUBDIRS' is used by `make maintainer-clean', `make
+distclean' and `make dist'.  All other recursive rules use `SUBDIRS'.
+
+   If `SUBDIRS' is defined conditionally using Automake conditionals,
+Automake will define `DIST_SUBDIRS' automatically from the possible
+values of `SUBDIRS' in all conditions.
+
+   If `SUBDIRS' contains `AC_SUBST' variables, `DIST_SUBDIRS' will not
+be defined correctly because Automake does not know the possible values
+of these variables.  In this case `DIST_SUBDIRS' needs to be defined
+manually.
+
+\1f
+File: automake.info,  Node: Subdirectories with AM_CONDITIONAL,  Next: Subdirectories with AC_SUBST,  Prev: SUBDIRS vs DIST_SUBDIRS,  Up: Conditional Subdirectories
+
+7.2.2 Subdirectories with `AM_CONDITIONAL'
+------------------------------------------
+
+`configure' should output the `Makefile' for each directory and define
+a condition into which `opt/' should be built.
+
+     ...
+     AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
+     AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
+     ...
+
+   Then `SUBDIRS' can be defined in the top-level `Makefile.am' as
+follows.
+
+     if COND_OPT
+       MAYBE_OPT = opt
+     endif
+     SUBDIRS = src $(MAYBE_OPT)
+
+   As you can see, running `make' will rightly recurse into `src/' and
+maybe `opt/'.
+
+   As you can't see, running `make dist' will recurse into both `src/'
+and `opt/' directories because `make dist', unlike `make all', doesn't
+use the `SUBDIRS' variable.  It uses the `DIST_SUBDIRS' variable.
+
+   In this case Automake will define `DIST_SUBDIRS = src opt'
+automatically because it knows that `MAYBE_OPT' can contain `opt' in
+some condition.
+
+\1f
+File: automake.info,  Node: Subdirectories with AC_SUBST,  Next: Unconfigured Subdirectories,  Prev: Subdirectories with AM_CONDITIONAL,  Up: Conditional Subdirectories
+
+7.2.3 Subdirectories with `AC_SUBST'
+------------------------------------
+
+Another possibility is to define `MAYBE_OPT' from `./configure' using
+`AC_SUBST':
+
+     ...
+     if test "$want_opt" = yes; then
+       MAYBE_OPT=opt
+     else
+       MAYBE_OPT=
+     fi
+     AC_SUBST([MAYBE_OPT])
+     AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
+     ...
+
+   In this case the top-level `Makefile.am' should look as follows.
+
+     SUBDIRS = src $(MAYBE_OPT)
+     DIST_SUBDIRS = src opt
+
+   The drawback is that since Automake cannot guess what the possible
+values of `MAYBE_OPT' are, it is necessary to define `DIST_SUBDIRS'.
+
+\1f
+File: automake.info,  Node: Unconfigured Subdirectories,  Prev: Subdirectories with AC_SUBST,  Up: Conditional Subdirectories
+
+7.2.4 Unconfigured Subdirectories
+---------------------------------
+
+The semantics of `DIST_SUBDIRS' are often misunderstood by some users
+that try to _configure and build_ subdirectories conditionally.  Here
+by configuring we mean creating the `Makefile' (it might also involve
+running a nested `configure' script: this is a costly operation that
+explains why people want to do it conditionally, but only the `Makefile'
+is relevant to the discussion).
+
+   The above examples all assume that every `Makefile' is created, even
+in directories that are not going to be built.  The simple reason is
+that we want `make dist' to distribute even the directories that are
+not being built (e.g., platform-dependent code), hence `make dist' must
+recurse into the subdirectory, hence this directory must be configured
+and appear in `DIST_SUBDIRS'.
+
+   Building packages that do not configure every subdirectory is a
+tricky business, and we do not recommend it to the novice as it is easy
+to produce an incomplete tarball by mistake.  We will not discuss this
+topic in depth here, yet for the adventurous here are a few rules to
+remember.
+
+   * `SUBDIRS' should always be a subset of `DIST_SUBDIRS'.
+
+     It makes little sense to have a directory in `SUBDIRS' that is not
+     in `DIST_SUBDIRS'.  Think of the former as a way to tell which
+     directories listed in the latter should be built.
+
+   * Any directory listed in `DIST_SUBDIRS' and `SUBDIRS' must be
+     configured.
+
+     I.e., the `Makefile' must exists or the recursive `make' rules
+     will not be able to process the directory.
+
+   * Any configured directory must be listed in `DIST_SUBDIRS'.
+
+     So that the cleaning rules remove the generated `Makefile's.  It
+     would be correct to see `DIST_SUBDIRS' as a variable that lists
+     all the directories that have been configured.
+
+   In order to prevent recursion in some unconfigured directory you
+must therefore ensure that this directory does not appear in
+`DIST_SUBDIRS' (and `SUBDIRS').  For instance, if you define `SUBDIRS'
+conditionally using `AC_SUBST' and do not define `DIST_SUBDIRS'
+explicitly, it will be default to `$(SUBDIRS)'; another possibility is
+to force `DIST_SUBDIRS = $(SUBDIRS)'.
+
+   Of course, directories that are omitted from `DIST_SUBDIRS' will not
+be distributed unless you make other arrangements for this to happen
+(for instance, always running `make dist' in a configuration where all
+directories are known to appear in `DIST_SUBDIRS'; or writing a
+`dist-hook' target to distribute these directories).
+
+   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 `SUBDIRS' or `DIST_SUBDIRS', `automake'
+will make sure the directory exists.  Consequently `automake' cannot be
+run on such a distribution when one directory has been omitted.  One
+way to avoid this check is to use the `AC_SUBST' method to declare
+conditional directories; since `automake' does not know the values of
+`AC_SUBST' variables it cannot ensure the corresponding directory
+exists.
+
+\1f
+File: automake.info,  Node: Alternative,  Next: Subpackages,  Prev: Conditional Subdirectories,  Up: Directories
+
+7.3 An Alternative Approach to Subdirectories
+=============================================
+
+If you've ever read Peter Miller's excellent paper, Recursive Make
+Considered Harmful (http://miller.emu.id.au/pmiller/books/rmch/), the
+preceding sections on the use of subdirectories will probably come as
+unwelcome advice.  For those who haven't read the paper, Miller's main
+thesis is that recursive `make' invocations are both slow and
+error-prone.
+
+   Automake provides sufficient cross-directory support (1) to enable
+you to write a single `Makefile.am' for a complex multi-directory
+package.
+
+   By default an installable file specified in a subdirectory will have
+its directory name stripped before installation.  For instance, in this
+example, the header file will be installed as `$(includedir)/stdio.h':
+
+     include_HEADERS = inc/stdio.h
+
+   However, the `nobase_' prefix can be used to circumvent this path
+stripping.  In this example, the header file will be installed as
+`$(includedir)/sys/types.h':
+
+     nobase_include_HEADERS = sys/types.h
+
+   `nobase_' should be specified first when used in conjunction with
+either `dist_' or `nodist_' (*note Fine-grained Distribution
+Control::).  For instance:
+
+     nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg
+
+   Finally, note that a variable using the `nobase_' prefix can often
+be replaced by several variables, one for each destination directory
+(*note Uniform::).  For instance, the last example could be rewritten
+as follows:
+
+     imagesdir = $(pkgdatadir)/images
+     soundsdir = $(pkgdatadir)/sounds
+     dist_images_DATA = images/vortex.pgm
+     dist_sounds_DATA = sounds/whirl.ogg
+
+This latter syntax makes it possible to change one destination
+directory without changing the layout of the source tree.
+
+   Currently, `nobase_*_LTLIBRARIES' are the only exception to this
+rule, in that there is no particular installation order guarantee for
+an otherwise equivalent set of variables without `nobase_' prefix.
+
+   ---------- Footnotes ----------
+
+   (1) We believe.  This work is new and there are probably warts.
+*Note Introduction::, for information on reporting bugs.
+
+\1f
+File: automake.info,  Node: Subpackages,  Prev: Alternative,  Up: Directories
+
+7.4 Nesting Packages
+====================
+
+In the GNU Build System, packages can be nested to arbitrary depth.
+This means that a package can embed other packages with their own
+`configure', `Makefile's, etc.
+
+   These other packages should just appear as subdirectories of their
+parent package.  They must be listed in `SUBDIRS' like other ordinary
+directories.  However the subpackage's `Makefile's should be output by
+its own `configure' script, not by the parent's `configure'.  This is
+achieved using the `AC_CONFIG_SUBDIRS' Autoconf macro (*note
+AC_CONFIG_SUBDIRS: (autoconf)Subdirectories.).
+
+   Here is an example package for an `arm' program that links with a
+`hand' library that is a nested package in subdirectory `hand/'.
+
+   `arm''s `configure.ac':
+
+     AC_INIT([arm], [1.0])
+     AC_CONFIG_AUX_DIR([.])
+     AM_INIT_AUTOMAKE
+     AC_PROG_CC
+     AC_CONFIG_FILES([Makefile])
+     # Call hand's ./configure script recursively.
+     AC_CONFIG_SUBDIRS([hand])
+     AC_OUTPUT
+
+   `arm''s `Makefile.am':
+
+     # Build the library in the hand subdirectory first.
+     SUBDIRS = hand
+
+     # Include hand's header when compiling this directory.
+     AM_CPPFLAGS = -I$(srcdir)/hand
+
+     bin_PROGRAMS = arm
+     arm_SOURCES = arm.c
+     # link with the hand library.
+     arm_LDADD = hand/libhand.a
+
+   Now here is `hand''s `hand/configure.ac':
+
+     AC_INIT([hand], [1.2])
+     AC_CONFIG_AUX_DIR([.])
+     AM_INIT_AUTOMAKE
+     AC_PROG_CC
+     AM_PROG_AR
+     AC_PROG_RANLIB
+     AC_CONFIG_FILES([Makefile])
+     AC_OUTPUT
+
+and its `hand/Makefile.am':
+
+     lib_LIBRARIES = libhand.a
+     libhand_a_SOURCES = hand.c
+
+   When `make dist' is run from the top-level directory it will create
+an archive `arm-1.0.tar.gz' that contains the `arm' code as well as the
+`hand' subdirectory.  This package can be built and installed like any
+ordinary package, with the usual `./configure && make && make install'
+sequence (the `hand' subpackage will be built and installed by the
+process).
+
+   When `make dist' is run from the hand directory, it will create a
+self-contained `hand-1.2.tar.gz' archive.  So although it appears to be
+embedded in another package, it can still be used separately.
+
+   The purpose of the `AC_CONFIG_AUX_DIR([.])' instruction is to force
+Automake and Autoconf to search for auxiliary scripts in the current
+directory.  For instance, this means that there will be two copies of
+`install-sh': one in the top-level of the `arm' package, and another
+one in the `hand/' subdirectory for the `hand' package.
+
+   The historical default is to search for these auxiliary scripts in
+the parent directory and the grandparent directory.  So if the
+`AC_CONFIG_AUX_DIR([.])' line was removed from `hand/configure.ac',
+that subpackage would share the auxiliary script of the `arm' package.
+This may looks like a gain in size (a few kilobytes), but it is
+actually a loss of modularity as the `hand' subpackage is no longer
+self-contained (`make dist' in the subdirectory will not work anymore).
+
+   Packages that do not use Automake need more work to be integrated
+this way.  *Note Third-Party Makefiles::.
+
+\1f
+File: automake.info,  Node: Programs,  Next: Other Objects,  Prev: Directories,  Up: Top
+
+8 Building Programs and Libraries
+*********************************
+
+A large part of Automake's functionality is dedicated to making it easy
+to build programs and libraries.
+
+* Menu:
+
+* A Program::                   Building a program
+* A Library::                   Building a library
+* A Shared Library::            Building a Libtool library
+* Program and Library Variables::  Variables controlling program and
+                                library builds
+* Default _SOURCES::            Default source files
+* LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
+* 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
+* Objective C++ Support::       Compiling Objective C++ sources
+* Unified Parallel C Support::  Compiling Unified Parallel C sources
+* Assembly Support::            Compiling assembly sources
+* Fortran 77 Support::          Compiling Fortran 77 sources
+* Fortran 9x Support::          Compiling Fortran 9x sources
+* Java Support with gcj::       Compiling Java sources using gcj
+* Vala Support::                Compiling Vala sources
+* Support for Other Languages::  Compiling other languages
+* Dependencies::                Automatic dependency tracking
+* EXEEXT::                      Support for executable extensions
+
+\1f
+File: automake.info,  Node: A Program,  Next: A Library,  Up: Programs
+
+8.1 Building a program
+======================
+
+In order to build a program, you need to tell Automake which sources
+are part of it, and which libraries it should be linked with.
+
+   This section also covers conditional compilation of sources or
+programs.  Most of the comments about these also apply to libraries
+(*note A Library::) and libtool libraries (*note A Shared Library::).
+
+* Menu:
+
+* Program Sources::             Defining program sources
+* Linking::                     Linking with libraries or extra objects
+* Conditional Sources::         Handling conditional sources
+* Conditional Programs::        Building a program conditionally
+
+\1f
+File: automake.info,  Node: Program Sources,  Next: Linking,  Up: A Program
+
+8.1.1 Defining program sources
+------------------------------
+
+In a directory containing source that gets built into a program (as
+opposed to a library or a script), the `PROGRAMS' primary is used.
+Programs can be installed in `bindir', `sbindir', `libexecdir',
+`pkglibexecdir', or not at all (`noinst_').  They can also be built
+only for `make check', in which case the prefix is `check_'.
+
+   For instance:
+
+     bin_PROGRAMS = hello
+
+   In this simple case, the resulting `Makefile.in' will contain code
+to generate a program named `hello'.
+
+   Associated with each program are several assisting variables that are
+named after the program.  These variables are all optional, and have
+reasonable defaults.  Each variable, its use, and default is spelled out
+below; we use the "hello" example throughout.
+
+   The variable `hello_SOURCES' is used to specify which source files
+get built into an executable:
+
+     hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
+
+   This causes each mentioned `.c' file to be compiled into the
+corresponding `.o'.  Then all are linked to produce `hello'.
+
+   If `hello_SOURCES' is not specified, then it defaults to the single
+file `hello.c' (*note Default _SOURCES::).  
+
+   Multiple programs can be built in a single directory.  Multiple
+programs can share a single source file, which must be listed in each
+`_SOURCES' definition.
+
+   Header files listed in a `_SOURCES' definition will be included in
+the distribution but otherwise ignored.  In case it isn't obvious, you
+should not include the header file generated by `configure' in a
+`_SOURCES' variable; this file should not be distributed.  Lex (`.l')
+and Yacc (`.y') files can also be listed; see *note Yacc and Lex::.
+
+\1f
+File: automake.info,  Node: Linking,  Next: Conditional Sources,  Prev: Program Sources,  Up: A Program
+
+8.1.2 Linking the program
+-------------------------
+
+If you need to link against libraries that are not found by
+`configure', you can use `LDADD' to do so.  This variable is used to
+specify additional objects or libraries to link with; it is
+inappropriate for specifying specific linker flags, you should use
+`AM_LDFLAGS' for this purpose.  
+
+   Sometimes, multiple programs are built in one directory but do not
+share the same link-time requirements.  In this case, you can use the
+`PROG_LDADD' variable (where PROG is the name of the program as it
+appears in some `_PROGRAMS' variable, and usually written in lowercase)
+to override `LDADD'.  If this variable exists for a given program, then
+that program is not linked using `LDADD'.  
+
+   For instance, in GNU cpio, `pax', `cpio' and `mt' are linked against
+the library `libcpio.a'.  However, `rmt' is built in the same
+directory, and has no such link requirement.  Also, `mt' and `rmt' are
+only built on certain architectures.  Here is what cpio's
+`src/Makefile.am' looks like (abridged):
+
+     bin_PROGRAMS = cpio pax $(MT)
+     libexec_PROGRAMS = $(RMT)
+     EXTRA_PROGRAMS = mt rmt
+
+     LDADD = ../lib/libcpio.a $(INTLLIBS)
+     rmt_LDADD =
+
+     cpio_SOURCES = ...
+     pax_SOURCES = ...
+     mt_SOURCES = ...
+     rmt_SOURCES = ...
+
+   `PROG_LDADD' is inappropriate for passing program-specific linker
+flags (except for `-l', `-L', `-dlopen' and `-dlpreopen').  So, use the
+`PROG_LDFLAGS' variable for this purpose.
+
+   It is also occasionally useful to have a program depend on some other
+target that is not actually part of that program.  This can be done
+using either the `PROG_DEPENDENCIES' or the `EXTRA_PROG_DEPENDENCIES'
+variable.  Each program depends on the contents both variables, but no
+further interpretation is done.
+
+   Since these dependencies are associated to the link rule used to
+create the programs they should normally list files used by the link
+command.  That is `*.$(OBJEXT)', `*.a', or `*.la' files.  In rare cases
+you may need to add other kinds of files such as linker scripts, but
+_listing a source file in `_DEPENDENCIES' is wrong_.  If some source
+file needs to be built before all the components of a program are
+built, consider using the `BUILT_SOURCES' variable instead (*note
+Sources::).
+
+   If `PROG_DEPENDENCIES' is not supplied, it is computed by Automake.
+The automatically-assigned value is the contents of `PROG_LDADD', with
+most configure substitutions, `-l', `-L', `-dlopen' and `-dlpreopen'
+options removed.  The configure substitutions that are left in are only
+`$(LIBOBJS)' and `$(ALLOCA)'; these are left because it is known that
+they will not cause an invalid value for `PROG_DEPENDENCIES' to be
+generated.
+
+   *note Conditional Sources:: shows a situation where `_DEPENDENCIES'
+may be used.
+
+   The `EXTRA_PROG_DEPENDENCIES' may be useful for cases where you
+merely want to augment the `automake'-generated `PROG_DEPENDENCIES'
+rather than replacing it.
+
+   We recommend that you avoid using `-l' options in `LDADD' or
+`PROG_LDADD' when referring to libraries built by your package.
+Instead, write the file name of the library explicitly as in the above
+`cpio' example.  Use `-l' only to list third-party libraries.  If you
+follow this rule, the default value of `PROG_DEPENDENCIES' will list
+all your local libraries and omit the other ones.
+
+\1f
+File: automake.info,  Node: Conditional Sources,  Next: Conditional Programs,  Prev: Linking,  Up: A Program
+
+8.1.3 Conditional compilation of sources
+----------------------------------------
+
+You can't put a configure substitution (e.g., `@FOO@' or `$(FOO)' where
+`FOO' is defined via `AC_SUBST') into a `_SOURCES' variable.  The
+reason for this is a bit hard to explain, but suffice to say that it
+simply won't work.  Automake will give an error if you try to do this.
+
+   Fortunately there are two other ways to achieve the same result.
+One is to use configure substitutions in `_LDADD' variables, the other
+is to use an Automake conditional.
+
+Conditional Compilation using `_LDADD' Substitutions
+....................................................
+
+Automake must know all the source files that could possibly go into a
+program, even if not all the files are built in every circumstance.  Any
+files that are only conditionally built should be listed in the
+appropriate `EXTRA_' variable.  For instance, if `hello-linux.c' or
+`hello-generic.c' were conditionally included in `hello', the
+`Makefile.am' would contain:
+
+     bin_PROGRAMS = hello
+     hello_SOURCES = hello-common.c
+     EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
+     hello_LDADD = $(HELLO_SYSTEM)
+     hello_DEPENDENCIES = $(HELLO_SYSTEM)
+
+You can then setup the `$(HELLO_SYSTEM)' substitution from
+`configure.ac':
+
+     ...
+     case $host in
+       *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
+       *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
+     esac
+     AC_SUBST([HELLO_SYSTEM])
+     ...
+
+   In this case, the variable `HELLO_SYSTEM' should be replaced by
+either `hello-linux.o' or `hello-generic.o', and added to both
+`hello_DEPENDENCIES' and `hello_LDADD' in order to be built and linked
+in.
+
+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 `Makefile.am'
+construct to build the same `hello' example:
+
+     bin_PROGRAMS = hello
+     if LINUX
+     hello_SOURCES = hello-linux.c hello-common.c
+     else
+     hello_SOURCES = hello-generic.c hello-common.c
+     endif
+
+   In this case, `configure.ac' should setup the `LINUX' conditional
+using `AM_CONDITIONAL' (*note Conditionals::).
+
+   When using conditionals like this you don't need to use the `EXTRA_'
+variable, because Automake will examine the contents of each variable
+to construct the complete list of source files.
+
+   If your program uses a lot of files, you will probably prefer a
+conditional `+='.
+
+     bin_PROGRAMS = hello
+     hello_SOURCES = hello-common.c
+     if LINUX
+     hello_SOURCES += hello-linux.c
+     else
+     hello_SOURCES += hello-generic.c
+     endif
+
+\1f
+File: automake.info,  Node: Conditional Programs,  Prev: Conditional Sources,  Up: A Program
+
+8.1.4 Conditional compilation of programs
+-----------------------------------------
+
+Sometimes it is useful to determine the programs that are to be built
+at configure time.  For instance, GNU `cpio' only builds `mt' and `rmt'
+under special circumstances.  The means to achieve conditional
+compilation of programs are the same you can use to compile source
+files conditionally: substitutions or conditionals.
+
+Conditional Programs using `configure' Substitutions
+....................................................
+
+In this case, you must notify Automake of all the programs that can
+possibly be built, but at the same time cause the generated
+`Makefile.in' to use the programs specified by `configure'.  This is
+done by having `configure' substitute values into each `_PROGRAMS'
+definition, while listing all optionally built programs in
+`EXTRA_PROGRAMS'.
+
+     bin_PROGRAMS = cpio pax $(MT)
+     libexec_PROGRAMS = $(RMT)
+     EXTRA_PROGRAMS = mt rmt
+
+   As explained in *note EXEEXT::, Automake will rewrite
+`bin_PROGRAMS', `libexec_PROGRAMS', and `EXTRA_PROGRAMS', appending
+`$(EXEEXT)' to each binary.  Obviously it cannot rewrite values
+obtained at run-time through `configure' substitutions, therefore you
+should take care of appending `$(EXEEXT)' yourself, as in
+`AC_SUBST([MT], ['mt${EXEEXT}'])'.
+
+Conditional Programs using Automake Conditionals
+................................................
+
+You can also use Automake conditionals (*note Conditionals::) to select
+programs to be built.  In this case you don't have to worry about
+`$(EXEEXT)' or `EXTRA_PROGRAMS'.
+
+     bin_PROGRAMS = cpio pax
+     if WANT_MT
+       bin_PROGRAMS += mt
+     endif
+     if WANT_RMT
+       libexec_PROGRAMS = rmt
+     endif
+
+\1f
+File: automake.info,  Node: A Library,  Next: A Shared Library,  Prev: A Program,  Up: Programs
+
+8.2 Building a library
+======================
+
+Building a library is much like building a program.  In this case, the
+name of the primary is `LIBRARIES'.  Libraries can be installed in
+`libdir' or `pkglibdir'.
+
+   *Note A Shared Library::, for information on how to build shared
+libraries using libtool and the `LTLIBRARIES' primary.
+
+   Each `_LIBRARIES' variable is a list of the libraries to be built.
+For instance, to create a library named `libcpio.a', but not install
+it, you would write:
+
+     noinst_LIBRARIES = libcpio.a
+     libcpio_a_SOURCES = ...
+
+   The sources that go into a library are determined exactly as they are
+for programs, via the `_SOURCES' variables.  Note that the library name
+is canonicalized (*note Canonicalization::), so the `_SOURCES' variable
+corresponding to `libcpio.a' is `libcpio_a_SOURCES', not
+`libcpio.a_SOURCES'.
+
+   Extra objects can be added to a library using the `LIBRARY_LIBADD'
+variable.  This should be used for objects determined by `configure'.
+Again from `cpio':
+
+     libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
+
+   In addition, sources for extra objects that will not exist until
+configure-time must be added to the `BUILT_SOURCES' variable (*note
+Sources::).
+
+   Building a static library is done by compiling all object files, then
+by invoking `$(AR) $(ARFLAGS)' followed by the name of the library and
+the list of objects, and finally by calling `$(RANLIB)' on that
+library.  You should call `AC_PROG_RANLIB' from your `configure.ac' to
+define `RANLIB' (Automake will complain otherwise).  You should also
+call `AM_PROG_AR' to define `AR', in order to support unusual archivers
+such as Microsoft lib.  `ARFLAGS' will default to `cru'; you can
+override this variable by setting it in your `Makefile.am' or by
+`AC_SUBST'ing it from your `configure.ac'.  You can override the `AR'
+variable by defining a per-library `maude_AR' variable (*note Program
+and Library Variables::).
+
+   Be careful when selecting library components conditionally.  Because
+building an empty library is not portable, you should ensure that any
+library always contains at least one object.
+
+   To use a static library when building a program, add it to `LDADD'
+for this program.  In the following example, the program `cpio' is
+statically linked with the library `libcpio.a'.
+
+     noinst_LIBRARIES = libcpio.a
+     libcpio_a_SOURCES = ...
+
+     bin_PROGRAMS = cpio
+     cpio_SOURCES = cpio.c ...
+     cpio_LDADD = libcpio.a
+
+\1f
+File: automake.info,  Node: A Shared Library,  Next: Program and Library Variables,  Prev: A Library,  Up: Programs
+
+8.3 Building a Shared Library
+=============================
+
+Building shared libraries portably is a relatively complex matter.  For
+this reason, GNU Libtool (*note Introduction: (libtool)Top.) was
+created to help build shared libraries in a platform-independent way.
+
+* Menu:
+
+* Libtool Concept::             Introducing Libtool
+* Libtool Libraries::           Declaring Libtool Libraries
+* Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
+* Conditional Libtool Sources::  Choosing Library Sources Conditionally
+* Libtool Convenience Libraries::  Building Convenience Libtool Libraries
+* Libtool Modules::             Building Libtool Modules
+* Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
+* LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
+* Libtool Issues::              Common Issues Related to Libtool's Use
+
+\1f
+File: automake.info,  Node: Libtool Concept,  Next: Libtool Libraries,  Up: A Shared Library
+
+8.3.1 The Libtool Concept
+-------------------------
+
+Libtool abstracts shared and static libraries into a unified concept
+henceforth called "libtool libraries".  Libtool libraries are files
+using the `.la' suffix, and can designate a static library, a shared
+library, or maybe both.  Their exact nature cannot be determined until
+`./configure' is run: not all platforms support all kinds of libraries,
+and users can explicitly select which libraries should be built.
+(However the package's maintainers can tune the default, *note The
+`AC_PROG_LIBTOOL' macro: (libtool)AC_PROG_LIBTOOL.)
+
+   Because object files for shared and static libraries must be compiled
+differently, libtool is also used during compilation.  Object files
+built by libtool are called "libtool objects": these are files using
+the `.lo' suffix.  Libtool libraries are built from these libtool
+objects.
+
+   You should not assume anything about the structure of `.la' or `.lo'
+files and how libtool constructs them: this is libtool's concern, and
+the last thing one wants is to learn about libtool's guts.  However the
+existence of these files matters, because they are used as targets and
+dependencies in `Makefile's rules when building libtool libraries.
+There are situations where you may have to refer to these, for instance
+when expressing dependencies for building source files conditionally
+(*note Conditional Libtool Sources::).
+
+   People considering writing a plug-in system, with dynamically loaded
+modules, should look into `libltdl': libtool's dlopening library (*note
+Using libltdl: (libtool)Using libltdl.).  This offers a portable
+dlopening facility to load libtool libraries dynamically, and can also
+achieve static linking where unavoidable.
+
+   Before we discuss how to use libtool with Automake in details, it
+should be noted that the libtool manual also has a section about how to
+use Automake with libtool (*note Using Automake with Libtool:
+(libtool)Using Automake.).
+
+\1f
+File: automake.info,  Node: Libtool Libraries,  Next: Conditional Libtool Libraries,  Prev: Libtool Concept,  Up: A Shared Library
+
+8.3.2 Building Libtool Libraries
+--------------------------------
+
+Automake uses libtool to build libraries declared with the
+`LTLIBRARIES' primary.  Each `_LTLIBRARIES' variable is a list of
+libtool libraries to build.  For instance, to create a libtool library
+named `libgettext.la', and install it in `libdir', write:
+
+     lib_LTLIBRARIES = libgettext.la
+     libgettext_la_SOURCES = gettext.c gettext.h ...
+
+   Automake predefines the variable `pkglibdir', so you can use
+`pkglib_LTLIBRARIES' to install libraries in `$(libdir)/@PACKAGE@/'.
+
+   If `gettext.h' is a public header file that needs to be installed in
+order for people to use the library, it should be declared using a
+`_HEADERS' variable, not in `libgettext_la_SOURCES'.  Headers listed in
+the latter should be internal headers that are not part of the public
+interface.
+
+     lib_LTLIBRARIES = libgettext.la
+     libgettext_la_SOURCES = gettext.c ...
+     include_HEADERS = gettext.h ...
+
+   A package can build and install such a library along with other
+programs that use it.  This dependency should be specified using
+`LDADD'.  The following example builds a program named `hello' that is
+linked with `libgettext.la'.
+
+     lib_LTLIBRARIES = libgettext.la
+     libgettext_la_SOURCES = gettext.c ...
+
+     bin_PROGRAMS = hello
+     hello_SOURCES = hello.c ...
+     hello_LDADD = libgettext.la
+
+Whether `hello' is statically or dynamically linked with
+`libgettext.la' is not yet known: this will depend on the configuration
+of libtool and the capabilities of the host.
+
+\1f
+File: automake.info,  Node: Conditional Libtool Libraries,  Next: Conditional Libtool Sources,  Prev: Libtool Libraries,  Up: A Shared Library
+
+8.3.3 Building Libtool Libraries Conditionally
+----------------------------------------------
+
+Like conditional programs (*note Conditional Programs::), there are two
+main ways to build conditional libraries: using Automake conditionals
+or using Autoconf `AC_SUBST'itutions.
+
+   The important implementation detail you have to be aware of is that
+the place where a library will be installed matters to libtool: it
+needs to be indicated _at link-time_ using the `-rpath' option.
+
+   For libraries whose destination directory is known when Automake
+runs, Automake will automatically supply the appropriate `-rpath'
+option to libtool.  This is the case for libraries listed explicitly in
+some installable `_LTLIBRARIES' variables such as `lib_LTLIBRARIES'.
+
+   However, for libraries determined at configure time (and thus
+mentioned in `EXTRA_LTLIBRARIES'), Automake does not know the final
+installation directory.  For such libraries you must add the `-rpath'
+option to the appropriate `_LDFLAGS' variable by hand.
+
+   The examples below illustrate the differences between these two
+methods.
+
+   Here is an example where `WANTEDLIBS' is an `AC_SUBST'ed variable
+set at `./configure'-time to either `libfoo.la', `libbar.la', both, or
+none.  Although `$(WANTEDLIBS)' appears in the `lib_LTLIBRARIES',
+Automake cannot guess it relates to `libfoo.la' or `libbar.la' at the
+time it creates the link rule for these two libraries.  Therefore the
+`-rpath' argument must be explicitly supplied.
+
+     EXTRA_LTLIBRARIES = libfoo.la libbar.la
+     lib_LTLIBRARIES = $(WANTEDLIBS)
+     libfoo_la_SOURCES = foo.c ...
+     libfoo_la_LDFLAGS = -rpath '$(libdir)'
+     libbar_la_SOURCES = bar.c ...
+     libbar_la_LDFLAGS = -rpath '$(libdir)'
+
+   Here is how the same `Makefile.am' would look using Automake
+conditionals named `WANT_LIBFOO' and `WANT_LIBBAR'.  Now Automake is
+able to compute the `-rpath' setting itself, because it's clear that
+both libraries will end up in `$(libdir)' if they are installed.
+
+     lib_LTLIBRARIES =
+     if WANT_LIBFOO
+     lib_LTLIBRARIES += libfoo.la
+     endif
+     if WANT_LIBBAR
+     lib_LTLIBRARIES += libbar.la
+     endif
+     libfoo_la_SOURCES = foo.c ...
+     libbar_la_SOURCES = bar.c ...
+
+\1f
+File: automake.info,  Node: Conditional Libtool Sources,  Next: Libtool Convenience Libraries,  Prev: Conditional Libtool Libraries,  Up: A Shared Library
+
+8.3.4 Libtool Libraries with Conditional Sources
+------------------------------------------------
+
+Conditional compilation of sources in a library can be achieved in the
+same way as conditional compilation of sources in a program (*note
+Conditional Sources::).  The only difference is that `_LIBADD' should
+be used instead of `_LDADD' and that it should mention libtool objects
+(`.lo' files).
+
+   So, to mimic the `hello' example from *note Conditional Sources::,
+we could build a `libhello.la' library using either `hello-linux.c' or
+`hello-generic.c' with the following `Makefile.am'.
+
+     lib_LTLIBRARIES = libhello.la
+     libhello_la_SOURCES = hello-common.c
+     EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
+     libhello_la_LIBADD = $(HELLO_SYSTEM)
+     libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
+
+And make sure `configure' defines `HELLO_SYSTEM' as either
+`hello-linux.lo' or `hello-generic.lo'.
+
+   Or we could simply use an Automake conditional as follows.
+
+     lib_LTLIBRARIES = libhello.la
+     libhello_la_SOURCES = hello-common.c
+     if LINUX
+     libhello_la_SOURCES += hello-linux.c
+     else
+     libhello_la_SOURCES += hello-generic.c
+     endif
+
+\1f
+File: automake.info,  Node: Libtool Convenience Libraries,  Next: Libtool Modules,  Prev: Conditional Libtool Sources,  Up: A Shared Library
+
+8.3.5 Libtool Convenience Libraries
+-----------------------------------
+
+Sometimes you want to build libtool libraries that should not be
+installed.  These are called "libtool convenience libraries" and are
+typically used to encapsulate many sublibraries, later gathered into
+one big installed library.
+
+   Libtool convenience libraries are declared by directory-less
+variables such as `noinst_LTLIBRARIES', `check_LTLIBRARIES', or even
+`EXTRA_LTLIBRARIES'.  Unlike installed libtool libraries they do not
+need an `-rpath' flag at link time (actually this is the only
+difference).
+
+   Convenience libraries listed in `noinst_LTLIBRARIES' are always
+built.  Those listed in `check_LTLIBRARIES' are built only upon `make
+check'.  Finally, libraries listed in `EXTRA_LTLIBRARIES' are never
+built explicitly: Automake outputs rules to build them, but if the
+library does not appear as a Makefile dependency anywhere it won't be
+built (this is why `EXTRA_LTLIBRARIES' is used for conditional
+compilation).
+
+   Here is a sample setup merging libtool convenience libraries from
+subdirectories into one main `libtop.la' library.
+
+     # -- Top-level Makefile.am --
+     SUBDIRS = sub1 sub2 ...
+     lib_LTLIBRARIES = libtop.la
+     libtop_la_SOURCES =
+     libtop_la_LIBADD = \
+       sub1/libsub1.la \
+       sub2/libsub2.la \
+       ...
+
+     # -- sub1/Makefile.am --
+     noinst_LTLIBRARIES = libsub1.la
+     libsub1_la_SOURCES = ...
+
+     # -- sub2/Makefile.am --
+     # showing nested convenience libraries
+     SUBDIRS = sub2.1 sub2.2 ...
+     noinst_LTLIBRARIES = libsub2.la
+     libsub2_la_SOURCES =
+     libsub2_la_LIBADD = \
+       sub21/libsub21.la \
+       sub22/libsub22.la \
+       ...
+
+   When using such setup, beware that `automake' will assume
+`libtop.la' is to be linked with the C linker.  This is because
+`libtop_la_SOURCES' is empty, so `automake' picks C as default
+language.  If `libtop_la_SOURCES' was not empty, `automake' would
+select the linker as explained in *note How the Linker is Chosen::.
+
+   If one of the sublibraries contains non-C source, it is important
+that the appropriate linker be chosen.  One way to achieve this is to
+pretend that there is such a non-C file among the sources of the
+library, thus forcing `automake' to select the appropriate linker.
+Here is the top-level `Makefile' of our example updated to force C++
+linking.
+
+     SUBDIRS = sub1 sub2 ...
+     lib_LTLIBRARIES = libtop.la
+     libtop_la_SOURCES =
+     # Dummy C++ source to cause C++ linking.
+     nodist_EXTRA_libtop_la_SOURCES = dummy.cxx
+     libtop_la_LIBADD = \
+       sub1/libsub1.la \
+       sub2/libsub2.la \
+       ...
+
+   `EXTRA_*_SOURCES' variables are used to keep track of source files
+that might be compiled (this is mostly useful when doing conditional
+compilation using `AC_SUBST', *note Conditional Libtool Sources::), and
+the `nodist_' prefix means the listed sources are not to be distributed
+(*note Program and Library Variables::).  In effect the file
+`dummy.cxx' does not need to exist in the source tree.  Of course if
+you have some real source file to list in `libtop_la_SOURCES' there is
+no point in cheating with `nodist_EXTRA_libtop_la_SOURCES'.
+
+\1f
+File: automake.info,  Node: Libtool Modules,  Next: Libtool Flags,  Prev: Libtool Convenience Libraries,  Up: A Shared Library
+
+8.3.6 Libtool Modules
+---------------------
+
+These are libtool libraries meant to be dlopened.  They are indicated
+to libtool by passing `-module' at link-time.
+
+     pkglib_LTLIBRARIES = mymodule.la
+     mymodule_la_SOURCES = doit.c
+     mymodule_la_LDFLAGS = -module
+
+   Ordinarily, Automake requires that a library's name start with
+`lib'.  However, when building a dynamically loadable module you might
+wish to use a "nonstandard" name.  Automake will not complain about
+such nonstandard names if it knows the library being built is a libtool
+module, i.e., if `-module' explicitly appears in the library's
+`_LDFLAGS' variable (or in the common `AM_LDFLAGS' variable when no
+per-library `_LDFLAGS' variable is defined).
+
+   As always, `AC_SUBST' variables are black boxes to Automake since
+their values are not yet known when `automake' is run.  Therefore if
+`-module' is set via such a variable, Automake cannot notice it and
+will proceed as if the library was an ordinary libtool library, with
+strict naming.
+
+   If `mymodule_la_SOURCES' is not specified, then it defaults to the
+single file `mymodule.c' (*note Default _SOURCES::).
+
+\1f
+File: automake.info,  Node: Libtool Flags,  Next: LTLIBOBJS,  Prev: Libtool Modules,  Up: A Shared Library
+
+8.3.7 `_LIBADD', `_LDFLAGS', and `_LIBTOOLFLAGS'
+------------------------------------------------
+
+As shown in previous sections, the `LIBRARY_LIBADD' variable should be
+used to list extra libtool objects (`.lo' files) or libtool libraries
+(`.la') to add to LIBRARY.
+
+   The `LIBRARY_LDFLAGS' variable is the place to list additional
+libtool linking flags, such as `-version-info', `-static', and a lot
+more.  *Note Link mode: (libtool)Link mode.
+
+   The `libtool' command has two kinds of options: mode-specific
+options and generic options.  Mode-specific options such as the
+aforementioned linking flags should be lumped with the other flags
+passed to the tool invoked by `libtool' (hence the use of
+`LIBRARY_LDFLAGS' for libtool linking flags).  Generic options include
+`--tag=TAG' and `--silent' (*note Invoking `libtool': (libtool)Invoking
+libtool. for more options) should appear before the mode selection on
+the command line; in `Makefile.am's they should be listed in the
+`LIBRARY_LIBTOOLFLAGS' variable.
+
+   If `LIBRARY_LIBTOOLFLAGS' is not defined, then the variable
+`AM_LIBTOOLFLAGS' is used instead.
+
+   These flags are passed to libtool after the `--tag=TAG' option
+computed by Automake (if any), so `LIBRARY_LIBTOOLFLAGS' (or
+`AM_LIBTOOLFLAGS') is a good place to override or supplement the
+`--tag=TAG' setting.
+
+   The libtool rules also use a `LIBTOOLFLAGS' variable that should not
+be set in `Makefile.am': this is a user variable (*note Flag Variables
+Ordering::.  It allows users to run `make LIBTOOLFLAGS=--silent', for
+instance.  Note that the verbosity of `libtool' can also be influenced
+with the Automake `silent-rules' option (*note Options::).
+
+\1f
+File: automake.info,  Node: LTLIBOBJS,  Next: Libtool Issues,  Prev: Libtool Flags,  Up: A Shared Library
+
+8.3.8 `LTLIBOBJS' and `LTALLOCA'
+--------------------------------
+
+Where an ordinary library might include `$(LIBOBJS)' or `$(ALLOCA)'
+(*note LIBOBJS::), a libtool library must use `$(LTLIBOBJS)' or
+`$(LTALLOCA)'.  This is required because the object files that libtool
+operates on do not necessarily end in `.o'.
+
+   Nowadays, the computation of `LTLIBOBJS' from `LIBOBJS' is performed
+automatically by Autoconf (*note `AC_LIBOBJ' vs. `LIBOBJS':
+(autoconf)AC_LIBOBJ vs LIBOBJS.).
+
+\1f
+File: automake.info,  Node: Libtool Issues,  Prev: LTLIBOBJS,  Up: A Shared Library
+
+8.3.9 Common Issues Related to Libtool's Use
+--------------------------------------------
+
+* Menu:
+
+* Error required file ltmain.sh not found::  The need to run libtoolize
+* Objects created both with libtool and without::  Avoid a specific build race
+
+\1f
+File: automake.info,  Node: Error required file ltmain.sh not found,  Next: Objects created both with libtool and without,  Up: Libtool Issues
+
+8.3.9.1 Error: `required file `./ltmain.sh' not found'
+......................................................
+
+Libtool comes with a tool called `libtoolize' that will install
+libtool's supporting files into a package.  Running this command will
+install `ltmain.sh'.  You should execute it before `aclocal' and
+`automake'.
+
+   People upgrading old packages to newer autotools are likely to face
+this issue because older Automake versions used to call `libtoolize'.
+Therefore old build scripts do not call `libtoolize'.
+
+   Since Automake 1.6, it has been decided that running `libtoolize'
+was none of Automake's business.  Instead, that functionality has been
+moved into the `autoreconf' command (*note Using `autoreconf':
+(autoconf)autoreconf Invocation.).  If you do not want to remember what
+to run and when, just learn the `autoreconf' command.  Hopefully,
+replacing existing `bootstrap.sh' or `autogen.sh' scripts by a call to
+`autoreconf' should also free you from any similar incompatible change
+in the future.
+
+\1f
+File: automake.info,  Node: Objects created both with libtool and without,  Prev: Error required file ltmain.sh not found,  Up: Libtool Issues
+
+8.3.9.2 Objects `created with both libtool and without'
+.......................................................
+
+Sometimes, the same source file is used both to build a libtool library
+and to build another non-libtool target (be it a program or another
+library).
+
+   Let's consider the following `Makefile.am'.
+
+     bin_PROGRAMS = prog
+     prog_SOURCES = prog.c foo.c ...
+
+     lib_LTLIBRARIES = libfoo.la
+     libfoo_la_SOURCES = foo.c ...
+
+(In this trivial case the issue could be avoided by linking `libfoo.la'
+with `prog' instead of listing `foo.c' in `prog_SOURCES'.  But let's
+assume we really want to keep `prog' and `libfoo.la' separate.)
+
+   Technically, it means that we should build `foo.$(OBJEXT)' for
+`prog', and `foo.lo' for `libfoo.la'.  The problem is that in the
+course of creating `foo.lo', libtool may erase (or replace)
+`foo.$(OBJEXT)', and this cannot be avoided.
+
+   Therefore, when Automake detects this situation it will complain
+with a message such as
+     object `foo.$(OBJEXT)' created both with libtool and without
+
+   A workaround for this issue is to ensure that these two objects get
+different basenames.  As explained in *note Renamed Objects::, this
+happens automatically when per-targets flags are used.
+
+     bin_PROGRAMS = prog
+     prog_SOURCES = prog.c foo.c ...
+     prog_CFLAGS = $(AM_CFLAGS)
+
+     lib_LTLIBRARIES = libfoo.la
+     libfoo_la_SOURCES = foo.c ...
+
+Adding `prog_CFLAGS = $(AM_CFLAGS)' is almost a no-op, because when the
+`prog_CFLAGS' is defined, it is used instead of `AM_CFLAGS'.  However
+as a side effect it will cause `prog.c' and `foo.c' to be compiled as
+`prog-prog.$(OBJEXT)' and `prog-foo.$(OBJEXT)', which solves the issue.
+
+\1f
+File: automake.info,  Node: Program and Library Variables,  Next: Default _SOURCES,  Prev: A Shared Library,  Up: Programs
+
+8.4 Program and Library Variables
+=================================
+
+Associated with each program is a collection of variables that can be
+used to modify how that program is built.  There is a similar list of
+such variables for each library.  The canonical name of the program (or
+library) is used as a base for naming these variables.
+
+   In the list below, we use the name "maude" to refer to the program or
+library.  In your `Makefile.am' you would replace this with the
+canonical name of your program.  This list also refers to "maude" as a
+program, but in general the same rules apply for both static and dynamic
+libraries; the documentation below notes situations where programs and
+libraries differ.
+
+`maude_SOURCES'
+     This variable, if it exists, lists all the source files that are
+     compiled to build the program.  These files are added to the
+     distribution by default.  When building the program, Automake will
+     cause each source file to be compiled to a single `.o' file (or
+     `.lo' when using libtool).  Normally these object files are named
+     after the source file, but other factors can change this.  If a
+     file in the `_SOURCES' variable has an unrecognized extension,
+     Automake will do one of two things with it.  If a suffix rule
+     exists for turning files with the unrecognized extension into `.o'
+     files, then `automake' will treat this file as it will any other
+     source file (*note Support for Other Languages::).  Otherwise, the
+     file will be ignored as though it were a header file.
+
+     The prefixes `dist_' and `nodist_' can be used to control whether
+     files listed in a `_SOURCES' variable are distributed.  `dist_' is
+     redundant, as sources are distributed by default, but it can be
+     specified for clarity if desired.
+
+     It is possible to have both `dist_' and `nodist_' variants of a
+     given `_SOURCES' variable at once; this lets you easily distribute
+     some files and not others, for instance:
+
+          nodist_maude_SOURCES = nodist.c
+          dist_maude_SOURCES = dist-me.c
+
+     By default the output file (on Unix systems, the `.o' file) will
+     be put into the current build directory.  However, if the option
+     `subdir-objects' is in effect in the current directory then the
+     `.o' file will be put into the subdirectory named after the source
+     file.  For instance, with `subdir-objects' enabled,
+     `sub/dir/file.c' will be compiled to `sub/dir/file.o'.  Some
+     people prefer this mode of operation.  You can specify
+     `subdir-objects' in `AUTOMAKE_OPTIONS' (*note Options::).  
+
+`EXTRA_maude_SOURCES'
+     Automake needs to know the list of files you intend to compile
+     _statically_.  For one thing, this is the only way Automake has of
+     knowing what sort of language support a given `Makefile.in'
+     requires.  (1)  This means that, for example, you can't put a
+     configure substitution like `@my_sources@' into a `_SOURCES'
+     variable.  If you intend to conditionally compile source files and
+     use `configure' to substitute the appropriate object names into,
+     e.g., `_LDADD' (see below), then you should list the corresponding
+     source files in the `EXTRA_' variable.
+
+     This variable also supports `dist_' and `nodist_' prefixes.  For
+     instance, `nodist_EXTRA_maude_SOURCES' would list extra sources
+     that may need to be built, but should not be distributed.
+
+`maude_AR'
+     A static library is created by default by invoking `$(AR)
+     $(ARFLAGS)' followed by the name of the library and then the
+     objects being put into the library.  You can override this by
+     setting the `_AR' variable.  This is usually used with C++; some
+     C++ compilers require a special invocation in order to instantiate
+     all the templates that should go into a library.  For instance,
+     the SGI C++ compiler likes this variable set like so:
+          libmaude_a_AR = $(CXX) -ar -o
+
+`maude_LIBADD'
+     Extra objects can be added to a _library_ using the `_LIBADD'
+     variable.  For instance, this should be used for objects
+     determined by `configure' (*note A Library::).
+
+     In the case of libtool libraries, `maude_LIBADD' can also refer to
+     other libtool libraries.
+
+`maude_LDADD'
+     Extra objects (`*.$(OBJEXT)') and libraries (`*.a', `*.la') can be
+     added to a _program_ by listing them in the `_LDADD' variable.
+     For instance, this should be used for objects determined by
+     `configure' (*note Linking::).
+
+     `_LDADD' and `_LIBADD' are inappropriate for passing
+     program-specific linker flags (except for `-l', `-L', `-dlopen'
+     and `-dlpreopen').  Use the `_LDFLAGS' variable for this purpose.
+
+     For instance, if your `configure.ac' uses `AC_PATH_XTRA', you
+     could link your program against the X libraries like so:
+
+          maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
+
+     We recommend that you use `-l' and `-L' only when referring to
+     third-party libraries, and give the explicit file names of any
+     library built by your package.  Doing so will ensure that
+     `maude_DEPENDENCIES' (see below) is correctly defined by default.
+
+`maude_LDFLAGS'
+     This variable is used to pass extra flags to the link step of a
+     program or a shared library.  It overrides the `AM_LDFLAGS'
+     variable.
+
+`maude_LIBTOOLFLAGS'
+     This variable is used to pass extra options to `libtool'.  It
+     overrides the `AM_LIBTOOLFLAGS' variable.  These options are
+     output before `libtool''s `--mode=MODE' option, so they should not
+     be mode-specific options (those belong to the compiler or linker
+     flags).  *Note Libtool Flags::.
+
+`maude_DEPENDENCIES'
+`EXTRA_maude_DEPENDENCIES'
+     It is also occasionally useful to have a target (program or
+     library) depend on some other file that is not actually part of
+     that target.  This can be done using the `_DEPENDENCIES' variable.
+     Each target depends on the contents of such a variable, but no
+     further interpretation is done.
+
+     Since these dependencies are associated to the link rule used to
+     create the programs they should normally list files used by the
+     link command.  That is `*.$(OBJEXT)', `*.a', or `*.la' files for
+     programs; `*.lo' and `*.la' files for Libtool libraries; and
+     `*.$(OBJEXT)' files for static libraries.  In rare cases you may
+     need to add other kinds of files such as linker scripts, but
+     _listing a source file in `_DEPENDENCIES' is wrong_.  If some
+     source file needs to be built before all the components of a
+     program are built, consider using the `BUILT_SOURCES' variable
+     (*note Sources::).
+
+     If `_DEPENDENCIES' is not supplied, it is computed by Automake.
+     The automatically-assigned value is the contents of `_LDADD' or
+     `_LIBADD', with most configure substitutions, `-l', `-L',
+     `-dlopen' and `-dlpreopen' options removed.  The configure
+     substitutions that are left in are only `$(LIBOBJS)' and
+     `$(ALLOCA)'; these are left because it is known that they will not
+     cause an invalid value for `_DEPENDENCIES' to be generated.
+
+     `_DEPENDENCIES' is more likely used to perform conditional
+     compilation using an `AC_SUBST' variable that contains a list of
+     objects.  *Note Conditional Sources::, and *note Conditional
+     Libtool Sources::.
+
+     The `EXTRA_*_DEPENDENCIES' variable may be useful for cases where
+     you merely want to augment the `automake'-generated
+     `_DEPENDENCIES' variable rather than replacing it.
+
+`maude_LINK'
+     You can override the linker on a per-program basis.  By default the
+     linker is chosen according to the languages used by the program.
+     For instance, a program that includes C++ source code would use
+     the C++ compiler to link.  The `_LINK' variable must hold the name
+     of a command that can be passed all the `.o' file names and
+     libraries to link against as arguments.  Note that the name of the
+     underlying program is _not_ passed to `_LINK'; typically one uses
+     `$@':
+
+          maude_LINK = $(CCLD) -magic -o $@
+
+     If a `_LINK' variable is not supplied, it may still be generated
+     and used by Automake due to the use of per-target link flags such
+     as `_CFLAGS', `_LDFLAGS' or `_LIBTOOLFLAGS', in cases where they
+     apply.
+
+`maude_CCASFLAGS'
+`maude_CFLAGS'
+`maude_CPPFLAGS'
+`maude_CXXFLAGS'
+`maude_FFLAGS'
+`maude_GCJFLAGS'
+`maude_LFLAGS'
+`maude_OBJCFLAGS'
+`maude_OBJCXXFLAGS'
+`maude_RFLAGS'
+`maude_UPCFLAGS'
+`maude_YFLAGS'
+     Automake allows you to set compilation flags on a per-program (or
+     per-library) basis.  A single source file can be included in
+     several programs, and it will potentially be compiled with
+     different flags for each program.  This works for any language
+     directly supported by Automake.  These "per-target compilation
+     flags" are `_CCASFLAGS', `_CFLAGS', `_CPPFLAGS', `_CXXFLAGS',
+     `_FFLAGS', `_GCJFLAGS', `_LFLAGS', `_OBJCFLAGS', `_OBJCXXFLAGS',
+     `_RFLAGS', `_UPCFLAGS', and `_YFLAGS'.
+
+     When using a per-target compilation flag, Automake will choose a
+     different name for the intermediate object files.  Ordinarily a
+     file like `sample.c' will be compiled to produce `sample.o'.
+     However, if the program's `_CFLAGS' variable is set, then the
+     object file will be named, for instance, `maude-sample.o'.  (See
+     also *note Renamed Objects::.)  The use of per-target compilation
+     flags with C sources requires that the macro `AM_PROG_CC_C_O' be
+     called from `configure.ac'.
+
+     In compilations with per-target flags, the ordinary `AM_' form of
+     the flags variable is _not_ automatically included in the
+     compilation (however, the user form of the variable _is_ included).
+     So for instance, if you want the hypothetical `maude' compilations
+     to also use the value of `AM_CFLAGS', you would need to write:
+
+          maude_CFLAGS = ... your flags ... $(AM_CFLAGS)
+
+     *Note Flag Variables Ordering::, for more discussion about the
+     interaction between user variables, `AM_' shadow variables, and
+     per-target variables.
+
+`maude_SHORTNAME'
+     On some platforms the allowable file names are very short.  In
+     order to support these systems and per-target compilation flags at
+     the same time, Automake allows you to set a "short name" that will
+     influence how intermediate object files are named.  For instance,
+     in the following example,
+
+          bin_PROGRAMS = maude
+          maude_CPPFLAGS = -DSOMEFLAG
+          maude_SHORTNAME = m
+          maude_SOURCES = sample.c ...
+
+     the object file would be named `m-sample.o' rather than
+     `maude-sample.o'.
+
+     This facility is rarely needed in practice, and we recommend
+     avoiding it until you find it is required.
+
+   ---------- Footnotes ----------
+
+   (1) There are other, more obscure reasons for this limitation as
+well.
+
+\1f
+File: automake.info,  Node: Default _SOURCES,  Next: LIBOBJS,  Prev: Program and Library Variables,  Up: Programs
+
+8.5 Default `_SOURCES'
+======================
+
+`_SOURCES' variables are used to specify source files of programs
+(*note A Program::), libraries (*note A Library::), and Libtool
+libraries (*note A Shared Library::).
+
+   When no such variable is specified for a target, Automake will define
+one itself.  The default is to compile a single C file whose base name
+is the name of the target itself, with any extension replaced by
+`AM_DEFAULT_SOURCE_EXT', which defaults to `.c'.
+
+   For example if you have the following somewhere in your
+`Makefile.am' with no corresponding `libfoo_a_SOURCES':
+
+     lib_LIBRARIES = libfoo.a sub/libc++.a
+
+`libfoo.a' will be built using a default source file named `libfoo.c',
+and `sub/libc++.a' will be built from `sub/libc++.c'.  (In older
+versions `sub/libc++.a' would be built from `sub_libc___a.c', i.e., the
+default source was the canonized name of the target, with `.c' appended.
+We believe the new behavior is more sensible, but for backward
+compatibility `automake' will use the old name if a file or a rule with
+that name exists and `AM_DEFAULT_SOURCE_EXT' is not used.)
+
+   Default sources are mainly useful in test suites, when building many
+test programs each from a single source.  For instance, in
+
+     check_PROGRAMS = test1 test2 test3
+     AM_DEFAULT_SOURCE_EXT = .cpp
+
+`test1', `test2', and `test3' will be built from `test1.cpp',
+`test2.cpp', and `test3.cpp'.  Without the last line, they will be
+built from `test1.c', `test2.c', and `test3.c'.
+
+   Another case where this is convenient is building many Libtool
+modules (`moduleN.la'), each defined in its own file (`moduleN.c').
+
+     AM_LDFLAGS = -module
+     lib_LTLIBRARIES = module1.la module2.la module3.la
+
+   Finally, there is one situation where this default source computation
+needs to be avoided: when a target should not be built from sources.
+We already saw such an example in *note true::; this happens when all
+the constituents of a target have already been compiled and just need
+to be combined using a `_LDADD' variable.  Then it is necessary to
+define an empty `_SOURCES' variable, so that `automake' does not
+compute a default.
+
+     bin_PROGRAMS = target
+     target_SOURCES =
+     target_LDADD = libmain.a libmisc.a
+
+\1f
+File: automake.info,  Node: LIBOBJS,  Next: Program Variables,  Prev: Default _SOURCES,  Up: Programs
+
+8.6 Special handling for `LIBOBJS' and `ALLOCA'
+===============================================
+
+The `$(LIBOBJS)' and `$(ALLOCA)' variables list object files that
+should be compiled into the project to provide an implementation for
+functions that are missing or broken on the host system.  They are
+substituted by `configure'.
+
+   These variables are defined by Autoconf macros such as `AC_LIBOBJ',
+`AC_REPLACE_FUNCS' (*note Generic Function Checks: (autoconf)Generic
+Functions.), or `AC_FUNC_ALLOCA' (*note Particular Function Checks:
+(autoconf)Particular Functions.).  Many other Autoconf macros call
+`AC_LIBOBJ' or `AC_REPLACE_FUNCS' to populate `$(LIBOBJS)'.
+
+   Using these variables is very similar to doing conditional
+compilation using `AC_SUBST' variables, as described in *note
+Conditional Sources::.  That is, when building a program, `$(LIBOBJS)'
+and `$(ALLOCA)' should be added to the associated `*_LDADD' variable,
+or to the `*_LIBADD' variable when building a library.  However there
+is no need to list the corresponding sources in `EXTRA_*_SOURCES' nor
+to define `*_DEPENDENCIES'.  Automake automatically adds `$(LIBOBJS)'
+and `$(ALLOCA)' to the dependencies, and it will discover the list of
+corresponding source files automatically (by tracing the invocations of
+the `AC_LIBSOURCE' Autoconf macros).  If you have already defined
+`*_DEPENDENCIES' explicitly for an unrelated reason, then you either
+need to add these variables manually, or use `EXTRA_*_DEPENDENCIES'
+instead of `*_DEPENDENCIES'.
+
+   These variables are usually used to build a portability library that
+is linked with all the programs of the project.  We now review a sample
+setup.  First, `configure.ac' contains some checks that affect either
+`LIBOBJS' or `ALLOCA'.
+
+     # configure.ac
+     ...
+     AC_CONFIG_LIBOBJ_DIR([lib])
+     ...
+     AC_FUNC_MALLOC             dnl May add malloc.$(OBJEXT) to LIBOBJS
+     AC_FUNC_MEMCMP             dnl May add memcmp.$(OBJEXT) to LIBOBJS
+     AC_REPLACE_FUNCS([strdup]) dnl May add strdup.$(OBJEXT) to LIBOBJS
+     AC_FUNC_ALLOCA             dnl May add alloca.$(OBJEXT) to ALLOCA
+     ...
+     AC_CONFIG_FILES([
+       lib/Makefile
+       src/Makefile
+     ])
+     AC_OUTPUT
+
+   The `AC_CONFIG_LIBOBJ_DIR' tells Autoconf that the source files of
+these object files are to be found in the `lib/' directory.  Automake
+can also use this information, otherwise it expects the source files
+are to be in the directory where the `$(LIBOBJS)' and `$(ALLOCA)'
+variables are used.
+
+   The `lib/' directory should therefore contain `malloc.c',
+`memcmp.c', `strdup.c', `alloca.c'.  Here is its `Makefile.am':
+
+     # lib/Makefile.am
+
+     noinst_LIBRARIES = libcompat.a
+     libcompat_a_SOURCES =
+     libcompat_a_LIBADD = $(LIBOBJS) $(ALLOCA)
+
+   The library can have any name, of course, and anyway it is not going
+to be installed: it just holds the replacement versions of the missing
+or broken functions so we can later link them in.  Many projects also
+include extra functions, specific to the project, in that library: they
+are simply added on the `_SOURCES' line.
+
+   There is a small trap here, though: `$(LIBOBJS)' and `$(ALLOCA)'
+might be empty, and building an empty library is not portable.  You
+should ensure that there is always something to put in `libcompat.a'.
+Most projects will also add some utility functions in that directory,
+and list them in `libcompat_a_SOURCES', so in practice `libcompat.a'
+cannot be empty.
+
+   Finally here is how this library could be used from the `src/'
+directory.
+
+     # src/Makefile.am
+
+     # Link all programs in this directory with libcompat.a
+     LDADD = ../lib/libcompat.a
+
+     bin_PROGRAMS = tool1 tool2 ...
+     tool1_SOURCES = ...
+     tool2_SOURCES = ...
+
+   When option `subdir-objects' is not used, as in the above example,
+the variables `$(LIBOBJS)' or `$(ALLOCA)' can only be used in the
+directory where their sources lie.  E.g., here it would be wrong to use
+`$(LIBOBJS)' or `$(ALLOCA)' in `src/Makefile.am'.  However if both
+`subdir-objects' and `AC_CONFIG_LIBOBJ_DIR' are used, it is OK to use
+these variables in other directories.  For instance `src/Makefile.am'
+could be changed as follows.
+
+     # src/Makefile.am
+
+     AUTOMAKE_OPTIONS = subdir-objects
+     LDADD = $(LIBOBJS) $(ALLOCA)
+
+     bin_PROGRAMS = tool1 tool2 ...
+     tool1_SOURCES = ...
+     tool2_SOURCES = ...
+
+   Because `$(LIBOBJS)' and `$(ALLOCA)' contain object file names that
+end with `.$(OBJEXT)', they are not suitable for Libtool libraries
+(where the expected object extension is `.lo'): `LTLIBOBJS' and
+`LTALLOCA' should be used instead.
+
+   `LTLIBOBJS' is defined automatically by Autoconf and should not be
+defined by hand (as in the past), however at the time of writing
+`LTALLOCA' still needs to be defined from `ALLOCA' manually.  *Note
+`AC_LIBOBJ' vs. `LIBOBJS': (autoconf)AC_LIBOBJ vs LIBOBJS.
+
+\1f
+File: automake.info,  Node: Program Variables,  Next: Yacc and Lex,  Prev: LIBOBJS,  Up: Programs
+
+8.7 Variables used when building a program
+==========================================
+
+Occasionally it is useful to know which `Makefile' variables Automake
+uses for compilations, and in which order (*note Flag Variables
+Ordering::); for instance, you might need to do your own compilation in
+some special cases.
+
+   Some variables are inherited from Autoconf; these are `CC',
+`CFLAGS', `CPPFLAGS', `DEFS', `LDFLAGS', and `LIBS'.  
+
+   There are some additional variables that Automake defines on its own:
+
+`AM_CPPFLAGS'
+     The contents of this variable are passed to every compilation that
+     invokes the C preprocessor; it is a list of arguments to the
+     preprocessor.  For instance, `-I' and `-D' options should be
+     listed here.
+
+     Automake already provides some `-I' options automatically, in a
+     separate variable that is also passed to every compilation that
+     invokes the C preprocessor.  In particular it generates `-I.',
+     `-I$(srcdir)', and a `-I' pointing to the directory holding
+     `config.h' (if you've used `AC_CONFIG_HEADERS' or
+     `AM_CONFIG_HEADER').  You can disable the default `-I' options
+     using the `nostdinc' option.
+
+     When a file to be included is generated during the build and not
+     part of a distribution tarball, its location is under
+     `$(builddir)', not under `$(srcdir)'.  This matters especially for
+     packages that use header files placed in sub-directories and want
+     to allow builds outside the source tree (*note VPATH Builds::). In
+     that case we recommend to use a pair of `-I' options, such as,
+     e.g., `-Isome/subdir -I$(srcdir)/some/subdir' or
+     `-I$(top_builddir)/some/subdir -I$(top_srcdir)/some/subdir'.  Note
+     that the reference to the build tree should come before the
+     reference to the source tree, so that accidentally leftover
+     generated files in the source directory are ignored.
+
+     `AM_CPPFLAGS' is ignored in preference to a per-executable (or
+     per-library) `_CPPFLAGS' variable if it is defined.
+
+`INCLUDES'
+     This does the same job as `AM_CPPFLAGS' (or any per-target
+     `_CPPFLAGS' variable if it is used).  It is an older name for the
+     same functionality.  This variable is deprecated; we suggest using
+     `AM_CPPFLAGS' and per-target `_CPPFLAGS' instead.
+
+`AM_CFLAGS'
+     This is the variable the `Makefile.am' author can use to pass in
+     additional C compiler flags.  It is more fully documented
+     elsewhere.  In some situations, this is not used, in preference to
+     the per-executable (or per-library) `_CFLAGS'.
+
+`COMPILE'
+     This is the command used to actually compile a C source file.  The
+     file name is appended to form the complete command line.
+
+`AM_LDFLAGS'
+     This is the variable the `Makefile.am' author can use to pass in
+     additional linker flags.  In some situations, this is not used, in
+     preference to the per-executable (or per-library) `_LDFLAGS'.
+
+`LINK'
+     This is the command used to actually link a C program.  It already
+     includes `-o $@' and the usual variable references (for instance,
+     `CFLAGS'); it takes as "arguments" the names of the object files
+     and libraries to link in.  This variable is not used when the
+     linker is overridden with a per-target `_LINK' variable or
+     per-target flags cause Automake to define such a `_LINK' variable.
+
+\1f
+File: automake.info,  Node: Yacc and Lex,  Next: C++ Support,  Prev: Program Variables,  Up: Programs
+
+8.8 Yacc and Lex support
+========================
+
+Automake has somewhat idiosyncratic support for Yacc and Lex.
+
+   Automake assumes that the `.c' file generated by `yacc' (or `lex')
+should be named using the basename of the input file.  That is, for a
+yacc source file `foo.y', Automake will cause the intermediate file to
+be named `foo.c' (as opposed to `y.tab.c', which is more traditional).
+
+   The extension of a yacc source file is used to determine the
+extension of the resulting C or C++ source and header files.  Note that
+header files are generated only when the `-d' Yacc option is used; see
+below for more information about this flag, and how to specify it.
+Files with the extension `.y' will thus be turned into `.c' sources and
+`.h' headers; likewise, `.yy' will become `.cc' and `.hh', `.y++' will
+become `c++' and `h++', `.yxx' will become `.cxx' and `.hxx', and
+`.ypp' will become `.cpp' and `.hpp'.
+
+   Similarly, lex source files can be used to generate C or C++; the
+extensions `.l', `.ll', `.l++', `.lxx', and `.lpp' are recognized.
+
+   You should never explicitly mention the intermediate (C or C++) file
+in any `SOURCES' variable; only list the source file.
+
+   The intermediate files generated by `yacc' (or `lex') will be
+included in any distribution that is made.  That way the user doesn't
+need to have `yacc' or `lex'.
+
+   If a `yacc' source file is seen, then your `configure.ac' must
+define the variable `YACC'.  This is most easily done by invoking the
+macro `AC_PROG_YACC' (*note Particular Program Checks:
+(autoconf)Particular Programs.).
+
+   When `yacc' is invoked, it is passed `AM_YFLAGS' and `YFLAGS'.  The
+latter is a user variable and the former is intended for the
+`Makefile.am' author.
+
+   `AM_YFLAGS' is usually used to pass the `-d' option to `yacc'.
+Automake knows what this means and will automatically adjust its rules
+to update and distribute the header file built by `yacc -d'(1).  What
+Automake cannot guess, though, is where this header will be used: it is
+up to you to ensure the header gets built before it is first used.
+Typically this is necessary in order for dependency tracking to work
+when the header is included by another file.  The common solution is
+listing the header file in `BUILT_SOURCES' (*note Sources::) as follows.
+
+     BUILT_SOURCES = parser.h
+     AM_YFLAGS = -d
+     bin_PROGRAMS = foo
+     foo_SOURCES = ... parser.y ...
+
+   If a `lex' source file is seen, then your `configure.ac' must define
+the variable `LEX'.  You can use `AC_PROG_LEX' to do this (*note
+Particular Program Checks: (autoconf)Particular Programs.), but using
+`AM_PROG_LEX' macro (*note Macros::) is recommended.
+
+   When `lex' is invoked, it is passed `AM_LFLAGS' and `LFLAGS'.  The
+latter is a user variable and the former is intended for the
+`Makefile.am' author.
+
+   When `AM_MAINTAINER_MODE' (*note maintainer-mode::) is used, the
+rebuild rule for distributed Yacc and Lex sources are only used when
+`maintainer-mode' is enabled, or when the files have been erased.
+
+   When `lex' or `yacc' sources are used, `automake -i' automatically
+installs an auxiliary program called `ylwrap' in your package (*note
+Auxiliary Programs::).  This program is used by the build rules to
+rename the output of these tools, and makes it possible to include
+multiple `yacc' (or `lex') source files in a single directory.  (This
+is necessary because yacc's output file name is fixed, and a parallel
+make could conceivably invoke more than one instance of `yacc'
+simultaneously.)
+
+   For `yacc', simply managing locking is insufficient.  The output of
+`yacc' always uses the same symbol names internally, so it isn't
+possible to link two `yacc' parsers into the same executable.
+
+   We recommend using the following renaming hack used in `gdb':
+     #define yymaxdepth c_maxdepth
+     #define yyparse c_parse
+     #define yylex   c_lex
+     #define yyerror c_error
+     #define yylval  c_lval
+     #define yychar  c_char
+     #define yydebug c_debug
+     #define yypact  c_pact
+     #define yyr1    c_r1
+     #define yyr2    c_r2
+     #define yydef   c_def
+     #define yychk   c_chk
+     #define yypgo   c_pgo
+     #define yyact   c_act
+     #define yyexca  c_exca
+     #define yyerrflag c_errflag
+     #define yynerrs c_nerrs
+     #define yyps    c_ps
+     #define yypv    c_pv
+     #define yys     c_s
+     #define yy_yys  c_yys
+     #define yystate c_state
+     #define yytmp   c_tmp
+     #define yyv     c_v
+     #define yy_yyv  c_yyv
+     #define yyval   c_val
+     #define yylloc  c_lloc
+     #define yyreds  c_reds
+     #define yytoks  c_toks
+     #define yylhs   c_yylhs
+     #define yylen   c_yylen
+     #define yydefred c_yydefred
+     #define yydgoto  c_yydgoto
+     #define yysindex c_yysindex
+     #define yyrindex c_yyrindex
+     #define yygindex c_yygindex
+     #define yytable  c_yytable
+     #define yycheck  c_yycheck
+     #define yyname   c_yyname
+     #define yyrule   c_yyrule
+
+   For each define, replace the `c_' prefix with whatever you like.
+These defines work for `bison', `byacc', and traditional `yacc's.  If
+you find a parser generator that uses a symbol not covered here, please
+report the new name so it can be added to the list.
+
+   ---------- Footnotes ----------
+
+   (1) Please note that `automake' recognizes `-d' in `AM_YFLAGS' only
+if it is not clustered with other options; for example, it won't be
+recognized if `AM_YFLAGS' is `-dt', but it will be if `AM_YFLAGS' is
+`-d -t' or `-t -d'.
+
+\1f
+File: automake.info,  Node: C++ Support,  Next: Objective C Support,  Prev: Yacc and Lex,  Up: Programs
+
+8.9 C++ Support
+===============
+
+Automake includes full support for C++.
+
+   Any package including C++ code must define the output variable `CXX'
+in `configure.ac'; the simplest way to do this is to use the
+`AC_PROG_CXX' macro (*note Particular Program Checks:
+(autoconf)Particular Programs.).
+
+   A few additional variables are defined when a C++ source file is
+seen:
+
+`CXX'
+     The name of the C++ compiler.
+
+`CXXFLAGS'
+     Any flags to pass to the C++ compiler.
+
+`AM_CXXFLAGS'
+     The maintainer's variant of `CXXFLAGS'.
+
+`CXXCOMPILE'
+     The command used to actually compile a C++ source file.  The file
+     name is appended to form the complete command line.
+
+`CXXLINK'
+     The command used to actually link a C++ program.
+
+\1f
+File: automake.info,  Node: Objective C Support,  Next: Objective C++ Support,  Prev: C++ Support,  Up: Programs
+
+8.10 Objective C Support
+========================
+
+Automake includes some support for Objective C.
+
+   Any package including Objective C code must define the output
+variable `OBJC' in `configure.ac'; the simplest way to do this is to use
+the `AC_PROG_OBJC' macro (*note Particular Program Checks:
+(autoconf)Particular Programs.).
+
+   A few additional variables are defined when an Objective C source
+file is seen:
+
+`OBJC'
+     The name of the Objective C compiler.
+
+`OBJCFLAGS'
+     Any flags to pass to the Objective C compiler.
+
+`AM_OBJCFLAGS'
+     The maintainer's variant of `OBJCFLAGS'.
+
+`OBJCCOMPILE'
+     The command used to actually compile an Objective C source file.
+     The file name is appended to form the complete command line.
+
+`OBJCLINK'
+     The command used to actually link an Objective C program.
+
+\1f
+File: automake.info,  Node: Objective C++ Support,  Next: Unified Parallel C Support,  Prev: Objective C Support,  Up: Programs
+
+8.11 Objective C++ Support
+==========================
+
+Automake includes some support for Objective C++.
+
+   Any package including Objective C++ code must define the output
+variable `OBJCXX' in `configure.ac'; the simplest way to do this is to
+use the `AC_PROG_OBJCXX' macro (*note Particular Program Checks:
+(autoconf)Particular Programs.).
+
+   A few additional variables are defined when an Objective C++ source
+file is seen:
+
+`OBJCXX'
+     The name of the Objective C++ compiler.
+
+`OBJCXXFLAGS'
+     Any flags to pass to the Objective C++ compiler.
+
+`AM_OBJCXXFLAGS'
+     The maintainer's variant of `OBJCXXFLAGS'.
+
+`OBJCXXCOMPILE'
+     The command used to actually compile an Objective C++ source file.
+     The file name is appended to form the complete command line.
+
+`OBJCXXLINK'
+     The command used to actually link an Objective C++ program.
+
+\1f
+File: automake.info,  Node: Unified Parallel C Support,  Next: Assembly Support,  Prev: Objective C++ Support,  Up: Programs
+
+8.12 Unified Parallel C Support
+===============================
+
+Automake includes some support for Unified Parallel C.
+
+   Any package including Unified Parallel C code must define the output
+variable `UPC' in `configure.ac'; the simplest way to do this is to use
+the `AM_PROG_UPC' macro (*note Public Macros::).
+
+   A few additional variables are defined when a Unified Parallel C
+source file is seen:
+
+`UPC'
+     The name of the Unified Parallel C compiler.
+
+`UPCFLAGS'
+     Any flags to pass to the Unified Parallel C compiler.
+
+`AM_UPCFLAGS'
+     The maintainer's variant of `UPCFLAGS'.
+
+`UPCCOMPILE'
+     The command used to actually compile a Unified Parallel C source
+     file.  The file name is appended to form the complete command line.
+
+`UPCLINK'
+     The command used to actually link a Unified Parallel C program.
+
+\1f
+File: automake.info,  Node: Assembly Support,  Next: Fortran 77 Support,  Prev: Unified Parallel C Support,  Up: Programs
+
+8.13 Assembly Support
+=====================
+
+Automake includes some support for assembly code.  There are two forms
+of assembler files: normal (`*.s') and preprocessed by `CPP' (`*.S' or
+`*.sx').
+
+   The variable `CCAS' holds the name of the compiler used to build
+assembly code.  This compiler must work a bit like a C compiler; in
+particular it must accept `-c' and `-o'.  The values of `CCASFLAGS' and
+`AM_CCASFLAGS' (or its per-target definition) is passed to the
+compilation.  For preprocessed files, `DEFS', `DEFAULT_INCLUDES',
+`INCLUDES', `CPPFLAGS' and `AM_CPPFLAGS' are also used.
+
+   The autoconf macro `AM_PROG_AS' will define `CCAS' and `CCASFLAGS'
+for you (unless they are already set, it simply sets `CCAS' to the C
+compiler and `CCASFLAGS' to the C compiler flags), but you are free to
+define these variables by other means.
+
+   Only the suffixes `.s', `.S', and `.sx' are recognized by `automake'
+as being files containing assembly code.
+
+\1f
+File: automake.info,  Node: Fortran 77 Support,  Next: Fortran 9x Support,  Prev: Assembly Support,  Up: Programs
+
+8.14 Fortran 77 Support
+=======================
+
+Automake includes full support for Fortran 77.
+
+   Any package including Fortran 77 code must define the output variable
+`F77' in `configure.ac'; the simplest way to do this is to use the
+`AC_PROG_F77' macro (*note Particular Program Checks:
+(autoconf)Particular Programs.).
+
+   A few additional variables are defined when a Fortran 77 source file
+is seen:
+
+`F77'
+     The name of the Fortran 77 compiler.
+
+`FFLAGS'
+     Any flags to pass to the Fortran 77 compiler.
+
+`AM_FFLAGS'
+     The maintainer's variant of `FFLAGS'.
+
+`RFLAGS'
+     Any flags to pass to the Ratfor compiler.
+
+`AM_RFLAGS'
+     The maintainer's variant of `RFLAGS'.
+
+`F77COMPILE'
+     The command used to actually compile a Fortran 77 source file.
+     The file name is appended to form the complete command line.
+
+`FLINK'
+     The command used to actually link a pure Fortran 77 program or
+     shared library.
+
+
+   Automake can handle preprocessing Fortran 77 and Ratfor source files
+in addition to compiling them(1).  Automake also contains some support
+for creating programs and shared libraries that are a mixture of
+Fortran 77 and other languages (*note Mixing Fortran 77 With C and
+C++::).
+
+   These issues are covered in the following sections.
+
+* Menu:
+
+* Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
+* Compiling Fortran 77 Files::  Compiling Fortran 77 sources
+* Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
+
+   ---------- Footnotes ----------
+
+   (1) Much, if not most, of the information in the following sections
+pertaining to preprocessing Fortran 77 programs was taken almost
+verbatim from *note Catalogue of Rules: (make)Catalogue of Rules.
+
+\1f
+File: automake.info,  Node: Preprocessing Fortran 77,  Next: Compiling Fortran 77 Files,  Up: Fortran 77 Support
+
+8.14.1 Preprocessing Fortran 77
+-------------------------------
+
+`N.f' is made automatically from `N.F' or `N.r'.  This rule runs just
+the preprocessor to convert a preprocessable Fortran 77 or Ratfor
+source file into a strict Fortran 77 source file.  The precise command
+used is as follows:
+
+`.F'
+     `$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
+     $(AM_FFLAGS) $(FFLAGS)'
+
+`.r'
+     `$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)'
+
+
+\1f
+File: automake.info,  Node: Compiling Fortran 77 Files,  Next: Mixing Fortran 77 With C and C++,  Prev: Preprocessing Fortran 77,  Up: Fortran 77 Support
+
+8.14.2 Compiling Fortran 77 Files
+---------------------------------
+
+`N.o' is made automatically from `N.f', `N.F' or `N.r' by running the
+Fortran 77 compiler.  The precise command used is as follows:
+
+`.f'
+     `$(F77) -c $(AM_FFLAGS) $(FFLAGS)'
+
+`.F'
+     `$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
+     $(AM_FFLAGS) $(FFLAGS)'
+
+`.r'
+     `$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)'
+
+
+\1f
+File: automake.info,  Node: Mixing Fortran 77 With C and C++,  Prev: Compiling Fortran 77 Files,  Up: Fortran 77 Support
+
+8.14.3 Mixing Fortran 77 With C and C++
+---------------------------------------
+
+Automake currently provides _limited_ support for creating programs and
+shared libraries that are a mixture of Fortran 77 and C and/or C++.
+However, there are many other issues related to mixing Fortran 77 with
+other languages that are _not_ (currently) handled by Automake, but
+that are handled by other packages(1).
+
+   Automake can help in two ways:
+
+  1. Automatic selection of the linker depending on which combinations
+     of source code.
+
+  2. Automatic selection of the appropriate linker flags (e.g., `-L' and
+     `-l') to pass to the automatically selected linker in order to link
+     in the appropriate Fortran 77 intrinsic and run-time libraries.
+
+     These extra Fortran 77 linker flags are supplied in the output
+     variable `FLIBS' by the `AC_F77_LIBRARY_LDFLAGS' Autoconf macro.
+     *Note Fortran Compiler Characteristics: (autoconf)Fortran Compiler.
+
+   If Automake detects that a program or shared library (as mentioned in
+some `_PROGRAMS' or `_LTLIBRARIES' primary) contains source code that
+is a mixture of Fortran 77 and C and/or C++, then it requires that the
+macro `AC_F77_LIBRARY_LDFLAGS' be called in `configure.ac', and that
+either `$(FLIBS)' appear in the appropriate `_LDADD' (for programs) or
+`_LIBADD' (for shared libraries) variables.  It is the responsibility
+of the person writing the `Makefile.am' to make sure that `$(FLIBS)'
+appears in the appropriate `_LDADD' or `_LIBADD' variable.
+
+   For example, consider the following `Makefile.am':
+
+     bin_PROGRAMS = foo
+     foo_SOURCES  = main.cc foo.f
+     foo_LDADD    = libfoo.la $(FLIBS)
+
+     pkglib_LTLIBRARIES = libfoo.la
+     libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
+     libfoo_la_LIBADD   = $(FLIBS)
+
+   In this case, Automake will insist that `AC_F77_LIBRARY_LDFLAGS' is
+mentioned in `configure.ac'.  Also, if `$(FLIBS)' hadn't been mentioned
+in `foo_LDADD' and `libfoo_la_LIBADD', then Automake would have issued
+a warning.
+
+* Menu:
+
+* How the Linker is Chosen::    Automatic linker selection
+
+   ---------- Footnotes ----------
+
+   (1) For example, the cfortran package
+(http://www-zeus.desy.de/~burow/cfortran/) addresses all of these
+inter-language issues, and runs under nearly all Fortran 77, C and C++
+compilers on nearly all platforms.  However, `cfortran' is not yet Free
+Software, but it will be in the next major release.
+
+\1f
+File: automake.info,  Node: How the Linker is Chosen,  Up: Mixing Fortran 77 With C and C++
+
+8.14.3.1 How the Linker is Chosen
+.................................
+
+When a program or library mixes several languages, Automake choose the
+linker according to the following priorities.  (The names in
+parentheses are the variables containing the link command.)
+
+  1. Native Java (`GCJLINK')
+
+  2. Objective C++ (`OBJCXXLINK')
+
+  3. C++ (`CXXLINK')
+
+  4. Fortran 77 (`F77LINK')
+
+  5. Fortran (`FCLINK')
+
+  6. Objective C (`OBJCLINK')
+
+  7. Unified Parallel C (`UPCLINK')
+
+  8. C (`LINK')
+
+   For example, if Fortran 77, C and C++ source code is compiled into a
+program, then the C++ linker will be used.  In this case, if the C or
+Fortran 77 linkers required any special libraries that weren't included
+by the C++ linker, then they must be manually added to an `_LDADD' or
+`_LIBADD' variable by the user writing the `Makefile.am'.
+
+   Automake only looks at the file names listed in `_SOURCES' variables
+to choose the linker, and defaults to the C linker.  Sometimes this is
+inconvenient because you are linking against a library written in
+another language and would like to set the linker more appropriately.
+*Note Libtool Convenience Libraries::, for a trick with
+`nodist_EXTRA_..._SOURCES'.
+
+   A per-target `_LINK' variable will override the above selection.
+Per-target link flags will cause Automake to write a per-target `_LINK'
+variable according to the language chosen as above.
+
+\1f
+File: automake.info,  Node: Fortran 9x Support,  Next: Java Support with gcj,  Prev: Fortran 77 Support,  Up: Programs
+
+8.15 Fortran 9x Support
+=======================
+
+Automake includes support for Fortran 9x.
+
+   Any package including Fortran 9x code must define the output variable
+`FC' in `configure.ac'; the simplest way to do this is to use the
+`AC_PROG_FC' macro (*note Particular Program Checks:
+(autoconf)Particular Programs.).
+
+   A few additional variables are defined when a Fortran 9x source file
+is seen:
+
+`FC'
+     The name of the Fortran 9x compiler.
+
+`FCFLAGS'
+     Any flags to pass to the Fortran 9x compiler.
+
+`AM_FCFLAGS'
+     The maintainer's variant of `FCFLAGS'.
+
+`FCCOMPILE'
+     The command used to actually compile a Fortran 9x source file.
+     The file name is appended to form the complete command line.
+
+`FCLINK'
+     The command used to actually link a pure Fortran 9x program or
+     shared library.
+
+
+* Menu:
+
+* Compiling Fortran 9x Files::  Compiling Fortran 9x sources
+
+\1f
+File: automake.info,  Node: Compiling Fortran 9x Files,  Up: Fortran 9x Support
+
+8.15.1 Compiling Fortran 9x Files
+---------------------------------
+
+`FILE.o' is made automatically from `FILE.f90', `FILE.f95', `FILE.f03',
+or `FILE.f08' by running the Fortran 9x compiler.  The precise command
+used is as follows:
+
+`.f90'
+     `$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f90) $<'
+
+`.f95'
+     `$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f95) $<'
+
+`.f03'
+     `$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f03) $<'
+
+`.f08'
+     `$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f08) $<'
+
+
+\1f
+File: automake.info,  Node: Java Support with gcj,  Next: Vala Support,  Prev: Fortran 9x Support,  Up: Programs
+
+8.16 Compiling Java sources using gcj
+=====================================
+
+Automake includes support for natively compiled Java, using `gcj', the
+Java front end to the GNU Compiler Collection (rudimentary support for
+compiling Java to bytecode using the `javac' compiler is also present,
+_albeit deprecated_; *note Java::).
+
+   Any package including Java code to be compiled must define the output
+variable `GCJ' in `configure.ac'; the variable `GCJFLAGS' must also be
+defined somehow (either in `configure.ac' or `Makefile.am').  The
+simplest way to do this is to use the `AM_PROG_GCJ' macro.
+
+   By default, programs including Java source files are linked with
+`gcj'.
+
+   As always, the contents of `AM_GCJFLAGS' are passed to every
+compilation invoking `gcj' (in its role as an ahead-of-time compiler,
+when invoking it to create `.class' files, `AM_JAVACFLAGS' is used
+instead).  If it is necessary to pass options to `gcj' from
+`Makefile.am', this variable, and not the user variable `GCJFLAGS',
+should be used.
+
+   `gcj' can be used to compile `.java', `.class', `.zip', or `.jar'
+files.
+
+   When linking, `gcj' requires that the main class be specified using
+the `--main=' option.  The easiest way to do this is to use the
+`_LDFLAGS' variable for the program.
+
+\1f
+File: automake.info,  Node: Vala Support,  Next: Support for Other Languages,  Prev: Java Support with gcj,  Up: Programs
+
+8.17 Vala Support
+=================
+
+Automake provides initial support for Vala
+(`http://www.vala-project.org/').  This requires valac version 0.7.0 or
+later, and currently requires the user to use GNU `make'.
+
+     foo_SOURCES = foo.vala bar.vala zardoc.c
+
+   Any `.vala' file listed in a `_SOURCES' variable will be compiled
+into C code by the Vala compiler. The generated `.c' files are
+distributed. The end user does not need to have a Vala compiler
+installed.
+
+   Automake ships with an Autoconf macro called `AM_PROG_VALAC' that
+will locate the Vala compiler and optionally check its version number.
+
+ -- Macro: AM_PROG_VALAC ([MINIMUM-VERSION])
+     Try to find a Vala compiler 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([0.7.0])
+
+   There are a few variables that are used when compiling Vala sources:
+
+`VALAC'
+     Path to the Vala compiler.
+
+`VALAFLAGS'
+     Additional arguments for the Vala compiler.
+
+`AM_VALAFLAGS'
+     The maintainer's variant of `VALAFLAGS'.
+
+          lib_LTLIBRARIES = libfoo.la
+          libfoo_la_SOURCES = foo.vala
+
+   Note that currently, you cannot use per-target `*_VALAFLAGS' (*note
+Renamed Objects::) to produce different C files from one Vala source
+file.
+
+\1f
+File: automake.info,  Node: Support for Other Languages,  Next: Dependencies,  Prev: Vala Support,  Up: Programs
+
+8.18 Support for Other Languages
+================================
+
+Automake currently only includes full support for C, C++ (*note C++
+Support::), Objective C (*note Objective C Support::), Objective C++
+(*note Objective C++ Support::), Fortran 77 (*note Fortran 77
+Support::), Fortran 9x (*note Fortran 9x Support::), and Java (*note
+Java Support with gcj::).  There is only rudimentary support for other
+languages, support for which will be improved based on user demand.
+
+   Some limited support for adding your own languages is available via
+the suffix rule handling (*note Suffixes::).
+
+\1f
+File: automake.info,  Node: Dependencies,  Next: EXEEXT,  Prev: Support for Other Languages,  Up: Programs
+
+8.19 Automatic dependency tracking
+==================================
+
+As a developer it is often painful to continually update the
+`Makefile.am' whenever the include-file dependencies change in a
+project.  Automake supplies a way to automatically track dependency
+changes (*note Dependency Tracking::).
+
+   Automake always uses complete dependencies for a compilation,
+including system headers.  Automake's model is that dependency
+computation should be a side effect of the build.  To this end,
+dependencies are computed by running all compilations through a special
+wrapper program called `depcomp'.  `depcomp' understands how to coax
+many different C and C++ compilers into generating dependency
+information in the format it requires.  `automake -a' will install
+`depcomp' into your source tree for you.  If `depcomp' can't figure out
+how to properly invoke your compiler, dependency tracking will simply
+be disabled for your build.
+
+   Experience with earlier versions of Automake (*note Dependency
+Tracking Evolution: (automake-history)Dependency Tracking Evolution.)
+taught us that it is not reliable to generate dependencies only on the
+maintainer's system, as configurations vary too much.  So instead
+Automake implements dependency tracking at build time.
+
+   Automatic dependency tracking can be suppressed by putting
+`no-dependencies' in the variable `AUTOMAKE_OPTIONS', or passing
+`no-dependencies' as an argument to `AM_INIT_AUTOMAKE' (this should be
+the preferred way).  Or, you can invoke `automake' with the `-i'
+option.  Dependency tracking is enabled by default.
+
+   The person building your package also can choose to disable
+dependency tracking by configuring with `--disable-dependency-tracking'.
+
+\1f
+File: automake.info,  Node: EXEEXT,  Prev: Dependencies,  Up: Programs
+
+8.20 Support for executable extensions
+======================================
+
+On some platforms, such as Windows, executables are expected to have an
+extension such as `.exe'.  On these platforms, some compilers (GCC
+among them) will automatically generate `foo.exe' when asked to
+generate `foo'.
+
+   Automake provides mostly-transparent support for this.  Unfortunately
+_mostly_ doesn't yet mean _fully_.  Until the English dictionary is
+revised, you will have to assist Automake if your package must support
+those platforms.
+
+   One thing you must be aware of is that, internally, Automake rewrites
+something like this:
+
+     bin_PROGRAMS = liver
+
+   to this:
+
+     bin_PROGRAMS = liver$(EXEEXT)
+
+   The targets Automake generates are likewise given the `$(EXEEXT)'
+extension.
+
+   The variables `TESTS' and `XFAIL_TESTS' (*note Simple Tests::) are
+also rewritten if they contain filenames that have been declared as
+programs in the same `Makefile'.  (This is mostly useful when some
+programs from `check_PROGRAMS' are listed in `TESTS'.)
+
+   However, Automake cannot apply this rewriting to `configure'
+substitutions.  This means that if you are conditionally building a
+program using such a substitution, then your `configure.ac' must take
+care to add `$(EXEEXT)' when constructing the output variable.
+
+   Sometimes maintainers like to write an explicit link rule for their
+program.  Without executable extension support, this is easy--you
+simply write a rule whose target is the name of the program.  However,
+when executable extension support is enabled, you must instead add the
+`$(EXEEXT)' suffix.
+
+   This might be a nuisance for maintainers who know their package will
+never run on a platform that has executable extensions.  For those
+maintainers, the `no-exeext' option (*note Options::) will disable this
+feature.  This works in a fairly ugly way; if `no-exeext' is seen, then
+the presence of a rule for a target named `foo' in `Makefile.am' will
+override an `automake'-generated rule for `foo$(EXEEXT)'.  Without the
+`no-exeext' option, this use will give a diagnostic.
+
+\1f
+File: automake.info,  Node: Other Objects,  Next: Other GNU Tools,  Prev: Programs,  Up: Top
+
+9 Other Derived Objects
+***********************
+
+Automake can handle derived objects that are not C programs.  Sometimes
+the support for actually building such objects must be explicitly
+supplied, but Automake will still automatically handle installation and
+distribution.
+
+* Menu:
+
+* Scripts::                     Executable scripts
+* Headers::                     Header files
+* Data::                        Architecture-independent data files
+* Sources::                     Derived sources
+
+\1f
+File: automake.info,  Node: Scripts,  Next: Headers,  Up: Other Objects
+
+9.1 Executable Scripts
+======================
+
+It is possible to define and install programs that are scripts.  Such
+programs are listed using the `SCRIPTS' primary name.  When the script
+is distributed in its final, installable form, the `Makefile' usually
+looks as follows: 
+
+     # Install my_script in $(bindir) and distribute it.
+     dist_bin_SCRIPTS = my_script
+
+   Scripts are not distributed by default; as we have just seen, those
+that should be distributed can be specified using a `dist_' prefix as
+with other primaries.
+
+   Scripts can be installed in `bindir', `sbindir', `libexecdir',
+`pkglibexecdir', or `pkgdatadir'.
+
+   Scripts that need not be installed can be listed in
+`noinst_SCRIPTS', and among them, those which are needed only by `make
+check' should go in `check_SCRIPTS'.
+
+   When a script needs to be built, the `Makefile.am' should include
+the appropriate rules.  For instance the `automake' program itself is a
+Perl script that is generated from `automake.in'.  Here is how this is
+handled:
+
+     bin_SCRIPTS = automake
+     CLEANFILES = $(bin_SCRIPTS)
+     EXTRA_DIST = automake.in
+
+     do_subst = sed -e 's,[@]datadir[@],$(datadir),g' \
+                 -e 's,[@]PERL[@],$(PERL),g' \
+                 -e 's,[@]PACKAGE[@],$(PACKAGE),g' \
+                 -e 's,[@]VERSION[@],$(VERSION),g' \
+                 ...
+
+     automake: automake.in Makefile
+             $(do_subst) < $(srcdir)/automake.in > automake
+             chmod +x automake
+
+   Such scripts for which a build rule has been supplied need to be
+deleted explicitly using `CLEANFILES' (*note Clean::), and their
+sources have to be distributed, usually with `EXTRA_DIST' (*note Basics
+of Distribution::).
+
+   Another common way to build scripts is to process them from
+`configure' with `AC_CONFIG_FILES'.  In this situation Automake knows
+which files should be cleaned and distributed, and what the rebuild
+rules should look like.
+
+   For instance if `configure.ac' contains
+
+     AC_CONFIG_FILES([src/my_script], [chmod +x src/my_script])
+
+to build `src/my_script' from `src/my_script.in', then a
+`src/Makefile.am' to install this script in `$(bindir)' can be as
+simple as
+
+     bin_SCRIPTS = my_script
+     CLEANFILES = $(bin_SCRIPTS)
+
+There is no need for `EXTRA_DIST' or any build rule: Automake infers
+them from `AC_CONFIG_FILES' (*note Requirements::).  `CLEANFILES' is
+still useful, because by default Automake will clean targets of
+`AC_CONFIG_FILES' in `distclean', not `clean'.
+
+   Although this looks simpler, building scripts this way has one
+drawback: directory variables such as `$(datadir)' are not fully
+expanded and may refer to other directory variables.
+
+\1f
+File: automake.info,  Node: Headers,  Next: Data,  Prev: Scripts,  Up: Other Objects
+
+9.2 Header files
+================
+
+Header files that must be installed are specified by the `HEADERS'
+family of variables.  Headers can be installed in `includedir',
+`oldincludedir', `pkgincludedir' or any other directory you may have
+defined (*note Uniform::).  For instance,
+
+     include_HEADERS = foo.h bar/bar.h
+
+will install the two files as `$(includedir)/foo.h' and
+`$(includedir)/bar.h'.
+
+   The `nobase_' prefix is also supported,
+
+     nobase_include_HEADERS = foo.h bar/bar.h
+
+will install the two files as `$(includedir)/foo.h' and
+`$(includedir)/bar/bar.h' (*note Alternative::).
+
+   Usually, only header files that accompany installed libraries need to
+be installed.  Headers used by programs or convenience libraries are
+not installed.  The `noinst_HEADERS' variable can be used for such
+headers.  However when the header actually belongs to a single
+convenience library or program, we recommend listing it in the
+program's or library's `_SOURCES' variable (*note Program Sources::)
+instead of in `noinst_HEADERS'.  This is clearer for the `Makefile.am'
+reader.  `noinst_HEADERS' would be the right variable to use in a
+directory containing only headers and no associated library or program.
+
+   All header files must be listed somewhere; in a `_SOURCES' variable
+or in a `_HEADERS' variable.  Missing ones will not appear in the
+distribution.
+
+   For header files that are built and must not be distributed, use the
+`nodist_' prefix as in `nodist_include_HEADERS' or
+`nodist_prog_SOURCES'.  If these generated headers are needed during
+the build, you must also ensure they exist before they are used (*note
+Sources::).
+
+\1f
+File: automake.info,  Node: Data,  Next: Sources,  Prev: Headers,  Up: Other Objects
+
+9.3 Architecture-independent data files
+=======================================
+
+Automake supports the installation of miscellaneous data files using the
+`DATA' family of variables.  
+
+   Such data can be installed in the directories `datadir',
+`sysconfdir', `sharedstatedir', `localstatedir', or `pkgdatadir'.
+
+   By default, data files are _not_ included in a distribution.  Of
+course, you can use the `dist_' prefix to change this on a per-variable
+basis.
+
+   Here is how Automake declares its auxiliary data files:
+
+     dist_pkgdata_DATA = clean-kr.am clean.am ...
+
+\1f
+File: automake.info,  Node: Sources,  Prev: Data,  Up: Other Objects
+
+9.4 Built Sources
+=================
+
+Because Automake's automatic dependency tracking works as a side-effect
+of compilation (*note Dependencies::) there is a bootstrap issue: a
+target should not be compiled before its dependencies are made, but
+these dependencies are unknown until the target is first compiled.
+
+   Ordinarily this is not a problem, because dependencies are
+distributed sources: they preexist and do not need to be built.
+Suppose that `foo.c' includes `foo.h'.  When it first compiles `foo.o',
+`make' only knows that `foo.o' depends on `foo.c'.  As a side-effect of
+this compilation `depcomp' records the `foo.h' dependency so that
+following invocations of `make' will honor it.  In these conditions,
+it's clear there is no problem: either `foo.o' doesn't exist and has to
+be built (regardless of the dependencies), or accurate dependencies
+exist and they can be used to decide whether `foo.o' should be rebuilt.
+
+   It's a different story if `foo.h' doesn't exist by the first `make'
+run.  For instance, there might be a rule to build `foo.h'.  This time
+`file.o''s build will fail because the compiler can't find `foo.h'.
+`make' failed to trigger the rule to build `foo.h' first by lack of
+dependency information.
+
+   The `BUILT_SOURCES' variable is a workaround for this problem.  A
+source file listed in `BUILT_SOURCES' is made on `make all' or `make
+check' (or even `make install') before other targets are processed.
+However, such a source file is not _compiled_ unless explicitly
+requested by mentioning it in some other `_SOURCES' variable.
+
+   So, to conclude our introductory example, we could use
+`BUILT_SOURCES = foo.h' to ensure `foo.h' gets built before any other
+target (including `foo.o') during `make all' or `make check'.
+
+   `BUILT_SOURCES' is actually a bit of a misnomer, as any file which
+must be created early in the build process can be listed in this
+variable.  Moreover, all built sources do not necessarily have to be
+listed in `BUILT_SOURCES'.  For instance, a generated `.c' file doesn't
+need to appear in `BUILT_SOURCES' (unless it is included by another
+source), because it's a known dependency of the associated object.
+
+   It might be important to emphasize that `BUILT_SOURCES' is honored
+only by `make all', `make check' and `make install'.  This means you
+cannot build a specific target (e.g., `make foo') in a clean tree if it
+depends on a built source.  However it will succeed if you have run
+`make all' earlier, because accurate dependencies are already available.
+
+   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.
+
+\1f
+File: automake.info,  Node: Built Sources Example,  Up: Sources
+
+9.4.1 Built Sources Example
+---------------------------
+
+Suppose that `foo.c' includes `bindir.h', which is
+installation-dependent and not distributed: it needs to be built.  Here
+`bindir.h' defines the preprocessor macro `bindir' to the value of the
+`make' variable `bindir' (inherited from `configure').
+
+   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.
+
+First Try
+.........
+
+This first implementation will illustrate the bootstrap issue mentioned
+in the previous section (*note Sources::).
+
+   Here is a tentative `Makefile.am'.
+
+     # This won't work.
+     bin_PROGRAMS = foo
+     foo_SOURCES = foo.c
+     nodist_foo_SOURCES = bindir.h
+     CLEANFILES = bindir.h
+     bindir.h: Makefile
+             echo '#define bindir "$(bindir)"' >$@
+
+   This setup doesn't work, because Automake doesn't know that `foo.c'
+includes `bindir.h'.  Remember, automatic dependency tracking works as
+a side-effect of compilation, so the dependencies of `foo.o' will be
+known only after `foo.o' has been compiled (*note Dependencies::).  The
+symptom is as follows.
+
+     % make
+     source='foo.c' object='foo.o' libtool=no \
+     depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
+     depmode=gcc /bin/sh ./depcomp \
+     gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
+     foo.c:2: bindir.h: No such file or directory
+     make: *** [foo.o] Error 1
+
+   In this example `bindir.h' is not distributed nor installed, and it
+is not even being built on-time.  One may wonder if the
+`nodist_foo_SOURCES = bindir.h' line has any use at all.  This line
+simply states that `bindir.h' is a source of `foo', so for instance, it
+should be inspected while generating tags (*note Tags::).  In other
+words, it does not help our present problem, and the build would fail
+identically without it.
+
+Using `BUILT_SOURCES'
+.....................
+
+A solution is to require `bindir.h' to be built before anything else.
+This is what `BUILT_SOURCES' is meant for (*note Sources::).
+
+     bin_PROGRAMS = foo
+     foo_SOURCES = foo.c
+     nodist_foo_SOURCES = bindir.h
+     BUILT_SOURCES = bindir.h
+     CLEANFILES = bindir.h
+     bindir.h: Makefile
+             echo '#define bindir "$(bindir)"' >$@
+
+   See how `bindir.h' gets built first:
+
+     % make
+     echo '#define bindir "/usr/local/bin"' >bindir.h
+     make  all-am
+     make[1]: Entering directory `/home/adl/tmp'
+     source='foo.c' object='foo.o' libtool=no \
+     depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
+     depmode=gcc /bin/sh ./depcomp \
+     gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
+     gcc  -g -O2   -o foo  foo.o
+     make[1]: Leaving directory `/home/adl/tmp'
+
+   However, as said earlier, `BUILT_SOURCES' applies only to the `all',
+`check', and `install' targets.  It still fails if you try to run `make
+foo' explicitly:
+
+     % make clean
+     test -z "bindir.h" || rm -f bindir.h
+     test -z "foo" || rm -f foo
+     rm -f *.o
+     % : > .deps/foo.Po # Suppress previously recorded dependencies
+     % make foo
+     source='foo.c' object='foo.o' libtool=no \
+     depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
+     depmode=gcc /bin/sh ./depcomp \
+     gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
+     foo.c:2: bindir.h: No such file or directory
+     make: *** [foo.o] Error 1
+
+Recording Dependencies manually
+...............................
+
+Usually people are happy enough with `BUILT_SOURCES' because they never
+build targets such as `make foo' before `make all', as in the previous
+example.  However if this matters to you, you can avoid `BUILT_SOURCES'
+and record such dependencies explicitly in the `Makefile.am'.
+
+     bin_PROGRAMS = foo
+     foo_SOURCES = foo.c
+     nodist_foo_SOURCES = bindir.h
+     foo.$(OBJEXT): bindir.h
+     CLEANFILES = bindir.h
+     bindir.h: Makefile
+             echo '#define bindir "$(bindir)"' >$@
+
+   You don't have to list _all_ the dependencies of `foo.o' explicitly,
+only those that might need to be built.  If a dependency already
+exists, it will not hinder the first compilation and will be recorded
+by the normal dependency tracking code.  (Note that after this first
+compilation the dependency tracking code will also have recorded the
+dependency between `foo.o' and `bindir.h'; so our explicit dependency
+is really useful to the first build only.)
+
+   Adding explicit dependencies like this can be a bit dangerous if you
+are not careful enough.  This is due to the way Automake tries not to
+overwrite your rules (it assumes you know better than it).
+`foo.$(OBJEXT): bindir.h' supersedes any rule Automake may want to
+output to build `foo.$(OBJEXT)'.  It happens to work in this case
+because Automake doesn't have to output any `foo.$(OBJEXT):' target: it
+relies on a suffix rule instead (i.e., `.c.$(OBJEXT):').  Always check
+the generated `Makefile.in' if you do this.
+
+Build `bindir.h' from `configure'
+.................................
+
+It's possible to define this preprocessor macro from `configure',
+either in `config.h' (*note Defining Directories: (autoconf)Defining
+Directories.), or by processing a `bindir.h.in' file using
+`AC_CONFIG_FILES' (*note Configuration Actions: (autoconf)Configuration
+Actions.).
+
+   At this point it should be clear that building `bindir.h' from
+`configure' works well for this example.  `bindir.h' will exist before
+you build any target, hence will not cause any dependency issue.
+
+   The Makefile can be shrunk as follows.  We do not even have to
+mention `bindir.h'.
+
+     bin_PROGRAMS = foo
+     foo_SOURCES = foo.c
+
+   However, it's not always possible to build sources from `configure',
+especially when these sources are generated by a tool that needs to be
+built first.
+
+Build `bindir.c', not `bindir.h'.
+.................................
+
+Another attractive idea is to define `bindir' as a variable or function
+exported from `bindir.o', and build `bindir.c' instead of `bindir.h'.
+
+     noinst_PROGRAMS = foo
+     foo_SOURCES = foo.c bindir.h
+     nodist_foo_SOURCES = bindir.c
+     CLEANFILES = bindir.c
+     bindir.c: Makefile
+             echo 'const char bindir[] = "$(bindir)";' >$@
+
+   `bindir.h' contains just the variable's declaration and doesn't need
+to be built, so it won't cause any trouble.  `bindir.o' is always
+dependent on `bindir.c', so `bindir.c' will get built first.
+
+Which is best?
+..............
+
+There is no panacea, of course.  Each solution has its merits and
+drawbacks.
+
+   You cannot use `BUILT_SOURCES' if the ability to run `make foo' on a
+clean tree is important to you.
+
+   You won't add explicit dependencies if you are leery of overriding
+an Automake rule by mistake.
+
+   Building files from `./configure' is not always possible, neither is
+converting `.h' files into `.c' files.
+
+\1f
+File: automake.info,  Node: Other GNU Tools,  Next: Documentation,  Prev: Other Objects,  Up: Top
+
+10 Other GNU Tools
+******************
+
+Since Automake is primarily intended to generate `Makefile.in's for use
+in GNU programs, it tries hard to interoperate with other GNU tools.
+
+* Menu:
+
+* Emacs Lisp::                  Emacs Lisp
+* gettext::                     Gettext
+* Libtool::                     Libtool
+* Java::                        Java bytecode compilation (deprecated)
+* Python::                      Python
+
+\1f
+File: automake.info,  Node: Emacs Lisp,  Next: gettext,  Up: Other GNU Tools
+
+10.1 Emacs Lisp
+===============
+
+Automake provides some support for Emacs Lisp.  The `LISP' primary is
+used to hold a list of `.el' files.  Possible prefixes for this primary
+are `lisp_' and `noinst_'.  Note that if `lisp_LISP' is defined, then
+`configure.ac' must run `AM_PATH_LISPDIR' (*note Macros::).
+
+   Lisp sources are not distributed by default.  You can prefix the
+`LISP' primary with `dist_', as in `dist_lisp_LISP' or
+`dist_noinst_LISP', to indicate that these files should be distributed.
+
+   Automake will byte-compile all Emacs Lisp source files using the
+Emacs found by `AM_PATH_LISPDIR', if any was found.
+
+   Byte-compiled Emacs Lisp files are not portable among all versions of
+Emacs, so it makes sense to turn this off if you expect sites to have
+more than one version of Emacs installed.  Furthermore, many packages
+don't actually benefit from byte-compilation.  Still, we recommend that
+you byte-compile your Emacs Lisp sources.  It is probably better for
+sites with strange setups to cope for themselves than to make the
+installation less nice for everybody else.
+
+   There are two ways to avoid byte-compiling.  Historically, we have
+recommended the following construct.
+
+     lisp_LISP = file1.el file2.el
+     ELCFILES =
+
+`ELCFILES' is an internal Automake variable that normally lists all
+`.elc' files that must be byte-compiled.  Automake defines `ELCFILES'
+automatically from `lisp_LISP'.  Emptying this variable explicitly
+prevents byte-compilation.
+
+   Since Automake 1.8, we now recommend using `lisp_DATA' instead:
+
+     lisp_DATA = file1.el file2.el
+
+   Note that these two constructs are not equivalent.  `_LISP' will not
+install a file if Emacs is not installed, while `_DATA' will always
+install its files.
+
+\1f
+File: automake.info,  Node: gettext,  Next: Libtool,  Prev: Emacs Lisp,  Up: Other GNU Tools
+
+10.2 Gettext
+============
+
+If `AM_GNU_GETTEXT' is seen in `configure.ac', then Automake turns on
+support for GNU gettext, a message catalog system for
+internationalization (*note Introduction: (gettext)Top.).
+
+   The `gettext' support in Automake requires the addition of one or
+two subdirectories to the package: `po' and possibly also `intl'.  The
+latter is needed if `AM_GNU_GETTEXT' is not invoked with the `external'
+argument, or if `AM_GNU_GETTEXT_INTL_SUBDIR' is used.  Automake ensures
+that these directories exist and are mentioned in `SUBDIRS'.
+
+\1f
+File: automake.info,  Node: Libtool,  Next: Java,  Prev: gettext,  Up: Other GNU Tools
+
+10.3 Libtool
+============
+
+Automake provides support for GNU Libtool (*note Introduction:
+(libtool)Top.) with the `LTLIBRARIES' primary.  *Note A Shared
+Library::.
+
+\1f
+File: automake.info,  Node: Java,  Next: Python,  Prev: Libtool,  Up: Other GNU Tools
+
+10.4 Java bytecode compilation (deprecated)
+===========================================
+
+Automake provides some minimal support for Java bytecode compilation
+with the `JAVA' primary (in addition to the support for compiling Java
+to native machine code; *note Java Support with gcj::).  Note however
+that _the interface and most features described here are deprecated_;
+the next automake release will strive to provide a better and cleaner
+interface, which however _won't be backward-compatible_; the present
+interface will probably be removed altogether in future automake
+releases (1.13 or later), so don't use it in new code.
+
+   Any `.java' files listed in a `_JAVA' variable will be compiled with
+`JAVAC' at build time.  By default, `.java' files are not included in
+the distribution, you should use the `dist_' prefix to distribute them.
+
+   Here is a typical setup for distributing `.java' files and
+installing the `.class' files resulting from their compilation.
+
+     javadir = $(datadir)/java
+     dist_java_JAVA = a.java b.java ...
+
+   Currently Automake enforces the restriction that only one `_JAVA'
+primary can be used in a given `Makefile.am'.  The reason for this
+restriction is that, in general, it isn't possible to know which
+`.class' files were generated from which `.java' files, so it would be
+impossible to know which files to install where.  For instance, a
+`.java' file can define multiple classes; the resulting `.class' file
+names cannot be predicted without parsing the `.java' file.
+
+   There are a few variables that are used when compiling Java sources:
+
+`JAVAC'
+     The name of the Java compiler.  This defaults to `javac'.
+
+`JAVACFLAGS'
+     The flags to pass to the compiler.  This is considered to be a user
+     variable (*note User Variables::).
+
+`AM_JAVACFLAGS'
+     More flags to pass to the Java compiler.  This, and not
+     `JAVACFLAGS', should be used when it is necessary to put Java
+     compiler flags into `Makefile.am'.
+
+`JAVAROOT'
+     The value of this variable is passed to the `-d' option to
+     `javac'.  It defaults to `$(top_builddir)'.
+
+`CLASSPATH_ENV'
+     This variable is a shell expression that is used to set the
+     `CLASSPATH' environment variable on the `javac' command line.  (In
+     the future we will probably handle class path setting differently.)
+
+\1f
+File: automake.info,  Node: Python,  Prev: Java,  Up: Other GNU Tools
+
+10.5 Python
+===========
+
+Automake provides support for Python compilation with the `PYTHON'
+primary.  A typical setup is to call `AM_PATH_PYTHON' in `configure.ac'
+and use a line like the following in `Makefile.am':
+
+     python_PYTHON = tree.py leave.py
+
+   Any files listed in a `_PYTHON' variable will be byte-compiled with
+`py-compile' at install time.  `py-compile' actually creates both
+standard (`.pyc') and optimized (`.pyo') byte-compiled versions of the
+source files.  Note that because byte-compilation occurs at install
+time, any files listed in `noinst_PYTHON' will not be compiled.  Python
+source files are included in the distribution by default, prepend
+`nodist_' (as in `nodist_python_PYTHON') to omit them.
+
+   Automake ships with an Autoconf macro called `AM_PATH_PYTHON' that
+will determine some Python-related directory variables (see below).  If
+you have called `AM_PATH_PYTHON' from `configure.ac', then you may use
+the variables `python_PYTHON' or `pkgpython_PYTHON' to list Python
+source files in your `Makefile.am', depending on where you want your
+files installed (see the definitions of `pythondir' and `pkgpythondir'
+below).
+
+ -- Macro: AM_PATH_PYTHON ([VERSION], [ACTION-IF-FOUND],
+     [ACTION-IF-NOT-FOUND])
+
+     Search for a Python interpreter on the system.  This macro takes
+     three optional arguments.  The first argument, if present, is the
+     minimum version of Python required for this package:
+     `AM_PATH_PYTHON' will skip any Python interpreter that is older
+     than VERSION.  If an interpreter is found and satisfies VERSION,
+     then ACTION-IF-FOUND is run.  Otherwise, ACTION-IF-NOT-FOUND is
+     run.
+
+     If ACTION-IF-NOT-FOUND is not specified, as in the following
+     example, the default is to abort `configure'.
+
+          AM_PATH_PYTHON([2.2])
+
+     This is fine when Python is an absolute requirement for the
+     package.  If Python >= 2.5 was only _optional_ to the package,
+     `AM_PATH_PYTHON' could be called as follows.
+
+          AM_PATH_PYTHON([2.5],, [:])
+
+     If the `PYTHON' variable is set when `AM_PATH_PYTHON' is called,
+     then that will be the only Python interpreter that is tried.
+
+     `AM_PATH_PYTHON' creates the following output variables based on
+     the Python installation found during configuration.
+
+`PYTHON'
+     The name of the Python executable, or `:' if no suitable
+     interpreter could be found.
+
+     Assuming ACTION-IF-NOT-FOUND is used (otherwise `./configure' will
+     abort if Python is absent), the value of `PYTHON' can be used to
+     setup a conditional in order to disable the relevant part of a
+     build as follows.
+
+          AM_PATH_PYTHON(,, [:])
+          AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
+
+`PYTHON_VERSION'
+     The Python version number, in the form MAJOR.MINOR (e.g., `2.5').
+     This is currently the value of `sys.version[:3]'.
+
+`PYTHON_PREFIX'
+     The string `${prefix}'.  This term may be used in future work that
+     needs the contents of Python's `sys.prefix', but general consensus
+     is to always use the value from `configure'.
+
+`PYTHON_EXEC_PREFIX'
+     The string `${exec_prefix}'.  This term may be used in future work
+     that needs the contents of Python's `sys.exec_prefix', but general
+     consensus is to always use the value from `configure'.
+
+`PYTHON_PLATFORM'
+     The canonical name used by Python to describe the operating
+     system, as given by `sys.platform'.  This value is sometimes
+     needed when building Python extensions.
+
+`pythondir'
+     The directory name for the `site-packages' subdirectory of the
+     standard Python install tree.
+
+`pkgpythondir'
+     This is the directory under `pythondir' that is named after the
+     package.  That is, it is `$(pythondir)/$(PACKAGE)'.  It is provided
+     as a convenience.
+
+`pyexecdir'
+     This is the directory where Python extension modules (shared
+     libraries) should be installed.  An extension module written in C
+     could be declared as follows to Automake:
+
+          pyexec_LTLIBRARIES = quaternion.la
+          quaternion_la_SOURCES = quaternion.c support.c support.h
+          quaternion_la_LDFLAGS = -avoid-version -module
+
+`pkgpyexecdir'
+     This is a convenience variable that is defined as
+     `$(pyexecdir)/$(PACKAGE)'.
+
+   All these directory variables have values that start with either
+`${prefix}' or `${exec_prefix}' unexpanded.  This works fine in
+`Makefiles', but it makes these variables hard to use in `configure'.
+This is mandated by the GNU coding standards, so that the user can run
+`make prefix=/foo install'.  The Autoconf manual has a section with
+more details on this topic (*note Installation Directory Variables:
+(autoconf)Installation Directory Variables.).  See also *note
+Hard-Coded Install Paths::.
+
+\1f
+File: automake.info,  Node: Documentation,  Next: Install,  Prev: Other GNU Tools,  Up: Top
+
+11 Building documentation
+*************************
+
+Currently Automake provides support for Texinfo and man pages.
+
+* Menu:
+
+* Texinfo::                     Texinfo
+* Man Pages::                   Man pages
+
+\1f
+File: automake.info,  Node: Texinfo,  Next: Man Pages,  Up: Documentation
+
+11.1 Texinfo
+============
+
+If the current directory contains Texinfo source, you must declare it
+with the `TEXINFOS' primary.  Generally Texinfo files are converted
+into info, and thus the `info_TEXINFOS' variable is most commonly used
+here.  Any Texinfo source file must end in the `.texi', `.txi', or
+`.texinfo' extension.  We recommend `.texi' for new manuals.
+
+   Automake generates rules to build `.info', `.dvi', `.ps', `.pdf' and
+`.html' files from your Texinfo sources.  Following the GNU Coding
+Standards, only the `.info' files are built by `make all' and installed
+by `make install' (unless you use `no-installinfo', see below).
+Furthermore, `.info' files are automatically distributed so that
+Texinfo is not a prerequisite for installing your package.
+
+   Other documentation formats can be built on request by `make dvi',
+`make ps', `make pdf' and `make html', and they can be installed with
+`make install-dvi', `make install-ps', `make install-pdf' and `make
+install-html' explicitly.  `make uninstall' will remove everything: the
+Texinfo documentation installed by default as well as all the above
+optional formats.
+
+   All these targets can be extended using `-local' rules (*note
+Extending::).
+
+   If the `.texi' file `@include's `version.texi', then that file will
+be automatically generated.  The file `version.texi' defines four
+Texinfo flag you can reference using `@value{EDITION}',
+`@value{VERSION}', `@value{UPDATED}', and `@value{UPDATED-MONTH}'.
+
+`EDITION'
+`VERSION'
+     Both of these flags hold the version number of your program.  They
+     are kept separate for clarity.
+
+`UPDATED'
+     This holds the date the primary `.texi' file was last modified.
+
+`UPDATED-MONTH'
+     This holds the name of the month in which the primary `.texi' file
+     was last modified.
+
+   The `version.texi' support requires the `mdate-sh' script; this
+script is supplied with Automake and automatically included when
+`automake' is invoked with the `--add-missing' option.
+
+   If you have multiple Texinfo files, and you want to use the
+`version.texi' feature, then you have to have a separate version file
+for each Texinfo file.  Automake will treat any include in a Texinfo
+file that matches `vers*.texi' just as an automatically generated
+version file.
+
+   Sometimes an info file actually depends on more than one `.texi'
+file.  For instance, in GNU Hello, `hello.texi' includes the file
+`fdl.texi'.  You can tell Automake about these dependencies using the
+`TEXI_TEXINFOS' variable.  Here is how GNU Hello does it: 
+
+     info_TEXINFOS = hello.texi
+     hello_TEXINFOS = fdl.texi
+
+   By default, Automake requires the file `texinfo.tex' to appear in
+the same directory as the `Makefile.am' file that lists the `.texi'
+files.  If you used `AC_CONFIG_AUX_DIR' in `configure.ac' (*note
+Finding `configure' Input: (autoconf)Input.), then `texinfo.tex' is
+looked for there.  In both cases, `automake' then supplies
+`texinfo.tex' if `--add-missing' is given, and takes care of its
+distribution.  However, if you set the `TEXINFO_TEX' variable (see
+below), it overrides the location of the file and turns off its
+installation into the source as well as its distribution.
+
+   The option `no-texinfo.tex' can be used to eliminate the requirement
+for the file `texinfo.tex'.  Use of the variable `TEXINFO_TEX' is
+preferable, however, because that allows the `dvi', `ps', and `pdf'
+targets to still work.
+
+   Automake generates an `install-info' rule; some people apparently
+use this.  By default, info pages are installed by `make install', so
+running `make install-info' is pointless.  This can be prevented via
+the `no-installinfo' option.  In this case, `.info' files are not
+installed by default, and user must request this explicitly using `make
+install-info'.
+
+   By default, `make install-info' and `make install-info' will try to
+run the `install-info' program (if available) to update (or create) the
+``${infodir}'/dir' index.  If this is undesired, it can be prevented by
+exporting the `AM_UPDATE_INFO_DIR' variable to "`no'".
+
+   The following variables are used by the Texinfo build rules.
+
+`MAKEINFO'
+     The name of the program invoked to build `.info' files.  This
+     variable is defined by Automake.  If the `makeinfo' program is
+     found on the system then it will be used by default; otherwise
+     `missing' will be used instead.
+
+`MAKEINFOHTML'
+     The command invoked to build `.html' files.  Automake defines this
+     to `$(MAKEINFO) --html'.
+
+`MAKEINFOFLAGS'
+     User flags passed to each invocation of `$(MAKEINFO)' and
+     `$(MAKEINFOHTML)'.  This user variable (*note User Variables::) is
+     not expected to be defined in any `Makefile'; it can be used by
+     users to pass extra flags to suit their needs.
+
+`AM_MAKEINFOFLAGS'
+`AM_MAKEINFOHTMLFLAGS'
+     Maintainer flags passed to each `makeinfo' invocation.  Unlike
+     `MAKEINFOFLAGS', these variables are meant to be defined by
+     maintainers in `Makefile.am'.  `$(AM_MAKEINFOFLAGS)' is passed to
+     `makeinfo' when building `.info' files; and
+     `$(AM_MAKEINFOHTMLFLAGS)' is used when building `.html' files.
+
+     For instance, the following setting can be used to obtain one
+     single `.html' file per manual, without node separators.
+          AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
+
+     `AM_MAKEINFOHTMLFLAGS' defaults to `$(AM_MAKEINFOFLAGS)'.  This
+     means that defining `AM_MAKEINFOFLAGS' without defining
+     `AM_MAKEINFOHTMLFLAGS' will impact builds of both `.info' and
+     `.html' files.
+
+`TEXI2DVI'
+     The name of the command that converts a `.texi' file into a `.dvi'
+     file.  This defaults to `texi2dvi', a script that ships with the
+     Texinfo package.
+
+`TEXI2PDF'
+     The name of the command that translates a `.texi' file into a
+     `.pdf' file.  This defaults to `$(TEXI2DVI) --pdf --batch'.
+
+`DVIPS'
+     The name of the command that builds a `.ps' file out of a `.dvi'
+     file.  This defaults to `dvips'.
+
+`TEXINFO_TEX'
+     If your package has Texinfo files in many directories, you can use
+     the variable `TEXINFO_TEX' to tell Automake where to find the
+     canonical `texinfo.tex' for your package.  The value of this
+     variable should be the relative path from the current
+     `Makefile.am' to `texinfo.tex':
+
+          TEXINFO_TEX = ../doc/texinfo.tex
+
+\1f
+File: automake.info,  Node: Man Pages,  Prev: Texinfo,  Up: Documentation
+
+11.2 Man Pages
+==============
+
+A package can also include man pages (but see the GNU standards on this
+matter, *note Man Pages: (standards)Man Pages.)  Man pages are declared
+using the `MANS' primary.  Generally the `man_MANS' variable is used.
+Man pages are automatically installed in the correct subdirectory of
+`mandir', based on the file extension.
+
+   File extensions such as `.1c' are handled by looking for the valid
+part of the extension and using that to determine the correct
+subdirectory of `mandir'.  Valid section names are the digits `0'
+through `9', and the letters `l' and `n'.
+
+   Sometimes developers prefer to name a man page something like
+`foo.man' in the source, and then rename it to have the correct suffix,
+for example `foo.1', when installing the file.  Automake also supports
+this mode.  For a valid section named SECTION, there is a corresponding
+directory named `manSECTIONdir', and a corresponding `_MANS' variable.
+Files listed in such a variable are installed in the indicated section.
+If the file already has a valid suffix, then it is installed as-is;
+otherwise the file suffix is changed to match the section.
+
+   For instance, consider this example:
+     man1_MANS = rename.man thesame.1 alsothesame.1c
+
+In this case, `rename.man' will be renamed to `rename.1' when
+installed, but the other files will keep their names.
+
+   By default, man pages are installed by `make install'.  However,
+since the GNU project does not require man pages, many maintainers do
+not expend effort to keep the man pages up to date.  In these cases, the
+`no-installman' option will prevent the man pages from being installed
+by default.  The user can still explicitly install them via `make
+install-man'.
+
+   For fast installation, with many files it is preferable to use
+`manSECTION_MANS' over `man_MANS' as well as files that do not need to
+be renamed.
+
+   Man pages are not currently considered to be source, because it is
+not uncommon for man pages to be automatically generated.  Therefore
+they are not automatically included in the distribution.  However, this
+can be changed by use of the `dist_' prefix.  For instance here is how
+to distribute and install the two man pages of GNU `cpio' (which
+includes both Texinfo documentation and man pages):
+
+     dist_man_MANS = cpio.1 mt.1
+
+   The `nobase_' prefix is meaningless for man pages and is disallowed.
+
+   Executables and manpages may be renamed upon installation (*note
+Renaming::).  For manpages this can be avoided by use of the `notrans_'
+prefix.  For instance, suppose an executable `foo' allowing to access a
+library function `foo' from the command line.  The way to avoid
+renaming of the `foo.3' manpage is:
+
+     man_MANS = foo.1
+     notrans_man_MANS = foo.3
+
+   `notrans_' must be specified first when used in conjunction with
+either `dist_' or `nodist_' (*note Fine-grained Distribution
+Control::).  For instance:
+
+     notrans_dist_man3_MANS = bar.3
+
+\1f
+File: automake.info,  Node: Install,  Next: Clean,  Prev: Documentation,  Up: Top
+
+12 What Gets Installed
+**********************
+
+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 `make install'.
+
+* Menu:
+
+* 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
+
+\1f
+File: automake.info,  Node: Basics of Installation,  Next: The Two Parts of Install,  Up: Install
+
+12.1 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.
+
+     bin_PROGRAMS = hello subdir/goodbye
+
+   In this example, both `hello' and `goodbye' will be installed in
+`$(bindir)'.
+
+   Sometimes it is useful to avoid the basename step at install time.
+For instance, you might have a number of header files in subdirectories
+of the source tree that are laid out precisely how you want to install
+them.  In this situation you can use the `nobase_' prefix to suppress
+the base name step.  For example:
+
+     nobase_include_HEADERS = stdio.h sys/types.h
+
+will install `stdio.h' in `$(includedir)' and `types.h' in
+`$(includedir)/sys'.
+
+   For most file types, Automake will install multiple files at once,
+while avoiding command line length issues (*note Length Limitations::).
+Since some `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 `nobase_include_HEADERS' above.
+
+   You should not rely on the order in which files listed in one
+variable are installed.  Likewise, to cater for parallel make, you
+should not rely on any particular file installation order even among
+different file types (library dependencies are an exception here).
+
+\1f
+File: automake.info,  Node: The Two Parts of Install,  Next: Extending Installation,  Prev: Basics of Installation,  Up: Install
+
+12.2 The Two Parts of Install
+=============================
+
+Automake generates separate `install-data' and `install-exec' rules, in
+case the installer is installing on multiple machines that share
+directory structure--these targets allow the machine-independent parts
+to be installed only once.  `install-exec' installs platform-dependent
+files, and `install-data' installs platform-independent files.  The
+`install' target depends on both of these targets.  While Automake
+tries to automatically segregate objects into the correct category, the
+`Makefile.am' author is, in the end, responsible for making sure this
+is done correctly.  
+
+   Variables using the standard directory prefixes `data', `info',
+`man', `include', `oldinclude', `pkgdata', or `pkginclude' are
+installed by `install-data'.
+
+   Variables using the standard directory prefixes `bin', `sbin',
+`libexec', `sysconf', `localstate', `lib', or `pkglib' are installed by
+`install-exec'.
+
+   For instance, `data_DATA' files are installed by `install-data',
+while `bin_PROGRAMS' files are installed by `install-exec'.
+
+   Any variable using a user-defined directory prefix with `exec' in
+the name (e.g., `myexecbin_PROGRAMS') is installed by `install-exec'.
+All other user-defined prefixes are installed by `install-data'.
+
+\1f
+File: automake.info,  Node: Extending Installation,  Next: Staged Installs,  Prev: The Two Parts of Install,  Up: Install
+
+12.3 Extending Installation
+===========================
+
+It is possible to extend this mechanism by defining an
+`install-exec-local' or `install-data-local' rule.  If these rules
+exist, they will be run at `make install' time.  These rules can do
+almost anything; care is required.  
+
+   Automake also supports two install hooks, `install-exec-hook' and
+`install-data-hook'.  These hooks are run after all other install rules
+of the appropriate type, exec or data, have completed.  So, for
+instance, it is possible to perform post-installation modifications
+using an install hook.  *Note Extending::, for some examples.  
+
+\1f
+File: automake.info,  Node: Staged Installs,  Next: Install Rules for the User,  Prev: Extending Installation,  Up: Install
+
+12.4 Staged Installs
+====================
+
+Automake generates support for the `DESTDIR' variable in all install
+rules.  `DESTDIR' is used during the `make install' step to relocate
+install objects into a staging area.  Each object and path is prefixed
+with the value of `DESTDIR' before being copied into the install area.
+Here is an example of typical DESTDIR usage:
+
+     mkdir /tmp/staging &&
+     make DESTDIR=/tmp/staging install
+
+   The `mkdir' command avoids a security problem if the attacker
+creates a symbolic link from `/tmp/staging' to a victim area; then
+`make' places install objects in a directory tree built under
+`/tmp/staging'.  If `/gnu/bin/foo' and `/gnu/share/aclocal/foo.m4' are
+to be installed, the above command would install
+`/tmp/staging/gnu/bin/foo' and `/tmp/staging/gnu/share/aclocal/foo.m4'.
+
+   This feature is commonly used to build install images and packages
+(*note DESTDIR::).
+
+   Support for `DESTDIR' is implemented by coding it directly into the
+install rules.  If your `Makefile.am' uses a local install rule (e.g.,
+`install-exec-local') or an install hook, then you must write that code
+to respect `DESTDIR'.
+
+   *Note Makefile Conventions: (standards)Makefile Conventions, for
+another usage example.
+
+\1f
+File: automake.info,  Node: Install Rules for the User,  Prev: Staged Installs,  Up: Install
+
+12.5 Install Rules for the User
+===============================
+
+Automake also generates rules for targets `uninstall', `installdirs',
+and `install-strip'.  
+
+   Automake supports `uninstall-local' and `uninstall-hook'.  There is
+no notion of separate uninstalls for "exec" and "data", as these
+features would not provide additional functionality.
+
+   Note that `uninstall' is not meant as a replacement for a real
+packaging tool.
+
+\1f
+File: automake.info,  Node: Clean,  Next: Dist,  Prev: Install,  Up: Top
+
+13 What Gets Cleaned
+********************
+
+The GNU Makefile Standards specify a number of different clean rules.
+*Note Standard Targets for Users: (standards)Standard Targets.
+
+   Generally the files that can be cleaned are determined automatically
+by Automake.  Of course, Automake also recognizes some variables that
+can be defined to specify additional files to clean.  These variables
+are `MOSTLYCLEANFILES', `CLEANFILES', `DISTCLEANFILES', and
+`MAINTAINERCLEANFILES'.  
+
+   When cleaning involves more than deleting some hard-coded list of
+files, it is also possible to supplement the cleaning rules with your
+own commands.  Simply define a rule for any of the `mostlyclean-local',
+`clean-local', `distclean-local', or `maintainer-clean-local' targets
+(*note Extending::).  A common case is deleting a directory, for
+instance, a directory created by the test suite:
+
+     clean-local:
+             -rm -rf testSubDir
+
+   Since `make' allows only one set of rules for a given target, a more
+extensible way of writing this is to use a separate target listed as a
+dependency:
+
+     clean-local: clean-local-check
+     .PHONY: clean-local-check
+     clean-local-check:
+             -rm -rf testSubDir
+
+   As the GNU Standards aren't always explicit as to which files should
+be removed by which rule, we've adopted a heuristic that we believe was
+first formulated by Franc,ois Pinard:
+
+   * If `make' built it, and it is commonly something that one would
+     want to rebuild (for instance, a `.o' file), then `mostlyclean'
+     should delete it.
+
+   * Otherwise, if `make' built it, then `clean' should delete it.
+
+   * If `configure' built it, then `distclean' should delete it.
+
+   * If the maintainer built it (for instance, a `.info' file), then
+     `maintainer-clean' should delete it.  However `maintainer-clean'
+     should not delete anything that needs to exist in order to run
+     `./configure && make'.
+
+   We recommend that you follow this same set of heuristics in your
+`Makefile.am'.
+
+\1f
+File: automake.info,  Node: Dist,  Next: Tests,  Prev: Clean,  Up: Top
+
+14 What Goes in a Distribution
+******************************
+
+* Menu:
+
+* Basics of Distribution::      Files distributed by default
+* Fine-grained Distribution Control::  `dist_' and `nodist_' prefixes
+* The dist Hook::               A target for last-minute distribution changes
+* Checking the Distribution::   `make distcheck' explained
+* The Types of Distributions::  A variety of formats and compression methods
+
+\1f
+File: automake.info,  Node: Basics of Distribution,  Next: Fine-grained Distribution Control,  Up: Dist
+
+14.1 Basics of Distribution
+===========================
+
+The `dist' rule in the generated `Makefile.in' can be used to generate
+a gzipped `tar' file and other flavors of archive for distribution.
+The file is named based on the `PACKAGE' and `VERSION' variables
+defined by `AM_INIT_AUTOMAKE' (*note Macros::); more precisely the
+gzipped `tar' file is named `PACKAGE-VERSION.tar.gz'.  You can use the
+`make' variable `GZIP_ENV' to control how gzip is run.  The default
+setting is `--best'.
+
+   For the most part, the files to distribute are automatically found by
+Automake: all source files are automatically included in a distribution,
+as are all `Makefile.am' and `Makefile.in' files.  Automake also has a
+built-in list of commonly used files that are automatically included if
+they are found in the current directory (either physically, or as the
+target of a `Makefile.am' rule); this list is printed by `automake
+--help'.  Note that some files in this list are actually distributed
+only if other certain conditions hold (for example, the `config.h.top'
+and `config.h.bot' files are automatically distributed only if, e.g.,
+`AC_CONFIG_HEADERS([config.h])' is used in `configure.ac').  Also,
+files that are read by `configure' (i.e. the source files corresponding
+to the files specified in various Autoconf macros such as
+`AC_CONFIG_FILES' and siblings) are automatically distributed.  Files
+included in a `Makefile.am' (using `include') or in `configure.ac'
+(using `m4_include'), and helper scripts installed with `automake
+--add-missing' are also distributed.
+
+   Still, sometimes there are files that must be distributed, but which
+are not covered in the automatic rules.  These files should be listed in
+the `EXTRA_DIST' variable.  You can mention files from subdirectories
+in `EXTRA_DIST'.
+
+   You can also mention a directory in `EXTRA_DIST'; in this case the
+entire directory will be recursively copied into the distribution.
+Please note that this will also copy _everything_ in the directory,
+including, e.g., Subversion's `.svn' private directories or CVS/RCS
+version control files.  We recommend against using this feature.
+
+   If you define `SUBDIRS', Automake will recursively include the
+subdirectories in the distribution.  If `SUBDIRS' is defined
+conditionally (*note Conditionals::), Automake will normally include
+all directories that could possibly appear in `SUBDIRS' in the
+distribution.  If you need to specify the set of directories
+conditionally, you can set the variable `DIST_SUBDIRS' to the exact
+list of subdirectories to include in the distribution (*note
+Conditional Subdirectories::).
+
+\1f
+File: automake.info,  Node: Fine-grained Distribution Control,  Next: The dist Hook,  Prev: Basics of Distribution,  Up: Dist
+
+14.2 Fine-grained Distribution Control
+======================================
+
+Sometimes you need tighter control over what does _not_ go into the
+distribution; for instance, you might have source files that are
+generated and that you do not want to distribute.  In this case
+Automake gives fine-grained control using the `dist' and `nodist'
+prefixes.  Any primary or `_SOURCES' variable can be prefixed with
+`dist_' to add the listed files to the distribution.  Similarly,
+`nodist_' can be used to omit the files from the distribution.
+
+   As an example, here is how you would cause some data to be
+distributed while leaving some source code out of the distribution:
+
+     dist_data_DATA = distribute-this
+     bin_PROGRAMS = foo
+     nodist_foo_SOURCES = do-not-distribute.c
+
+\1f
+File: automake.info,  Node: The dist Hook,  Next: Checking the Distribution,  Prev: Fine-grained Distribution Control,  Up: Dist
+
+14.3 The dist Hook
+==================
+
+Occasionally it is useful to be able to change the distribution before
+it is packaged up.  If the `dist-hook' rule exists, it is run after the
+distribution directory is filled, but before the actual distribution
+archives are created.  One way to use this is for removing unnecessary
+files that get recursively included by specifying a directory in
+`EXTRA_DIST':
+
+     EXTRA_DIST = doc
+     dist-hook:
+             rm -rf `find $(distdir)/doc -type d -name .svn`
+
+Note that the `dist-hook' recipe shouldn't assume that the regular
+files in the distribution directory are writable; this might not be the
+case if one is packaging from a read-only source tree, or when a `make
+distcheck' is being done.  For similar reasons, the recipe shouldn't
+assume that the subdirectories put into the distribution directory as
+effect of having them listed in `EXTRA_DIST' are writable.  So, if the
+`dist-hook' recipe wants to modify the content of an existing file (or
+`EXTRA_DIST' subdirectory) in the distribution directory, it should
+explicitly to make it writable first:
+
+     EXTRA_DIST = README doc
+     dist-hook:
+             chmod u+w $(distdir)/README $(distdir)/doc
+             echo "Distribution date: `date`" >> README
+             rm -f $(distdir)/doc/HACKING
+
+   Two variables that come handy when writing `dist-hook' rules are
+`$(distdir)' and `$(top_distdir)'.
+
+   `$(distdir)' points to the directory where the `dist' rule will copy
+files from the current directory before creating the tarball.  If you
+are at the top-level directory, then `distdir = $(PACKAGE)-$(VERSION)'.
+When used from subdirectory named `foo/', then `distdir =
+../$(PACKAGE)-$(VERSION)/foo'.  `$(distdir)' can be a relative or
+absolute path, do not assume any form.
+
+   `$(top_distdir)' always points to the root directory of the
+distributed tree.  At the top-level it's equal to `$(distdir)'.  In the
+`foo/' subdirectory `top_distdir = ../$(PACKAGE)-$(VERSION)'.
+`$(top_distdir)' too can be a relative or absolute path.
+
+   Note that when packages are nested using `AC_CONFIG_SUBDIRS' (*note
+Subpackages::), then `$(distdir)' and `$(top_distdir)' are relative to
+the package where `make dist' was run, not to any sub-packages involved.
+
diff --git a/doc/automake.info-2 b/doc/automake.info-2
new file mode 100644 (file)
index 0000000..aaedf01
--- /dev/null
@@ -0,0 +1,4972 @@
+This is automake.info, produced by makeinfo version 4.13 from
+/home/stefano/src/am/branches/trunks/doc/automake.texi.
+
+This manual is for GNU Automake (version 1.12.1, 1 June 2012), a
+program that creates GNU standards-compliant Makefiles from template
+files.
+
+   Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with no Front-Cover texts,
+     and with no Back-Cover Texts.  A copy of the license is included
+     in the section entitled "GNU Free Documentation License."
+
+
+INFO-DIR-SECTION Software development
+START-INFO-DIR-ENTRY
+* Automake: (automake).         Making GNU standards-compliant Makefiles.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION Individual utilities
+START-INFO-DIR-ENTRY
+* aclocal-invocation: (automake)aclocal Invocation.   Generating aclocal.m4.
+* automake-invocation: (automake)automake Invocation. Generating Makefile.in.
+END-INFO-DIR-ENTRY
+
+\1f
+File: automake.info,  Node: Checking the Distribution,  Next: The Types of Distributions,  Prev: The dist Hook,  Up: Dist
+
+14.4 Checking the Distribution
+==============================
+
+Automake also generates a `distcheck' rule that can be of help to
+ensure that a given distribution will actually work.  Simplifying a
+bit, we can say this rule first makes a distribution, and then,
+_operating from it_, takes the following steps:
+   * tries to do a `VPATH' build (*note VPATH Builds::), with the
+     `srcdir' and all its content made _read-only_;
+
+   * runs the test suite (with `make check') on this fresh build;
+
+   * installs the package in a temporary directory (with `make
+     install'), and tries runs the test suite on the resulting
+     installation (with `make installcheck');
+
+   * checks that the package can be correctly uninstalled (by `make
+     uninstall') and cleaned (by `make distclean');
+
+   * finally, makes another tarball to ensure the distribution is
+     self-contained.
+
+DISTCHECK_CONFIGURE_FLAGS
+-------------------------
+
+Building the package involves running `./configure'.  If you need to
+supply additional flags to `configure', define them in the
+`AM_DISTCHECK_CONFIGURE_FLAGS' variable in your top-level
+`Makefile.am'.  The user can still extend or override the flags
+provided there by defining the `DISTCHECK_CONFIGURE_FLAGS' variable, on
+the command line when invoking `make'.
+
+   Still, developers are encouraged to strive to make their code
+buildable without requiring any special configure option; thus, in
+general, you shouldn't define `AM_DISTCHECK_CONFIGURE_FLAGS'. However,
+there might be few scenarios in which the use of this variable is
+justified.  GNU `m4' offers an example.  GNU `m4' configures by default
+with its experimental and seldom used "changeword" feature disabled; so
+in its case it is useful to have `make distcheck' run configure with
+the `--with-changeword' option, to ensure that the code for changeword
+support still compiles correctly.  GNU `m4' also employs the
+`AM_DISTCHECK_CONFIGURE_FLAGS' variable to stress-test the use of
+`--program-prefix=g', since at one point the `m4' build system had a
+bug where `make installcheck' was wrongly assuming it could blindly
+test "`m4'", rather than the just-installed "`gm4'".
+
+distcheck-hook
+--------------
+
+If the `distcheck-hook' rule is defined in your top-level
+`Makefile.am', then it will be invoked by `distcheck' after the new
+distribution has been unpacked, but before the unpacked copy is
+configured and built.  Your `distcheck-hook' can do almost anything,
+though as always caution is advised.  Generally this hook is used to
+check for potential distribution errors not caught by the standard
+mechanism.  Note that `distcheck-hook' as well as
+`AM_DISTCHECK_CONFIGURE_FLAGS' and `DISTCHECK_CONFIGURE_FLAGS' are not
+honored in a subpackage `Makefile.am', but the flags from
+`AM_DISTCHECK_CONFIGURE_FLAGS' and `DISTCHECK_CONFIGURE_FLAGS' are
+passed down to the `configure' script of the subpackage.
+
+distcleancheck
+--------------
+
+Speaking of potential distribution errors, `distcheck' also ensures
+that the `distclean' rule actually removes all built files.  This is
+done by running `make distcleancheck' at the end of the `VPATH' build.
+By default, `distcleancheck' will run `distclean' and then make sure
+the build tree has been emptied by running
+`$(distcleancheck_listfiles)'.  Usually this check will find generated
+files that you forgot to add to the `DISTCLEANFILES' variable (*note
+Clean::).
+
+   The `distcleancheck' behavior should be OK for most packages,
+otherwise you have the possibility to override the definition of either
+the `distcleancheck' rule, or the `$(distcleancheck_listfiles)'
+variable.  For instance, to disable `distcleancheck' completely, add
+the following rule to your top-level `Makefile.am':
+
+     distcleancheck:
+             @:
+
+   If you want `distcleancheck' to ignore built files that have not
+been cleaned because they are also part of the distribution, add the
+following definition instead:
+
+     distcleancheck_listfiles = \
+       find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
+            sh '{}' ';'
+
+   The above definition is not the default because it's usually an
+error if your Makefiles cause some distributed files to be rebuilt when
+the user build the package.  (Think about the user missing the tool
+required to build the file; or if the required tool is built by your
+package, consider the cross-compilation case where it can't be run.)
+There is an entry in the FAQ about this (*note Errors with
+distclean::), make sure you read it before playing with
+`distcleancheck_listfiles'.
+
+distuninstallcheck
+------------------
+
+`distcheck' also checks that the `uninstall' rule works properly, both
+for ordinary and `DESTDIR' builds.  It does this by invoking `make
+uninstall', and then it checks the install tree to see if any files are
+left over.  This check will make sure that you correctly coded your
+`uninstall'-related rules.
+
+   By default, the checking is done by the `distuninstallcheck' rule,
+and the list of files in the install tree is generated by
+`$(distuninstallcheck_listfiles)' (this is a variable whose value is a
+shell command to run that prints the list of files to stdout).
+
+   Either of these can be overridden to modify the behavior of
+`distcheck'.  For instance, to disable this check completely, you would
+write:
+
+     distuninstallcheck:
+             @:
+
+\1f
+File: automake.info,  Node: The Types of Distributions,  Prev: Checking the Distribution,  Up: Dist
+
+14.5 The Types of Distributions
+===============================
+
+Automake generates rules to provide archives of the project for
+distributions in various formats.  Their targets are:
+
+`dist-bzip2'
+     Generate a bzip2 tar archive of the distribution.  bzip2 archives
+     are frequently smaller than gzipped archives.  By default, this
+     rule makes `bzip2' use a compression option of `-9'.  To make it
+     use a different one, set the `BZIP2' environment variable.  For
+     example, `make dist-bzip2 BZIP2=-7'.  
+
+`dist-gzip'
+     Generate a gzip tar archive of the distribution.  
+
+`dist-lzip'
+     Generate an `lzip' tar archive of the distribution.  `lzip'
+     archives are frequently smaller than `bzip2'-compressed archives.  
+
+`dist-shar'
+     Generate a shar archive of the distribution.  
+
+`dist-xz'
+     Generate an `xz' tar archive of the distribution.  `xz' archives
+     are frequently smaller than `bzip2'-compressed archives.  By
+     default, this rule makes `xz' use a compression option of `-e'.
+     To make it use a different one, set the `XZ_OPT' environment
+     variable.  For example, run this command to use the default
+     compression ratio, but with a progress indicator: `make dist-xz
+     XZ_OPT=-7e'.  
+
+`dist-zip'
+     Generate a zip archive of the distribution.  
+
+`dist-tarZ'
+     Generate a compressed tar archive of the distribution.  
+
+   The rule `dist' (and its historical synonym `dist-all') will create
+archives in all the enabled formats, *note Options::.  By default, only
+the `dist-gzip' target is hooked to `dist'.
+
+\1f
+File: automake.info,  Node: Tests,  Next: Rebuilding,  Prev: Dist,  Up: Top
+
+15 Support for test suites
+**************************
+
+Automake can generate code to handle two kinds of test suites.  One is
+based on integration with the `dejagnu' framework.  The other (and most
+used) form is based on the use of generic test scripts, and its
+activation is triggered by the definition of the special `TESTS'
+variable.  This second form allows for various degrees of sophistication
+and customization; in particular, it allows for concurrent execution of
+test scripts, use of established test protocols such as TAP, and
+definition of custom test drivers and test runners.
+
+In either case, the testsuite is invoked via `make check'.
+
+* Menu:
+
+* Generalities about Testing::  Concepts and terminology about testing
+* Simple Tests::                Listing test scripts in `TESTS'
+* Custom Test Drivers::         Writing and using custom test drivers
+* Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
+* DejaGnu Tests::               Interfacing with the `dejagnu' testing framework
+* Install Tests::               Running tests on installed packages
+
+\1f
+File: automake.info,  Node: Generalities about Testing,  Next: Simple Tests,  Up: Tests
+
+15.1 Generalities about Testing
+===============================
+
+The purpose of testing is to determine whether a program or system
+behaves as expected (e.g., known inputs produce the expected outputs,
+error conditions are correctly handled or reported, and older bugs do
+not resurface).
+
+   The minimal unit of testing is usually called _test case_, or simply
+_test_.  How a test case is defined or delimited, and even what exactly
+_constitutes_ a test case, depends heavily on the testing paradigm
+and/or framework in use, so we won't attempt any more precise
+definition.  The set of the test cases for a given program or system
+constitutes its _testsuite_.
+
+   A _test harness_ (also _testsuite harness_) is a program or software
+component that executes all (or part of) the defined test cases,
+analyzes their outcomes, and report or register these outcomes
+appropriately.  Again, the details of how this is accomplished (and how
+the developer and user can influence it or interface with it) varies
+wildly, and we'll attempt no precise definition.
+
+   A test is said to _pass_ when it can determine that the condition or
+behaviour it means to verify holds, and is said to _fail_ when it can
+determine that such condition of behaviour does _not_ hold.
+
+   Sometimes, tests can rely on non-portable tools or prerequisites, or
+simply make no sense on a given system (for example, a test checking a
+Windows-specific feature makes no sense on a GNU/Linux system).  In this
+case, accordingly to the definition above, the tests can neither be
+considered passed nor failed; instead, they are _skipped_ - i.e., they
+are not run, or their result is anyway ignored for what concerns the
+count of failures an successes.  Skips are usually explicitly reported
+though, so that the user will be aware that not all of the testsuite
+has really run.
+
+   It's not uncommon, especially during early development stages, that
+some tests fail for known reasons, and that the developer doesn't want
+to tackle these failures immediately (this is especially true when the
+failing tests deal with corner cases).  In this situation, the better
+policy is to declare that each of those failures is an _expected
+failure_ (or _xfail_).  In case a test that is expected to fail ends up
+passing instead, many testing environments will flag the result as a
+special kind of failure called _unexpected pass_ (or _xpass_).
+
+   Many testing environments and frameworks distinguish between test
+failures and hard errors.  As we've seen, a test failure happens when
+some invariant or expected behaviour of the software under test is not
+met.  An _hard error_ happens when e.g., the set-up of a test case
+scenario fails, or when some other unexpected or highly undesirable
+condition is encountered (for example, the program under test
+experiences a segmentation fault).
+
+   _TODO_: Links to other test harnesses (esp. those sharing our
+terminology)?
+
+\1f
+File: automake.info,  Node: Simple Tests,  Next: Custom Test Drivers,  Prev: Generalities about Testing,  Up: Tests
+
+15.2 Simple Tests
+=================
+
+* Menu:
+
+* Scripts-based Testsuites::    Automake-specific concepts and terminology
+* Serial Test Harness::         Older (and obsolescent) serial test harness
+* Parallel Test Harness::       Generic concurrent test harness
+
+\1f
+File: automake.info,  Node: Scripts-based Testsuites,  Next: Serial Test Harness,  Up: Simple Tests
+
+15.2.1 Scripts-based Testsuites
+-------------------------------
+
+If the special variable `TESTS' is defined, its value is taken to be a
+list of programs or scripts to run in order to do the testing.  Under
+the appropriate circumstances, it's possible for `TESTS' to list also
+data files to be passed to one or more test scripts defined by
+different means (the so-called "log compilers", *note Parallel Test
+Harness::).
+
+   Test scripts can be executed serially or concurrently.  Automake
+supports both these kinds of test execution, with the serial test
+harness being the default (for backward-compatibility reasons only, as
+its use is nowadays discouraged).  The concurrent test harness relies
+on the concurrence capabilities (if any) offered by the underlying
+`make' implementation, and can thus only be as good as those are.
+
+   By default, only the exit statuses of the test scripts are
+considered when determining the testsuite outcome.  But Automake allows
+also the use of more complex test protocols, either standard (*note
+Using the TAP test protocol::) or custom (*note Custom Test Drivers::).
+Note that you can enable such protocols only when the parallel harness
+is used: they won't work with the serial test harness.  In the rest of
+this section we are going to concentrate mostly on protocol-less tests,
+since we cover test protocols in a later section (again, *note Custom
+Test Drivers::).
+
+   When no test protocol is in use, an exit status of 0 from a test
+script will denote a success, an exit status of 77 a skipped test, an
+exit status of 99 an hard error, and any other exit status will denote
+a failure.
+
+   You may define the variable `XFAIL_TESTS' to a list of tests
+(usually a subset of `TESTS') that are expected to fail; this will
+effectively reverse the result of those tests (with the provision that
+skips and hard errors remain untouched).  You may also instruct the
+testsuite harness to treat hard errors like simple failures, by defining
+the `DISABLE_HARD_ERRORS' make variable to a nonempty value.
+
+   Note however that, for tests based on more complex test protocols,
+the exact effects of `XFAIL_TESTS' and `DISABLE_HARD_ERRORS' might
+change, or they might even have no effect at all (for example, in tests
+using TAP, there is not way to disable hard errors, and the
+`DISABLE_HARD_ERRORS' variable has no effect on them).
+
+   The result of each test case run by the scripts in `TESTS' will be
+printed on standard output, along with the test name.  For test
+protocols that allow more test cases per test script (such as TAP), a
+number, identifier and/or brief description specific for the single
+test case is expected to be printed in addition to the name of the test
+script.  The possible results (whose meanings should be clear from the
+previous *note Generalities about Testing::) are `PASS', `FAIL',
+`SKIP', `XFAIL', `XPASS' and `ERROR'.  Here is an example of output
+from an hypothetical testsuite that uses both plain and TAP tests:
+     PASS: foo.sh
+     PASS: zardoz.tap 1 - Daemon started
+     PASS: zardoz.tap 2 - Daemon responding
+     SKIP: zardoz.tap 3 - Daemon uses /proc # SKIP /proc is not mounted
+     PASS: zardoz.tap 4 - Daemon stopped
+     SKIP: bar.sh
+     PASS: mu.tap 1
+     XFAIL: mu.tap 2 # TODO frobnication not yet implemented
+
+A testsuite summary (expected to report at least the number of run,
+skipped and failed tests) will be printed at the end of the testsuite
+run.
+
+   If the Automake option `color-tests' is used (*note Options::) and
+standard output is connected to a capable terminal, then the test
+results and the summary are colored appropriately.  The user can disable
+colored output by setting the `make' variable `AM_COLOR_TESTS=no', or
+force colored output even without a connecting terminal with
+`AM_COLOR_TESTS=always'.  It's also worth noting that some `make'
+implementations, when used in parallel mode, have slightly different
+semantics (*note Parallel make: (autoconf)Parallel make.), which can
+break the automatic detection of a connection to a capable terminal.
+If this is the case, you'll have to resort to the use of
+`AM_COLOR_TESTS=always' in order to have the testsuite output colorized.
+
+   Test programs that need data files should look for them in `srcdir'
+(which is both a make variable and an environment variable made
+available to the tests), so that they work when building in a separate
+directory (*note Build Directories: (autoconf)Build Directories.), and
+in particular for the `distcheck' rule (*note Checking the
+Distribution::).
+
+   The `AM_TESTS_ENVIRONMENT' and `TESTS_ENVIRONMENT' variables can be
+used to run initialization code and set environment variables for the
+test scripts.  The former variable is developer-reserved, and can be
+defined in the `Makefile.am', while the latter is reserved for the
+user, which can employ it to extend or override the settings in the
+former; for this to work portably, however, the contents of a non-empty
+`AM_TESTS_ENVIRONMENT' _must_ be terminated by a semicolon.
+
+   The `AM_TESTS_FD_REDIRECT' variable can be used to define file
+descriptor redirections for the test scripts.  One might think that
+`AM_TESTS_ENVIRONMENT' could be used for this purpose, but experience
+has shown that doing so portably is practically impossible.  The main
+hurdle is constituted by Korn shells, which usually set the
+close-on-exec flag on file descriptors opened with the `exec' builtin,
+thus rendering an idiom like `AM_TESTS_ENVIRONMENT = exec 9>&2;'
+ineffectual.  This issue also affects some Bourne shells, such as the
+HP-UX's `/bin/sh',
+
+     AM_TESTS_ENVIRONMENT = \
+     ## Some environment initializations are kept in a separate shell
+     ## file `tests-env.sh', which can make it easier to also run tests
+     ## from the command line.
+       . $(srcdir)/tests-env.sh; \
+     ## On Solaris, prefer more POSIX-compliant versions of the standard
+     ## tools by default.
+       if test -d /usr/xpg4/bin; then \
+         PATH=/usr/xpg4/bin:$$PATH; export PATH; \
+       fi;
+     ## With this, the test scripts will be able to print diagnostic
+     ## messages to the original standard error stream, even if the test
+     ## driver redirects the stderr of the test scripts to a log file
+     ## before executing them.
+     AM_TESTS_FD_REDIRECT = 9>&2
+
+Note however that `AM_TESTS_ENVIRONMENT' is, for historical and
+implementation reasons, _not_ supported by the serial harness (*note
+Serial Test Harness::).
+
+   Automake ensures that each file listed in `TESTS' is built before it
+is run; you can list both source and derived programs (or scripts) in
+`TESTS'; the generated rule will look both in `srcdir' and `.'.  For
+instance, you might want to run a C program as a test.  To do this you
+would list its name in `TESTS' and also in `check_PROGRAMS', and then
+specify it as you would any other program.
+
+   Programs listed in `check_PROGRAMS' (and `check_LIBRARIES',
+`check_LTLIBRARIES'...) are only built during `make check', not during
+`make all'.  You should list there any program needed by your tests
+that does not need to be built by `make all'.  Note that
+`check_PROGRAMS' are _not_ automatically added to `TESTS' because
+`check_PROGRAMS' usually lists programs used by the tests, not the
+tests themselves.  Of course you can set `TESTS = $(check_PROGRAMS)' if
+all your programs are test cases.
+
+\1f
+File: automake.info,  Node: Serial Test Harness,  Next: Parallel Test Harness,  Prev: Scripts-based Testsuites,  Up: Simple Tests
+
+15.2.2 Serial Test Harness
+--------------------------
+
+_NOTE:_ This harness, while still being the default one, is
+obsolescent, and kept mostly for backward-compatibility reasons.  The
+user is advised to use the parallel test harness instead (*note
+Parallel Test Harness::).  Be warned that future Automake versions
+might switch to use that more modern and feature-rich harness by
+default.
+
+   The serial test harness is enabled by the Automake option
+`serial-tests'. It operates by simply running the tests serially, one
+at the time, without any I/O redirection.  It's up to the user to
+implement logging of tests' output, if that's requited or desired.
+
+   For historical and implementation reasons, the `AM_TESTS_ENVIRONMENT'
+variable is _not_ supported by this harness (it will be silently
+ignored if defined); only `TESTS_ENVIRONMENT' is, and it is to be
+considered a developer-reserved variable.  This is done so that, when
+using the serial harness, `TESTS_ENVIRONMENT' can be defined to an
+invocation of an interpreter through which the tests are to be run.
+For instance, the following setup may be used to run tests with Perl:
+
+     TESTS_ENVIRONMENT = $(PERL) -Mstrict -w
+     TESTS = foo.pl bar.pl baz.pl
+
+It's important to note that the use of `TESTS_ENVIRONMENT' endorsed
+here would be _invalid_ with the parallel harness.  That harness
+provides a more elegant way to achieve the same effect, with the further
+benefit of freeing the `TESTS_ENVIRONMENT' variable for the user (*note
+Parallel Test Harness::).
+
+   Another, less serious limit of the serial harness is that it doesn't
+really distinguish between simple failures and hard errors; this is due
+to historical reasons only, and might be fixed in future Automake
+versions.
+
+\1f
+File: automake.info,  Node: Parallel Test Harness,  Prev: Serial Test Harness,  Up: Simple Tests
+
+15.2.3 Parallel Test Harness
+----------------------------
+
+The parallel (or concurrent) test harness is enabled by the Automake
+option `parallel-tests'.  It features automatic collection of the test
+scripts output in `.log' files, concurrent execution of tests with
+`make -j', specification of inter-test dependencies, lazy reruns of
+tests that have not completed in a prior run, and hard errors for
+exceptional failures.
+
+   This harness is still somewhat experimental and may undergo changes
+in order to satisfy additional portability requirements.
+
+   The parallel test harness operates by defining a set of `make' rules
+that run the test scripts listed in `TESTS', and, for each such script,
+save its output in a corresponding `.log' file and its results (and
+other "metadata", *note API for Custom Test Drivers::) in a
+corresponding `.trs' (as in Test ReSults) file.  The `.log' file will
+contain all the output emitted by the test on its standard output and
+its standard error.  The `.trs' file will contain, among the other
+things, the results of the test cases run by the script.
+
+   The parallel test harness will also create a summary log file,
+`TEST_SUITE_LOG', which defaults to `test-suite.log' and requires a
+`.log' suffix.  This file depends upon all the `.log' and `.trs' files
+created for the test scripts listed in `TESTS'.
+
+   As with the serial harness 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 `test-suite.log' file.  If the variable `VERBOSE' is set, this
+file is output after the summary.  For best results, the tests should
+be verbose by default now.
+
+   Each couple of `.log' and `.trs' files is created when the
+corresponding test has completed.  The set of log files is listed in
+the read-only variable `TEST_LOGS', and defaults to `TESTS', with the
+executable extension if any (*note EXEEXT::), as well as any suffix
+listed in `TEST_EXTENSIONS' removed, and `.log' appended.  Results are
+undefined if a test file name ends in several concatenated suffixes.
+`TEST_EXTENSIONS' defaults to `.test'; it can be overridden by the
+user, in which case any extension listed in it must be constituted by a
+dot, followed by a non-digit alphabetic character, followed by any
+number of alphabetic characters.  For example, `.sh', `.T' and `.t1'
+are valid extensions, while `.x-y', `.6c' and `.t.1' are not.
+
+   For tests that match an extension `.EXT' listed in
+`TEST_EXTENSIONS', you can provide a custom "test runner" using the
+variable `EXT_LOG_COMPILER' (note the upper-case extension) and pass
+options in `AM_EXT_LOG_FLAGS' and allow the user to pass options in
+`EXT_LOG_FLAGS'.  It will cause all tests with this extension to be
+called with this runner.  For all tests without a registered extension,
+the variables `LOG_COMPILER', `AM_LOG_FLAGS', and `LOG_FLAGS' may be
+used.  For example,
+
+     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
+
+will invoke `$(PERL) -w foo.pl', `$(PYTHON) -v bar.py', and
+`./wrapper-script -d baz' to produce `foo.log', `bar.log', and
+`baz.log', respectively.  The `foo.trs', `bar.trs' and `baz.trs' files
+will be automatically produced as a side-effect.
+
+   It's important to note that, differently from what we've seen for the
+serial test harness (*note Parallel Test Harness::), the
+`AM_TESTS_ENVIRONMENT' and `TESTS_ENVIRONMENT' variables _cannot_ be
+use to define a custom test runner; the `LOG_COMPILER' and `LOG_FLAGS'
+(or their extension-specific counterparts) should be used instead:
+
+     ## This is WRONG!
+     AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib' $(PERL) -Mstrict -w
+
+     ## Do this instead.
+     AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib'; export PERL5LIB;
+     LOG_COMPILER = $(PERL)
+     AM_LOG_FLAGS = -Mstrict -w
+
+   By default, the test suite harness will run all tests, but there are
+several ways to limit the set of tests that are run:
+
+   * You can set the `TESTS' variable.  For example, you can use a
+     command like this to run only a subset of the tests:
+
+          env TESTS="foo.test bar.test" make -e check
+
+     Note however that the command above will unconditionally overwrite
+     the `test-suite.log' file, thus clobbering the recorded results of
+     any previous testsuite run.  This might be undesirable for packages
+     whose testsuite takes long time to execute.  Luckily, this problem
+     can easily be avoided by overriding also `TEST_SUITE_LOG' at
+     runtime; for example,
+
+          env TEST_SUITE_LOG=partial.log TESTS="..." make -e check
+
+     will write the result of the partial testsuite runs to the
+     `partial.log', without touching `test-suite.log'.
+
+   * You can set the `TEST_LOGS' variable.  By default, this variable is
+     computed at `make' run time from the value of `TESTS' as described
+     above.  For example, you can use the following:
+
+          set x subset*.log; shift
+          env TEST_LOGS="foo.log $*" make -e check
+
+     The comments made above about `TEST_SUITE_LOG' overriding applies
+     here too.
+
+   * By default, the test harness removes all old per-test `.log' and
+     `.trs' files before it starts running tests to regenerate them.
+     The variable `RECHECK_LOGS' contains the set of `.log' (and, by
+     implication, `.trs') files which are removed.  `RECHECK_LOGS'
+     defaults to `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:
+
+          env RECHECK_LOGS= make -e check
+
+   * You can ensure that all tests are rerun which have failed or passed
+     unexpectedly, by running `make recheck' in the test directory.
+     This convenience target will set `RECHECK_LOGS' appropriately
+     before invoking the main test harness.
+
+In order to guarantee an ordering between tests even with `make -jN',
+dependencies between the corresponding `.log' files may be specified
+through usual `make' dependencies.  For example, the following snippet
+lets the test named `foo-execute.test' depend upon completion of the
+test `foo-compile.test':
+
+     TESTS = foo-compile.test foo-execute.test
+     foo-execute.log: foo-compile.log
+
+Please note that this ordering ignores the _results_ of required tests,
+thus the test `foo-execute.test' is run even if the test
+`foo-compile.test' 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 `TEST_EXTENSIONS'.
+
+   Tests without such specified dependencies may be run concurrently
+with parallel `make -jN', so be sure they are prepared for concurrent
+execution.
+
+   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
+`EXTRA_PROGRAMS' instead of with `check_PROGRAMS', as the former allows
+intertwined compilation and test execution (but note that
+`EXTRA_PROGRAMS' are not cleaned automatically, *note Uniform::).
+
+   The variables `TESTS' and `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 `.test', so that one of the inference rules
+generated by `automake' can apply.  For literal test names, `automake'
+can generate per-target rules to avoid this limitation.
+
+   Please note that it is currently not possible to use `$(srcdir)/' or
+`$(top_srcdir)/' in the `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 `make' implementations (*note Make Target
+Lookup: (autoconf)Make Target Lookup, the semantics of FreeBSD and
+OpenBSD `make' conflict with this).  In case of doubt you may want to
+require to use GNU `make', or work around the issue with inference
+rules to generate the tests.
+
+\1f
+File: automake.info,  Node: Custom Test Drivers,  Next: Using the TAP test protocol,  Prev: Simple Tests,  Up: Tests
+
+15.3 Custom Test Drivers
+========================
+
+* Menu:
+
+* Overview of Custom Test Drivers Support::
+* Declaring Custom Test Drivers::
+* API for Custom Test Drivers::
+
+\1f
+File: automake.info,  Node: Overview of Custom Test Drivers Support,  Next: Declaring Custom Test Drivers,  Up: Custom Test Drivers
+
+15.3.1 Overview of Custom Test Drivers Support
+----------------------------------------------
+
+Starting from Automake version 1.12, the parallel test harness allows
+the package authors to use third-party custom test drivers, in case the
+default ones are inadequate for their purposes, or do not support their
+testing protocol of choice.
+
+   A custom test driver is expected to properly run the test programs
+passed to it (including the command-line arguments passed to those
+programs, if any), to analyze their execution and outcome, to create
+the `.log' and `.trs' files associated to these test runs, and to
+display the test results on the console. It is responsibility of the
+author of the test driver to ensure that it implements all the above
+steps meaningfully and correctly; Automake isn't and can't be of any
+help here.  On the other hand, the Automake-provided code for testsuite
+summary generation offers support for test drivers allowing several
+test results per test script, if they take care to register such
+results properly (*note Log files generation and test results
+recording::).
+
+   The exact details of how test scripts' results are to be determined
+and analyzed is left to the individual drivers.  Some drivers might only
+consider the test script exit status (this is done for example by the
+default test driver used by the parallel test harness, described in the
+previous section).  Other drivers might implement more complex and
+advanced test protocols, which might require them to parse and
+interpreter the output emitted by the test script they're running
+(examples of such protocols are TAP and SubUnit).
+
+   It's very important to note that, even when using custom test
+drivers, most of the infrastructure described in the previous section
+about the parallel harness remains in place; this includes:
+
+   * list of test scripts defined in `TESTS', and overridable at
+     runtime through the redefinition of `TESTS' or `TEST_LOGS';
+
+   * concurrency through the use of `make''s option `-j';
+
+   * per-test `.log' and `.trs' files, and generation of a summary
+     `.log' file from them;
+
+   * `recheck' target, `RECHECK_LOGS' variable, and lazy reruns of
+     tests;
+
+   * inter-test dependencies;
+
+   * support for `check_*' variables (`check_PROGRAMS',
+     `check_LIBRARIES', ...);
+
+   * use of `VERBOSE' environment variable to get verbose output on
+     testsuite failures;
+
+   * definition and honoring of `TESTS_ENVIRONMENT',
+     `AM_TESTS_ENVIRONMENT' and `AM_TESTS_FD_REDIRECT' variables;
+
+   * definition of generic and extension-specific `LOG_COMPILER' and
+     `LOG_FLAGS' variables.
+
+On the other hand, the exact semantics of how (and if) `color-tests',
+`XFAIL_TESTS', and hard errors are supported and handled is left to the
+individual test drivers.
+
+\1f
+File: automake.info,  Node: Declaring Custom Test Drivers,  Next: API for Custom Test Drivers,  Prev: Overview of Custom Test Drivers Support,  Up: Custom Test Drivers
+
+15.3.2 Declaring Custom Test Drivers
+------------------------------------
+
+Custom testsuite drivers are declared by defining the make variables
+`LOG_DRIVER' or `EXT_LOG_DRIVER' (where EXT must be declared in
+`TEST_EXTENSIONS').  They must be defined to programs or scripts that
+will be used to drive the execution, logging, and outcome report of the
+tests with corresponding extensions (or of those with no registered
+extension in the case of `LOG_DRIVER').  Clearly, multiple distinct
+test drivers can be declared in the same `Makefile.am'.  Note moreover
+that the `LOG_DRIVER' variables are _not_ a substitute for the
+`LOG_COMPILER' variables: the two sets of variables can, and often do,
+usefully and legitimately coexist.
+
+   The developer-reserved variable `AM_LOG_DRIVER_FLAGS' and the
+user-reserved variable `LOG_DRIVER_FLAGS' can be used to define flags
+that will be passed to each invocation of `LOG_DRIVER', with the
+user-defined flags obviously taking precedence over the
+developer-reserved ones.  Similarly, for each extension EXT declared in
+`TEST_EXTENSIONS', flags listed in `AM_EXT_LOG_DRIVER_FLAGS' and
+`EXT_LOG_DRIVER_FLAGS' will be passed to invocations of
+`EXT_LOG_DRIVER'.
+
+\1f
+File: automake.info,  Node: API for Custom Test Drivers,  Prev: Declaring Custom Test Drivers,  Up: Custom Test Drivers
+
+15.3.3 API for Custom Test Drivers
+----------------------------------
+
+Note that _the APIs described here are still highly experimental_, and
+will very likely undergo tightenings and likely also extensive changes
+in the future, to accommodate for new features or to satisfy additional
+portability requirements.
+
+   The main characteristic of these APIs is that they are designed to
+share as much infrastructure, semantics, and implementation details as
+possible with the parallel test harness and its default driver.
+
+* Menu:
+
+* Command-line arguments for test drivers::
+* Log files generation and test results recording::
+* Testsuite progress output::
+
+\1f
+File: automake.info,  Node: Command-line arguments for test drivers,  Next: Log files generation and test results recording,  Up: API for Custom Test Drivers
+
+15.3.3.1 Command-line arguments for test drivers
+................................................
+
+A custom driver can rely on various command-line options and arguments
+being passed to it automatically by the Automake's `parallel-tests'
+harness.  It is _mandatory_ that it understands all of them (even if
+the exact interpretation of the associated semantics can legitimately
+change between a test driver and another, and even be a no-op in some
+drivers).
+
+Here is the list of options:
+
+`--test-name=NAME'
+     The name of the test, with VPATH prefix (if any) removed.  This
+     can have a suffix and a directory component (as in e.g.,
+     `sub/foo.test'), and is mostly meant to be used in console reports
+     about testsuite advancements and results (*note Testsuite progress
+     output::).
+
+`--log-file=`PATH.log''
+     The `.log' file the test driver must create (*note Basics of test
+     metadata::).  If it has a directory component (as in e.g.,
+     `sub/foo.log'), the test harness will ensure that such directory
+     exists _before_ the test driver is called.
+
+`--trs-file=`PATH.trs''
+     The `.trs' file the test driver must create (*note Basics of test
+     metadata::).  If it has a directory component (as in e.g.,
+     `sub/foo.trs'), the test harness will ensure that such directory
+     exists _before_ the test driver is called.
+
+`--color-tests={yes|no}'
+     Whether the console output should be colorized or not (*note
+     Simple tests and color-tests::, to learn when this option gets
+     activated and when it doesn't).
+
+`--expect-failure={yes|no}'
+     Whether the tested program is expected to fail.
+
+`--enable-hard-errors={yes|no}'
+     Whether "hard errors" in the tested program should be treated
+     differently from normal failures or not (the default should be
+     `yes').  The exact meaning of "hard error" is highly dependent
+     from the test protocols or conventions in use.
+
+`--'
+     Explicitly terminate the list of options.
+
+The first non-option argument passed to the test driver is the program
+to be run, and all the following ones are command-line options and
+arguments for this program.
+
+   Note that the exact semantics attached to the `--color-tests',
+`--expect-failure' and `--enable-hard-errors' options are left up to
+the individual test drivers.  Still, having a behaviour compatible or
+at least similar to that provided by the default `parallel-tests'
+driver is advised, as that would offer a better consistency and a more
+pleasant user experience.
+
+\1f
+File: automake.info,  Node: Log files generation and test results recording,  Next: Testsuite progress output,  Prev: Command-line arguments for test drivers,  Up: API for Custom Test Drivers
+
+15.3.3.2 Log files generation and test results recording
+........................................................
+
+The test driver must correctly generate the files specified by the
+`--log-file' and `--trs-file' option (even when the tested program
+fails or crashes).
+
+   The `.log' file should ideally contain all the output produced by the
+tested program, plus optionally other information that might facilitate
+debugging or analysis of bug reports.  Apart from that, its format is
+basically free.
+
+   The `.trs' file is used to register some metadata through the use of
+custom reStructuredText fields.  This metadata is expected to be
+employed in various ways by the parallel test harness; for example, to
+count the test results when printing the testsuite summary, or to decide
+which tests to re-run upon `make reheck'.  Unrecognized metadata in a
+`.trs' file is currently ignored by the harness, but this might change
+in the future. The list of currently recognized metadata follows.
+
+`:test-result:'
+     The test driver must use this field to register the results of
+     _each_ test case run by a test script file.  Several
+     `:test-result:' fields can be present in the same `.trs' file;
+     this is done in order to support test protocols that allow a
+     single test script to run more test cases.
+
+     The only recognized test results are currently `PASS', `XFAIL',
+     `SKIP', `FAIL', `XPASS' and `ERROR'.  These results, when declared
+     with `:test-result:', can be optionally followed by text holding
+     the name and/or a brief description of the corresponding test; the
+     `parallel-tests' harness will ignore such extra text when
+     generating `test-suite.log' and preparing the testsuite summary.
+
+``:recheck:''
+     If this field is present and defined to `no', then the
+     corresponding test script will _not_ be run upon a `make recheck'.
+     What happens when two or more `:recheck:' fields are present in
+     the same `.trs' file is undefined behaviour.
+
+``:copy-in-global-log:''
+     If this field is present and defined to `no', then the content of
+     the `.log' file will _not_ be copied into the global
+     `test-suite.log'.  We allow to forsake such copying because, while
+     it can be useful in debugging and analysis of bug report, it can
+     also be just a waste of space in normal situations, e.g., when a
+     test script is successful.  What happens when two or more
+     `:copy-in-global-log:' fields are present in the same `.trs' file
+     is undefined behaviour.
+
+``:test-global-result:''
+     This is used to declare the "global result" of the script.
+     Currently, the value of this field is needed only to be reported
+     (more or less verbatim) in the generated global log file
+     `$(TEST_SUITE_LOG)', so it's quite free-form.  For example, a test
+     script which run 10 test cases, 6 of which pass and 4 of which are
+     skipped, could reasonably have a `PASS/SKIP' value for this field,
+     while a test script which run 19 successful tests and one failed
+     test could have an `ALMOST PASSED' value.  What happens when two
+     or more `:test-global-result:' fields are present in the same
+     `.trs' file is undefined behaviour.
+
+Let's see a small example.  Assume a `.trs' file contains the following
+lines:
+
+     :test-result: PASS server starts
+     :global-log-copy: no
+     :test-result: PASS HTTP/1.1 request
+     :test-result: FAIL HTTP/1.0 request
+     :recheck: yes
+     :test-result: SKIP HTTPS request (TLS library wasn't available)
+     :test-result: PASS server stops
+
+Then the corresponding test script will be re-run by `make check', will
+contribute with _five_ test results to the testsuite summary (three of
+these tests being successful, one failed, and one skipped), and the
+content of the corresponding `.log' file will _not_ be copied in the
+global log file `test-suite.log'.
+
+\1f
+File: automake.info,  Node: Testsuite progress output,  Prev: Log files generation and test results recording,  Up: API for Custom Test Drivers
+
+15.3.3.3 Testsuite progress output
+..................................
+
+A custom test driver also has the task of displaying, on the standard
+output, the test results as soon as they become available.  Depending on
+the protocol in use, it can also display the reasons for failures and
+skips, and, more generally, any useful diagnostic output (but remember
+that each line on the screen is precious, so that cluttering the screen
+with overly verbose information is bad idea).  The exact format of this
+progress output is left up to the test driver; in fact, a custom test
+driver might _theoretically_ even decide not to do any such report,
+leaving it all to the testsuite summary (that would be a very lousy
+idea, of course, and serves only to illustrate the flexibility that is
+granted here).
+
+   Remember that consistency is good; so, if possible, try to be
+consistent with the output of the built-in Automake test drivers,
+providing a similar "look & feel".  In particular, the testsuite
+progress output should be colorized when the `--color-tests' is passed
+to the driver.  On the other end, if you are using a known and
+widespread test protocol with well-established implementations, being
+consistent with those implementations' output might be a good idea too.
+
+\1f
+File: automake.info,  Node: Using the TAP test protocol,  Next: DejaGnu Tests,  Prev: Custom Test Drivers,  Up: Tests
+
+15.4 Using the TAP test protocol
+================================
+
+* Menu:
+
+* Introduction to TAP::
+* Use TAP with the Automake test harness::
+* Incompatibilities with other TAP parsers and drivers::
+* Links and external resources on TAP::
+
+\1f
+File: automake.info,  Node: Introduction to TAP,  Next: Use TAP with the Automake test harness,  Up: Using the TAP test protocol
+
+15.4.1 Introduction to TAP
+--------------------------
+
+TAP, the Test Anything Protocol, is a simple text-based interface
+between testing modules or programs and a test harness.  The tests
+(also called "TAP producers" in this context) write test results in a
+simple format on standard output; a test harness (also called "TAP
+consumer") will parse and interpret these results, and properly present
+them to the user, and/or register them for later analysis.  The exact
+details of how this is accomplished can vary among different test
+harnesses.  The Automake parallel harness will present the results on
+the console in the usual fashion (*note Testsuite progress on
+console::), and will use the `.trs' files (*note Basics of test
+metadata::) to store the test results and related metadata.  Apart from
+that, it will try to remain as much compatible as possible with
+pre-existing and widespread utilities, such as the `prove' utility
+(http://search.cpan.org/~andya/Test-Harness/bin/prove), at least for
+the simpler usages.
+
+   TAP started its life as part of the test harness for Perl, but today
+it has been (mostly) standardized, and has various independent
+implementations in different languages; among them, C, C++, Perl,
+Python, PHP, and Java.  For a semi-official specification of the TAP
+protocol, please refer to the documentation of `Test::Harness::TAP'
+(http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod).
+
+   The most relevant real-world usages of TAP are obviously in the
+testsuites of `perl' and of many perl modules.  Still, also other
+important third-party packages, such as `git' (http://git-scm.com/),
+use TAP in their testsuite.
+
+\1f
+File: automake.info,  Node: Use TAP with the Automake test harness,  Next: Incompatibilities with other TAP parsers and drivers,  Prev: Introduction to TAP,  Up: Using the TAP test protocol
+
+15.4.2 Use TAP with the Automake test harness
+---------------------------------------------
+
+Currently, the TAP driver that comes with Automake requires some by-hand
+steps on the developer's part (this situation should hopefully be
+improved in future Automake versions).  You'll have to grab the
+`tap-driver.sh' script from the Automake distribution by hand, copy it
+in your source tree, add a call to `AC_PROG_AWK' in `configure.ac' to
+search for a proper awk program, and use the Automake support for
+third-party test drivers to instruct the harness to use the
+`tap-driver.sh' script and that awk program to run your TAP-producing
+tests.  See the example below for clarification.
+
+   Apart from the options common to all the Automake test drivers
+(*note Command-line arguments for test drivers::), the `tap-driver.sh'
+supports the following options, whose names are chosen for enhanced
+compatibility with the `prove' utility.
+
+`--ignore-exit'
+     Causes the test driver to ignore the exit status of the test
+     scripts; by default, the driver will report an error if the script
+     exits with a non-zero status.  This option has effect also on
+     non-zero exit statuses due to termination by a signal.
+
+`--comments'
+     Instruct the test driver to display TAP diagnostic (i.e., lines
+     beginning with the `#' character) in the testsuite progress output
+     too; by default, TAP diagnostic is only copied to the `.log' file.
+
+`--no-comments'
+     Revert the effects of `--comments'.
+
+`--merge'
+     Instruct the test driver to merge the test scripts' standard error
+     into their standard output.  This is necessary if you want to
+     ensure that diagnostics from the test scripts are displayed in the
+     correct order relative to test results; this can be of great help
+     in debugging (especially if your test scripts are shell scripts
+     run with shell tracing active).  As a downside, this option might
+     cause the test harness to get confused if anything that appears on
+     standard error looks like a test result.
+
+`--no-merge'
+     Revert the effects of `--merge'.
+
+`--diagnostic-string=STRING'
+     Change the string that introduces TAP diagnostic from the default
+     value of "`#'" to `STRING'.  This can be useful if your TAP-based
+     test scripts produce verbose output on which they have limited
+     control (because, say, the output comes from other tools invoked
+     in the scripts), and it might contain text that gets spuriously
+     interpreted as TAP diagnostic: such an issue can be solved by
+     redefining the string that activates TAP diagnostic to a value you
+     know won't appear by chance in the tests' output.  Note however
+     that this feature is non-standard, as the "official" TAP protocol
+     does not allow for such a customization; so don't use it if you
+     can avoid it.
+
+Here is an example of how the TAP driver can be set up and used.
+
+     % cat configure.ac
+     AC_INIT([GNU Try Tap], [1.0], [bug-automake@gnu.org])
+     AC_CONFIG_AUX_DIR([build-aux])
+     AM_INIT_AUTOMAKE([foreign parallel-tests -Wall -Werror])
+     AC_CONFIG_FILES([Makefile])
+     AC_REQUIRE_AUX_FILE([tap-driver.sh])
+     AC_PROG_AWK
+     AC_OUTPUT
+
+     % cat Makefile.am
+     TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
+                       $(top_srcdir)/build-aux/tap-driver.sh
+     TESTS = foo.test bar.test baz.test
+     EXTRA_DIST = $(TESTS)
+
+     % cat foo.test
+     #!/bin/sh
+     echo 1..4 # Number of tests to be executed.
+     echo 'ok 1 - Swallows fly'
+     echo 'not ok 2 - Caterpillars fly # TODO metamorphosis in progress'
+     echo 'ok 3 - Pigs fly # SKIP not enough acid'
+     echo '# I just love word plays ...'
+     echo 'ok 4 - Flies fly too :-)'
+
+     % cat bar.test
+     #!/bin/sh
+     echo 1..3
+     echo 'not ok 1 - Bummer, this test has failed.'
+     echo 'ok 2 - This passed though.'
+     echo 'Bail out! Ennui kicking in, sorry...'
+     echo 'ok 3 - This will not be seen.'
+
+     % cat baz.test
+     #!/bin/sh
+     echo 1..1
+     echo ok 1
+     # Exit with error, even if all the tests have been successful.
+     exit 7
+
+     % cp PREFIX/share/automake-APIVERSION/tap-driver.pl .
+     % autoreconf -vi && ./configure && make check
+     ...
+     PASS: foo.test 1 - Swallows fly
+     XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
+     SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
+     PASS: foo.test 4 - Flies fly too :-)
+     FAIL: bar.test 1 - Bummer, this test has failed.
+     PASS: bar.test 2 - This passed though.
+     ERROR: bar.test - Bail out! Ennui kicking in, sorry...
+     PASS: baz.test 1
+     ERROR: baz.test - exited with status 7
+     ...
+     Please report to bug-automake@gnu.org
+     ...
+     % echo exit status: $?
+     exit status: 1
+
+     % env TEST_LOG_DRIVER_FLAGS='--comments --ignore-exit' \
+           TESTS='foo.test baz.test' make -e check
+     ...
+     PASS: foo.test 1 - Swallows fly
+     XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
+     SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
+     # foo.test: I just love word plays...
+     PASS: foo.test 4 - Flies fly too :-)
+     PASS: baz.test 1
+     ...
+     % echo exit status: $?
+     exit status: 0
+
+\1f
+File: automake.info,  Node: Incompatibilities with other TAP parsers and drivers,  Next: Links and external resources on TAP,  Prev: Use TAP with the Automake test harness,  Up: Using the TAP test protocol
+
+15.4.3 Incompatibilities with other TAP parsers and drivers
+-----------------------------------------------------------
+
+For implementation or historical reasons, the TAP driver and harness as
+implemented by Automake have some minors incompatibilities with the
+mainstream versions, which you should be aware of.
+
+   * A `Bail out!' directive doesn't stop the whole testsuite, but only
+     the test script it occurs in.  This doesn't follow TAP
+     specifications, but on the other hand it maximizes compatibility
+     (and code sharing) with the "hard error" concept of the default
+     `parallel-tests' driver.
+
+   * The `version' and `pragma' directives are not supported.
+
+   * The `--diagnostic-string' option of our driver allows to modify
+     the string that introduces TAP diagnostic from the default value
+     of "`#'".  The standard TAP protocol has currently no way to allow
+     this, so if you use it your diagnostic will be lost to more
+     compliant tools like `prove' and `Test::Harness'
+
+   * And there are probably some other small and yet undiscovered
+     incompatibilities, especially in corner cases or with rare usages.
+
+\1f
+File: automake.info,  Node: Links and external resources on TAP,  Prev: Incompatibilities with other TAP parsers and drivers,  Up: Using the TAP test protocol
+
+15.4.4 Links and external resources on TAP
+------------------------------------------
+
+Here are some links to more extensive official or third-party
+documentation and resources about the TAP protocol and related tools
+and libraries.
+   * `Test::Harness::TAP'
+     (http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod),
+     the (mostly) official documentation about the TAP format and
+     protocol.
+
+   * `prove' (http://search.cpan.org/~andya/Test-Harness/bin/prove),
+     the most famous command-line TAP test driver, included in the
+     distribution of `perl' and `Test::Harness'
+     (http://search.cpan.org/~andya/Test-Harness/lib/Test/Harness.pm).
+
+   * The TAP wiki (http://testanything.org/wiki/index.php/Main_Page).
+
+   * A "gentle introduction" to testing for perl coders:
+     `Test::Tutorial'
+     (http://search.cpan.org/dist/Test-Simple/lib/Test/Tutorial.pod).
+
+   * `Test::Simple'
+     (http://search.cpan.org/~mschwern/Test-Simple/lib/Test/Simple.pm)
+     and `Test::More'
+     (http://search.cpan.org/~mschwern/Test-Simple/lib/Test/More.pm),
+     the standard perl testing libraries, which are based on TAP.
+
+   * C TAP Harness
+     (http://www.eyrie.org/~eagle/software/c-tap-harness/), a C-based
+     project implementing both a TAP producer and a TAP consumer.
+
+   * tap4j (http://www.tap4j.org/), a Java-based project implementing
+     both a TAP producer and a TAP consumer.
+
+\1f
+File: automake.info,  Node: DejaGnu Tests,  Next: Install Tests,  Prev: Using the TAP test protocol,  Up: Tests
+
+15.5 DejaGnu Tests
+==================
+
+If `dejagnu' (ftp://ftp.gnu.org/gnu/dejagnu/) appears in
+`AUTOMAKE_OPTIONS', then a `dejagnu'-based test suite is assumed.  The
+variable `DEJATOOL' is a list of names that are passed, one at a time,
+as the `--tool' argument to `runtest' invocations; it defaults to the
+name of the package.
+
+   The variable `RUNTESTDEFAULTFLAGS' holds the `--tool' and `--srcdir'
+flags that are passed to dejagnu by default; this can be overridden if
+necessary.  
+
+   The variables `EXPECT' and `RUNTEST' can also be overridden to
+provide project-specific values.  For instance, you will need to do
+this if you are testing a compiler toolchain, because the default
+values do not take into account host and target names.  
+
+   The contents of the variable `RUNTESTFLAGS' are passed to the
+`runtest' invocation.  This is considered a "user variable" (*note User
+Variables::).  If you need to set `runtest' flags in `Makefile.am', you
+can use `AM_RUNTESTFLAGS' instead.  
+
+   Automake will generate rules to create a local `site.exp' file,
+defining various variables detected by `configure'.  This file is
+automatically read by DejaGnu.  It is OK for the user of a package to
+edit this file in order to tune the test suite.  However this is not
+the place where the test suite author should define new variables: this
+should be done elsewhere in the real test suite code.  Especially,
+`site.exp' should not be distributed.
+
+   Still, if the package author has legitimate reasons to extend
+`site.exp' at `make' time, he can do so by defining the variable
+`EXTRA_DEJAGNU_SITE_CONFIG'; the files listed there will be considered
+`site.exp' prerequisites, and their content will be appended to it (in
+the same order in which they appear in `EXTRA_DEJAGNU_SITE_CONFIG').
+Note that files are _not_ distributed by default.
+
+   For more information regarding DejaGnu test suites, see *note Top:
+(dejagnu)Top.
+
+\1f
+File: automake.info,  Node: Install Tests,  Prev: DejaGnu Tests,  Up: Tests
+
+15.6 Install Tests
+==================
+
+The `installcheck' target is available to the user as a way to run any
+tests after the package has been installed.  You can add tests to this
+by writing an `installcheck-local' rule.
+
+\1f
+File: automake.info,  Node: Rebuilding,  Next: Options,  Prev: Tests,  Up: Top
+
+16 Rebuilding Makefiles
+***********************
+
+Automake generates rules to automatically rebuild `Makefile's,
+`configure', and other derived files like `Makefile.in'.
+
+   If you are using `AM_MAINTAINER_MODE' in `configure.ac', then these
+automatic rebuilding rules are only enabled in maintainer mode.
+
+   Sometimes you need to run `aclocal' with an argument like `-I' to
+tell it where to find `.m4' files.  Since sometimes `make' will
+automatically run `aclocal', you need a way to specify these arguments.
+You can do this by defining `ACLOCAL_AMFLAGS'; this holds arguments
+that are passed verbatim to `aclocal'.  This variable is only useful in
+the top-level `Makefile.am'.
+
+   Sometimes it is convenient to supplement the rebuild rules for
+`configure' or `config.status' with additional dependencies.  The
+variables `CONFIGURE_DEPENDENCIES' and `CONFIG_STATUS_DEPENDENCIES' can
+be used to list these extra dependencies.  These variables should be
+defined in all `Makefile's of the tree (because these two rebuild rules
+are output in all them), so it is safer and easier to `AC_SUBST' them
+from `configure.ac'.  For instance, the following statement will cause
+`configure' to be rerun each time `version.sh' is changed.
+
+     AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
+
+Note the `$(top_srcdir)/' in the file name.  Since this variable is to
+be used in all `Makefile's, its value must be sensible at any level in
+the build hierarchy.
+
+   Beware not to mistake `CONFIGURE_DEPENDENCIES' for
+`CONFIG_STATUS_DEPENDENCIES'.
+
+   `CONFIGURE_DEPENDENCIES' adds dependencies to the `configure' rule,
+whose effect is to run `autoconf'.  This variable should be seldom
+used, because `automake' already tracks `m4_include'd files.  However
+it can be useful when playing tricky games with `m4_esyscmd' or similar
+non-recommendable macros with side effects.
+
+   `CONFIG_STATUS_DEPENDENCIES' adds dependencies to the
+`config.status' rule, whose effect is to run `configure'.  This
+variable should therefore carry any non-standard source that may be
+read as a side effect of running `configure', like `version.sh' in the
+example above.
+
+   Speaking of `version.sh' scripts, we recommend against them today.
+They are mainly used when the version of a package is updated
+automatically by a script (e.g., in daily builds).  Here is what some
+old-style `configure.ac's may look like:
+
+     AC_INIT
+     . $srcdir/version.sh
+     AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
+     ...
+
+Here, `version.sh' is a shell fragment that sets `VERSION_NUMBER'.  The
+problem with this example is that `automake' cannot track dependencies
+(listing `version.sh' in `CONFIG_STATUS_DEPENDENCIES', and distributing
+this file is up to the user), and that it uses the obsolete form of
+`AC_INIT' and `AM_INIT_AUTOMAKE'.  Upgrading to the new syntax is not
+straightforward, because shell variables are not allowed in `AC_INIT''s
+arguments.  We recommend that `version.sh' be replaced by an M4 file
+that is included by `configure.ac':
+
+     m4_include([version.m4])
+     AC_INIT([name], VERSION_NUMBER)
+     AM_INIT_AUTOMAKE
+     ...
+
+Here `version.m4' could contain something like
+`m4_define([VERSION_NUMBER], [1.2])'.  The advantage of this second
+form is that `automake' will take care of the dependencies when
+defining the rebuild rule, and will also distribute the file
+automatically.  An inconvenience is that `autoconf' will now be rerun
+each time the version number is bumped, when only `configure' had to be
+rerun in the previous setup.
+
+\1f
+File: automake.info,  Node: Options,  Next: Miscellaneous,  Prev: Rebuilding,  Up: Top
+
+17 Changing Automake's Behavior
+*******************************
+
+* Menu:
+
+* Options generalities::        Semantics of Automake option
+* List of Automake options::    A comprehensive list of Automake options
+
+\1f
+File: automake.info,  Node: Options generalities,  Next: List of Automake options,  Up: Options
+
+17.1 Options generalities
+=========================
+
+Various features of Automake can be controlled by options.  Except where
+noted otherwise, options can be specified in one of several ways.  Most
+options can be applied on a per-`Makefile' basis when listed in a
+special `Makefile' variable named `AUTOMAKE_OPTIONS'.  Some of these
+options only make sense when specified in the toplevel `Makefile.am'
+file.  Options are applied globally to all processed `Makefile' files
+when listed in the first argument of `AM_INIT_AUTOMAKE' in
+`configure.ac', and some options which require changes to the
+`configure' script can only be specified there.  These are annotated
+below.
+
+   As a general rule, options specified in `AUTOMAKE_OPTIONS' take
+precedence over those specified in `AM_INIT_AUTOMAKE', which in turn
+take precedence over those specified on the command line.
+
+   Also, some care must be taken about the interactions among strictness
+level and warning categories.  As a general rule, strictness-implied
+warnings are overridden by those specified by explicit options.  For
+example, even if `portability' warnings are disabled by default in
+`foreign' strictness, an usage like this will end up enabling them:
+
+     AUTOMAKE_OPTIONS = -Wportability foreign
+
+   However, a strictness level specified in a higher-priority context
+will override all the explicit warnings specified in a lower-priority
+context.  For example, if `configure.ac' contains:
+
+     AM_INIT_AUTOMAKE([-Wportability])
+
+and `Makefile.am' contains:
+
+     AUTOMAKE_OPTIONS = foreign
+
+then `portability' warnings will be _disabled_ in `Makefile.am'.
+
+\1f
+File: automake.info,  Node: List of Automake options,  Prev: Options generalities,  Up: Options
+
+17.2 List of Automake options
+=============================
+
+`gnits'
+`gnu'
+`foreign'
+`cygnus'
+     Set the strictness as appropriate.  The `gnits' option also
+     implies options `readme-alpha' and `check-news'.
+
+`check-news'
+     Cause `make dist' to fail unless the current version number appears
+     in the first few lines of the `NEWS' file.
+
+`color-tests'
+     Cause output of the serial and parallel test harnesses (see *note
+     Simple Tests::) and of properly-written custom test drivers (*note
+     Custom Test Drivers::) to be colorized on capable terminals.
+
+`dejagnu'
+     Cause `dejagnu'-specific rules to be generated.  *Note DejaGnu
+     Tests::.
+
+`dist-bzip2'
+     Hook `dist-bzip2' to `dist'.  
+
+`dist-lzip'
+     Hook `dist-lzip' to `dist'.  
+
+`dist-shar'
+     Hook `dist-shar' to `dist'.  
+
+`dist-zip'
+     Hook `dist-zip' to `dist'.  
+
+`dist-tarZ'
+     Hook `dist-tarZ' to `dist'.  
+
+`filename-length-max=99'
+     Abort if file names longer than 99 characters are found during
+     `make dist'.  Such long file names are generally considered not to
+     be portable in tarballs.  See the `tar-v7' and `tar-ustar' options
+     below.  This option should be used in the top-level `Makefile.am'
+     or as an argument of `AM_INIT_AUTOMAKE' in `configure.ac', it will
+     be ignored otherwise.  It will also be ignored in sub-packages of
+     nested packages (*note Subpackages::).
+
+`no-define'
+     This option is meaningful only when passed as an argument to
+     `AM_INIT_AUTOMAKE'.  It will prevent the `PACKAGE' and `VERSION'
+     variables from being `AC_DEFINE'd.
+
+`no-dependencies'
+     This is similar to using `--ignore-deps' on the command line, but
+     is useful for those situations where you don't have the necessary
+     bits to make automatic dependency tracking work (*note
+     Dependencies::).  In this case the effect is to effectively
+     disable automatic dependency tracking.
+
+`no-dist'
+     Don't emit any code related to `dist' target.  This is useful when
+     a package has its own method for making distributions.
+
+`no-dist-gzip'
+     Do not hook `dist-gzip' to `dist'.  
+
+`no-exeext'
+     If your `Makefile.am' defines a rule for target `foo', it will
+     override a rule for a target named `foo$(EXEEXT)'.  This is
+     necessary when `EXEEXT' is found to be empty.  However, by default
+     `automake' will generate an error for this use.  The `no-exeext'
+     option will disable this error.  This is intended for use only
+     where it is known in advance that the package will not be ported
+     to Windows, or any other operating system using extensions on
+     executables.
+
+`no-installinfo'
+     The generated `Makefile.in' will not cause info pages to be built
+     or installed by default.  However, `info' and `install-info'
+     targets will still be available.  This option is disallowed at
+     `gnu' strictness and above.  
+
+`no-installman'
+     The generated `Makefile.in' will not cause man pages to be
+     installed by default.  However, an `install-man' target will still
+     be available for optional installation.  This option is disallowed
+     at `gnu' strictness and above.  
+
+`nostdinc'
+     This option can be used to disable the standard `-I' options that
+     are ordinarily automatically provided by Automake.
+
+`no-texinfo.tex'
+     Don't require `texinfo.tex', even if there are texinfo files in
+     this directory.
+
+`parallel-tests'
+     Enable test suite harness for `TESTS' that can run tests in
+     parallel (*note Parallel Test Harness::, for more information).
+
+`serial-tests'
+     Enable the older serial test suite harness for `TESTS' (*note
+     Serial Test Harness::, for more information).  This is still the
+     default for the moment.
+
+`readme-alpha'
+     If this release is an alpha release, and the file `README-alpha'
+     exists, then it will be added to the distribution.  If this option
+     is given, version numbers are expected to follow one of two forms.
+     The first form is `MAJOR.MINOR.ALPHA', where each element is a
+     number; the final period and number should be left off for
+     non-alpha releases.  The second form is `MAJOR.MINORALPHA', where
+     ALPHA is a letter; it should be omitted for non-alpha releases.
+
+`silent-rules'
+     Enable less verbose build rules.  This can be used to let build
+     rules output status lines of the form:
+          GEN OUTPUT-FILE
+           CC OBJECT-FILE
+     instead of printing the command that will be executed to update
+     OUTPUT-FILE or to compile OBJECT-FILE.  It can also silence
+     `libtool' output.
+
+     For more information about how to use, enable, or disable silent
+     rules, *note Automake silent-rules Option::.
+
+`std-options'
+     Make the `installcheck' rule check that installed scripts and
+     programs support the `--help' and `--version' options.  This also
+     provides a basic check that the program's run-time dependencies
+     are satisfied after installation.
+
+     In a few situations, programs (or scripts) have to be exempted
+     from this test.  For instance, `false' (from GNU coreutils) is
+     never successful, even for `--help' or `--version'.  You can list
+     such programs in the variable `AM_INSTALLCHECK_STD_OPTIONS_EXEMPT'.
+     Programs (not scripts) listed in this variable should be suffixed
+     by `$(EXEEXT)' for the sake of Windows or OS/2.  For instance,
+     suppose we build `false' as a program but `true.sh' as a script,
+     and that neither of them support `--help' or `--version':
+
+          AUTOMAKE_OPTIONS = std-options
+          bin_PROGRAMS = false ...
+          bin_SCRIPTS = true.sh ...
+          AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
+
+`subdir-objects'
+     If this option is specified, then objects are placed into the
+     subdirectory of the build directory corresponding to the
+     subdirectory of the source file.  For instance, if the source file
+     is `subdir/file.cxx', then the output file would be
+     `subdir/file.o'.
+
+     In order to use this option with C sources, you should add
+     `AM_PROG_CC_C_O' to `configure.ac'.
+
+`tar-v7'
+`tar-ustar'
+`tar-pax'
+     These three mutually exclusive options select the tar format to use
+     when generating tarballs with `make dist'.  (The tar file created
+     is then compressed according to the set of `no-dist-gzip',
+     `dist-bzip2', `dist-lzip', `dist-xz' and `dist-tarZ' options in
+     use.)
+
+     These options must be passed as arguments to `AM_INIT_AUTOMAKE'
+     (*note Macros::) because they can require additional configure
+     checks.  Automake will complain if it sees such options in an
+     `AUTOMAKE_OPTIONS' variable.
+
+     `tar-v7' selects the old V7 tar format.  This is the historical
+     default.  This antiquated format is understood by all tar
+     implementations and supports file names with up to 99 characters.
+     When given longer file names some tar implementations will
+     diagnose the problem while other will generate broken tarballs or
+     use non-portable extensions.  Furthermore, the V7 format cannot
+     store empty directories.  When using this format, consider using
+     the `filename-length-max=99' option to catch file names too long.
+
+     `tar-ustar' selects the ustar format defined by POSIX 1003.1-1988.
+     This format is believed to be old enough to be portable.  It fully
+     supports empty directories.  It can store file names with up to
+     256 characters, provided that the file name can be split at
+     directory separator in two parts, first of them being at most 155
+     bytes long.  So, in most cases the maximum file name length will be
+     shorter than 256 characters.  However you may run against broken
+     tar implementations that incorrectly handle file names longer than
+     99 characters (please report them to <bug-automake@gnu.org> so we
+     can document this accurately).
+
+     `tar-pax' selects the new pax interchange format defined by POSIX
+     1003.1-2001.  It does not limit the length of file names.  However,
+     this format is very young and should probably be restricted to
+     packages that target only very modern platforms.  There are moves
+     to change the pax format in an upward-compatible way, so this
+     option may refer to a more recent version in the future.
+
+     *Note Controlling the Archive Format: (tar)Formats, for further
+     discussion about tar formats.
+
+     `configure' knows several ways to construct these formats.  It
+     will not abort if it cannot find a tool up to the task (so that the
+     package can still be built), but `make dist' will fail.
+
+VERSION
+     A version number (e.g., `0.30') can be specified.  If Automake is
+     not newer than the version specified, creation of the `Makefile.in'
+     will be suppressed.
+
+`-WCATEGORY' or `--warnings=CATEGORY'
+     These options behave exactly like their command-line counterpart
+     (*note automake Invocation::).  This allows you to enable or
+     disable some warning categories on a per-file basis.  You can also
+     setup some warnings for your entire project; for instance, try
+     `AM_INIT_AUTOMAKE([-Wall])' in your `configure.ac'.
+
+
+   Unrecognized options are diagnosed by `automake'.
+
+   If you want an option to apply to all the files in the tree, you can
+use the `AM_INIT_AUTOMAKE' macro in `configure.ac'.  *Note Macros::.
+
+\1f
+File: automake.info,  Node: Miscellaneous,  Next: Include,  Prev: Options,  Up: Top
+
+18 Miscellaneous Rules
+**********************
+
+There are a few rules and variables that didn't fit anywhere else.
+
+* Menu:
+
+* Tags::                        Interfacing to cscope, etags and mkid
+* Suffixes::                    Handling new file extensions
+
+\1f
+File: automake.info,  Node: Tags,  Next: Suffixes,  Up: Miscellaneous
+
+18.1 Interfacing to `etags'
+===========================
+
+Automake will generate rules to generate `TAGS' files for use with GNU
+Emacs under some circumstances.
+
+   If any C, C++ or Fortran 77 source code or headers are present, then
+`tags' and `TAGS' rules will be generated for the directory.  All files
+listed using the `_SOURCES', `_HEADERS', and `_LISP' primaries will be
+used to generate tags.  Note that generated source files that are not
+distributed must be declared in variables like `nodist_noinst_HEADERS'
+or `nodist_PROG_SOURCES' or they will be ignored.
+
+   A `tags' rule will be output at the topmost directory of a
+multi-directory package.  When run from this topmost directory, `make
+tags' will generate a `TAGS' file that includes by reference all `TAGS'
+files from subdirectories.
+
+   The `tags' rule will also be generated if the variable `ETAGS_ARGS'
+is defined.  This variable is intended for use in directories that
+contain taggable source that `etags' does not understand.  The user can
+use the `ETAGSFLAGS' to pass additional flags to `etags';
+`AM_ETAGSFLAGS' is also available for use in `Makefile.am'.  
+
+   Here is how Automake generates tags for its source, and for nodes in
+its Texinfo file:
+
+     ETAGS_ARGS = automake.in --lang=none \
+      --regex='/^@node[ \t]+\([^,]+\)/\1/' automake.texi
+
+   If you add file names to `ETAGS_ARGS', you will probably also want
+to define `TAGS_DEPENDENCIES'.  The contents of this variable are added
+directly to the dependencies for the `tags' rule.  
+
+   Automake also generates a `ctags' rule that can be used to build
+`vi'-style `tags' files.  The variable `CTAGS' is the name of the
+program to invoke (by default `ctags'); `CTAGSFLAGS' can be used by the
+user to pass additional flags, and `AM_CTAGSFLAGS' can be used by the
+`Makefile.am'.
+
+   Automake will also generate an `ID' rule that will run `mkid' on the
+source.  This is only supported on a directory-by-directory basis.
+
+   Similarly, the `cscope' rule will create a list of all the source
+files in the tree and run `cscope' to build an inverted index database.
+The variable `CSCOPE' is the name of the program to invoke (by default
+`cscope'); `CSCOPEFLAGS' and `CSCOPE_ARGS' can be used by the user to
+pass additional flags and file names respectively, while
+`AM_CSCOPEFLAGS' can be used by the `Makefile.am'.  Note that,
+currently, the Automake-provided `cscope' support, when used in a VPATH
+build, might not work well with non-GNU make implementations
+(especially with make implementations performing *note VPATH rewrites:
+(autoconf)Automatic Rule Rewriting.).
+
+   Finally, Automake also emits rules to support the GNU Global Tags
+program (http://www.gnu.org/software/global/).  The `GTAGS' rule runs
+Global Tags and puts the result in the top build directory.  The
+variable `GTAGS_ARGS' holds arguments that are passed to `gtags'.  
+
+\1f
+File: automake.info,  Node: Suffixes,  Prev: Tags,  Up: Miscellaneous
+
+18.2 Handling new file extensions
+=================================
+
+It is sometimes useful to introduce a new implicit rule to handle a file
+type that Automake does not know about.
+
+   For instance, suppose you had a compiler that could compile `.foo'
+files to `.o' files.  You would simply define a suffix rule for your
+language:
+
+     .foo.o:
+             foocc -c -o $@ $<
+
+   Then you could directly use a `.foo' file in a `_SOURCES' variable
+and expect the correct results:
+
+     bin_PROGRAMS = doit
+     doit_SOURCES = doit.foo
+
+   This was the simpler and more common case.  In other cases, you will
+have to help Automake to figure out which extensions you are defining
+your suffix rule for.  This usually happens when your extension does not
+start with a dot.  Then, all you have to do is to put a list of new
+suffixes in the `SUFFIXES' variable *before* you define your implicit
+rule.
+
+   For instance, the following definition prevents Automake from
+misinterpreting the `.idlC.cpp:' rule as an attempt to transform
+`.idlC' files into `.cpp' files.
+
+     SUFFIXES = .idl C.cpp
+     .idlC.cpp:
+             # whatever
+
+   As you may have noted, the `SUFFIXES' variable behaves like the
+`.SUFFIXES' special target of `make'.  You should not touch `.SUFFIXES'
+yourself, but use `SUFFIXES' instead and let Automake generate the
+suffix list for `.SUFFIXES'.  Any given `SUFFIXES' go at the start of
+the generated suffixes list, followed by Automake generated suffixes
+not already in the list.
+
+\1f
+File: automake.info,  Node: Include,  Next: Conditionals,  Prev: Miscellaneous,  Up: Top
+
+19 Include
+**********
+
+Automake supports an `include' directive that  can be used to include
+other `Makefile' fragments when `automake' is run.  Note that these
+fragments are read and interpreted by `automake', not by `make'.  As
+with conditionals, `make' has no idea that `include' is in use.
+
+   There are two forms of `include':
+
+`include $(srcdir)/file'
+     Include a fragment that is found relative to the current source
+     directory.
+
+`include $(top_srcdir)/file'
+     Include a fragment that is found relative to the top source
+     directory.
+
+   Note that if a fragment is included inside a conditional, then the
+condition applies to the entire contents of that fragment.
+
+   Makefile fragments included this way are always distributed because
+they are needed to rebuild `Makefile.in'.
+
+\1f
+File: automake.info,  Node: Conditionals,  Next: Silencing Make,  Prev: Include,  Up: Top
+
+20 Conditionals
+***************
+
+Automake supports a simple type of conditionals.
+
+   These conditionals are not the same as conditionals in GNU Make.
+Automake conditionals are checked at configure time by the `configure'
+script, and affect the translation from `Makefile.in' to `Makefile'.
+They are based on options passed to `configure' and on results that
+`configure' has discovered about the host system.  GNU Make
+conditionals are checked at `make' time, and are based on variables
+passed to the make program or defined in the `Makefile'.
+
+   Automake conditionals will work with any make program.
+
+* Menu:
+
+* Usage of Conditionals::       Declaring conditional content
+* Limits of Conditionals::      Enclosing complete statements
+
+\1f
+File: automake.info,  Node: Usage of Conditionals,  Next: Limits of Conditionals,  Up: Conditionals
+
+20.1 Usage of Conditionals
+==========================
+
+Before using a conditional, you must define it by using
+`AM_CONDITIONAL' in the `configure.ac' file (*note Macros::).
+
+ -- Macro: AM_CONDITIONAL (CONDITIONAL, CONDITION)
+     The conditional name, CONDITIONAL, should be a simple string
+     starting with a letter and containing only letters, digits, and
+     underscores.  It must be different from `TRUE' and `FALSE' that
+     are reserved by Automake.
+
+     The shell CONDITION (suitable for use in a shell `if' statement)
+     is evaluated when `configure' is run.  Note that you must arrange
+     for _every_ `AM_CONDITIONAL' to be invoked every time `configure'
+     is run.  If `AM_CONDITIONAL' is run conditionally (e.g., in a
+     shell `if' statement), then the result will confuse `automake'.
+
+   Conditionals typically depend upon options that the user provides to
+the `configure' script.  Here is an example of how to write a
+conditional that is true if the user uses the `--enable-debug' option.
+
+     AC_ARG_ENABLE([debug],
+     [  --enable-debug    Turn on debugging],
+     [case "${enableval}" in
+       yes) debug=true ;;
+       no)  debug=false ;;
+       *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
+     esac],[debug=false])
+     AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
+
+   Here is an example of how to use that conditional in `Makefile.am':
+
+     if DEBUG
+     DBG = debug
+     else
+     DBG =
+     endif
+     noinst_PROGRAMS = $(DBG)
+
+   This trivial example could also be handled using `EXTRA_PROGRAMS'
+(*note Conditional Programs::).
+
+   You may only test a single variable in an `if' statement, possibly
+negated using `!'.  The `else' statement may be omitted.  Conditionals
+may be nested to any depth.  You may specify an argument to `else' in
+which case it must be the negation of the condition used for the
+current `if'.  Similarly you may specify the condition that is closed
+on the `endif' line:
+
+     if DEBUG
+     DBG = debug
+     else !DEBUG
+     DBG =
+     endif !DEBUG
+
+Unbalanced conditions are errors.  The `if', `else', and `endif'
+statements should not be indented, i.e., start on column one.
+
+   The `else' branch of the above two examples could be omitted, since
+assigning the empty string to an otherwise undefined variable makes no
+difference.
+
+   In order to allow access to the condition registered by
+`AM_CONDITIONAL' inside `configure.ac', and to allow conditional
+`AC_CONFIG_FILES', `AM_COND_IF' may be used:
+
+ -- Macro: AM_COND_IF (CONDITIONAL, [IF-TRUE], [IF-FALSE])
+     If CONDITIONAL is fulfilled, execute IF-TRUE, otherwise execute
+     IF-FALSE.  If either branch contains `AC_CONFIG_FILES', it will
+     cause `automake' to output the rules for the respective files only
+     for the given condition.
+
+   `AM_COND_IF' macros may be nested when m4 quotation is used properly
+(*note M4 Quotation: (autoconf)M4 Quotation.).
+
+   Here is an example of how to define a conditional config file:
+
+     AM_CONDITIONAL([SHELL_WRAPPER], [test "x$with_wrapper" = xtrue])
+     AM_COND_IF([SHELL_WRAPPER],
+                [AC_CONFIG_FILES([wrapper:wrapper.in])])
+
+\1f
+File: automake.info,  Node: Limits of Conditionals,  Prev: Usage of Conditionals,  Up: Conditionals
+
+20.2 Limits of Conditionals
+===========================
+
+Conditionals should enclose complete statements like variables or rules
+definitions.  Automake cannot deal with conditionals used inside a
+variable definition, for instance, and is not even able to diagnose
+this situation.  The following example would not work:
+
+     # This syntax is not understood by Automake
+     AM_CPPFLAGS = \
+       -DFEATURE_A \
+     if WANT_DEBUG
+       -DDEBUG \
+     endif
+       -DFEATURE_B
+
+   However the intended definition of `AM_CPPFLAGS' can be achieved with
+
+     if WANT_DEBUG
+       DEBUGFLAGS = -DDEBUG
+     endif
+     AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
+
+or
+
+     AM_CPPFLAGS = -DFEATURE_A
+     if WANT_DEBUG
+     AM_CPPFLAGS += -DDEBUG
+     endif
+     AM_CPPFLAGS += -DFEATURE_B
+
+   More details and examples of conditionals are described alongside
+various Automake features in this manual (*note Conditional
+Subdirectories::, *note Conditional Sources::, *note Conditional
+Programs::, *note Conditional Libtool Libraries::, *note Conditional
+Libtool Sources::).
+
+\1f
+File: automake.info,  Node: Silencing Make,  Next: Gnits,  Prev: Conditionals,  Up: Top
+
+21 Silencing `make'
+*******************
+
+* Menu:
+
+* Make verbosity::               Make is verbose by default
+* Tricks For Silencing Make::    Standard and generic ways to silence make
+* Automake silent-rules Option:: How Automake can help in silencing make
+
+\1f
+File: automake.info,  Node: Make verbosity,  Next: Tricks For Silencing Make,  Up: Silencing Make
+
+21.1 Make is verbose by default
+===============================
+
+Normally, when executing the set of rules associated with a target,
+`make' prints each rule before it is executed.  This behaviour, while
+having been in place for a long time, and being even mandated by the
+POSIX standard, starkly violates the "silence is golden" UNIX
+principle(1):
+
+     When a program has nothing interesting or surprising to say, it
+     should say nothing.  Well-behaved Unix programs do their jobs
+     unobtrusively, with a minimum of fuss and bother.  Silence is
+     golden.
+
+   In fact, while such verbosity of `make' can theoretically be useful
+to track bugs and understand reasons of failures right away, it can
+also hide warning and error messages from `make'-invoked tools,
+drowning them in a flood of uninteresting and seldom useful messages,
+and thus allowing them to go easily undetected.
+
+   This problem can be very annoying, especially for developers, who
+usually know quite well what's going on behind the scenes, and for whom
+the verbose output from `make' ends up being mostly noise that hampers
+the easy detection of potentially important warning messages.
+
+   ---------- Footnotes ----------
+
+   (1) See also `http://catb.org/~esr/writings/taoup/html/ch11s09.html'.
+
+\1f
+File: automake.info,  Node: Tricks For Silencing Make,  Next: Automake silent-rules Option,  Prev: Make verbosity,  Up: Silencing Make
+
+21.2 Standard and generic ways to silence make
+==============================================
+
+Here we describe some common idioms/tricks to obtain a quieter make
+output, with their relative advantages and drawbacks.  In the next
+section (*note Automake silent-rules Option::) we'll see how Automake
+can help in this respect.
+
+   * `make -s'
+
+     This simply causes `make' not to print _any_ rule before executing
+     it.
+
+     The `-s' flag is mandated by POSIX, universally supported, and its
+     purpose and function are easy to understand.
+
+     But it also has its serious limitations too.  First of all, it
+     embodies an "all or nothing" strategy, i.e., either everything is
+     silenced, or nothing is; this lack of granularity can sometimes be
+     a fatal flaw.  Moreover, when the `-s' flag is used, the `make'
+     output might turn out to be too much terse; in case of errors, the
+     user won't be able to easily see what rule or command have caused
+     them, or even, in case of tools with poor error reporting, what
+     the errors were!
+
+   * `make >/dev/null || make'
+
+     Apparently, this perfectly obeys the "silence is golden" rule:
+     warnings from stderr are passed through, output reporting is done
+     only in case of error, and in that case it should provide a
+     verbose-enough report to allow an easy determination of the error
+     location and causes.
+
+     However, calling `make' two times in a row might hide errors
+     (especially intermittent ones), or subtly change the expected
+     semantic of the `make' calls -- things these which can clearly make
+     debugging and error assessment very difficult.
+
+   * `make --no-print-directory'
+
+     This is GNU `make' specific.  When called with the
+     `--no-print-directory' option, GNU `make' will disable printing of
+     the working directory by invoked sub-`make's (the well-known
+     "Entering/Leaving directory ..." messages).  This helps to
+     decrease the verbosity of the output, but experience has shown that
+     it can also often render debugging considerably harder in projects
+     using deeply-nested `make' recursion.
+
+     As an aside, notice that the `--no-print-directory' option is
+     automatically activated if the `-s' flag is used.
+
+
+\1f
+File: automake.info,  Node: Automake silent-rules Option,  Prev: Tricks For Silencing Make,  Up: Silencing Make
+
+21.3 How Automake can help in silencing make
+============================================
+
+The tricks and idioms for silencing `make' described in the previous
+section can be useful from time to time, but we've seen that they all
+have their serious drawbacks and limitations.  That's why automake
+provides support for a more advanced and flexible way of obtaining
+quieter output from `make': the `silent-rules' mode.
+
+   To give the gist of what `silent-rules' can do, here is a simple
+comparison between a typical `make' output (where silent rules are
+disabled) and one with silent rules enabled:
+
+     % cat Makefile.am
+     bin_PROGRAMS = foo
+     foo_SOURCES = main.c func.c
+     % cat main.c
+     int main (void) { return func (); }  /* func used undeclared */
+     % cat func.c
+     int func (void) { int i; return i; } /* i used uninitialized */
+
+     The make output is by default very verbose.  This causes warnings
+     from the compiler to be somewhat hidden, and not immediate to spot.
+     % make CFLAGS=-Wall
+     gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
+     -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
+     -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT main.o
+     -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
+     main.c: In function ‘main’:
+     main.c:3:3: warning: implicit declaration of function ‘func’
+     mv -f .deps/main.Tpo .deps/main.Po
+     gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
+     -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
+     -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT func.o
+     -MD -MP -MF .deps/func.Tpo -c -o func.o func.c
+     func.c: In function ‘func’:
+     func.c:4:3: warning: ‘i’ used uninitialized in this function
+     mv -f .deps/func.Tpo .deps/func.Po
+     gcc -Wall -o foo main.o func.o
+
+     Clean up, so that we we can rebuild everything from scratch.
+     % make clean
+     test -z "foo" || rm -f foo
+     rm -f *.o
+
+     Silent rules enabled: the output is minimal but informative.  In
+     particular, the warnings from the compiler stick out very clearly.
+     % make V=0 CFLAGS=-Wall
+       CC     main.o
+     main.c: In function ‘main’:
+     main.c:3:3: warning: implicit declaration of function ‘func’
+       CC     func.o
+     func.c: In function ‘func’:
+     func.c:4:3: warning: ‘i’ used uninitialized in this function
+       CCLD   foo
+
+   Also, in projects using `libtool', the use of silent rules can
+automatically enable the `libtool''s `--silent' option:
+
+     % cat Makefile.am
+     lib_LTLIBRARIES = libx.la
+
+     % make # Both make and libtool are verbose by default.
+     ...
+     libtool: compile: gcc -DPACKAGE_NAME=\"foo\" ... -DLT_OBJDIR=\".libs/\"
+       -I. -g -O2 -MT libx.lo -MD -MP -MF .deps/libx.Tpo -c libx.c -fPIC
+       -DPIC -o .libs/libx.o
+     mv -f .deps/libx.Tpo .deps/libx.Plo
+     /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o libx.la -rpath
+       /usr/local/lib libx.lo
+     libtool: link: gcc -shared .libs/libx.o -Wl,-soname -Wl,libx.so.0
+       -o .libs/libx.so.0.0.0
+     libtool: link: cd .libs && rm -f libx.so && ln -s libx.so.0.0.0 libx.so
+     ...
+
+     % make V=0
+       CC     libx.lo
+       CCLD   libx.la
+
+   Let's now see how the `silent-rules' mode interfaces with the
+package developer and the package user.
+
+   To enable the use of `silent-rules' in his package, a developer
+needs to do either of the following:
+
+   * Add the `silent-rules' option as argument to `AM_INIT_AUTOMAKE'.
+
+   * Call the `AM_SILENT_RULES' macro from within the `configure.ac'
+     file.
+
+   It is not possible to instead specify `silent-rules' in a
+`Makefile.am' file.
+
+   If the developer has done either of the above, then the user of the
+package may influence the verbosity at `configure' run time as well as
+at `make' run time:
+
+   * Passing `--enable-silent-rules' to `configure' will cause build
+     rules to be less verbose; the option `--disable-silent-rules' will
+     cause normal verbose output.
+
+   * At `make' run time, the default chosen at `configure' time may be
+     overridden: `make V=1' will produce verbose output, `make V=0'
+     less verbose output.
+
+   Note that silent rules are _disabled_ by default; the user must
+enable them explicitly at either `configure' run time or at `make' run
+time.  We think that this is a good policy, since it provides the
+casual user with enough information to prepare a good bug report in
+case anything breaks.
+
+   Still, notwithstanding the rationales above, a developer who wants to
+make silent rules enabled by default in his own package can do so by
+adding a `yes' argument to the `AM_SILENT_RULES' call in
+`configure.ac'.  We advise against this approach, though.
+
+   Users who prefer to have silent rules enabled by default can edit
+their `config.site' file to make the variable `enable_silent_rules'
+default to `yes'.  This should still allow disabling silent rules at
+`configure' time and at `make' time.
+
+   For portability to different `make' implementations, package authors
+are advised to not set the variable `V' inside the `Makefile.am' file,
+to allow the user to override the value for subdirectories as well.
+
+   The current implementation of this feature normally uses nested
+variable expansion `$(VAR1$(V))', a `Makefile' feature that is not
+required by POSIX 2008 but is widely supported in practice.  The
+`silent-rules' option thus turns off warnings about recursive variable
+expansion, which are in turn enabled by `-Wportability' (*note automake
+Invocation::).  On the rare `make' implementations that do not support
+nested variable expansion, whether rules are silent is always
+determined at configure time, and cannot be overridden at make time.
+Future versions of POSIX are likely to require nested variable
+expansion, so this minor limitation should go away with time.
+
+   To extend the silent mode to your own rules, you have two choices:
+
+   * You can use the predefined variable `AM_V_GEN' as a prefix to
+     commands that should output a status line in silent mode, and
+     `AM_V_at' 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.
+
+   * 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 `AM_V_GEN':
+
+          pkg_verbose = $(pkg_verbose_@AM_V@)
+          pkg_verbose_ = $(pkg_verbose_@AM_DEFAULT_V@)
+          pkg_verbose_0 = @echo PKG-GEN $@;
+
+          foo: foo.in
+                  $(pkg_verbose)cp $(srcdir)/foo.in $@
+
+
+   As a final note, observe that, even when silent rules are enabled,
+the `--no-print-directory' option is still required with GNU `make' if
+the "Entering/Leaving directory ..." messages are to be disabled.
+
+\1f
+File: automake.info,  Node: Gnits,  Next: Cygnus,  Prev: Silencing Make,  Up: Top
+
+22 The effect of `--gnu' and `--gnits'
+**************************************
+
+The `--gnu' option (or `gnu' in the `AUTOMAKE_OPTIONS' variable) causes
+`automake' to check the following:
+
+   * The files `INSTALL', `NEWS', `README', `AUTHORS', and `ChangeLog',
+     plus one of `COPYING.LIB', `COPYING.LESSER' or `COPYING', are
+     required at the topmost directory of the package.
+
+     If the `--add-missing' option is given, `automake' will add a
+     generic version of the `INSTALL' file as well as the `COPYING'
+     file containing the text of the current version of the GNU General
+     Public License existing at the time of this Automake release
+     (version 3 as this is written,
+     `http://www.gnu.org/copyleft/gpl.html').  However, an existing
+     `COPYING' file will never be overwritten by `automake'.
+
+   * The options `no-installman' and `no-installinfo' are prohibited.
+
+   Note that this option will be extended in the future to do even more
+checking; it is advisable to be familiar with the precise requirements
+of the GNU standards.  Also, `--gnu' can require certain non-standard
+GNU programs to exist for use by various maintainer-only rules; for
+instance, in the future `pathchk' might be required for `make dist'.
+
+   The `--gnits' option does everything that `--gnu' does, and checks
+the following as well:
+
+   * `make installcheck' will check to make sure that the `--help' and
+     `--version' really print a usage message and a version string,
+     respectively.  This is the `std-options' option (*note Options::).
+
+   * `make dist' will check to make sure the `NEWS' file has been
+     updated to the current version.
+
+   * `VERSION' is checked to make sure its format complies with Gnits
+     standards.
+
+   * If `VERSION' indicates that this is an alpha release, and the file
+     `README-alpha' appears in the topmost directory of a package, then
+     it is included in the distribution.  This is done in `--gnits'
+     mode, and no other, because this mode is the only one where version
+     number formats are constrained, and hence the only mode where
+     Automake can automatically determine whether `README-alpha' should
+     be included.
+
+   * The file `THANKS' is required.
+
+\1f
+File: automake.info,  Node: Cygnus,  Next: Not Enough,  Prev: Gnits,  Up: Top
+
+23 The effect of `--cygnus'
+***************************
+
+_The features described in this section are deprecated; you must not
+use any of them in new code, and should remove their use from older but
+still maintained code: they will be withdrawn the next major Automake
+release (1.13)._
+
+   Some packages, notably GNU GCC and GNU gdb, used to have a build
+environment originally written at Cygnus Support (subsequently renamed
+Cygnus Solutions, and then later purchased by Red Hat).  Packages with
+this ancestry are sometimes referred to as "Cygnus" trees.
+
+   A Cygnus tree has slightly different rules for how a `Makefile.in'
+is to be constructed.  Passing `--cygnus' to `automake' will cause any
+generated `Makefile.in' to comply with Cygnus rules.
+
+   Here are the precise effects of `--cygnus':
+
+   * The `foreign' strictness is implied.
+
+   * The options `no-installinfo', `no-dependencies' and `no-dist' are
+     implied (*note Options::).
+
+   * The macro `AM_MAINTAINER_MODE' is required.
+
+   * Info files are always created in the build directory, and not in
+     the source directory.  Packages that don't use the `cygnus' option
+     can emulate this effect by using the `no-installinfo' option and
+     listing the generated info files in the `CLEANFILES' variable.
+
+   * `texinfo.tex' is not required if a Texinfo source file is
+     specified.  The assumption is that the file will be supplied, but
+     in a place that Automake cannot find - it is an artifact of how
+     Cygnus packages are typically bundled.  This effect can be
+     emulated in packages not using the `cygnus' option with a proper
+     definition of the `TEXINFO_TEX' variable (*note Texinfo::).
+
+   * Certain tools will be searched for in the build tree as well as in
+     the user's `PATH'.  These tools are `runtest', `expect',
+     `makeinfo' and `texi2dvi'.
+
+   * The `check' target doesn't depend on `all'.
+
+\1f
+File: automake.info,  Node: Not Enough,  Next: Distributing,  Prev: Cygnus,  Up: Top
+
+24 When Automake Isn't Enough
+*****************************
+
+In some situations, where Automake is not up to one task, one has to
+resort to handwritten rules or even handwritten `Makefile's.
+
+* Menu:
+
+* Extending::                   Adding new rules or overriding existing ones.
+* Third-Party Makefiles::       Integrating Non-Automake `Makefile's.
+
+\1f
+File: automake.info,  Node: Extending,  Next: Third-Party Makefiles,  Up: Not Enough
+
+24.1 Extending Automake Rules
+=============================
+
+With some minor exceptions (for example `_PROGRAMS' variables, `TESTS',
+or `XFAIL_TESTS') being rewritten to append `$(EXEEXT)'), the contents
+of a `Makefile.am' is copied to `Makefile.in' verbatim.
+
+   These copying semantics mean that many problems can be worked around
+by simply adding some `make' variables and rules to `Makefile.am'.
+Automake will ignore these additions.
+
+   Since a `Makefile.in' is built from data gathered from three
+different places (`Makefile.am', `configure.ac', and `automake'
+itself), it is possible to have conflicting definitions of rules or
+variables.  When building `Makefile.in' the following priorities are
+respected by `automake' to ensure the user always has the last word:
+
+   * User defined variables in `Makefile.am' have priority over
+     variables `AC_SUBST'ed from `configure.ac', and `AC_SUBST'ed
+     variables have priority over `automake'-defined variables.
+
+   * As far as rules are concerned, a user-defined rule overrides any
+     `automake'-defined rule for the same target.
+
+   These overriding semantics make it possible to fine tune some default
+settings of Automake, or replace some of its rules.  Overriding
+Automake rules is often inadvisable, particularly in the topmost
+directory of a package with subdirectories.  The `-Woverride' option
+(*note automake Invocation::) comes in handy to catch overridden
+definitions.
+
+   Note that Automake does not make any distinction between rules with
+commands and rules that only specify dependencies.  So it is not
+possible to append new dependencies to an `automake'-defined target
+without redefining the entire rule.
+
+   However, various useful targets have a `-local' version you can
+specify in your `Makefile.am'.  Automake will supplement the standard
+target with these user-supplied targets.
+
+   The targets that support a local version are `all', `info', `dvi',
+`ps', `pdf', `html', `check', `install-data', `install-dvi',
+`install-exec', `install-html', `install-info', `install-pdf',
+`install-ps', `uninstall', `installdirs', `installcheck' and the
+various `clean' targets (`mostlyclean', `clean', `distclean', and
+`maintainer-clean').
+
+   Note that there are no `uninstall-exec-local' or
+`uninstall-data-local' targets; just use `uninstall-local'.  It doesn't
+make sense to uninstall just data or just executables.
+
+   For instance, here is one way to erase a subdirectory during `make
+clean' (*note Clean::).
+
+     clean-local:
+             -rm -rf testSubDir
+
+   You may be tempted to use `install-data-local' to install a file to
+some hard-coded location, but you should avoid this (*note Hard-Coded
+Install Paths::).
+
+   With the `-local' targets, there is no particular guarantee of
+execution order; typically, they are run early, but with parallel make,
+there is no way to be sure of that.
+
+   In contrast, some rules also have a way to run another rule, called a
+"hook"; hooks are always executed after the main rule's work is done.
+The hook is named after the principal target, with `-hook' appended.
+The targets allowing hooks are `install-data', `install-exec',
+`uninstall', `dist', and `distcheck'.
+
+   For instance, here is how to create a hard link to an installed
+program:
+
+     install-exec-hook:
+             ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
+                $(DESTDIR)$(bindir)/proglink$(EXEEXT)
+
+   Although cheaper and more portable than symbolic links, hard links
+will not work everywhere (for instance, OS/2 does not have `ln').
+Ideally you should fall back to `cp -p' when `ln' does not work.  An
+easy way, if symbolic links are acceptable to you, is to add
+`AC_PROG_LN_S' to `configure.ac' (*note Particular Program Checks:
+(autoconf)Particular Programs.) and use `$(LN_S)' in `Makefile.am'.
+
+   For instance, here is how you could install a versioned copy of a
+program using `$(LN_S)':
+
+     install-exec-hook:
+             cd $(DESTDIR)$(bindir) && \
+               mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
+               $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
+
+   Note that we rename the program so that a new version will erase the
+symbolic link, not the real binary.  Also we `cd' into the destination
+directory in order to create relative links.
+
+   When writing `install-exec-hook' or `install-data-hook', please bear
+in mind that the exec/data distinction is based on the installation
+directory, not on the primary used (*note The Two Parts of Install::).
+So a `foo_SCRIPTS' will be installed by `install-data', and a
+`barexec_SCRIPTS' will be installed by `install-exec'.  You should
+define your hooks consequently.
+
+\1f
+File: automake.info,  Node: Third-Party Makefiles,  Prev: Extending,  Up: Not Enough
+
+24.2 Third-Party `Makefile's
+============================
+
+In most projects all `Makefile's are generated by Automake.  In some
+cases, however, projects need to embed subdirectories with handwritten
+`Makefile's.  For instance, one subdirectory could be a third-party
+project with its own build system, not using Automake.
+
+   It is possible to list arbitrary directories in `SUBDIRS' or
+`DIST_SUBDIRS' provided each of these directories has a `Makefile' that
+recognizes all the following recursive targets.
+
+   When a user runs one of these targets, that target is run recursively
+in all subdirectories.  This is why it is important that even
+third-party `Makefile's support them.
+
+`all'
+     Compile the entire package.  This is the default target in
+     Automake-generated `Makefile's, but it does not need to be the
+     default in third-party `Makefile's.
+
+`distdir'
+     Copy files to distribute into `$(distdir)', before a tarball is
+     constructed.  Of course this target is not required if the
+     `no-dist' option (*note Options::) is used.
+
+     The variables `$(top_distdir)' and `$(distdir)' (*note The dist
+     Hook::) will be passed from the outer package to the subpackage
+     when the `distdir' target is invoked.  These two variables have
+     been adjusted for the directory that is being recursed into, so
+     they are ready to use.
+
+`install'
+`install-data'
+`install-exec'
+`uninstall'
+     Install or uninstall files (*note Install::).
+
+`install-dvi'
+`install-html'
+`install-info'
+`install-ps'
+`install-pdf'
+     Install only some specific documentation format (*note Texinfo::).
+
+`installdirs'
+     Create install directories, but do not install any files.
+
+`check'
+`installcheck'
+     Check the package (*note Tests::).
+
+`mostlyclean'
+`clean'
+`distclean'
+`maintainer-clean'
+     Cleaning rules (*note Clean::).
+
+`dvi'
+`pdf'
+`ps'
+`info'
+`html'
+     Build the documentation in various formats (*note Texinfo::).
+
+`tags'
+`ctags'
+     Build `TAGS' and `CTAGS' (*note Tags::).
+
+   If you have ever used Gettext in a project, this is a good example of
+how third-party `Makefile's can be used with Automake.  The `Makefile's
+`gettextize' puts in the `po/' and `intl/' directories are handwritten
+`Makefile's that implement all these targets.  That way they can be
+added to `SUBDIRS' in Automake packages.
+
+   Directories that are only listed in `DIST_SUBDIRS' but not in
+`SUBDIRS' need only the `distclean', `maintainer-clean', and `distdir'
+rules (*note Conditional Subdirectories::).
+
+   Usually, many of these rules are irrelevant to the third-party
+subproject, but they are required for the whole package to work.  It's
+OK to have a rule that does nothing, so if you are integrating a
+third-party project with no documentation or tag support, you could
+simply augment its `Makefile' as follows:
+
+     EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
+     .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
+     $(EMPTY_AUTOMAKE_TARGETS):
+
+   Another aspect of integrating third-party build systems is whether
+they support VPATH builds (*note VPATH Builds::).  Obviously if the
+subpackage does not support VPATH builds the whole package will not
+support VPATH builds.  This in turns means that `make distcheck' will
+not work, because it relies on VPATH builds.  Some people can live
+without this (actually, many Automake users have never heard of `make
+distcheck').  Other people may prefer to revamp the existing
+`Makefile's to support VPATH.  Doing so does not necessarily require
+Automake, only Autoconf is needed (*note Build Directories:
+(autoconf)Build Directories.).  The necessary substitutions:
+`@srcdir@', `@top_srcdir@', and `@top_builddir@' are defined by
+`configure' when it processes a `Makefile' (*note Preset Output
+Variables: (autoconf)Preset Output Variables.), they are not computed
+by the Makefile like the aforementioned `$(distdir)' and
+`$(top_distdir)' variables.
+
+   It is sometimes inconvenient to modify a third-party `Makefile' to
+introduce the above required targets.  For instance, one may want to
+keep the third-party sources untouched to ease upgrades to new versions.
+
+   Here are two other ideas.  If GNU make is assumed, one possibility is
+to add to that subdirectory a `GNUmakefile' that defines the required
+targets and includes the third-party `Makefile'.  For this to work in
+VPATH builds, `GNUmakefile' must lie in the build directory; the
+easiest way to do this is to write a `GNUmakefile.in' instead, and have
+it processed with `AC_CONFIG_FILES' from the outer package.  For
+example if we assume `Makefile' defines all targets except the
+documentation targets, and that the `check' target is actually called
+`test', we could write `GNUmakefile' (or `GNUmakefile.in') like this:
+
+     # First, include the real Makefile
+     include Makefile
+     # Then, define the other targets needed by Automake Makefiles.
+     .PHONY: dvi pdf ps info html check
+     dvi pdf ps info html:
+     check: test
+
+   A similar idea that does not use `include' is to write a proxy
+`Makefile' that dispatches rules to the real `Makefile', either with
+`$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target' (if it's OK to rename
+the original `Makefile') or with `cd subdir && $(MAKE) $(AM_MAKEFLAGS)
+target' (if it's OK to store the subdirectory project one directory
+deeper).  The good news is that this proxy `Makefile' can be generated
+with Automake.  All we need are `-local' targets (*note Extending::)
+that perform the dispatch.  Of course the other Automake features are
+available, so you could decide to let Automake perform distribution or
+installation.  Here is a possible `Makefile.am':
+
+     all-local:
+             cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
+     check-local:
+             cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
+     clean-local:
+             cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
+
+     # Assuming the package knows how to install itself
+     install-data-local:
+             cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
+     install-exec-local:
+             cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
+     uninstall-local:
+             cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
+
+     # Distribute files from here.
+     EXTRA_DIST = subdir/Makefile subdir/program.c ...
+
+   Pushing this idea to the extreme, it is also possible to ignore the
+subproject build system and build everything from this proxy
+`Makefile.am'.  This might sound very sensible if you need VPATH builds
+but the subproject does not support them.
+
+\1f
+File: automake.info,  Node: Distributing,  Next: API Versioning,  Prev: Not Enough,  Up: Top
+
+25 Distributing `Makefile.in's
+******************************
+
+Automake places no restrictions on the distribution of the resulting
+`Makefile.in's.  We still encourage software authors to distribute
+their work under terms like those of the GPL, but doing so is not
+required to use Automake.
+
+   Some of the files that can be automatically installed via the
+`--add-missing' switch do fall under the GPL.  However, these also have
+a special exception allowing you to distribute them with your package,
+regardless of the licensing you choose.
+
+\1f
+File: automake.info,  Node: API Versioning,  Next: Upgrading,  Prev: Distributing,  Up: Top
+
+26 Automake API Versioning
+**************************
+
+New Automake releases usually include bug fixes and new features.
+Unfortunately they may also introduce new bugs and incompatibilities.
+This makes four reasons why a package may require a particular Automake
+version.
+
+   Things get worse when maintaining a large tree of packages, each one
+requiring a different version of Automake.  In the past, this meant that
+any developer (and sometimes users) had to install several versions of
+Automake in different places, and switch `$PATH' appropriately for each
+package.
+
+   Starting with version 1.6, Automake installs versioned binaries.
+This means you can install several versions of Automake in the same
+`$prefix', and can select an arbitrary Automake version by running
+`automake-1.6' or `automake-1.7' without juggling with `$PATH'.
+Furthermore, `Makefile''s generated by Automake 1.6 will use
+`automake-1.6' explicitly in their rebuild rules.
+
+   The number `1.6' in `automake-1.6' is Automake's API version, not
+Automake's version.  If a bug fix release is made, for instance
+Automake 1.6.1, the API version will remain 1.6.  This means that a
+package that works with Automake 1.6 should also work with 1.6.1; after
+all, this is what people expect from bug fix releases.
+
+   If your package relies on a feature or a bug fix introduced in a
+release, you can pass this version as an option to Automake to ensure
+older releases will not be used.  For instance, use this in your
+`configure.ac':
+
+       AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
+
+or, in a particular `Makefile.am':
+
+       AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
+
+Automake will print an error message if its version is older than the
+requested version.
+
+What is in the API
+==================
+
+Automake's programming interface is not easy to define.  Basically it
+should include at least all *documented* variables and targets that a
+`Makefile.am' author can use, any behavior associated with them (e.g.,
+the places where `-hook''s are run), the command line interface of
+`automake' and `aclocal', ...
+
+What is not in the API
+======================
+
+Every undocumented variable, target, or command line option, is not part
+of the API.  You should avoid using them, as they could change from one
+version to the other (even in bug fix releases, if this helps to fix a
+bug).
+
+   If it turns out you need to use such an undocumented feature, contact
+<automake@gnu.org> and try to get it documented and exercised by the
+test-suite.
+
+\1f
+File: automake.info,  Node: Upgrading,  Next: FAQ,  Prev: API Versioning,  Up: Top
+
+27 Upgrading a Package to a Newer Automake Version
+**************************************************
+
+Automake maintains three kind of files in a package.
+
+   * `aclocal.m4'
+
+   * `Makefile.in's
+
+   * auxiliary tools like `install-sh' or `py-compile'
+
+   `aclocal.m4' is generated by `aclocal' and contains some
+Automake-supplied M4 macros.  Auxiliary tools are installed by
+`automake --add-missing' when needed.  `Makefile.in's are built from
+`Makefile.am' by `automake', and rely on the definitions of the M4
+macros put in `aclocal.m4' as well as the behavior of the auxiliary
+tools installed.
+
+   Because all these files are closely related, it is important to
+regenerate all of them when upgrading to a newer Automake release.  The
+usual way to do that is
+
+     aclocal # with any option needed (such a -I m4)
+     autoconf
+     automake --add-missing --force-missing
+
+or more conveniently:
+
+     autoreconf -vfi
+
+   The use of `--force-missing' ensures that auxiliary tools will be
+overridden by new versions (*note automake Invocation::).
+
+   It is important to regenerate all these files each time Automake is
+upgraded, even between bug fixes releases.  For instance, it is not
+unusual for a bug fix to involve changes to both the rules generated in
+`Makefile.in' and the supporting M4 macros copied to `aclocal.m4'.
+
+   Presently `automake' is able to diagnose situations where
+`aclocal.m4' has been generated with another version of `aclocal'.
+However it never checks whether auxiliary scripts are up-to-date.  In
+other words, `automake' will tell you when `aclocal' needs to be rerun,
+but it will never diagnose a missing `--force-missing'.
+
+   Before upgrading to a new major release, it is a good idea to read
+the file `NEWS'.  This file lists all changes between releases: new
+features, obsolete constructs, known incompatibilities, and workarounds.
+
+\1f
+File: automake.info,  Node: FAQ,  Next: Copying This Manual,  Prev: Upgrading,  Up: Top
+
+28 Frequently Asked Questions about Automake
+********************************************
+
+This chapter covers some questions that often come up on the mailing
+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
+* Errors with distclean::       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?
+* 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
+* Debugging Make Rules::        Strategies when things don't work as expected
+* Reporting Bugs::              Feedback on bugs and feature requests
+
+\1f
+File: automake.info,  Node: CVS,  Next: maintainer-mode,  Up: FAQ
+
+28.1 CVS and generated files
+============================
+
+Background: distributed generated Files
+---------------------------------------
+
+Packages made with Autoconf and Automake ship with some generated files
+like `configure' or `Makefile.in'.  These files were generated on the
+developer's host and are distributed so that end-users do not have to
+install the maintainer tools required to rebuild them.  Other generated
+files like Lex scanners, Yacc parsers, or Info documentation, are
+usually distributed on similar grounds.
+
+   Automake outputs rules in `Makefile's to rebuild these files.  For
+instance, `make' will run `autoconf' to rebuild `configure' whenever
+`configure.ac' is changed.  This makes development safer by ensuring a
+`configure' is never out-of-date with respect to `configure.ac'.
+
+   As generated files shipped in packages are up-to-date, and because
+`tar' preserves times-tamps, these rebuild rules are not triggered when
+a user unpacks and builds a package.
+
+Background: CVS and Timestamps
+------------------------------
+
+Unless you use CVS keywords (in which case files must be updated at
+commit time), CVS preserves timestamp during `cvs commit' and `cvs
+import -d' operations.
+
+   When you check out a file using `cvs checkout' its timestamp is set
+to that of the revision that is being checked out.
+
+   However, during `cvs update', files will have the date of the
+update, not the original timestamp of this revision.  This is meant to
+make sure that `make' notices sources files have been updated.
+
+   This timestamp shift is troublesome when both sources and generated
+files are kept under CVS.  Because CVS processes files in lexical
+order, `configure.ac' will appear newer than `configure' after a `cvs
+update' that updates both files, even if `configure' was newer than
+`configure.ac' when it was checked in.  Calling `make' will then
+trigger a spurious rebuild of `configure'.
+
+Living with CVS in Autoconfiscated Projects
+-------------------------------------------
+
+There are basically two clans amongst maintainers: those who keep all
+distributed files under CVS, including generated files, and those who
+keep generated files _out_ of CVS.
+
+All Files in CVS
+................
+
+   * The CVS repository contains all distributed files so you know
+     exactly what is distributed, and you can checkout any prior
+     version entirely.
+
+   * Maintainers can see how generated files evolve (for instance, you
+     can see what happens to your `Makefile.in's when you upgrade
+     Automake and make sure they look OK).
+
+   * Users do not need the autotools to build a checkout of the
+     project, it works just like a released tarball.
+
+   * If users use `cvs update' to update their copy, instead of `cvs
+     checkout' to fetch a fresh one, timestamps will be inaccurate.
+     Some rebuild rules will be triggered and attempt to run developer
+     tools such as `autoconf' or `automake'.
+
+     Actually, calls to such tools are all wrapped into a call to the
+     `missing' script discussed later (*note maintainer-mode::).
+     `missing' will take care of fixing the timestamps when these tools
+     are not installed, so that the build can continue.
+
+   * In distributed development, developers are likely to have different
+     version of the maintainer tools installed.  In this case rebuilds
+     triggered by timestamp lossage will lead to spurious changes to
+     generated files.  There are several solutions to this:
+
+        * All developers should use the same versions, so that the
+          rebuilt files are identical to files in CVS.  (This starts to
+          be difficult when each project you work on uses different
+          versions.)
+
+        * Or people use a script to fix the timestamp after a checkout
+          (the GCC folks have such a script).
+
+        * Or `configure.ac' uses `AM_MAINTAINER_MODE', which will
+          disable all these rebuild rules by default.  This is further
+          discussed in *note maintainer-mode::.
+
+   * Although we focused on spurious rebuilds, the converse can also
+     happen.  CVS's timestamp handling can also let you think an
+     out-of-date file is up-to-date.
+
+     For instance, suppose a developer has modified `Makefile.am' and
+     has rebuilt `Makefile.in', and then decides to do a last-minute
+     change to `Makefile.am' right before checking in both files
+     (without rebuilding `Makefile.in' to account for the change).
+
+     This last change to `Makefile.am' makes the copy of `Makefile.in'
+     out-of-date.  Since CVS processes files alphabetically, when
+     another developer `cvs update's his or her tree, `Makefile.in'
+     will happen to be newer than `Makefile.am'.  This other developer
+     will not see that `Makefile.in' is out-of-date.
+
+
+Generated Files out of CVS
+..........................
+
+One way to get CVS and `make' working peacefully is to never store
+generated files in CVS, i.e., do not CVS-control files that are
+`Makefile' targets (also called _derived_ files).
+
+   This way developers are not annoyed by changes to generated files.
+It does not matter if they all have different versions (assuming they
+are compatible, of course).  And finally, timestamps are not lost,
+changes to sources files can't be missed as in the
+`Makefile.am'/`Makefile.in' example discussed earlier.
+
+   The drawback is that the CVS repository is not an exact copy of what
+is distributed and that users now need to install various development
+tools (maybe even specific versions) before they can build a checkout.
+But, after all, CVS's job is versioning, not distribution.
+
+   Allowing developers to use different versions of their tools can also
+hide bugs during distributed development.  Indeed, developers will be
+using (hence testing) their own generated files, instead of the
+generated files that will be released actually.  The developer who
+prepares the tarball might be using a version of the tool that 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.
+
+Third-party Files
+-----------------
+
+Another class of files not discussed here (because they do not cause
+timestamp issues) are files that are shipped with a package, but
+maintained elsewhere.  For instance, tools like `gettextize' and
+`autopoint' (from Gettext) or `libtoolize' (from Libtool), will install
+or update files in your package.
+
+   These files, whether they are kept under CVS or not, raise similar
+concerns about version mismatch between developers' tools.  The Gettext
+manual has a section about this, see *note CVS Issues: (gettext)CVS
+Issues.
+
+\1f
+File: automake.info,  Node: maintainer-mode,  Next: Wildcards,  Prev: CVS,  Up: FAQ
+
+28.2 `missing' and `AM_MAINTAINER_MODE'
+=======================================
+
+`missing'
+---------
+
+The `missing' script is a wrapper around several maintainer tools,
+designed to warn users if a maintainer tool is required but missing.
+Typical maintainer tools are `autoconf', `automake', `bison', etc.
+Because file generated by these tools are shipped with the other
+sources of a package, these tools shouldn't be required during a user
+build and they are not checked for in `configure'.
+
+   However, if for some reason a rebuild rule is triggered and involves
+a missing tool, `missing' will notice it and warn the user.  Besides
+the warning, when a tool is missing, `missing' will attempt to fix
+timestamps in a way that allows the build to continue.  For instance,
+`missing' will touch `configure' if `autoconf' is not installed.  When
+all distributed files are kept under version control, this feature of
+`missing' allows a user _with no maintainer tools_ to build a package
+off its version control repository, bypassing any timestamp
+inconsistency (implied by e.g. `cvs update' or `git clone').
+
+   If the required tool is installed, `missing' will run it and won't
+attempt to continue after failures.  This is correct during
+development: developers love fixing failures.  However, users with
+wrong versions of maintainer tools may get an error when the rebuild
+rule is spuriously triggered, halting the build.  This failure to let
+the build continue is one of the arguments of the `AM_MAINTAINER_MODE'
+advocates.
+
+`AM_MAINTAINER_MODE'
+--------------------
+
+`AM_MAINTAINER_MODE' allows you to choose whether the so called
+"rebuild rules" should be enabled or disabled.  With
+`AM_MAINTAINER_MODE([enable])', they are enabled by default, otherwise
+they are disabled by default.  In the latter case, if you have
+`AM_MAINTAINER_MODE' in `configure.ac', and run `./configure && make',
+then `make' will *never* attempt to rebuild `configure',
+`Makefile.in's, Lex or Yacc outputs, etc.  I.e., this disables build
+rules for files that are usually distributed and that users should
+normally not have to update.
+
+   The user can override the default setting by passing either
+`--enable-maintainer-mode' or `--disable-maintainer-mode' to
+`configure'.
+
+   People use `AM_MAINTAINER_MODE' either because they do not want their
+users (or themselves) annoyed by timestamps lossage (*note CVS::), or
+because they simply can't stand the rebuild rules and prefer running
+maintainer tools explicitly.
+
+   `AM_MAINTAINER_MODE' also allows you to disable some custom build
+rules conditionally.  Some developers use this feature to disable rules
+that need exotic tools that users may not have available.
+
+   Several years ago Franc,ois Pinard pointed out several arguments
+against this `AM_MAINTAINER_MODE' macro.  Most of them relate to
+insecurity.  By removing dependencies you get non-dependable builds:
+changes to sources files can have no effect on generated files and this
+can be very confusing when unnoticed.  He adds that security shouldn't
+be reserved to maintainers (what `--enable-maintainer-mode' suggests),
+on the contrary.  If one user has to modify a `Makefile.am', then
+either `Makefile.in' should be updated or a warning should be output
+(this is what Automake uses `missing' for) but the last thing you want
+is that nothing happens and the user doesn't notice it (this is what
+happens when rebuild rules are disabled by `AM_MAINTAINER_MODE').
+
+   Jim Meyering, the inventor of the `AM_MAINTAINER_MODE' macro was
+swayed by Franc,ois's arguments, and got rid of `AM_MAINTAINER_MODE' in
+all of his packages.
+
+   Still many people continue to use `AM_MAINTAINER_MODE', because it
+helps them working on projects where all files are kept under version
+control, and because `missing' isn't enough if you have the wrong
+version of the tools.
+
+\1f
+File: automake.info,  Node: Wildcards,  Next: Limitations on File Names,  Prev: maintainer-mode,  Up: FAQ
+
+28.3 Why doesn't Automake support wildcards?
+============================================
+
+Developers are lazy.  They would often like to use wildcards in
+`Makefile.am's, so that they would not need to remember to update
+`Makefile.am's every time they add, delete, or rename a file.
+
+   There are several objections to this:
+   * When using CVS (or similar) developers need to remember they have
+     to run `cvs add' or `cvs rm' anyway.  Updating `Makefile.am'
+     accordingly quickly becomes a reflex.
+
+     Conversely, if your application doesn't compile because you forgot
+     to add a file in `Makefile.am', it will help you remember to `cvs
+     add' it.
+
+   * Using wildcards makes it easy to distribute files by mistake.  For
+     instance, some code a developer is experimenting with (a test case,
+     say) that should not be part of the distribution.
+
+   * Using wildcards it's easy to omit some files by mistake.  For
+     instance, one developer creates a new file, uses it in many places,
+     but forgets to commit it.  Another developer then checks out the
+     incomplete project and is able to run `make dist' successfully,
+     even though a file is missing. By listing files, `make dist'
+     _will_ complain.
+
+   * Wildcards are not portable to some non-GNU `make' implementations,
+     e.g., NetBSD `make' will not expand globs such as `*' in
+     prerequisites of a target.
+
+   * Finally, it's really hard to _forget_ to add a file to
+     `Makefile.am': files that are not listed in `Makefile.am' are not
+     compiled or installed, so you can't even test them.
+
+   Still, these are philosophical objections, and as such you may
+disagree, or find enough value in wildcards to dismiss all of them.
+Before you start writing a patch against Automake to teach it about
+wildcards, let's see the main technical issue: portability.
+
+   Although `$(wildcard ...)' works with GNU `make', it is not portable
+to other `make' implementations.
+
+   The only way Automake could support `$(wildcard ...)' is by
+expending `$(wildcard ...)' when `automake' is run.  The resulting
+`Makefile.in's would be portable since they would list all files and
+not use `$(wildcard ...)'.  However that means developers would need to
+remember to run `automake' each time they add, delete, or rename files.
+
+   Compared to editing `Makefile.am', this is a very small gain.  Sure,
+it's easier and faster to type `automake; make' than to type `emacs
+Makefile.am; make'.  But nobody bothered enough to write a patch to add
+support for this syntax.  Some people use scripts to generate file
+lists in `Makefile.am' or in separate `Makefile' fragments.
+
+   Even if you don't care about portability, and are tempted to use
+`$(wildcard ...)' anyway because you target only GNU Make, you should
+know there are many places where Automake needs to know exactly which
+files should be processed.  As Automake doesn't know how to expand
+`$(wildcard ...)', you cannot use it in these places.  `$(wildcard
+...)' is a black box comparable to `AC_SUBST'ed variables as far
+Automake is concerned.
+
+   You can get warnings about `$(wildcard ...') constructs using the
+`-Wportability' flag.
+
+\1f
+File: automake.info,  Node: Limitations on File Names,  Next: Errors with distclean,  Prev: Wildcards,  Up: FAQ
+
+28.4 Limitations on File Names
+==============================
+
+Automake attempts to support all kinds of file names, even those that
+contain unusual characters or are unusually long.  However, some
+limitations are imposed by the underlying operating system and tools.
+
+   Most operating systems prohibit the use of the null byte in file
+names, and reserve `/' as a directory separator.  Also, they require
+that file names are properly encoded for the user's locale.  Automake
+is subject to these limits.
+
+   Portable packages should limit themselves to POSIX file names.
+These can contain ASCII letters and digits, `_', `.', and `-'.  File
+names consist of components separated by `/'.  File name components
+cannot begin with `-'.
+
+   Portable POSIX file names cannot contain components that exceed a
+14-byte limit, but nowadays it's normally safe to assume the
+more-generous XOPEN limit of 255 bytes.  POSIX limits file names to 255
+bytes (XOPEN allows 1023 bytes), but you may want to limit a source
+tarball to file names of 99 bytes to avoid interoperability problems
+with old versions of `tar'.
+
+   If you depart from these rules (e.g., by using non-ASCII characters
+in file names, or by using lengthy file names), your installers may
+have problems for reasons unrelated to Automake.  However, if this does
+not concern you, you should know about the limitations imposed by
+Automake itself.  These limitations are undesirable, but some of them
+seem to be inherent to underlying tools like Autoconf, Make, M4, and
+the shell.  They fall into three categories: install directories, build
+directories, and file names.
+
+   The following characters:
+
+     newline " # $ ' `
+
+   should not appear in the names of install directories.  For example,
+the operand of `configure''s `--prefix' option should not contain these
+characters.
+
+   Build directories suffer the same limitations as install directories,
+and in addition should not contain the following characters:
+
+     & @ \
+
+   For example, the full name of the directory containing the source
+files should not contain these characters.
+
+   Source and installation file names like `main.c' are limited even
+further: they should conform to the POSIX/XOPEN rules described above.
+In addition, if you plan to port to non-POSIX environments, you should
+avoid file names that differ only in case (e.g., `makefile' and
+`Makefile').  Nowadays it is no longer worth worrying about the 8.3
+limits of DOS file systems.
+
+\1f
+File: automake.info,  Node: Errors with distclean,  Next: Flag Variables Ordering,  Prev: Limitations on File Names,  Up: FAQ
+
+28.5 Errors with distclean
+==========================
+
+This is a diagnostic you might encounter while running `make distcheck'.
+
+   As explained in *note Checking the Distribution::, `make distcheck'
+attempts to build and check your package for errors like this one.
+
+   `make distcheck' will perform a `VPATH' build of your package (*note
+VPATH Builds::), and then call `make distclean'.  Files left in the
+build directory after `make distclean' has run are listed after this
+error.
+
+   This diagnostic really covers two kinds of errors:
+
+   * files that are forgotten by distclean;
+
+   * distributed files that are erroneously rebuilt.
+
+   The former left-over files are not distributed, so the fix is to mark
+them for cleaning (*note Clean::), this is obvious and doesn't deserve
+more explanations.
+
+   The latter bug is not always easy to understand and fix, so let's
+proceed with an example.  Suppose our package contains a program for
+which we want to build a man page using `help2man'.  GNU `help2man'
+produces simple manual pages from the `--help' and `--version' output
+of other commands (*note Overview: (help2man)Top.).  Because we don't
+want to force our users to install `help2man', we decide to distribute
+the generated man page using the following setup.
+
+     # This Makefile.am is bogus.
+     bin_PROGRAMS = foo
+     foo_SOURCES = foo.c
+     dist_man_MANS = foo.1
+
+     foo.1: foo$(EXEEXT)
+             help2man --output=foo.1 ./foo$(EXEEXT)
+
+   This will effectively distribute the man page.  However, `make
+distcheck' will fail with:
+
+     ERROR: files left in build directory after distclean:
+     ./foo.1
+
+   Why was `foo.1' rebuilt?  Because although distributed, `foo.1'
+depends on a non-distributed built file: `foo$(EXEEXT)'.
+`foo$(EXEEXT)' is built by the user, so it will always appear to be
+newer than the distributed `foo.1'.
+
+   `make distcheck' caught an inconsistency in our package.  Our intent
+was to distribute `foo.1' so users do not need to install `help2man',
+however since this rule causes this file to be always rebuilt, users
+_do_ need `help2man'.  Either we should ensure that `foo.1' is not
+rebuilt by users, or there is no point in distributing `foo.1'.
+
+   More generally, the rule is that distributed files should never
+depend on non-distributed built files.  If you distribute something
+generated, distribute its sources.
+
+   One way to fix the above example, while still distributing `foo.1'
+is to not depend on `foo$(EXEEXT)'.  For instance, assuming `foo
+--version' and `foo --help' do not change unless `foo.c' or
+`configure.ac' change, we could write the following `Makefile.am':
+
+     bin_PROGRAMS = foo
+     foo_SOURCES = foo.c
+     dist_man_MANS = foo.1
+
+     foo.1: foo.c $(top_srcdir)/configure.ac
+             $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
+             help2man --output=foo.1 ./foo$(EXEEXT)
+
+   This way, `foo.1' will not get rebuilt every time `foo$(EXEEXT)'
+changes.  The `make' call makes sure `foo$(EXEEXT)' is up-to-date
+before `help2man'.  Another way to ensure this would be to use separate
+directories for binaries and man pages, and set `SUBDIRS' so that
+binaries are built before man pages.
+
+   We could also decide not to distribute `foo.1'.  In this case it's
+fine to have `foo.1' dependent upon `foo$(EXEEXT)', since both will
+have to be rebuilt.  However it would be impossible to build the
+package in a cross-compilation, because building `foo.1' involves an
+_execution_ of `foo$(EXEEXT)'.
+
+   Another context where such errors are common is when distributed
+files are built by tools that are built by the package.  The pattern is
+similar:
+
+     distributed-file: built-tools distributed-sources
+             build-command
+
+should be changed to
+
+     distributed-file: distributed-sources
+             $(MAKE) $(AM_MAKEFLAGS) built-tools
+             build-command
+
+or you could choose not to distribute `distributed-file', if
+cross-compilation does not matter.
+
+   The points made through these examples are worth a summary:
+
+   * Distributed files should never depend upon non-distributed built
+     files.
+
+   * Distributed files should be distributed with all their
+     dependencies.
+
+   * If a file is _intended_ to be rebuilt by users, then there is no
+     point in distributing it.
+
+   For desperate cases, it's always possible to disable this check by
+setting `distcleancheck_listfiles' as documented in *note Checking the
+Distribution::.  Make sure you do understand the reason why `make
+distcheck' complains before you do this.  `distcleancheck_listfiles' is
+a way to _hide_ errors, not to fix them.  You can always do better.
+
+\1f
+File: automake.info,  Node: Flag Variables Ordering,  Next: Renamed Objects,  Prev: Errors with distclean,  Up: FAQ
+
+28.6 Flag Variables Ordering
+============================
+
+     What is the difference between `AM_CFLAGS', `CFLAGS', and
+     `mumble_CFLAGS'?
+
+     Why does `automake' output `CPPFLAGS' after
+     `AM_CPPFLAGS' on compile lines?  Shouldn't it be the converse?
+
+     My `configure' adds some warning flags into `CXXFLAGS'.  In
+     one `Makefile.am' I would like to append a new flag, however if I
+     put the flag into `AM_CXXFLAGS' it is prepended to the other
+     flags, not appended.
+
+Compile Flag Variables
+----------------------
+
+This section attempts to answer all the above questions.  We will
+mostly discuss `CPPFLAGS' in our examples, but actually the answer
+holds for all the compile flags used in Automake: `CCASFLAGS',
+`CFLAGS', `CPPFLAGS', `CXXFLAGS', `FCFLAGS', `FFLAGS', `GCJFLAGS',
+`LDFLAGS', `LFLAGS', `LIBTOOLFLAGS', `OBJCFLAGS', `OBJCXXFLAGS',
+`RFLAGS', `UPCFLAGS', and `YFLAGS'.
+
+   `CPPFLAGS', `AM_CPPFLAGS', and `mumble_CPPFLAGS' are three variables
+that can be used to pass flags to the C preprocessor (actually these
+variables are also used for other languages like C++ or preprocessed
+Fortran).  `CPPFLAGS' is the user variable (*note User Variables::),
+`AM_CPPFLAGS' is the Automake variable, and `mumble_CPPFLAGS' is the
+variable specific to the `mumble' target (we call this a per-target
+variable, *note Program and Library Variables::).
+
+   Automake always uses two of these variables when compiling C sources
+files.  When compiling an object file for the `mumble' target, the
+first variable will be `mumble_CPPFLAGS' if it is defined, or
+`AM_CPPFLAGS' otherwise.  The second variable is always `CPPFLAGS'.
+
+   In the following example,
+
+     bin_PROGRAMS = foo bar
+     foo_SOURCES = xyz.c
+     bar_SOURCES = main.c
+     foo_CPPFLAGS = -DFOO
+     AM_CPPFLAGS = -DBAZ
+
+`xyz.o' will be compiled with `$(foo_CPPFLAGS) $(CPPFLAGS)', (because
+`xyz.o' is part of the `foo' target), while `main.o' will be compiled
+with `$(AM_CPPFLAGS) $(CPPFLAGS)' (because there is no per-target
+variable for target `bar').
+
+   The difference between `mumble_CPPFLAGS' and `AM_CPPFLAGS' being
+clear enough, let's focus on `CPPFLAGS'.  `CPPFLAGS' is a user
+variable, i.e., a variable that users are entitled to modify in order
+to compile the package.  This variable, like many others, is documented
+at the end of the output of `configure --help'.
+
+   For instance, someone who needs to add `/home/my/usr/include' to the
+C compiler's search path would configure a package with
+
+     ./configure CPPFLAGS='-I /home/my/usr/include'
+
+and this flag would be propagated to the compile rules of all
+`Makefile's.
+
+   It is also not uncommon to override a user variable at `make'-time.
+Many installers do this with `prefix', but this can be useful with
+compiler flags too.  For instance, if, while debugging a C++ project,
+you need to disable optimization in one specific object file, you can
+run something like
+
+     rm file.o
+     make CXXFLAGS=-O0 file.o
+     make
+
+   The reason `$(CPPFLAGS)' appears after `$(AM_CPPFLAGS)' or
+`$(mumble_CPPFLAGS)' in the compile command is that users should always
+have the last say.  It probably makes more sense if you think about it
+while looking at the `CXXFLAGS=-O0' above, which should supersede any
+other switch from `AM_CXXFLAGS' or `mumble_CXXFLAGS' (and this of
+course replaces the previous value of `CXXFLAGS').
+
+   You should never redefine a user variable such as `CPPFLAGS' in
+`Makefile.am'.  Use `automake -Woverride' to diagnose such mistakes.
+Even something like
+
+     CPPFLAGS = -DDATADIR=\"$(datadir)\" @CPPFLAGS@
+
+is erroneous.  Although this preserves `configure''s value of
+`CPPFLAGS', the definition of `DATADIR' will disappear if a user
+attempts to override `CPPFLAGS' from the `make' command line.
+
+     AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
+
+is all that is needed here if no per-target flags are used.
+
+   You should not add options to these user variables within
+`configure' either, for the same reason.  Occasionally you need to
+modify these variables to perform a test, but you should reset their
+values afterwards.  In contrast, it is OK to modify the `AM_' variables
+within `configure' if you `AC_SUBST' them, but it is rather rare that
+you need to do this, unless you really want to change the default
+definitions of the `AM_' variables in all `Makefile's.
+
+   What we recommend is that you define extra flags in separate
+variables.  For instance, you may write an Autoconf macro that computes
+a set of warning options for the C compiler, and `AC_SUBST' them in
+`WARNINGCFLAGS'; you may also have an Autoconf macro that determines
+which compiler and which linker flags should be used to link with
+library `libfoo', and `AC_SUBST' these in `LIBFOOCFLAGS' and
+`LIBFOOLDFLAGS'.  Then, a `Makefile.am' could use these variables as
+follows:
+
+     AM_CFLAGS = $(WARNINGCFLAGS)
+     bin_PROGRAMS = prog1 prog2
+     prog1_SOURCES = ...
+     prog2_SOURCES = ...
+     prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
+     prog2_LDFLAGS = $(LIBFOOLDFLAGS)
+
+   In this example both programs will be compiled with the flags
+substituted into `$(WARNINGCFLAGS)', and `prog2' will additionally be
+compiled with the flags required to link with `libfoo'.
+
+   Note that listing `AM_CFLAGS' in a per-target `CFLAGS' variable is a
+common idiom to ensure that `AM_CFLAGS' applies to every target in a
+`Makefile.in'.
+
+   Using variables like this gives you full control over the ordering of
+the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
+you want to negate for a particular target, you can use something like
+`prog1_CFLAGS = $(AM_CFLAGS) -no-flag'.  If all these flags had been
+forcefully appended to `CFLAGS', there would be no way to disable one
+flag.  Yet another reason to leave user variables to users.
+
+   Finally, we have avoided naming the variable of the example
+`LIBFOO_LDFLAGS' (with an underscore) because that would cause Automake
+to think that this is actually a per-target variable (like
+`mumble_LDFLAGS') for some non-declared `LIBFOO' target.
+
+Other Variables
+---------------
+
+There are other variables in Automake that follow similar principles to
+allow user options.  For instance, Texinfo rules (*note Texinfo::) use
+`MAKEINFOFLAGS' and `AM_MAKEINFOFLAGS'.  Similarly, DejaGnu tests
+(*note DejaGnu Tests::) use `RUNTESTDEFAULTFLAGS' and
+`AM_RUNTESTDEFAULTFLAGS'.  The tags and ctags rules (*note Tags::) use
+`ETAGSFLAGS', `AM_ETAGSFLAGS', `CTAGSFLAGS', and `AM_CTAGSFLAGS'.  Java
+rules (*note Java::) use `JAVACFLAGS' and `AM_JAVACFLAGS'.  None of
+these rules support per-target flags (yet).
+
+   To some extent, even `AM_MAKEFLAGS' (*note Subdirectories::) obeys
+this naming scheme.  The slight difference is that `MAKEFLAGS' is
+passed to sub-`make's implicitly by `make' itself.
+
+   However you should not think that all variables ending with `FLAGS'
+follow this convention.  For instance, `DISTCHECK_CONFIGURE_FLAGS'
+(*note Checking the Distribution::) and `ACLOCAL_AMFLAGS' (see *note
+Rebuilding:: and *note Local Macros::), are two variables that are only
+useful to the maintainer and have no user counterpart.
+
+   `ARFLAGS' (*note A Library::) is usually defined by Automake and has
+neither `AM_' nor per-target cousin.
+
+   Finally you should not think that the existence of a per-target
+variable implies the existence of an `AM_' variable or of a user
+variable.  For instance, the `mumble_LDADD' per-target variable
+overrides the makefile-wide `LDADD' variable (which is not a user
+variable), and `mumble_LIBADD' exists only as a per-target variable.
+*Note Program and Library Variables::.
+
+\1f
+File: automake.info,  Node: Renamed Objects,  Next: Per-Object Flags,  Prev: Flag Variables Ordering,  Up: FAQ
+
+28.7 Why are object files sometimes renamed?
+============================================
+
+This happens when per-target compilation flags are used.  Object files
+need to be renamed just in case they would clash with object files
+compiled from the same sources, but with different flags.  Consider the
+following example.
+
+     bin_PROGRAMS = true false
+     true_SOURCES = generic.c
+     true_CPPFLAGS = -DEXIT_CODE=0
+     false_SOURCES = generic.c
+     false_CPPFLAGS = -DEXIT_CODE=1
+
+Obviously the two programs are built from the same source, but it would
+be bad if they shared the same object, because `generic.o' cannot be
+built with both `-DEXIT_CODE=0' _and_ `-DEXIT_CODE=1'.  Therefore
+`automake' outputs rules to build two different objects:
+`true-generic.o' and `false-generic.o'.
+
+   `automake' doesn't actually look whether source files are shared to
+decide if it must rename objects.  It will just rename all objects of a
+target as soon as it sees per-target compilation flags used.
+
+   It's OK to share object files when per-target compilation flags are
+not used.  For instance, `true' and `false' will both use `version.o'
+in the following example.
+
+     AM_CPPFLAGS = -DVERSION=1.0
+     bin_PROGRAMS = true false
+     true_SOURCES = true.c version.c
+     false_SOURCES = false.c version.c
+
+   Note that the renaming of objects is also affected by the
+`_SHORTNAME' variable (*note Program and Library Variables::).
+
+\1f
+File: automake.info,  Node: Per-Object Flags,  Next: Multiple Outputs,  Prev: Renamed Objects,  Up: FAQ
+
+28.8 Per-Object Flags Emulation
+===============================
+
+     One of my source files needs to be compiled with different flags.  How
+     do I do?
+
+   Automake supports per-program and per-library compilation flags (see
+*note Program and Library Variables:: and *note Flag Variables
+Ordering::).  With this you can define compilation flags that apply to
+all files compiled for a target.  For instance, in
+
+     bin_PROGRAMS = foo
+     foo_SOURCES = foo.c foo.h bar.c bar.h main.c
+     foo_CFLAGS = -some -flags
+
+`foo-foo.o', `foo-bar.o', and `foo-main.o' will all be compiled with
+`-some -flags'.  (If you wonder about the names of these object files,
+see *note Renamed Objects::.)  Note that `foo_CFLAGS' gives the flags
+to use when compiling all the C sources of the _program_ `foo', it has
+nothing to do with `foo.c' or `foo-foo.o' specifically.
+
+   What if `foo.c' needs to be compiled into `foo.o' using some
+specific flags, that none of the other files requires?  Obviously
+per-program flags are not directly applicable here.  Something like
+per-object flags are expected, i.e., flags that would be used only when
+creating `foo-foo.o'.  Automake does not support that, however this is
+easy to simulate using a library that contains only that object, and
+compiling this library with per-library flags.
+
+     bin_PROGRAMS = foo
+     foo_SOURCES = bar.c bar.h main.c
+     foo_CFLAGS = -some -flags
+     foo_LDADD = libfoo.a
+     noinst_LIBRARIES = libfoo.a
+     libfoo_a_SOURCES = foo.c foo.h
+     libfoo_a_CFLAGS = -some -other -flags
+
+   Here `foo-bar.o' and `foo-main.o' will all be compiled with `-some
+-flags', while `libfoo_a-foo.o' will be compiled using `-some -other
+-flags'.  Eventually, all three objects will be linked to form `foo'.
+
+   This trick can also be achieved using Libtool convenience libraries,
+for instance `noinst_LTLIBRARIES = libfoo.la' (*note Libtool
+Convenience Libraries::).
+
+   Another tempting idea to implement per-object flags is to override
+the compile rules `automake' would output for these files.  Automake
+will not define a rule for a target you have defined, so you could
+think about defining the `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 `foo_CFLAGS' (because `foo.c' will then be compiled as
+`foo.o' instead of `foo-foo.o', *note Renamed Objects::).  Also in
+order to support dependency tracking, the two `.o'/`.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 `automake' for
+this file.  If a new release of Automake generates a different rule,
+your copy will need to be updated by hand.
+
+\1f
+File: automake.info,  Node: Multiple Outputs,  Next: Hard-Coded Install Paths,  Prev: Per-Object Flags,  Up: FAQ
+
+28.9 Handling Tools that Produce Many Outputs
+=============================================
+
+This section describes a `make' idiom that can be used when a tool
+produces multiple output files.  It is not specific to Automake and can
+be used in ordinary `Makefile's.
+
+   Suppose we have a program called `foo' that will read one file
+called `data.foo' and produce two files named `data.c' and `data.h'.
+We want to write a `Makefile' rule that captures this one-to-two
+dependency.
+
+   The naive rule is incorrect:
+
+     # This is incorrect.
+     data.c data.h: data.foo
+             foo data.foo
+
+What the above rule really says is that `data.c' and `data.h' each
+depend on `data.foo', and can each be built by running `foo data.foo'.
+In other words it is equivalent to:
+
+     # We do not want this.
+     data.c: data.foo
+             foo data.foo
+     data.h: data.foo
+             foo data.foo
+
+which means that `foo' can be run twice.  Usually it will not be run
+twice, because `make' implementations are smart enough to check for the
+existence of the second file after the first one has been built; they
+will therefore detect that it already exists.  However there are a few
+situations where it can run twice anyway:
+
+   * The most worrying case is when running a parallel `make'.  If
+     `data.c' and `data.h' are built in parallel, two `foo data.foo'
+     commands will run concurrently.  This is harmful.
+
+   * Another case is when the dependency (here `data.foo') is (or
+     depends upon) a phony target.
+
+   A solution that works with parallel `make' but not with phony
+dependencies is the following:
+
+     data.c data.h: data.foo
+             foo data.foo
+     data.h: data.c
+
+The above rules are equivalent to
+
+     data.c: data.foo
+             foo data.foo
+     data.h: data.foo data.c
+             foo data.foo
+
+therefore a parallel `make' will have to serialize the builds of
+`data.c' and `data.h', and will detect that the second is no longer
+needed once the first is over.
+
+   Using this pattern is probably enough for most cases.  However it
+does not scale easily to more output files (in this scheme all output
+files must be totally ordered by the dependency relation), so we will
+explore a more complicated solution.
+
+   Another idea is to write the following:
+
+     # There is still a problem with this one.
+     data.c: data.foo
+             foo data.foo
+     data.h: data.c
+
+The idea is that `foo data.foo' is run only when `data.c' needs to be
+updated, but we further state that `data.h' depends upon `data.c'.
+That way, if `data.h' is required and `data.foo' is out of date, the
+dependency on `data.c' will trigger the build.
+
+   This is almost perfect, but suppose we have built `data.h' and
+`data.c', and then we erase `data.h'.  Then, running `make data.h' will
+not rebuild `data.h'.  The above rules just state that `data.c' must be
+up-to-date with respect to `data.foo', and this is already the case.
+
+   What we need is a rule that forces a rebuild when `data.h' is
+missing.  Here it is:
+
+     data.c: data.foo
+             foo data.foo
+     data.h: data.c
+     ## Recover from the removal of $@
+             @if test -f $@; then :; else \
+               rm -f data.c; \
+               $(MAKE) $(AM_MAKEFLAGS) data.c; \
+             fi
+
+   The above scheme can be extended to handle more outputs and more
+inputs.  One of the outputs is selected to serve as a witness to the
+successful completion of the command, it depends upon all inputs, and
+all other outputs depend upon it.  For instance, if `foo' should
+additionally read `data.bar' and also produce `data.w' and `data.x', we
+would write:
+
+     data.c: data.foo data.bar
+             foo data.foo data.bar
+     data.h data.w data.x: data.c
+     ## Recover from the removal of $@
+             @if test -f $@; then :; else \
+               rm -f data.c; \
+               $(MAKE) $(AM_MAKEFLAGS) data.c; \
+             fi
+
+   However there are now three minor problems in this setup.  One is
+related to the timestamp ordering of `data.h', `data.w', `data.x', and
+`data.c'.  Another one is a race condition if a parallel `make'
+attempts to run multiple instances of the recover block at once.
+Finally, the recursive rule breaks `make -n' when run with GNU `make'
+(as well as some other `make' implementations), as it may remove
+`data.h' even when it should not (*note How the `MAKE' Variable Works:
+(make)MAKE Variable.).
+
+   Let us deal with the first problem.  `foo' outputs four files, but
+we do not know in which order these files are created.  Suppose that
+`data.h' is created before `data.c'.  Then we have a weird situation.
+The next time `make' is run, `data.h' will appear older than `data.c',
+the second rule will be triggered, a shell will be started to execute
+the `if...fi' command, but actually it will just execute the `then'
+branch, that is: nothing.  In other words, because the witness we
+selected is not the first file created by `foo', `make' will start a
+shell to do nothing each time it is run.
+
+   A simple riposte is to fix the timestamps when this happens.
+
+     data.c: data.foo data.bar
+             foo data.foo data.bar
+     data.h data.w data.x: data.c
+             @if test -f $@; then \
+               touch $@; \
+             else \
+     ## Recover from the removal of $@
+               rm -f data.c; \
+               $(MAKE) $(AM_MAKEFLAGS) data.c; \
+             fi
+
+   Another solution is to use a different and dedicated file as witness,
+rather than using any of `foo''s outputs.
+
+     data.stamp: data.foo data.bar
+             @rm -f data.tmp
+             @touch data.tmp
+             foo data.foo data.bar
+             @mv -f data.tmp $@
+     data.c data.h data.w data.x: data.stamp
+     ## Recover from the removal of $@
+             @if test -f $@; then :; else \
+               rm -f data.stamp; \
+               $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
+             fi
+
+   `data.tmp' is created before `foo' is run, so it has a timestamp
+older than output files output by `foo'.  It is then renamed to
+`data.stamp' after `foo' has run, because we do not want to update
+`data.stamp' if `foo' fails.
+
+   This solution still suffers from the second problem: the race
+condition in the recover rule.  If, after a successful build, a user
+erases `data.c' and `data.h', and runs `make -j', then `make' may start
+both recover rules in parallel.  If the two instances of the rule
+execute `$(MAKE) $(AM_MAKEFLAGS) data.stamp' concurrently the build is
+likely to fail (for instance, the two rules will create `data.tmp', but
+only one can rename it).
+
+   Admittedly, such a weird situation does not arise during ordinary
+builds.  It occurs only when the build tree is mutilated.  Here
+`data.c' and `data.h' have been explicitly removed without also
+removing `data.stamp' and the other output files.  `make clean; make'
+will always recover from these situations even with parallel makes, so
+you may decide that the recover rule is solely to help non-parallel
+make users and leave things as-is.  Fixing this requires some locking
+mechanism to ensure only one instance of the recover rule rebuilds
+`data.stamp'.  One could imagine something along the following lines.
+
+     data.c data.h data.w data.x: data.stamp
+     ## Recover from the removal of $@
+             @if test -f $@; then :; else \
+               trap 'rm -rf data.lock data.stamp' 1 2 13 15; \
+     ## mkdir is a portable test-and-set
+               if mkdir data.lock 2>/dev/null; then \
+     ## This code is being executed by the first process.
+                 rm -f data.stamp; \
+                 $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
+                 result=$$?; rm -rf data.lock; exit $$result; \
+               else \
+     ## This code is being executed by the follower processes.
+     ## Wait until the first process is done.
+                 while test -d data.lock; do sleep 1; done; \
+     ## Succeed if and only if the first process succeeded.
+                 test -f data.stamp; \
+               fi; \
+             fi
+
+   Using a dedicated witness, like `data.stamp', is very handy when the
+list of output files is not known beforehand.  As an illustration,
+consider the following rules to compile many `*.el' files into `*.elc'
+files in a single command.  It does not matter how `ELFILES' is defined
+(as long as it is not empty: empty targets are not accepted by POSIX).
+
+     ELFILES = one.el two.el three.el ...
+     ELCFILES = $(ELFILES:=c)
+
+     elc-stamp: $(ELFILES)
+             @rm -f elc-temp
+             @touch elc-temp
+             $(elisp_comp) $(ELFILES)
+             @mv -f elc-temp $@
+
+     $(ELCFILES): elc-stamp
+             @if test -f $@; then :; else \
+     ## Recover from the removal of $@
+               trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
+               if mkdir elc-lock 2>/dev/null; then \
+     ## This code is being executed by the first process.
+                 rm -f elc-stamp; \
+                 $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
+                 rmdir elc-lock; \
+               else \
+     ## This code is being executed by the follower processes.
+     ## Wait until the first process is done.
+                 while test -d elc-lock; do sleep 1; done; \
+     ## Succeed if and only if the first process succeeded.
+                 test -f elc-stamp; exit $$?; \
+               fi; \
+             fi
+
+   These solutions all still suffer from the third problem, namely that
+they break the promise that `make -n' should not cause any actual
+changes to the tree.  For those solutions that do not create lock files,
+it is possible to split the recover rules into two separate recipe
+commands, one of which does all work but the recursion, and the other
+invokes the recursive `$(MAKE)'.  The solutions involving locking could
+act upon the contents of the `MAKEFLAGS' variable, but parsing that
+portably is not easy (*note The Make Macro MAKEFLAGS: (autoconf)The
+Make Macro MAKEFLAGS.).  Here is an example:
+
+     ELFILES = one.el two.el three.el ...
+     ELCFILES = $(ELFILES:=c)
+
+     elc-stamp: $(ELFILES)
+             @rm -f elc-temp
+             @touch elc-temp
+             $(elisp_comp) $(ELFILES)
+             @mv -f elc-temp $@
+
+     $(ELCFILES): elc-stamp
+     ## Recover from the removal of $@
+             @dry=; for f in x $$MAKEFLAGS; do \
+               case $$f in \
+                 *=*|--*);; \
+                 *n*) dry=:;; \
+               esac; \
+             done; \
+             if test -f $@; then :; else \
+               $$dry trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
+               if $$dry mkdir elc-lock 2>/dev/null; then \
+     ## This code is being executed by the first process.
+                 $$dry rm -f elc-stamp; \
+                 $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
+                 $$dry rmdir elc-lock; \
+               else \
+     ## This code is being executed by the follower processes.
+     ## Wait until the first process is done.
+                 while test -d elc-lock && test -z "$$dry"; do \
+                   sleep 1; \
+                 done; \
+     ## Succeed if and only if the first process succeeded.
+                 $$dry test -f elc-stamp; exit $$?; \
+               fi; \
+             fi
+
+   For completeness it should be noted that GNU `make' is able to
+express rules with multiple output files using pattern rules (*note
+Pattern Rule Examples: (make)Pattern Examples.).  We do not discuss
+pattern rules here because they are not portable, but they can be
+convenient in packages that assume GNU `make'.
+
+\1f
+File: automake.info,  Node: Hard-Coded Install Paths,  Next: Debugging Make Rules,  Prev: Multiple Outputs,  Up: FAQ
+
+28.10 Installing to Hard-Coded Locations
+========================================
+
+     My package needs to install some configuration file.  I tried to use
+     the following rule, but `make distcheck' fails.  Why?
+          # Do not do this.
+          install-data-local:
+                  $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
+
+     My package needs to populate the installation directory of another
+     package at install-time.  I can easily compute that installation
+     directory in `configure', but if I install files therein,
+     `make distcheck' fails.  How else should I do?
+
+   These two setups share their symptoms: `make distcheck' fails
+because they are installing files to hard-coded paths.  In the later
+case the path is not really hard-coded in the package, but we can
+consider it to be hard-coded in the system (or in whichever tool that
+supplies the path).  As long as the path does not use any of the
+standard directory variables (`$(prefix)', `$(bindir)', `$(datadir)',
+etc.), the effect will be the same: user-installations are impossible.
+
+   As a (non-root) user who wants to install a package, you usually
+have no right to install anything in `/usr' or `/usr/local'.  So you do
+something like `./configure --prefix ~/usr' to install a package in
+your own `~/usr' tree.
+
+   If a package attempts to install something to some hard-coded path
+(e.g., `/etc/afile'), regardless of this `--prefix' setting, then the
+installation will fail.  `make distcheck' performs such a `--prefix'
+installation, hence it will fail too.
+
+   Now, there are some easy solutions.
+
+   The above `install-data-local' example for installing `/etc/afile'
+would be better replaced by
+
+     sysconf_DATA = afile
+
+by default `sysconfdir' will be `$(prefix)/etc', because this is what
+the GNU Standards require.  When such a package is installed on an FHS
+compliant system, the installer will have to set `--sysconfdir=/etc'.
+As the maintainer of the package you should not be concerned by such
+site policies: use the appropriate standard directory variable to
+install your files so that the installer can easily redefine these
+variables to match their site conventions.
+
+   Installing files that should be used by another package is slightly
+more involved.  Let's take an example and assume you want to install a
+shared library that is a Python extension module.  If you ask Python
+where to install the library, it will answer something like this:
+
+     % python -c 'from distutils import sysconfig;
+                  print sysconfig.get_python_lib(1,0)'
+     /usr/lib/python2.5/site-packages
+
+   If you indeed use this absolute path to install your shared library,
+non-root users will not be able to install the package, hence distcheck
+fails.
+
+   Let's do better.  The `sysconfig.get_python_lib()' function actually
+accepts a third argument that will replace Python's installation prefix.
+
+     % python -c 'from distutils import sysconfig;
+                  print sysconfig.get_python_lib(1,0,"${exec_prefix}")'
+     ${exec_prefix}/lib/python2.5/site-packages
+
+   You can also use this new path.  If you do
+   * root users can install your package with the same `--prefix' as
+     Python (you get the behavior of the previous attempt)
+
+   * non-root users can install your package too, they will have the
+     extension module in a place that is not searched by Python but they
+     can work around this using environment variables (and if you
+     installed scripts that use this shared library, it's easy to tell
+     Python were to look in the beginning of your script, so the script
+     works in both cases).
+
+   The `AM_PATH_PYTHON' macro uses similar commands to define
+`$(pythondir)' and `$(pyexecdir)' (*note Python::).
+
+   Of course not all tools are as advanced as Python regarding that
+substitution of PREFIX.  So another strategy is to figure the part of
+the installation directory that must be preserved.  For instance, here
+is how `AM_PATH_LISPDIR' (*note Emacs Lisp::) computes `$(lispdir)':
+
+     $EMACS -batch -q -eval '(while load-path
+       (princ (concat (car load-path) "\n"))
+       (setq load-path (cdr load-path)))' >conftest.out
+     lispdir=`sed -n
+       -e 's,/$,,'
+       -e '/.*\/lib\/x*emacs\/site-lisp$/{
+             s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;
+           }'
+       -e '/.*\/share\/x*emacs\/site-lisp$/{
+             s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;
+           }'
+       conftest.out`
+
+   I.e., it just picks the first directory that looks like
+`*/lib/*emacs/site-lisp' or `*/share/*emacs/site-lisp' in the search
+path of emacs, and then substitutes `${libdir}' or `${datadir}'
+appropriately.
+
+   The emacs case looks complicated because it processes a list and
+expects two possible layouts, otherwise it's easy, and the benefits for
+non-root users are really worth the extra `sed' invocation.
+
+\1f
+File: automake.info,  Node: Debugging Make Rules,  Next: Reporting Bugs,  Prev: Hard-Coded Install Paths,  Up: FAQ
+
+28.11 Debugging Make Rules
+==========================
+
+The rules and dependency trees generated by `automake' can get rather
+complex, and leave the developer head-scratching when things don't work
+as expected.  Besides the debug options provided by the `make' command
+(*note Options Summary: (make)Options Summary.), here's a couple of
+further hints for debugging makefiles generated by `automake'
+effectively:
+
+   * If less verbose output has been enabled in the package with the
+     `silent-rules' option (*note Options::), you can use `make V=1' to
+     see the commands being executed.
+
+   * `make -n' can help show what would be done without actually doing
+     it.  Note however, that this will _still execute_ commands prefixed
+     with `+', and, when using GNU `make', commands that contain the
+     strings `$(MAKE)' or `${MAKE}' (*note Instead of Execution:
+     (make)Instead of Execution.).  Typically, this is helpful to show
+     what recursive rules would do, but it means that, in your own
+     rules, you should not mix such recursion with actions that change
+     any files.(1)  Furthermore, note that GNU `make' will update
+     prerequisites for the `Makefile' file itself even with `-n' (*note
+     Remaking Makefiles: (make)Remaking Makefiles.).
+
+   * `make SHELL="/bin/bash -vx"' can help debug complex rules.  *Note
+     The Make Macro SHELL: (autoconf)The Make Macro SHELL, for some
+     portability quirks associated with this construct.
+
+   * `echo 'print: ; @echo "$(VAR)"' | make -f Makefile -f - print' can
+     be handy to examine the expanded value of variables.  You may need
+     to use a target other than `print' if that is already used or a
+     file with that name exists.
+
+   * `http://bashdb.sourceforge.net/remake/' provides a modified GNU
+     `make' command called `remake' that copes with complex GNU
+     `make'-specific Makefiles and allows to trace execution, examine
+     variables, and call rules interactively, much like a debugger.
+
+   ---------- Footnotes ----------
+
+   (1) Automake's `dist' and `distcheck' rules had a bug in this regard
+in that they created directories even with `-n', but this has been
+fixed in Automake 1.11.
+
+\1f
+File: automake.info,  Node: Reporting Bugs,  Prev: Debugging Make Rules,  Up: FAQ
+
+28.12 Reporting Bugs
+====================
+
+Most nontrivial software has bugs.  Automake is no exception.  Although
+we cannot promise we can or will fix a bug, and we might not even agree
+that it is a bug, we want to hear about problems you encounter. Often we
+agree they are bugs and want to fix them.
+
+   To make it possible for us to fix a bug, please report it. In order
+to do so effectively, it helps to know when and how to do it.
+
+   Before reporting a bug, it is a good idea to see if it is already
+known.  You can look at the GNU Bug Tracker (http://debbugs.gnu.org/)
+and the bug-automake mailing list archives
+(http://lists.gnu.org/archive/html/bug-automake/) for previous bug
+reports.  We previously used a Gnats database
+(http://sourceware.org/cgi-bin/gnatsweb.pl?database=automake) for bug
+tracking, so some bugs might have been reported there already.  Please
+do not use it for new bug reports, however.
+
+   If the bug is not already known, it should be reported.  It is very
+important to report bugs in a way that is useful and efficient.  For
+this, please familiarize yourself with How to Report Bugs Effectively
+(http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) and How to Ask
+Questions the Smart Way
+(http://catb.org/~esr/faqs/smart-questions.html).  This helps you and
+developers to save time which can then be spent on fixing more bugs and
+implementing more features.
+
+   For a bug report, a feature request or other suggestions, please send
+email to <bug-automake@gnu.org>.  This will then open a new bug in the
+bug tracker (http://debbugs.gnu.org/automake).  Be sure to include the
+versions of Autoconf and Automake that you use.  Ideally, post a
+minimal `Makefile.am' and `configure.ac' that reproduces the problem
+you encounter.  If you have encountered test suite failures, please
+attach the `test-suite.log' file.
+
+\1f
+File: automake.info,  Node: Copying This Manual,  Next: Indices,  Prev: FAQ,  Up: Top
+
+Appendix A Copying This Manual
+******************************
+
+* Menu:
+
+* GNU Free Documentation License::  License for copying this manual
+
+\1f
+File: automake.info,  Node: GNU Free Documentation License,  Up: Copying This Manual
+
+A.1 GNU Free Documentation License
+==================================
+
+                     Version 1.3, 3 November 2008
+
+     Copyright (C) 2000-2012 Free Software Foundation, Inc.
+     `http://fsf.org/'
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it
+     can be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You
+     accept the license if you copy, modify or distribute the work in a
+     way requiring permission under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter section
+     of the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could
+     fall directly within that overall subject.  (Thus, if the Document
+     is in part a textbook of mathematics, a Secondary Section may not
+     explain any mathematics.)  The relationship could be a matter of
+     historical connection with the subject or with related matters, or
+     of legal, commercial, philosophical, ethical or political position
+     regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.  If a section does not fit the above definition of
+     Secondary then it is not allowed to be designated as Invariant.
+     The Document may contain zero Invariant Sections.  If the Document
+     does not identify any Invariant Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup, or absence of
+     markup, has been arranged to thwart or discourage subsequent
+     modification by readers is not Transparent.  An image format is
+     not Transparent if used for any substantial amount of text.  A
+     copy that is not "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML, PostScript or PDF designed for
+     human modification.  Examples of transparent image formats include
+     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+     can be read and edited only by proprietary word processors, SGML or
+     XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML, PostScript or PDF
+     produced by some word processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+     The "publisher" means any person or entity that distributes copies
+     of the Document to the public.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a computer-network location from
+     which the general network-using public has access to download
+     using public-standard network protocols a complete Transparent
+     copy of the Document, free of added material.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+       A. Use in the Title Page (and on the covers, if any) a title
+          distinct from that of the Document, and from those of
+          previous versions (which should, if there were any, be listed
+          in the History section of the Document).  You may use the
+          same title as a previous version if the original publisher of
+          that version gives permission.
+
+       B. List on the Title Page, as authors, one or more persons or
+          entities responsible for authorship of the modifications in
+          the Modified Version, together with at least five of the
+          principal authors of the Document (all of its principal
+          authors, if it has fewer than five), unless they release you
+          from this requirement.
+
+       C. State on the Title page the name of the publisher of the
+          Modified Version, as the publisher.
+
+       D. Preserve all the copyright notices of the Document.
+
+       E. Add an appropriate copyright notice for your modifications
+          adjacent to the other copyright notices.
+
+       F. Include, immediately after the copyright notices, a license
+          notice giving the public permission to use the Modified
+          Version under the terms of this License, in the form shown in
+          the Addendum below.
+
+       G. Preserve in that license notice the full lists of Invariant
+          Sections and required Cover Texts given in the Document's
+          license notice.
+
+       H. Include an unaltered copy of this License.
+
+       I. Preserve the section Entitled "History", Preserve its Title,
+          and add to it an item stating at least the title, year, new
+          authors, and publisher of the Modified Version as given on
+          the Title Page.  If there is no section Entitled "History" in
+          the Document, create one stating the title, year, authors,
+          and publisher of the Document as given on its Title Page,
+          then add an item describing the Modified Version as stated in
+          the previous sentence.
+
+       J. Preserve the network location, if any, given in the Document
+          for public access to a Transparent copy of the Document, and
+          likewise the network locations given in the Document for
+          previous versions it was based on.  These may be placed in
+          the "History" section.  You may omit a network location for a
+          work that was published at least four years before the
+          Document itself, or if the original publisher of the version
+          it refers to gives permission.
+
+       K. For any section Entitled "Acknowledgements" or "Dedications",
+          Preserve the Title of the section, and preserve in the
+          section all the substance and tone of each of the contributor
+          acknowledgements and/or dedications given therein.
+
+       L. Preserve all the Invariant Sections of the Document,
+          unaltered in their text and in their titles.  Section numbers
+          or the equivalent are not considered part of the section
+          titles.
+
+       M. Delete any section Entitled "Endorsements".  Such a section
+          may not be included in the Modified Version.
+
+       N. Do not retitle any existing section to be Entitled
+          "Endorsements" or to conflict in title with any Invariant
+          Section.
+
+       O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section Entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections Entitled
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense, or distribute it is void,
+     and will automatically terminate your rights under this License.
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly
+     and finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from
+     you under this License.  If your rights have been terminated and
+     not permanently reinstated, receipt of a copy of some or all of
+     the same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     `http://www.gnu.org/copyleft/'.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.  If the Document specifies that a proxy
+     can decide which future versions of this License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+     World Wide Web server that publishes copyrightable works and also
+     provides prominent facilities for anybody to edit those works.  A
+     public wiki that anybody can edit is an example of such a server.
+     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+     site means any set of copyrightable works thus published on the MMC
+     site.
+
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+     license published by Creative Commons Corporation, a not-for-profit
+     corporation with a principal place of business in San Francisco,
+     California, as well as future copyleft versions of that license
+     published by that same organization.
+
+     "Incorporate" means to publish or republish a Document, in whole or
+     in part, as part of another Document.
+
+     An MMC is "eligible for relicensing" if it is licensed under this
+     License, and if all works that were first published under this
+     License somewhere other than this MMC, and subsequently
+     incorporated in whole or in part into the MMC, (1) had no cover
+     texts or invariant sections, and (2) were thus incorporated prior
+     to November 1, 2008.
+
+     The operator of an MMC Site may republish an MMC contained in the
+     site under CC-BY-SA on the same site at any time before August 1,
+     2009, provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+       Copyright (C)  YEAR  YOUR NAME.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.3
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+         with the Invariant Sections being LIST THEIR TITLES, with
+         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+         being LIST.
+
+   If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: automake.info,  Node: Indices,  Prev: Copying This Manual,  Up: Top
+
+Appendix B Indices
+******************
+
+* Menu:
+
+* Macro Index::                 Index of Autoconf macros
+* Variable Index::              Index of Makefile variables
+* General Index::               General index
+
+\1f
+File: automake.info,  Node: Macro Index,  Next: Variable Index,  Up: Indices
+
+B.1 Macro Index
+===============
+
+\0\b[index\0\b]
+* Menu:
+
+* _AM_DEPENDENCIES:                      Private Macros.      (line  12)
+* AC_CANONICAL_BUILD:                    Optional.            (line  11)
+* AC_CANONICAL_HOST:                     Optional.            (line  12)
+* AC_CANONICAL_TARGET:                   Optional.            (line  13)
+* AC_CONFIG_AUX_DIR <1>:                 Subpackages.         (line   6)
+* AC_CONFIG_AUX_DIR:                     Optional.            (line  19)
+* AC_CONFIG_FILES:                       Requirements.        (line  15)
+* AC_CONFIG_HEADERS:                     Optional.            (line  46)
+* AC_CONFIG_LIBOBJ_DIR <1>:              LIBOBJS.             (line  51)
+* AC_CONFIG_LIBOBJ_DIR:                  Optional.            (line  41)
+* AC_CONFIG_LINKS:                       Optional.            (line  55)
+* AC_CONFIG_SUBDIRS:                     Subpackages.         (line   6)
+* AC_DEFUN:                              Extending aclocal.   (line  36)
+* AC_F77_LIBRARY_LDFLAGS:                Optional.            (line 101)
+* AC_FC_SRCEXT:                          Optional.            (line 107)
+* AC_INIT:                               Public Macros.       (line  15)
+* AC_LIBOBJ <1>:                         LIBOBJS.             (line  11)
+* AC_LIBOBJ <2>:                         LTLIBOBJS.           (line   6)
+* AC_LIBOBJ:                             Optional.            (line  65)
+* AC_LIBSOURCE <1>:                      LIBOBJS.             (line  17)
+* AC_LIBSOURCE:                          Optional.            (line  66)
+* AC_LIBSOURCES:                         Optional.            (line  67)
+* AC_OUTPUT:                             Requirements.        (line  15)
+* AC_PREREQ:                             Extending aclocal.   (line  36)
+* AC_PROG_CC_C_O:                        Public Macros.       (line  78)
+* AC_PROG_CXX:                           Optional.            (line  85)
+* AC_PROG_F77:                           Optional.            (line  97)
+* AC_PROG_FC:                            Optional.            (line 112)
+* AC_PROG_LEX <1>:                       Public Macros.       (line  84)
+* AC_PROG_LEX:                           Optional.            (line 127)
+* AC_PROG_LIBTOOL:                       Optional.            (line 117)
+* AC_PROG_OBJC:                          Optional.            (line  89)
+* AC_PROG_OBJCXX:                        Optional.            (line  93)
+* AC_PROG_RANLIB:                        Optional.            (line  81)
+* AC_PROG_YACC:                          Optional.            (line 121)
+* AC_REQUIRE_AUX_FILE:                   Optional.            (line 131)
+* AC_SUBST:                              Optional.            (line 140)
+* AM_COND_IF <1>:                        Usage of Conditionals.
+                                                              (line  66)
+* AM_COND_IF:                            Optional.            (line 156)
+* AM_CONDITIONAL <1>:                    Usage of Conditionals.
+                                                              (line   6)
+* AM_CONDITIONAL:                        Optional.            (line 153)
+* AM_CONFIG_HEADER:                      Obsolete Macros.     (line  14)
+* AM_DEP_TRACK:                          Private Macros.      (line  14)
+* AM_GNU_GETTEXT:                        Optional.            (line 162)
+* AM_GNU_GETTEXT_INTL_SUBDIR:            Optional.            (line 168)
+* AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL:  Obsolete Macros.     (line  19)
+* AM_INIT_AUTOMAKE <1>:                  Public Macros.       (line   7)
+* AM_INIT_AUTOMAKE:                      Requirements.        (line   6)
+* AM_MAINTAINER_MODE <1>:                maintainer-mode.     (line  37)
+* AM_MAINTAINER_MODE:                    Rebuilding.          (line   9)
+* AM_MAINTAINER_MODE([DEFAULT-MODE]):    Optional.            (line 173)
+* AM_MAKE_INCLUDE:                       Private Macros.      (line  20)
+* AM_OUTPUT_DEPENDENCY_COMMANDS:         Private Macros.      (line  15)
+* AM_PATH_LISPDIR:                       Public Macros.       (line  51)
+* AM_PATH_PYTHON:                        Python.              (line  29)
+* AM_PROG_AR:                            Public Macros.       (line  66)
+* AM_PROG_AS:                            Public Macros.       (line  73)
+* AM_PROG_CC_C_O:                        Public Macros.       (line  78)
+* AM_PROG_GCJ:                           Public Macros.       (line  89)
+* AM_PROG_INSTALL_STRIP:                 Private Macros.      (line  25)
+* AM_PROG_LEX:                           Public Macros.       (line  84)
+* AM_PROG_MKDIR_P:                       Obsolete Macros.     (line  25)
+* AM_PROG_UPC:                           Public Macros.       (line  94)
+* AM_PROG_VALAC:                         Vala Support.        (line  21)
+* AM_SANITY_CHECK:                       Private Macros.      (line  30)
+* AM_SET_DEPDIR:                         Private Macros.      (line  13)
+* AM_SILENT_RULES:                       Public Macros.       (line 100)
+* AM_SUBST_NOTMAKE(VAR):                 Optional.            (line 181)
+* AM_SYS_POSIX_TERMIOS:                  Obsolete Macros.     (line  40)
+* AM_WITH_DMALLOC:                       Public Macros.       (line 104)
+* m4_include <1>:                        Basics of Distribution.
+                                                              (line  14)
+* m4_include:                            Optional.            (line 191)
+
+\1f
+File: automake.info,  Node: Variable Index,  Next: General Index,  Prev: Macro Index,  Up: Indices
+
+B.2 Variable Index
+==================
+
+\0\b[index\0\b]
+* Menu:
+
+* _DATA:                                 Data.                (line   6)
+* _HEADERS:                              Headers.             (line   6)
+* _LIBRARIES:                            A Library.           (line   6)
+* _LISP:                                 Emacs Lisp.          (line   6)
+* _LOG_COMPILE:                          Parallel Test Harness.
+                                                              (line  51)
+* _LOG_COMPILER:                         Parallel Test Harness.
+                                                              (line  51)
+* _LOG_DRIVER:                           Declaring Custom Test Drivers.
+                                                              (line   6)
+* _LOG_DRIVER_FLAGS:                     Declaring Custom Test Drivers.
+                                                              (line   6)
+* _LOG_FLAGS:                            Parallel Test Harness.
+                                                              (line  51)
+* _LTLIBRARIES:                          Libtool Libraries.   (line   6)
+* _MANS:                                 Man Pages.           (line   6)
+* _PROGRAMS <1>:                         Program Sources.     (line   6)
+* _PROGRAMS:                             Uniform.             (line  11)
+* _PYTHON:                               Python.              (line   6)
+* _SCRIPTS:                              Scripts.             (line   6)
+* _SOURCES <1>:                          Default _SOURCES.    (line   6)
+* _SOURCES:                              Program Sources.     (line  32)
+* _TEXINFOS:                             Texinfo.             (line   6)
+* ACLOCAL_AMFLAGS <1>:                   Rebuilding.          (line  12)
+* ACLOCAL_AMFLAGS:                       Local Macros.        (line  19)
+* ALLOCA <1>:                            LIBOBJS.             (line   6)
+* ALLOCA:                                LTLIBOBJS.           (line   6)
+* AM_CCASFLAGS:                          Assembly Support.    (line  10)
+* AM_CFLAGS:                             Program Variables.   (line  51)
+* AM_COLOR_TESTS:                        Scripts-based Testsuites.
+                                                              (line  70)
+* AM_CPPFLAGS <1>:                       Assembly Support.    (line  10)
+* AM_CPPFLAGS:                           Program Variables.   (line  16)
+* AM_CXXFLAGS:                           C++ Support.         (line  22)
+* AM_DEFAULT_SOURCE_EXT:                 Default _SOURCES.    (line   6)
+* AM_DEFAULT_V:                          Automake silent-rules Option.
+                                                              (line 139)
+* AM_DEFAULT_VERBOSITY:                  Automake silent-rules Option.
+                                                              (line 139)
+* AM_DISTCHECK_CONFIGURE_FLAGS:          Checking the Distribution.
+                                                              (line  25)
+* AM_ETAGSFLAGS:                         Tags.                (line  25)
+* AM_EXT_LOG_DRIVER_FLAGS:               Declaring Custom Test Drivers.
+                                                              (line   6)
+* AM_EXT_LOG_FLAGS:                      Parallel Test Harness.
+                                                              (line  51)
+* AM_FCFLAGS:                            Fortran 9x Support.  (line  22)
+* AM_FFLAGS:                             Fortran 77 Support.  (line  22)
+* AM_GCJFLAGS:                           Java Support with gcj.
+                                                              (line  26)
+* AM_INSTALLCHECK_STD_OPTIONS_EXEMPT:    List of Automake options.
+                                                              (line 135)
+* AM_JAVACFLAGS:                         Java.                (line  42)
+* AM_LDFLAGS <1>:                        Program Variables.   (line  61)
+* AM_LDFLAGS:                            Linking.             (line  10)
+* AM_LFLAGS:                             Yacc and Lex.        (line  60)
+* AM_LIBTOOLFLAGS:                       Libtool Flags.       (line   6)
+* AM_LOG_DRIVER_FLAGS:                   Declaring Custom Test Drivers.
+                                                              (line   6)
+* AM_LOG_FLAGS:                          Parallel Test Harness.
+                                                              (line  51)
+* AM_MAKEFLAGS:                          Subdirectories.      (line  29)
+* AM_MAKEINFOFLAGS:                      Texinfo.             (line 109)
+* AM_MAKEINFOHTMLFLAGS:                  Texinfo.             (line 110)
+* AM_OBJCFLAGS:                          Objective C Support. (line  22)
+* AM_OBJCXXFLAGS:                        Objective C++ Support.
+                                                              (line  22)
+* AM_RFLAGS:                             Fortran 77 Support.  (line  28)
+* AM_RUNTESTFLAGS:                       DejaGnu Tests.       (line  24)
+* AM_TESTS_ENVIRONMENT:                  Scripts-based Testsuites.
+                                                              (line  89)
+* AM_TESTS_FD_REDIRECT:                  Scripts-based Testsuites.
+                                                              (line  97)
+* AM_UPCFLAGS:                           Unified Parallel C Support.
+                                                              (line  21)
+* AM_UPDATE_INFO_DIR:                    Texinfo.             (line  86)
+* AM_V:                                  Automake silent-rules Option.
+                                                              (line 139)
+* AM_V_at:                               Automake silent-rules Option.
+                                                              (line 139)
+* AM_V_GEN:                              Automake silent-rules Option.
+                                                              (line 139)
+* AM_VALAFLAGS:                          Vala Support.        (line  35)
+* AM_YFLAGS:                             Yacc and Lex.        (line  37)
+* AR:                                    Public Macros.       (line  66)
+* AUTOCONF:                              automake Invocation. (line  28)
+* AUTOM4TE:                              aclocal Invocation.  (line  45)
+* AUTOMAKE_JOBS:                         automake Invocation. (line 192)
+* AUTOMAKE_OPTIONS <1>:                  List of Automake options.
+                                                              (line   6)
+* AUTOMAKE_OPTIONS <2>:                  Dependencies.        (line  34)
+* AUTOMAKE_OPTIONS:                      Public Macros.       (line  10)
+* bin_PROGRAMS:                          Program Sources.     (line   6)
+* bin_SCRIPTS:                           Scripts.             (line  18)
+* build_triplet:                         Optional.            (line  14)
+* BUILT_SOURCES:                         Sources.             (line  27)
+* BZIP2:                                 The Types of Distributions.
+                                                              (line   9)
+* CC:                                    Program Variables.   (line  12)
+* CCAS <1>:                              Assembly Support.    (line  10)
+* CCAS:                                  Public Macros.       (line  73)
+* CCASFLAGS <1>:                         Assembly Support.    (line  10)
+* CCASFLAGS:                             Public Macros.       (line  73)
+* CFLAGS:                                Program Variables.   (line  12)
+* check_:                                Uniform.             (line  96)
+* check_LTLIBRARIES:                     Libtool Convenience Libraries.
+                                                              (line   6)
+* check_PROGRAMS <1>:                    Default _SOURCES.    (line  28)
+* check_PROGRAMS:                        Program Sources.     (line   6)
+* check_SCRIPTS:                         Scripts.             (line  18)
+* CLASSPATH_ENV:                         Java.                (line  51)
+* CLEANFILES:                            Clean.               (line  13)
+* COMPILE:                               Program Variables.   (line  57)
+* CONFIG_STATUS_DEPENDENCIES:            Rebuilding.          (line  19)
+* CONFIGURE_DEPENDENCIES:                Rebuilding.          (line  19)
+* CPPFLAGS <1>:                          Assembly Support.    (line  10)
+* CPPFLAGS:                              Program Variables.   (line  12)
+* CXX:                                   C++ Support.         (line  16)
+* CXXCOMPILE:                            C++ Support.         (line  25)
+* CXXFLAGS:                              C++ Support.         (line  19)
+* CXXLINK <1>:                           How the Linker is Chosen.
+                                                              (line  14)
+* CXXLINK:                               C++ Support.         (line  29)
+* DATA <1>:                              Data.                (line   7)
+* DATA:                                  Uniform.             (line 102)
+* data_DATA:                             Data.                (line   9)
+* DEFS:                                  Program Variables.   (line  12)
+* DEJATOOL:                              DejaGnu Tests.       (line  19)
+* DESTDIR <1>:                           Staged Installs.     (line   6)
+* DESTDIR:                               DESTDIR.             (line   6)
+* DISABLE_HARD_ERRORS:                   Scripts-based Testsuites.
+                                                              (line  35)
+* dist_ <1>:                             Fine-grained Distribution Control.
+                                                              (line   6)
+* dist_:                                 Alternative.         (line  29)
+* dist_lisp_LISP:                        Emacs Lisp.          (line  11)
+* dist_noinst_LISP:                      Emacs Lisp.          (line  11)
+* DIST_SUBDIRS <1>:                      Basics of Distribution.
+                                                              (line  42)
+* DIST_SUBDIRS:                          Subdirectories with AM_CONDITIONAL.
+                                                              (line  25)
+* DISTCHECK_CONFIGURE_FLAGS:             Checking the Distribution.
+                                                              (line  25)
+* distcleancheck_listfiles <1>:          Errors with distclean.
+                                                              (line 115)
+* distcleancheck_listfiles:              Checking the Distribution.
+                                                              (line  64)
+* DISTCLEANFILES <1>:                    Checking the Distribution.
+                                                              (line  64)
+* DISTCLEANFILES:                        Clean.               (line  13)
+* distdir <1>:                           Third-Party Makefiles.
+                                                              (line  25)
+* distdir:                               The dist Hook.       (line  33)
+* distuninstallcheck_listfiles:          Checking the Distribution.
+                                                              (line 102)
+* DVIPS:                                 Texinfo.             (line 135)
+* EMACS:                                 Public Macros.       (line  51)
+* ETAGS_ARGS:                            Tags.                (line  25)
+* ETAGSFLAGS:                            Tags.                (line  25)
+* EXPECT:                                DejaGnu Tests.       (line  19)
+* EXT_LOG_COMPILE:                       Parallel Test Harness.
+                                                              (line  51)
+* EXT_LOG_COMPILER:                      Parallel Test Harness.
+                                                              (line  51)
+* EXT_LOG_DRIVER:                        Declaring Custom Test Drivers.
+                                                              (line   6)
+* EXT_LOG_DRIVER_FLAGS:                  Declaring Custom Test Drivers.
+                                                              (line   6)
+* EXT_LOG_FLAGS:                         Parallel Test Harness.
+                                                              (line  51)
+* EXTRA_DIST:                            Basics of Distribution.
+                                                              (line  31)
+* EXTRA_maude_DEPENDENCIES <1>:          Program and Library Variables.
+                                                              (line 119)
+* EXTRA_maude_DEPENDENCIES:              Linking.             (line  41)
+* EXTRA_maude_SOURCES:                   Program and Library Variables.
+                                                              (line  53)
+* EXTRA_PROGRAMS:                        Conditional Programs.
+                                                              (line  15)
+* F77:                                   Fortran 77 Support.  (line  16)
+* F77COMPILE:                            Fortran 77 Support.  (line  31)
+* F77LINK:                               How the Linker is Chosen.
+                                                              (line  16)
+* FC:                                    Fortran 9x Support.  (line  16)
+* FCCOMPILE:                             Fortran 9x Support.  (line  25)
+* FCFLAGS:                               Fortran 9x Support.  (line  19)
+* FCLINK <1>:                            Fortran 9x Support.  (line  29)
+* FCLINK:                                How the Linker is Chosen.
+                                                              (line  18)
+* FFLAGS:                                Fortran 77 Support.  (line  19)
+* FLIBS:                                 Mixing Fortran 77 With C and C++.
+                                                              (line  21)
+* FLINK:                                 Fortran 77 Support.  (line  35)
+* GCJ:                                   Public Macros.       (line  89)
+* GCJFLAGS <1>:                          Java Support with gcj.
+                                                              (line  16)
+* GCJFLAGS:                              Public Macros.       (line  89)
+* GCJLINK:                               How the Linker is Chosen.
+                                                              (line  10)
+* GTAGS_ARGS:                            Tags.                (line  60)
+* GZIP_ENV:                              Basics of Distribution.
+                                                              (line  10)
+* HEADERS:                               Uniform.             (line 102)
+* host_triplet:                          Optional.            (line  14)
+* include_HEADERS:                       Headers.             (line   6)
+* INCLUDES:                              Program Variables.   (line  45)
+* info_TEXINFOS:                         Texinfo.             (line   6)
+* JAVA:                                  Uniform.             (line 102)
+* JAVAC:                                 Java.                (line  35)
+* JAVACFLAGS:                            Java.                (line  38)
+* JAVAROOT:                              Java.                (line  47)
+* LDADD:                                 Linking.             (line  10)
+* LDFLAGS:                               Program Variables.   (line  12)
+* LFLAGS:                                Yacc and Lex.        (line  60)
+* lib_LIBRARIES:                         A Library.           (line   6)
+* lib_LTLIBRARIES:                       Libtool Libraries.   (line   6)
+* libexec_PROGRAMS:                      Program Sources.     (line   6)
+* libexec_SCRIPTS:                       Scripts.             (line  18)
+* LIBOBJS <1>:                           LIBOBJS.             (line   6)
+* LIBOBJS <2>:                           LTLIBOBJS.           (line   6)
+* LIBOBJS:                               Optional.            (line  68)
+* LIBRARIES:                             Uniform.             (line 102)
+* LIBS:                                  Program Variables.   (line  12)
+* LIBTOOLFLAGS:                          Libtool Flags.       (line   6)
+* LINK <1>:                              How the Linker is Chosen.
+                                                              (line  24)
+* LINK:                                  Program Variables.   (line  66)
+* LISP:                                  Uniform.             (line 102)
+* lisp_LISP:                             Emacs Lisp.          (line   6)
+* lispdir:                               Public Macros.       (line  51)
+* localstate_DATA:                       Data.                (line   9)
+* LOG_COMPILE:                           Parallel Test Harness.
+                                                              (line  51)
+* LOG_COMPILER:                          Parallel Test Harness.
+                                                              (line  51)
+* LOG_DRIVER:                            Declaring Custom Test Drivers.
+                                                              (line   6)
+* LOG_DRIVER_FLAGS:                      Declaring Custom Test Drivers.
+                                                              (line   6)
+* LOG_FLAGS:                             Parallel Test Harness.
+                                                              (line  51)
+* LTALLOCA <1>:                          LIBOBJS.             (line   6)
+* LTALLOCA:                              LTLIBOBJS.           (line   6)
+* LTLIBOBJS <1>:                         LIBOBJS.             (line   6)
+* LTLIBOBJS:                             LTLIBOBJS.           (line   6)
+* LTLIBRARIES:                           Uniform.             (line 102)
+* MAINTAINERCLEANFILES:                  Clean.               (line  13)
+* MAKE:                                  Subdirectories.      (line  29)
+* MAKEINFO:                              Texinfo.             (line  93)
+* MAKEINFOFLAGS:                         Texinfo.             (line 103)
+* MAKEINFOHTML:                          Texinfo.             (line  99)
+* man_MANS:                              Man Pages.           (line   6)
+* MANS:                                  Uniform.             (line 102)
+* maude_AR:                              Program and Library Variables.
+                                                              (line  68)
+* maude_CCASFLAGS:                       Program and Library Variables.
+                                                              (line 171)
+* maude_CFLAGS:                          Program and Library Variables.
+                                                              (line 172)
+* maude_CPPFLAGS:                        Program and Library Variables.
+                                                              (line 173)
+* maude_CXXFLAGS:                        Program and Library Variables.
+                                                              (line 174)
+* maude_DEPENDENCIES <1>:                Program and Library Variables.
+                                                              (line 118)
+* maude_DEPENDENCIES:                    Linking.             (line  41)
+* maude_FFLAGS:                          Program and Library Variables.
+                                                              (line 175)
+* maude_GCJFLAGS:                        Program and Library Variables.
+                                                              (line 176)
+* maude_LDADD <1>:                       Program and Library Variables.
+                                                              (line  86)
+* maude_LDADD:                           Linking.             (line  17)
+* maude_LDFLAGS <1>:                     Program and Library Variables.
+                                                              (line 106)
+* maude_LDFLAGS:                         Linking.             (line  37)
+* maude_LFLAGS:                          Program and Library Variables.
+                                                              (line 177)
+* maude_LIBADD <1>:                      Program and Library Variables.
+                                                              (line  78)
+* maude_LIBADD:                          A Library.           (line  26)
+* maude_LIBTOOLFLAGS <1>:                Program and Library Variables.
+                                                              (line 111)
+* maude_LIBTOOLFLAGS:                    Libtool Flags.       (line   6)
+* maude_LINK:                            Program and Library Variables.
+                                                              (line 154)
+* maude_OBJCFLAGS:                       Program and Library Variables.
+                                                              (line 178)
+* maude_OBJCXXFLAGS:                     Program and Library Variables.
+                                                              (line 179)
+* maude_RFLAGS:                          Program and Library Variables.
+                                                              (line 180)
+* maude_SHORTNAME:                       Program and Library Variables.
+                                                              (line 213)
+* maude_SOURCES:                         Program and Library Variables.
+                                                              (line  18)
+* maude_UPCFLAGS:                        Program and Library Variables.
+                                                              (line 181)
+* maude_YFLAGS:                          Program and Library Variables.
+                                                              (line 182)
+* mkdir_p:                               Obsolete Macros.     (line  25)
+* MKDIR_P:                               Obsolete Macros.     (line  25)
+* MOSTLYCLEANFILES:                      Clean.               (line  13)
+* nobase_:                               Alternative.         (line  23)
+* nodist_ <1>:                           Fine-grained Distribution Control.
+                                                              (line   6)
+* nodist_:                               Alternative.         (line  29)
+* noinst_:                               Uniform.             (line  91)
+* noinst_HEADERS:                        Headers.             (line   6)
+* noinst_LIBRARIES:                      A Library.           (line   6)
+* noinst_LISP:                           Emacs Lisp.          (line   6)
+* noinst_LTLIBRARIES:                    Libtool Convenience Libraries.
+                                                              (line   6)
+* noinst_PROGRAMS:                       Program Sources.     (line   6)
+* noinst_SCRIPTS:                        Scripts.             (line  18)
+* notrans_:                              Man Pages.           (line  54)
+* OBJC:                                  Objective C Support. (line  16)
+* OBJCCOMPILE:                           Objective C Support. (line  25)
+* OBJCFLAGS:                             Objective C Support. (line  19)
+* OBJCLINK <1>:                          How the Linker is Chosen.
+                                                              (line  20)
+* OBJCLINK:                              Objective C Support. (line  29)
+* OBJCXX:                                Objective C++ Support.
+                                                              (line  16)
+* OBJCXXCOMPILE:                         Objective C++ Support.
+                                                              (line  25)
+* OBJCXXFLAGS:                           Objective C++ Support.
+                                                              (line  19)
+* OBJCXXLINK <1>:                        How the Linker is Chosen.
+                                                              (line  12)
+* OBJCXXLINK:                            Objective C++ Support.
+                                                              (line  29)
+* oldinclude_HEADERS:                    Headers.             (line   6)
+* PACKAGE:                               Basics of Distribution.
+                                                              (line   6)
+* pkgdata_DATA:                          Data.                (line   9)
+* pkgdata_SCRIPTS:                       Scripts.             (line  18)
+* pkgdatadir:                            Uniform.             (line  19)
+* pkginclude_HEADERS:                    Headers.             (line   6)
+* pkgincludedir:                         Uniform.             (line  19)
+* pkglib_LIBRARIES:                      A Library.           (line   6)
+* pkglib_LTLIBRARIES:                    Libtool Libraries.   (line   6)
+* pkglibdir:                             Uniform.             (line  19)
+* pkglibexec_PROGRAMS:                   Program Sources.     (line   6)
+* pkglibexec_SCRIPTS:                    Scripts.             (line  18)
+* pkglibexecdir:                         Uniform.             (line  19)
+* pkgpyexecdir:                          Python.              (line 105)
+* pkgpythondir:                          Python.              (line  91)
+* PROGRAMS:                              Uniform.             (line  17)
+* pyexecdir:                             Python.              (line  96)
+* PYTHON <1>:                            Python.              (line  56)
+* PYTHON:                                Uniform.             (line 102)
+* PYTHON_EXEC_PREFIX:                    Python.              (line  77)
+* PYTHON_PLATFORM:                       Python.              (line  82)
+* PYTHON_PREFIX:                         Python.              (line  72)
+* PYTHON_VERSION:                        Python.              (line  68)
+* pythondir:                             Python.              (line  87)
+* RECHECK_LOGS:                          Parallel Test Harness.
+                                                              (line 118)
+* RFLAGS:                                Fortran 77 Support.  (line  25)
+* RUNTEST:                               DejaGnu Tests.       (line  19)
+* RUNTESTDEFAULTFLAGS:                   DejaGnu Tests.       (line  14)
+* RUNTESTFLAGS:                          DejaGnu Tests.       (line  24)
+* sbin_PROGRAMS:                         Program Sources.     (line   6)
+* sbin_SCRIPTS:                          Scripts.             (line  18)
+* SCRIPTS <1>:                           Scripts.             (line   9)
+* SCRIPTS:                               Uniform.             (line 102)
+* sharedstate_DATA:                      Data.                (line   9)
+* SOURCES <1>:                           Default _SOURCES.    (line   6)
+* SOURCES:                               Program Sources.     (line  33)
+* SUBDIRS <1>:                           Basics of Distribution.
+                                                              (line  42)
+* SUBDIRS:                               Subdirectories.      (line   8)
+* SUFFIXES:                              Suffixes.            (line   6)
+* sysconf_DATA:                          Data.                (line   9)
+* TAGS_DEPENDENCIES:                     Tags.                (line  35)
+* target_triplet:                        Optional.            (line  14)
+* TEST_EXTENSIONS:                       Parallel Test Harness.
+                                                              (line  39)
+* TEST_LOGS:                             Parallel Test Harness.
+                                                              (line  39)
+* TEST_SUITE_LOG:                        Parallel Test Harness.
+                                                              (line  16)
+* TESTS <1>:                             Parallel Test Harness.
+                                                              (line  16)
+* TESTS:                                 Scripts-based Testsuites.
+                                                              (line  89)
+* TESTS_ENVIRONMENT:                     Scripts-based Testsuites.
+                                                              (line  89)
+* TEXI2DVI:                              Texinfo.             (line 126)
+* TEXI2PDF:                              Texinfo.             (line 131)
+* TEXINFO_TEX:                           Texinfo.             (line 139)
+* TEXINFOS <1>:                          Texinfo.             (line  59)
+* TEXINFOS:                              Uniform.             (line 102)
+* top_distdir <1>:                       Third-Party Makefiles.
+                                                              (line  25)
+* top_distdir:                           The dist Hook.       (line  33)
+* UPC <1>:                               Unified Parallel C Support.
+                                                              (line  15)
+* UPC:                                   Public Macros.       (line  94)
+* UPCCOMPILE:                            Unified Parallel C Support.
+                                                              (line  24)
+* UPCFLAGS:                              Unified Parallel C Support.
+                                                              (line  18)
+* UPCLINK <1>:                           How the Linker is Chosen.
+                                                              (line  22)
+* UPCLINK:                               Unified Parallel C Support.
+                                                              (line  28)
+* V:                                     Automake silent-rules Option.
+                                                              (line 104)
+* VALAC:                                 Vala Support.        (line  29)
+* VALAFLAGS:                             Vala Support.        (line  32)
+* VERBOSE:                               Parallel Test Harness.
+                                                              (line  30)
+* VERSION:                               Basics of Distribution.
+                                                              (line   6)
+* WARNINGS <1>:                          aclocal Options.     (line  96)
+* WARNINGS:                              automake Invocation. (line 184)
+* WITH_DMALLOC:                          Public Macros.       (line 104)
+* XFAIL_TESTS:                           Scripts-based Testsuites.
+                                                              (line  35)
+* XZ_OPT:                                The Types of Distributions.
+                                                              (line  26)
+* YACC:                                  Optional.            (line 122)
+* YFLAGS:                                Yacc and Lex.        (line  37)
+
diff --git a/doc/automake.info-3 b/doc/automake.info-3
new file mode 100644 (file)
index 0000000..8e4fc46
Binary files /dev/null and b/doc/automake.info-3 differ
diff --git a/doc/automake.texi b/doc/automake.texi
new file mode 100644 (file)
index 0000000..939fe44
--- /dev/null
@@ -0,0 +1,13225 @@
+\input texinfo   @c -*-texinfo-*-
+@c %**start of header
+@setfilename automake.info
+@settitle automake
+@setchapternewpage off
+@c %**end of header
+
+@include version.texi
+
+@c @ovar(ARG, DEFAULT)
+@c -------------------
+@c The ARG is an optional argument.  To be used for macro arguments in
+@c their documentation (@defmac).
+@macro ovar{varname}
+@r{[}@var{\varname\}@r{]}
+@end macro
+
+@set PACKAGE_BUGREPORT bug-automake@@gnu.org
+
+@copying
+
+This manual is for GNU Automake (version @value{VERSION},
+@value{UPDATED}), a program that creates GNU standards-compliant
+Makefiles from template files.
+
+Copyright @copyright{} 1995-2012 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with no Front-Cover texts,
+and with no Back-Cover Texts.  A copy of the license is included in the
+section entitled ``GNU Free Documentation License.''
+
+@end quotation
+@end copying
+
+@dircategory Software development
+@direntry
+* Automake: (automake).         Making GNU standards-compliant Makefiles.
+@end direntry
+
+@dircategory Individual utilities
+@direntry
+* aclocal-invocation: (automake)aclocal Invocation.   Generating aclocal.m4.
+* automake-invocation: (automake)automake Invocation. Generating Makefile.in.
+@end direntry
+
+@titlepage
+@title GNU Automake
+@subtitle For version @value{VERSION}, @value{UPDATED}
+@author David MacKenzie
+@author Tom Tromey
+@author Alexandre Duret-Lutz
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@c We use the following macros to define indices:
+@c   @cindex   concepts, and anything that does not fit elsewhere
+@c   @vindex   Makefile variables
+@c   @trindex  targets
+@c   @acindex  Autoconf/Automake/Libtool/M4/... macros
+@c   @opindex  tool options
+
+@c Define an index of configure macros.
+@defcodeindex ac
+@c Define an index of options.
+@defcodeindex op
+@c Define an index of targets.
+@defcodeindex tr
+@c Define an index of commands.
+@defcodeindex cm
+
+@c Put the macros in the function index.
+@syncodeindex ac fn
+
+@c Put everything else into one index (arbitrarily chosen to be the
+@c concept index).
+@syncodeindex op cp
+@syncodeindex tr cp
+@syncodeindex cm cp
+
+@ifnottex
+@node Top
+@comment  node-name,  next,  previous,  up
+@top GNU Automake
+
+@insertcopying
+
+@menu
+* Introduction::                Automake's purpose
+* Autotools Introduction::      An Introduction to the Autotools
+* Generalities::                General ideas
+* Examples::                    Some example packages
+* automake Invocation::         Creating a Makefile.in
+* configure::                   Scanning configure.ac, using aclocal
+* Directories::                 Declaring subdirectories
+* Programs::                    Building programs and libraries
+* Other Objects::               Other derived objects
+* Other GNU Tools::             Other GNU Tools
+* Documentation::               Building documentation
+* Install::                     What gets installed
+* Clean::                       What gets cleaned
+* Dist::                        What goes in a distribution
+* Tests::                       Support for test suites
+* Rebuilding::                  Automatic rebuilding of Makefile
+* Options::                     Changing Automake's behavior
+* Miscellaneous::               Miscellaneous rules
+* Include::                     Including extra files in an Automake template
+* Conditionals::                Conditionals
+* Silencing Make::              Obtain less verbose output from @command{make}
+* Gnits::                       The effect of @option{--gnu} and @option{--gnits}
+* Cygnus::                      The effect of @option{--cygnus} (deprecated, soon to be removed)
+* Not Enough::                  When Automake is not Enough
+* Distributing::                Distributing the Makefile.in
+* API Versioning::              About compatibility between Automake versions
+* Upgrading::                   Upgrading to a Newer Automake Version
+* FAQ::                         Frequently Asked Questions
+* Copying This Manual::         How to make copies of this manual
+* Indices::                     Indices of variables, macros, and concepts
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+An Introduction to the Autotools
+
+* GNU Build System::            Introducing the GNU Build System
+* Use Cases::                   Use Cases for the GNU Build System
+* Why Autotools::               How Autotools Help
+* Hello World::                 A Small Hello World Package
+
+Use Cases for the GNU Build System
+
+* Basic Installation::          Common installation procedure
+* Standard Targets::            A list of standard Makefile targets
+* Standard Directory Variables::  A list of standard directory variables
+* Standard Configuration Variables::  Using configuration variables
+* config.site::                 Using a config.site file
+* VPATH Builds::                Parallel build trees
+* Two-Part Install::            Installing data and programs separately
+* Cross-Compilation::           Building for other architectures
+* Renaming::                    Renaming programs at install time
+* DESTDIR::                     Building binary packages with DESTDIR
+* Preparing Distributions::     Rolling out tarballs
+* Dependency Tracking::         Automatic dependency tracking
+* Nested Packages::             The GNU Build Systems can be nested
+
+A Small Hello World
+
+* Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
+* amhello's configure.ac Setup Explained::
+* amhello's Makefile.am Setup Explained::
+
+General ideas
+
+* General Operation::           General operation of Automake
+* Strictness::                  Standards conformance checking
+* Uniform::                     The Uniform Naming Scheme
+* Length Limitations::          Staying below the command line length limit
+* Canonicalization::            How derived variables are named
+* User Variables::              Variables reserved for the user
+* Auxiliary Programs::          Programs automake might require
+
+Some example packages
+
+* Complete::                    A simple example, start to finish
+* true::                        Building true and false
+
+Scanning @file{configure.ac}, using @command{aclocal}
+
+* Requirements::                Configuration requirements
+* Optional::                    Other things Automake recognizes
+* aclocal Invocation::          Auto-generating aclocal.m4
+* Macros::                      Autoconf macros supplied with Automake
+
+Auto-generating aclocal.m4
+
+* 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
+
+Autoconf macros supplied with Automake
+
+* Public Macros::               Macros that you can use.
+* Obsolete Macros::             Macros that will soon be removed.
+* Private Macros::              Macros that you should not use.
+
+Directories
+
+* Subdirectories::              Building subdirectories recursively
+* Conditional Subdirectories::  Conditionally not building 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
+* A Library::                   Building a library
+* A Shared Library::            Building a Libtool library
+* Program and Library Variables::  Variables controlling program and
+                                library builds
+* Default _SOURCES::            Default source files
+* LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
+* 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
+* Objective C++ Support::       Compiling Objective C++ sources
+* Unified Parallel C Support::  Compiling Unified Parallel C sources
+* Assembly Support::            Compiling assembly sources
+* Fortran 77 Support::          Compiling Fortran 77 sources
+* Fortran 9x Support::          Compiling Fortran 9x sources
+* Java Support with gcj::       Compiling Java sources using gcj
+* Vala Support::                Compiling Vala sources
+* Support for Other Languages::  Compiling other languages
+* Dependencies::                Automatic dependency tracking
+* EXEEXT::                      Support for executable extensions
+
+Building a program
+
+* Program Sources::             Defining program sources
+* Linking::                     Linking with libraries or extra objects
+* Conditional Sources::         Handling conditional sources
+* Conditional Programs::        Building a program conditionally
+
+Building a Shared Library
+
+* Libtool Concept::             Introducing Libtool
+* Libtool Libraries::           Declaring Libtool Libraries
+* Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
+* Conditional Libtool Sources::  Choosing Library Sources Conditionally
+* Libtool Convenience Libraries::  Building Convenience Libtool Libraries
+* Libtool Modules::             Building Libtool Modules
+* Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
+* LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
+* Libtool Issues::              Common Issues Related to Libtool's Use
+
+Common Issues Related to Libtool's Use
+
+* Error required file ltmain.sh not found::  The need to run libtoolize
+* Objects created both with libtool and without::  Avoid a specific build race
+
+Fortran 77 Support
+
+* Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
+* Compiling Fortran 77 Files::  Compiling Fortran 77 sources
+* Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
+
+Mixing Fortran 77 With C and C++
+
+* How the Linker is Chosen::    Automatic linker selection
+
+Fortran 9x Support
+
+* Compiling Fortran 9x Files::  Compiling Fortran 9x sources
+
+Other Derived Objects
+
+* Scripts::                     Executable scripts
+* Headers::                     Header files
+* Data::                        Architecture-independent data files
+* Sources::                     Derived sources
+
+Built Sources
+
+* Built Sources Example::       Several ways to handle built sources.
+
+Other GNU Tools
+
+* Emacs Lisp::                  Emacs Lisp
+* gettext::                     Gettext
+* Libtool::                     Libtool
+* Java::                        Java bytecode compilation (deprecated)
+* Python::                      Python
+
+Building documentation
+
+* Texinfo::                     Texinfo
+* Man Pages::                   Man pages
+
+What Gets Installed
+
+* 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
+
+What Goes in a 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
+
+* Generalities about Testing::  Generic concepts and terminology about testing
+* Simple Tests::                Listing test scripts in @code{TESTS}
+* Custom Test Drivers::         Writing and using custom test drivers
+* Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
+* DejaGnu Tests::               Interfacing with the @command{dejagnu} testing framework
+* Install Tests::               Running tests on installed packages
+
+Simple Tests
+
+* Scripts-based Testsuites::    Automake-specific concepts and terminology
+* Serial Test Harness::         Older (and obsolescent) serial test harness
+* Parallel Test Harness::       Generic concurrent test harness
+
+Using the TAP test protocol
+
+* Introduction to TAP::
+* Use TAP with the Automake test harness::
+* Incompatibilities with other TAP parsers and drivers::
+* Links and external resources on TAP::
+
+Custom Test Drivers
+
+* Overview of Custom Test Drivers Support::
+* Declaring Custom Test Drivers::
+* API for Custom Test Drivers::
+
+API for Custom Test Drivers
+
+* Command-line arguments for test drivers::
+* Log files generation and test results recording::
+* Testsuite progress output::
+
+Changing Automake's Behavior
+
+* Options generalities::        Semantics of Automake option
+* List of Automake options::    A comprehensive list of Automake options
+
+Miscellaneous Rules
+
+* Tags::                        Interfacing to cscope, etags and mkid
+* Suffixes::                    Handling new file extensions
+
+Conditionals
+
+* Usage of Conditionals::       Declaring conditional content
+* Limits of Conditionals::      Enclosing complete statements
+
+Silencing Make
+
+* Make verbosity::               Make is verbose by default
+* Tricks For Silencing Make::    Standard and generic ways to silence make
+* Automake silent-rules Option:: How Automake can help in silencing make
+
+When Automake Isn't Enough
+
+* Extending::                   Adding new rules or overriding existing ones.
+* Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
+
+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
+* Errors with distclean::       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?
+* 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
+* Debugging Make Rules::        Strategies when things don't work as expected
+* Reporting Bugs::              Feedback on bugs and feature requests
+
+Copying This Manual
+
+* GNU Free Documentation License::  License for copying this manual
+
+Indices
+
+* Macro Index::                 Index of Autoconf macros
+* Variable Index::              Index of Makefile variables
+* General Index::               General index
+
+@end detailmenu
+@end menu
+
+@end ifnottex
+
+
+@node Introduction
+@chapter Introduction
+
+Automake is a tool for automatically generating @file{Makefile.in}s
+from files called @file{Makefile.am}.  Each @file{Makefile.am} is
+basically a series of @command{make} variable
+definitions@footnote{These variables are also called @dfn{make macros}
+in Make terminology, however in this manual we reserve the term
+@dfn{macro} for Autoconf's macros.}, with rules being thrown in
+occasionally.  The generated @file{Makefile.in}s are compliant with
+the GNU Makefile standards.
+
+@cindex GNU Makefile standards
+
+The GNU Makefile Standards Document
+(@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
+is long, complicated, and subject to change.  The goal of Automake is to
+remove the burden of Makefile maintenance from the back of the
+individual GNU maintainer (and put it on the back of the Automake
+maintainers).
+
+The typical Automake input file is simply a series of variable definitions.
+Each such file is processed to create a @file{Makefile.in}.  There
+should generally be one @file{Makefile.am} per directory of a project.
+
+@cindex Constraints of Automake
+@cindex Automake constraints
+
+Automake does constrain a project in certain ways; for instance, it
+assumes that the project uses Autoconf (@pxref{Top, , Introduction,
+autoconf, The Autoconf Manual}), and enforces certain restrictions on
+the @file{configure.ac} contents.
+
+@cindex Automake requirements
+@cindex Requirements, Automake
+
+Automake requires @command{perl} in order to generate the
+@file{Makefile.in}s.  However, the distributions created by Automake are
+fully GNU standards-compliant, and do not require @command{perl} in order
+to be built.
+
+@cindex Bugs, reporting
+@cindex Reporting bugs
+@cindex E-mail, bug reports
+
+For more information on bug reports, @xref{Reporting Bugs}.
+
+@node Autotools Introduction
+@chapter An Introduction to the Autotools
+
+If you are new to Automake, maybe you know that it is part of a set of
+tools called @emph{The Autotools}.  Maybe you've already delved into a
+package full of files named @file{configure}, @file{configure.ac},
+@file{Makefile.in}, @file{Makefile.am}, @file{aclocal.m4}, @dots{},
+some of them claiming to be @emph{generated by} Autoconf or Automake.
+But the exact purpose of these files and their relations is probably
+fuzzy.  The goal of this chapter is to introduce you to this machinery,
+to show you how it works and how powerful it is.  If you've never
+installed or seen such a package, do not worry: this chapter will walk
+you through it.
+
+If you need some teaching material, more illustrations, or a less
+@command{automake}-centered continuation, some slides for this
+introduction are available in Alexandre Duret-Lutz's
+@uref{http://www.lrde.epita.fr/@/~adl/@/autotools.html,
+Autotools Tutorial}.
+This chapter is the written version of the first part of his tutorial.
+
+@menu
+* GNU Build System::            Introducing the GNU Build System
+* Use Cases::                   Use Cases for the GNU Build System
+* Why Autotools::               How Autotools Help
+* Hello World::                 A Small Hello World Package
+@end menu
+
+@node GNU Build System
+@section Introducing the GNU Build System
+@cindex GNU Build System, introduction
+
+It is a truth universally acknowledged, that as a developer in
+possession of a new package, you must be in want of a build system.
+
+In the Unix world, such a build system is traditionally achieved using
+the command @command{make} (@pxref{Top, , Overview, make, The GNU Make
+Manual}).  You express the recipe to build your package in a
+@file{Makefile}.  This file is a set of rules to build the files in
+the package.  For instance the program @file{prog} may be built by
+running the linker on the files @file{main.o}, @file{foo.o}, and
+@file{bar.o}; the file @file{main.o} may be built by running the
+compiler on @file{main.c}; etc.  Each time @command{make} is run, it
+reads @file{Makefile}, checks the existence and modification time of
+the files mentioned, decides what files need to be built (or rebuilt),
+and runs the associated commands.
+
+When a package needs to be built on a different platform than the one
+it was developed on, its @file{Makefile} usually needs to be adjusted.
+For instance the compiler may have another name or require more
+options.  In 1991, David J. MacKenzie got tired of customizing
+@file{Makefile} for the 20 platforms he had to deal with.  Instead, he
+handcrafted a little shell script called @file{configure} to
+automatically adjust the @file{Makefile} (@pxref{Genesis, , Genesis,
+autoconf, The Autoconf Manual}).  Compiling his package was now
+as simple as running @code{./configure && make}.
+
+@cindex GNU Coding Standards
+
+Today this process has been standardized in the GNU project.  The GNU
+Coding Standards (@pxref{Managing Releases, The Release Process, ,
+standards, The GNU Coding Standards}) explains how each package of the
+GNU project should have a @file{configure} script, and the minimal
+interface it should have.  The @file{Makefile} too should follow some
+established conventions.  The result?  A unified build system that
+makes all packages almost indistinguishable by the installer.  In its
+simplest scenario, all the installer has to do is to unpack the
+package, run @code{./configure && make && make install}, and repeat
+with the next package to install.
+
+We call this build system the @dfn{GNU Build System}, since it was
+grown out of the GNU project.  However it is used by a vast number of
+other packages: following any existing convention has its advantages.
+
+@cindex Autotools, introduction
+
+The Autotools are tools that will create a GNU Build System for your
+package.  Autoconf mostly focuses on @file{configure} and Automake on
+@file{Makefile}s.  It is entirely possible to create a GNU Build
+System without the help of these tools.  However it is rather
+burdensome and error-prone.  We will discuss this again after some
+illustration of the GNU Build System in action.
+
+@node Use Cases
+@section Use Cases for the GNU Build System
+@cindex GNU Build System, use cases
+@cindex GNU Build System, features
+@cindex Features of the GNU Build System
+@cindex Use Cases for the GNU Build System
+@cindex @file{amhello-1.0.tar.gz}, location
+@cindex @file{amhello-1.0.tar.gz}, use cases
+
+In this section we explore several use cases for the GNU Build System.
+You can replay all these examples on the @file{amhello-1.0.tar.gz}
+package distributed with Automake.  If Automake is installed on your
+system, you should find a copy of this file in
+@file{@var{prefix}/share/doc/automake/amhello-1.0.tar.gz}, where
+@var{prefix} is the installation prefix specified during configuration
+(@var{prefix} defaults to @file{/usr/local}, however if Automake was
+installed by some GNU/Linux distribution it most likely has been set
+to @file{/usr}).  If you do not have a copy of Automake installed,
+you can find a copy of this file inside the @file{doc/} directory of
+the Automake package.
+
+Some of the following use cases present features that are in fact
+extensions to the GNU Build System.  Read: they are not specified by
+the GNU Coding Standards, but they are nonetheless part of the build
+system created by the Autotools.  To keep things simple, we do not
+point out the difference.  Our objective is to show you many of the
+features that the build system created by the Autotools will offer to
+you.
+
+@menu
+* Basic Installation::          Common installation procedure
+* Standard Targets::            A list of standard Makefile targets
+* Standard Directory Variables::  A list of standard directory variables
+* Standard Configuration Variables::  Using configuration variables
+* config.site::                 Using a config.site file
+* VPATH Builds::                Parallel build trees
+* Two-Part Install::            Installing data and programs separately
+* Cross-Compilation::           Building for other architectures
+* Renaming::                    Renaming programs at install time
+* DESTDIR::                     Building binary packages with DESTDIR
+* Preparing Distributions::     Rolling out tarballs
+* Dependency Tracking::         Automatic dependency tracking
+* Nested Packages::             The GNU Build Systems can be nested
+@end menu
+
+@node Basic Installation
+@subsection Basic Installation
+@cindex Configuration, basics
+@cindex Installation, basics
+@cindex GNU Build System, basics
+
+The most common installation procedure looks as follows.
+
+@example
+~ % @kbd{tar zxf amhello-1.0.tar.gz}
+~ % @kbd{cd amhello-1.0}
+~/amhello-1.0 % @kbd{./configure}
+@dots{}
+config.status: creating Makefile
+config.status: creating src/Makefile
+@dots{}
+~/amhello-1.0 % @kbd{make}
+@dots{}
+~/amhello-1.0 % @kbd{make check}
+@dots{}
+~/amhello-1.0 % @kbd{su}
+Password:
+/home/adl/amhello-1.0 # @kbd{make install}
+@dots{}
+/home/adl/amhello-1.0 # @kbd{exit}
+~/amhello-1.0 % @kbd{make installcheck}
+@dots{}
+@end example
+
+@cindex Unpacking
+
+The user first unpacks the package.  Here, and in the following
+examples, we will use the non-portable @code{tar zxf} command for
+simplicity.  On a system without GNU @command{tar} installed, this
+command should read @code{gunzip -c amhello-1.0.tar.gz | tar xf -}.
+
+The user then enters the newly created directory to run the
+@file{configure} script.  This script probes the system for various
+features, and finally creates the @file{Makefile}s.  In this toy
+example there are only two @file{Makefile}s, but in real-world projects,
+there may be many more, usually one @file{Makefile} per directory.
+
+It is now possible to run @code{make}.  This will construct all the
+programs, libraries, and scripts that need to be constructed for the
+package.  In our example, this compiles the @file{hello} program.
+All files are constructed in place, in the source tree; we will see
+later how this can be changed.
+
+@code{make check} causes the package's tests to be run.  This step is
+not mandatory, but it is often good to make sure the programs that
+have been built behave as they should, before you decide to install
+them.  Our example does not contain any tests, so running @code{make
+check} is a no-op.
+
+@cindex su, before @code{make install}
+After everything has been built, and maybe tested, it is time to
+install it on the system.  That means copying the programs,
+libraries, header files, scripts, and other data files from the
+source directory to their final destination on the system.  The
+command @code{make install} will do that.  However, by default
+everything will be installed in subdirectories of @file{/usr/local}:
+binaries will go into @file{/usr/local/bin}, libraries will end up in
+@file{/usr/local/lib}, etc.  This destination is usually not writable
+by any user, so we assume that we have to become root before we can
+run @code{make install}.  In our example, running @code{make install}
+will copy the program @file{hello} into @file{/usr/local/bin}
+and @file{README} into @file{/usr/local/share/doc/amhello}.
+
+A last and optional step is to run @code{make installcheck}.  This
+command may run tests on the installed files.  @code{make check} tests
+the files in the source tree, while @code{make installcheck} tests
+their installed copies.  The tests run by the latter can be different
+from those run by the former.  For instance, there are tests that
+cannot be run in the source tree.  Conversely, some packages are set
+up so that @code{make installcheck} will run the very same tests as
+@code{make check}, only on different files (non-installed
+vs.@: installed).  It can make a difference, for instance when the
+source tree's layout is different from that of the installation.
+Furthermore it may help to diagnose an incomplete installation.
+
+Presently most packages do not have any @code{installcheck} tests
+because the existence of @code{installcheck} is little known, and its
+usefulness is neglected.  Our little toy package is no better: @code{make
+installcheck} does nothing.
+
+@node Standard Targets
+@subsection Standard @file{Makefile} Targets
+
+So far we have come across four ways to run @command{make} in the GNU
+Build System: @code{make}, @code{make check}, @code{make install}, and
+@code{make installcheck}.  The words @code{check}, @code{install}, and
+@code{installcheck}, passed as arguments to @command{make}, are called
+@dfn{targets}.  @code{make} is a shorthand for @code{make all},
+@code{all} being the default target in the GNU Build System.
+
+Here is a list of the most useful targets that the GNU Coding Standards
+specify.
+
+@table @code
+@item make all
+@trindex all
+Build programs, libraries, documentation, etc.@: (same as @code{make}).
+@item make install
+@trindex install
+Install what needs to be installed, copying the files from the
+package's tree to system-wide directories.
+@item make install-strip
+@trindex install-strip
+Same as @code{make install}, then strip debugging symbols.  Some
+users like to trade space for useful bug reports@enddots{}
+@item make uninstall
+@trindex uninstall
+The opposite of @code{make install}: erase the installed files.
+(This needs to be run from the same build tree that was installed.)
+@item make clean
+@trindex clean
+Erase from the build tree the files built by @code{make all}.
+@item make distclean
+@trindex distclean
+Additionally erase anything @code{./configure} created.
+@item make check
+@trindex check
+Run the test suite, if any.
+@item make installcheck
+@trindex installcheck
+Check the installed programs or libraries, if supported.
+@item make dist
+@trindex dist
+Recreate @file{@var{package}-@var{version}.tar.gz} from all the source
+files.
+@end table
+
+@node Standard Directory Variables
+@subsection Standard Directory Variables
+@cindex directory variables
+
+The GNU Coding Standards also specify a hierarchy of variables to
+denote installation directories.  Some of these are:
+
+@multitable {Directory variable} {@code{$@{datarootdir@}/doc/$@{PACKAGE@}}}
+@headitem Directory variable    @tab Default value
+@item @code{prefix}              @tab @code{/usr/local}
+@item @w{@ @ @code{exec_prefix}} @tab @code{$@{prefix@}}
+@item @w{@ @ @ @ @code{bindir}}  @tab @code{$@{exec_prefix@}/bin}
+@item @w{@ @ @ @ @code{libdir}}  @tab @code{$@{exec_prefix@}/lib}
+@item @w{@ @ @ @ @dots{}}
+@item @w{@ @ @code{includedir}}  @tab @code{$@{prefix@}/include}
+@item @w{@ @ @code{datarootdir}} @tab @code{$@{prefix@}/share}
+@item @w{@ @ @ @ @code{datadir}} @tab @code{$@{datarootdir@}}
+@item @w{@ @ @ @ @code{mandir}}  @tab @code{$@{datarootdir@}/man}
+@item @w{@ @ @ @ @code{infodir}} @tab @code{$@{datarootdir@}/info}
+@item @w{@ @ @ @ @code{docdir}}  @tab @code{$@{datarootdir@}/doc/$@{PACKAGE@}}
+@item @w{@ @ @dots{}}
+@end multitable
+
+@c We should provide a complete table somewhere, but not here.  The
+@c complete list of directory variables it too confusing as-is.  It
+@c requires some explanations that are too complicated for this
+@c introduction.  Besides listing directories like localstatedir
+@c would make the explanations in ``Two-Part Install'' harder.
+
+Each of these directories has a role which is often obvious from its
+name.  In a package, any installable file will be installed in one of
+these directories.  For instance in @code{amhello-1.0}, the program
+@file{hello} is to be installed in @var{bindir}, the directory for
+binaries.  The default value for this directory is
+@file{/usr/local/bin}, but the user can supply a different value when
+calling @command{configure}.  Also the file @file{README} will be
+installed into @var{docdir}, which defaults to
+@file{/usr/local/share/doc/amhello}.
+
+@opindex --prefix
+
+As a user, if you wish to install a package on your own account, you
+could proceed as follows:
+
+@example
+~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
+@dots{}
+~/amhello-1.0 % @kbd{make}
+@dots{}
+~/amhello-1.0 % @kbd{make install}
+@dots{}
+@end example
+
+This would install @file{~/usr/bin/hello} and
+@file{~/usr/share/doc/amhello/README}.
+
+The list of all such directory options is shown by
+@code{./configure --help}.
+
+@node Standard Configuration Variables
+@subsection Standard Configuration Variables
+@cindex configuration variables, overriding
+
+The GNU Coding Standards also define a set of standard configuration
+variables used during the build.  Here are some:
+
+@table @asis
+@item @code{CC}
+C compiler command
+@item @code{CFLAGS}
+C compiler flags
+@item @code{CXX}
+C++ compiler command
+@item @code{CXXFLAGS}
+C++ compiler flags
+@item @code{LDFLAGS}
+linker flags
+@item @code{CPPFLAGS}
+C/C++ preprocessor flags
+@item @dots{}
+@end table
+
+@command{configure} usually does a good job at setting appropriate
+values for these variables, but there are cases where you may want to
+override them.  For instance you may have several versions of a
+compiler installed and would like to use another one, you may have
+header files installed outside the default search path of the
+compiler, or even libraries out of the way of the linker.
+
+Here is how one would call @command{configure} to force it to use
+@command{gcc-3} as C compiler, use header files from
+@file{~/usr/include} when compiling, and libraries from
+@file{~/usr/lib} when linking.
+
+@example
+~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
+CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
+@end example
+
+Again, a full list of these variables appears in the output of
+@code{./configure --help}.
+
+@node config.site
+@subsection Overriding Default Configuration Setting with @file{config.site}
+@cindex @file{config.site} example
+
+When installing several packages using the same setup, it can be
+convenient to create a file to capture common settings.
+If a file named @file{@var{prefix}/share/config.site} exists,
+@command{configure} will source it at the beginning of its execution.
+
+Recall the command from the previous section:
+
+@example
+~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
+CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
+@end example
+
+Assuming we are installing many package in @file{~/usr}, and will
+always want to use these definitions of @code{CC}, @code{CPPFLAGS}, and
+@code{LDFLAGS}, we can automate this by creating the following
+@file{~/usr/share/config.site} file:
+
+@example
+test -z "$CC" && CC=gcc-3
+test -z "$CPPFLAGS" && CPPFLAGS=-I$HOME/usr/include
+test -z "$LDFLAGS" && LDFLAGS=-L$HOME/usr/lib
+@end example
+
+Now, any time a @file{configure} script is using the @file{~/usr}
+prefix, it will execute the above @file{config.site} and define
+these three variables.
+
+@example
+~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
+configure: loading site script /home/adl/usr/share/config.site
+@dots{}
+@end example
+
+@xref{Site Defaults, , Setting Site Defaults, autoconf, The Autoconf
+Manual}, for more information about this feature.
+
+
+@node VPATH Builds
+@subsection Parallel Build Trees (a.k.a.@: VPATH Builds)
+@cindex Parallel build trees
+@cindex VPATH builds
+@cindex source tree and build tree
+@cindex build tree and source tree
+@cindex trees, source vs.@: build
+
+The GNU Build System distinguishes two trees: the source tree, and
+the build tree.
+
+The source tree is rooted in the directory containing
+@file{configure}.  It contains all the sources files (those that are
+distributed), and may be arranged using several subdirectories.
+
+The build tree is rooted in the directory in which @file{configure}
+was run, and is populated with all object files, programs, libraries,
+and other derived files built from the sources (and hence not
+distributed).  The build tree usually has the same subdirectory layout
+as the source tree; its subdirectories are created automatically by
+the build system.
+
+If @file{configure} is executed in its own directory, the source and
+build trees are combined: derived files are constructed in the same
+directories as their sources.  This was the case in our first
+installation example (@pxref{Basic Installation}).
+
+A common request from users is that they want to confine all derived
+files to a single directory, to keep their source directories
+uncluttered.  Here is how we could run @file{configure} to build
+everything in a subdirectory called @file{build/}.
+
+@example
+~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
+~ % @kbd{cd amhello-1.0}
+~/amhello-1.0 % @kbd{mkdir build && cd build}
+~/amhello-1.0/build % @kbd{../configure}
+@dots{}
+~/amhello-1.0/build % @kbd{make}
+@dots{}
+@end example
+
+These setups, where source and build trees are different, are often
+called @dfn{parallel builds} or @dfn{VPATH builds}.  The expression
+@emph{parallel build} is misleading: the word @emph{parallel} is a
+reference to the way the build tree shadows the source tree, it is not
+about some concurrency in the way build commands are run.  For this
+reason we refer to such setups using the name @emph{VPATH builds} in
+the following.  @emph{VPATH} is the name of the @command{make} feature
+used by the @file{Makefile}s to allow these builds (@pxref{General
+Search, , @code{VPATH} Search Path for All Prerequisites, make, The
+GNU Make Manual}).
+
+@cindex multiple configurations, example
+@cindex debug build, example
+@cindex optimized build, example
+
+VPATH builds have other interesting uses.  One is to build the same
+sources with multiple configurations.  For instance:
+
+@c Keep in sync with amhello-cflags.sh
+@example
+~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
+~ % @kbd{cd amhello-1.0}
+~/amhello-1.0 % @kbd{mkdir debug optim && cd debug}
+~/amhello-1.0/debug % @kbd{../configure CFLAGS='-g -O0'}
+@dots{}
+~/amhello-1.0/debug % @kbd{make}
+@dots{}
+~/amhello-1.0/debug % cd ../optim
+~/amhello-1.0/optim % @kbd{../configure CFLAGS='-O3 -fomit-frame-pointer'}
+@dots{}
+~/amhello-1.0/optim % @kbd{make}
+@dots{}
+@end example
+
+With network file systems, a similar approach can be used to build the
+same sources on different machines.  For instance, suppose that the
+sources are installed on a directory shared by two hosts: @code{HOST1}
+and @code{HOST2}, which may be different platforms.
+
+@example
+~ % @kbd{cd /nfs/src}
+/nfs/src % @kbd{tar zxf ~/amhello-1.0.tar.gz}
+@end example
+
+On the first host, you could create a local build directory:
+@example
+[HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
+[HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
+...
+[HOST1] /tmp/amh % @kbd{make && sudo make install}
+...
+@end example
+
+@noindent
+(Here we assume that the installer has configured @command{sudo} so it
+can execute @code{make install} with root privileges; it is more convenient
+than using @command{su} like in @ref{Basic Installation}).
+
+On the second host, you would do exactly the same, possibly at
+the same time:
+@example
+[HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
+[HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
+...
+[HOST2] /tmp/amh % @kbd{make && sudo make install}
+...
+@end example
+
+@cindex read-only source tree
+@cindex source tree, read-only
+
+In this scenario, nothing forbids the @file{/nfs/src/amhello-1.0}
+directory from being read-only.  In fact VPATH builds are also a means
+of building packages from a read-only medium such as a CD-ROM.  (The
+FSF used to sell CD-ROM with unpacked source code, before the GNU
+project grew so big.)
+
+@node Two-Part Install
+@subsection Two-Part Installation
+
+In our last example (@pxref{VPATH Builds}), a source tree was shared
+by two hosts, but compilation and installation were done separately on
+each host.
+
+The GNU Build System also supports networked setups where part of the
+installed files should be shared amongst multiple hosts.  It does so
+by distinguishing architecture-dependent files from
+architecture-independent files, and providing two @file{Makefile}
+targets to install each of these classes of files.
+
+@trindex install-exec
+@trindex install-data
+
+These targets are @code{install-exec} for architecture-dependent files
+and @code{install-data} for architecture-independent files.
+The command we used up to now, @code{make install}, can be thought of
+as a shorthand for @code{make install-exec install-data}.
+
+From the GNU Build System point of view, the distinction between
+architecture-dependent files and architecture-independent files is
+based exclusively on the directory variable used to specify their
+installation destination.  In the list of directory variables we
+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{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
+@file{/usr}, and (2) the directory @file{/usr/share} is shared by the
+two hosts.
+
+On the first host we would run
+@example
+[HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
+[HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
+...
+[HOST1] /tmp/amh % @kbd{make && sudo make install}
+...
+@end example
+
+On the second host, however, we need only install the
+architecture-specific files.
+@example
+[HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
+[HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
+...
+[HOST2] /tmp/amh % @kbd{make && sudo make install-exec}
+...
+@end example
+
+In packages that have installation checks, it would make sense to run
+@code{make installcheck} (@pxref{Basic Installation}) to verify that
+the package works correctly despite the apparent partial installation.
+
+@node Cross-Compilation
+@subsection Cross-Compilation
+@cindex cross-compilation
+
+To @dfn{cross-compile} is to build on one platform a binary that will
+run on another platform.  When speaking of cross-compilation, it is
+important to distinguish between the @dfn{build platform} on which
+the compilation is performed, and the @dfn{host platform} on which the
+resulting executable is expected to run.  The following
+@command{configure} options are used to specify each of them:
+
+@table @option
+@item --build=@var{build}
+@opindex --build=@var{build}
+The system on which the package is built.
+@item --host=@var{host}
+@opindex --host=@var{host}
+The system where built programs and libraries will run.
+@end table
+
+When the @option{--host} is used, @command{configure} will search for
+the cross-compiling suite for this platform.  Cross-compilation tools
+commonly have their target architecture as prefix of their name.  For
+instance my cross-compiler for MinGW32 has its binaries called
+@code{i586-mingw32msvc-gcc}, @code{i586-mingw32msvc-ld},
+@code{i586-mingw32msvc-as}, etc.
+
+@cindex MinGW cross-compilation example
+@cindex cross-compilation example
+
+Here is how we could build @code{amhello-1.0} for
+@code{i586-mingw32msvc} on a GNU/Linux PC.
+
+@c Keep in sync with amhello-cross-compile.sh
+@smallexample
+~/amhello-1.0 % @kbd{./configure --build i686-pc-linux-gnu --host i586-mingw32msvc}
+checking for a BSD-compatible install... /usr/bin/install -c
+checking whether build environment is sane... yes
+checking for gawk... gawk
+checking whether make sets $(MAKE)... yes
+checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip
+checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc
+checking for C compiler default output file name... a.exe
+checking whether the C compiler works... yes
+checking whether we are cross compiling... yes
+checking for suffix of executables... .exe
+checking for suffix of object files... o
+checking whether we are using the GNU C compiler... yes
+checking whether i586-mingw32msvc-gcc accepts -g... yes
+checking for i586-mingw32msvc-gcc option to accept ANSI C...
+@dots{}
+~/amhello-1.0 % @kbd{make}
+@dots{}
+~/amhello-1.0 % @kbd{cd src; file hello.exe}
+hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
+@end smallexample
+
+The @option{--host} and @option{--build} options are usually all we
+need for cross-compiling.  The only exception is if the package being
+built is itself a cross-compiler: we need a third option to specify
+its target architecture.
+
+@table @option
+@item --target=@var{target}
+@opindex --target=@var{target}
+When building compiler tools: the system for which the tools will
+create output.
+@end table
+
+For instance when installing GCC, the GNU Compiler Collection, we can
+use @option{--target=@/@var{target}} to specify that we want to build
+GCC as a cross-compiler for @var{target}.  Mixing @option{--build} and
+@option{--target}, we can actually cross-compile a cross-compiler;
+such a three-way cross-compilation is known as a @dfn{Canadian cross}.
+
+@xref{Specifying Names, , Specifying the System Type, autoconf, The
+Autoconf Manual}, for more information about these @command{configure}
+options.
+
+@node Renaming
+@subsection Renaming Programs at Install Time
+@cindex Renaming programs
+@cindex Transforming program names
+@cindex Programs, renaming during installation
+
+The GNU Build System provides means to automatically rename
+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,
+you may want to install GNU @command{tar} as @command{gtar} so you can
+distinguish it from your vendor's @command{tar}.
+
+This can be done using one of these three @command{configure} options.
+
+@table @option
+@item --program-prefix=@var{prefix}
+@opindex --program-prefix=@var{prefix}
+Prepend @var{prefix} to installed program names.
+@item --program-suffix=@var{suffix}
+@opindex --program-suffix=@var{suffix}
+Append @var{suffix} to installed program names.
+@item --program-transform-name=@var{program}
+@opindex --program-transform-name=@var{program}
+Run @code{sed @var{program}} on installed program names.
+@end table
+
+The following commands would install @file{hello}
+as @file{/usr/local/bin/test-hello}, for instance.
+
+@example
+~/amhello-1.0 % @kbd{./configure --program-prefix test-}
+@dots{}
+~/amhello-1.0 % @kbd{make}
+@dots{}
+~/amhello-1.0 % @kbd{sudo make install}
+@dots{}
+@end example
+
+@node DESTDIR
+@subsection Building Binary Packages Using DESTDIR
+@vindex DESTDIR
+
+The GNU Build System's @code{make install} and @code{make uninstall}
+interface does not exactly fit the needs of a system administrator
+who has to deploy and upgrade packages on lots of hosts.  In other
+words, the GNU Build System does not replace a package manager.
+
+Such package managers usually need to know which files have been
+installed by a package, so a mere @code{make install} is
+inappropriate.
+
+@cindex Staged installation
+
+The @code{DESTDIR} variable can be used to perform a staged
+installation.  The package should be configured as if it was going to
+be installed in its final location (e.g., @code{--prefix /usr}), but
+when running @code{make install}, the @code{DESTDIR} should be set to
+the absolute name of a directory into which the installation will be
+diverted.  From this directory it is easy to review which files are
+being installed where, and finally copy them to their final location
+by some means.
+
+@cindex Binary package
+
+For instance here is how we could create a binary package containing a
+snapshot of all the files to be installed.
+
+@c Keep in sync with amhello-binpkg.sh
+@example
+~/amhello-1.0 % @kbd{./configure --prefix /usr}
+@dots{}
+~/amhello-1.0 % @kbd{make}
+@dots{}
+~/amhello-1.0 % @kbd{make DESTDIR=$HOME/inst install}
+@dots{}
+~/amhello-1.0 % @kbd{cd ~/inst}
+~/inst % @kbd{find . -type f -print > ../files.lst}
+~/inst % @kbd{tar zcvf ~/amhello-1.0-i686.tar.gz `cat ../files.lst`}
+./usr/bin/hello
+./usr/share/doc/amhello/README
+@end example
+
+After this example, @code{amhello-1.0-i686.tar.gz} is ready to be
+uncompressed in @file{/} on many hosts.  (Using @code{`cat ../files.lst`}
+instead of @samp{.} as argument for @command{tar} avoids entries for
+each subdirectory in the archive: we would not like @command{tar} to
+restore the modification time of @file{/}, @file{/usr/}, etc.)
+
+Note that when building packages for several architectures, it might
+be convenient to use @code{make install-data} and @code{make
+install-exec} (@pxref{Two-Part Install}) to gather
+architecture-independent files in a single package.
+
+@xref{Install}, for more information.
+
+@c We should document PRE_INSTALL/POST_INSTALL/NORMAL_INSTALL and their
+@c UNINSTALL counterparts.
+
+@node Preparing Distributions
+@subsection Preparing Distributions
+@cindex Preparing distributions
+@cindex Packages, preparation
+@cindex Distributions, preparation
+
+We have already mentioned @code{make dist}.  This target collects all
+your source files and the necessary parts of the build system to
+create a tarball named @file{@var{package}-@var{version}.tar.gz}.
+
+@cindex @code{distcheck} better than @code{dist}
+
+Another, more useful command is @code{make distcheck}.  The
+@code{distcheck} target constructs
+@file{@var{package}-@var{version}.tar.gz} just as well as @code{dist},
+but it additionally ensures most of the use cases presented so far
+work:
+
+@itemize @bullet
+@item
+It attempts a full compilation of the package (@pxref{Basic
+Installation}), unpacking the newly constructed tarball, running
+@code{make}, @code{make check}, @code{make install}, as well as
+@code{make installcheck}, and even @code{make dist},
+@item
+it tests VPATH builds with read-only source tree (@pxref{VPATH Builds}),
+@item
+it makes sure @code{make clean}, @code{make distclean}, and @code{make
+uninstall} do not omit any file (@pxref{Standard Targets}),
+@item
+and it checks that @code{DESTDIR} installations work (@pxref{DESTDIR}).
+@end itemize
+
+All of these actions are performed in a temporary subdirectory, so
+that no root privileges are required.
+
+Releasing a package that fails @code{make distcheck} means that one of
+the scenarios we presented will not work and some users will be
+disappointed.  Therefore it is a good practice to release a package
+only after a successful @code{make distcheck}.  This of course does
+not imply that the package will be flawless, but at least it will
+prevent some of the embarrassing errors you may find in packages
+released by people who have never heard about @code{distcheck} (like
+@code{DESTDIR} not working because of a typo, or a distributed file
+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
+@code{make distcheck}.  @xref{Checking the Distribution}, for more
+information about @code{distcheck}.
+
+@node Dependency Tracking
+@subsection Automatic Dependency Tracking
+@cindex Dependency tracking
+
+Dependency tracking is performed as a side-effect of compilation.
+Each time the build system compiles a source file, it computes its
+list of dependencies (in C these are the header files included by the
+source being compiled).  Later, any time @command{make} is run and a
+dependency appears to have changed, the dependent files will be
+rebuilt.
+
+Automake generates code for automatic dependency tracking by default,
+unless the developer chooses to override it; for more information,
+@pxref{Dependencies}.
+
+When @command{configure} is executed, you can see it probing each
+compiler for the dependency mechanism it supports (several mechanisms
+can be used):
+
+@example
+~/amhello-1.0 % @kbd{./configure --prefix /usr}
+@dots{}
+checking dependency style of gcc... gcc3
+@dots{}
+@end example
+
+Because dependencies are only computed as a side-effect of the
+compilation, no dependency information exists the first time a package
+is built.  This is OK because all the files need to be built anyway:
+@code{make} does not have to decide which files need to be rebuilt.
+In fact, dependency tracking is completely useless for one-time builds
+and there is a @command{configure} option to disable this:
+
+@table @option
+@item --disable-dependency-tracking
+@opindex --disable-dependency-tracking
+Speed up one-time builds.
+@end table
+
+Some compilers do not offer any practical way to derive the list of
+dependencies as a side-effect of the compilation, requiring a separate
+run (maybe of another tool) to compute these dependencies.  The
+performance penalty implied by these methods is important enough to
+disable them by default.  The option @option{--enable-dependency-tracking}
+must be passed to @command{configure} to activate them.
+
+@table @option
+@item --enable-dependency-tracking
+@opindex --enable-dependency-tracking
+Do not reject slow dependency extractors.
+@end table
+
+@xref{Dependency Tracking Evolution, , Dependency Tracking Evolution,
+automake-history, Brief History of Automake}, for some discussion about
+the different dependency tracking schemes used by Automake over the years.
+
+@node Nested Packages
+@subsection Nested Packages
+@cindex Nested packages
+@cindex Packages, nested
+@cindex Subpackages
+
+Although nesting packages isn't something we would recommend to
+someone who is discovering the Autotools, it is a nice feature worthy
+of mention in this small advertising tour.
+
+Autoconfiscated packages (that means packages whose build system have
+been created by Autoconf and friends) can be nested to arbitrary
+depth.
+
+A typical setup is that package A will distribute one of the libraries
+it needs in a subdirectory.  This library B is a complete package with
+its own GNU Build System.  The @command{configure} script of A will
+run the @command{configure} script of B as part of its execution,
+building and installing A will also build and install B.  Generating a
+distribution for A will also include B.
+
+It is possible to gather several packages like this.  GCC is a heavy
+user of this feature.  This gives installers a single package to
+configure, build and install, while it allows developers to work on
+subpackages independently.
+
+When configuring nested packages, the @command{configure} options
+given to the top-level @command{configure} are passed recursively to
+nested @command{configure}s.  A package that does not understand an
+option will ignore it, assuming it is meaningful to some other
+package.
+
+@opindex --help=recursive
+
+The command @code{configure --help=recursive} can be used to display
+the options supported by all the included packages.
+
+@xref{Subpackages}, for an example setup.
+
+@node Why Autotools
+@section How Autotools Help
+@cindex Autotools, purpose
+
+There are several reasons why you may not want to implement the GNU
+Build System yourself (read: write a @file{configure} script and
+@file{Makefile}s yourself).
+
+@itemize @bullet
+@item
+As we have seen, the GNU Build System has a lot of
+features (@pxref{Use Cases}).
+Some users may expect features you have not implemented because
+you did not need them.
+@item
+Implementing these features portably is difficult and exhausting.
+Think of writing portable shell scripts, and portable
+@file{Makefile}s, for systems you may not have handy.  @xref{Portable
+Shell, , Portable Shell Programming, autoconf, The Autoconf Manual}, to
+convince yourself.
+@item
+You will have to upgrade your setup to follow changes to the GNU
+Coding Standards.
+@end itemize
+
+The GNU Autotools take all this burden off your back and provide:
+
+@itemize @bullet
+@item
+Tools to create a portable, complete, and self-contained GNU Build
+System, from simple instructions.
+@emph{Self-contained} meaning the resulting build system does not
+require the GNU Autotools.
+@item
+A central place where fixes and improvements are made:
+a bug-fix for a portability issue will benefit every package.
+@end itemize
+
+Yet there also exist reasons why you may want NOT to use the
+Autotools@enddots{} For instance you may be already using (or used to)
+another incompatible build system.  Autotools will only be useful if
+you do accept the concepts of the GNU Build System.  People who have their
+own idea of how a build system should work will feel frustrated by the
+Autotools.
+
+@node Hello World
+@section A Small Hello World
+@cindex Example Hello World
+@cindex Hello World example
+@cindex @file{amhello-1.0.tar.gz}, creation
+
+In this section we recreate the @file{amhello-1.0} package from
+scratch.  The first subsection shows how to call the Autotools to
+instantiate the GNU Build System, while the second explains the
+meaning of the @file{configure.ac} and @file{Makefile.am} files read
+by the Autotools.
+
+@anchor{amhello Explained}
+@menu
+* Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
+* amhello's configure.ac Setup Explained::
+* amhello's Makefile.am Setup Explained::
+@end menu
+
+@node Creating amhello
+@subsection Creating @file{amhello-1.0.tar.gz}
+
+Here is how we can recreate @file{amhello-1.0.tar.gz} from scratch.
+The package is simple enough so that we will only need to write 5
+files.  (You may copy them from the final @file{amhello-1.0.tar.gz}
+that is distributed with Automake if you do not want to write them.)
+
+Create the following files in an empty directory.
+
+@itemize @bullet
+
+@item
+@file{src/main.c} is the source file for the @file{hello} program.  We
+store it in the @file{src/} subdirectory, because later, when the package
+evolves, it will ease the addition of a @file{man/} directory for man
+pages, a @file{data/} directory for data files, etc.
+@example
+~/amhello % @kbd{cat src/main.c}
+#include <config.h>
+#include <stdio.h>
+
+int
+main (void)
+@{
+  puts ("Hello World!");
+  puts ("This is " PACKAGE_STRING ".");
+  return 0;
+@}
+@end example
+
+@item
+@file{README} contains some very limited documentation for our little
+package.
+@example
+~/amhello % @kbd{cat README}
+This is a demonstration package for GNU Automake.
+Type `info Automake' to read the Automake manual.
+@end example
+
+@item
+@file{Makefile.am} and @file{src/Makefile.am} contain Automake
+instructions for these two directories.
+
+@example
+~/amhello % @kbd{cat src/Makefile.am}
+bin_PROGRAMS = hello
+hello_SOURCES = main.c
+~/amhello % @kbd{cat Makefile.am}
+SUBDIRS = src
+dist_doc_DATA = README
+@end example
+
+@item
+Finally, @file{configure.ac} contains Autoconf instructions to
+create the @command{configure} script.
+
+@example
+~/amhello % @kbd{cat configure.ac}
+AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
+AM_INIT_AUTOMAKE([-Wall -Werror foreign])
+AC_PROG_CC
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([
+ Makefile
+ src/Makefile
+])
+AC_OUTPUT
+@end example
+@end itemize
+
+@cindex @command{autoreconf}, example
+
+Once you have these five files, it is time to run the Autotools to
+instantiate the build system.  Do this using the @command{autoreconf}
+command as follows:
+
+@example
+~/amhello % @kbd{autoreconf --install}
+configure.ac: installing `./install-sh'
+configure.ac: installing `./missing'
+src/Makefile.am: installing `./depcomp'
+@end example
+
+At this point the build system is complete.
+
+In addition to the three scripts mentioned in its output, you can see
+that @command{autoreconf} created four other files: @file{configure},
+@file{config.h.in}, @file{Makefile.in}, and @file{src/Makefile.in}.
+The latter three files are templates that will be adapted to the
+system by @command{configure} under the names @file{config.h},
+@file{Makefile}, and @file{src/Makefile}.  Let's do this:
+
+@example
+~/amhello % @kbd{./configure}
+checking for a BSD-compatible install... /usr/bin/install -c
+checking whether build environment is sane... yes
+checking for gawk... no
+checking for mawk... mawk
+checking whether make sets $(MAKE)... yes
+checking for gcc... gcc
+checking for C compiler default output file name... a.out
+checking whether the C compiler works... yes
+checking whether we are cross compiling... no
+checking for suffix of executables...
+checking for suffix of object files... o
+checking whether we are using the GNU C compiler... yes
+checking whether gcc accepts -g... yes
+checking for gcc option to accept ISO C89... none needed
+checking for style of include used by make... GNU
+checking dependency style of gcc... gcc3
+configure: creating ./config.status
+config.status: creating Makefile
+config.status: creating src/Makefile
+config.status: creating config.h
+config.status: executing depfiles commands
+@end example
+
+@trindex distcheck
+@cindex @code{distcheck} example
+
+You can see @file{Makefile}, @file{src/Makefile}, and @file{config.h}
+being created at the end after @command{configure} has probed the
+system.  It is now possible to run all the targets we wish
+(@pxref{Standard Targets}).  For instance:
+
+@example
+~/amhello % @kbd{make}
+@dots{}
+~/amhello % @kbd{src/hello}
+Hello World!
+This is amhello 1.0.
+~/amhello % @kbd{make distcheck}
+@dots{}
+=============================================
+amhello-1.0 archives ready for distribution:
+amhello-1.0.tar.gz
+=============================================
+@end example
+
+Note that running @command{autoreconf} is only needed initially when
+the GNU Build System does not exist.  When you later change some
+instructions in a @file{Makefile.am} or @file{configure.ac}, the
+relevant part of the build system will be regenerated automatically
+when you execute @command{make}.
+
+@command{autoreconf} is a script that calls @command{autoconf},
+@command{automake}, and a bunch of other commands in the right order.
+If you are beginning with these tools, it is not important to figure
+out in which order all these tools should be invoked and why.  However,
+because Autoconf and Automake have separate manuals, the important
+point to understand is that @command{autoconf} is in charge of
+creating @file{configure} from @file{configure.ac}, while
+@command{automake} is in charge of creating @file{Makefile.in}s from
+@file{Makefile.am}s and @file{configure.ac}.  This should at least
+direct you to the right manual when seeking answers.
+
+
+@node amhello's configure.ac Setup Explained
+@subsection @code{amhello}'s @file{configure.ac} Setup Explained
+
+@cindex @file{configure.ac}, Hello World
+
+Let us begin with the contents of @file{configure.ac}.
+
+@example
+AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
+AM_INIT_AUTOMAKE([-Wall -Werror foreign])
+AC_PROG_CC
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([
+ Makefile
+ src/Makefile
+])
+AC_OUTPUT
+@end example
+
+This file is read by both @command{autoconf} (to create
+@file{configure}) and @command{automake} (to create the various
+@file{Makefile.in}s).  It contains a series of M4 macros that will be
+expanded as shell code to finally form the @file{configure} script.
+We will not elaborate on the syntax of this file, because the Autoconf
+manual has a whole section about it (@pxref{Writing Autoconf Input, ,
+Writing @file{configure.ac}, autoconf, The Autoconf Manual}).
+
+The macros prefixed with @code{AC_} are Autoconf macros, documented
+in the Autoconf manual (@pxref{Autoconf Macro Index, , Autoconf Macro
+Index, autoconf, The Autoconf Manual}).  The macros that start with
+@code{AM_} are Automake macros, documented later in this manual
+(@pxref{Macro Index}).
+
+The first two lines of @file{configure.ac} initialize Autoconf and
+Automake.  @code{AC_INIT} takes in as parameters the name of the package,
+its version number, and a contact address for bug-reports about the
+package (this address is output at the end of @code{./configure
+--help}, for instance).  When adapting this setup to your own package,
+by all means please do not blindly copy Automake's address: use the
+mailing list of your package, or your own mail address.
+
+@opindex -Wall
+@opindex -Werror
+@opindex foreign
+
+The argument to @code{AM_INIT_AUTOMAKE} is a list of options for
+@command{automake} (@pxref{Options}).  @option{-Wall} and
+@option{-Werror} ask @command{automake} to turn on all warnings and
+report them as errors.  We are speaking of @strong{Automake} warnings
+here, such as dubious instructions in @file{Makefile.am}.  This has
+absolutely nothing to do with how the compiler will be called, even
+though it may support options with similar names.  Using @option{-Wall
+-Werror} is a safe setting when starting to work on a package: you do
+not want to miss any issues.  Later you may decide to relax things a
+bit.  The @option{foreign} option tells Automake that this package
+will not follow the GNU Standards.  GNU packages should always
+distribute additional files such as @file{ChangeLog}, @file{AUTHORS},
+etc.  We do not want @command{automake} to complain about these
+missing files in our small example.
+
+The @code{AC_PROG_CC} line causes the @command{configure} script to
+search for a C compiler and define the variable @code{CC} with its
+name.  The @file{src/Makefile.in} file generated by Automake uses the
+variable @code{CC} to build @file{hello}, so when @command{configure}
+creates @file{src/Makefile} from @file{src/Makefile.in}, it will define
+@code{CC} with the value it has found.  If Automake is asked to create
+a @file{Makefile.in} that uses @code{CC} but @file{configure.ac} does
+not define it, it will suggest you add a call to @code{AC_PROG_CC}.
+
+The @code{AC_CONFIG_HEADERS([config.h])} invocation causes the
+@command{configure} script to create a @file{config.h} file gathering
+@samp{#define}s defined by other macros in @file{configure.ac}.  In our
+case, the @code{AC_INIT} macro already defined a few of them.  Here
+is an excerpt of @file{config.h} after @command{configure} has run:
+
+@smallexample
+@dots{}
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "@value{PACKAGE_BUGREPORT}"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "amhello 1.0"
+@dots{}
+@end smallexample
+
+As you probably noticed, @file{src/main.c} includes @file{config.h} so
+it can use @code{PACKAGE_STRING}.  In a real-world project,
+@file{config.h} can grow really big, with one @samp{#define} per
+feature probed on the system.
+
+The @code{AC_CONFIG_FILES} macro declares the list of files that
+@command{configure} should create from their @file{*.in} templates.
+Automake also scans this list to find the @file{Makefile.am} files it must
+process.  (This is important to remember: when adding a new directory
+to your project, you should add its @file{Makefile} to this list,
+otherwise Automake will never process the new @file{Makefile.am} you
+wrote in that directory.)
+
+Finally, the @code{AC_OUTPUT} line is a closing command that actually
+produces the part of the script in charge of creating the files
+registered with @code{AC_CONFIG_HEADERS} and @code{AC_CONFIG_FILES}.
+
+@cindex @command{autoscan}
+
+When starting a new project, we suggest you start with such a simple
+@file{configure.ac}, and gradually add the other tests it requires.
+The command @command{autoscan} can also suggest a few of the tests
+your package may need (@pxref{autoscan Invocation, , Using
+@command{autoscan} to Create @file{configure.ac}, autoconf, The
+Autoconf Manual}).
+
+
+@node amhello's Makefile.am Setup Explained
+@subsection @code{amhello}'s @file{Makefile.am} Setup Explained
+
+@cindex @file{Makefile.am}, Hello World
+
+We now turn to @file{src/Makefile.am}.  This file contains
+Automake instructions to build and install @file{hello}.
+
+@example
+bin_PROGRAMS = hello
+hello_SOURCES = main.c
+@end example
+
+A @file{Makefile.am} has the same syntax as an ordinary
+@file{Makefile}.  When @command{automake} processes a
+@file{Makefile.am} it copies the entire file into the output
+@file{Makefile.in} (that will be later turned into @file{Makefile} by
+@command{configure}) but will react to certain variable definitions
+by generating some build rules and other variables.
+Often @file{Makefile.am}s contain only a list of variable definitions as
+above, but they can also contain other variable and rule definitions that
+@command{automake} will pass along without interpretation.
+
+Variables that end with @code{_PROGRAMS} are special variables
+that list programs that the resulting @file{Makefile} should build.
+In Automake speak, this @code{_PROGRAMS} suffix is called a
+@dfn{primary}; Automake recognizes other primaries such as
+@code{_SCRIPTS}, @code{_DATA}, @code{_LIBRARIES}, etc.@: corresponding
+to different types of files.
+
+The @samp{bin} part of the @code{bin_PROGRAMS} tells
+@command{automake} that the resulting programs should be installed in
+@var{bindir}.  Recall that the GNU Build System uses a set of variables
+to denote destination directories and allow users to customize these
+locations (@pxref{Standard Directory Variables}).  Any such directory
+variable can be put in front of a primary (omitting the @code{dir}
+suffix) to tell @command{automake} where to install the listed files.
+
+Programs need to be built from source files, so for each program
+@code{@var{prog}} listed in a @code{@w{_PROGRAMS}} variable,
+@command{automake} will look for another variable named
+@code{@var{prog}_SOURCES} listing its source files.  There may be more
+than one source file: they will all be compiled and linked together.
+
+Automake also knows that source files need to be distributed when
+creating a tarball (unlike built programs).  So a side-effect of this
+@code{hello_SOURCES} declaration is that @file{main.c} will be
+part of the tarball created by @code{make dist}.
+
+Finally here are some explanations regarding the top-level
+@file{Makefile.am}.
+
+@example
+SUBDIRS = src
+dist_doc_DATA = README
+@end example
+
+@code{SUBDIRS} is a special variable listing all directories that
+@command{make} should recurse into before processing the current
+directory.  So this line is responsible for @command{make} building
+@file{src/hello} even though we run it from the top-level.  This line
+also causes @code{make install} to install @file{src/hello} before
+installing @file{README} (not that this order matters).
+
+The line @code{dist_doc_DATA = README} causes @file{README} to be
+distributed and installed in @var{docdir}.  Files listed with the
+@code{_DATA} primary are not automatically part of the tarball built
+with @code{make dist}, so we add the @code{dist_} prefix so they get
+distributed.  However, for @file{README} it would not have been
+necessary: @command{automake} automatically distributes any
+@file{README} file it encounters (the list of other files
+automatically distributed is presented by @code{automake --help}).
+The only important effect of this second line is therefore to install
+@file{README} during @code{make install}.
+
+One thing not covered in this example is accessing the installation
+directory values (@pxref{Standard Directory Variables}) from your
+program code, that is, converting them into defined macros.  For this,
+@pxref{Defining Directories,,, autoconf, The Autoconf Manual}.
+
+
+@node Generalities
+@chapter General ideas
+
+The following sections cover a few basic ideas that will help you
+understand how Automake works.
+
+@menu
+* General Operation::           General operation of Automake
+* Strictness::                  Standards conformance checking
+* Uniform::                     The Uniform Naming Scheme
+* Length Limitations::          Staying below the command line length limit
+* Canonicalization::            How derived variables are named
+* User Variables::              Variables reserved for the user
+* Auxiliary Programs::          Programs automake might require
+@end menu
+
+
+@node General Operation
+@section General Operation
+
+Automake works by reading a @file{Makefile.am} and generating a
+@file{Makefile.in}.  Certain variables and rules defined in the
+@file{Makefile.am} instruct Automake to generate more specialized code;
+for instance, a @code{bin_PROGRAMS} variable definition will cause rules
+for compiling and linking programs to be generated.
+
+@cindex Non-standard targets
+@cindex @code{git-dist}, non-standard example
+@trindex git-dist
+
+The variable definitions and rules in the @file{Makefile.am} are
+copied mostly verbatim into the generated file, with all variable
+definitions preceding all rules.  This allows you to add almost
+arbitrary code into the generated @file{Makefile.in}.  For instance,
+the Automake distribution includes a non-standard rule for the
+@code{git-dist} target, which the Automake maintainer uses to make
+distributions from the source control system.
+
+@cindex GNU make extensions
+
+Note that most GNU make extensions are not recognized by Automake.  Using
+such extensions in a @file{Makefile.am} will lead to errors or confusing
+behavior.
+
+@cindex Append operator
+@cmindex +=
+A special exception is that the GNU make append operator, @samp{+=}, is
+supported.  This operator appends its right hand argument to the variable
+specified on the left.  Automake will translate the operator into
+an ordinary @samp{=} operator; @samp{+=} will thus work with any make program.
+
+Automake tries to keep comments grouped with any adjoining rules or
+variable definitions.
+
+@cindex Limitations of automake parser
+@cindex Automake parser, limitations of
+@cindex indentation in Makefile.am
+Generally, Automake is not particularly smart in the parsing of unusual
+Makefile constructs, so you're advised to avoid fancy constructs or
+``creative'' use of whitespaces.
+@c Keep this in sync with doc-parsing-buglets-tabs.sh
+For example, @key{TAB} characters cannot be used between a target name
+and the following ``@code{:}'' character, and variable assignments
+shouldn't be indented with @key{TAB} characters.
+@c Keep this in sync with doc-parsing-buglets-colneq-subst.sh
+Also, using more complex macro in target names can cause trouble:
+
+@example
+% @kbd{cat Makefile.am}
+$(FOO:=x): bar
+% @kbd{automake}
+Makefile.am:1: bad characters in variable name `$(FOO'
+Makefile.am:1: `:='-style assignments are not portable
+@end example
+
+@cindex Make targets, overriding
+@cindex Make rules, overriding
+@cindex Overriding make rules
+@cindex Overriding make targets
+
+A rule defined in @file{Makefile.am} generally overrides any such
+rule of a similar name that would be automatically generated by
+@command{automake}.  Although this is a supported feature, it is generally
+best to avoid making use of it, as sometimes the generated rules are
+very particular.
+
+@cindex Variables, overriding
+@cindex Overriding make variables
+
+Similarly, a variable defined in @file{Makefile.am} or
+@code{AC_SUBST}ed from @file{configure.ac} will override any
+definition of the variable that @command{automake} would ordinarily
+create.  This feature is more often useful than the ability to
+override a rule.  Be warned that many of the variables generated by
+@command{automake} are considered to be for internal use only, and their
+names might change in future releases.
+
+@cindex Recursive operation of Automake
+@cindex Automake, recursive operation
+@cindex Example of recursive operation
+
+When examining a variable definition, Automake will recursively examine
+variables referenced in the definition.  For example, if Automake is
+looking at the content of @code{foo_SOURCES} in this snippet
+
+@c Keep in sync with interp.sh
+@example
+xs = a.c b.c
+foo_SOURCES = c.c $(xs)
+@end example
+
+it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
+contents of @code{foo_SOURCES}.
+
+@cindex @code{##} (special Automake comment)
+@cindex Special Automake comment
+@cindex Comment, special to Automake
+
+Automake also allows a form of comment that is @emph{not} copied into
+the output; all lines beginning with @samp{##} (leading spaces allowed)
+are completely ignored by Automake.
+
+It is customary to make the first line of @file{Makefile.am} read:
+
+@cindex Makefile.am, first line
+@cindex First line of Makefile.am
+
+@example
+## Process this file with automake to produce Makefile.in
+@end example
+
+@c FIXME discuss putting a copyright into Makefile.am here?  I would but
+@c I don't know quite what to say.
+
+@c FIXME document customary ordering of Makefile.am here!
+
+
+@node Strictness
+@section Strictness
+
+@cindex Non-GNU packages
+
+While Automake is intended to be used by maintainers of GNU packages, it
+does make some effort to accommodate those who wish to use it, but do
+not want to use all the GNU conventions.
+
+@cindex Strictness, defined
+@cindex Strictness, @option{foreign}
+@cindex @option{foreign} strictness
+@cindex Strictness, @option{gnu}
+@cindex @option{gnu} strictness
+@cindex Strictness, @option{gnits}
+@cindex @option{gnits} strictness
+
+To this end, Automake supports three levels of @dfn{strictness}---the
+strictness indicating how stringently Automake should check standards
+conformance.
+
+The valid strictness levels are:
+
+@table @option
+@item foreign
+Automake will check for only those things that are absolutely
+required for proper operations.  For instance, whereas GNU standards
+dictate the existence of a @file{NEWS} file, it will not be required in
+this mode.  This strictness will also turn off some warnings by default
+(among them, portability warnings).
+The name comes from the fact that Automake is intended to be
+used for GNU programs; these relaxed rules are not the standard mode of
+operation.
+
+@item gnu
+Automake will check---as much as possible---for compliance to the GNU
+standards for packages.  This is the default.
+
+@item gnits
+Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
+standards}.  These are based on the GNU standards, but are even more
+detailed.  Unless you are a Gnits standards contributor, it is
+recommended that you avoid this option until such time as the Gnits
+standard is actually published (which may never happen).
+@end table
+
+@xref{Gnits}, for more information on the precise implications of the
+strictness level.
+
+Automake also has a special (and @emph{today deprecated}) ``cygnus'' mode
+that is similar to strictness but handled differently.  This mode is
+useful for packages that are put into a ``Cygnus'' style tree (e.g., older
+versions of the GCC and gdb trees).  @xref{Cygnus}, for more information
+on this mode.  Please note that this mode @emph{is deprecated and will be
+removed in the next major Automake release (1.13)}; you must avoid its use
+in new packages, and should stop using it in existing packages as well.
+
+
+@node Uniform
+@section The Uniform Naming Scheme
+
+@cindex Uniform naming scheme
+
+Automake variables generally follow a @dfn{uniform naming scheme} that
+makes it easy to decide how programs (and other derived objects) are
+built, and how they are installed.  This scheme also supports
+@command{configure} time determination of what should be built.
+
+@cindex @code{_PROGRAMS} primary variable
+@cindex @code{PROGRAMS} primary variable
+@cindex Primary variable, @code{PROGRAMS}
+@cindex Primary variable, defined
+@vindex _PROGRAMS
+
+At @command{make} time, certain variables are used to determine which
+objects are to be built.  The variable names are made of several pieces
+that are concatenated together.
+
+The piece that tells @command{automake} what is being built is commonly called
+the @dfn{primary}.  For instance, the primary @code{PROGRAMS} holds a
+list of programs that are to be compiled and linked.
+@vindex PROGRAMS
+
+@cindex @code{pkgdatadir}, defined
+@cindex @code{pkgincludedir}, defined
+@cindex @code{pkglibdir}, defined
+@cindex @code{pkglibexecdir}, defined
+
+@vindex pkgdatadir
+@vindex pkgincludedir
+@vindex pkglibdir
+@vindex pkglibexecdir
+
+@cindex @code{PACKAGE}, directory
+A different set of names is used to decide where the built objects
+should be installed.  These names are prefixes to the primary, and they
+indicate which standard directory should be used as the installation
+directory.  The standard directory names are given in the GNU standards
+(@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
+Automake extends this list with @code{pkgdatadir}, @code{pkgincludedir},
+@code{pkglibdir}, and @code{pkglibexecdir}; these are the same as the
+non-@samp{pkg} versions, but with @samp{$(PACKAGE)} appended.  For instance,
+@code{pkglibdir} is defined as @samp{$(libdir)/$(PACKAGE)}.
+
+@cindex @code{EXTRA_}, prepending
+For each primary, there is one additional variable named by prepending
+@samp{EXTRA_} to the primary name.  This variable is used to list
+objects that may or may not be built, depending on what
+@command{configure} decides.  This variable is required because Automake
+must statically know the entire list of objects that may be built in
+order to generate a @file{Makefile.in} that will work in all cases.
+
+@cindex @code{EXTRA_PROGRAMS}, defined
+@cindex Example, @code{EXTRA_PROGRAMS}
+@cindex @command{cpio} example
+
+For instance, @command{cpio} decides at configure time which programs
+should be built.  Some of the programs are installed in @code{bindir},
+and some are installed in @code{sbindir}:
+
+@example
+EXTRA_PROGRAMS = mt rmt
+bin_PROGRAMS = cpio pax
+sbin_PROGRAMS = $(MORE_PROGRAMS)
+@end example
+
+Defining a primary without a prefix as a variable, e.g.,
+@samp{PROGRAMS}, is an error.
+
+Note that the common @samp{dir} suffix is left off when constructing the
+variable names; thus one writes @samp{bin_PROGRAMS} and not
+@samp{bindir_PROGRAMS}.
+
+Not every sort of object can be installed in every directory.  Automake
+will flag those attempts it finds in error (but see below how to override
+the check if you really need to).
+Automake will also diagnose obvious misspellings in directory names.
+
+@cindex Extending list of installation directories
+@cindex Installation directories, extending list
+
+Sometimes the standard directories---even as augmented by
+Automake---are not enough.  In particular it is sometimes useful, for
+clarity, to install objects in a subdirectory of some predefined
+directory.  To this end, Automake allows you to extend the list of
+possible installation directories.  A given prefix (e.g., @samp{zar})
+is valid if a variable of the same name with @samp{dir} appended is
+defined (e.g., @samp{zardir}).
+
+For instance, the following snippet will install @file{file.xml} into
+@samp{$(datadir)/xml}.
+
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@example
+xmldir = $(datadir)/xml
+xml_DATA = file.xml
+@end example
+
+This feature can also be used to override the sanity checks Automake
+performs to diagnose suspicious directory/primary couples (in the
+unlikely case these checks are undesirable, and you really know what
+you're doing).  For example, Automake would error out on this input:
+
+@c Should be tested in primary-prefix-invalid-couples.sh
+@example
+# Forbidden directory combinations, automake will error out on this.
+pkglib_PROGRAMS = foo
+doc_LIBRARIES = libquux.a
+@end example
+
+@noindent
+but it will succeed with this:
+
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@example
+# Work around forbidden directory combinations.  Do not use this
+# without a very good reason!
+my_execbindir = $(pkglibdir)
+my_doclibdir = $(docdir)
+my_execbin_PROGRAMS = foo
+my_doclib_LIBRARIES = libquux.a
+@end example
+
+The @samp{exec} substring of the @samp{my_execbindir} variable lets
+the files be installed at the right time (@pxref{The Two Parts of
+Install}).
+
+@cindex @samp{noinst_} primary prefix, definition
+@vindex noinst_
+
+The special prefix @samp{noinst_} indicates that the objects in question
+should be built but not installed at all.  This is usually used for
+objects required to build the rest of your package, for instance static
+libraries (@pxref{A Library}), or helper scripts.
+
+@cindex @samp{check_} primary prefix, definition
+@vindex check_
+
+The special prefix @samp{check_} indicates that the objects in question
+should not be built until the @samp{make check} command is run.  Those
+objects are not installed either.
+
+The current primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
+@samp{LTLIBRARIES}, @samp{LISP}, @samp{PYTHON}, @samp{JAVA},
+@samp{SCRIPTS}, @samp{DATA}, @samp{HEADERS}, @samp{MANS}, and
+@samp{TEXINFOS}.
+@vindex PROGRAMS
+@vindex LIBRARIES
+@vindex LTLIBRARIES
+@vindex LISP
+@vindex PYTHON
+@vindex JAVA
+@vindex SCRIPTS
+@vindex DATA
+@vindex HEADERS
+@vindex MANS
+@vindex TEXINFOS
+
+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}).
+
+
+@node Length Limitations
+@section Staying below the command line length limit
+
+@cindex command line length limit
+@cindex ARG_MAX
+
+Traditionally, most unix-like systems have a length limitation for the
+command line arguments and environment contents when creating new
+processes (see for example
+@uref{http://www.in-ulm.de/@/~mascheck/@/various/@/argmax/} for an
+overview on this issue),
+which of course also applies to commands spawned by @command{make}.
+POSIX requires this limit to be at least 4096 bytes, and most modern
+systems have quite high limits (or are unlimited).
+
+In order to create portable Makefiles that do not trip over these
+limits, it is necessary to keep the length of file lists bounded.
+Unfortunately, it is not possible to do so fully transparently within
+Automake, so your help may be needed.  Typically, you can split long
+file lists manually and use different installation directory names for
+each list.  For example,
+
+@example
+data_DATA = file1 @dots{} file@var{N} file@var{N+1} @dots{} file@var{2N}
+@end example
+
+@noindent
+may also be written as
+
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@example
+data_DATA = file1 @dots{} file@var{N}
+data2dir = $(datadir)
+data2_DATA = file@var{N+1} @dots{} file@var{2N}
+@end example
+
+@noindent
+and will cause Automake to treat the two lists separately during
+@code{make 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 @samp{$@{srcdir@}/} is prepended to file
+names, as can happen with above @code{$(data_DATA)} lists, it limits
+the amount of arguments passed to external commands.
+
+Unfortunately, some system's @command{make} commands may prepend
+@code{VPATH} prefixes like @samp{$@{srcdir@}/} to file names from the
+source tree automatically (@pxref{Automatic Rule Rewriting, , Automatic
+Rule Rewriting, autoconf, The Autoconf Manual}).  In this case, the user
+may have to switch to use GNU Make, or refrain from using VPATH builds,
+in order to stay below the length limit.
+
+For libraries and programs built from many sources, convenience archives
+may be used as intermediates in order to limit the object list length
+(@pxref{Libtool Convenience Libraries}).
+
+
+@node Canonicalization
+@section How derived variables are named
+
+@cindex canonicalizing Automake variables
+
+Sometimes a Makefile variable name is derived from some text the
+maintainer supplies.  For instance, a program name listed in
+@samp{_PROGRAMS} is rewritten into the name of a @samp{_SOURCES}
+variable.  In cases like this, Automake canonicalizes the text, so that
+program names and the like do not have to follow Makefile variable naming
+rules.  All characters in the name except for letters, numbers, the
+strudel (@@), and the underscore are turned into underscores when making
+variable references.
+
+For example, if your program is named @file{sniff-glue}, the derived
+variable name would be @samp{sniff_glue_SOURCES}, not
+@samp{sniff-glue_SOURCES}.  Similarly the sources for a library named
+@file{libmumble++.a} should be listed in the
+@samp{libmumble___a_SOURCES} variable.
+
+The strudel is an addition, to make the use of Autoconf substitutions in
+variable names less obfuscating.
+
+
+@node User Variables
+@section Variables reserved for the user
+
+@cindex variables, reserved for the user
+@cindex user variables
+
+Some @file{Makefile} variables are reserved by the GNU Coding Standards
+for the use of the ``user''---the person building the package.  For
+instance, @code{CFLAGS} is one such variable.
+
+Sometimes package developers are tempted to set user variables such as
+@code{CFLAGS} because it appears to make their job easier.  However,
+the package itself should never set a user variable, particularly not
+to include switches that are required for proper compilation of the
+package.  Since these variables are documented as being for the
+package builder, that person rightfully expects to be able to override
+any of these variables at build time.
+
+To get around this problem, Automake introduces an automake-specific
+shadow variable for each user flag variable.  (Shadow variables are
+not introduced for variables like @code{CC}, where they would make no
+sense.)  The shadow variable is named by prepending @samp{AM_} to the
+user variable's name.  For instance, the shadow variable for
+@code{YFLAGS} is @code{AM_YFLAGS}.  The package maintainer---that is,
+the author(s) of the @file{Makefile.am} and @file{configure.ac}
+files---may adjust these shadow variables however necessary.
+
+@xref{Flag Variables Ordering}, for more discussion about these
+variables and how they interact with per-target variables.
+
+@node Auxiliary Programs
+@section Programs automake might require
+
+@cindex Programs, auxiliary
+@cindex Auxiliary programs
+
+Automake sometimes requires helper programs so that the generated
+@file{Makefile} can do its work properly.  There are a fairly large
+number of them, and we list them here.
+
+Although all of these files are distributed and installed with
+Automake, a couple of them are maintained separately.  The Automake
+copies are updated before each release, but we mention the original
+source in case you need more recent versions.
+
+@table @code
+@item ar-lib
+This is a wrapper primarily for the Microsoft lib archiver, to make
+it more POSIX-like.
+
+@item compile
+This is a wrapper for compilers that do not accept options @option{-c}
+and @option{-o} at the same time.  It is only used when absolutely
+required.  Such compilers are rare, with the Microsoft C/C++ Compiler
+as the most notable exception. This wrapper also makes the following
+common options available for that compiler, while performing file name
+translation where needed: @option{-I}, @option{-L}, @option{-l},
+@option{-Wl,} and @option{-Xlinker}.
+
+@item config.guess
+@itemx config.sub
+These two programs compute the canonical triplets for the given build,
+host, or target architecture.  These programs are updated regularly to
+support new architectures and fix probes broken by changes in new
+kernel versions.  Each new release of Automake comes with up-to-date
+copies of these programs.  If your copy of Automake is getting old,
+you are encouraged to fetch the latest versions of these files from
+@url{http://savannah.gnu.org/git/?group=config} before making a
+release.
+
+@item depcomp
+This program understands how to run a compiler so that it will
+generate not only the desired output but also dependency information
+that is then used by the automatic dependency tracking feature
+(@pxref{Dependencies}).
+
+@item elisp-comp
+This program is used to byte-compile Emacs Lisp code.
+
+@item install-sh
+This is a replacement for the @command{install} program that works on
+platforms where @command{install} is unavailable or unusable.
+
+@item mdate-sh
+This script is used to generate a @file{version.texi} file.  It examines
+a file and prints some date information about it.
+
+@item missing
+This wraps a number of programs that are typically only required by
+maintainers.  If the program in question doesn't exist,
+@command{missing} prints an informative warning and attempts to fix
+things so that the build can continue.
+
+@item mkinstalldirs
+This script used to be a wrapper around @samp{mkdir -p}, which is not
+portable.  Now we prefer to use @samp{install-sh -d} when @command{configure}
+finds that @samp{mkdir -p} does not work, this makes one less script to
+distribute.
+
+For backward compatibility @file{mkinstalldirs} is still used and
+distributed when @command{automake} finds it in a package.  But it is no
+longer installed automatically, and it should be safe to remove it.
+
+@item py-compile
+This is used to byte-compile Python scripts.
+
+@item test-driver
+This implements the default test driver offered by the parallel
+testsuite harness.
+
+@item texinfo.tex
+Not a program, this file is required for @samp{make dvi}, @samp{make
+ps} and @samp{make pdf} to work when Texinfo sources are in the
+package.  The latest version can be downloaded from
+@url{http://www.gnu.org/software/texinfo/}.
+
+@item ylwrap
+This program wraps @command{lex} and @command{yacc} to rename their
+output files.  It also ensures that, for instance, multiple
+@command{yacc} instances can be invoked in a single directory in
+parallel.
+
+@end table
+
+
+@node Examples
+@chapter Some example packages
+
+This section contains two small examples.
+
+The first example (@pxref{Complete}) assumes you have an existing
+project already using Autoconf, with handcrafted @file{Makefile}s, and
+that you want to convert it to using Automake.  If you are discovering
+both tools, it is probably better that you look at the Hello World
+example presented earlier (@pxref{Hello World}).
+
+The second example (@pxref{true}) shows how two programs can be built
+from the same file, using different compilation parameters.  It
+contains some technical digressions that are probably best skipped on
+first read.
+
+@menu
+* Complete::                    A simple example, start to finish
+* true::                        Building true and false
+@end menu
+
+
+@node Complete
+@section A simple example, start to finish
+
+@cindex Complete example
+
+Let's suppose you just finished writing @code{zardoz}, a program to make
+your head float from vortex to vortex.  You've been using Autoconf to
+provide a portability framework, but your @file{Makefile.in}s have been
+ad-hoc.  You want to make them bulletproof, so you turn to Automake.
+
+@cindex @code{AM_INIT_AUTOMAKE}, example use
+
+The first step is to update your @file{configure.ac} to include the
+commands that @command{automake} needs.  The way to do this is to add an
+@code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
+
+@example
+AC_INIT([zardoz], [1.0])
+AM_INIT_AUTOMAKE
+@dots{}
+@end example
+
+Since your program doesn't have any complicating factors (e.g., it
+doesn't use @code{gettext}, it doesn't want to build a shared library),
+you're done with this part.  That was easy!
+
+@cindex @command{aclocal} program, introduction
+@cindex @file{aclocal.m4}, preexisting
+@cindex @file{acinclude.m4}, defined
+
+Now you must regenerate @file{configure}.  But to do that, you'll need
+to tell @command{autoconf} how to find the new macro you've used.  The
+easiest way to do this is to use the @command{aclocal} program to
+generate your @file{aclocal.m4} for you.  But wait@dots{} maybe you
+already have an @file{aclocal.m4}, because you had to write some hairy
+macros for your program.  The @command{aclocal} program lets you put
+your own macros into @file{acinclude.m4}, so simply rename and then
+run:
+
+@example
+mv aclocal.m4 acinclude.m4
+aclocal
+autoconf
+@end example
+
+@cindex @command{zardoz} example
+
+Now it is time to write your @file{Makefile.am} for @code{zardoz}.
+Since @code{zardoz} is a user program, you want to install it where the
+rest of the user programs go: @code{bindir}.  Additionally,
+@code{zardoz} has some Texinfo documentation.  Your @file{configure.ac}
+script uses @code{AC_REPLACE_FUNCS}, so you need to link against
+@samp{$(LIBOBJS)}.  So here's what you'd write:
+
+@example
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
+zardoz_LDADD = $(LIBOBJS)
+
+info_TEXINFOS = zardoz.texi
+@end example
+
+Now you can run @samp{automake --add-missing} to generate your
+@file{Makefile.in} and grab any auxiliary files you might need, and
+you're done!
+
+
+@node true
+@section Building true and false
+
+@cindex Example, @command{false} and @command{true}
+@cindex @command{false} Example
+@cindex @command{true} Example
+
+Here is another, trickier example.  It shows how to generate two
+programs (@code{true} and @code{false}) from the same source file
+(@file{true.c}).  The difficult part is that each compilation of
+@file{true.c} requires different @code{cpp} flags.
+
+@example
+bin_PROGRAMS = true false
+false_SOURCES =
+false_LDADD = false.o
+
+true.o: true.c
+        $(COMPILE) -DEXIT_CODE=0 -c true.c
+
+false.o: true.c
+        $(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c
+@end example
+
+Note that there is no @code{true_SOURCES} definition.  Automake will
+implicitly assume that there is a source file named @file{true.c}
+(@pxref{Default _SOURCES}), and
+define rules to compile @file{true.o} and link @file{true}.  The
+@samp{true.o: true.c} rule supplied by the above @file{Makefile.am},
+will override the Automake generated rule to build @file{true.o}.
+
+@code{false_SOURCES} is defined to be empty---that way no implicit value
+is substituted.  Because we have not listed the source of
+@file{false}, we have to tell Automake how to link the program.  This is
+the purpose of the @code{false_LDADD} line.  A @code{false_DEPENDENCIES}
+variable, holding the dependencies of the @file{false} target will be
+automatically generated by Automake from the content of
+@code{false_LDADD}.
+
+The above rules won't work if your compiler doesn't accept both
+@option{-c} and @option{-o}.  The simplest fix for this is to introduce a
+bogus dependency (to avoid problems with a parallel @command{make}):
+
+@example
+true.o: true.c false.o
+        $(COMPILE) -DEXIT_CODE=0 -c true.c
+
+false.o: true.c
+        $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o
+@end example
+
+As it turns out, there is also a much easier way to do this same task.
+Some of the above technique is useful enough that we've kept the
+example in the manual.  However if you were to build @code{true} and
+@code{false} in real life, you would probably use per-program
+compilation flags, like so:
+
+@c Keep in sync with specflg7.sh and specflg8.sh
+@example
+bin_PROGRAMS = false true
+
+false_SOURCES = true.c
+false_CPPFLAGS = -DEXIT_CODE=1
+
+true_SOURCES = true.c
+true_CPPFLAGS = -DEXIT_CODE=0
+@end example
+
+In this case Automake will cause @file{true.c} to be compiled twice,
+with different flags.  In this instance, the names of the object files
+would be chosen by automake; they would be @file{false-true.o} and
+@file{true-true.o}. (The name of the object files rarely matters.)
+
+@node automake Invocation
+@chapter Creating a @file{Makefile.in}
+@c This node used to be named "Invoking automake".  This @anchor
+@c allows old links to still work.
+@anchor{Invoking automake}
+
+@cindex Multiple @file{configure.ac} files
+@cindex Invoking @command{automake}
+@cindex @command{automake}, invoking
+@cindex Invocation of @command{automake}
+@cindex @command{automake}, invocation
+
+To create all the @file{Makefile.in}s for a package, run the
+@command{automake} program in the top level directory, with no
+arguments.  @command{automake} will automatically find each
+appropriate @file{Makefile.am} (by scanning @file{configure.ac};
+@pxref{configure}) and generate the corresponding @file{Makefile.in}.
+Note that @command{automake} has a rather simplistic view of what
+constitutes a package; it assumes that a package has only one
+@file{configure.ac}, at the top.  If your package has multiple
+@file{configure.ac}s, then you must run @command{automake} in each
+directory holding a @file{configure.ac}.  (Alternatively, you may rely
+on Autoconf's @command{autoreconf}, which is able to recurse your
+package tree and run @command{automake} where appropriate.)
+
+You can optionally give @command{automake} an argument; @file{.am} is
+appended to the argument and the result is used as the name of the
+input file.  This feature is generally only used to automatically
+rebuild an out-of-date @file{Makefile.in}.  Note that
+@command{automake} must always be run from the topmost directory of a
+project, even if being used to regenerate the @file{Makefile.in} in
+some subdirectory.  This is necessary because @command{automake} must
+scan @file{configure.ac}, and because @command{automake} uses the
+knowledge that a @file{Makefile.in} is in a subdirectory to change its
+behavior in some cases.
+
+@vindex AUTOCONF
+Automake will run @command{autoconf} to scan @file{configure.ac} and
+its dependencies (i.e., @file{aclocal.m4} and any included file),
+therefore @command{autoconf} must be in your @env{PATH}.  If there is
+an @env{AUTOCONF} variable in your environment it will be used
+instead of @command{autoconf}, this allows you to select a particular
+version of Autoconf.  By the way, don't misunderstand this paragraph:
+@command{automake} runs @command{autoconf} to @strong{scan} your
+@file{configure.ac}, this won't build @file{configure} and you still
+have to run @command{autoconf} yourself for this purpose.
+
+@cindex @command{automake} options
+@cindex Options, @command{automake}
+@cindex Strictness, command line
+
+@command{automake} accepts the following options:
+
+@cindex Extra files distributed with Automake
+@cindex Files distributed with Automake
+@cindex @file{config.guess}
+
+@table @code
+@item -a
+@itemx --add-missing
+@opindex -a
+@opindex --add-missing
+Automake requires certain common files to exist in certain situations;
+for instance, @file{config.guess} is required if @file{configure.ac} invokes
+@code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
+files (@pxref{Auxiliary Programs}); this option will cause the missing
+ones to be automatically added to the package, whenever possible.  In
+general if Automake tells you a file is missing, try using this option.
+By default Automake tries to make a symbolic link pointing to its own
+copy of the missing file; this can be changed with @option{--copy}.
+
+Many of the potentially-missing files are common scripts whose
+location may be specified via the @code{AC_CONFIG_AUX_DIR} macro.
+Therefore, @code{AC_CONFIG_AUX_DIR}'s setting affects whether a
+file is considered missing, and where the missing file is added
+(@pxref{Optional}).
+
+In some strictness modes, additional files are installed, see @ref{Gnits}
+for more information.
+
+@item --libdir=@var{dir}
+@opindex --libdir
+Look for Automake data files in directory @var{dir} instead of in the
+installation directory.  This is typically used for debugging.
+
+@item --print-libdir
+@opindex --print-libdir
+Print the path of the installation directory containing Automake-provided
+scripts and data files (like e.g., @file{texinfo.texi} and
+@file{install-sh}).
+
+@item -c
+@opindex -c
+@itemx --copy
+@opindex --copy
+When used with @option{--add-missing}, causes installed files to be
+copied.  The default is to make a symbolic link.
+
+@item --cygnus
+@opindex --cygnus
+Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
+of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
+Note that @emph{this mode of operation is deprecated, and will be removed}
+in the next major Automake release (1.13).
+
+@item -f
+@opindex -f
+@itemx --force-missing
+@opindex --force-missing
+When used with @option{--add-missing}, causes standard files to be reinstalled
+even if they already exist in the source tree.  This involves removing
+the file from the source tree before creating the new symlink (or, with
+@option{--copy}, copying the new file).
+
+@item --foreign
+@opindex --foreign
+Set the global strictness to @option{foreign}.  For more information, see
+@ref{Strictness}.
+
+@item --gnits
+@opindex --gnits
+Set the global strictness to @option{gnits}.  For more information, see
+@ref{Gnits}.
+
+@item --gnu
+@opindex --gnu
+Set the global strictness to @option{gnu}.  For more information, see
+@ref{Gnits}.  This is the default strictness.
+
+@item --help
+@opindex --help
+Print a summary of the command line options and exit.
+
+@item -i
+@itemx --ignore-deps
+@opindex -i
+This disables the dependency tracking feature in generated
+@file{Makefile}s; see @ref{Dependencies}.
+
+@item --include-deps
+@opindex --include-deps
+This enables the dependency tracking feature.  This feature is enabled
+by default.  This option is provided for historical reasons only and
+probably should not be used.
+
+@item --no-force
+@opindex --no-force
+Ordinarily @command{automake} creates all @file{Makefile.in}s mentioned in
+@file{configure.ac}.  This option causes it to only update those
+@file{Makefile.in}s that are out of date with respect to one of their
+dependents.
+
+@item -o @var{dir}
+@itemx --output-dir=@var{dir}
+@opindex -o
+@opindex --output-dir
+Put the generated @file{Makefile.in} in the directory @var{dir}.
+Ordinarily each @file{Makefile.in} is created in the directory of the
+corresponding @file{Makefile.am}.  This option is deprecated and will be
+removed in a future release.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Cause Automake to print information about which files are being read or
+created.
+
+@item --version
+@opindex --version
+Print the version number of Automake and exit.
+
+@item -W CATEGORY
+@itemx --warnings=@var{category}
+@opindex -W
+@opindex --warnings
+Output warnings falling in @var{category}.  @var{category} can be
+one of:
+@table @code
+@item gnu
+warnings related to the GNU Coding Standards
+(@pxref{Top, , , standards, The GNU Coding Standards}).
+@item obsolete
+obsolete features or constructions
+@item override
+user redefinitions of Automake rules or variables
+@item portability
+portability issues (e.g., use of @command{make} features that are
+known to be not portable)
+@item extra-portability
+extra portability issues related to obscure tools.  One example of such
+a tool is the Microsoft @command{lib} archiver.
+@item syntax
+weird syntax, unused variables, typos
+@item unsupported
+unsupported or incomplete features
+@item all
+all the warnings
+@item none
+turn off all the warnings
+@item error
+treat warnings as errors
+@end table
+
+A category can be turned off by prefixing its name with @samp{no-}.  For
+instance, @option{-Wno-syntax} will hide the warnings about unused
+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.
+
+@c Checked by extra-portability.sh
+Turning off @samp{portability} will also turn off @samp{extra-portability},
+and similarly turning on @samp{extra-portability} will also turn on
+@samp{portability}.  However, turning on @samp{portability} or turning
+off @samp{extra-portability} will not affect the other category.
+
+@vindex WARNINGS
+The environment variable @env{WARNINGS} can contain a comma separated
+list of categories to enable.  It will be taken into account before the
+command-line switches, this way @option{-Wnone} will also ignore any
+warning category enabled by @env{WARNINGS}.  This variable is also used
+by other tools like @command{autoconf}; unknown categories are ignored
+for this reason.
+
+@end table
+
+@vindex AUTOMAKE_JOBS
+If the environment variable @env{AUTOMAKE_JOBS} contains a positive
+number, it is taken as the maximum number of Perl threads to use in
+@command{automake} for generating multiple @file{Makefile.in} files
+concurrently.  This is an experimental feature.
+
+
+@node configure
+@chapter Scanning @file{configure.ac}, using @command{aclocal}
+
+@cindex @file{configure.ac}, scanning
+@cindex Scanning @file{configure.ac}
+@cindex Using @command{aclocal}
+@cindex @command{aclocal}, using
+
+Automake scans the package's @file{configure.ac} to determine certain
+information about the package.  Some @command{autoconf} macros are required
+and some variables must be defined in @file{configure.ac}.  Automake
+will also use information from @file{configure.ac} to further tailor its
+output.
+
+Automake also supplies some Autoconf macros to make the maintenance
+easier.  These macros can automatically be put into your
+@file{aclocal.m4} using the @command{aclocal} program.
+
+@menu
+* Requirements::                Configuration requirements
+* Optional::                    Other things Automake recognizes
+* aclocal Invocation::          Auto-generating aclocal.m4
+* Macros::                      Autoconf macros supplied with Automake
+@end menu
+
+
+@node Requirements
+@section Configuration requirements
+
+@cindex Automake requirements
+@cindex Requirements of Automake
+
+@acindex AM_INIT_AUTOMAKE
+The one real requirement of Automake is that your @file{configure.ac}
+call @code{AM_INIT_AUTOMAKE}.  This macro does several things that are
+required for proper Automake operation (@pxref{Macros}).
+
+Here are the other macros that Automake requires but which are not run
+by @code{AM_INIT_AUTOMAKE}:
+
+@table @code
+@item AC_CONFIG_FILES
+@itemx AC_OUTPUT
+@acindex AC_CONFIG_FILES
+@acindex AC_OUTPUT
+These two macros are usually invoked as follows near the end of
+@file{configure.ac}.
+
+@example
+@dots{}
+AC_CONFIG_FILES([
+  Makefile
+  doc/Makefile
+  src/Makefile
+  src/lib/Makefile
+  @dots{}
+])
+AC_OUTPUT
+@end example
+
+Automake uses these to determine which files to create (@pxref{Output, ,
+Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
+is considered to be an Automake generated @file{Makefile} if there
+exists a file with the same name and the @file{.am} extension appended.
+Typically, @samp{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
+generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
+
+When using @code{AC_CONFIG_FILES} with multiple input files, as in
+
+@example
+AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])
+@end example
+
+@noindent
+@command{automake} will generate the first @file{.in} input file for
+which a @file{.am} file exists.  If no such file exists the output
+file is not considered to be generated by Automake.
+
+Files created by @code{AC_CONFIG_FILES}, be they Automake
+@file{Makefile}s or not, are all removed by @samp{make distclean}.
+Their inputs are automatically distributed, unless they
+are the output of prior @code{AC_CONFIG_FILES} commands.
+Finally, rebuild rules are generated in the Automake @file{Makefile}
+existing in the subdirectory of the output file, if there is one, or
+in the top-level @file{Makefile} otherwise.
+
+The above machinery (cleaning, distributing, and rebuilding) works
+fine if the @code{AC_CONFIG_FILES} specifications contain only
+literals.  If part of the specification uses shell variables,
+@command{automake} will not be able to fulfill this setup, and you will
+have to complete the missing bits by hand.  For instance, on
+
+@c Keep in sync with output11.sh
+@example
+file=input
+@dots{}
+AC_CONFIG_FILES([output:$file],, [file=$file])
+@end example
+
+@noindent
+@command{automake} will output rules to clean @file{output}, and
+rebuild it.  However the rebuild rule will not depend on @file{input},
+and this file will not be distributed either.  (You must add
+@samp{EXTRA_DIST = input} to your @file{Makefile.am} if @file{input} is a
+source file.)
+
+Similarly
+
+@c Keep in sync with output11.sh
+@example
+file=output
+file2=out:in
+@dots{}
+AC_CONFIG_FILES([$file:input],, [file=$file])
+AC_CONFIG_FILES([$file2],, [file2=$file2])
+@end example
+
+@noindent
+will only cause @file{input} to be distributed.  No file will be
+cleaned automatically (add @samp{DISTCLEANFILES = output out}
+yourself), and no rebuild rule will be output.
+
+Obviously @command{automake} cannot guess what value @samp{$file} is
+going to hold later when @file{configure} is run, and it cannot use
+the shell variable @samp{$file} in a @file{Makefile}.  However, if you
+make reference to @samp{$file} as @samp{$@{file@}} (i.e., in a way
+that is compatible with @command{make}'s syntax) and furthermore use
+@code{AC_SUBST} to ensure that @samp{$@{file@}} is meaningful in a
+@file{Makefile}, then @command{automake} will be able to use
+@samp{$@{file@}} to generate all these rules.  For instance, here is
+how the Automake package itself generates versioned scripts for its
+test suite:
+
+@example
+AC_SUBST([APIVERSION], @dots{})
+@dots{}
+AC_CONFIG_FILES(
+  [tests/aclocal-$@{APIVERSION@}:tests/aclocal.in],
+  [chmod +x tests/aclocal-$@{APIVERSION@}],
+  [APIVERSION=$APIVERSION])
+AC_CONFIG_FILES(
+  [tests/automake-$@{APIVERSION@}:tests/automake.in],
+  [chmod +x tests/automake-$@{APIVERSION@}])
+@end example
+
+@noindent
+Here cleaning, distributing, and rebuilding are done automatically,
+because @samp{$@{APIVERSION@}} is known at @command{make}-time.
+
+Note that you should not use shell variables to declare
+@file{Makefile} files for which @command{automake} must create
+@file{Makefile.in}.  Even @code{AC_SUBST} does not help here, because
+@command{automake} needs to know the file name when it runs in order
+to check whether @file{Makefile.am} exists.  (In the very hairy case
+that your setup requires such use of variables, you will have to tell
+Automake which @file{Makefile.in}s to generate on the command-line.)
+
+It is possible to let @command{automake} emit conditional rules for
+@code{AC_CONFIG_FILES} with the help of @code{AM_COND_IF}
+(@pxref{Optional}).
+
+To summarize:
+@itemize @bullet
+@item
+Use literals for @file{Makefile}s, and for other files whenever possible.
+@item
+Use @samp{$file} (or @samp{$@{file@}} without @samp{AC_SUBST([file])})
+for files that @command{automake} should ignore.
+@item
+Use @samp{$@{file@}} and @samp{AC_SUBST([file])} for files
+that @command{automake} should not ignore.
+@end itemize
+
+@end table
+
+
+@node Optional
+@section Other things Automake recognizes
+
+@cindex Macros Automake recognizes
+@cindex Recognized macros by Automake
+
+Every time Automake is run it calls Autoconf to trace
+@file{configure.ac}.  This way it can recognize the use of certain
+macros and tailor the generated @file{Makefile.in} appropriately.
+Currently recognized macros and their effects are:
+
+@ftable @code
+@item AC_CANONICAL_BUILD
+@itemx AC_CANONICAL_HOST
+@itemx AC_CANONICAL_TARGET
+@vindex build_triplet
+@vindex host_triplet
+@vindex target_triplet
+Automake will ensure that @file{config.guess} and @file{config.sub}
+exist.  Also, the @file{Makefile} variables @code{build_triplet},
+@code{host_triplet} and @code{target_triplet} are introduced.  See
+@ref{Canonicalizing, , Getting the Canonical System Type, autoconf,
+The Autoconf Manual}.
+
+@item AC_CONFIG_AUX_DIR
+Automake will look for various helper scripts, such as
+@file{install-sh}, in the directory named in this macro invocation.
+@c This list is accurate relative to version 1.11
+(The full list of scripts is:
+@file{ar-lib},
+@file{config.guess},
+@file{config.sub},
+@file{depcomp},
+@file{elisp-comp},
+@file{compile},
+@file{install-sh},
+@file{ltmain.sh},
+@file{mdate-sh},
+@file{missing},
+@file{mkinstalldirs},
+@file{py-compile},
+@file{test-driver},
+@file{texinfo.tex},
+@file{ylwrap}.)
+Not all scripts are always searched for; some scripts
+will only be sought if the generated @file{Makefile.in} requires them.
+
+If @code{AC_CONFIG_AUX_DIR} is not given, the scripts are looked for in
+their standard locations.  For @file{mdate-sh},
+@file{texinfo.tex}, and @file{ylwrap}, the standard location is the
+source directory corresponding to the current @file{Makefile.am}.  For
+the rest, the standard location is the first one of @file{.}, @file{..},
+or @file{../..} (relative to the top source directory) that provides any
+one of the helper scripts.  @xref{Input, , Finding `configure' Input,
+autoconf, The Autoconf Manual}.
+
+Required files from @code{AC_CONFIG_AUX_DIR} are automatically
+distributed, even if there is no @file{Makefile.am} in this directory.
+
+@item AC_CONFIG_LIBOBJ_DIR
+Automake will require the sources file declared with
+@code{AC_LIBSOURCE} (see below) in the directory specified by this
+macro.
+
+@item AC_CONFIG_HEADERS
+Automake will generate rules to rebuild these headers.  Older versions
+of Automake required the use of @code{AM_CONFIG_HEADER}
+(@pxref{Macros}); this is no longer the case.
+
+As with @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
+specification using shell variables will be ignored as far as
+cleaning, distributing, and rebuilding is concerned.
+
+@item AC_CONFIG_LINKS
+Automake will generate rules to remove @file{configure} generated
+links on @samp{make distclean} and to distribute named source files as
+part of @samp{make dist}.
+
+As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
+specification using shell variables will be ignored as far as cleaning
+and distributing is concerned.  (There are no rebuild rules for links.)
+
+@item AC_LIBOBJ
+@itemx AC_LIBSOURCE
+@itemx AC_LIBSOURCES
+@vindex LIBOBJS
+Automake will automatically distribute any file listed in
+@code{AC_LIBSOURCE} or @code{AC_LIBSOURCES}.
+
+Note that the @code{AC_LIBOBJ} macro calls @code{AC_LIBSOURCE}.  So if
+an Autoconf macro is documented to call @samp{AC_LIBOBJ([file])}, then
+@file{file.c} will be distributed automatically by Automake.  This
+encompasses many macros like @code{AC_FUNC_ALLOCA},
+@code{AC_FUNC_MEMCMP}, @code{AC_REPLACE_FUNCS}, and others.
+
+By the way, direct assignments to @code{LIBOBJS} are no longer
+supported.  You should always use @code{AC_LIBOBJ} for this purpose.
+@xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
+autoconf, The Autoconf Manual}.
+
+@item AC_PROG_RANLIB
+This is required if any libraries are built in the package.
+@xref{Particular Programs, , Particular Program Checks, autoconf, The
+Autoconf Manual}.
+
+@item AC_PROG_CXX
+This is required if any C++ source is included.  @xref{Particular
+Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
+
+@item AC_PROG_OBJC
+This is required if any Objective C source is included.  @xref{Particular
+Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
+
+@item AC_PROG_OBJCXX
+This is required if any Objective C++ source is included.  @xref{Particular
+Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
+
+@item AC_PROG_F77
+This is required if any Fortran 77 source is included.  @xref{Particular
+Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
+
+@item AC_F77_LIBRARY_LDFLAGS
+This is required for programs and shared libraries that are a mixture of
+languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
+C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
+
+@item AC_FC_SRCEXT
+Automake will add the flags computed by @code{AC_FC_SRCEXT} to compilation
+of files with the respective source extension (@pxref{Fortran Compiler, ,
+Fortran Compiler Characteristics, autoconf, The Autoconf Manual}).
+
+@item AC_PROG_FC
+This is required if any Fortran 90/95 source is included.  This macro is
+distributed with Autoconf version 2.58 and later.  @xref{Particular
+Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
+
+@item AC_PROG_LIBTOOL
+Automake will turn on processing for @command{libtool} (@pxref{Top, ,
+Introduction, libtool, The Libtool Manual}).
+
+@item AC_PROG_YACC
+@vindex YACC
+If a Yacc source file is seen, then you must either use this macro or
+define the variable @code{YACC} in @file{configure.ac}.  The former is
+preferred (@pxref{Particular Programs, , Particular Program Checks,
+autoconf, The Autoconf Manual}).
+
+@item AC_PROG_LEX
+If a Lex source file is seen, then this macro must be used.
+@xref{Particular Programs, , Particular Program Checks, autoconf, The
+Autoconf Manual}.
+
+@item AC_REQUIRE_AUX_FILE
+For each @code{AC_REQUIRE_AUX_FILE([@var{file}])},
+@command{automake} will ensure that @file{@var{file}} exists in the
+aux directory, and will complain otherwise.  It
+will also automatically distribute the file.  This macro should be
+used by third-party Autoconf macros that require some supporting
+files in the aux directory specified with @code{AC_CONFIG_AUX_DIR}
+above.  @xref{Input, , Finding @command{configure} Input, autoconf,
+The Autoconf Manual}.
+
+@item AC_SUBST
+The first argument is automatically defined as a variable in each
+generated @file{Makefile.in}, unless @code{AM_SUBST_NOTMAKE} is also
+used for this variable.  @xref{Setting Output Variables, , Setting
+Output Variables, autoconf, The Autoconf Manual}.
+
+For every substituted variable @var{var}, @command{automake} will add
+a line @code{@var{var} = @var{value}} to each @file{Makefile.in} file.
+Many Autoconf macros invoke @code{AC_SUBST} to set output variables
+this way, e.g., @code{AC_PATH_XTRA} defines @code{X_CFLAGS} and
+@code{X_LIBS}.  Thus, you can access these variables as
+@code{$(X_CFLAGS)} and @code{$(X_LIBS)} in any @file{Makefile.am}
+if @code{AC_PATH_XTRA} is called.
+
+@item AM_CONDITIONAL
+This introduces an Automake conditional (@pxref{Conditionals}).
+
+@item AM_COND_IF
+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{Usage of Conditionals}).
+
+@item AM_GNU_GETTEXT
+This macro is required for packages that use GNU gettext
+(@pxref{gettext}).  It is distributed with gettext.  If Automake sees
+this macro it ensures that the package meets some of gettext's
+requirements.
+
+@item AM_GNU_GETTEXT_INTL_SUBDIR
+This macro specifies that the @file{intl/} subdirectory is to be built,
+even if the @code{AM_GNU_GETTEXT} macro was invoked with a first argument
+of @samp{external}.
+
+@item AM_MAINTAINER_MODE(@ovar{default-mode})
+@opindex --enable-maintainer-mode
+@opindex --disable-maintainer-mode
+This macro adds an @option{--enable-maintainer-mode} option to
+@command{configure}.  If this is used, @command{automake} will cause
+``maintainer-only'' rules to be turned off by default in the
+generated @file{Makefile.in}s, unless @var{default-mode} is
+@samp{enable}.  This macro defines the @code{MAINTAINER_MODE}
+conditional, which you can use in your own @file{Makefile.am}.
+@xref{maintainer-mode}.
+
+@item AM_SUBST_NOTMAKE(@var{var})
+Prevent Automake from defining a variable @var{var}, even if it is
+substituted by @command{config.status}.  Normally, Automake defines a
+@command{make} variable for each @command{configure} substitution,
+i.e., for each @code{AC_SUBST([@var{var}])}.  This macro prevents that
+definition from Automake.  If @code{AC_SUBST} has not been called
+for this variable, then @code{AM_SUBST_NOTMAKE} has no effects.
+Preventing variable definitions may be useful for substitution of
+multi-line values, where @code{@var{var} = @@@var{value}@@} might yield
+unintended results.
+
+@item m4_include
+Files included by @file{configure.ac} using this macro will be
+detected by Automake and automatically distributed.  They will also
+appear as dependencies in @file{Makefile} rules.
+
+@code{m4_include} is seldom used by @file{configure.ac} authors, but
+can appear in @file{aclocal.m4} when @command{aclocal} detects that
+some required macros come from files local to your package (as opposed to
+macros installed in a system-wide directory, @pxref{aclocal Invocation}).
+
+@end ftable
+
+@node aclocal Invocation
+@section Auto-generating aclocal.m4
+@c This node used to be named "Invoking automake".  This @anchor
+@c allows old links to still work.
+@anchor{Invoking aclocal}
+
+@cindex Invocation of @command{aclocal}
+@cindex @command{aclocal}, Invocation
+@cindex Invoking @command{aclocal}
+@cindex @command{aclocal}, Invoking
+
+Automake includes a number of Autoconf macros that can be used in
+your package (@pxref{Macros}); some of them are actually required by
+Automake in certain situations.  These macros must be defined in your
+@file{aclocal.m4}; otherwise they will not be seen by
+@command{autoconf}.
+
+The @command{aclocal} program will automatically generate
+@file{aclocal.m4} files based on the contents of @file{configure.ac}.
+This provides a convenient way to get Automake-provided macros,
+without having to search around.  The @command{aclocal} mechanism
+allows other packages to supply their own macros (@pxref{Extending
+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
+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}.
+
+@emph{Putting} the file that contains the macro definition into
+@file{aclocal.m4} is usually done by copying the entire text of this
+file, including unused macro definitions as well as both @samp{#} and
+@samp{dnl} comments.  If you want to make a comment that will be
+completely ignored by @command{aclocal}, use @samp{##} as the comment
+leader.
+
+When a file selected by @command{aclocal} is located in a subdirectory
+specified as a relative search path with @command{aclocal}'s @option{-I}
+argument, @command{aclocal} assumes the file belongs to the package
+and uses @code{m4_include} instead of copying it into
+@file{aclocal.m4}.  This makes the package smaller, eases dependency
+tracking, and cause the file to be distributed automatically.
+(@xref{Local Macros}, for an example.)  Any macro that is found in a
+system-wide directory, or via an absolute search path will be copied.
+So use @samp{-I `pwd`/reldir} instead of @samp{-I reldir} whenever
+some relative directory should be considered outside the package.
+
+The contents of @file{acinclude.m4}, if this file exists, are also
+automatically included in @file{aclocal.m4}.  We recommend against
+using @file{acinclude.m4} in new packages (@pxref{Local Macros}).
+
+@vindex AUTOM4TE
+@cindex autom4te
+While computing @file{aclocal.m4}, @command{aclocal} runs
+@command{autom4te} (@pxref{Using autom4te, , Using @command{Autom4te},
+autoconf, The Autoconf Manual}) in order to trace the macros that are
+really used, and omit from @file{aclocal.m4} all macros that are
+mentioned but otherwise unexpanded (this can happen when a macro is
+called conditionally).  @command{autom4te} is expected to be in the
+@env{PATH}, just as @command{autoconf}.  Its location can be
+overridden using the @env{AUTOM4TE} environment variable.
+
+@menu
+* 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
+
+@node aclocal Options
+@subsection aclocal Options
+
+@cindex @command{aclocal}, Options
+@cindex Options, @command{aclocal}
+
+@command{aclocal} accepts the following options:
+
+@table @code
+@item --automake-acdir=@var{dir}
+@opindex --automake-acdir
+Look for the automake-provided macro files in @var{dir} instead of
+in the installation directory.  This is typically used for debugging.
+
+@item --system-acdir=@var{dir}
+@opindex --system-acdir
+Look for the system-wide third-party macro files (and the special
+@file{dirlist} file) in @var{dir} instead of in the installation
+directory.  This is typically used for debugging.
+
+@item --diff[=@var{command}]
+@opindex --diff
+Run @var{command} on M4 file that would be installed or overwritten
+by @option{--install}.  The default @var{command} is @samp{diff -u}.
+This option implies @option{--install} and @option{--dry-run}.
+
+@item --dry-run
+@opindex --dry-run
+Do not actually overwrite (or create) @file{aclocal.m4} and M4
+files installed by @option{--install}.
+
+@item --help
+@opindex --help
+Print a summary of the command line options and exit.
+
+@item -I @var{dir}
+@opindex -I
+Add the directory @var{dir} to the list of directories searched for
+@file{.m4} files.
+
+@item --install
+@opindex --install
+Install system-wide third-party macros into the first directory
+specified with @samp{-I @var{dir}} instead of copying them in the
+output file.
+@c Keep in sync with aclocal-install-absdir.sh
+Note that this will happen also if @var{dir} is an absolute path.
+
+@cindex serial number and @option{--install}
+When this option is used, and only when this option is used,
+@command{aclocal} will also honor @samp{#serial @var{number}} lines
+that appear in macros: an M4 file is ignored if there exists another
+M4 file with the same basename and a greater serial number in the
+search path (@pxref{Serials}).
+
+@item --force
+@opindex --force
+Always overwrite the output file.  The default is to overwrite the output
+file only when really needed, i.e., when its contents changes or if one
+of its dependencies is younger.
+
+This option forces the update of @file{aclocal.m4} (or the file
+specified with @file{--output} below) and only this file, it has
+absolutely no influence on files that may need to be installed by
+@option{--install}.
+
+@item --output=@var{file}
+@opindex --output
+Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
+
+@item --print-ac-dir
+@opindex --print-ac-dir
+Prints the name of the directory that @command{aclocal} will search to
+find third-party @file{.m4} files.  When this option is given, normal
+processing is suppressed.  This option was used @emph{in the past} by
+third-party packages to determine where to install @file{.m4} macro
+files, but @emph{this usage is today discouraged}, since it causes
+@samp{$(prefix)} not to be thoroughly honoured (which violates the
+GNU Coding Standards), and a similar semantics can be better obtained
+with the @env{ACLOCAL_PATH} environment variable; @pxref{Extending aclocal}.
+
+@item --verbose
+@opindex --verbose
+Print the names of the files it examines.
+
+@item --version
+@opindex --version
+Print the version number of Automake and exit.
+
+@item -W CATEGORY
+@item --warnings=@var{category}
+@opindex -W
+@opindex --warnings
+Output warnings falling in @var{category}.  @var{category} can be
+one of:
+@table @code
+@item syntax
+dubious syntactic constructs, underquoted macros, unused macros, etc.
+@item unsupported
+unknown macros
+@item all
+all the warnings, this is the default
+@item none
+turn off all the warnings
+@item error
+treat warnings as errors
+@end table
+
+All warnings are output by default.
+
+@vindex WARNINGS
+The environment variable @env{WARNINGS} is honored in the same
+way as it is for @command{automake} (@pxref{automake Invocation}).
+
+@end table
+
+@node Macro Search Path
+@subsection Macro Search Path
+
+@cindex Macro search path
+@cindex @command{aclocal} search path
+
+By default, @command{aclocal} searches for @file{.m4} files in the following
+directories, in this order:
+
+@table @code
+@item @var{acdir-APIVERSION}
+This is where the @file{.m4} macros distributed with Automake itself
+are stored.  @var{APIVERSION} depends on the Automake release used;
+for example, for Automake 1.11.x, @var{APIVERSION} = @code{1.11}.
+
+@item @var{acdir}
+This directory is intended for third party @file{.m4} files, and is
+configured when @command{automake} itself is built.  This is
+@file{@@datadir@@/aclocal/}, which typically
+expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
+value of @var{acdir}, use the @option{--print-ac-dir} option
+(@pxref{aclocal Options}).
+@end table
+
+As an example, suppose that @command{automake-1.11.2} was configured with
+@option{--prefix=@-/usr/local}.  Then, the search path would be:
+
+@enumerate
+@item @file{/usr/local/share/aclocal-1.11.2/}
+@item @file{/usr/local/share/aclocal/}
+@end enumerate
+
+The paths for the @var{acdir} and @var{acdir-APIVERSION} directories can
+be changed respectively through aclocal options @option{--system-acdir}
+and @option{--automake-acdir} (@pxref{aclocal Options}).  Note however
+that these options are only intended for use by the internal Automake
+test suite, or for debugging under highly unusual situations; they are
+not ordinarily needed by end-users.
+
+As explained in (@pxref{aclocal Options}), there are several options that
+can be used to change or extend this search path.
+
+@subsubheading 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,
+@samp{aclocal -I /foo -I /bar} results in the following search path:
+
+@enumerate
+@item @file{/foo}
+@item @file{/bar}
+@item @var{acdir}-@var{APIVERSION}
+@item @var{acdir}
+@end enumerate
+
+@subsubheading Modifying the Macro Search Path: @file{dirlist}
+@cindex @file{dirlist}
+
+There is a third mechanism for customizing the search path.  If a
+@file{dirlist} file exists in @var{acdir}, then that file is assumed to
+contain a list of directory patterns, one per line.  @command{aclocal}
+expands these patterns to directory names, and adds them to the search
+list @emph{after} all other directories.  @file{dirlist} entries may
+use shell wildcards such as @samp{*}, @samp{?}, or @code{[...]}.
+
+For example, suppose
+@file{@var{acdir}/dirlist} contains the following:
+
+@example
+/test1
+/test2
+/test3*
+@end example
+
+@noindent
+and that @command{aclocal} was called with the @samp{-I /foo -I /bar} options.
+Then, the search path would be
+
+@c @code looks better than @file here
+@enumerate
+@item @code{/foo}
+@item @code{/bar}
+@item @var{acdir}-@var{APIVERSION}
+@item @var{acdir}
+@item @code{/test1}
+@item @code{/test2}
+@end enumerate
+
+@noindent
+and all directories with path names starting with @code{/test3}.
+
+If the @option{--system-acdir=@var{dir}} option is used, then
+@command{aclocal} will search for the @file{dirlist} file in
+@var{dir}; but remember the warnings  above against the use of
+@option{--system-acdir}.
+
+@file{dirlist} is useful in the following situation: suppose that
+@command{automake} version @code{1.11.2} is installed with
+@samp{--prefix=/usr} by the system vendor.  Thus, the default search
+directories are
+
+@c @code looks better than @file here
+@enumerate
+@item @code{/usr/share/aclocal-1.11/}
+@item @code{/usr/share/aclocal/}
+@end enumerate
+
+However, suppose further that many packages have been manually
+installed on the system, with $prefix=/usr/local, as is typical.  In
+that case, many of these ``extra'' @file{.m4} files are in
+@file{/usr/local/share/aclocal}.  The only way to force
+@file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files is to
+always call @samp{aclocal -I /usr/local/share/aclocal}.  This is
+inconvenient.  With @file{dirlist}, one may create a file
+@file{/usr/share/aclocal/dirlist} containing only the single line
+
+@example
+/usr/local/share/aclocal
+@end example
+
+Now, the ``default'' search path on the affected system is
+
+@c @code looks better than @file here
+@enumerate
+@item @code{/usr/share/aclocal-1.11/}
+@item @code{/usr/share/aclocal/}
+@item @code{/usr/local/share/aclocal/}
+@end enumerate
+
+without the need for @option{-I} options; @option{-I} options can be reserved
+for project-specific needs (@file{my-source-dir/m4/}), rather than
+using it to work around local system-dependent tool installation
+directories.
+
+Similarly, @file{dirlist} can be handy if you have installed a local
+copy of Automake in your account and want @command{aclocal} to look for
+macros installed at other places on the system.
+
+@anchor{ACLOCAL_PATH}
+@subsubheading Modifying the Macro Search Path: @file{ACLOCAL_PATH}
+@cindex @env{ACLOCAL_PATH}
+
+The fourth and last mechanism to customize the macro search path is
+also the simplest.  Any directory included in the colon-separated
+environment variable @env{ACLOCAL_PATH} is added to the search path
+@c Keep in sync with aclocal-path-precedence.sh
+and takes precedence over system directories (including those found via
+@file{dirlist}), with the exception of the versioned directory
+@var{acdir-APIVERSION} (@pxref{Macro Search Path}).  However, directories
+passed via @option{-I} will take precedence over directories in
+@env{ACLOCAL_PATH}.
+
+@c Keep in sync with aclocal-path-installed.sh
+Also note that, if the @option{--install} option is used, any @file{.m4}
+file containing a required macro that is found in a directory listed in
+@env{ACLOCAL_PATH} will be installed locally.
+@c Keep in sync with aclocal-path-installed-serial.sh
+In this case, serial numbers in @file{.m4} are honoured too,
+@pxref{Serials}.
+
+Conversely to @file{dirlist}, @env{ACLOCAL_PATH} is useful if you are
+using a global copy of Automake and want @command{aclocal} to look for
+macros somewhere under your home directory.
+
+@subsubheading Planned future incompatibilities
+
+The order in which the directories in the macro search path are currently
+looked up is confusing and/or suboptimal in various aspects, and is
+probably going to be changed in the future Automake release.  In
+particular, directories in @env{ACLOCAL_PATH} and @file{@var{acdir}}
+might end up taking precedence over @file{@var{acdir-APIVERSION}}, and
+directories in @file{@var{acdir}/dirlist} might end up taking precedence
+over @file{@var{acdir}}.  @emph{This is a possible future incompatibility!}
+
+@node Extending aclocal
+@subsection Writing your own aclocal macros
+
+@cindex @command{aclocal}, extending
+@cindex Extending @command{aclocal}
+
+The @command{aclocal} program doesn't have any built-in knowledge of any
+macros, so it is easy to extend it with your own macros.
+
+This can be used by libraries that want to supply their own Autoconf
+macros for use by other programs.  For instance, the @command{gettext}
+library supplies a macro @code{AM_GNU_GETTEXT} that should be used by
+any package using @command{gettext}.  When the library is installed, it
+installs this macro so that @command{aclocal} will find it.
+
+A macro file's name should end in @file{.m4}.  Such files should be
+installed in @file{$(datadir)/aclocal}.  This is as simple as writing:
+
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@example
+aclocaldir = $(datadir)/aclocal
+aclocal_DATA = mymacro.m4 myothermacro.m4
+@end example
+
+@noindent
+Please do use @file{$(datadir)/aclocal}, and not something based on
+the result of @samp{aclocal --print-ac-dir} (@pxref{Hard-Coded Install
+Paths}, for arguments).  It might also be helpful to suggest to
+the user to add the @file{$(datadir)/aclocal} directory to his
+@env{ACLOCAL_PATH} variable (@pxref{ACLOCAL_PATH}) so that
+@command{aclocal} will find the @file{.m4} files installed by your
+package automatically.
+
+A file of macros should be a series of properly quoted
+@code{AC_DEFUN}'s (@pxref{Macro Definitions, , , autoconf, The
+Autoconf Manual}).  The @command{aclocal} programs also understands
+@code{AC_REQUIRE} (@pxref{Prerequisite Macros, , , autoconf, The
+Autoconf Manual}), so it is safe to put each macro in a separate file.
+Each file should have no side effects but macro definitions.
+Especially, any call to @code{AC_PREREQ} should be done inside the
+defined macro, not at the beginning of the file.
+
+@cindex underquoted @code{AC_DEFUN}
+@acindex AC_DEFUN
+@acindex AC_PREREQ
+
+Starting with Automake 1.8, @command{aclocal} will warn about all
+underquoted calls to @code{AC_DEFUN}.  We realize this will annoy a
+lot of people, because @command{aclocal} was not so strict in the past
+and many third party macros are underquoted; and we have to apologize
+for this temporary inconvenience.  The reason we have to be stricter
+is that a future implementation of @command{aclocal} (@pxref{Future of
+aclocal}) will have to temporarily include all these third party
+@file{.m4} files, maybe several times, including even files that are
+not actually needed.  Doing so should alleviate many problems of the
+current implementation, however it requires a stricter style from the
+macro authors.  Hopefully it is easy to revise the existing macros.
+For instance,
+
+@example
+# bad style
+AC_PREREQ(2.68)
+AC_DEFUN(AX_FOOBAR,
+[AC_REQUIRE([AX_SOMETHING])dnl
+AX_FOO
+AX_BAR
+])
+@end example
+
+@noindent
+should be rewritten as
+
+@example
+AC_DEFUN([AX_FOOBAR],
+[AC_PREREQ([2.68])dnl
+AC_REQUIRE([AX_SOMETHING])dnl
+AX_FOO
+AX_BAR
+])
+@end example
+
+Wrapping the @code{AC_PREREQ} call inside the macro ensures that
+Autoconf 2.68 will not be required if @code{AX_FOOBAR} is not actually
+used.  Most importantly, quoting the first argument of @code{AC_DEFUN}
+allows the macro to be redefined or included twice (otherwise this
+first argument would be expanded during the second definition).  For
+consistency we like to quote even arguments such as @code{2.68} that
+do not require it.
+
+If you have been directed here by the @command{aclocal} diagnostic but
+are not the maintainer of the implicated macro, you will want to
+contact the maintainer of that macro.  Please make sure you have the
+latest version of the macro and that the problem hasn't already been
+reported before doing so: people tend to work faster when they aren't
+flooded by mails.
+
+Another situation where @command{aclocal} is commonly used is to
+manage macros that are used locally by the package, @ref{Local
+Macros}.
+
+@node Local Macros
+@subsection Handling Local Macros
+
+Feature tests offered by Autoconf do not cover all needs.  People
+often have to supplement existing tests with their own macros, or
+with third-party macros.
+
+There are two ways to organize custom macros in a package.
+
+The first possibility (the historical practice) is to list all your
+macros in @file{acinclude.m4}.  This file will be included in
+@file{aclocal.m4} when you run @command{aclocal}, and its macro(s) will
+henceforth be visible to @command{autoconf}.  However if it contains
+numerous macros, it will rapidly become difficult to maintain, and it
+will be almost impossible to share macros between packages.
+
+@vindex ACLOCAL_AMFLAGS
+The second possibility, which we do recommend, is to write each macro
+in its own file and gather all these files in a directory.  This
+directory is usually called @file{m4/}.  To build @file{aclocal.m4},
+one should therefore instruct @command{aclocal} to scan @file{m4/}.
+From the command line, this is done with @samp{aclocal -I m4}.  The
+top-level @file{Makefile.am} should also be updated to define
+
+@example
+ACLOCAL_AMFLAGS = -I m4
+@end example
+
+@code{ACLOCAL_AMFLAGS} contains options to pass to @command{aclocal}
+when @file{aclocal.m4} is to be rebuilt by @command{make}.  This line is
+also used by @command{autoreconf} (@pxref{autoreconf Invocation, ,
+Using @command{autoreconf} to Update @file{configure} Scripts,
+autoconf, The Autoconf Manual}) to run @command{aclocal} with suitable
+options, or by @command{autopoint} (@pxref{autopoint Invocation, ,
+Invoking the @command{autopoint} Program, gettext, GNU gettext tools})
+and @command{gettextize} (@pxref{gettextize Invocation, , Invoking the
+@command{gettextize} Program, gettext, GNU gettext tools}) to locate
+the place where Gettext's macros should be installed.  So even if you
+do not really care about the rebuild rules, you should define
+@code{ACLOCAL_AMFLAGS}.
+
+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}.
+
+Custom macros should be distributed for the same reason that
+@file{configure.ac} is: so that other people have all the sources of
+your package if they want to work on it.  Actually, this distribution
+happens automatically because all @code{m4_include}d files are
+distributed.
+
+However there is no consensus on the distribution of third-party
+macros that your package may use.  Many libraries install their own
+macro in the system-wide @command{aclocal} directory (@pxref{Extending
+aclocal}).  For instance, Guile ships with a file called
+@file{guile.m4} that contains the macro @code{GUILE_FLAGS} that can
+be used to define setup compiler and linker flags appropriate for
+using Guile.  Using @code{GUILE_FLAGS} in @file{configure.ac} will
+cause @command{aclocal} to copy @file{guile.m4} into
+@file{aclocal.m4}, but as @file{guile.m4} is not part of the project,
+it will not be distributed.  Technically, that means a user who
+needs to rebuild @file{aclocal.m4} will have to install Guile first.
+This is probably OK, if Guile already is a requirement to build the
+package.  However, if Guile is only an optional feature, or if your
+package might run on architectures where Guile cannot be installed,
+this requirement will hinder development.  An easy solution is to copy
+such third-party macros in your local @file{m4/} directory so they get
+distributed.
+
+Since Automake 1.10, @command{aclocal} offers an option to copy these
+system-wide third-party macros in your local macro directory, solving
+the above problem.  Simply use:
+
+@example
+ACLOCAL_AMFLAGS = -I m4 --install
+@end example
+
+@noindent
+With this setup, system-wide macros will be copied to @file{m4/}
+the first time you run @command{autoreconf}.  Then the locally
+installed macros will have precedence over the system-wide installed
+macros each time @command{aclocal} is run again.
+
+One reason why you should keep @option{--install} in the flags even
+after the first run is that when you later edit @file{configure.ac}
+and depend on a new macro, this macro will be installed in your
+@file{m4/} automatically.  Another one is that serial numbers
+(@pxref{Serials}) can be used to update the macros in your source tree
+automatically when new system-wide versions are installed.  A serial
+number should be a single line of the form
+
+@example
+#serial @var{nnn}
+@end example
+
+@noindent
+where @var{nnn} contains only digits and dots.  It should appear in
+the M4 file before any macro definition.  It is a good practice to
+maintain a serial number for each macro you distribute, even if you do
+not use the @option{--install} option of @command{aclocal}: this allows
+other people to use it.
+
+
+@node Serials
+@subsection Serial Numbers
+@cindex serial numbers in macros
+@cindex macro serial numbers
+@cindex @code{#serial} syntax
+@cindex @command{aclocal} and serial numbers
+
+Because third-party macros defined in @file{*.m4} files are naturally
+shared between multiple projects, some people like to version them.
+This makes it easier to tell which of two M4 files is newer.  Since at
+least 1996, the tradition is to use a @samp{#serial} line for this.
+
+A serial number should be a single line of the form
+
+@example
+# serial @var{version}
+@end example
+
+@noindent
+where @var{version} is a version number containing only digits and
+dots.  Usually people use a single integer, and they increment it each
+time they change the macro (hence the name of ``serial'').  Such a
+line should appear in the M4 file before any macro definition.
+
+The @samp{#} must be the first character on the line,
+and it is OK to have extra words after the version, as in
+
+@example
+#serial @var{version} @var{garbage}
+@end example
+
+Normally these serial numbers are completely ignored by
+@command{aclocal} and @command{autoconf}, like any genuine comment.
+However when using @command{aclocal}'s @option{--install} feature, these
+serial numbers will modify the way @command{aclocal} selects the
+macros to install in the package: if two files with the same basename
+exist in your search path, and if at least one of them uses a
+@samp{#serial} line, @command{aclocal} will ignore the file that has
+the older @samp{#serial} line (or the file that has none).
+
+Note that a serial number applies to a whole M4 file, not to any macro
+it contains.  A file can contains multiple macros, but only one
+serial.
+
+Here is a use case that illustrates the use of @option{--install} and
+its interaction with serial numbers.  Let's assume we maintain a
+package called MyPackage, the @file{configure.ac} of which requires a
+third-party macro @code{AX_THIRD_PARTY} defined in
+@file{/usr/share/aclocal/thirdparty.m4} as follows:
+
+@example
+# serial 1
+AC_DEFUN([AX_THIRD_PARTY], [...])
+@end example
+
+MyPackage uses an @file{m4/} directory to store local macros as
+explained in @ref{Local Macros}, and has
+
+@example
+ACLOCAL_AMFLAGS = -I m4 --install
+@end example
+
+@noindent
+in its top-level @file{Makefile.am}.
+
+Initially the @file{m4/} directory is empty.  The first time we run
+@command{autoreconf}, it will fetch the options to pass to
+@command{aclocal} in @file{Makefile.am}, and run @samp{aclocal -I m4
+--install}.  @command{aclocal} will notice that
+
+@itemize @bullet
+@item
+@file{configure.ac} uses @code{AX_THIRD_PARTY}
+@item
+No local macros define @code{AX_THIRD_PARTY}
+@item
+@file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
+with serial 1.
+@end itemize
+
+@noindent
+Because @file{/usr/share/aclocal/thirdparty.m4} is a system-wide macro
+and @command{aclocal} was given the @option{--install} option, it will
+copy this file in @file{m4/thirdparty.m4}, and output an
+@file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
+
+The next time @samp{aclocal -I m4 --install} is run (either via
+@command{autoreconf}, by hand, or from the @file{Makefile} rebuild
+rules) something different happens.  @command{aclocal} notices that
+
+@itemize @bullet
+@item
+@file{configure.ac} uses @code{AX_THIRD_PARTY}
+@item
+@file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
+with serial 1.
+@item
+@file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
+with serial 1.
+@end itemize
+
+@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
+@file{/usr/share/aclocal/thirdparty.m4} and outputs an
+@file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
+
+Local directories specified with @option{-I} are always searched before
+system-wide directories, so a local file will always be preferred to
+the system-wide file in case of equal serial numbers.
+
+Now suppose the system-wide third-party macro is changed.  This can
+happen if the package installing this macro is updated.  Let's suppose
+the new macro has serial number 2.  The next time @samp{aclocal -I m4
+--install} is run the situation is the following:
+
+@itemize @bullet
+@item
+@file{configure.ac} uses @code{AX_THIRD_PARTY}
+@item
+@file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
+with serial 1.
+@item
+@file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
+with serial 2.
+@end itemize
+
+@noindent
+When @command{aclocal} sees a greater serial number, it immediately
+forgets anything it knows from files that have the same basename and a
+smaller serial number.  So after it has found
+@file{/usr/share/aclocal/thirdparty.m4} with serial 2,
+@command{aclocal} will proceed as if it had never seen
+@file{m4/thirdparty.m4}.  This brings us back to a situation similar
+to that at the beginning of our example, where no local file defined
+the macro.  @command{aclocal} will install the new version of the
+macro in @file{m4/thirdparty.m4}, in this case overriding the old
+version.  MyPackage just had its macro updated as a side effect of
+running @command{aclocal}.
+
+If you are leery of letting @command{aclocal} update your local macro,
+you can run @samp{aclocal -I m4 --diff} to review the changes
+@samp{aclocal -I m4 --install} would perform on these macros.
+
+Finally, note that the @option{--force} option of @command{aclocal} has
+absolutely no effect on the files installed by @option{--install}.  For
+instance, if you have modified your local macros, do not expect
+@option{--install --force} to replace the local macros by their
+system-wide versions.  If you want to do so, simply erase the local
+macros you want to revert, and run @samp{aclocal -I m4 --install}.
+
+
+@node Future of aclocal
+@subsection The Future of @command{aclocal}
+@cindex @command{aclocal}'s scheduled death
+
+@command{aclocal} is expected to disappear.  This feature really
+should not be offered by Automake.  Automake should focus on
+generating @file{Makefile}s; dealing with M4 macros really is
+Autoconf's job.  The fact that some people install Automake just to use
+@command{aclocal}, but do not use @command{automake} otherwise is an
+indication of how that feature is misplaced.
+
+The new implementation will probably be done slightly differently.
+For instance, it could enforce the @file{m4/}-style layout discussed in
+@ref{Local Macros}.
+
+We have no idea when and how this will happen.  This has been
+discussed several times in the past, but someone still has to commit
+to that non-trivial task.
+
+From the user point of view, @command{aclocal}'s removal might turn
+out to be painful.  There is a simple precaution that you may take to
+make that switch more seamless: never call @command{aclocal} yourself.
+Keep this guy under the exclusive control of @command{autoreconf} and
+Automake's rebuild rules.  Hopefully you won't need to worry about
+things breaking, when @command{aclocal} disappears, because everything
+will have been taken care of.  If otherwise you used to call
+@command{aclocal} directly yourself or from some script, you will
+quickly notice the change.
+
+Many packages come with a script called @file{bootstrap.sh} or
+@file{autogen.sh}, that will just call @command{aclocal},
+@command{libtoolize}, @command{gettextize} or @command{autopoint},
+@command{autoconf}, @command{autoheader}, and @command{automake} in
+the right order.  Actually this is precisely what @command{autoreconf}
+can do for you.  If your package has such a @file{bootstrap.sh} or
+@file{autogen.sh} script, consider using @command{autoreconf}.  That
+should simplify its logic a lot (less things to maintain, yum!), it's
+even likely you will not need the script anymore, and more to the point
+you will not call @command{aclocal} directly anymore.
+
+For the time being, third-party packages should continue to install
+public macros into @file{/usr/share/aclocal/}.  If @command{aclocal}
+is replaced by another tool it might make sense to rename the
+directory, but supporting @file{/usr/share/aclocal/} for backward
+compatibility should be really easy provided all macros are properly
+written (@pxref{Extending aclocal}).
+
+
+
+@node Macros
+@section Autoconf macros supplied with Automake
+
+Automake ships with several Autoconf macros that you can use from your
+@file{configure.ac}.  When you use one of them it will be included by
+@command{aclocal} in @file{aclocal.m4}.
+
+@menu
+* Public Macros::               Macros that you can use.
+* Obsolete Macros::             Macros that will soon be removed.
+* Private Macros::              Macros that you should not use.
+@end menu
+
+@c consider generating the following subsections automatically from m4 files.
+
+@node Public Macros
+@subsection Public Macros
+
+@table @code
+
+@item AM_INIT_AUTOMAKE([OPTIONS])
+@acindex AM_INIT_AUTOMAKE
+Runs many macros required for proper operation of the generated Makefiles.
+
+@vindex AUTOMAKE_OPTIONS
+Today, @code{AM_INIT_AUTOMAKE} is called with a single argument: a
+space-separated list of Automake options that should
+be applied to every @file{Makefile.am} in the tree.  The effect is as if
+each option were listed in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
+
+@acindex AC_INIT
+This macro can also be called in @emph{another, deprecated form} (support
+for which will be @emph{removed in the next major Automake release (1.13)}):
+@code{AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])}.  In this form,
+there are two required arguments: the package and the version number.
+This form is obsolete because the @var{package} and @var{version} can
+be obtained from Autoconf's @code{AC_INIT} macro (which itself has an
+old and a new form).
+
+@anchor{Modernize AM_INIT_AUTOMAKE invocation}
+If your @file{configure.ac} has:
+
+@example
+AC_INIT([src/foo.c])
+AM_INIT_AUTOMAKE([mumble], [1.5])
+@end example
+
+@noindent
+you should modernize it as follows:
+
+@example
+AC_INIT([mumble], [1.5])
+AC_CONFIG_SRCDIR([src/foo.c])
+AM_INIT_AUTOMAKE
+@end example
+
+Note that if you're upgrading your @file{configure.ac} from an earlier
+version of Automake, it is not always correct to simply move the
+package and version arguments from @code{AM_INIT_AUTOMAKE} directly to
+@code{AC_INIT}, as in the example above.  The first argument to
+@code{AC_INIT} should be the name of your package (e.g., @samp{GNU
+Automake}), not the tarball name (e.g., @samp{automake}) that you used
+to pass to @code{AM_INIT_AUTOMAKE}.  Autoconf tries to derive a
+tarball name from the package name, which should work for most but not
+all package names.  (If it doesn't work for yours, you can use the
+four-argument form of @code{AC_INIT} to provide the tarball name
+explicitly).
+
+@cindex @code{PACKAGE}, prevent definition
+@cindex @code{VERSION}, prevent definition
+@opindex no-define
+By default this macro @code{AC_DEFINE}'s @code{PACKAGE} and
+@code{VERSION}.  This can be avoided by passing the @option{no-define}
+option:
+@example
+AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
+@end example
+
+@item AM_PATH_LISPDIR
+@acindex AM_PATH_LISPDIR
+@vindex EMACS
+@vindex lispdir
+Searches for the program @command{emacs}, and, if found, sets the
+output variable @code{lispdir} to the full path to Emacs' site-lisp
+directory.
+
+Note that this test assumes the @command{emacs} found to be a version
+that supports Emacs Lisp (such as GNU Emacs or XEmacs).  Other
+emacsen can cause this test to hang (some, like old versions of
+MicroEmacs, start up in interactive mode, requiring @kbd{C-x C-c} to
+exit, which is hardly obvious for a non-emacs user).  In most cases,
+however, you should be able to use @kbd{C-c} to kill the test.  In
+order to avoid problems, you can set @env{EMACS} to ``no'' in the
+environment, or use the @option{--with-lispdir} option to
+@command{configure} to explicitly set the correct path (if you're sure
+you have an @command{emacs} that supports Emacs Lisp).
+
+@item AM_PROG_AR(@ovar{act-if-fail})
+@acindex AM_PROG_AR
+@vindex AR
+You must use this macro when you use the archiver in your project, if
+you want support for unusual archivers such as Microsoft @command{lib}.
+The content of the optional argument is executed if the archiver
+interface is not recognized; the default action is to abort configure
+with an error message.
+
+@item AM_PROG_AS
+@acindex AM_PROG_AS
+@vindex CCAS
+@vindex CCASFLAGS
+Use this macro when you have assembly code in your project.  This will
+choose the assembler for you (by default the C compiler) and set
+@code{CCAS}, and will also set @code{CCASFLAGS} if required.
+
+@item AM_PROG_CC_C_O
+@acindex AM_PROG_CC_C_O
+@acindex AC_PROG_CC_C_O
+This is like @code{AC_PROG_CC_C_O}, but it generates its results in
+the manner required by Automake.  You must use this instead of
+@code{AC_PROG_CC_C_O} when you need this functionality, that is, when
+using per-target flags or subdir-objects with C sources.
+
+@item AM_PROG_LEX
+@acindex AM_PROG_LEX
+@acindex AC_PROG_LEX
+@cindex HP-UX 10, @command{lex} problems
+@cindex @command{lex} problems with HP-UX 10
+Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}), but uses the
+@command{missing} script on systems that do not have @command{lex}.
+HP-UX 10 is one such system.
+
+@item AM_PROG_GCJ
+@acindex AM_PROG_GCJ
+@vindex GCJ
+@vindex GCJFLAGS
+This macro finds the @command{gcj} program or causes an error.  It sets
+@code{GCJ} and @code{GCJFLAGS}.  @command{gcj} is the Java front-end to the
+GNU Compiler Collection.
+
+@item AM_PROG_UPC([@var{compiler-search-list}])
+@acindex AM_PROG_UPC
+@vindex UPC
+Find a compiler for Unified Parallel C and define the @code{UPC}
+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.
+
+@item AM_SILENT_RULES
+@acindex 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
+@vindex WITH_DMALLOC
+@opindex --with-dmalloc
+Add support for the @uref{http://dmalloc.com/, Dmalloc package}.  If
+the user runs @command{configure} with @option{--with-dmalloc}, then
+define @code{WITH_DMALLOC} and add @option{-ldmalloc} to @code{LIBS}.
+
+@end table
+
+
+@node Obsolete Macros
+@subsection Obsolete Macros
+@cindex obsolete macros
+@cindex autoupdate
+
+Although using some of the following macros was required in past
+releases, you should not use any of them in new code.  @emph{All
+these macros will be removed in the next major Automake version};
+if you are still using them, running @command{autoupdate} should
+adjust your @file{configure.ac} automatically (@pxref{autoupdate
+Invocation, , Using @command{autoupdate} to Modernize
+@file{configure.ac}, autoconf, The Autoconf Manual}).
+@emph{Do it NOW!}
+
+@table @code
+
+@item AM_CONFIG_HEADER
+@acindex AM_CONFIG_HEADER
+Automake will generate rules to automatically regenerate the config
+header.  This obsolete macro is a synonym of @code{AC_CONFIG_HEADERS}
+today (@pxref{Optional}).
+
+@item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
+@acindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
+If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
+define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
+found in @file{<termios.h>}.  This macro is obsolete, you should
+use Autoconf's @code{AC_HEADER_TIOCGWINSZ} instead.
+
+@item AM_PROG_MKDIR_P
+@acindex AM_PROG_MKDIR_P
+@cindex @code{mkdir -p}, macro check
+@vindex MKDIR_P
+@vindex mkdir_p
+
+From Automake 1.8 to 1.9.6 this macro used to define the output
+variable @code{mkdir_p} to one of @code{mkdir -p}, @code{install-sh
+-d}, or @code{mkinstalldirs}.
+
+Nowadays Autoconf provides a similar functionality with
+@code{AC_PROG_MKDIR_P} (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}), however this defines
+the output variable @code{MKDIR_P} instead.  In case you are still
+using the @code{AM_PROG_MKDIR_P} macro in your @file{configure.ac},
+or its provided variable @code{$(mkdir_p)} in your @file{Makefile.am},
+you are advised to switch ASAP to the more modern Autoconf-provided
+interface instead; both the macro and the variable @emph{will be
+removed} in the next major Automake release.
+
+@item AM_SYS_POSIX_TERMIOS
+@acindex AM_SYS_POSIX_TERMIOS
+@cindex POSIX termios headers
+@cindex termios POSIX headers
+Check to see if POSIX termios headers and functions are available on the
+system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
+@samp{yes}.  If not, set the variable to @samp{no}.  This macro is obsolete,
+you should use Autoconf's @code{AC_SYS_POSIX_TERMIOS} instead.
+
+@end table
+
+
+@node Private Macros
+@subsection 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
+rely on them, as they might be changed in a future version.  Consider
+them as implementation details; or better, do not consider them at all:
+skip this section!
+
+@ftable @code
+@item _AM_DEPENDENCIES
+@itemx AM_SET_DEPDIR
+@itemx AM_DEP_TRACK
+@itemx AM_OUTPUT_DEPENDENCY_COMMANDS
+These macros are used to implement Automake's automatic dependency
+tracking scheme.  They are called automatically by Automake when
+required, and there should be no need to invoke them manually.
+
+@item AM_MAKE_INCLUDE
+This macro is used to discover how the user's @command{make} handles
+@code{include} statements.  This macro is automatically invoked when
+needed; there should be no need to invoke it manually.
+
+@item AM_PROG_INSTALL_STRIP
+This is used to find a version of @code{install} that can be used to
+strip a program at installation time.  This macro is automatically
+included when required.
+
+@item AM_SANITY_CHECK
+This checks to make sure that a file created in the build directory is
+newer than a file in the source directory.  This can fail on systems
+where the clock is set incorrectly.  This macro is automatically run
+from @code{AM_INIT_AUTOMAKE}.
+
+@end ftable
+
+
+@node Directories
+@chapter Directories
+
+For simple projects that distribute all files in the same directory
+it is enough to have a single @file{Makefile.am} that builds
+everything in place.
+
+In larger projects it is common to organize files in different
+directories, in a tree.  For instance one directory per program, per
+library or per module.  The traditional approach is to build these
+subdirectories recursively: each directory contains its @file{Makefile}
+(generated from @file{Makefile.am}), and when @command{make} is run
+from the top level directory it enters each subdirectory in turn to
+build its contents.
+
+@menu
+* Subdirectories::              Building subdirectories recursively
+* Conditional Subdirectories::  Conditionally not building directories
+* Alternative::                 Subdirectories without recursion
+* Subpackages::                 Nesting packages
+@end menu
+
+@node Subdirectories
+@section Recursing subdirectories
+
+@cindex @code{SUBDIRS}, explained
+
+In packages with subdirectories, the top level @file{Makefile.am} must
+tell Automake which subdirectories are to be built.  This is done via
+the @code{SUBDIRS} variable.
+@vindex SUBDIRS
+
+The @code{SUBDIRS} variable holds a list of subdirectories in which
+building of various sorts can occur.  The rules for many targets
+(e.g., @code{all}) in the generated @file{Makefile} will run commands
+both locally and in all specified subdirectories.  Note that the
+directories listed in @code{SUBDIRS} are not required to contain
+@file{Makefile.am}s; only @file{Makefile}s (after configuration).
+This allows inclusion of libraries from packages that do not use
+Automake (such as @code{gettext}; see also @ref{Third-Party
+Makefiles}).
+
+In packages that use subdirectories, the top-level @file{Makefile.am} is
+often very short.  For instance, here is the @file{Makefile.am} from the
+GNU Hello distribution:
+
+@example
+EXTRA_DIST = BUGS ChangeLog.O README-alpha
+SUBDIRS = doc intl po src tests
+@end example
+
+When Automake invokes @command{make} in a subdirectory, it uses the value
+of the @code{MAKE} variable.  It passes the value of the variable
+@code{AM_MAKEFLAGS} to the @command{make} invocation; this can be set in
+@file{Makefile.am} if there are flags you must always pass to
+@command{make}.
+@vindex MAKE
+@vindex AM_MAKEFLAGS
+
+The directories mentioned in @code{SUBDIRS} are usually direct
+children of the current directory, each subdirectory containing its
+own @file{Makefile.am} with a @code{SUBDIRS} pointing to deeper
+subdirectories.  Automake can be used to construct packages of
+arbitrary depth this way.
+
+By default, Automake generates @file{Makefiles} that work depth-first
+in postfix order: the subdirectories are built before the current
+directory.  However, it is possible to change this ordering.  You can
+do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
+putting @samp{.} first will cause a prefix ordering of
+directories.
+
+Using
+
+@example
+SUBDIRS = lib src . test
+@end example
+
+@noindent
+will cause @file{lib/} to be built before @file{src/}, then the
+current directory will be built, finally the @file{test/} directory
+will be built.  It is customary to arrange test directories to be
+built after everything else since they are meant to test what has
+been constructed.
+
+All @code{clean} rules are run in reverse order of build rules.
+
+@node Conditional Subdirectories
+@section Conditional Subdirectories
+@cindex Subdirectories, building conditionally
+@cindex Conditional subdirectories
+@cindex @code{SUBDIRS}, conditional
+@cindex Conditional @code{SUBDIRS}
+
+It is possible to define the @code{SUBDIRS} variable conditionally if,
+like in the case of GNU Inetutils, you want to only build a subset of
+the entire package.
+
+To illustrate how this works, let's assume we have two directories
+@file{src/} and @file{opt/}.  @file{src/} should always be built, but we
+want to decide in @command{configure} whether @file{opt/} will be built
+or not.  (For this example we will assume that @file{opt/} should be
+built when the variable @samp{$want_opt} was set to @samp{yes}.)
+
+Running @command{make} should thus recurse into @file{src/} always, and
+then maybe in @file{opt/}.
+
+However @samp{make dist} should always recurse into both @file{src/}
+and @file{opt/}.  Because @file{opt/} should be distributed even if it
+is not needed in the current configuration.  This means
+@file{opt/Makefile} should be created @emph{unconditionally}.
+
+There are two ways to setup a project like this.  You can use Automake
+conditionals (@pxref{Conditionals}) or use Autoconf @code{AC_SUBST}
+variables (@pxref{Setting Output Variables, , Setting Output
+Variables, autoconf, The Autoconf Manual}).  Using Automake
+conditionals is the preferred solution.  Before we illustrate these
+two possibilities, let's introduce @code{DIST_SUBDIRS}.
+
+@menu
+* 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}
+@end menu
+
+@node SUBDIRS vs DIST_SUBDIRS
+@subsection @code{SUBDIRS} vs.@: @code{DIST_SUBDIRS}
+@cindex @code{DIST_SUBDIRS}, explained
+
+Automake considers two sets of directories, defined by the variables
+@code{SUBDIRS} and @code{DIST_SUBDIRS}.
+
+@code{SUBDIRS} contains the subdirectories of the current directory
+that must be built (@pxref{Subdirectories}).  It must be defined
+manually; Automake will never guess a directory is to be built.  As we
+will see in the next two sections, it is possible to define it
+conditionally so that some directory will be omitted from the build.
+
+@code{DIST_SUBDIRS} is used in rules that need to recurse in all
+directories, even those that have been conditionally left out of the
+build.  Recall our example where we may not want to build subdirectory
+@file{opt/}, but yet we want to distribute it?  This is where
+@code{DIST_SUBDIRS} comes into play: @samp{opt} may not appear in
+@code{SUBDIRS}, but it must appear in @code{DIST_SUBDIRS}.
+
+Precisely, @code{DIST_SUBDIRS} is used by @samp{make
+maintainer-clean}, @samp{make distclean} and @samp{make dist}.  All
+other recursive rules use @code{SUBDIRS}.
+
+If @code{SUBDIRS} is defined conditionally using Automake
+conditionals, Automake will define @code{DIST_SUBDIRS} automatically
+from the possible values of @code{SUBDIRS} in all conditions.
+
+If @code{SUBDIRS} contains @code{AC_SUBST} variables,
+@code{DIST_SUBDIRS} will not be defined correctly because Automake
+does not know the possible values of these variables.  In this case
+@code{DIST_SUBDIRS} needs to be defined manually.
+
+@node Subdirectories with AM_CONDITIONAL
+@subsection Subdirectories with @code{AM_CONDITIONAL}
+@cindex @code{SUBDIRS} and @code{AM_CONDITIONAL}
+@cindex @code{AM_CONDITIONAL} and @code{SUBDIRS}
+
+@c Keep in sync with subcond2.sh
+
+@file{configure} should output the @file{Makefile} for each directory
+and define a condition into which @file{opt/} should be built.
+
+@example
+@dots{}
+AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
+AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
+@dots{}
+@end example
+
+Then @code{SUBDIRS} can be defined in the top-level @file{Makefile.am}
+as follows.
+
+@example
+if COND_OPT
+  MAYBE_OPT = opt
+endif
+SUBDIRS = src $(MAYBE_OPT)
+@end example
+
+As you can see, running @command{make} will rightly recurse into
+@file{src/} and maybe @file{opt/}.
+
+@vindex DIST_SUBDIRS
+As you can't see, running @samp{make dist} will recurse into both
+@file{src/} and @file{opt/} directories because @samp{make dist}, unlike
+@samp{make all}, doesn't use the @code{SUBDIRS} variable.  It uses the
+@code{DIST_SUBDIRS} variable.
+
+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.
+
+@node Subdirectories with AC_SUBST
+@subsection Subdirectories with @code{AC_SUBST}
+@cindex @code{SUBDIRS} and @code{AC_SUBST}
+@cindex @code{AC_SUBST} and @code{SUBDIRS}
+
+@c Keep in sync with subcond3.sh
+
+Another possibility is to define @code{MAYBE_OPT} from
+@file{./configure} using @code{AC_SUBST}:
+
+@example
+@dots{}
+if test "$want_opt" = yes; then
+  MAYBE_OPT=opt
+else
+  MAYBE_OPT=
+fi
+AC_SUBST([MAYBE_OPT])
+AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
+@dots{}
+@end example
+
+In this case the top-level @file{Makefile.am} should look as follows.
+
+@example
+SUBDIRS = src $(MAYBE_OPT)
+DIST_SUBDIRS = src opt
+@end example
+
+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}.
+
+@node Unconfigured Subdirectories
+@subsection Unconfigured Subdirectories
+@cindex Subdirectories, configured conditionally
+
+The semantics of @code{DIST_SUBDIRS} are often misunderstood by some
+users that try to @emph{configure and build} subdirectories
+conditionally.  Here by configuring we mean creating the
+@file{Makefile} (it might also involve running a nested
+@command{configure} script: this is a costly operation that explains
+why people want to do it conditionally, but only the @file{Makefile}
+is relevant to the discussion).
+
+The above examples all assume that every @file{Makefile} is created,
+even in directories that are not going to be built.  The simple reason
+is that we want @samp{make dist} to distribute even the directories
+that are not being built (e.g., platform-dependent code), hence
+@file{make dist} must recurse into the subdirectory, hence this
+directory must be configured and appear in @code{DIST_SUBDIRS}.
+
+Building packages that do not configure every subdirectory is a tricky
+business, and we do not recommend it to the novice as it is easy to
+produce an incomplete tarball by mistake.  We will not discuss this
+topic in depth here, yet for the adventurous here are a few rules to
+remember.
+
+@cartouche
+@itemize
+@item @code{SUBDIRS} should always be a subset of @code{DIST_SUBDIRS}.
+
+It makes little sense to have a directory in @code{SUBDIRS} that
+is not in @code{DIST_SUBDIRS}.  Think of the former as a way to tell
+which directories listed in the latter should be built.
+@item Any directory listed in @code{DIST_SUBDIRS} and @code{SUBDIRS}
+must be configured.
+
+I.e., the @file{Makefile} must exists or the recursive @command{make}
+rules will not be able to process the directory.
+@item Any configured directory must be listed in @code{DIST_SUBDIRS}.
+
+So that the cleaning rules remove the generated @file{Makefile}s.
+It would be correct to see @code{DIST_SUBDIRS} as a variable that
+lists all the directories that have been configured.
+@end itemize
+@end cartouche
+
+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
+@code{DIST_SUBDIRS} explicitly, it will be default to
+@samp{$(SUBDIRS)}; another possibility is to force @code{DIST_SUBDIRS
+= $(SUBDIRS)}.
+
+Of course, directories that are omitted from @code{DIST_SUBDIRS} will
+not be distributed unless you make other arrangements for this to
+happen (for instance, always running @samp{make dist} in a
+configuration where all directories are known to appear in
+@code{DIST_SUBDIRS}; or writing a @code{dist-hook} target to
+distribute these directories).
+
+@cindex Subdirectories, not distributed
+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},
+@command{automake} will make sure the directory exists.  Consequently
+@command{automake} cannot be run on such a distribution when one
+directory has been omitted.  One way to avoid this check is to use the
+@code{AC_SUBST} method to declare conditional directories; since
+@command{automake} does not know the values of @code{AC_SUBST}
+variables it cannot ensure the corresponding directory exists.
+
+@node Alternative
+@section An Alternative Approach to Subdirectories
+
+If you've ever read Peter Miller's excellent paper,
+@uref{http://miller.emu.id.au/pmiller/books/rmch/,
+Recursive Make Considered Harmful}, the preceding sections on the use of
+subdirectories will probably come as unwelcome advice.  For those who
+haven't read the paper, Miller's main thesis is that recursive
+@command{make} invocations are both slow and error-prone.
+
+Automake provides sufficient cross-directory support @footnote{We
+believe.  This work is new and there are probably warts.
+@xref{Introduction}, for information on reporting bugs.} to enable you
+to write a single @file{Makefile.am} for a complex multi-directory
+package.
+
+
+By default an installable file specified in a subdirectory will have its
+directory name stripped before installation.  For instance, in this
+example, the header file will be installed as
+@file{$(includedir)/stdio.h}:
+
+@example
+include_HEADERS = inc/stdio.h
+@end example
+
+@vindex nobase_
+@cindex @code{nobase_} prefix
+@cindex Path stripping, avoiding
+@cindex Avoiding path stripping
+
+However, the @samp{nobase_} prefix can be used to circumvent this path
+stripping.  In this example, the header file will be installed as
+@file{$(includedir)/sys/types.h}:
+
+@example
+nobase_include_HEADERS = sys/types.h
+@end example
+
+@cindex @code{nobase_} and @code{dist_} or @code{nodist_}
+@cindex @code{dist_} and @code{nobase_}
+@cindex @code{nodist_} and @code{nobase_}
+@vindex dist_
+@vindex nodist_
+
+@samp{nobase_} should be specified first when used in conjunction with
+either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
+Control}).  For instance:
+
+@example
+nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg
+@end example
+
+Finally, note that a variable using the @samp{nobase_} prefix can
+often be replaced by several variables, one for each destination
+directory (@pxref{Uniform}).  For instance, the last example could be
+rewritten as follows:
+
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@example
+imagesdir = $(pkgdatadir)/images
+soundsdir = $(pkgdatadir)/sounds
+dist_images_DATA = images/vortex.pgm
+dist_sounds_DATA = sounds/whirl.ogg
+@end example
+
+@noindent
+This latter syntax makes it possible to change one destination
+directory without changing the layout of the source tree.
+
+Currently, @samp{nobase_*_LTLIBRARIES} are the only exception to this
+rule, in that there is no particular installation order guarantee for
+an otherwise equivalent set of variables without @samp{nobase_} prefix.
+
+@node Subpackages
+@section Nesting Packages
+@cindex Nesting packages
+@cindex Subpackages
+@acindex AC_CONFIG_SUBDIRS
+@acindex AC_CONFIG_AUX_DIR
+
+
+In the GNU Build System, packages can be nested to arbitrary depth.
+This means that a package can embed other packages with their own
+@file{configure}, @file{Makefile}s, etc.
+
+These other packages should just appear as subdirectories of their
+parent package.  They must be listed in @code{SUBDIRS} like other
+ordinary directories.  However the subpackage's @file{Makefile}s
+should be output by its own @file{configure} script, not by the
+parent's @file{configure}.  This is achieved using the
+@code{AC_CONFIG_SUBDIRS} Autoconf macro (@pxref{Subdirectories,
+AC_CONFIG_SUBDIRS, Configuring Other Packages in Subdirectories,
+autoconf, The Autoconf Manual}).
+
+Here is an example package for an @code{arm} program that links with
+a @code{hand} library that is a nested package in subdirectory
+@file{hand/}.
+
+@code{arm}'s @file{configure.ac}:
+
+@example
+AC_INIT([arm], [1.0])
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AC_CONFIG_FILES([Makefile])
+# Call hand's ./configure script recursively.
+AC_CONFIG_SUBDIRS([hand])
+AC_OUTPUT
+@end example
+
+@code{arm}'s @file{Makefile.am}:
+
+@example
+# Build the library in the hand subdirectory first.
+SUBDIRS = hand
+
+# Include hand's header when compiling this directory.
+AM_CPPFLAGS = -I$(srcdir)/hand
+
+bin_PROGRAMS = arm
+arm_SOURCES = arm.c
+# link with the hand library.
+arm_LDADD = hand/libhand.a
+@end example
+
+Now here is @code{hand}'s @file{hand/configure.ac}:
+
+@example
+AC_INIT([hand], [1.2])
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+@end example
+
+@noindent
+and its @file{hand/Makefile.am}:
+
+@example
+lib_LIBRARIES = libhand.a
+libhand_a_SOURCES = hand.c
+@end example
+
+When @samp{make dist} is run from the top-level directory it will
+create an archive @file{arm-1.0.tar.gz} that contains the @code{arm}
+code as well as the @file{hand} subdirectory.  This package can be
+built and installed like any ordinary package, with the usual
+@samp{./configure && make && make install} sequence (the @code{hand}
+subpackage will be built and installed by the process).
+
+When @samp{make dist} is run from the hand directory, it will create a
+self-contained @file{hand-1.2.tar.gz} archive.  So although it appears
+to be embedded in another package, it can still be used separately.
+
+The purpose of the @samp{AC_CONFIG_AUX_DIR([.])} instruction is to
+force Automake and Autoconf to search for auxiliary scripts in the
+current directory.  For instance, this means that there will be two
+copies of @file{install-sh}: one in the top-level of the @code{arm}
+package, and another one in the @file{hand/} subdirectory for the
+@code{hand} package.
+
+The historical default is to search for these auxiliary scripts in
+the parent directory and the grandparent directory.  So if the
+@samp{AC_CONFIG_AUX_DIR([.])} line was removed from
+@file{hand/configure.ac}, that subpackage would share the auxiliary
+script of the @code{arm} package.  This may looks like a gain in size
+(a few kilobytes), but it is actually a loss of modularity as the
+@code{hand} subpackage is no longer self-contained (@samp{make dist}
+in the subdirectory will not work anymore).
+
+Packages that do not use Automake need more work to be integrated this
+way.  @xref{Third-Party Makefiles}.
+
+@node Programs
+@chapter Building Programs and Libraries
+
+A large part of Automake's functionality is dedicated to making it easy
+to build programs and libraries.
+
+@menu
+* A Program::                   Building a program
+* A Library::                   Building a library
+* A Shared Library::            Building a Libtool library
+* Program and Library Variables::  Variables controlling program and
+                                library builds
+* Default _SOURCES::            Default source files
+* LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
+* 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
+* Objective C++ Support::       Compiling Objective C++ sources
+* Unified Parallel C Support::  Compiling Unified Parallel C sources
+* Assembly Support::            Compiling assembly sources
+* Fortran 77 Support::          Compiling Fortran 77 sources
+* Fortran 9x Support::          Compiling Fortran 9x sources
+* Java Support with gcj::       Compiling Java sources using gcj
+* Vala Support::                Compiling Vala sources
+* Support for Other Languages::  Compiling other languages
+* Dependencies::                Automatic dependency tracking
+* EXEEXT::                      Support for executable extensions
+@end menu
+
+
+@node A Program
+@section Building a program
+
+In order to build a program, you need to tell Automake which sources
+are part of it, and which libraries it should be linked with.
+
+This section also covers conditional compilation of sources or
+programs.  Most of the comments about these also apply to libraries
+(@pxref{A Library}) and libtool libraries (@pxref{A Shared Library}).
+
+@menu
+* Program Sources::             Defining program sources
+* Linking::                     Linking with libraries or extra objects
+* Conditional Sources::         Handling conditional sources
+* Conditional Programs::        Building a program conditionally
+@end menu
+
+@node Program Sources
+@subsection Defining program sources
+
+@cindex @code{PROGRAMS}, @code{bindir}
+@vindex _PROGRAMS
+@vindex bin_PROGRAMS
+@vindex sbin_PROGRAMS
+@vindex libexec_PROGRAMS
+@vindex pkglibexec_PROGRAMS
+@vindex noinst_PROGRAMS
+@vindex check_PROGRAMS
+
+In a directory containing source that gets built into a program (as
+opposed to a library or a script), the @code{PROGRAMS} primary is used.
+Programs can be installed in @code{bindir}, @code{sbindir},
+@code{libexecdir}, @code{pkglibexecdir}, or not at all
+(@code{noinst_}).  They can also be built only for @samp{make check}, in
+which case the prefix is @samp{check_}.
+
+For instance:
+
+@example
+bin_PROGRAMS = hello
+@end example
+
+In this simple case, the resulting @file{Makefile.in} will contain code
+to generate a program named @code{hello}.
+
+Associated with each program are several assisting variables that are
+named after the program.  These variables are all optional, and have
+reasonable defaults.  Each variable, its use, and default is spelled out
+below; we use the ``hello'' example throughout.
+
+The variable @code{hello_SOURCES} is used to specify which source files
+get built into an executable:
+
+@example
+hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
+@end example
+
+This causes each mentioned @file{.c} file to be compiled into the
+corresponding @file{.o}.  Then all are linked to produce @file{hello}.
+
+@cindex @code{_SOURCES} primary, defined
+@cindex @code{SOURCES} primary, defined
+@cindex Primary variable, @code{SOURCES}
+@vindex _SOURCES
+
+If @code{hello_SOURCES} is not specified, then it defaults to the single
+file @file{hello.c} (@pxref{Default _SOURCES}).
+@vindex _SOURCES
+@vindex SOURCES
+
+Multiple programs can be built in a single directory.  Multiple programs
+can share a single source file, which must be listed in each
+@code{_SOURCES} definition.
+
+@cindex Header files in @code{_SOURCES}
+@cindex @code{_SOURCES} and header files
+
+Header files listed in a @code{_SOURCES} definition will be included in
+the distribution but otherwise ignored.  In case it isn't obvious, you
+should not include the header file generated by @file{configure} in a
+@code{_SOURCES} variable; this file should not be distributed.  Lex
+(@file{.l}) and Yacc (@file{.y}) files can also be listed; see @ref{Yacc
+and Lex}.
+
+
+@node Linking
+@subsection Linking the program
+
+If you need to link against libraries that are not found by
+@command{configure}, you can use @code{LDADD} to do so.  This variable is
+used to specify additional objects or libraries to link with; it is
+inappropriate for specifying specific linker flags, you should use
+@code{AM_LDFLAGS} for this purpose.
+@vindex LDADD
+@vindex AM_LDFLAGS
+
+@cindex @code{prog_LDADD}, defined
+
+Sometimes, multiple programs are built in one directory but do not share
+the same link-time requirements.  In this case, you can use the
+@code{@var{prog}_LDADD} variable (where @var{prog} is the name of the
+program as it appears in some @code{_PROGRAMS} variable, and usually
+written in lowercase) to override @code{LDADD}.  If this variable exists
+for a given program, then that program is not linked using @code{LDADD}.
+@vindex maude_LDADD
+
+For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
+linked against the library @file{libcpio.a}.  However, @code{rmt} is
+built in the same directory, and has no such link requirement.  Also,
+@code{mt} and @code{rmt} are only built on certain architectures.  Here
+is what cpio's @file{src/Makefile.am} looks like (abridged):
+
+@example
+bin_PROGRAMS = cpio pax $(MT)
+libexec_PROGRAMS = $(RMT)
+EXTRA_PROGRAMS = mt rmt
+
+LDADD = ../lib/libcpio.a $(INTLLIBS)
+rmt_LDADD =
+
+cpio_SOURCES = @dots{}
+pax_SOURCES = @dots{}
+mt_SOURCES = @dots{}
+rmt_SOURCES = @dots{}
+@end example
+
+@cindex @code{_LDFLAGS}, defined
+@vindex maude_LDFLAGS
+@code{@var{prog}_LDADD} is inappropriate for passing program-specific
+linker flags (except for @option{-l}, @option{-L}, @option{-dlopen} and
+@option{-dlpreopen}).  So, use the @code{@var{prog}_LDFLAGS} variable for
+this purpose.
+
+@cindex @code{_DEPENDENCIES}, defined
+@vindex maude_DEPENDENCIES
+@vindex EXTRA_maude_DEPENDENCIES
+It is also occasionally useful to have a program depend on some other
+target that is not actually part of that program.  This can be done
+using either the @code{@var{prog}_DEPENDENCIES} or the
+@code{EXTRA_@var{prog}_DEPENDENCIES} variable.  Each program depends on
+the contents both variables, but no further interpretation is done.
+
+Since these dependencies are associated to the link rule used to
+create the programs they should normally list files used by the link
+command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la}
+files.  In rare cases you may need to add other kinds of files such as
+linker scripts, but @emph{listing a source file in
+@code{_DEPENDENCIES} is wrong}.  If some source file needs to be built
+before all the components of a program are built, consider using the
+@code{BUILT_SOURCES} variable instead (@pxref{Sources}).
+
+If @code{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
+Automake.  The automatically-assigned value is the contents of
+@code{@var{prog}_LDADD}, with most configure substitutions, @option{-l},
+@option{-L}, @option{-dlopen} and @option{-dlpreopen} options removed.  The
+configure substitutions that are left in are only @samp{$(LIBOBJS)} and
+@samp{$(ALLOCA)}; these are left because it is known that they will not
+cause an invalid value for @code{@var{prog}_DEPENDENCIES} to be
+generated.
+
+@ref{Conditional Sources} shows a situation where @code{_DEPENDENCIES}
+may be used.
+
+The @code{EXTRA_@var{prog}_DEPENDENCIES} may be useful for cases where
+you merely want to augment the @command{automake}-generated
+@code{@var{prog}_DEPENDENCIES} rather than replacing it.
+
+@cindex @code{LDADD} and @option{-l}
+@cindex @option{-l} and @code{LDADD}
+We recommend that you avoid using @option{-l} options in @code{LDADD}
+or @code{@var{prog}_LDADD} when referring to libraries built by your
+package.  Instead, write the file name of the library explicitly as in
+the above @code{cpio} example.  Use @option{-l} only to list
+third-party libraries.  If you follow this rule, the default value of
+@code{@var{prog}_DEPENDENCIES} will list all your local libraries and
+omit the other ones.
+
+
+@node Conditional Sources
+@subsection Conditional compilation of sources
+
+You can't put a configure substitution (e.g., @samp{@@FOO@@} or
+@samp{$(FOO)} where @code{FOO} is defined via @code{AC_SUBST}) into a
+@code{_SOURCES} variable.  The reason for this is a bit hard to
+explain, but suffice to say that it simply won't work.  Automake will
+give an error if you try to do this.
+
+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.
+
+@subsubheading Conditional Compilation using @code{_LDADD} Substitutions
+
+@cindex @code{EXTRA_prog_SOURCES}, defined
+
+Automake must know all the source files that could possibly go into a
+program, even if not all the files are built in every circumstance.  Any
+files that are only conditionally built should be listed in the
+appropriate @code{EXTRA_} variable.  For instance, if
+@file{hello-linux.c} or @file{hello-generic.c} were conditionally included
+in @code{hello}, the @file{Makefile.am} would contain:
+
+@example
+bin_PROGRAMS = hello
+hello_SOURCES = hello-common.c
+EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
+hello_LDADD = $(HELLO_SYSTEM)
+hello_DEPENDENCIES = $(HELLO_SYSTEM)
+@end example
+
+@noindent
+You can then setup the @samp{$(HELLO_SYSTEM)} substitution from
+@file{configure.ac}:
+
+@example
+@dots{}
+case $host in
+  *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
+  *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
+esac
+AC_SUBST([HELLO_SYSTEM])
+@dots{}
+@end example
+
+In this case, the variable @code{HELLO_SYSTEM} should be replaced by
+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.
+
+@subsubheading 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
+@file{Makefile.am} construct to build the same @file{hello} example:
+
+@example
+bin_PROGRAMS = hello
+if LINUX
+hello_SOURCES = hello-linux.c hello-common.c
+else
+hello_SOURCES = hello-generic.c hello-common.c
+endif
+@end example
+
+In this case, @file{configure.ac} should setup the @code{LINUX}
+conditional using @code{AM_CONDITIONAL} (@pxref{Conditionals}).
+
+When using conditionals like this you don't need to use the
+@code{EXTRA_} variable, because Automake will examine the contents of
+each variable to construct the complete list of source files.
+
+If your program uses a lot of files, you will probably prefer a
+conditional @samp{+=}.
+
+@example
+bin_PROGRAMS = hello
+hello_SOURCES = hello-common.c
+if LINUX
+hello_SOURCES += hello-linux.c
+else
+hello_SOURCES += hello-generic.c
+endif
+@end example
+
+@node Conditional Programs
+@subsection Conditional compilation of programs
+@cindex Conditional programs
+@cindex Programs, conditional
+
+Sometimes it is useful to determine the programs that are to be built
+at configure time.  For instance, GNU @code{cpio} only builds
+@code{mt} and @code{rmt} under special circumstances.  The means to
+achieve conditional compilation of programs are the same you can use
+to compile source files conditionally: substitutions or conditionals.
+
+@subsubheading Conditional Programs using @command{configure} Substitutions
+
+@vindex EXTRA_PROGRAMS
+@cindex @code{EXTRA_PROGRAMS}, defined
+In this case, you must notify Automake of all the programs that can
+possibly be built, but at the same time cause the generated
+@file{Makefile.in} to use the programs specified by @command{configure}.
+This is done by having @command{configure} substitute values into each
+@code{_PROGRAMS} definition, while listing all optionally built programs
+in @code{EXTRA_PROGRAMS}.
+
+@example
+bin_PROGRAMS = cpio pax $(MT)
+libexec_PROGRAMS = $(RMT)
+EXTRA_PROGRAMS = mt rmt
+@end example
+
+As explained in @ref{EXEEXT}, Automake will rewrite
+@code{bin_PROGRAMS}, @code{libexec_PROGRAMS}, and
+@code{EXTRA_PROGRAMS}, appending @samp{$(EXEEXT)} to each binary.
+Obviously it cannot rewrite values obtained at run-time through
+@command{configure} substitutions, therefore you should take care of
+appending @samp{$(EXEEXT)} yourself, as in @samp{AC_SUBST([MT],
+['mt$@{EXEEXT@}'])}.
+
+@subsubheading 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
+about @samp{$(EXEEXT)} or @code{EXTRA_PROGRAMS}.
+
+@c Keep in sync with exeext.sh
+@example
+bin_PROGRAMS = cpio pax
+if WANT_MT
+  bin_PROGRAMS += mt
+endif
+if WANT_RMT
+  libexec_PROGRAMS = rmt
+endif
+@end example
+
+
+@node A Library
+@section Building a library
+
+@cindex @code{_LIBRARIES} primary, defined
+@cindex @code{LIBRARIES} primary, defined
+@cindex Primary variable, @code{LIBRARIES}
+@vindex _LIBRARIES
+
+@vindex lib_LIBRARIES
+@vindex pkglib_LIBRARIES
+@vindex noinst_LIBRARIES
+
+Building a library is much like building a program.  In this case, the
+name of the primary is @code{LIBRARIES}.  Libraries can be installed in
+@code{libdir} or @code{pkglibdir}.
+
+@xref{A Shared Library}, for information on how to build shared
+libraries using libtool and the @code{LTLIBRARIES} primary.
+
+Each @code{_LIBRARIES} variable is a list of the libraries to be built.
+For instance, to create a library named @file{libcpio.a}, but not install
+it, you would write:
+
+@example
+noinst_LIBRARIES = libcpio.a
+libcpio_a_SOURCES = @dots{}
+@end example
+
+The sources that go into a library are determined exactly as they are
+for programs, via the @code{_SOURCES} variables.  Note that the library
+name is canonicalized (@pxref{Canonicalization}), so the @code{_SOURCES}
+variable corresponding to @file{libcpio.a} is @samp{libcpio_a_SOURCES},
+not @samp{libcpio.a_SOURCES}.
+
+@vindex maude_LIBADD
+Extra objects can be added to a library using the
+@code{@var{library}_LIBADD} variable.  This should be used for objects
+determined by @command{configure}.  Again from @code{cpio}:
+
+@c Keep in sync with pr401c.sh
+@example
+libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
+@end example
+
+In addition, sources for extra objects that will not exist until
+configure-time must be added to the @code{BUILT_SOURCES} variable
+(@pxref{Sources}).
+
+Building a static library is done by compiling all object files, then
+by invoking @samp{$(AR) $(ARFLAGS)} followed by the name of the
+library and the list of objects, and finally by calling
+@samp{$(RANLIB)} on that library.  You should call
+@code{AC_PROG_RANLIB} from your @file{configure.ac} to define
+@code{RANLIB} (Automake will complain otherwise).  You should also
+call @code{AM_PROG_AR} to define @code{AR}, in order to support unusual
+archivers such as Microsoft lib.  @code{ARFLAGS} will default to
+@code{cru}; you can override this variable by setting it in your
+@file{Makefile.am} or by @code{AC_SUBST}ing it from your
+@file{configure.ac}.  You can override the @code{AR} variable by
+defining a per-library @code{maude_AR} variable (@pxref{Program and
+Library Variables}).
+
+@cindex Empty libraries
+Be careful when selecting library components conditionally.  Because
+building an empty library is not portable, you should ensure that any
+library always contains at least one object.
+
+To use a static library when building a program, add it to
+@code{LDADD} for this program.  In the following example, the program
+@file{cpio} is statically linked with the library @file{libcpio.a}.
+
+@example
+noinst_LIBRARIES = libcpio.a
+libcpio_a_SOURCES = @dots{}
+
+bin_PROGRAMS = cpio
+cpio_SOURCES = cpio.c @dots{}
+cpio_LDADD = libcpio.a
+@end example
+
+
+@node A Shared Library
+@section Building a Shared Library
+
+@cindex Shared libraries, support for
+
+Building shared libraries portably is a relatively complex matter.
+For this reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
+Libtool Manual}) was created to help build shared libraries in a
+platform-independent way.
+
+@menu
+* Libtool Concept::             Introducing Libtool
+* Libtool Libraries::           Declaring Libtool Libraries
+* Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
+* Conditional Libtool Sources::  Choosing Library Sources Conditionally
+* Libtool Convenience Libraries::  Building Convenience Libtool Libraries
+* Libtool Modules::             Building Libtool Modules
+* Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
+* LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
+* Libtool Issues::              Common Issues Related to Libtool's Use
+@end menu
+
+@node Libtool Concept
+@subsection The Libtool Concept
+
+@cindex @command{libtool}, introduction
+@cindex libtool library, definition
+@cindex suffix @file{.la}, defined
+@cindex @file{.la} suffix, defined
+
+Libtool abstracts shared and static libraries into a unified concept
+henceforth called @dfn{libtool libraries}.  Libtool libraries are
+files using the @file{.la} suffix, and can designate a static library,
+a shared library, or maybe both.  Their exact nature cannot be
+determined until @file{./configure} is run: not all platforms support
+all kinds of libraries, and users can explicitly select which
+libraries should be built.  (However the package's maintainers can
+tune the default, @pxref{AC_PROG_LIBTOOL, , The @code{AC_PROG_LIBTOOL}
+macro, libtool, The Libtool Manual}.)
+
+@cindex suffix @file{.lo}, defined
+Because object files for shared and static libraries must be compiled
+differently, libtool is also used during compilation.  Object files
+built by libtool are called @dfn{libtool objects}: these are files
+using the @file{.lo} suffix.  Libtool libraries are built from these
+libtool objects.
+
+You should not assume anything about the structure of @file{.la} or
+@file{.lo} files and how libtool constructs them: this is libtool's
+concern, and the last thing one wants is to learn about libtool's
+guts.  However the existence of these files matters, because they are
+used as targets and dependencies in @file{Makefile}s rules when
+building libtool libraries.  There are situations where you may have
+to refer to these, for instance when expressing dependencies for
+building source files conditionally (@pxref{Conditional Libtool
+Sources}).
+
+@cindex @file{libltdl}, introduction
+
+People considering writing a plug-in system, with dynamically loaded
+modules, should look into @file{libltdl}: libtool's dlopening library
+(@pxref{Using libltdl, , Using libltdl, libtool, The Libtool Manual}).
+This offers a portable dlopening facility to load libtool libraries
+dynamically, and can also achieve static linking where unavoidable.
+
+Before we discuss how to use libtool with Automake in details, it
+should be noted that the libtool manual also has a section about how
+to use Automake with libtool (@pxref{Using Automake, , Using Automake
+with Libtool, libtool, The Libtool Manual}).
+
+@node Libtool Libraries
+@subsection Building Libtool Libraries
+
+@cindex @code{_LTLIBRARIES} primary, defined
+@cindex @code{LTLIBRARIES} primary, defined
+@cindex Primary variable, @code{LTLIBRARIES}
+@cindex Example of shared libraries
+@vindex lib_LTLIBRARIES
+@vindex pkglib_LTLIBRARIES
+@vindex _LTLIBRARIES
+
+Automake uses libtool to build libraries declared with the
+@code{LTLIBRARIES} primary.  Each @code{_LTLIBRARIES} variable is a
+list of libtool libraries to build.  For instance, to create a libtool
+library named @file{libgettext.la}, and install it in @code{libdir},
+write:
+
+@example
+lib_LTLIBRARIES = libgettext.la
+libgettext_la_SOURCES = gettext.c gettext.h @dots{}
+@end example
+
+Automake predefines the variable @code{pkglibdir}, so you can use
+@code{pkglib_LTLIBRARIES} to install libraries in
+@samp{$(libdir)/@@PACKAGE@@/}.
+
+If @file{gettext.h} is a public header file that needs to be installed
+in order for people to use the library, it should be declared using a
+@code{_HEADERS} variable, not in @code{libgettext_la_SOURCES}.
+Headers listed in the latter should be internal headers that are not
+part of the public interface.
+
+@example
+lib_LTLIBRARIES = libgettext.la
+libgettext_la_SOURCES = gettext.c @dots{}
+include_HEADERS = gettext.h @dots{}
+@end example
+
+A package can build and install such a library along with other
+programs that use it.  This dependency should be specified using
+@code{LDADD}.  The following example builds a program named
+@file{hello} that is linked with @file{libgettext.la}.
+
+@example
+lib_LTLIBRARIES = libgettext.la
+libgettext_la_SOURCES = gettext.c @dots{}
+
+bin_PROGRAMS = hello
+hello_SOURCES = hello.c @dots{}
+hello_LDADD = libgettext.la
+@end example
+
+@noindent
+Whether @file{hello} is statically or dynamically linked with
+@file{libgettext.la} is not yet known: this will depend on the
+configuration of libtool and the capabilities of the host.
+
+
+@node Conditional Libtool Libraries
+@subsection Building Libtool Libraries Conditionally
+@cindex libtool libraries, conditional
+@cindex conditional libtool libraries
+
+Like conditional programs (@pxref{Conditional Programs}), there are
+two main ways to build conditional libraries: using Automake
+conditionals or using Autoconf @code{AC_SUBST}itutions.
+
+The important implementation detail you have to be aware of is that
+the place where a library will be installed matters to libtool: it
+needs to be indicated @emph{at link-time} using the @option{-rpath}
+option.
+
+For libraries whose destination directory is known when Automake runs,
+Automake will automatically supply the appropriate @option{-rpath}
+option to libtool.  This is the case for libraries listed explicitly in
+some installable @code{_LTLIBRARIES} variables such as
+@code{lib_LTLIBRARIES}.
+
+However, for libraries determined at configure time (and thus
+mentioned in @code{EXTRA_LTLIBRARIES}), Automake does not know the
+final installation directory.  For such libraries you must add the
+@option{-rpath} option to the appropriate @code{_LDFLAGS} variable by
+hand.
+
+The examples below illustrate the differences between these two methods.
+
+Here is an example where @code{WANTEDLIBS} is an @code{AC_SUBST}ed
+variable set at @file{./configure}-time to either @file{libfoo.la},
+@file{libbar.la}, both, or none.  Although @samp{$(WANTEDLIBS)}
+appears in the @code{lib_LTLIBRARIES}, Automake cannot guess it
+relates to @file{libfoo.la} or @file{libbar.la} at the time it creates
+the link rule for these two libraries.  Therefore the @option{-rpath}
+argument must be explicitly supplied.
+
+@c Keep in sync with ltcond.sh
+@example
+EXTRA_LTLIBRARIES = libfoo.la libbar.la
+lib_LTLIBRARIES = $(WANTEDLIBS)
+libfoo_la_SOURCES = foo.c @dots{}
+libfoo_la_LDFLAGS = -rpath '$(libdir)'
+libbar_la_SOURCES = bar.c @dots{}
+libbar_la_LDFLAGS = -rpath '$(libdir)'
+@end example
+
+Here is how the same @file{Makefile.am} would look using Automake
+conditionals named @code{WANT_LIBFOO} and @code{WANT_LIBBAR}.  Now
+Automake is able to compute the @option{-rpath} setting itself, because
+it's clear that both libraries will end up in @samp{$(libdir)} if they
+are installed.
+
+@c Keep in sync with ltcond.sh
+@example
+lib_LTLIBRARIES =
+if WANT_LIBFOO
+lib_LTLIBRARIES += libfoo.la
+endif
+if WANT_LIBBAR
+lib_LTLIBRARIES += libbar.la
+endif
+libfoo_la_SOURCES = foo.c @dots{}
+libbar_la_SOURCES = bar.c @dots{}
+@end example
+
+@node Conditional Libtool Sources
+@subsection Libtool Libraries with Conditional Sources
+
+Conditional compilation of sources in a library can be achieved in the
+same way as conditional compilation of sources in a program
+(@pxref{Conditional Sources}).  The only difference is that
+@code{_LIBADD} should be used instead of @code{_LDADD} and that it
+should mention libtool objects (@file{.lo} files).
+
+So, to mimic the @file{hello} example from @ref{Conditional Sources},
+we could build a @file{libhello.la} library using either
+@file{hello-linux.c} or @file{hello-generic.c} with the following
+@file{Makefile.am}.
+
+@c Keep in sync with ltcond2.sh
+@example
+lib_LTLIBRARIES = libhello.la
+libhello_la_SOURCES = hello-common.c
+EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
+libhello_la_LIBADD = $(HELLO_SYSTEM)
+libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
+@end example
+
+@noindent
+And make sure @command{configure} defines @code{HELLO_SYSTEM} as
+either @file{hello-linux.lo} or @file{hello-@-generic.lo}.
+
+Or we could simply use an Automake conditional as follows.
+
+@c Keep in sync with ltcond2.sh
+@example
+lib_LTLIBRARIES = libhello.la
+libhello_la_SOURCES = hello-common.c
+if LINUX
+libhello_la_SOURCES += hello-linux.c
+else
+libhello_la_SOURCES += hello-generic.c
+endif
+@end example
+
+@node Libtool Convenience Libraries
+@subsection Libtool Convenience Libraries
+@cindex convenience libraries, libtool
+@cindex libtool convenience libraries
+@vindex noinst_LTLIBRARIES
+@vindex check_LTLIBRARIES
+
+Sometimes you want to build libtool libraries that should not be
+installed.  These are called @dfn{libtool convenience libraries} and
+are typically used to encapsulate many sublibraries, later gathered
+into one big installed library.
+
+Libtool convenience libraries are declared by directory-less variables
+such as @code{noinst_LTLIBRARIES}, @code{check_LTLIBRARIES}, or even
+@code{EXTRA_LTLIBRARIES}.  Unlike installed libtool libraries they do
+not need an @option{-rpath} flag at link time (actually this is the only
+difference).
+
+Convenience libraries listed in @code{noinst_LTLIBRARIES} are always
+built.  Those listed in @code{check_LTLIBRARIES} are built only upon
+@samp{make check}.  Finally, libraries listed in
+@code{EXTRA_LTLIBRARIES} are never built explicitly: Automake outputs
+rules to build them, but if the library does not appear as a Makefile
+dependency anywhere it won't be built (this is why
+@code{EXTRA_LTLIBRARIES} is used for conditional compilation).
+
+Here is a sample setup merging libtool convenience libraries from
+subdirectories into one main @file{libtop.la} library.
+
+@c Keep in sync with ltconv.sh
+@example
+# -- Top-level Makefile.am --
+SUBDIRS = sub1 sub2 @dots{}
+lib_LTLIBRARIES = libtop.la
+libtop_la_SOURCES =
+libtop_la_LIBADD = \
+  sub1/libsub1.la \
+  sub2/libsub2.la \
+  @dots{}
+
+# -- sub1/Makefile.am --
+noinst_LTLIBRARIES = libsub1.la
+libsub1_la_SOURCES = @dots{}
+
+# -- sub2/Makefile.am --
+# showing nested convenience libraries
+SUBDIRS = sub2.1 sub2.2 @dots{}
+noinst_LTLIBRARIES = libsub2.la
+libsub2_la_SOURCES =
+libsub2_la_LIBADD = \
+  sub21/libsub21.la \
+  sub22/libsub22.la \
+  @dots{}
+@end example
+
+When using such setup, beware that @command{automake} will assume
+@file{libtop.la} is to be linked with the C linker.  This is because
+@code{libtop_la_SOURCES} is empty, so @command{automake} picks C as
+default language.  If @code{libtop_la_SOURCES} was not empty,
+@command{automake} would select the linker as explained in @ref{How
+the Linker is Chosen}.
+
+If one of the sublibraries contains non-C source, it is important that
+the appropriate linker be chosen.  One way to achieve this is to
+pretend that there is such a non-C file among the sources of the
+library, thus forcing @command{automake} to select the appropriate
+linker.  Here is the top-level @file{Makefile} of our example updated
+to force C++ linking.
+
+@example
+SUBDIRS = sub1 sub2 @dots{}
+lib_LTLIBRARIES = libtop.la
+libtop_la_SOURCES =
+# Dummy C++ source to cause C++ linking.
+nodist_EXTRA_libtop_la_SOURCES = dummy.cxx
+libtop_la_LIBADD = \
+  sub1/libsub1.la \
+  sub2/libsub2.la \
+  @dots{}
+@end example
+
+@samp{EXTRA_*_SOURCES} variables are used to keep track of source
+files that might be compiled (this is mostly useful when doing
+conditional compilation using @code{AC_SUBST}, @pxref{Conditional
+Libtool Sources}), and the @code{nodist_} prefix means the listed
+sources are not to be distributed (@pxref{Program and Library
+Variables}).  In effect the file @file{dummy.cxx} does not need to
+exist in the source tree.  Of course if you have some real source file
+to list in @code{libtop_la_SOURCES} there is no point in cheating with
+@code{nodist_EXTRA_libtop_la_SOURCES}.
+
+
+@node Libtool Modules
+@subsection Libtool Modules
+@cindex modules, libtool
+@cindex libtool modules
+@cindex @option{-module}, libtool
+
+These are libtool libraries meant to be dlopened.  They are
+indicated to libtool by passing @option{-module} at link-time.
+
+@example
+pkglib_LTLIBRARIES = mymodule.la
+mymodule_la_SOURCES = doit.c
+mymodule_la_LDFLAGS = -module
+@end example
+
+Ordinarily, Automake requires that a library's name start with
+@code{lib}.  However, when building a dynamically loadable module you
+might wish to use a "nonstandard" name.  Automake will not complain
+about such nonstandard names if it knows the library being built is a
+libtool module, i.e., if @option{-module} explicitly appears in the
+library's @code{_LDFLAGS} variable (or in the common @code{AM_LDFLAGS}
+variable when no per-library @code{_LDFLAGS} variable is defined).
+
+As always, @code{AC_SUBST} variables are black boxes to Automake since
+their values are not yet known when @command{automake} is run.
+Therefore if @option{-module} is set via such a variable, Automake
+cannot notice it and will proceed as if the library was an ordinary
+libtool library, with strict naming.
+
+If @code{mymodule_la_SOURCES} is not specified, then it defaults to
+the single file @file{mymodule.c} (@pxref{Default _SOURCES}).
+
+@node Libtool Flags
+@subsection @code{_LIBADD}, @code{_LDFLAGS}, and @code{_LIBTOOLFLAGS}
+@cindex @code{_LIBADD}, libtool
+@cindex @code{_LDFLAGS}, libtool
+@cindex @code{_LIBTOOLFLAGS}, libtool
+@vindex AM_LIBTOOLFLAGS
+@vindex LIBTOOLFLAGS
+@vindex maude_LIBTOOLFLAGS
+
+As shown in previous sections, the @samp{@var{library}_LIBADD}
+variable should be used to list extra libtool objects (@file{.lo}
+files) or libtool libraries (@file{.la}) to add to @var{library}.
+
+The @samp{@var{library}_LDFLAGS} variable is the place to list
+additional libtool linking flags, such as @option{-version-info},
+@option{-static}, and a lot more.  @xref{Link mode, , Link mode,
+libtool, The Libtool Manual}.
+
+The @command{libtool} command has two kinds of options: mode-specific
+options and generic options.  Mode-specific options such as the
+aforementioned linking flags should be lumped with the other flags
+passed to the tool invoked by @command{libtool} (hence the use of
+@samp{@var{library}_LDFLAGS} for libtool linking flags).  Generic
+options include @option{--tag=@var{tag}} and @option{--silent}
+(@pxref{Invoking libtool, , Invoking @command{libtool}, libtool, The
+Libtool Manual} for more options) should appear before the mode
+selection on the command line; in @file{Makefile.am}s they should
+be listed in the @samp{@var{library}_LIBTOOLFLAGS} variable.
+
+If @samp{@var{library}_LIBTOOLFLAGS} is not defined, then the variable
+@code{AM_LIBTOOLFLAGS} is used instead.
+
+These flags are passed to libtool after the @option{--tag=@var{tag}}
+option computed by Automake (if any), so
+@samp{@var{library}_LIBTOOLFLAGS} (or @code{AM_LIBTOOLFLAGS}) is a
+good place to override or supplement the @option{--tag=@var{tag}}
+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.  Note that the verbosity of
+@command{libtool} can also be influenced with the Automake
+@option{silent-rules} option (@pxref{Options}).
+
+
+@node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
+@subsection @code{LTLIBOBJS} and @code{LTALLOCA}
+@cindex @code{LTLIBOBJS}, special handling
+@cindex @code{LIBOBJS}, and Libtool
+@cindex @code{LTALLOCA}, special handling
+@cindex @code{ALLOCA}, and Libtool
+@vindex LTLIBOBJS
+@vindex LIBOBJS
+@vindex LTALLOCA
+@vindex ALLOCA
+@acindex AC_LIBOBJ
+
+Where an ordinary library might include @samp{$(LIBOBJS)} or
+@samp{$(ALLOCA)} (@pxref{LIBOBJS}), a libtool library must use
+@samp{$(LTLIBOBJS)} or @samp{$(LTALLOCA)}.  This is required because
+the object files that libtool operates on do not necessarily end in
+@file{.o}.
+
+Nowadays, the computation of @code{LTLIBOBJS} from @code{LIBOBJS} is
+performed automatically by Autoconf (@pxref{AC_LIBOBJ vs LIBOBJS, ,
+@code{AC_LIBOBJ} vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual}).
+
+@node Libtool Issues
+@subsection Common Issues Related to Libtool's Use
+
+@menu
+* Error required file ltmain.sh not found::  The need to run libtoolize
+* Objects created both with libtool and without::  Avoid a specific build race
+@end menu
+
+@node Error required file ltmain.sh not found
+@subsubsection 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}
+@cindex @command{autoreconf} and @command{libtoolize}
+@cindex @file{bootstrap.sh} and @command{autoreconf}
+@cindex @file{autogen.sh} and @command{autoreconf}
+
+Libtool comes with a tool called @command{libtoolize} that will
+install libtool's supporting files into a package.  Running this
+command will install @file{ltmain.sh}.  You should execute it before
+@command{aclocal} and @command{automake}.
+
+People upgrading old packages to newer autotools are likely to face
+this issue because older Automake versions used to call
+@command{libtoolize}.  Therefore old build scripts do not call
+@command{libtoolize}.
+
+Since Automake 1.6, it has been decided that running
+@command{libtoolize} was none of Automake's business.  Instead, that
+functionality has been moved into the @command{autoreconf} command
+(@pxref{autoreconf Invocation, , Using @command{autoreconf}, autoconf,
+The Autoconf Manual}).  If you do not want to remember what to run and
+when, just learn the @command{autoreconf} command.  Hopefully,
+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.
+
+@node 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
+library and to build another non-libtool target (be it a program or
+another library).
+
+Let's consider the following @file{Makefile.am}.
+
+@example
+bin_PROGRAMS = prog
+prog_SOURCES = prog.c foo.c @dots{}
+
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.c @dots{}
+@end example
+
+@noindent
+(In this trivial case the issue could be avoided by linking
+@file{libfoo.la} with @file{prog} instead of listing @file{foo.c} in
+@code{prog_SOURCES}.  But let's assume we really want to keep
+@file{prog} and @file{libfoo.la} separate.)
+
+Technically, it means that we should build @file{foo.$(OBJEXT)} for
+@file{prog}, and @file{foo.lo} for @file{libfoo.la}.  The problem is
+that in the course of creating @file{foo.lo}, libtool may erase (or
+replace) @file{foo.$(OBJEXT)}, and this cannot be avoided.
+
+Therefore, when Automake detects this situation it will complain
+with a message such as
+@example
+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
+happens automatically when per-targets flags are used.
+
+@example
+bin_PROGRAMS = prog
+prog_SOURCES = prog.c foo.c @dots{}
+prog_CFLAGS = $(AM_CFLAGS)
+
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.c @dots{}
+@end example
+
+@noindent
+Adding @samp{prog_CFLAGS = $(AM_CFLAGS)} is almost a no-op, because
+when the @code{prog_CFLAGS} is defined, it is used instead of
+@code{AM_CFLAGS}.  However as a side effect it will cause
+@file{prog.c} and @file{foo.c} to be compiled as
+@file{prog-prog.$(OBJEXT)} and @file{prog-foo.$(OBJEXT)}, which solves
+the issue.
+
+@node Program and Library Variables
+@section Program and Library Variables
+
+Associated with each program is a collection of variables that can be
+used to modify how that program is built.  There is a similar list of
+such variables for each library.  The canonical name of the program (or
+library) is used as a base for naming these variables.
+
+In the list below, we use the name ``maude'' to refer to the program or
+library.  In your @file{Makefile.am} you would replace this with the
+canonical name of your program.  This list also refers to ``maude'' as a
+program, but in general the same rules apply for both static and dynamic
+libraries; the documentation below notes situations where programs and
+libraries differ.
+
+@vtable @code
+@item maude_SOURCES
+This variable, if it exists, lists all the source files that are
+compiled to build the program.  These files are added to the
+distribution by default.  When building the program, Automake will cause
+each source file to be compiled to a single @file{.o} file (or
+@file{.lo} when using libtool).  Normally these object files are named
+after the source file, but other factors can change this.  If a file in
+the @code{_SOURCES} variable has an unrecognized extension, Automake
+will do one of two things with it.  If a suffix rule exists for turning
+files with the unrecognized extension into @file{.o} files, then
+@command{automake} will treat this file as it will any other source file
+(@pxref{Support for Other Languages}).  Otherwise, the file will be
+ignored as though it were a header file.
+
+The prefixes @code{dist_} and @code{nodist_} can be used to control
+whether files listed in a @code{_SOURCES} variable are distributed.
+@code{dist_} is redundant, as sources are distributed by default, but it
+can be specified for clarity if desired.
+
+It is possible to have both @code{dist_} and @code{nodist_} variants of
+a given @code{_SOURCES} variable at once; this lets you easily
+distribute some files and not others, for instance:
+
+@example
+nodist_maude_SOURCES = nodist.c
+dist_maude_SOURCES = dist-me.c
+@end example
+
+By default the output file (on Unix systems, the @file{.o} file) will
+be put into the current build directory.  However, if the option
+@option{subdir-objects} is in effect in the current directory then the
+@file{.o} file will be put into the subdirectory named after the
+source file.  For instance, with @option{subdir-objects} enabled,
+@file{sub/dir/file.c} will be compiled to @file{sub/dir/file.o}.  Some
+people prefer this mode of operation.  You can specify
+@option{subdir-objects} in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
+@cindex Subdirectory, objects in
+@cindex Objects in subdirectory
+
+
+@item EXTRA_maude_SOURCES
+Automake needs to know the list of files you intend to compile
+@emph{statically}.  For one thing, this is the only way Automake has of
+knowing what sort of language support a given @file{Makefile.in}
+requires.  @footnote{There are other, more obscure reasons for
+this limitation as well.}  This means that, for example, you can't put a
+configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
+variable.  If you intend to conditionally compile source files and use
+@file{configure} to substitute the appropriate object names into, e.g.,
+@code{_LDADD} (see below), then you should list the corresponding source
+files in the @code{EXTRA_} variable.
+
+This variable also supports @code{dist_} and @code{nodist_} prefixes.
+For instance, @code{nodist_EXTRA_maude_SOURCES} would list extra
+sources that may need to be built, but should not be distributed.
+
+@item maude_AR
+A static library is created by default by invoking @samp{$(AR)
+$(ARFLAGS)} followed by the name of the library and then the objects
+being put into the library.  You can override this by setting the
+@code{_AR} variable.  This is usually used with C++; some C++
+compilers require a special invocation in order to instantiate all the
+templates that should go into a library.  For instance, the SGI C++
+compiler likes this variable set like so:
+@example
+libmaude_a_AR = $(CXX) -ar -o
+@end example
+
+@item maude_LIBADD
+Extra objects can be added to a @emph{library} using the @code{_LIBADD}
+variable.  For instance, this should be used for objects determined by
+@command{configure} (@pxref{A Library}).
+
+In the case of libtool libraries, @code{maude_LIBADD} can also refer
+to other libtool libraries.
+
+@item maude_LDADD
+Extra objects (@file{*.$(OBJEXT)}) and libraries (@file{*.a},
+@file{*.la}) can be added to a @emph{program} by listing them in the
+@code{_LDADD} variable.  For instance, this should be used for objects
+determined by @command{configure} (@pxref{Linking}).
+
+@code{_LDADD} and @code{_LIBADD} are inappropriate for passing
+program-specific linker flags (except for @option{-l}, @option{-L},
+@option{-dlopen} and @option{-dlpreopen}).  Use the @code{_LDFLAGS} variable
+for this purpose.
+
+For instance, if your @file{configure.ac} uses @code{AC_PATH_XTRA}, you
+could link your program against the X libraries like so:
+
+@example
+maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
+@end example
+
+We recommend that you use @option{-l} and @option{-L} only when
+referring to third-party libraries, and give the explicit file names
+of any library built by your package.  Doing so will ensure that
+@code{maude_DEPENDENCIES} (see below) is correctly defined by default.
+
+@item maude_LDFLAGS
+This variable is used to pass extra flags to the link step of a program
+or a shared library.  It overrides the @code{AM_LDFLAGS} variable.
+
+@item maude_LIBTOOLFLAGS
+This variable is used to pass extra options to @command{libtool}.
+It overrides the @code{AM_LIBTOOLFLAGS} variable.
+These options are output before @command{libtool}'s @option{--mode=@var{mode}}
+option, so they should not be mode-specific options (those belong to
+the compiler or linker flags).  @xref{Libtool Flags}.
+
+@item maude_DEPENDENCIES
+@itemx EXTRA_maude_DEPENDENCIES
+It is also occasionally useful to have a target (program or library)
+depend on some other file that is not actually part of that target.
+This can be done using the @code{_DEPENDENCIES} variable.  Each
+target depends on the contents of such a variable, but no further
+interpretation is done.
+
+Since these dependencies are associated to the link rule used to
+create the programs they should normally list files used by the link
+command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la} files
+for programs; @file{*.lo} and @file{*.la} files for Libtool libraries;
+and @file{*.$(OBJEXT)} files for static libraries.  In rare cases you
+may need to add other kinds of files such as linker scripts, but
+@emph{listing a source file in @code{_DEPENDENCIES} is wrong}.  If
+some source file needs to be built before all the components of a
+program are built, consider using the @code{BUILT_SOURCES} variable
+(@pxref{Sources}).
+
+If @code{_DEPENDENCIES} is not supplied, it is computed by Automake.
+The automatically-assigned value is the contents of @code{_LDADD} or
+@code{_LIBADD}, with most configure substitutions, @option{-l}, @option{-L},
+@option{-dlopen} and @option{-dlpreopen} options removed.  The configure
+substitutions that are left in are only @samp{$(LIBOBJS)} and
+@samp{$(ALLOCA)}; these are left because it is known that they will not
+cause an invalid value for @code{_DEPENDENCIES} to be generated.
+
+@code{_DEPENDENCIES} is more likely used to perform conditional
+compilation using an @code{AC_SUBST} variable that contains a list of
+objects.  @xref{Conditional Sources}, and @ref{Conditional Libtool
+Sources}.
+
+The @code{EXTRA_*_DEPENDENCIES} variable may be useful for cases where
+you merely want to augment the @command{automake}-generated
+@code{_DEPENDENCIES} variable rather than replacing it.
+
+@item maude_LINK
+You can override the linker on a per-program basis.  By default the
+linker is chosen according to the languages used by the program.  For
+instance, a program that includes C++ source code would use the C++
+compiler to link.  The @code{_LINK} variable must hold the name of a
+command that can be passed all the @file{.o} file names and libraries
+to link against as arguments.  Note that the name of the underlying
+program is @emph{not} passed to @code{_LINK}; typically one uses
+@samp{$@@}:
+
+@example
+maude_LINK = $(CCLD) -magic -o $@@
+@end example
+
+If a @code{_LINK} variable is not supplied, it may still be generated
+and used by Automake due to the use of per-target link flags such as
+@code{_CFLAGS}, @code{_LDFLAGS} or @code{_LIBTOOLFLAGS}, in cases where
+they apply.
+
+@item maude_CCASFLAGS
+@itemx maude_CFLAGS
+@itemx maude_CPPFLAGS
+@itemx maude_CXXFLAGS
+@itemx maude_FFLAGS
+@itemx maude_GCJFLAGS
+@itemx maude_LFLAGS
+@itemx maude_OBJCFLAGS
+@itemx maude_OBJCXXFLAGS
+@itemx maude_RFLAGS
+@itemx maude_UPCFLAGS
+@itemx maude_YFLAGS
+@cindex per-target compilation flags, defined
+Automake allows you to set compilation flags on a per-program (or
+per-library) basis.  A single source file can be included in several
+programs, and it will potentially be compiled with different flags for
+each program.  This works for any language directly supported by
+Automake.  These @dfn{per-target compilation flags} are
+@samp{_CCASFLAGS},
+@samp{_CFLAGS},
+@samp{_CPPFLAGS},
+@samp{_CXXFLAGS},
+@samp{_FFLAGS},
+@samp{_GCJFLAGS},
+@samp{_LFLAGS},
+@samp{_OBJCFLAGS},
+@samp{_OBJCXXFLAGS},
+@samp{_RFLAGS},
+@samp{_UPCFLAGS}, and
+@samp{_YFLAGS}.
+
+When using a per-target compilation flag, Automake will choose a
+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
+with C sources requires that the macro @code{AM_PROG_CC_C_O} be called
+from @file{configure.ac}.
+
+In compilations with per-target flags, the ordinary @samp{AM_} form of
+the flags variable is @emph{not} automatically included in the
+compilation (however, the user form of the variable @emph{is} included).
+So for instance, if you want the hypothetical @file{maude} compilations
+to also use the value of @code{AM_CFLAGS}, you would need to write:
+
+@example
+maude_CFLAGS = @dots{} your flags @dots{} $(AM_CFLAGS)
+@end example
+
+@xref{Flag Variables Ordering}, for more discussion about the
+interaction between user variables, @samp{AM_} shadow variables, and
+per-target variables.
+
+@item maude_SHORTNAME
+On some platforms the allowable file names are very short.  In order to
+support these systems and per-target compilation flags at the same
+time, Automake allows you to set a ``short name'' that will influence
+how intermediate object files are named.  For instance, in the following
+example,
+
+@example
+bin_PROGRAMS = maude
+maude_CPPFLAGS = -DSOMEFLAG
+maude_SHORTNAME = m
+maude_SOURCES = sample.c @dots{}
+@end example
+
+@noindent
+the object file would be named @file{m-sample.o} rather than
+@file{maude-sample.o}.
+
+This facility is rarely needed in practice,
+and we recommend avoiding it until you find it is required.
+@end vtable
+
+@node Default _SOURCES
+@section Default @code{_SOURCES}
+
+@vindex _SOURCES
+@vindex SOURCES
+@cindex @code{_SOURCES}, default
+@cindex default @code{_SOURCES}
+@vindex AM_DEFAULT_SOURCE_EXT
+
+@code{_SOURCES} variables are used to specify source files of programs
+(@pxref{A Program}), libraries (@pxref{A Library}), and Libtool
+libraries (@pxref{A Shared Library}).
+
+When no such variable is specified for a target, Automake will define
+one itself.  The default is to compile a single C file whose base name
+is the name of the target itself, with any extension replaced by
+@code{AM_DEFAULT_SOURCE_EXT}, which defaults to @file{.c}.
+
+For example if you have the following somewhere in your
+@file{Makefile.am} with no corresponding @code{libfoo_a_SOURCES}:
+
+@example
+lib_LIBRARIES = libfoo.a sub/libc++.a
+@end example
+
+@noindent
+@file{libfoo.a} will be built using a default source file named
+@file{libfoo.c}, and @file{sub/libc++.a} will be built from
+@file{sub/libc++.c}.  (In older versions @file{sub/libc++.a}
+would be built from @file{sub_libc___a.c}, i.e., the default source
+was the canonized name of the target, with @file{.c} appended.
+We believe the new behavior is more sensible, but for backward
+compatibility @command{automake} will use the old name if a file or a rule
+with that name exists and @code{AM_DEFAULT_SOURCE_EXT} is not used.)
+
+@cindex @code{check_PROGRAMS} example
+@vindex check_PROGRAMS
+Default sources are mainly useful in test suites, when building many
+test programs each from a single source.  For instance, in
+
+@example
+check_PROGRAMS = test1 test2 test3
+AM_DEFAULT_SOURCE_EXT = .cpp
+@end example
+
+@noindent
+@file{test1}, @file{test2}, and @file{test3} will be built
+from @file{test1.cpp}, @file{test2.cpp}, and @file{test3.cpp}.
+Without the last line, they will be built from @file{test1.c},
+@file{test2.c}, and @file{test3.c}.
+
+@cindex Libtool modules, default source example
+@cindex default source, Libtool modules example
+Another case where this is convenient is building many Libtool modules
+(@file{module@var{n}.la}), each defined in its own file
+(@file{module@var{n}.c}).
+
+@example
+AM_LDFLAGS = -module
+lib_LTLIBRARIES = module1.la module2.la module3.la
+@end example
+
+@cindex empty @code{_SOURCES}
+@cindex @code{_SOURCES}, empty
+Finally, there is one situation where this default source computation
+needs to be avoided: when a target should not be built from sources.
+We already saw such an example in @ref{true}; this happens when all
+the constituents of a target have already been compiled and just need
+to be combined using a @code{_LDADD} variable.  Then it is necessary
+to define an empty @code{_SOURCES} variable, so that @command{automake}
+does not compute a default.
+
+@example
+bin_PROGRAMS = target
+target_SOURCES =
+target_LDADD = libmain.a libmisc.a
+@end example
+
+@node LIBOBJS
+@section Special handling for @code{LIBOBJS} and @code{ALLOCA}
+
+@cindex @code{LIBOBJS}, example
+@cindex @code{ALLOCA}, example
+@cindex @code{LIBOBJS}, special handling
+@cindex @code{ALLOCA}, special handling
+@vindex LTLIBOBJS
+@vindex LIBOBJS
+@vindex LTALLOCA
+@vindex ALLOCA
+
+The @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} variables list object
+files that should be compiled into the project to provide an
+implementation for functions that are missing or broken on the host
+system.  They are substituted by @file{configure}.
+
+@acindex AC_LIBOBJ
+
+These variables are defined by Autoconf macros such as
+@code{AC_LIBOBJ}, @code{AC_REPLACE_FUNCS} (@pxref{Generic Functions, ,
+Generic Function Checks, autoconf, The Autoconf Manual}), or
+@code{AC_FUNC_ALLOCA} (@pxref{Particular Functions, , Particular
+Function Checks, autoconf, The Autoconf Manual}).  Many other Autoconf
+macros call @code{AC_LIBOBJ} or @code{AC_REPLACE_FUNCS} to
+populate @samp{$(LIBOBJS)}.
+
+@acindex AC_LIBSOURCE
+
+Using these variables is very similar to doing conditional compilation
+using @code{AC_SUBST} variables, as described in @ref{Conditional
+Sources}.  That is, when building a program, @samp{$(LIBOBJS)} and
+@samp{$(ALLOCA)} should be added to the associated @samp{*_LDADD}
+variable, or to the @samp{*_LIBADD} variable when building a library.
+However there is no need to list the corresponding sources in
+@samp{EXTRA_*_SOURCES} nor to define @samp{*_DEPENDENCIES}.  Automake
+automatically adds @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} to the
+dependencies, and it will discover the list of corresponding source
+files automatically (by tracing the invocations of the
+@code{AC_LIBSOURCE} Autoconf macros).  If you have already defined
+@samp{*_DEPENDENCIES} explicitly for an unrelated reason, then you
+either need to add these variables manually, or use
+@samp{EXTRA_*_DEPENDENCIES} instead of @samp{*_DEPENDENCIES}.
+
+These variables are usually used to build a portability library that
+is linked with all the programs of the project.  We now review a
+sample setup.  First, @file{configure.ac} contains some checks that
+affect either @code{LIBOBJS} or @code{ALLOCA}.
+
+@example
+# configure.ac
+@dots{}
+AC_CONFIG_LIBOBJ_DIR([lib])
+@dots{}
+AC_FUNC_MALLOC             dnl May add malloc.$(OBJEXT) to LIBOBJS
+AC_FUNC_MEMCMP             dnl May add memcmp.$(OBJEXT) to LIBOBJS
+AC_REPLACE_FUNCS([strdup]) dnl May add strdup.$(OBJEXT) to LIBOBJS
+AC_FUNC_ALLOCA             dnl May add alloca.$(OBJEXT) to ALLOCA
+@dots{}
+AC_CONFIG_FILES([
+  lib/Makefile
+  src/Makefile
+])
+AC_OUTPUT
+@end example
+
+@acindex AC_CONFIG_LIBOBJ_DIR
+
+The @code{AC_CONFIG_LIBOBJ_DIR} tells Autoconf that the source files
+of these object files are to be found in the @file{lib/} directory.
+Automake can also use this information, otherwise it expects the
+source files are to be in the directory where the @samp{$(LIBOBJS)}
+and @samp{$(ALLOCA)} variables are used.
+
+The @file{lib/} directory should therefore contain @file{malloc.c},
+@file{memcmp.c}, @file{strdup.c}, @file{alloca.c}.  Here is its
+@file{Makefile.am}:
+
+@example
+# lib/Makefile.am
+
+noinst_LIBRARIES = libcompat.a
+libcompat_a_SOURCES =
+libcompat_a_LIBADD = $(LIBOBJS) $(ALLOCA)
+@end example
+
+The library can have any name, of course, and anyway it is not going
+to be installed: it just holds the replacement versions of the missing
+or broken functions so we can later link them in.  Many projects
+also include extra functions, specific to the project, in that
+library: they are simply added on the @code{_SOURCES} line.
+
+@cindex Empty libraries and @samp{$(LIBOBJS)}
+@cindex @samp{$(LIBOBJS)} and empty libraries
+There is a small trap here, though: @samp{$(LIBOBJS)} and
+@samp{$(ALLOCA)} might be empty, and building an empty library is not
+portable.  You should ensure that there is always something to put in
+@file{libcompat.a}.  Most projects will also add some utility
+functions in that directory, and list them in
+@code{libcompat_a_SOURCES}, so in practice @file{libcompat.a} cannot
+be empty.
+
+Finally here is how this library could be used from the @file{src/}
+directory.
+
+@example
+# src/Makefile.am
+
+# Link all programs in this directory with libcompat.a
+LDADD = ../lib/libcompat.a
+
+bin_PROGRAMS = tool1 tool2 @dots{}
+tool1_SOURCES = @dots{}
+tool2_SOURCES = @dots{}
+@end example
+
+When option @option{subdir-objects} is not used, as in the above
+example, the variables @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} can only
+be used in the directory where their sources lie.  E.g., here it would
+be wrong to use @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} in
+@file{src/Makefile.am}.  However if both @option{subdir-objects} and
+@code{AC_CONFIG_LIBOBJ_DIR} are used, it is OK to use these variables
+in other directories.  For instance @file{src/Makefile.am} could be
+changed as follows.
+
+@example
+# src/Makefile.am
+
+AUTOMAKE_OPTIONS = subdir-objects
+LDADD = $(LIBOBJS) $(ALLOCA)
+
+bin_PROGRAMS = tool1 tool2 @dots{}
+tool1_SOURCES = @dots{}
+tool2_SOURCES = @dots{}
+@end example
+
+Because @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} contain object
+file names that end with @samp{.$(OBJEXT)}, they are not suitable for
+Libtool libraries (where the expected object extension is @file{.lo}):
+@code{LTLIBOBJS} and @code{LTALLOCA} should be used instead.
+
+@code{LTLIBOBJS} is defined automatically by Autoconf and should not
+be defined by hand (as in the past), however at the time of writing
+@code{LTALLOCA} still needs to be defined from @code{ALLOCA} manually.
+@xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
+autoconf, The Autoconf Manual}.
+
+
+@node Program Variables
+@section Variables used when building a program
+
+Occasionally it is useful to know which @file{Makefile} variables
+Automake uses for compilations, and in which order (@pxref{Flag
+Variables Ordering}); for instance, you might need to do your own
+compilation in some special cases.
+
+Some variables are inherited from Autoconf; these are @code{CC},
+@code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
+@code{LIBS}.
+@vindex CC
+@vindex CFLAGS
+@vindex CPPFLAGS
+@vindex DEFS
+@vindex LDFLAGS
+@vindex LIBS
+
+There are some additional variables that Automake defines on its own:
+
+@vtable @code
+@item AM_CPPFLAGS
+The contents of this variable are passed to every compilation that invokes
+the C preprocessor; it is a list of arguments to the preprocessor.  For
+instance, @option{-I} and @option{-D} options should be listed here.
+
+Automake already provides some @option{-I} options automatically, in a
+separate variable that is also passed to every compilation that invokes
+the C preprocessor.  In particular it generates @samp{-I.},
+@samp{-I$(srcdir)}, and a @option{-I} pointing to the directory holding
+@file{config.h} (if you've used @code{AC_CONFIG_HEADERS} or
+@code{AM_CONFIG_HEADER}).  You can disable the default @option{-I}
+options using the @option{nostdinc} option.
+
+When a file to be included is generated during the build and not part
+of a distribution tarball, its location is under @code{$(builddir)},
+not under @code{$(srcdir)}.  This matters especially for packages that
+use header files placed in sub-directories and want to allow builds
+outside the source tree (@pxref{VPATH Builds}). In that case we
+recommend to use a pair of @option{-I} options, such as, e.g.,
+@samp{-Isome/subdir -I$(srcdir)/some/subdir} or
+@samp{-I$(top_builddir)/some/subdir -I$(top_srcdir)/some/subdir}.
+Note that the reference to the build tree should come before the
+reference to the source tree, so that accidentally leftover generated
+files in the source directory are ignored.
+
+@code{AM_CPPFLAGS} is ignored in preference to a per-executable (or
+per-library) @code{_CPPFLAGS} variable if it is defined.
+
+@item INCLUDES
+This does the same job as @code{AM_CPPFLAGS} (or any per-target
+@code{_CPPFLAGS} variable if it is used).  It is an older name for the
+same functionality.  This variable is deprecated; we suggest using
+@code{AM_CPPFLAGS} and per-target @code{_CPPFLAGS} instead.
+
+@item AM_CFLAGS
+This is the variable the @file{Makefile.am} author can use to pass
+in additional C compiler flags.  It is more fully documented elsewhere.
+In some situations, this is not used, in preference to the
+per-executable (or per-library) @code{_CFLAGS}.
+
+@item COMPILE
+This is the command used to actually compile a C source file.  The
+file name is appended to form the complete command line.
+
+@item AM_LDFLAGS
+This is the variable the @file{Makefile.am} author can use to pass
+in additional linker flags.  In some situations, this is not used, in
+preference to the per-executable (or per-library) @code{_LDFLAGS}.
+
+@item LINK
+This is the command used to actually link a C program.  It already
+includes @samp{-o $@@} and the usual variable references (for instance,
+@code{CFLAGS}); it takes as ``arguments'' the names of the object files
+and libraries to link in.  This variable is not used when the linker is
+overridden with a per-target @code{_LINK} variable or per-target flags
+cause Automake to define such a @code{_LINK} variable.
+@end vtable
+
+
+@node Yacc and Lex
+@section Yacc and Lex support
+
+Automake has somewhat idiosyncratic support for Yacc and Lex.
+
+Automake assumes that the @file{.c} file generated by @command{yacc}
+(or @command{lex}) should be named using the basename of the input
+file.  That is, for a yacc source file @file{foo.y}, Automake will
+cause the intermediate file to be named @file{foo.c} (as opposed to
+@file{y.tab.c}, which is more traditional).
+
+The extension of a yacc source file is used to determine the extension
+of the resulting C or C++ source and header files.  Note that header
+files are generated only when the @option{-d} Yacc option is used; see
+below for more information about this flag, and how to specify it.
+Files with the extension @file{.y} will thus be turned into @file{.c}
+sources and @file{.h} headers; likewise, @file{.yy} will become
+@file{.cc} and @file{.hh}, @file{.y++} will become @file{c++} and
+@file{h++}, @file{.yxx} will become @file{.cxx} and @file{.hxx},
+and @file{.ypp} will become @file{.cpp} and @file{.hpp}.
+
+Similarly, lex source files can be used to generate C or C++; the
+extensions @file{.l}, @file{.ll}, @file{.l++}, @file{.lxx}, and
+@file{.lpp} are recognized.
+
+You should never explicitly mention the intermediate (C or C++) file
+in any @code{SOURCES} variable; only list the source file.
+
+The intermediate files generated by @command{yacc} (or @command{lex})
+will be included in any distribution that is made.  That way the user
+doesn't need to have @command{yacc} or @command{lex}.
+
+If a @command{yacc} source file is seen, then your @file{configure.ac} must
+define the variable @code{YACC}.  This is most easily done by invoking
+the macro @code{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}).
+
+@vindex YFLAGS
+@vindex AM_YFLAGS
+When @code{yacc} is invoked, it is passed @code{AM_YFLAGS} and
+@code{YFLAGS}.  The latter is a user variable and the former is
+intended for the @file{Makefile.am} author.
+
+@code{AM_YFLAGS} is usually used to pass the @option{-d} option to
+@command{yacc}.  Automake knows what this means and will automatically
+adjust its rules to update and distribute the header file built by
+@samp{yacc -d}@footnote{Please note that @command{automake} recognizes
+@option{-d} in @code{AM_YFLAGS} only if it is not clustered with other
+options; for example, it won't be recognized if @code{AM_YFLAGS} is
+@option{-dt}, but it will be if @code{AM_YFLAGS} is @option{-d -t} or
+@option{-t -d}.}.
+What Automake cannot guess, though, is where this
+header will be used: it is up to you to ensure the header gets built
+before it is first used.  Typically this is necessary in order for
+dependency tracking to work when the header is included by another
+file.  The common solution is listing the header file in
+@code{BUILT_SOURCES} (@pxref{Sources}) as follows.
+
+@example
+BUILT_SOURCES = parser.h
+AM_YFLAGS = -d
+bin_PROGRAMS = foo
+foo_SOURCES = @dots{} parser.y @dots{}
+@end example
+
+If a @command{lex} source file is seen, then your @file{configure.ac}
+must define the variable @code{LEX}.  You can use @code{AC_PROG_LEX}
+to do this (@pxref{Particular Programs, , Particular Program Checks,
+autoconf, The Autoconf Manual}), but using @code{AM_PROG_LEX} macro
+(@pxref{Macros}) is recommended.
+
+@vindex LFLAGS
+@vindex AM_LFLAGS
+When @command{lex} is invoked, it is passed @code{AM_LFLAGS} and
+@code{LFLAGS}.  The latter is a user variable and the former is
+intended for the @file{Makefile.am} author.
+
+When @code{AM_MAINTAINER_MODE} (@pxref{maintainer-mode}) is used, the
+rebuild rule for distributed Yacc and Lex sources are only used when
+@code{maintainer-mode} is enabled, or when the files have been erased.
+
+@cindex @command{ylwrap}
+@cindex @command{yacc}, multiple parsers
+@cindex Multiple @command{yacc} parsers
+@cindex Multiple @command{lex} lexers
+@cindex @command{lex}, multiple lexers
+
+When @command{lex} or @command{yacc} sources are used, @code{automake
+-i} automatically installs an auxiliary program called
+@command{ylwrap} in your package (@pxref{Auxiliary Programs}).  This
+program is used by the build rules to rename the output of these
+tools, and makes it possible to include multiple @command{yacc} (or
+@command{lex}) source files in a single directory.  (This is necessary
+because yacc's output file name is fixed, and a parallel make could
+conceivably invoke more than one instance of @command{yacc}
+simultaneously.)
+
+For @command{yacc}, simply managing locking is insufficient.  The output of
+@command{yacc} always uses the same symbol names internally, so it isn't
+possible to link two @command{yacc} parsers into the same executable.
+
+We recommend using the following renaming hack used in @command{gdb}:
+@example
+#define yymaxdepth c_maxdepth
+#define yyparse c_parse
+#define yylex   c_lex
+#define yyerror c_error
+#define yylval  c_lval
+#define yychar  c_char
+#define yydebug c_debug
+#define yypact  c_pact
+#define yyr1    c_r1
+#define yyr2    c_r2
+#define yydef   c_def
+#define yychk   c_chk
+#define yypgo   c_pgo
+#define yyact   c_act
+#define yyexca  c_exca
+#define yyerrflag c_errflag
+#define yynerrs c_nerrs
+#define yyps    c_ps
+#define yypv    c_pv
+#define yys     c_s
+#define yy_yys  c_yys
+#define yystate c_state
+#define yytmp   c_tmp
+#define yyv     c_v
+#define yy_yyv  c_yyv
+#define yyval   c_val
+#define yylloc  c_lloc
+#define yyreds  c_reds
+#define yytoks  c_toks
+#define yylhs   c_yylhs
+#define yylen   c_yylen
+#define yydefred c_yydefred
+#define yydgoto  c_yydgoto
+#define yysindex c_yysindex
+#define yyrindex c_yyrindex
+#define yygindex c_yygindex
+#define yytable  c_yytable
+#define yycheck  c_yycheck
+#define yyname   c_yyname
+#define yyrule   c_yyrule
+@end example
+
+For each define, replace the @samp{c_} prefix with whatever you like.
+These defines work for @command{bison}, @command{byacc}, and
+traditional @code{yacc}s.  If you find a parser generator that uses a
+symbol not covered here, please report the new name so it can be added
+to the list.
+
+
+@node C++ Support
+@section C++ Support
+
+@cindex C++ support
+@cindex Support for C++
+
+Automake includes full support for C++.
+
+Any package including C++ code must define the output variable
+@code{CXX} in @file{configure.ac}; the simplest way to do this is to use
+the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}).
+
+A few additional variables are defined when a C++ source file is seen:
+
+@vtable @code
+@item CXX
+The name of the C++ compiler.
+
+@item CXXFLAGS
+Any flags to pass to the C++ compiler.
+
+@item AM_CXXFLAGS
+The maintainer's variant of @code{CXXFLAGS}.
+
+@item CXXCOMPILE
+The command used to actually compile a C++ source file.  The file name
+is appended to form the complete command line.
+
+@item CXXLINK
+The command used to actually link a C++ program.
+@end vtable
+
+
+@node Objective C Support
+@section Objective C Support
+
+@cindex Objective C support
+@cindex Support for Objective C
+
+Automake includes some support for Objective C.
+
+Any package including Objective C code must define the output variable
+@code{OBJC} in @file{configure.ac}; the simplest way to do this is to use
+the @code{AC_PROG_OBJC} macro (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}).
+
+A few additional variables are defined when an Objective C source file
+is seen:
+
+@vtable @code
+@item OBJC
+The name of the Objective C compiler.
+
+@item OBJCFLAGS
+Any flags to pass to the Objective C compiler.
+
+@item AM_OBJCFLAGS
+The maintainer's variant of @code{OBJCFLAGS}.
+
+@item OBJCCOMPILE
+The command used to actually compile an Objective C source file.  The
+file name is appended to form the complete command line.
+
+@item OBJCLINK
+The command used to actually link an Objective C program.
+@end vtable
+
+
+@node Objective C++ Support
+@section Objective C++ Support
+
+@cindex Objective C++ support
+@cindex Support for Objective C++
+
+Automake includes some support for Objective C++.
+
+Any package including Objective C++ code must define the output variable
+@code{OBJCXX} in @file{configure.ac}; the simplest way to do this is to use
+the @code{AC_PROG_OBJCXX} macro (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}).
+
+A few additional variables are defined when an Objective C++ source file
+is seen:
+
+@vtable @code
+@item OBJCXX
+The name of the Objective C++ compiler.
+
+@item OBJCXXFLAGS
+Any flags to pass to the Objective C++ compiler.
+
+@item AM_OBJCXXFLAGS
+The maintainer's variant of @code{OBJCXXFLAGS}.
+
+@item OBJCXXCOMPILE
+The command used to actually compile an Objective C++ source file.  The
+file name is appended to form the complete command line.
+
+@item OBJCXXLINK
+The command used to actually link an Objective C++ program.
+@end vtable
+
+
+@node Unified Parallel C Support
+@section Unified Parallel C Support
+
+@cindex Unified Parallel C support
+@cindex Support for Unified Parallel C
+
+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}).
+
+A few additional variables are defined when a Unified Parallel C
+source file is seen:
+
+@vtable @code
+@item UPC
+The name of the Unified Parallel C compiler.
+
+@item UPCFLAGS
+Any flags to pass to the Unified Parallel C compiler.
+
+@item AM_UPCFLAGS
+The maintainer's variant of @code{UPCFLAGS}.
+
+@item UPCCOMPILE
+The command used to actually compile a Unified Parallel C source file.
+The file name is appended to form the complete command line.
+
+@item UPCLINK
+The command used to actually link a Unified Parallel C program.
+@end vtable
+
+
+@node Assembly Support
+@section Assembly Support
+
+Automake includes some support for assembly code.  There are two forms
+of assembler files: normal (@file{*.s}) and preprocessed by @code{CPP}
+(@file{*.S} or @file{*.sx}).
+
+@vindex CCAS
+@vindex CCASFLAGS
+@vindex CPPFLAGS
+@vindex AM_CCASFLAGS
+@vindex AM_CPPFLAGS
+The variable @code{CCAS} holds the name of the compiler used to build
+assembly code.  This compiler must work a bit like a C compiler; in
+particular it must accept @option{-c} and @option{-o}.  The values of
+@code{CCASFLAGS} and @code{AM_CCASFLAGS} (or its per-target
+definition) is passed to the compilation.  For preprocessed files,
+@code{DEFS}, @code{DEFAULT_INCLUDES}, @code{INCLUDES}, @code{CPPFLAGS}
+and @code{AM_CPPFLAGS} are also used.
+
+The autoconf macro @code{AM_PROG_AS} will define @code{CCAS} and
+@code{CCASFLAGS} for you (unless they are already set, it simply sets
+@code{CCAS} to the C compiler and @code{CCASFLAGS} to the C compiler
+flags), but you are free to define these variables by other means.
+
+Only the suffixes @file{.s}, @file{.S}, and @file{.sx} are recognized by
+@command{automake} as being files containing assembly code.
+
+
+@node Fortran 77 Support
+@comment  node-name,  next,  previous,  up
+@section Fortran 77 Support
+
+@cindex Fortran 77 support
+@cindex Support for Fortran 77
+
+Automake includes full support for Fortran 77.
+
+Any package including Fortran 77 code must define the output variable
+@code{F77} in @file{configure.ac}; the simplest way to do this is to use
+the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}).
+
+A few additional variables are defined when a Fortran 77 source file is
+seen:
+
+@vtable @code
+
+@item F77
+The name of the Fortran 77 compiler.
+
+@item FFLAGS
+Any flags to pass to the Fortran 77 compiler.
+
+@item AM_FFLAGS
+The maintainer's variant of @code{FFLAGS}.
+
+@item RFLAGS
+Any flags to pass to the Ratfor compiler.
+
+@item AM_RFLAGS
+The maintainer's variant of @code{RFLAGS}.
+
+@item F77COMPILE
+The command used to actually compile a Fortran 77 source file.  The file
+name is appended to form the complete command line.
+
+@item FLINK
+The command used to actually link a pure Fortran 77 program or shared
+library.
+
+@end vtable
+
+Automake can handle preprocessing Fortran 77 and Ratfor source files in
+addition to compiling them@footnote{Much, if not most, of the
+information in the following sections pertaining to preprocessing
+Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
+Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
+also contains some support for creating programs and shared libraries
+that are a mixture of Fortran 77 and other languages (@pxref{Mixing
+Fortran 77 With C and C++}).
+
+These issues are covered in the following sections.
+
+@menu
+* Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
+* Compiling Fortran 77 Files::  Compiling Fortran 77 sources
+* Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
+@end menu
+
+
+@node Preprocessing Fortran 77
+@comment  node-name,  next,  previous,  up
+@subsection Preprocessing Fortran 77
+
+@cindex Preprocessing Fortran 77
+@cindex Fortran 77, Preprocessing
+@cindex Ratfor programs
+
+@file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
+rule runs just the preprocessor to convert a preprocessable Fortran 77
+or Ratfor source file into a strict Fortran 77 source file.  The precise
+command used is as follows:
+
+@table @file
+
+@item .F
+@code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
+$(AM_FFLAGS) $(FFLAGS)}
+
+@item .r
+@code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
+
+@end table
+
+
+@node Compiling Fortran 77 Files
+@comment  node-name,  next,  previous,  up
+@subsection Compiling Fortran 77 Files
+
+@file{N.o} is made automatically from @file{N.f}, @file{N.F} or
+@file{N.r} by running the Fortran 77 compiler.  The precise command used
+is as follows:
+
+@table @file
+
+@item .f
+@code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
+
+@item .F
+@code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
+$(AM_FFLAGS) $(FFLAGS)}
+
+@item .r
+@code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
+
+@end table
+
+
+@node Mixing Fortran 77 With C and C++
+@comment  node-name,  next,  previous,  up
+@subsection Mixing Fortran 77 With C and C++
+
+@cindex Fortran 77, mixing with C and C++
+@cindex Mixing Fortran 77 with C and C++
+@cindex Linking Fortran 77 with C and C++
+@cindex cfortran
+@cindex Mixing Fortran 77 with C and/or C++
+
+Automake currently provides @emph{limited} support for creating programs
+and shared libraries that are a mixture of Fortran 77 and C and/or C++.
+However, there are many other issues related to mixing Fortran 77 with
+other languages that are @emph{not} (currently) handled by Automake, but
+that are handled by other packages@footnote{For example,
+@uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
+addresses all of these inter-language issues, and runs under nearly all
+Fortran 77, C and C++ compilers on nearly all platforms.  However,
+@command{cfortran} is not yet Free Software, but it will be in the next
+major release.}.
+
+Automake can help in two ways:
+
+@enumerate
+@item
+Automatic selection of the linker depending on which combinations of
+source code.
+
+@item
+Automatic selection of the appropriate linker flags (e.g., @option{-L} and
+@option{-l}) to pass to the automatically selected linker in order to link
+in the appropriate Fortran 77 intrinsic and run-time libraries.
+
+@cindex @code{FLIBS}, defined
+@vindex FLIBS
+These extra Fortran 77 linker flags are supplied in the output variable
+@code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro.
+@xref{Fortran Compiler, , Fortran Compiler Characteristics, autoconf,
+The Autoconf Manual}.
+@end enumerate
+
+If Automake detects that a program or shared library (as mentioned in
+some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
+code that is a mixture of Fortran 77 and C and/or C++, then it requires
+that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
+@file{configure.ac}, and that either @code{$(FLIBS)}
+appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
+(for shared libraries) variables.  It is the responsibility of the
+person writing the @file{Makefile.am} to make sure that @samp{$(FLIBS)}
+appears in the appropriate @code{_LDADD} or
+@code{_LIBADD} variable.
+
+@cindex Mixed language example
+@cindex Example, mixed language
+
+For example, consider the following @file{Makefile.am}:
+
+@example
+bin_PROGRAMS = foo
+foo_SOURCES  = main.cc foo.f
+foo_LDADD    = libfoo.la $(FLIBS)
+
+pkglib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
+libfoo_la_LIBADD   = $(FLIBS)
+@end example
+
+In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
+is mentioned in @file{configure.ac}.  Also, if @samp{$(FLIBS)} hadn't
+been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
+Automake would have issued a warning.
+
+@menu
+* How the Linker is Chosen::    Automatic linker selection
+@end menu
+
+@node How the Linker is Chosen
+@comment  node-name,  next,  previous,  up
+@subsubsection How the Linker is Chosen
+
+@cindex Automatic linker selection
+@cindex Selecting the linker automatically
+
+When a program or library mixes several languages, Automake choose the
+linker according to the following priorities.  (The names in
+parentheses are the variables containing the link command.)
+
+@enumerate
+@item
+@vindex GCJLINK
+Native Java (@code{GCJLINK})
+@item
+@vindex OBJCXXLINK
+Objective C++ (@code{OBJCXXLINK})
+@item
+@vindex CXXLINK
+C++ (@code{CXXLINK})
+@item
+@vindex F77LINK
+Fortran 77 (@code{F77LINK})
+@item
+@vindex FCLINK
+Fortran (@code{FCLINK})
+@item
+@vindex OBJCLINK
+Objective C (@code{OBJCLINK})
+@item
+@vindex UPCLINK
+Unified Parallel C (@code{UPCLINK})
+@item
+@vindex LINK
+C (@code{LINK})
+@end enumerate
+
+For example, if Fortran 77, C and C++ source code is compiled
+into a program, then the C++ linker will be used.  In this case, if the
+C or Fortran 77 linkers required any special libraries that weren't
+included by the C++ linker, then they must be manually added to an
+@code{_LDADD} or @code{_LIBADD} variable by the user writing the
+@file{Makefile.am}.
+
+Automake only looks at the file names listed in @file{_SOURCES}
+variables to choose the linker, and defaults to the C linker.
+Sometimes this is inconvenient because you are linking against a
+library written in another language and would like to set the linker
+more appropriately.  @xref{Libtool Convenience Libraries}, for a
+trick with @code{nodist_EXTRA_@dots{}_SOURCES}.
+
+A per-target @code{_LINK} variable will override the above selection.
+Per-target link flags will cause Automake to write a per-target
+@code{_LINK} variable according to the language chosen as above.
+
+
+@node Fortran 9x Support
+@comment  node-name,  next,  previous,  up
+@section Fortran 9x Support
+
+@cindex Fortran 9x support
+@cindex Support for Fortran 9x
+
+Automake includes support for Fortran 9x.
+
+Any package including Fortran 9x code must define the output variable
+@code{FC} in @file{configure.ac}; the simplest way to do this is to use
+the @code{AC_PROG_FC} macro (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}).
+
+A few additional variables are defined when a Fortran 9x source file is
+seen:
+
+@vtable @code
+
+@item FC
+The name of the Fortran 9x compiler.
+
+@item FCFLAGS
+Any flags to pass to the Fortran 9x compiler.
+
+@item AM_FCFLAGS
+The maintainer's variant of @code{FCFLAGS}.
+
+@item FCCOMPILE
+The command used to actually compile a Fortran 9x source file.  The file
+name is appended to form the complete command line.
+
+@item FCLINK
+The command used to actually link a pure Fortran 9x program or shared
+library.
+
+@end vtable
+
+@menu
+* Compiling Fortran 9x Files::  Compiling Fortran 9x sources
+@end menu
+
+@node Compiling Fortran 9x Files
+@comment  node-name,  next,  previous,  up
+@subsection Compiling Fortran 9x Files
+
+@file{@var{file}.o} is made automatically from @file{@var{file}.f90},
+@file{@var{file}.f95}, @file{@var{file}.f03}, or @file{@var{file}.f08}
+by running the Fortran 9x compiler.  The precise command used
+is as follows:
+
+@table @file
+
+@item .f90
+@code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f90) $<}
+
+@item .f95
+@code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f95) $<}
+
+@item .f03
+@code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f03) $<}
+
+@item .f08
+@code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f08) $<}
+
+@end table
+
+@node Java Support with gcj
+@comment  node-name,  next,  previous,  up
+@section Compiling Java sources using gcj
+
+@cindex Java support with gcj
+@cindex Support for Java with gcj
+@cindex Java to native code, compilation
+@cindex Compilation of Java to native code
+
+Automake includes support for natively compiled Java, using @command{gcj},
+the Java front end to the GNU Compiler Collection (rudimentary support
+for compiling Java to bytecode using the @command{javac} compiler is
+also present, @emph{albeit deprecated}; @pxref{Java}).
+
+Any package including Java code to be compiled must define the output
+variable @code{GCJ} in @file{configure.ac}; the variable @code{GCJFLAGS}
+must also be defined somehow (either in @file{configure.ac} or
+@file{Makefile.am}).  The simplest way to do this is to use the
+@code{AM_PROG_GCJ} macro.
+
+@vindex GCJFLAGS
+
+By default, programs including Java source files are linked with
+@command{gcj}.
+
+As always, the contents of @code{AM_GCJFLAGS} are passed to every
+compilation invoking @command{gcj} (in its role as an ahead-of-time
+compiler, when invoking it to create @file{.class} files,
+@code{AM_JAVACFLAGS} is used instead).  If it is necessary to pass
+options to @command{gcj} from @file{Makefile.am}, this variable, and not
+the user variable @code{GCJFLAGS}, should be used.
+
+@vindex AM_GCJFLAGS
+
+@command{gcj} can be used to compile @file{.java}, @file{.class},
+@file{.zip}, or @file{.jar} files.
+
+When linking, @command{gcj} requires that the main class be specified
+using the @option{--main=} option.  The easiest way to do this is to use
+the @code{_LDFLAGS} variable for the program.
+
+
+@node Vala Support
+@comment  node-name,  next,  previous,  up
+@section Vala Support
+
+@cindex Vala Support
+@cindex Support for Vala
+
+Automake provides initial support for Vala
+(@uref{http://www.vala-project.org/}).
+This requires valac version 0.7.0 or later, and currently requires
+the user to use GNU @command{make}.
+
+@example
+foo_SOURCES = foo.vala bar.vala zardoc.c
+@end 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.
+
+@defmac AM_PROG_VALAC (@ovar{minimum-version})
+Try to find a Vala compiler in @env{PATH}. If it is found, the variable
+@code{VALAC} is set. Optionally a minimum release number of the compiler
+can be requested:
+
+@example
+AM_PROG_VALAC([0.7.0])
+@end example
+@end defmac
+
+There are a few variables that are used when compiling Vala sources:
+
+@vtable @code
+@item VALAC
+Path to the Vala compiler.
+
+@item VALAFLAGS
+Additional arguments for the Vala compiler.
+
+@item AM_VALAFLAGS
+The maintainer's variant of @code{VALAFLAGS}.
+
+@example
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.vala
+@end example
+@end vtable
+
+Note that currently, you cannot use per-target @code{*_VALAFLAGS}
+(@pxref{Renamed Objects}) to produce different C files from one Vala
+source file.
+
+
+@node Support for Other Languages
+@comment  node-name,  next,  previous,  up
+@section Support for Other Languages
+
+Automake currently only includes full support for C, C++ (@pxref{C++
+Support}), Objective C (@pxref{Objective C Support}),
+Objective C++ (@pxref{Objective C++ Support}),
+Fortran 77
+(@pxref{Fortran 77 Support}), Fortran 9x (@pxref{Fortran 9x Support}),
+and Java (@pxref{Java Support with gcj}).  There is only rudimentary
+support for other languages, support for which will be improved based
+on user demand.
+
+Some limited support for adding your own languages is available via the
+suffix rule handling (@pxref{Suffixes}).
+
+@node Dependencies
+@section Automatic dependency tracking
+
+As a developer it is often painful to continually update the
+@file{Makefile.am} whenever the include-file dependencies change in a
+project.  Automake supplies a way to automatically track dependency
+changes (@pxref{Dependency Tracking}).
+
+@cindex Dependency tracking
+@cindex Automatic dependency tracking
+
+Automake always uses complete dependencies for a compilation,
+including system headers.  Automake's model is that dependency
+computation should be a side effect of the build.  To this end,
+dependencies are computed by running all compilations through a
+special wrapper program called @command{depcomp}.  @command{depcomp}
+understands how to coax many different C and C++ compilers into
+generating dependency information in the format it requires.
+@samp{automake -a} will install @command{depcomp} into your source
+tree for you.  If @command{depcomp} can't figure out how to properly
+invoke your compiler, dependency tracking will simply be disabled for
+your build.
+
+@cindex @command{depcomp}
+
+Experience with earlier versions of Automake (@pxref{Dependency Tracking
+Evolution, , Dependency Tracking Evolution, automake-history, Brief History
+of Automake}) taught us that it is not reliable to generate dependencies
+only on the maintainer's system, as configurations vary too much.  So
+instead Automake implements dependency tracking at build time.
+
+Automatic dependency tracking can be suppressed by putting
+@option{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
+passing @option{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
+(this should be the preferred way).  Or, you can invoke @command{automake}
+with the @option{-i} option.  Dependency tracking is enabled by default.
+
+@vindex AUTOMAKE_OPTIONS
+@opindex no-dependencies
+
+The person building your package also can choose to disable dependency
+tracking by configuring with @option{--disable-dependency-tracking}.
+
+@cindex Disabling dependency tracking
+@cindex Dependency tracking, disabling
+
+
+@node EXEEXT
+@section Support for executable extensions
+
+@cindex Executable extension
+@cindex Extension, executable
+@cindex Windows
+
+On some platforms, such as Windows, executables are expected to have an
+extension such as @file{.exe}.  On these platforms, some compilers (GCC
+among them) will automatically generate @file{foo.exe} when asked to
+generate @file{foo}.
+
+Automake provides mostly-transparent support for this.  Unfortunately
+@emph{mostly} doesn't yet mean @emph{fully}.  Until the English
+dictionary is revised, you will have to assist Automake if your package
+must support those platforms.
+
+One thing you must be aware of is that, internally, Automake rewrites
+something like this:
+
+@example
+bin_PROGRAMS = liver
+@end example
+
+to this:
+
+@example
+bin_PROGRAMS = liver$(EXEEXT)
+@end example
+
+The targets Automake generates are likewise given the @samp{$(EXEEXT)}
+extension.
+
+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}.)
+
+However, Automake cannot apply this rewriting to @command{configure}
+substitutions.  This means that if you are conditionally building a
+program using such a substitution, then your @file{configure.ac} must
+take care to add @samp{$(EXEEXT)} when constructing the output variable.
+
+Sometimes maintainers like to write an explicit link rule for their
+program.  Without executable extension support, this is easy---you
+simply write a rule whose target is the name of the program.  However,
+when executable extension support is enabled, you must instead add the
+@samp{$(EXEEXT)} suffix.
+
+This might be a nuisance for maintainers who know their package will
+never run on a platform that has
+executable extensions.  For those maintainers, the @option{no-exeext}
+option (@pxref{Options}) will disable this feature.  This works in a
+fairly ugly way; if @option{no-exeext} is seen, then the presence of a
+rule for a target named @code{foo} in @file{Makefile.am} will override
+an @command{automake}-generated rule for @samp{foo$(EXEEXT)}.  Without
+the @option{no-exeext} option, this use will give a diagnostic.
+
+
+@node Other Objects
+@chapter Other Derived Objects
+
+Automake can handle derived objects that are not C programs.  Sometimes
+the support for actually building such objects must be explicitly
+supplied, but Automake will still automatically handle installation and
+distribution.
+
+@menu
+* Scripts::                     Executable scripts
+* Headers::                     Header files
+* Data::                        Architecture-independent data files
+* Sources::                     Derived sources
+@end menu
+
+
+@node Scripts
+@section Executable Scripts
+
+@cindex @code{_SCRIPTS} primary, defined
+@cindex @code{SCRIPTS} primary, defined
+@cindex Primary variable, @code{SCRIPTS}
+@vindex _SCRIPTS
+@cindex Installing scripts
+
+It is possible to define and install programs that are scripts.  Such
+programs are listed using the @code{SCRIPTS} primary name.  When the
+script is distributed in its final, installable form, the
+@file{Makefile} usually looks as follows:
+@vindex SCRIPTS
+
+@example
+# Install my_script in $(bindir) and distribute it.
+dist_bin_SCRIPTS = my_script
+@end example
+
+Scripts are not distributed by default; as we have just seen, those
+that should be distributed can be specified using a @code{dist_}
+prefix as with other primaries.
+
+@cindex @code{SCRIPTS}, installation directories
+@vindex bin_SCRIPTS
+@vindex sbin_SCRIPTS
+@vindex libexec_SCRIPTS
+@vindex pkgdata_SCRIPTS
+@vindex pkglibexec_SCRIPTS
+@vindex noinst_SCRIPTS
+@vindex check_SCRIPTS
+
+Scripts can be installed in @code{bindir}, @code{sbindir},
+@code{libexecdir}, @code{pkglibexecdir}, or @code{pkgdatadir}.
+
+Scripts that need not be installed can be listed in
+@code{noinst_SCRIPTS}, and among them, those which are needed only by
+@samp{make check} should go in @code{check_SCRIPTS}.
+
+When a script needs to be built, the @file{Makefile.am} should include
+the appropriate rules.  For instance the @command{automake} program
+itself is a Perl script that is generated from @file{automake.in}.
+Here is how this is handled:
+
+@example
+bin_SCRIPTS = automake
+CLEANFILES = $(bin_SCRIPTS)
+EXTRA_DIST = automake.in
+
+do_subst = sed -e 's,[@@]datadir[@@],$(datadir),g' \
+            -e 's,[@@]PERL[@@],$(PERL),g' \
+            -e 's,[@@]PACKAGE[@@],$(PACKAGE),g' \
+            -e 's,[@@]VERSION[@@],$(VERSION),g' \
+            @dots{}
+
+automake: automake.in Makefile
+        $(do_subst) < $(srcdir)/automake.in > automake
+        chmod +x automake
+@end example
+
+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{Basics of Distribution}).
+
+Another common way to build scripts is to process them from
+@file{configure} with @code{AC_CONFIG_FILES}.  In this situation
+Automake knows which files should be cleaned and distributed, and what
+the rebuild rules should look like.
+
+For instance if @file{configure.ac} contains
+
+@example
+AC_CONFIG_FILES([src/my_script], [chmod +x src/my_script])
+@end example
+
+@noindent
+to build @file{src/my_script} from @file{src/my_script.in}, then a
+@file{src/Makefile.am} to install this script in @code{$(bindir)} can
+be as simple as
+
+@example
+bin_SCRIPTS = my_script
+CLEANFILES = $(bin_SCRIPTS)
+@end example
+
+@noindent
+There is no need for @code{EXTRA_DIST} or any build rule: Automake
+infers them from @code{AC_CONFIG_FILES} (@pxref{Requirements}).
+@code{CLEANFILES} is still useful, because by default Automake will
+clean targets of @code{AC_CONFIG_FILES} in @code{distclean}, not
+@code{clean}.
+
+Although this looks simpler, building scripts this way has one
+drawback: directory variables such as @code{$(datadir)} are not fully
+expanded and may refer to other directory variables.
+
+@node Headers
+@section Header files
+
+@cindex @code{_HEADERS} primary, defined
+@cindex @code{HEADERS} primary, defined
+@cindex Primary variable, @code{HEADERS}
+@vindex _HEADERS
+@vindex noinst_HEADERS
+@cindex @code{HEADERS}, installation directories
+@cindex Installing headers
+@vindex include_HEADERS
+@vindex oldinclude_HEADERS
+@vindex pkginclude_HEADERS
+
+
+Header files that must be installed are specified by the
+@code{HEADERS} family of variables.  Headers can be installed in
+@code{includedir}, @code{oldincludedir}, @code{pkgincludedir} or any
+other directory you may have defined (@pxref{Uniform}).  For instance,
+
+@example
+include_HEADERS = foo.h bar/bar.h
+@end example
+
+@noindent
+will install the two files as @file{$(includedir)/foo.h} and
+@file{$(includedir)/bar.h}.
+
+The @code{nobase_} prefix is also supported,
+
+@example
+nobase_include_HEADERS = foo.h bar/bar.h
+@end example
+
+@noindent
+will install the two files as @file{$(includedir)/foo.h} and
+@file{$(includedir)/bar/bar.h} (@pxref{Alternative}).
+
+@vindex noinst_HEADERS
+Usually, only header files that accompany installed libraries need to
+be installed.  Headers used by programs or convenience libraries are
+not installed.  The @code{noinst_HEADERS} variable can be used for
+such headers.  However when the header actually belongs to a single
+convenience library or program, we recommend listing it in the
+program's or library's @code{_SOURCES} variable (@pxref{Program
+Sources}) instead of in @code{noinst_HEADERS}.  This is clearer for
+the @file{Makefile.am} reader.  @code{noinst_HEADERS} would be the
+right variable to use in a directory containing only headers and no
+associated library or program.
+
+All header files must be listed somewhere; in a @code{_SOURCES}
+variable or in a @code{_HEADERS} variable.  Missing ones will not
+appear in the distribution.
+
+For header files that are built and must not be distributed, use the
+@code{nodist_} prefix as in @code{nodist_include_HEADERS} or
+@code{nodist_prog_SOURCES}.  If these generated headers are needed
+during the build, you must also ensure they exist before they are
+used (@pxref{Sources}).
+
+
+@node Data
+@section Architecture-independent data files
+
+@cindex @code{_DATA} primary, defined
+@cindex @code{DATA} primary, defined
+@cindex Primary variable, @code{DATA}
+@vindex _DATA
+
+Automake supports the installation of miscellaneous data files using the
+@code{DATA} family of variables.
+@vindex DATA
+
+@vindex data_DATA
+@vindex sysconf_DATA
+@vindex sharedstate_DATA
+@vindex localstate_DATA
+@vindex pkgdata_DATA
+
+Such data can be installed in the directories @code{datadir},
+@code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
+@code{pkgdatadir}.
+
+By default, data files are @emph{not} included in a distribution.  Of
+course, you can use the @code{dist_} prefix to change this on a
+per-variable basis.
+
+Here is how Automake declares its auxiliary data files:
+
+@example
+dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
+@end example
+
+
+@node Sources
+@section Built Sources
+
+Because Automake's automatic dependency tracking works as a side-effect
+of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
+target should not be compiled before its dependencies are made, but
+these dependencies are unknown until the target is first compiled.
+
+Ordinarily this is not a problem, because dependencies are distributed
+sources: they preexist and do not need to be built.  Suppose that
+@file{foo.c} includes @file{foo.h}.  When it first compiles
+@file{foo.o}, @command{make} only knows that @file{foo.o} depends on
+@file{foo.c}.  As a side-effect of this compilation @command{depcomp}
+records the @file{foo.h} dependency so that following invocations of
+@command{make} will honor it.  In these conditions, it's clear there is
+no problem: either @file{foo.o} doesn't exist and has to be built
+(regardless of the dependencies), or accurate dependencies exist and
+they can be used to decide whether @file{foo.o} should be rebuilt.
+
+It's a different story if @file{foo.h} doesn't exist by the first
+@command{make} run.  For instance, there might be a rule to build
+@file{foo.h}.  This time @file{file.o}'s build will fail because the
+compiler can't find @file{foo.h}.  @command{make} failed to trigger the
+rule to build @file{foo.h} first by lack of dependency information.
+
+@vindex BUILT_SOURCES
+@cindex @code{BUILT_SOURCES}, defined
+
+The @code{BUILT_SOURCES} variable is a workaround for this problem.  A
+source file listed in @code{BUILT_SOURCES} is made on @samp{make all}
+or @samp{make check} (or even @samp{make install}) before other
+targets are processed.  However, such a source file is not
+@emph{compiled} unless explicitly requested by mentioning it in some
+other @code{_SOURCES} variable.
+
+So, to conclude our introductory example, we could use
+@samp{BUILT_SOURCES = foo.h} to ensure @file{foo.h} gets built before
+any other target (including @file{foo.o}) during @samp{make all} or
+@samp{make check}.
+
+@code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
+must be created early in the build process can be listed in this
+variable.  Moreover, all built sources do not necessarily have to be
+listed in @code{BUILT_SOURCES}.  For instance, a generated @file{.c} file
+doesn't need to appear in @code{BUILT_SOURCES} (unless it is included by
+another source), because it's a known dependency of the associated
+object.
+
+It might be important to emphasize that @code{BUILT_SOURCES} is
+honored only by @samp{make all}, @samp{make check} and @samp{make
+install}.  This means you cannot build a specific target (e.g.,
+@samp{make foo}) in a clean tree if it depends on a built source.
+However it will succeed if you have run @samp{make all} earlier,
+because accurate dependencies are already available.
+
+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.
+@end menu
+
+@node Built Sources Example
+@subsection 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
+@file{bindir.h} defines the preprocessor macro @code{bindir} to the
+value of the @command{make} variable @code{bindir} (inherited from
+@file{configure}).
+
+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.
+
+@subsubheading First Try
+
+This first implementation will illustrate the bootstrap issue mentioned
+in the previous section (@pxref{Sources}).
+
+Here is a tentative @file{Makefile.am}.
+
+@example
+# This won't work.
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+nodist_foo_SOURCES = bindir.h
+CLEANFILES = bindir.h
+bindir.h: Makefile
+        echo '#define bindir "$(bindir)"' >$@@
+@end example
+
+This setup doesn't work, because Automake doesn't know that @file{foo.c}
+includes @file{bindir.h}.  Remember, automatic dependency tracking works
+as a side-effect of compilation, so the dependencies of @file{foo.o} will
+be known only after @file{foo.o} has been compiled (@pxref{Dependencies}).
+The symptom is as follows.
+
+@example
+% make
+source='foo.c' object='foo.o' libtool=no \
+depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
+depmode=gcc /bin/sh ./depcomp \
+gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
+foo.c:2: bindir.h: No such file or directory
+make: *** [foo.o] Error 1
+@end example
+
+In this example @file{bindir.h} is not distributed nor installed, and
+it is not even being built on-time.  One may wonder if the
+@samp{nodist_foo_SOURCES = bindir.h} line has any use at all.  This
+line simply states that @file{bindir.h} is a source of @code{foo}, so
+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.
+
+@subsubheading 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}).
+
+@example
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+nodist_foo_SOURCES = bindir.h
+BUILT_SOURCES = bindir.h
+CLEANFILES = bindir.h
+bindir.h: Makefile
+        echo '#define bindir "$(bindir)"' >$@@
+@end example
+
+See how @file{bindir.h} gets built first:
+
+@example
+% make
+echo '#define bindir "/usr/local/bin"' >bindir.h
+make  all-am
+make[1]: Entering directory `/home/adl/tmp'
+source='foo.c' object='foo.o' libtool=no \
+depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
+depmode=gcc /bin/sh ./depcomp \
+gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
+gcc  -g -O2   -o foo  foo.o
+make[1]: Leaving directory `/home/adl/tmp'
+@end example
+
+However, as said earlier, @code{BUILT_SOURCES} applies only to the
+@code{all}, @code{check}, and @code{install} targets.  It still fails
+if you try to run @samp{make foo} explicitly:
+
+@example
+% make clean
+test -z "bindir.h" || rm -f bindir.h
+test -z "foo" || rm -f foo
+rm -f *.o
+% : > .deps/foo.Po # Suppress previously recorded dependencies
+% make foo
+source='foo.c' object='foo.o' libtool=no \
+depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
+depmode=gcc /bin/sh ./depcomp \
+gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
+foo.c:2: bindir.h: No such file or directory
+make: *** [foo.o] Error 1
+@end example
+
+@subsubheading 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
+in the previous example.  However if this matters to you, you can
+avoid @code{BUILT_SOURCES} and record such dependencies explicitly in
+the @file{Makefile.am}.
+
+@example
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+nodist_foo_SOURCES = bindir.h
+foo.$(OBJEXT): bindir.h
+CLEANFILES = bindir.h
+bindir.h: Makefile
+        echo '#define bindir "$(bindir)"' >$@@
+@end example
+
+You don't have to list @emph{all} the dependencies of @file{foo.o}
+explicitly, only those that might need to be built.  If a dependency
+already exists, it will not hinder the first compilation and will be
+recorded by the normal dependency tracking code.  (Note that after
+this first compilation the dependency tracking code will also have
+recorded the dependency between @file{foo.o} and
+@file{bindir.h}; so our explicit dependency is really useful to
+the first build only.)
+
+Adding explicit dependencies like this can be a bit dangerous if you are
+not careful enough.  This is due to the way Automake tries not to
+overwrite your rules (it assumes you know better than it).
+@samp{foo.$(OBJEXT): bindir.h} supersedes any rule Automake may want to
+output to build @samp{foo.$(OBJEXT)}.  It happens to work in this case
+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.
+
+@subsubheading 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
+Directories, autoconf, The Autoconf Manual}), or by processing a
+@file{bindir.h.in} file using @code{AC_CONFIG_FILES}
+(@pxref{Configuration Actions, ,Configuration Actions, autoconf, The
+Autoconf Manual}).
+
+At this point it should be clear that building @file{bindir.h} from
+@file{configure} works well for this example.  @file{bindir.h} will exist
+before you build any target, hence will not cause any dependency issue.
+
+The Makefile can be shrunk as follows.  We do not even have to mention
+@file{bindir.h}.
+
+@example
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+@end example
+
+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.
+
+@subsubheading 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}
+instead of @file{bindir.h}.
+
+@example
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.c bindir.h
+nodist_foo_SOURCES = bindir.c
+CLEANFILES = bindir.c
+bindir.c: Makefile
+        echo 'const char bindir[] = "$(bindir)";' >$@@
+@end example
+
+@file{bindir.h} contains just the variable's declaration and doesn't
+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.
+
+@subsubheading Which is best?
+
+There is no panacea, of course.  Each solution has its merits and
+drawbacks.
+
+You cannot use @code{BUILT_SOURCES} if the ability to run @samp{make
+foo} on a clean tree is important to you.
+
+You won't add explicit dependencies if you are leery of overriding
+an Automake rule by mistake.
+
+Building files from @file{./configure} is not always possible, neither
+is converting @file{.h} files into @file{.c} files.
+
+
+@node Other GNU Tools
+@chapter Other GNU Tools
+
+Since Automake is primarily intended to generate @file{Makefile.in}s for
+use in GNU programs, it tries hard to interoperate with other GNU tools.
+
+@menu
+* Emacs Lisp::                  Emacs Lisp
+* gettext::                     Gettext
+* Libtool::                     Libtool
+* Java::                        Java bytecode compilation (deprecated)
+* Python::                      Python
+@end menu
+
+
+@node Emacs Lisp
+@section Emacs Lisp
+
+@cindex @code{_LISP} primary, defined
+@cindex @code{LISP} primary, defined
+@cindex Primary variable, @code{LISP}
+
+@vindex _LISP
+@vindex lisp_LISP
+@vindex noinst_LISP
+
+Automake provides some support for Emacs Lisp.  The @code{LISP} primary
+is used to hold a list of @file{.el} files.  Possible prefixes for this
+primary are @code{lisp_} and @code{noinst_}.  Note that if
+@code{lisp_LISP} is defined, then @file{configure.ac} must run
+@code{AM_PATH_LISPDIR} (@pxref{Macros}).
+
+@vindex dist_lisp_LISP
+@vindex dist_noinst_LISP
+Lisp sources are not distributed by default.  You can prefix the
+@code{LISP} primary with @code{dist_}, as in @code{dist_lisp_LISP} or
+@code{dist_noinst_LISP}, to indicate that these files should be
+distributed.
+
+Automake will byte-compile all Emacs Lisp source files using the Emacs
+found by @code{AM_PATH_LISPDIR}, if any was found.
+
+Byte-compiled Emacs Lisp files are not portable among all versions of
+Emacs, so it makes sense to turn this off if you expect sites to have
+more than one version of Emacs installed.  Furthermore, many packages
+don't actually benefit from byte-compilation.  Still, we recommend
+that you byte-compile your Emacs Lisp sources.  It is probably better
+for sites with strange setups to cope for themselves than to make the
+installation less nice for everybody else.
+
+There are two ways to avoid byte-compiling.  Historically, we have
+recommended the following construct.
+
+@example
+lisp_LISP = file1.el file2.el
+ELCFILES =
+@end example
+
+@noindent
+@code{ELCFILES} is an internal Automake variable that normally lists
+all @file{.elc} files that must be byte-compiled.  Automake defines
+@code{ELCFILES} automatically from @code{lisp_LISP}.  Emptying this
+variable explicitly prevents byte-compilation.
+
+Since Automake 1.8, we now recommend using @code{lisp_DATA} instead:
+
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@example
+lisp_DATA = file1.el file2.el
+@end example
+
+Note that these two constructs are not equivalent.  @code{_LISP} will
+not install a file if Emacs is not installed, while @code{_DATA} will
+always install its files.
+
+@node gettext
+@section Gettext
+
+@cindex GNU Gettext support
+@cindex Gettext support
+@cindex Support for GNU Gettext
+
+If @code{AM_GNU_GETTEXT} is seen in @file{configure.ac}, then Automake
+turns on support for GNU gettext, a message catalog system for
+internationalization
+(@pxref{Top, , Introduction, gettext, GNU gettext utilities}).
+
+The @code{gettext} support in Automake requires the addition of one or
+two subdirectories to the package: @file{po} and possibly also @file{intl}.
+The latter is needed if @code{AM_GNU_GETTEXT} is not invoked with the
+@samp{external} argument, or if @code{AM_GNU_GETTEXT_INTL_SUBDIR} is used.
+Automake ensures that these directories exist and are mentioned in
+@code{SUBDIRS}.
+
+@node Libtool
+@section Libtool
+
+Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
+libtool, The Libtool Manual}) with the @code{LTLIBRARIES} primary.
+@xref{A Shared Library}.
+
+
+@node Java
+@section Java bytecode compilation (deprecated)
+
+@cindex @code{_JAVA} primary, defined
+@cindex @code{JAVA} primary, defined
+@cindex Primary variable, @code{JAVA}
+@cindex Java to bytecode, compilation
+@cindex Compilation of Java to bytecode
+
+Automake provides some minimal support for Java bytecode compilation with
+the @code{JAVA} primary (in addition to the support for compiling Java to
+native machine code; @pxref{Java Support with gcj}).  Note however that
+@emph{the interface and most features described here are deprecated}; the
+next automake release will strive to provide a better and cleaner
+interface, which however @emph{won't be backward-compatible}; the present
+interface will probably be removed altogether in future automake releases
+(1.13 or later), so don't use it in new code.
+
+Any @file{.java} files listed in a @code{_JAVA} variable will be
+compiled with @code{JAVAC} at build time.  By default, @file{.java}
+files are not included in the distribution, you should use the
+@code{dist_} prefix to distribute them.
+
+Here is a typical setup for distributing @file{.java} files and
+installing the @file{.class} files resulting from their compilation.
+
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@example
+javadir = $(datadir)/java
+dist_java_JAVA = a.java b.java @dots{}
+@end example
+
+@cindex @code{JAVA} restrictions
+@cindex Restrictions for @code{JAVA}
+
+Currently Automake enforces the restriction that only one @code{_JAVA}
+primary can be used in a given @file{Makefile.am}.  The reason for this
+restriction is that, in general, it isn't possible to know which
+@file{.class} files were generated from which @file{.java} files, so
+it would be impossible to know which files to install where.  For
+instance, a @file{.java} file can define multiple classes; the resulting
+@file{.class} file names cannot be predicted without parsing the
+@file{.java} file.
+
+There are a few variables that are used when compiling Java sources:
+
+@vtable @code
+@item JAVAC
+The name of the Java compiler.  This defaults to @samp{javac}.
+
+@item JAVACFLAGS
+The flags to pass to the compiler.  This is considered to be a user
+variable (@pxref{User Variables}).
+
+@item AM_JAVACFLAGS
+More flags to pass to the Java compiler.  This, and not
+@code{JAVACFLAGS}, should be used when it is necessary to put Java
+compiler flags into @file{Makefile.am}.
+
+@item JAVAROOT
+The value of this variable is passed to the @option{-d} option to
+@code{javac}.  It defaults to @samp{$(top_builddir)}.
+
+@item CLASSPATH_ENV
+This variable is a shell expression that is used to set the
+@env{CLASSPATH} environment variable on the @code{javac} command line.
+(In the future we will probably handle class path setting differently.)
+@end vtable
+
+
+@node Python
+@section Python
+
+@cindex @code{_PYTHON} primary, defined
+@cindex @code{PYTHON} primary, defined
+@cindex Primary variable, @code{PYTHON}
+@vindex _PYTHON
+
+Automake provides support for Python compilation with the
+@code{PYTHON} primary.  A typical setup is to call
+@code{AM_PATH_PYTHON} in @file{configure.ac} and use a line like the
+following in @file{Makefile.am}:
+
+@example
+python_PYTHON = tree.py leave.py
+@end example
+
+Any files listed in a @code{_PYTHON} variable will be byte-compiled
+with @command{py-compile} at install time.  @command{py-compile}
+actually creates both standard (@file{.pyc}) and optimized
+(@file{.pyo}) byte-compiled versions of the source files.  Note that
+because byte-compilation occurs at install time, any files listed in
+@code{noinst_PYTHON} will not be compiled.  Python source files are
+included in the distribution by default, prepend @code{nodist_} (as in
+@code{nodist_python_PYTHON}) to omit them.
+
+Automake ships with an Autoconf macro called @code{AM_PATH_PYTHON}
+that will determine some Python-related directory variables (see
+below).  If you have called @code{AM_PATH_PYTHON} from
+@file{configure.ac}, then you may use the variables
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@code{python_PYTHON} or @code{pkgpython_PYTHON} to list Python source
+files in your @file{Makefile.am}, depending on where you want your files
+installed (see the definitions of @code{pythondir} and
+@code{pkgpythondir} below).
+
+@defmac AM_PATH_PYTHON (@ovar{version}, @ovar{action-if-found},
+  @ovar{action-if-not-found})
+
+Search for a Python interpreter on the system.  This macro takes three
+optional arguments.  The first argument, if present, is the minimum
+version of Python required for this package: @code{AM_PATH_PYTHON}
+will skip any Python interpreter that is older than @var{version}.
+If an interpreter is found and satisfies @var{version}, then
+@var{action-if-found} is run.  Otherwise, @var{action-if-not-found} is
+run.
+
+If @var{action-if-not-found} is not specified, as in the following
+example, the default is to abort @command{configure}.
+
+@example
+AM_PATH_PYTHON([2.2])
+@end example
+
+@noindent
+This is fine when Python is an absolute requirement for the package.
+If Python >= 2.5 was only @emph{optional} to the package,
+@code{AM_PATH_PYTHON} could be called as follows.
+
+@example
+AM_PATH_PYTHON([2.5],, [:])
+@end example
+
+If the @env{PYTHON} variable is set when @code{AM_PATH_PYTHON} is
+called, then that will be the only Python interpreter that is tried.
+
+@code{AM_PATH_PYTHON} creates the following output variables based on
+the Python installation found during configuration.
+@end defmac
+
+@vtable @code
+@item PYTHON
+The name of the Python executable, or @samp{:} if no suitable
+interpreter could be found.
+
+Assuming @var{action-if-not-found} is used (otherwise @file{./configure}
+will abort if Python is absent), the value of @code{PYTHON} can be used
+to setup a conditional in order to disable the relevant part of a build
+as follows.
+
+@example
+AM_PATH_PYTHON(,, [:])
+AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
+@end example
+
+@item PYTHON_VERSION
+The Python version number, in the form @var{major}.@var{minor}
+(e.g., @samp{2.5}).  This is currently the value of
+@samp{sys.version[:3]}.
+
+@item PYTHON_PREFIX
+The string @samp{$@{prefix@}}.  This term may be used in future work
+that needs the contents of Python's @samp{sys.prefix}, but general
+consensus is to always use the value from @command{configure}.
+
+@item PYTHON_EXEC_PREFIX
+The string @samp{$@{exec_prefix@}}.  This term may be used in future work
+that needs the contents of Python's @samp{sys.exec_prefix}, but general
+consensus is to always use the value from @command{configure}.
+
+@item PYTHON_PLATFORM
+The canonical name used by Python to describe the operating system, as
+given by @samp{sys.platform}.  This value is sometimes needed when
+building Python extensions.
+
+@item pythondir
+The directory name for the @file{site-packages} subdirectory of the
+standard Python install tree.
+
+@item pkgpythondir
+This is the directory under @code{pythondir} that is named after the
+package.  That is, it is @samp{$(pythondir)/$(PACKAGE)}.  It is provided
+as a convenience.
+
+@item pyexecdir
+This is the directory where Python extension modules (shared libraries)
+should be installed.  An extension module written in C could be declared
+as follows to Automake:
+
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@example
+pyexec_LTLIBRARIES = quaternion.la
+quaternion_la_SOURCES = quaternion.c support.c support.h
+quaternion_la_LDFLAGS = -avoid-version -module
+@end example
+
+@item pkgpyexecdir
+This is a convenience variable that is defined as
+@samp{$(pyexecdir)/$(PACKAGE)}.
+@end vtable
+
+All these directory variables have values that start with either
+@samp{$@{prefix@}} or @samp{$@{exec_prefix@}} unexpanded.  This works
+fine in @file{Makefiles}, but it makes these variables hard to use in
+@file{configure}.  This is mandated by the GNU coding standards, so
+that the user can run @samp{make prefix=/foo install}.  The Autoconf
+manual has a section with more details on this topic
+(@pxref{Installation Directory Variables, , Installation Directory
+Variables, autoconf, The Autoconf Manual}).  See also @ref{Hard-Coded
+Install Paths}.
+
+
+@node Documentation
+@chapter Building documentation
+
+Currently Automake provides support for Texinfo and man pages.
+
+@menu
+* Texinfo::                     Texinfo
+* Man Pages::                   Man pages
+@end menu
+
+
+@node Texinfo
+@section Texinfo
+
+@cindex @code{_TEXINFOS} primary, defined
+@cindex @code{TEXINFOS} primary, defined
+@cindex Primary variable, @code{TEXINFOS}
+@cindex HTML output using Texinfo
+@cindex PDF output using Texinfo
+@cindex PS output using Texinfo
+@cindex DVI output using Texinfo
+@vindex _TEXINFOS
+@vindex info_TEXINFOS
+
+If the current directory contains Texinfo source, you must declare it
+with the @code{TEXINFOS} primary.  Generally Texinfo files are converted
+into info, and thus the @code{info_TEXINFOS} variable is most commonly used
+here.  Any Texinfo source file must end in the @file{.texi},
+@file{.txi}, or @file{.texinfo} extension.  We recommend @file{.texi}
+for new manuals.
+
+Automake generates rules to build @file{.info}, @file{.dvi},
+@file{.ps}, @file{.pdf} and @file{.html} files from your Texinfo
+sources.  Following the GNU Coding Standards, only the @file{.info}
+files are built by @samp{make all} and installed by @samp{make
+install} (unless you use @option{no-installinfo}, see below).
+Furthermore, @file{.info} files are automatically distributed so that
+Texinfo is not a prerequisite for installing your package.
+
+@trindex dvi
+@trindex html
+@trindex pdf
+@trindex ps
+@trindex install-dvi
+@trindex install-html
+@trindex install-pdf
+@trindex install-ps
+Other documentation formats can be built on request by @samp{make
+dvi}, @samp{make ps}, @samp{make pdf} and @samp{make html}, and they
+can be installed with @samp{make install-dvi}, @samp{make install-ps},
+@samp{make install-pdf} and @samp{make install-html} explicitly.
+@samp{make uninstall} will remove everything: the Texinfo
+documentation installed by default as well as all the above optional
+formats.
+
+All these targets can be extended using @samp{-local} rules
+(@pxref{Extending}).
+
+@cindex Texinfo flag, @code{VERSION}
+@cindex Texinfo flag, @code{UPDATED}
+@cindex Texinfo flag, @code{EDITION}
+@cindex Texinfo flag, @code{UPDATED-MONTH}
+
+@cindex @code{VERSION} Texinfo flag
+@cindex @code{UPDATED} Texinfo flag
+@cindex @code{EDITION} Texinfo flag
+@cindex @code{UPDATED-MONTH} Texinfo flag
+
+@cindex @file{mdate-sh}
+
+If the @file{.texi} file @code{@@include}s @file{version.texi}, then
+that file will be automatically generated.  The file @file{version.texi}
+defines four Texinfo flag you can reference using
+@code{@@value@{EDITION@}}, @code{@@value@{VERSION@}},
+@code{@@value@{UPDATED@}}, and @code{@@value@{UPDATED-MONTH@}}.
+
+@table @code
+@item EDITION
+@itemx VERSION
+Both of these flags hold the version number of your program.  They are
+kept separate for clarity.
+
+@item UPDATED
+This holds the date the primary @file{.texi} file was last modified.
+
+@item UPDATED-MONTH
+This holds the name of the month in which the primary @file{.texi} file
+was last modified.
+@end table
+
+The @file{version.texi} support requires the @command{mdate-sh}
+script; this script is supplied with Automake and automatically
+included when @command{automake} is invoked with the
+@option{--add-missing} option.
+
+If you have multiple Texinfo files, and you want to use the
+@file{version.texi} feature, then you have to have a separate version
+file for each Texinfo file.  Automake will treat any include in a
+Texinfo file that matches @file{vers*.texi} just as an automatically
+generated version file.
+
+Sometimes an info file actually depends on more than one @file{.texi}
+file.  For instance, in GNU Hello, @file{hello.texi} includes the file
+@file{fdl.texi}.  You can tell Automake about these dependencies using
+the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
+@vindex TEXINFOS
+@vindex _TEXINFOS
+
+@example
+info_TEXINFOS = hello.texi
+hello_TEXINFOS = fdl.texi
+@end example
+
+@cindex @file{texinfo.tex}
+
+By default, Automake requires the file @file{texinfo.tex} to appear in
+the same directory as the @file{Makefile.am} file that lists the
+@file{.texi} files.  If you used @code{AC_CONFIG_AUX_DIR} in
+@file{configure.ac} (@pxref{Input, , Finding `configure' Input,
+autoconf, The Autoconf Manual}), then @file{texinfo.tex} is looked for
+there.  In both cases, @command{automake} then supplies @file{texinfo.tex} if
+@option{--add-missing} is given, and takes care of its distribution.
+However, if you set the @code{TEXINFO_TEX} variable (see below),
+it overrides the location of the file and turns off its installation
+into the source as well as its distribution.
+
+The option @option{no-texinfo.tex} can be used to eliminate the
+requirement for the file @file{texinfo.tex}.  Use of the variable
+@code{TEXINFO_TEX} is preferable, however, because that allows the
+@code{dvi}, @code{ps}, and @code{pdf} targets to still work.
+
+@cindex Option, @code{no-installinfo}
+@cindex Target, @code{install-info}
+@cindex @code{install-info} target
+@cindex @code{no-installinfo} option
+
+@opindex no-installinfo
+@trindex install-info
+
+Automake generates an @code{install-info} rule; some people apparently
+use this.  By default, info pages are installed by @samp{make
+install}, so running @code{make install-info} is pointless.  This can
+be prevented via the @code{no-installinfo} option.  In this case,
+@file{.info} files are not installed by default, and user must
+request this explicitly using @samp{make install-info}.
+
+@vindex AM_UPDATE_INFO_DIR
+By default, @code{make install-info} and @code{make install-info}
+will try to run the @command{install-info} program (if available)
+to update (or create) the @file{@code{$@{infodir@}}/dir} index.
+If this is undesired, it can be prevented by exporting the
+@code{AM_UPDATE_INFO_DIR} variable to "@code{no}".
+
+The following variables are used by the Texinfo build rules.
+
+@vtable @code
+@item MAKEINFO
+The name of the program invoked to build @file{.info} files.  This
+variable is defined by Automake.  If the @command{makeinfo} program is
+found on the system then it will be used by default; otherwise
+@command{missing} will be used instead.
+
+@item MAKEINFOHTML
+The command invoked to build @file{.html} files.  Automake
+defines this to @samp{$(MAKEINFO) --html}.
+
+@item MAKEINFOFLAGS
+User flags passed to each invocation of @samp{$(MAKEINFO)} and
+@samp{$(MAKEINFOHTML)}.  This user variable (@pxref{User Variables}) is
+not expected to be defined in any @file{Makefile}; it can be used by
+users to pass extra flags to suit their needs.
+
+@item AM_MAKEINFOFLAGS
+@itemx AM_MAKEINFOHTMLFLAGS
+Maintainer flags passed to each @command{makeinfo} invocation.  Unlike
+@code{MAKEINFOFLAGS}, these variables are meant to be defined by
+maintainers in @file{Makefile.am}.  @samp{$(AM_MAKEINFOFLAGS)} is
+passed to @code{makeinfo} when building @file{.info} files; and
+@samp{$(AM_MAKEINFOHTMLFLAGS)} is used when building @file{.html}
+files.
+
+@c Keep in sync with txinfo21.sh
+For instance, the following setting can be used to obtain one single
+@file{.html} file per manual, without node separators.
+@example
+AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
+@end example
+
+@code{AM_MAKEINFOHTMLFLAGS} defaults to @samp{$(AM_MAKEINFOFLAGS)}.
+This means that defining @code{AM_MAKEINFOFLAGS} without defining
+@code{AM_MAKEINFOHTMLFLAGS} will impact builds of both @file{.info}
+and @file{.html} files.
+
+@item TEXI2DVI
+The name of the command that converts a @file{.texi} file into a
+@file{.dvi} file.  This defaults to @samp{texi2dvi}, a script that ships
+with the Texinfo package.
+
+@item TEXI2PDF
+The name of the command that translates a @file{.texi} file into a
+@file{.pdf} file.  This defaults to @samp{$(TEXI2DVI) --pdf --batch}.
+
+@item DVIPS
+The name of the command that builds a @file{.ps} file out of a
+@file{.dvi} file.  This defaults to @samp{dvips}.
+
+@item TEXINFO_TEX
+
+If your package has Texinfo files in many directories, you can use the
+variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
+@file{texinfo.tex} for your package.  The value of this variable should
+be the relative path from the current @file{Makefile.am} to
+@file{texinfo.tex}:
+
+@example
+TEXINFO_TEX = ../doc/texinfo.tex
+@end example
+@end vtable
+
+
+@node Man Pages
+@section Man Pages
+
+@cindex @code{_MANS} primary, defined
+@cindex @code{MANS} primary, defined
+@cindex Primary variable, @code{MANS}
+
+@vindex _MANS
+@vindex man_MANS
+A package can also include man pages (but see the GNU standards on this
+matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
+pages are declared using the @code{MANS} primary.  Generally the
+@code{man_MANS} variable is used.  Man pages are automatically installed in
+the correct subdirectory of @code{mandir}, based on the file extension.
+
+File extensions such as @file{.1c} are handled by looking for the valid
+part of the extension and using that to determine the correct
+subdirectory of @code{mandir}.  Valid section names are the digits
+@samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
+
+Sometimes developers prefer to name a man page something like
+@file{foo.man} in the source, and then rename it to have the correct
+suffix, for example @file{foo.1}, when installing the file.  Automake
+also supports this mode.  For a valid section named @var{section},
+there is a corresponding directory named @samp{man@var{section}dir},
+and a corresponding @code{_MANS} variable.  Files listed in such a
+variable are installed in the indicated section.  If the file already
+has a valid suffix, then it is installed as-is; otherwise the file
+suffix is changed to match the section.
+
+For instance, consider this example:
+@example
+man1_MANS = rename.man thesame.1 alsothesame.1c
+@end example
+
+@noindent
+In this case, @file{rename.man} will be renamed to @file{rename.1} when
+installed, but the other files will keep their names.
+
+@cindex Target, @code{install-man}
+@cindex Option, @option{no-installman}
+@cindex @code{install-man} target
+@cindex @option{no-installman} option
+@opindex no-installman
+@trindex install-man
+
+By default, man pages are installed by @samp{make install}.  However,
+since the GNU project does not require man pages, many maintainers do
+not expend effort to keep the man pages up to date.  In these cases, the
+@option{no-installman} option will prevent the man pages from being
+installed by default.  The user can still explicitly install them via
+@samp{make install-man}.
+
+For fast installation, with many files it is preferable to use
+@samp{man@var{section}_MANS} over @samp{man_MANS} as well as files that
+do not need to be renamed.
+
+Man pages are not currently considered to be source, because it is not
+uncommon for man pages to be automatically generated.  Therefore they
+are not automatically included in the distribution.  However, this can
+be changed by use of the @code{dist_} prefix.  For instance here is
+how to distribute and install the two man pages of GNU @command{cpio}
+(which includes both Texinfo documentation and man pages):
+
+@example
+dist_man_MANS = cpio.1 mt.1
+@end example
+
+The @code{nobase_} prefix is meaningless for man pages and is
+disallowed.
+
+@vindex notrans_
+@cindex @code{notrans_} prefix
+@cindex Man page renaming, avoiding
+@cindex Avoiding man page renaming
+
+Executables and manpages may be renamed upon installation
+(@pxref{Renaming}).  For manpages this can be avoided by use of the
+@code{notrans_} prefix.  For instance, suppose an executable @samp{foo}
+allowing to access a library function @samp{foo} from the command line.
+The way to avoid renaming of the @file{foo.3} manpage is:
+
+@example
+man_MANS = foo.1
+notrans_man_MANS = foo.3
+@end example
+
+@cindex @code{notrans_} and @code{dist_} or @code{nodist_}
+@cindex @code{dist_} and @code{notrans_}
+@cindex @code{nodist_} and @code{notrans_}
+
+@samp{notrans_} must be specified first when used in conjunction with
+either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
+Control}).  For instance:
+
+@example
+notrans_dist_man3_MANS = bar.3
+@end example
+
+@node Install
+@chapter What Gets Installed
+
+@cindex Installation support
+@cindex @samp{make install} support
+
+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}.
+
+@menu
+* 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
+@end menu
+
+@node Basics of Installation
+@section 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.
+
+@example
+bin_PROGRAMS = hello subdir/goodbye
+@end example
+
+In this example, both @samp{hello} and @samp{goodbye} will be installed
+in @samp{$(bindir)}.
+
+Sometimes it is useful to avoid the basename step at install time.  For
+instance, you might have a number of header files in subdirectories of
+the source tree that are laid out precisely how you want to install
+them.  In this situation you can use the @code{nobase_} prefix to
+suppress the base name step.  For example:
+
+@example
+nobase_include_HEADERS = stdio.h sys/types.h
+@end example
+
+@noindent
+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
+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.
+
+You should not rely on the order in which files listed in one variable
+are installed.  Likewise, to cater for parallel make, you should not
+rely on any particular file installation order even among different
+file types (library dependencies are an exception here).
+
+
+@node The Two Parts of Install
+@section 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
+share directory structure---these targets allow the machine-independent
+parts to be installed only once.  @code{install-exec} installs
+platform-dependent files, and @code{install-data} installs
+platform-independent files.  The @code{install} target depends on both
+of these targets.  While Automake tries to automatically segregate
+objects into the correct category, the @file{Makefile.am} author is, in
+the end, responsible for making sure this is done correctly.
+@trindex install-data
+@trindex install-exec
+@trindex install
+@cindex Install, two parts of
+
+Variables using the standard directory prefixes @samp{data},
+@samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
+@samp{pkgdata}, or @samp{pkginclude} are installed by
+@code{install-data}.
+
+Variables using the standard directory prefixes @samp{bin},
+@samp{sbin}, @samp{libexec}, @samp{sysconf}, @samp{localstate},
+@samp{lib}, or @samp{pkglib} are installed by @code{install-exec}.
+
+For instance, @code{data_DATA} files are installed by @code{install-data},
+while @code{bin_PROGRAMS} files are installed by @code{install-exec}.
+
+Any variable using a user-defined directory prefix with
+@samp{exec} in the name (e.g.,
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+@code{myexecbin_PROGRAMS}) is installed by @code{install-exec}.  All
+other user-defined prefixes are installed by @code{install-data}.
+
+@node Extending Installation
+@section Extending Installation
+
+It is possible to extend this mechanism by defining an
+@code{install-exec-local} or @code{install-data-local} rule.  If these
+rules exist, they will be run at @samp{make install} time.  These
+rules can do almost anything; care is required.
+@trindex install-exec-local
+@trindex install-data-local
+
+Automake also supports two install hooks, @code{install-exec-hook} and
+@code{install-data-hook}.  These hooks are run after all other install
+rules of the appropriate type, exec or data, have completed.  So, for
+instance, it is possible to perform post-installation modifications
+using an install hook.  @xref{Extending}, for some examples.
+@cindex Install hook
+
+@node Staged Installs
+@section Staged Installs
+
+@vindex DESTDIR
+Automake generates support for the @code{DESTDIR} variable in all
+install rules.  @code{DESTDIR} is used during the @samp{make install}
+step to relocate install objects into a staging area.  Each object and
+path is prefixed with the value of @code{DESTDIR} before being copied
+into the install area.  Here is an example of typical DESTDIR usage:
+
+@example
+mkdir /tmp/staging &&
+make DESTDIR=/tmp/staging install
+@end example
+
+The @command{mkdir} command avoids a security problem if the attacker
+creates a symbolic link from @file{/tmp/staging} to a victim area;
+then @command{make} places install objects in a directory tree built under
+@file{/tmp/staging}.  If @file{/gnu/bin/foo} and
+@file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
+would install @file{/tmp/staging/gnu/bin/foo} and
+@file{/tmp/staging/gnu/share/aclocal/foo.m4}.
+
+This feature is commonly used to build install images and packages
+(@pxref{DESTDIR}).
+
+Support for @code{DESTDIR} is implemented by coding it directly into
+the install rules.  If your @file{Makefile.am} uses a local install
+rule (e.g., @code{install-exec-local}) or an install hook, then you
+must write that code to respect @code{DESTDIR}.
+
+@xref{Makefile Conventions, , , standards, The GNU Coding Standards},
+for another usage example.
+
+@node Install Rules for the User
+@section Install Rules for the User
+
+Automake also generates rules for targets @code{uninstall},
+@code{installdirs}, and @code{install-strip}.
+@trindex uninstall
+@trindex installdirs
+@trindex install-strip
+
+Automake supports @code{uninstall-local} and @code{uninstall-hook}.
+There is no notion of separate uninstalls for ``exec'' and ``data'', as
+these features would not provide additional functionality.
+
+Note that @code{uninstall} is not meant as a replacement for a real
+packaging tool.
+
+
+@node Clean
+@chapter What Gets Cleaned
+
+@cindex @samp{make clean} support
+
+The GNU Makefile Standards specify a number of different clean rules.
+@xref{Standard Targets, , Standard Targets for Users, standards,
+The GNU Coding Standards}.
+
+Generally the files that can be cleaned are determined automatically by
+Automake.  Of course, Automake also recognizes some variables that can
+be defined to specify additional files to clean.  These variables are
+@code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
+@code{MAINTAINERCLEANFILES}.
+@vindex MOSTLYCLEANFILES
+@vindex CLEANFILES
+@vindex DISTCLEANFILES
+@vindex MAINTAINERCLEANFILES
+
+@trindex mostlyclean-local
+@trindex clean-local
+@trindex distclean-local
+@trindex maintainer-clean-local
+When cleaning involves more than deleting some hard-coded list of
+files, it is also possible to supplement the cleaning rules with your
+own commands.  Simply define a rule for any of the
+@code{mostlyclean-local}, @code{clean-local}, @code{distclean-local},
+or @code{maintainer-clean-local} targets (@pxref{Extending}).  A common
+case is deleting a directory, for instance, a directory created by the
+test suite:
+
+@example
+clean-local:
+        -rm -rf testSubDir
+@end example
+
+Since @command{make} allows only one set of rules for a given target,
+a more extensible way of writing this is to use a separate target
+listed as a dependency:
+
+@example
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+        -rm -rf testSubDir
+@end example
+
+As the GNU Standards aren't always explicit as to which files should
+be removed by which rule, we've adopted a heuristic that we believe
+was first formulated by Fran@,{c}ois Pinard:
+
+@itemize @bullet
+@item
+If @command{make} built it, and it is commonly something that one would
+want to rebuild (for instance, a @file{.o} file), then
+@code{mostlyclean} should delete it.
+
+@item
+Otherwise, if @command{make} built it, then @code{clean} should delete it.
+
+@item
+If @command{configure} built it, then @code{distclean} should delete it.
+
+@item
+If the maintainer built it (for instance, a @file{.info} file), then
+@code{maintainer-clean} should delete it.  However
+@code{maintainer-clean} should not delete anything that needs to exist
+in order to run @samp{./configure && make}.
+@end itemize
+
+We recommend that you follow this same set of heuristics in your
+@file{Makefile.am}.
+
+
+@node Dist
+@chapter What Goes in a Distribution
+
+@menu
+* 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
+@end menu
+
+@node Basics of Distribution
+@section Basics of Distribution
+
+@cindex @samp{make dist}
+
+@vindex PACKAGE
+@vindex VERSION
+@trindex dist
+The @code{dist} rule in the generated @file{Makefile.in} can be used
+to generate a gzipped @code{tar} file and other flavors of archive for
+distribution.  The file is named based on the @code{PACKAGE} and
+@code{VERSION} variables defined by @code{AM_INIT_AUTOMAKE}
+(@pxref{Macros}); more precisely the gzipped @code{tar} file is named
+@samp{@var{package}-@var{version}.tar.gz}.
+@vindex GZIP_ENV
+You can use the @command{make} variable @code{GZIP_ENV} to control how gzip
+is run.  The default setting is @option{--best}.
+
+@cindex @code{m4_include}, distribution
+@cindex @code{include}, distribution
+@acindex m4_include
+@cmindex include
+For the most part, the files to distribute are automatically found by
+Automake: all source files are automatically included in a distribution,
+as are all @file{Makefile.am} and @file{Makefile.in} files.  Automake also
+has a built-in list of commonly used files that are automatically
+included if they are found in the current directory (either physically,
+or as the target of a @file{Makefile.am} rule); this list is printed by
+@samp{automake --help}.  Note that some files in this list are actually
+distributed only if other certain conditions hold (for example,
+@c Keep in sync with autodist-config-headers.sh
+the @file{config.h.top} and @file{config.h.bot} files are automatically
+distributed only if, e.g., @samp{AC_CONFIG_HEADERS([config.h])} is used
+in @file{configure.ac}).  Also, files that are read by @command{configure}
+(i.e.@: the source files corresponding to the files specified in various
+Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
+automatically distributed.  Files included in a @file{Makefile.am} (using
+@code{include}) or in @file{configure.ac} (using @code{m4_include}), and
+helper scripts installed with @samp{automake --add-missing} are also
+distributed.
+
+@vindex EXTRA_DIST
+Still, sometimes there are files that must be distributed, but which
+are not covered in the automatic rules.  These files should be listed in
+the @code{EXTRA_DIST} variable.  You can mention files from
+subdirectories in @code{EXTRA_DIST}.
+
+You can also mention a directory in @code{EXTRA_DIST}; in this case the
+entire directory will be recursively copied into the distribution.
+Please note that this will also copy @emph{everything} in the directory,
+including, e.g., Subversion's @file{.svn} private directories or CVS/RCS
+version control files.  We recommend against using this feature.
+
+@vindex SUBDIRS
+@vindex DIST_SUBDIRS
+If you define @code{SUBDIRS}, Automake will recursively include the
+subdirectories in the distribution.  If @code{SUBDIRS} is defined
+conditionally (@pxref{Conditionals}), Automake will normally include
+all directories that could possibly appear in @code{SUBDIRS} in the
+distribution.  If you need to specify the set of directories
+conditionally, you can set the variable @code{DIST_SUBDIRS} to the
+exact list of subdirectories to include in the distribution
+(@pxref{Conditional Subdirectories}).
+
+
+@node Fine-grained Distribution Control
+@section Fine-grained Distribution Control
+
+@vindex dist_
+@vindex nodist_
+Sometimes you need tighter control over what does @emph{not} go into the
+distribution; for instance, you might have source files that are
+generated and that you do not want to distribute.  In this case
+Automake gives fine-grained control using the @code{dist} and
+@code{nodist} prefixes.  Any primary or @code{_SOURCES} variable can be
+prefixed with @code{dist_} to add the listed files to the distribution.
+Similarly, @code{nodist_} can be used to omit the files from the
+distribution.
+
+As an example, here is how you would cause some data to be distributed
+while leaving some source code out of the distribution:
+
+@example
+dist_data_DATA = distribute-this
+bin_PROGRAMS = foo
+nodist_foo_SOURCES = do-not-distribute.c
+@end example
+
+@node The dist Hook
+@section The dist Hook
+
+@trindex dist-hook
+
+Occasionally it is useful to be able to change the distribution before
+it is packaged up.  If the @code{dist-hook} rule exists, it is run
+after the distribution directory is filled, but before the actual
+distribution archives are created.  One way to use this is for
+removing unnecessary files that get recursively included by specifying
+a directory in @code{EXTRA_DIST}:
+
+@example
+EXTRA_DIST = doc
+dist-hook:
+        rm -rf `find $(distdir)/doc -type d -name .svn`
+@end example
+
+@c The caveates described here should be documented in 'disthook.test'.
+@noindent
+Note that the @code{dist-hook} recipe shouldn't assume that the regular
+files in the distribution directory are writable; this might not be the
+case if one is packaging from a read-only source tree, or when a
+@code{make distcheck} is being done.  For similar reasons, the recipe
+shouldn't assume that the subdirectories put into the distribution
+directory as effect of having them listed in @code{EXTRA_DIST} are
+writable.  So, if the @code{dist-hook} recipe wants to modify the
+content of an existing file (or @code{EXTRA_DIST} subdirectory) in the
+distribution directory, it should explicitly to make it writable first:
+
+@example
+EXTRA_DIST = README doc
+dist-hook:
+        chmod u+w $(distdir)/README $(distdir)/doc
+        echo "Distribution date: `date`" >> README
+        rm -f $(distdir)/doc/HACKING
+@end example
+
+@vindex distdir
+@vindex top_distdir
+Two variables that come handy when writing @code{dist-hook} rules are
+@samp{$(distdir)} and @samp{$(top_distdir)}.
+
+@samp{$(distdir)} points to the directory where the @code{dist} rule
+will copy files from the current directory before creating the
+tarball.  If you are at the top-level directory, then @samp{distdir =
+$(PACKAGE)-$(VERSION)}.  When used from subdirectory named
+@file{foo/}, then @samp{distdir = ../$(PACKAGE)-$(VERSION)/foo}.
+@samp{$(distdir)} can be a relative or absolute path, do not assume
+any form.
+
+@samp{$(top_distdir)} always points to the root directory of the
+distributed tree.  At the top-level it's equal to @samp{$(distdir)}.
+In the @file{foo/} subdirectory
+@samp{top_distdir = ../$(PACKAGE)-$(VERSION)}.
+@samp{$(top_distdir)} too can be a relative or absolute path.
+
+Note that when packages are nested using @code{AC_CONFIG_SUBDIRS}
+(@pxref{Subpackages}), then @samp{$(distdir)} and
+@samp{$(top_distdir)} are relative to the package where @samp{make
+dist} was run, not to any sub-packages involved.
+
+@node Checking the Distribution
+@section Checking the Distribution
+
+@cindex @samp{make distcheck}
+@trindex distcheck
+Automake also generates a @code{distcheck} rule that can be of help
+to ensure that a given distribution will actually work.  Simplifying
+a bit, we can say this rule first makes a distribution, and then,
+@emph{operating from it}, takes the following steps:
+@itemize
+@item
+tries to do a @code{VPATH} build (@pxref{VPATH Builds}), with the
+@code{srcdir} and all its content made @emph{read-only};
+@item
+runs the test suite (with @command{make check}) on this fresh build;
+@item
+installs the package in a temporary directory (with @command{make
+install}), and tries runs the test suite on the resulting installation
+(with @command{make installcheck});
+@item
+checks that the package can be correctly uninstalled (by @command{make
+uninstall}) and cleaned (by @code{make distclean});
+@item
+finally, makes another tarball to ensure the distribution is
+self-contained.
+@end itemize
+
+@vindex AM_DISTCHECK_CONFIGURE_FLAGS
+@vindex DISTCHECK_CONFIGURE_FLAGS
+@subheading DISTCHECK_CONFIGURE_FLAGS
+Building the package involves running @samp{./configure}.  If you need
+to supply additional flags to @command{configure}, define them in the
+@code{AM_DISTCHECK_CONFIGURE_FLAGS} variable in your top-level
+@file{Makefile.am}.  The user can still extend or override the flags
+provided there by defining the @code{DISTCHECK_CONFIGURE_FLAGS} variable,
+on the command line when invoking @command{make}.
+
+Still, developers are encouraged to strive to make their code buildable
+without requiring any special configure option; thus, in general, you
+shouldn't define @code{AM_DISTCHECK_CONFIGURE_FLAGS}. However, there
+might be few scenarios in which the use of this variable is justified.
+GNU @command{m4} offers an example.  GNU @command{m4} configures by
+default with its experimental and seldom used "changeword" feature
+disabled; so in its case it is useful to have @command{make distcheck}
+run configure with the @option{--with-changeword} option, to ensure that
+the code for changeword support still compiles correctly.
+GNU @command{m4} also employs the @code{AM_DISTCHECK_CONFIGURE_FLAGS}
+variable to stress-test the use of @option{--program-prefix=g}, since at
+one point the @command{m4} build system had a bug where @command{make
+installcheck} was wrongly assuming it could blindly test "@command{m4}",
+rather than the just-installed "@command{gm4}".
+
+@trindex distcheck-hook
+@subheading distcheck-hook
+If the @code{distcheck-hook} rule is defined in your top-level
+@file{Makefile.am}, then it will be invoked by @code{distcheck} after
+the new distribution has been unpacked, but before the unpacked copy
+is configured and built.  Your @code{distcheck-hook} can do almost
+anything, though as always caution is advised.  Generally this hook is
+used to check for potential distribution errors not caught by the
+standard mechanism.  Note that @code{distcheck-hook} as well as
+@code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
+are not honored in a subpackage @file{Makefile.am}, but the flags from
+@code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
+are passed down to the @command{configure} script of the subpackage.
+
+@cindex @samp{make distcleancheck}
+@trindex distcleancheck
+@vindex DISTCLEANFILES
+@vindex distcleancheck_listfiles
+
+@subheading distcleancheck
+Speaking of potential distribution errors, @code{distcheck} also
+ensures that the @code{distclean} rule actually removes all built
+files.  This is done by running @samp{make distcleancheck} at the end of
+the @code{VPATH} build.  By default, @code{distcleancheck} will run
+@code{distclean} and then make sure the build tree has been emptied by
+running @samp{$(distcleancheck_listfiles)}.  Usually this check will
+find generated files that you forgot to add to the @code{DISTCLEANFILES}
+variable (@pxref{Clean}).
+
+The @code{distcleancheck} behavior should be OK for most packages,
+otherwise you have the possibility to override the definition of
+either the @code{distcleancheck} rule, or the
+@samp{$(distcleancheck_listfiles)} variable.  For instance, to disable
+@code{distcleancheck} completely, add the following rule to your
+top-level @file{Makefile.am}:
+
+@example
+distcleancheck:
+        @@:
+@end example
+
+If you want @code{distcleancheck} to ignore built files that have not
+been cleaned because they are also part of the distribution, add the
+following definition instead:
+
+@c Keep in sync with distcleancheck.sh
+@example
+distcleancheck_listfiles = \
+  find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
+       sh '@{@}' ';'
+@end example
+
+The above definition is not the default because it's usually an error if
+your Makefiles cause some distributed files to be rebuilt when the user
+build the package.  (Think about the user missing the tool required to
+build the file; or if the required tool is built by your package,
+consider the cross-compilation case where it can't be run.)  There is
+an entry in the FAQ about this (@pxref{Errors with distclean}), make
+sure you read it before playing with @code{distcleancheck_listfiles}.
+
+@cindex @samp{make distuninstallcheck}
+@trindex distuninstallcheck
+@vindex distuninstallcheck_listfiles
+
+@subheading distuninstallcheck
+@code{distcheck} also checks that the @code{uninstall} rule works
+properly, both for ordinary and @code{DESTDIR} builds.  It does this
+by invoking @samp{make uninstall}, and then it checks the install tree
+to see if any files are left over.  This check will make sure that you
+correctly coded your @code{uninstall}-related rules.
+
+By default, the checking is done by the @code{distuninstallcheck} rule,
+and the list of files in the install tree is generated by
+@samp{$(distuninstallcheck_listfiles)} (this is a variable whose value is
+a shell command to run that prints the list of files to stdout).
+
+Either of these can be overridden to modify the behavior of
+@code{distcheck}.  For instance, to disable this check completely, you
+would write:
+
+@example
+distuninstallcheck:
+        @@:
+@end example
+
+@node The Types of Distributions
+@section The Types of Distributions
+
+Automake generates rules to provide archives of the project for
+distributions in various formats.  Their targets are:
+
+@table @asis
+@vindex BZIP2
+@item @code{dist-bzip2}
+Generate a bzip2 tar archive of the distribution.  bzip2 archives are
+frequently smaller than gzipped archives.
+By default, this rule makes @samp{bzip2} use a compression option of @option{-9}.
+To make it use a different one, set the @env{BZIP2} environment variable.
+For example, @samp{make dist-bzip2 BZIP2=-7}.
+@trindex dist-bzip2
+
+@item @code{dist-gzip}
+Generate a gzip tar archive of the distribution.
+@trindex dist-gzip
+
+@item @code{dist-lzip}
+Generate an @samp{lzip} tar archive of the distribution.  @command{lzip}
+archives are frequently smaller than @command{bzip2}-compressed archives.
+@trindex dist-lzip
+
+@item @code{dist-shar}
+Generate a shar archive of the distribution.
+@trindex dist-shar
+
+@vindex XZ_OPT
+@item @code{dist-xz}
+Generate an @samp{xz} tar archive of the distribution.  @command{xz}
+archives are frequently smaller than @command{bzip2}-compressed archives.
+By default, this rule makes @samp{xz} use a compression option of
+@option{-e}.  To make it use a different one, set the @env{XZ_OPT}
+environment variable.  For example, run this command to use the
+default compression ratio, but with a progress indicator:
+@samp{make dist-xz XZ_OPT=-7e}.
+@trindex dist-xz
+
+@item @code{dist-zip}
+Generate a zip archive of the distribution.
+@trindex dist-zip
+
+@item @code{dist-tarZ}
+Generate a compressed tar archive of
+the distribution.
+@trindex dist-tarZ
+@end table
+
+The rule @code{dist} (and its historical synonym @code{dist-all}) will
+create archives in all the enabled formats, @ref{Options}.  By
+default, only the @code{dist-gzip} target is hooked to @code{dist}.
+
+
+@node Tests
+@chapter Support for test suites
+
+@cindex Test suites
+@cindex @code{make check}
+@trindex check
+
+Automake can generate code to handle two kinds of test suites.  One is
+based on integration with the @command{dejagnu} framework.  The other
+(and most used) form is based on the use of generic test scripts, and
+its activation is triggered by the definition of the special @code{TESTS}
+variable.  This second form allows for various degrees of sophistication
+and customization; in particular, it allows for concurrent execution
+of test scripts, use of established test protocols such as TAP, and
+definition of custom test drivers and test runners.
+
+@noindent
+In either case, the testsuite is invoked via @samp{make check}.
+
+@menu
+* Generalities about Testing::  Concepts and terminology about testing
+* Simple Tests::                Listing test scripts in @code{TESTS}
+* Custom Test Drivers::         Writing and using custom test drivers
+* Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
+* DejaGnu Tests::               Interfacing with the @command{dejagnu} testing framework
+* Install Tests::               Running tests on installed packages
+@end menu
+
+@node Generalities about Testing
+@section Generalities about Testing
+
+The purpose of testing is to determine whether a program or system behaves
+as expected (e.g., known inputs produce the expected outputs, error
+conditions are correctly handled or reported, and older bugs do not
+resurface).
+
+@cindex test case
+The minimal unit of testing is usually called @emph{test case}, or simply
+@emph{test}.  How a test case is defined or delimited, and even what
+exactly @emph{constitutes} a test case, depends heavily on the testing
+paradigm and/or framework in use, so we won't attempt any more precise
+definition.  The set of the test cases for a given program or system
+constitutes its @emph{testsuite}.
+
+@cindex test harness
+@cindex testsuite harness
+A @emph{test harness} (also @emph{testsuite harness}) is a program or
+software component that executes all (or part of) the defined test cases,
+analyzes their outcomes, and report or register these outcomes
+appropriately.  Again, the details of how this is accomplished (and how
+the developer and user can influence it or interface with it) varies
+wildly, and we'll attempt no precise definition.
+
+@cindex test pass
+@cindex test failure
+A test is said to @emph{pass} when it can determine that the condition or
+behaviour it means to verify holds, and is said to @emph{fail} when it can
+determine that such condition of behaviour does @emph{not} hold.
+
+@cindex test skip
+Sometimes, tests can rely on non-portable tools or prerequisites, or
+simply make no sense on a given system (for example, a test checking a
+Windows-specific feature makes no sense on a GNU/Linux system).  In this
+case, accordingly to the definition above, the tests can neither be
+considered passed nor failed; instead, they are @emph{skipped} -- i.e.,
+they are not run, or their result is anyway ignored for what concerns
+the count of failures an successes.  Skips are usually explicitly
+reported though, so that the user will be aware that not all of the
+testsuite has really run.
+
+@cindex xfail
+@cindex expected failure
+@cindex expected test failure
+@cindex xpass
+@cindex unexpected pass
+@cindex unexpected test pass
+It's not uncommon, especially during early development stages, that some
+tests fail for known reasons, and that the developer doesn't want to
+tackle these failures immediately (this is especially true when the
+failing tests deal with corner cases).  In this situation, the better
+policy is to declare that each of those failures is an @emph{expected
+failure} (or @emph{xfail}).  In case a test that is expected to fail ends
+up passing instead, many testing environments will flag the result as a
+special kind of failure called @emph{unexpected pass} (or @emph{xpass}).
+
+@cindex hard error
+@cindex Distinction between errors and failures in testsuites
+Many testing environments and frameworks distinguish between test failures
+and hard errors.  As we've seen, a test failure happens when some invariant
+or expected behaviour of the software under test is not met.  An @emph{hard
+error} happens when e.g., the set-up of a test case scenario fails, or when
+some other unexpected or highly undesirable condition is encountered (for
+example, the program under test experiences a segmentation fault).
+
+@emph{TODO}: Links to other test harnesses (esp. those sharing our
+terminology)?
+
+@node Simple Tests
+@section Simple Tests
+
+@menu
+* Scripts-based Testsuites::    Automake-specific concepts and terminology
+* Serial Test Harness::         Older (and obsolescent) serial test harness
+* Parallel Test Harness::       Generic concurrent test harness
+@end menu
+
+@node Scripts-based Testsuites
+@subsection Scripts-based Testsuites
+
+If the special variable @code{TESTS} is defined, its value is taken to be
+a list of programs or scripts to run in order to do the testing.  Under
+the appropriate circumstances, it's possible for @code{TESTS} to list
+also data files to be passed to one or more test scripts defined by
+different means (the so-called ``log compilers'', @pxref{Parallel Test
+Harness}).
+
+Test scripts can be executed serially or concurrently.  Automake
+supports both these kinds of test execution, with the serial test harness
+being the default (for backward-compatibility reasons only, as its use
+is nowadays discouraged).  The concurrent test harness relies on the
+concurrence capabilities (if any) offered by the underlying @command{make}
+implementation, and can thus only be as good as those are.
+
+By default, only the exit statuses of the test scripts are considered when
+determining the testsuite outcome.  But Automake allows also the use of
+more complex test protocols, either standard (@pxref{Using the TAP test
+protocol}) or custom (@pxref{Custom Test Drivers}).  Note that you can
+enable such protocols only when the parallel harness is used: they won't
+work with the serial test harness.  In the rest of this section we are
+going to concentrate mostly on protocol-less tests, since we cover
+test protocols in a later section (again, @pxref{Custom Test Drivers}).
+
+@cindex Exit status 77, special interpretation
+@cindex Exit status 99, special interpretation
+When no test protocol is in use, an exit status of 0 from a test script will
+denote a success, an exit status of 77 a skipped test, an exit status of 99
+an hard error, and any other exit status will denote a failure.
+
+@cindex Tests, expected failure
+@cindex Expected test failure
+@vindex XFAIL_TESTS
+@vindex DISABLE_HARD_ERRORS
+@cindex Disabling hard errors
+You may define the variable @code{XFAIL_TESTS} to a list of tests
+(usually a subset of @code{TESTS}) that are expected to fail; this will
+effectively reverse the result of those tests (with the provision that
+skips and hard errors remain untouched).  You may also instruct the
+testsuite harness to treat hard errors like simple failures, by defining
+the @code{DISABLE_HARD_ERRORS} make variable to a nonempty value.
+
+Note however that, for tests based on more complex test protocols,
+the exact effects of @code{XFAIL_TESTS} and @code{DISABLE_HARD_ERRORS}
+might change, or they might even have no effect at all (for example,
+@c Keep this in sync with tap-no-disable-hard-errors.sh
+in tests using TAP, there is not way to disable hard errors, and the
+@code{DISABLE_HARD_ERRORS} variable has no effect on them).
+
+@anchor{Testsuite progress on console}
+@cindex Testsuite progress on console
+The result of each test case run by the scripts in @code{TESTS} will be
+printed on standard output, along with the test name.  For test protocols
+that allow more test cases per test script (such as TAP), a number,
+identifier and/or brief description specific for the single test case is
+expected to be printed in addition to the name of the test script.  The
+possible results (whose meanings should be clear from the previous
+@ref{Generalities about Testing}) are @code{PASS}, @code{FAIL},
+@code{SKIP}, @code{XFAIL}, @code{XPASS} and @code{ERROR}.  Here is an
+example of output from an hypothetical testsuite that uses both plain
+and TAP tests:
+@c Keep in sync with tap-doc.sh
+@example
+PASS: foo.sh
+PASS: zardoz.tap 1 - Daemon started
+PASS: zardoz.tap 2 - Daemon responding
+SKIP: zardoz.tap 3 - Daemon uses /proc # SKIP /proc is not mounted
+PASS: zardoz.tap 4 - Daemon stopped
+SKIP: bar.sh
+PASS: mu.tap 1
+XFAIL: mu.tap 2 # TODO frobnication not yet implemented
+@end example
+
+@noindent
+A testsuite summary (expected to report at least the number of run,
+skipped and failed tests) will be printed at the end of the testsuite
+run.
+
+@anchor{Simple tests and color-tests}
+@vindex AM_COLOR_TESTS
+@cindex Colorized testsuite output
+If the Automake option @code{color-tests} is used (@pxref{Options})
+and standard output is connected to a capable terminal, then the test
+results and the summary are colored appropriately.  The user can disable
+colored output by setting the @command{make} variable
+@samp{AM_COLOR_TESTS=no}, or force colored output even without a connecting
+terminal with @samp{AM_COLOR_TESTS=always}.  It's also worth noting that
+some @command{make} implementations, when used in parallel mode, have
+slightly different semantics (@pxref{Parallel make,,, autoconf,
+The Autoconf Manual}), which can break the automatic detection of a
+connection to a capable terminal.  If this is the case, you'll have to
+resort to the use of @samp{AM_COLOR_TESTS=always} in order to have the
+testsuite output colorized.
+
+Test programs that need data files should look for them in @code{srcdir}
+(which is both a make variable and an environment variable made available
+to the tests), so that 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{Checking the Distribution}).
+
+@vindex TESTS
+@vindex TESTS_ENVIRONMENT
+@vindex AM_TESTS_ENVIRONMENT
+The @code{AM_TESTS_ENVIRONMENT} and @code{TESTS_ENVIRONMENT} variables can
+be used to run initialization code and set environment variables for the
+test scripts.  The former variable is developer-reserved, and can be
+defined in the @file{Makefile.am}, while the latter is reserved for the
+user, which can employ it to extend or override the settings in the
+former; for this to work portably, however, the contents of a non-empty
+@code{AM_TESTS_ENVIRONMENT} @emph{must} be terminated by a semicolon.
+
+@vindex AM_TESTS_FD_REDIRECT
+The @code{AM_TESTS_FD_REDIRECT} variable can be used to define file
+descriptor redirections for the test scripts.  One might think that
+@code{AM_TESTS_ENVIRONMENT} could be used for this purpose, but experience
+has shown that doing so portably is practically impossible.  The main
+hurdle is constituted by Korn shells, which usually set the close-on-exec
+flag on file descriptors opened with the @command{exec} builtin, thus
+rendering an idiom like @code{AM_TESTS_ENVIRONMENT = exec 9>&2;}
+ineffectual.  This issue also affects some Bourne shells, such as the
+HP-UX's @command{/bin/sh},
+@c FIXME: should we offer a link to the relevant discussions on the
+@c bug-autoconf list?
+
+@c Keep in sync with tests-environment-backcompat.sh
+@example
+AM_TESTS_ENVIRONMENT = \
+## Some environment initializations are kept in a separate shell
+## file `tests-env.sh', which can make it easier to also run tests
+## from the command line.
+  . $(srcdir)/tests-env.sh; \
+## On Solaris, prefer more POSIX-compliant versions of the standard
+## tools by default.
+  if test -d /usr/xpg4/bin; then \
+    PATH=/usr/xpg4/bin:$$PATH; export PATH; \
+  fi;
+@c $$ restore font-lock
+## With this, the test scripts will be able to print diagnostic
+## messages to the original standard error stream, even if the test
+## driver redirects the stderr of the test scripts to a log file
+## before executing them.
+AM_TESTS_FD_REDIRECT = 9>&2
+@end example
+
+@noindent
+Note however that @code{AM_TESTS_ENVIRONMENT} is, for historical and
+implementation reasons, @emph{not} supported by the serial harness
+(@pxref{Serial Test Harness}).
+
+Automake ensures that each file listed in @code{TESTS} is built before
+it is run; you can list both source and derived programs (or scripts)
+in @code{TESTS}; the generated rule will look both in @code{srcdir} and
+@file{.}.  For instance, you might want to run a C program as a test.
+To do this you would list its name in @code{TESTS} and also in
+@code{check_PROGRAMS}, and then specify it as you would any other
+program.
+
+Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
+@code{check_LTLIBRARIES}...) are only built during @code{make check},
+not during @code{make all}.  You should list there any program needed
+by your tests that does not need to be built by @code{make all}.  Note
+that @code{check_PROGRAMS} are @emph{not} automatically added to
+@code{TESTS} because @code{check_PROGRAMS} usually lists programs used
+by the tests, not the tests themselves.  Of course you can set
+@code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
+
+@node Serial Test Harness
+@subsection Serial Test Harness
+@cindex @option{serial-tests}, Using
+
+@emph{NOTE:} This harness, while still being the default one, is
+obsolescent, and kept mostly for backward-compatibility reasons.  The user
+is advised to use the parallel test harness instead (@pxref{Parallel Test
+Harness}).  Be warned that future Automake versions might switch to use
+that more modern and feature-rich harness by default.
+
+The serial test harness is enabled by the Automake option
+@option{serial-tests}. It operates by simply running the tests serially,
+one at the time, without any I/O redirection.  It's up to the user to
+implement logging of tests' output, if that's requited or desired.
+@c TODO: give an example of how this can be done.
+
+For historical and implementation reasons, the @code{AM_TESTS_ENVIRONMENT}
+variable is @emph{not} supported by this harness (it will be silently
+ignored if defined); only @code{TESTS_ENVIRONMENT} is, and it is to be
+considered a developer-reserved variable.  This is done so that, when
+using the serial harness, @code{TESTS_ENVIRONMENT} can be defined to an
+invocation of an interpreter through which the tests are to be run.
+For instance, the following setup may be used to run tests with Perl:
+
+@example
+TESTS_ENVIRONMENT = $(PERL) -Mstrict -w
+TESTS = foo.pl bar.pl baz.pl
+@end example
+
+@noindent
+It's important to note that the use of @code{TESTS_ENVIRONMENT} endorsed
+here would be @emph{invalid} with the parallel harness.  That harness
+provides a more elegant way to achieve the same effect, with the further
+benefit of freeing the @code{TESTS_ENVIRONMENT} variable for the user
+(@pxref{Parallel Test Harness}).
+
+Another, less serious limit of the serial harness is that it doesn't
+really distinguish between simple failures and hard errors; this is
+due to historical reasons only, and might be fixed in future Automake
+versions.
+
+@node Parallel Test Harness
+@subsection Parallel Test Harness
+@cindex @option{parallel-tests}, Using
+
+The parallel (or concurrent) test harness is enabled by the Automake option
+@option{parallel-tests}.  It features automatic collection of the test
+scripts output in @file{.log} files, concurrent execution of tests with
+@code{make -j}, specification of inter-test dependencies, lazy reruns of
+tests that have not completed in a prior run, and hard errors for exceptional
+failures.
+
+This harness is still somewhat experimental and may undergo changes in
+order to satisfy additional portability requirements.
+
+@anchor{Basics of test metadata}
+@vindex TEST_SUITE_LOG
+@vindex TESTS
+@cindex @file{.log} files
+@cindex @file{.trs} files
+@cindex test metadata
+The parallel test harness operates by defining a set of @command{make}
+rules that run the test scripts listed in @code{TESTS}, and, for each
+such script, save its output in a corresponding @file{.log} file and
+its results (and other ``metadata'', @pxref{API for Custom Test Drivers})
+in a corresponding @file{.trs} (as in @b{T}est @b{R}e@b{S}ults) file.
+@c We choose the `.trs' extension also because, at the time of writing,
+@c it isn't already used for other significant purposes; see e.g.:
+@c   - http://filext.com/file-extension/trs
+@c   - http://www.file-extensions.org/search/?searchstring=trs
+The @file{.log} file will contain all the output emitted by the test on
+its standard output and its standard error.  The @file{.trs} file will
+contain, among the other things, the results of the test cases run by
+the script.
+
+The parallel test harness will also create a summary log file,
+@code{TEST_SUITE_LOG}, which defaults to @file{test-suite.log} and requires
+a @file{.log} suffix.  This file depends upon all the @file{.log} and
+@file{.trs} files created for the test scripts listed in @code{TESTS}.
+
+@vindex VERBOSE
+As with the serial harness above, by default one status line is printed
+per completed test, and a short summary after the suite has completed.
+However, standard output and standard error of the test are redirected
+to a per-test log file, so that parallel execution does not produce
+intermingled output.  The output from failed tests is collected in the
+@file{test-suite.log} file.  If the variable @samp{VERBOSE} is set, this
+file is output after the summary.
+@c FIXME: we should be clearer about what we mean exactly here ...
+For best results, the tests should be verbose by default now.
+
+@vindex TEST_EXTENSIONS
+@vindex TEST_LOGS
+Each couple of @file{.log} and @file{.trs} files is created when the
+corresponding test has completed.  The set of log files is listed in
+the read-only variable @code{TEST_LOGS}, and defaults to @code{TESTS},
+with the executable extension if any (@pxref{EXEEXT}), as well as any
+suffix listed in @code{TEST_EXTENSIONS} removed, and @file{.log} appended.
+Results are undefined if a test file name ends in several concatenated
+suffixes.  @code{TEST_EXTENSIONS} defaults to @file{.test}; it can be
+overridden by the user, in which case any extension listed in it must be
+constituted by a dot, followed by a non-digit alphabetic character,
+followed by any number of alphabetic characters.
+@c Keep in sync with test-extensions.sh
+For example, @samp{.sh}, @samp{.T} and @samp{.t1} are valid extensions,
+while @samp{.x-y}, @samp{.6c} and @samp{.t.1} are not.
+
+@vindex _LOG_COMPILE
+@vindex _LOG_COMPILER
+@vindex _LOG_FLAGS
+@vindex LOG_COMPILE
+@vindex LOG_COMPILER
+@vindex LOG_FLAGS
+@vindex @var{ext}_LOG_COMPILE
+@vindex @var{ext}_LOG_COMPILER
+@vindex @var{ext}_LOG_FLAGS
+@vindex AM_@var{ext}_LOG_FLAGS
+@vindex AM_LOG_FLAGS
+For tests that match an extension @code{.@var{ext}} listed in
+@code{TEST_EXTENSIONS}, you can provide a custom ``test runner'' using
+the variable @code{@var{ext}_LOG_COMPILER} (note the upper-case
+extension) and pass options in @code{AM_@var{ext}_LOG_FLAGS} and allow
+the user to pass options in @code{@var{ext}_LOG_FLAGS}.  It will cause
+all tests with this extension to be called with this runner.  For all
+tests without a registered extension, the variables @code{LOG_COMPILER},
+@code{AM_LOG_FLAGS}, and @code{LOG_FLAGS} may be used.  For example,
+
+@c Keep in sync with parallel-tests-log-compiler-example.sh
+@example
+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
+@end example
+
+@noindent
+will invoke @samp{$(PERL) -w foo.pl}, @samp{$(PYTHON) -v bar.py},
+and @samp{./wrapper-script -d baz} to produce @file{foo.log},
+@file{bar.log}, and @file{baz.log}, respectively.  The @file{foo.trs},
+@file{bar.trs} and @file{baz.trs} files will be automatically produced
+as a side-effect.
+
+It's important to note that, differently from what we've seen for the
+serial test harness (@pxref{Parallel Test Harness}), the
+@code{AM_TESTS_ENVIRONMENT} and @code{TESTS_ENVIRONMENT} variables
+@emph{cannot} be use to define a custom test runner; the
+@code{LOG_COMPILER} and @code{LOG_FLAGS} (or their extension-specific
+counterparts) should be used instead:
+
+@example
+## This is WRONG!
+AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib' $(PERL) -Mstrict -w
+@end example
+
+@example
+## Do this instead.
+AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib'; export PERL5LIB;
+LOG_COMPILER = $(PERL)
+AM_LOG_FLAGS = -Mstrict -w
+@end example
+
+By default, the test suite harness will run all tests, but there are
+several ways to limit the set of tests that are run:
+
+@itemize @bullet
+@item
+You can set the @code{TESTS} variable.  For example, you can use a
+command like this to run only a subset of the tests:
+
+@example
+env TESTS="foo.test bar.test" make -e check
+@end example
+
+Note however that the command above will unconditionally overwrite the
+@file{test-suite.log} file, thus clobbering the recorded results
+of any previous testsuite run.  This might be undesirable for packages
+whose testsuite takes long time to execute.  Luckily, this problem can
+easily be avoided by overriding also @code{TEST_SUITE_LOG} at runtime;
+for example,
+
+@c Keep in sync with parallel-tests-log-override-2.sh
+@example
+env TEST_SUITE_LOG=partial.log TESTS="..." make -e check
+@end example
+
+will write the result of the partial testsuite runs to the
+@file{partial.log}, without touching @file{test-suite.log}.
+
+@item
+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:
+
+@example
+set x subset*.log; shift
+env TEST_LOGS="foo.log $*" make -e check
+@end example
+
+The comments made above about @code{TEST_SUITE_LOG} overriding applies
+here too.
+
+@item
+@vindex RECHECK_LOGS
+@cindex lazy test execution
+By default, the test harness removes all old per-test @file{.log} and
+@file{.trs} files before it starts running tests to regenerate them.  The
+variable @code{RECHECK_LOGS} contains the set of @file{.log} (and, by
+implication, @file{.trs}) files which are removed.  @code{RECHECK_LOGS}
+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:
+
+@example
+env RECHECK_LOGS= make -e check
+@end example
+
+@item
+@trindex recheck
+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 harness.
+@end itemize
+
+@noindent
+In order to guarantee an ordering between tests even with @code{make
+-j@var{N}}, dependencies between the corresponding @file{.log} files
+may be specified through usual @command{make} dependencies.  For example,
+the following snippet lets the test named @file{foo-execute.test} depend
+upon completion of the test @file{foo-compile.test}:
+
+@example
+TESTS = foo-compile.test foo-execute.test
+foo-execute.log: foo-compile.log
+@end example
+
+@noindent
+Please note that this ordering ignores the @emph{results} of required
+tests, thus the test @file{foo-execute.test} is run even if the test
+@file{foo-compile.test} failed or was skipped beforehand.  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 -j@var{N}}, so be sure they are prepared for
+concurrent execution.
+
+@cindex Unit tests
+@c Keep in sync with 'parallel-tests-extra-programs.test'.
+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.
+
+@node Custom Test Drivers
+@section Custom Test Drivers
+
+@menu
+* Overview of Custom Test Drivers Support::
+* Declaring Custom Test Drivers::
+* API for Custom Test Drivers::
+@end menu
+
+@node Overview of Custom Test Drivers Support
+@subsection Overview of Custom Test Drivers Support
+
+Starting from Automake version 1.12, the parallel test harness allows
+the package authors to use third-party custom test drivers, in case the
+default ones are inadequate for their purposes, or do not support their
+testing protocol of choice.
+
+A custom test driver is expected to properly run the test programs passed
+to it (including the command-line arguments passed to those programs, if
+any), to analyze their execution and outcome, to create the @file{.log}
+and @file{.trs} files associated to these test runs, and to display the test
+results on the console. It is responsibility of the author of the test
+driver to ensure that it implements all the above steps meaningfully and
+correctly; Automake isn't and can't be of any help here.  On the other
+hand, the Automake-provided code for testsuite summary generation offers
+support for test drivers allowing several test results per test script,
+if they take care to register such results properly (@pxref{Log files
+generation and test results recording}).
+
+The exact details of how test scripts' results are to be determined and
+analyzed is left to the individual drivers.  Some drivers might only
+consider the test script exit status (this is done for example by the
+default test driver used by the parallel test harness, described
+in the previous section).  Other drivers might implement more complex and
+advanced test protocols, which might require them to parse and interpreter
+the output emitted by the test script they're running (examples of such
+protocols are TAP and SubUnit).
+
+It's very important to note that, even when using custom test drivers,
+most of the infrastructure described in the previous section about the
+parallel harness remains in place; this includes:
+
+@itemize
+@item
+list of test scripts defined in @code{TESTS}, and overridable at
+runtime through the redefinition of @code{TESTS} or @code{TEST_LOGS};
+@item
+concurrency through the use of @command{make}'s option @option{-j};
+@item
+per-test @file{.log} and @file{.trs} files, and generation of a summary
+@file{.log} file from them;
+@item
+@code{recheck} target, @code{RECHECK_LOGS} variable, and lazy reruns
+of tests;
+@item
+inter-test dependencies;
+@item
+support for @code{check_*} variables (@code{check_PROGRAMS},
+@code{check_LIBRARIES}, ...);
+@item
+use of @code{VERBOSE} environment variable to get verbose output on
+testsuite failures;
+@item
+definition and honoring of @code{TESTS_ENVIRONMENT},
+@code{AM_TESTS_ENVIRONMENT} and @code{AM_TESTS_FD_REDIRECT}
+variables;
+@item
+definition of generic and extension-specific @code{LOG_COMPILER} and
+@code{LOG_FLAGS} variables.
+@end itemize
+
+@noindent
+On the other hand, the exact semantics of how (and if)
+@option{color-tests}, @code{XFAIL_TESTS}, and hard errors are supported
+and handled is left to the individual test drivers.
+
+@c TODO: We should really add a working example in the doc/ directory,
+@c TODO: and reference if from here.
+
+@node Declaring Custom Test Drivers
+@subsection Declaring Custom Test Drivers
+
+@vindex _LOG_DRIVER
+@vindex _LOG_DRIVER_FLAGS
+@vindex LOG_DRIVER
+@vindex LOG_DRIVER_FLAGS
+@vindex @var{ext}_LOG_DRIVER
+@vindex @var{ext}_LOG_DRIVER_FLAGS
+@vindex AM_@var{ext}_LOG_DRIVER_FLAGS
+@vindex AM_LOG_DRIVER_FLAGS
+Custom testsuite drivers are declared by defining the make variables
+@code{LOG_DRIVER} or @code{@var{ext}_LOG_DRIVER} (where @var{ext} must
+be declared in @code{TEST_EXTENSIONS}).  They must be defined to
+programs or scripts that will be used to drive the execution, logging,
+and outcome report of the tests with corresponding extensions (or of
+those with no registered extension in the case of @code{LOG_DRIVER}).
+Clearly, multiple distinct test drivers can be declared in the same
+@file{Makefile.am}.  Note moreover that the @code{LOG_DRIVER} variables
+are @emph{not} a substitute for the @code{LOG_COMPILER} variables: the
+two sets of variables can, and often do, usefully and legitimately
+coexist.
+
+@c TODO: We should really be able to point to a clarifying example here!
+
+The developer-reserved variable @code{AM_LOG_DRIVER_FLAGS} and the
+user-reserved variable @code{LOG_DRIVER_FLAGS} can be used to define
+flags that will be passed to each invocation of @code{LOG_DRIVER},
+with the user-defined flags obviously taking precedence over the
+developer-reserved ones.  Similarly, for each extension @var{ext}
+declared in @code{TEST_EXTENSIONS}, flags listed in
+@code{AM_@var{ext}_LOG_DRIVER_FLAGS} and
+@code{@var{ext}_LOG_DRIVER_FLAGS} will be passed to
+invocations of @code{@var{ext}_LOG_DRIVER}.
+
+@node API for Custom Test Drivers
+@subsection API for Custom Test Drivers
+
+Note that @emph{the APIs described here are still highly experimental},
+and will very likely undergo tightenings and likely also extensive changes
+in the future, to accommodate for new features or to satisfy additional
+portability requirements.
+
+The main characteristic of these APIs is that they are designed to share
+as much infrastructure, semantics, and implementation details as possible
+with the parallel test harness and its default driver.
+
+@menu
+* Command-line arguments for test drivers::
+* Log files generation and test results recording::
+* Testsuite progress output::
+@end menu
+
+@node Command-line arguments for test drivers
+@subsubsection Command-line arguments for test drivers
+
+A custom driver can rely on various command-line options and arguments
+being passed to it automatically by the Automake's @option{parallel-tests}
+harness.  It is @emph{mandatory} that it understands all of them (even
+if the exact interpretation of the associated semantics can legitimately
+change between a test driver and another, and even be a no-op in some
+drivers).
+
+@noindent
+Here is the list of options:
+
+@table @option
+@item --test-name=@var{NAME}
+The name of the test, with VPATH prefix (if any) removed.  This can have a
+suffix and a directory component (as in e.g., @file{sub/foo.test}), and is
+mostly meant to be used in console reports about testsuite advancements and
+results (@pxref{Testsuite progress output}).
+@item --log-file=@file{@var{PATH}.log}
+The @file{.log} file the test driver must create (@pxref{Basics of
+test metadata}).  If it has a directory component (as in e.g.,
+@file{sub/foo.log}), the test harness will ensure that such directory
+exists @emph{before} the test driver is called.
+@item --trs-file=@file{@var{PATH}.trs}
+The @file{.trs} file the test driver must create (@pxref{Basics of
+test metadata}).  If it has a directory component (as in e.g.,
+@file{sub/foo.trs}), the test harness will ensure that such directory
+exists @emph{before} the test driver is called.
+@item --color-tests=@{yes|no@}
+Whether the console output should be colorized or not (@pxref{Simple
+tests and color-tests}, to learn when this option gets activated and
+when it doesn't).
+@item --expect-failure=@{yes|no@}
+Whether the tested program is expected to fail.
+@item --enable-hard-errors=@{yes|no@}
+Whether ``hard errors'' in the tested program should be treated differently
+from normal failures or not (the default should be @code{yes}).  The exact
+meaning of ``hard error'' is highly dependent from the test protocols or
+conventions in use.
+@item --
+Explicitly terminate the list of options.
+@end table
+
+@noindent
+The first non-option argument passed to the test driver is the program to
+be run, and all the following ones are command-line options and arguments
+for this program.
+
+Note that the exact semantics attached to the @option{--color-tests},
+@option{--expect-failure} and @option{--enable-hard-errors} options are
+left up to the individual test drivers.  Still, having a behaviour
+compatible or at least similar to that provided by the default
+@option{parallel-tests} driver is advised, as that would offer a better
+consistency and a more pleasant user experience.
+
+@node Log files generation and test results recording
+@subsubsection Log files generation and test results recording
+
+The test driver must correctly generate the files specified by the
+@option{--log-file} and @option{--trs-file} option (even when the tested
+program fails or crashes).
+
+The @file{.log} file should ideally contain all the output produced by the
+tested program, plus optionally other information that might facilitate
+debugging or analysis of bug reports.  Apart from that, its format is
+basically free.
+
+The @file{.trs} file is used to register some metadata through the use
+of custom reStructuredText fields.  This metadata is expected to be
+employed in various ways by the parallel test harness; for example, to
+count the test results when printing the testsuite summary, or to decide
+which tests to re-run upon @command{make reheck}.  Unrecognized metadata
+in a @file{.trs} file is currently ignored by the harness, but this might
+change in the future. The list of currently recognized metadata follows.
+
+@table @code
+
+@item :test-result:
+@cindex Register test result
+@cindex Register test case result
+@cindex Test result, registering
+@cindex Test case result, registering
+@cindex @code{:test-result:}
+@cindex reStructuredText field, @code{:test-result:}
+The test driver must use this field to register the results of @emph{each}
+test case run by a test script file.  Several @code{:test-result:} fields
+can be present in the same @file{.trs} file; this is done in order to
+support test protocols that allow a single test script to run more test
+cases.
+
+@c Keep this in sync with lib/am/check-am:$(TEST_SUITE_LOG).
+The only recognized test results are currently @code{PASS}, @code{XFAIL},
+@code{SKIP}, @code{FAIL}, @code{XPASS} and @code{ERROR}.  These results,
+when declared with @code{:test-result:}, can be optionally followed by
+text holding the name and/or a brief description of the corresponding
+test; the @option{parallel-tests} harness will ignore such extra text when
+generating @file{test-suite.log} and preparing the testsuite summary.
+
+@c Keep in sync with 'test-metadata-recheck.test'.
+@item @code{:recheck:}
+@cindex :recheck:
+@cindex reStructuredText field, @code{:recheck:}
+If this field is present and defined to @code{no}, then the corresponding
+test script will @emph{not} be run upon a @command{make recheck}.  What
+happens when two or more @code{:recheck:} fields are present in the same
+@file{.trs} file is undefined behaviour.
+
+@c Keep in sync with 'test-metadata-global-log.test'.
+@item @code{:copy-in-global-log:}
+@cindex :copy-in-global-log:
+@cindex reStructuredText field, @code{:copy-in-global-log:}
+If this field is present and defined to @code{no}, then the content
+of the @file{.log} file will @emph{not} be copied into the global
+@file{test-suite.log}.  We allow to forsake such copying because, while
+it can be useful in debugging and analysis of bug report, it can also be
+just a waste of space in normal situations, e.g., when a test script is
+successful.  What happens when two or more @code{:copy-in-global-log:}
+fields are present in the same @file{.trs} file is undefined behaviour.
+
+@c Keep in sync with 'test-metadata-global-result.test'.
+@item @code{:test-global-result:}
+@cindex :test-global-result:
+@cindex reStructuredText field, @code{:test-global-result:}
+This is used to declare the "global result" of the script.  Currently,
+the value of this field is needed only to be reported (more or less
+verbatim) in the generated global log file @code{$(TEST_SUITE_LOG)},
+so it's quite free-form.  For example, a test script which run 10 test
+cases, 6 of which pass and 4 of which are skipped, could reasonably have
+a @code{PASS/SKIP} value for this field, while a test script which run
+19 successful tests and one failed test could have an @code{ALMOST
+PASSED} value.  What happens when two or more @code{:test-global-result:}
+fields are present in the same @file{.trs} file is undefined behaviour.
+@end table
+
+@noindent
+Let's see a small example.  Assume a @file{.trs} file contains the
+following lines:
+
+@example
+:test-result: PASS server starts
+:global-log-copy: no
+:test-result: PASS HTTP/1.1 request
+:test-result: FAIL HTTP/1.0 request
+:recheck: yes
+:test-result: SKIP HTTPS request (TLS library wasn't available)
+:test-result: PASS server stops
+@end example
+
+@noindent
+Then the corresponding test script will be re-run by @command{make check},
+will contribute with @emph{five} test results to the testsuite summary
+(three of these tests being successful, one failed, and one skipped), and
+the content of the corresponding @file{.log} file will @emph{not} be
+copied in the global log file @file{test-suite.log}.
+
+@node Testsuite progress output
+@subsubsection Testsuite progress output
+
+A custom test driver also has the task of displaying, on the standard
+output, the test results as soon as they become available.  Depending on
+the protocol in use, it can also display the reasons for failures and
+skips, and, more generally, any useful diagnostic output (but remember
+that each line on the screen is precious, so that cluttering the screen
+with overly verbose information is bad idea).  The exact format of this
+progress output is left up to the test driver; in fact, a custom test
+driver might @emph{theoretically} even decide not to do any such report,
+leaving it all to the testsuite summary (that would be a very lousy idea,
+of course, and serves only to illustrate the flexibility that is
+granted here).
+
+Remember that consistency is good; so, if possible, try to be consistent
+with the output of the built-in Automake test drivers, providing a similar
+``look & feel''.  In particular, the testsuite progress output should be
+colorized when the @option{--color-tests} is passed to the driver.  On the
+other end, if you are using a known and widespread test protocol with
+well-established implementations, being consistent with those
+implementations' output might be a good idea too.
+
+@c TODO: Give an example, maybe inspired to py.test-style output.
+@c TODO: That is a good idea because it shows a test driver that allows
+@c TODO: for different levels of verbosity in the progress output (could
+@c TODO: be implemented either using a driver cmdline flag, or an
+@c TODO: environment variable, or both).
+
+@node Using the TAP test protocol
+@section Using the TAP test protocol
+
+@menu
+* Introduction to TAP::
+* Use TAP with the Automake test harness::
+* Incompatibilities with other TAP parsers and drivers::
+* Links and external resources on TAP::
+@end menu
+
+@node Introduction to TAP
+@subsection Introduction to TAP
+
+TAP, the Test Anything Protocol, is a simple text-based interface between
+testing modules or programs and a test harness.  The tests (also called
+``TAP producers'' in this context) write test results in a simple format
+on standard output; a test harness (also called ``TAP consumer'') will
+parse and interpret these results, and properly present them to the user,
+and/or register them for later analysis.  The exact details of how this
+is accomplished can vary among different test harnesses.  The Automake
+parallel harness will present the results on the console in the usual
+fashion (@pxref{Testsuite progress on console}), and will use the
+@file{.trs} files (@pxref{Basics of test metadata}) to store the test
+results and related metadata.  Apart from that, it will try to remain
+as much compatible as possible with pre-existing and widespread utilities,
+such as the @uref{http://search.cpan.org/~andya/Test-Harness/bin/prove,
+@command{prove} utility}, at least for the simpler usages.
+
+TAP started its life as part of the test harness for Perl, but today
+it has been (mostly) standardized, and has various independent
+implementations in different languages; among them, C, C++, Perl,
+Python, PHP, and Java.  For a semi-official specification of the
+TAP protocol, please refer to the documentation of
+@uref{http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod,
+      @samp{Test::Harness::TAP}}.
+
+The most relevant real-world usages of TAP are obviously in the testsuites
+of @command{perl} and of many perl modules.  Still, also other important
+third-party packages, such as @uref{http://git-scm.com/, @command{git}},
+use TAP in their testsuite.
+
+@node Use TAP with the Automake test harness
+@subsection Use TAP with the Automake test harness
+
+Currently, the TAP driver that comes with Automake requires some by-hand
+steps on the developer's part (this situation should hopefully be improved
+in future Automake versions).  You'll have to grab the @file{tap-driver.sh}
+script from the Automake distribution by hand, copy it in your source tree,
+add a call to @code{AC_PROG_AWK} in @file{configure.ac} to search for a
+proper awk program, and use the Automake support for third-party test
+drivers to instruct the harness to use the @file{tap-driver.sh} script
+and that awk program to run your TAP-producing tests.  See the example
+below for clarification.
+
+Apart from the options common to all the Automake test drivers
+(@pxref{Command-line arguments for test drivers}), the @file{tap-driver.sh}
+supports the following options, whose names are chosen for enhanced
+compatibility with the @command{prove} utility.
+
+@table @option
+@c Keep in sync with 'tap-exit.test' and 'tap-signal.tap'.
+@item --ignore-exit
+Causes the test driver to ignore the exit status of the test scripts;
+by default, the driver will report an error if the script exits with a
+non-zero status.  This option has effect also on non-zero exit statuses
+due to termination by a signal.
+@item --comments
+Instruct the test driver to display TAP diagnostic (i.e., lines beginning
+with the @samp{#} character) in the testsuite progress output too; by
+default, TAP diagnostic is only copied to the @file{.log} file.
+@item --no-comments
+Revert the effects of @option{--comments}.
+@item --merge
+Instruct the test driver to merge the test scripts' standard error into
+their standard output.  This is necessary if you want to ensure that
+diagnostics from the test scripts are displayed in the correct order
+relative to test results; this can be of great help in debugging
+(especially if your test scripts are shell scripts run with shell
+tracing active).  As a downside, this option might cause the test
+harness to get confused if anything that appears on standard error
+looks like a test result.
+@item --no-merge
+Revert the effects of @option{--merge}.
+@item --diagnostic-string=@var{STRING}
+Change the string that introduces TAP diagnostic from the default value
+of ``@code{#}'' to @code{@var{STRING}}.  This can be useful if your
+TAP-based test scripts produce verbose output on which they have limited
+control (because, say, the output comes from other tools invoked in the
+scripts), and it might contain text that gets spuriously interpreted as
+TAP diagnostic: such an issue can be solved by redefining the string that
+activates TAP diagnostic to a value you know won't appear by chance in
+the tests' output.  Note however that this feature is non-standard, as
+the ``official'' TAP protocol does not allow for such a customization; so
+don't use it if you can avoid it.
+@end table
+
+@noindent
+Here is an example of how the TAP driver can be set up and used.
+
+@c Keep in sync with tap-doc2.sh
+@example
+% @kbd{cat configure.ac}
+AC_INIT([GNU Try Tap], [1.0], [bug-automake@@gnu.org])
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE([foreign parallel-tests -Wall -Werror])
+AC_CONFIG_FILES([Makefile])
+AC_REQUIRE_AUX_FILE([tap-driver.sh])
+AC_PROG_AWK
+AC_OUTPUT
+
+% @kbd{cat Makefile.am}
+TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
+                  $(top_srcdir)/build-aux/tap-driver.sh
+TESTS = foo.test bar.test baz.test
+EXTRA_DIST = $(TESTS)
+
+% @kbd{cat foo.test}
+#!/bin/sh
+echo 1..4 # Number of tests to be executed.
+echo 'ok 1 - Swallows fly'
+echo 'not ok 2 - Caterpillars fly # TODO metamorphosis in progress'
+echo 'ok 3 - Pigs fly # SKIP not enough acid'
+echo '# I just love word plays ...'
+echo 'ok 4 - Flies fly too :-)'
+
+% @kbd{cat bar.test}
+#!/bin/sh
+echo 1..3
+echo 'not ok 1 - Bummer, this test has failed.'
+echo 'ok 2 - This passed though.'
+echo 'Bail out! Ennui kicking in, sorry...'
+echo 'ok 3 - This will not be seen.'
+
+% @kbd{cat baz.test}
+#!/bin/sh
+echo 1..1
+echo ok 1
+# Exit with error, even if all the tests have been successful.
+exit 7
+
+% @kbd{cp @var{PREFIX}/share/automake-@var{APIVERSION}/tap-driver.pl .}
+% @kbd{autoreconf -vi && ./configure && make check}
+...
+PASS: foo.test 1 - Swallows fly
+XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
+SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
+PASS: foo.test 4 - Flies fly too :-)
+FAIL: bar.test 1 - Bummer, this test has failed.
+PASS: bar.test 2 - This passed though.
+ERROR: bar.test - Bail out! Ennui kicking in, sorry...
+PASS: baz.test 1
+ERROR: baz.test - exited with status 7
+...
+Please report to bug-automake@@gnu.org
+...
+% @kbd{echo exit status: $?}
+exit status: 1
+
+@c Keep the "skewed" indentation below, it produces pretty PDF output.
+% @kbd{env TEST_LOG_DRIVER_FLAGS='--comments --ignore-exit' \
+      TESTS='foo.test baz.test' make -e check}
+...
+PASS: foo.test 1 - Swallows fly
+XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
+SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
+# foo.test: I just love word plays...
+PASS: foo.test 4 - Flies fly too :-)
+PASS: baz.test 1
+...
+% @kbd{echo exit status: $?}
+exit status: 0
+@end example
+
+@node Incompatibilities with other TAP parsers and drivers
+@subsection Incompatibilities with other TAP parsers and drivers
+
+For implementation or historical reasons, the TAP driver and harness as
+implemented by Automake have some minors incompatibilities with the
+mainstream versions, which you should be aware of.
+
+@itemize @bullet
+@item
+A @code{Bail out!} directive doesn't stop the whole testsuite, but only
+the test script it occurs in.  This doesn't follow TAP specifications,
+but on the other hand it maximizes compatibility (and code sharing) with
+the ``hard error'' concept of the default @option{parallel-tests} driver.
+@item
+The @code{version} and @code{pragma} directives are not supported.
+@item
+The @option{--diagnostic-string} option of our driver allows to modify
+the string that introduces TAP diagnostic from the default value
+of ``@code{#}''.  The standard TAP protocol has currently no way to
+allow this, so if you use it your diagnostic will be lost to more
+compliant tools like @command{prove} and @code{Test::Harness}
+@item
+And there are probably some other small and yet undiscovered
+incompatibilities, especially in corner cases or with rare usages.
+@end itemize
+
+@node Links and external resources on TAP
+@subsection Links and external resources on TAP
+
+@noindent
+Here are some links to more extensive official or third-party
+documentation and resources about the TAP protocol and related
+tools and libraries.
+@itemize @bullet
+@item
+@uref{http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod,
+      @samp{Test::Harness::TAP}},
+the (mostly) official documentation about the TAP format and protocol.
+@item
+@uref{http://search.cpan.org/~andya/Test-Harness/bin/prove,
+      @command{prove}},
+the most famous command-line TAP test driver, included in the distribution
+of @command{perl} and
+@uref{http://search.cpan.org/~andya/Test-Harness/lib/Test/Harness.pm,
+      @samp{Test::Harness}}.
+@item
+The @uref{http://testanything.org/wiki/index.php/Main_Page,TAP wiki}.
+@item
+A ``gentle introduction'' to testing for perl coders:
+@uref{http://search.cpan.org/dist/Test-Simple/lib/Test/Tutorial.pod,
+      @samp{Test::Tutorial}}.
+@item
+@uref{http://search.cpan.org/~mschwern/Test-Simple/lib/Test/Simple.pm,
+      @samp{Test::Simple}}
+and
+@uref{http://search.cpan.org/~mschwern/Test-Simple/lib/Test/More.pm,
+      @samp{Test::More}},
+the standard perl testing libraries, which are based on TAP.
+@item
+@uref{http://www.eyrie.org/~eagle/software/c-tap-harness/,C TAP Harness},
+a C-based project implementing both a TAP producer and a TAP consumer.
+@item
+@uref{http://www.tap4j.org/,tap4j},
+a Java-based project implementing both a TAP producer and a TAP consumer.
+@end itemize
+
+@node DejaGnu Tests
+@section DejaGnu Tests
+
+If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
+@code{AUTOMAKE_OPTIONS}, then a @command{dejagnu}-based test suite is
+assumed.  The variable @code{DEJATOOL} is a list of names that are
+passed, one at a time, as the @option{--tool} argument to
+@command{runtest} invocations; it defaults to the name of the package.
+
+The variable @code{RUNTESTDEFAULTFLAGS} holds the @option{--tool} and
+@option{--srcdir} flags that are passed to dejagnu by default; this can be
+overridden if necessary.
+@vindex RUNTESTDEFAULTFLAGS
+
+The variables @code{EXPECT} and @code{RUNTEST} can
+also be overridden to provide project-specific values.  For instance,
+you will need to do this if you are testing a compiler toolchain,
+because the default values do not take into account host and target
+names.
+@opindex dejagnu
+@vindex DEJATOOL
+@vindex EXPECT
+@vindex RUNTEST
+
+The contents of the variable @code{RUNTESTFLAGS} are passed to the
+@code{runtest} invocation.  This is considered a ``user variable''
+(@pxref{User Variables}).  If you need to set @command{runtest} flags in
+@file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
+@vindex RUNTESTFLAGS
+@vindex AM_RUNTESTFLAGS
+
+@cindex @file{site.exp}
+Automake will generate rules to create a local @file{site.exp} file,
+defining various variables detected by @command{configure}.  This file
+is automatically read by DejaGnu.  It is OK for the user of a package
+to edit this file in order to tune the test suite.  However this is
+not the place where the test suite author should define new variables:
+this should be done elsewhere in the real test suite code.
+Especially, @file{site.exp} should not be distributed.
+
+Still, if the package author has legitimate reasons to extend
+@file{site.exp} at @command{make} time, he can do so by defining
+the variable @code{EXTRA_DEJAGNU_SITE_CONFIG}; the files listed
+there will be considered @file{site.exp} prerequisites, and their
+content will be appended to it (in the same order in which they
+appear in @code{EXTRA_DEJAGNU_SITE_CONFIG}).  Note that files are
+@emph{not} distributed by default.
+
+For more information regarding DejaGnu test suites, see @ref{Top, , ,
+dejagnu, The DejaGnu Manual}.
+
+@node Install Tests
+@section Install Tests
+
+The @code{installcheck} target is available to the user as a way to
+run any tests after the package has been installed.  You can add tests
+to this by writing an @code{installcheck-local} rule.
+
+
+@node Rebuilding
+@chapter Rebuilding Makefiles
+@cindex rebuild rules
+
+Automake generates rules to automatically rebuild @file{Makefile}s,
+@file{configure}, and other derived files like @file{Makefile.in}.
+
+@acindex AM_MAINTAINER_MODE
+If you are using @code{AM_MAINTAINER_MODE} in @file{configure.ac}, then
+these automatic rebuilding rules are only enabled in maintainer mode.
+
+@vindex ACLOCAL_AMFLAGS
+Sometimes you need to run @command{aclocal} with an argument like
+@option{-I} to tell it where to find @file{.m4} files.  Since
+sometimes @command{make} will automatically run @command{aclocal}, you
+need a way to specify these arguments.  You can do this by defining
+@code{ACLOCAL_AMFLAGS}; this holds arguments that are passed verbatim
+to @command{aclocal}.  This variable is only useful in the top-level
+@file{Makefile.am}.
+
+@vindex CONFIG_STATUS_DEPENDENCIES
+@vindex CONFIGURE_DEPENDENCIES
+@cindex @file{version.sh}, example
+@cindex @file{version.m4}, example
+
+Sometimes it is convenient to supplement the rebuild rules for
+@file{configure} or @file{config.status} with additional dependencies.
+The variables @code{CONFIGURE_DEPENDENCIES} and
+@code{CONFIG_STATUS_DEPENDENCIES} can be used to list these extra
+dependencies.  These variables should be defined in all
+@file{Makefile}s of the tree (because these two rebuild rules are
+output in all them), so it is safer and easier to @code{AC_SUBST} them
+from @file{configure.ac}.  For instance, the following statement will
+cause @file{configure} to be rerun each time @file{version.sh} is
+changed.
+
+@example
+AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
+@end example
+
+@noindent
+Note the @samp{$(top_srcdir)/} in the file name.  Since this variable
+is to be used in all @file{Makefile}s, its value must be sensible at
+any level in the build hierarchy.
+
+Beware not to mistake @code{CONFIGURE_DEPENDENCIES} for
+@code{CONFIG_STATUS_DEPENDENCIES}.
+
+@code{CONFIGURE_DEPENDENCIES} adds dependencies to the
+@file{configure} rule, whose effect is to run @command{autoconf}.  This
+variable should be seldom used, because @command{automake} already tracks
+@code{m4_include}d files.  However it can be useful when playing
+tricky games with @code{m4_esyscmd} or similar non-recommendable
+macros with side effects.
+
+@code{CONFIG_STATUS_DEPENDENCIES} adds dependencies to the
+@file{config.status} rule, whose effect is to run @file{configure}.
+This variable should therefore carry any non-standard source that may
+be read as a side effect of running @command{configure}, like @file{version.sh}
+in the example above.
+
+Speaking of @file{version.sh} scripts, we recommend against them
+today.  They are mainly used when the version of a package is updated
+automatically by a script (e.g., in daily builds).  Here is what some
+old-style @file{configure.ac}s may look like:
+
+@example
+AC_INIT
+. $srcdir/version.sh
+AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
+@dots{}
+@end example
+
+@noindent
+Here, @file{version.sh} is a shell fragment that sets
+@code{VERSION_NUMBER}.  The problem with this example is that
+@command{automake} cannot track dependencies (listing @file{version.sh}
+in @command{CONFIG_STATUS_DEPENDENCIES}, and distributing this file is up
+to the user), and that it uses the obsolete form of @code{AC_INIT} and
+@code{AM_INIT_AUTOMAKE}.  Upgrading to the new syntax is not
+straightforward, because shell variables are not allowed in
+@code{AC_INIT}'s arguments.  We recommend that @file{version.sh} be
+replaced by an M4 file that is included by @file{configure.ac}:
+
+@example
+m4_include([version.m4])
+AC_INIT([name], VERSION_NUMBER)
+AM_INIT_AUTOMAKE
+@dots{}
+@end example
+
+@noindent
+Here @file{version.m4} could contain something like
+@samp{m4_define([VERSION_NUMBER], [1.2])}.  The advantage of this
+second form is that @command{automake} will take care of the
+dependencies when defining the rebuild rule, and will also distribute
+the file automatically.  An inconvenience is that @command{autoconf}
+will now be rerun each time the version number is bumped, when only
+@file{configure} had to be rerun in the previous setup.
+
+
+@node Options
+@chapter Changing Automake's Behavior
+
+@menu
+* Options generalities::        Semantics of Automake option
+* List of Automake options::    A comprehensive list of Automake options
+@end menu
+
+@node Options generalities
+@section Options generalities
+
+Various features of Automake can be controlled by options.  Except where
+noted otherwise, options can be specified in one of several ways.  Most
+options can be applied on a per-@file{Makefile} basis when listed in a
+special @file{Makefile} variable named @code{AUTOMAKE_OPTIONS}.  Some
+of these options only make sense when specified in the toplevel
+@file{Makefile.am} file.  Options are applied globally to all processed
+@file{Makefile} files when listed in the first argument of
+@code{AM_INIT_AUTOMAKE} in @file{configure.ac}, and some options which
+require changes to the @command{configure} script can only be specified
+there.  These are annotated below.
+
+As a general rule, options specified in @code{AUTOMAKE_OPTIONS} take
+precedence over those specified in @code{AM_INIT_AUTOMAKE}, which in
+turn take precedence over those specified on the command line.
+
+Also, some care must be taken about the interactions among strictness
+level and warning categories.  As a general rule, strictness-implied
+warnings are overridden by those specified by explicit options.  For
+example, even if @samp{portability} warnings are disabled by default
+in @option{foreign} strictness, an usage like this will end up enabling
+them:
+
+@example
+AUTOMAKE_OPTIONS = -Wportability foreign
+@end example
+
+However, a strictness level specified in a higher-priority context
+will override all the explicit warnings specified in a lower-priority
+context.  For example, if @file{configure.ac} contains:
+
+@example
+AM_INIT_AUTOMAKE([-Wportability])
+@end example
+
+@noindent
+and @file{Makefile.am} contains:
+
+@example
+AUTOMAKE_OPTIONS = foreign
+@end example
+
+@noindent
+then @samp{portability} warnings will be @emph{disabled} in
+@file{Makefile.am}.
+
+@node List of Automake options
+@section List of Automake options
+
+@vindex AUTOMAKE_OPTIONS
+
+@table @asis
+@item @option{gnits}
+@itemx @option{gnu}
+@itemx @option{foreign}
+@itemx @option{cygnus}
+@cindex Option, @option{gnits}
+@cindex Option, @option{gnu}
+@cindex Option, @option{foreign}
+@cindex Option, @option{cygnus}
+@opindex gnits
+@opindex gnu
+@opindex foreign
+@opindex cygnus
+
+Set the strictness as appropriate.  The @option{gnits} option also
+implies options @option{readme-alpha} and @option{check-news}.
+
+@item @option{check-news}
+@cindex Option, @option{check-news}
+@opindex check-news
+Cause @samp{make dist} to fail unless the current version number appears
+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 serial and parallel test harnesses (see @ref{Simple
+Tests}) and of properly-written custom test drivers (@pxref{Custom Test
+Drivers}) to be colorized on capable terminals.
+
+@item @option{dejagnu}
+@cindex Option, @option{dejagnu}
+@opindex dejagnu
+Cause @command{dejagnu}-specific rules to be generated.  @xref{DejaGnu Tests}.
+
+@item @option{dist-bzip2}
+@cindex Option, @option{dist-bzip2}
+@opindex dist-bzip2
+Hook @code{dist-bzip2} to @code{dist}.
+@trindex dist-bzip2
+
+@item @option{dist-lzip}
+@cindex Option, @option{dist-lzip}
+@opindex dist-lzip
+Hook @code{dist-lzip} to @code{dist}.
+@trindex dist-lzip
+
+@item @option{dist-shar}
+@cindex Option, @option{dist-shar}
+@opindex dist-shar
+Hook @code{dist-shar} to @code{dist}.
+@trindex dist-shar
+
+@item @option{dist-zip}
+@cindex Option, @option{dist-zip}
+@opindex dist-zip
+Hook @code{dist-zip} to @code{dist}.
+@trindex dist-zip
+
+@item @option{dist-tarZ}
+@cindex Option, @option{dist-tarZ}
+@opindex dist-tarZ
+Hook @code{dist-tarZ} to @code{dist}.
+@trindex dist-tarZ
+
+@item @option{filename-length-max=99}
+@cindex Option, @option{filename-length-max=99}
+@opindex filename-length-max=99
+Abort if file names longer than 99 characters are found during
+@samp{make dist}.  Such long file names are generally considered not to
+be portable in tarballs.  See the @option{tar-v7} and @option{tar-ustar}
+options below.  This option should be used in the top-level
+@file{Makefile.am} or as an argument of @code{AM_INIT_AUTOMAKE} in
+@file{configure.ac}, it will be ignored otherwise.  It will also be
+ignored in sub-packages of nested packages (@pxref{Subpackages}).
+
+@item @option{no-define}
+@cindex Option, @option{no-define}
+@opindex no-define
+This option is meaningful only when passed as an argument to
+@code{AM_INIT_AUTOMAKE}.  It will prevent the @code{PACKAGE} and
+@code{VERSION} variables from being @code{AC_DEFINE}d.
+
+@item @option{no-dependencies}
+@cindex Option, @option{no-dependencies}
+@opindex no-dependencies
+This is similar to using @option{--ignore-deps} on the command line,
+but is useful for those situations where you don't have the necessary
+bits to make automatic dependency tracking work
+(@pxref{Dependencies}).  In this case the effect is to effectively
+disable automatic dependency tracking.
+
+@item @option{no-dist}
+@cindex Option, @option{no-dist}
+@opindex no-dist
+Don't emit any code related to @code{dist} target.  This is useful
+when a package has its own method for making distributions.
+
+@item @option{no-dist-gzip}
+@cindex Option, @option{no-dist-gzip}
+@opindex no-dist-gzip
+Do not hook @code{dist-gzip} to @code{dist}.
+@trindex no-dist-gzip
+
+@item @option{no-exeext}
+@cindex Option, @option{no-exeext}
+@opindex no-exeext
+If your @file{Makefile.am} defines a rule for target @code{foo}, it
+will override a rule for a target named @samp{foo$(EXEEXT)}.  This is
+necessary when @code{EXEEXT} is found to be empty.  However, by
+default @command{automake} will generate an error for this use.  The
+@option{no-exeext} option will disable this error.  This is intended for
+use only where it is known in advance that the package will not be
+ported to Windows, or any other operating system using extensions on
+executables.
+
+@item @option{no-installinfo}
+@cindex Option, @option{no-installinfo}
+@opindex no-installinfo
+The generated @file{Makefile.in} will not cause info pages to be built
+or installed by default.  However, @code{info} and @code{install-info}
+targets will still be available.  This option is disallowed at
+@option{gnu} strictness and above.
+@trindex info
+@trindex install-info
+
+@item @option{no-installman}
+@cindex Option, @option{no-installman}
+@opindex no-installman
+The generated @file{Makefile.in} will not cause man pages to be
+installed by default.  However, an @code{install-man} target will still
+be available for optional installation.  This option is disallowed at
+@option{gnu} strictness and above.
+@trindex install-man
+
+@item @option{nostdinc}
+@cindex Option, @option{nostdinc}
+@opindex nostdinc
+This option can be used to disable the standard @option{-I} options that
+are ordinarily automatically provided by Automake.
+
+@item @option{no-texinfo.tex}
+@cindex Option, @option{no-texinfo.tex}
+@opindex no-texinfo.tex
+Don't require @file{texinfo.tex}, even if there are texinfo files in
+this directory.
+
+@item @option{parallel-tests}
+@cindex Option, @option{parallel-tests}
+@opindex parallel-tests
+Enable test suite harness for @code{TESTS} that can run tests in parallel
+(@pxref{Parallel Test Harness}, for more information).
+
+@item @option{serial-tests}
+@cindex Option, @option{serial-tests}
+@opindex serial-tests
+Enable the older serial test suite harness for @code{TESTS} (@pxref{Serial
+Test Harness}, for more information).  This is still the default for the
+moment.
+
+@item @option{readme-alpha}
+@cindex Option, @option{readme-alpha}
+@opindex readme-alpha
+If this release is an alpha release, and the file @file{README-alpha}
+exists, then it will be added to the distribution.  If this option is
+given, version numbers are expected to follow one of two forms.  The
+first form is @samp{@var{major}.@var{minor}.@var{alpha}}, where each
+element is a number; the final period and number should be left off for
+non-alpha releases.  The second form is
+@samp{@var{major}.@var{minor}@var{alpha}}, where @var{alpha} is a
+letter; it should be omitted for non-alpha releases.
+
+@item @option{silent-rules}
+@cindex Option, @option{silent-rules}
+@opindex silent-rules
+Enable less verbose build rules.  This can be used to let build rules
+output status lines of the form:
+@example
+GEN @var{output-file}
+ CC @var{object-file}
+@end example
+@noindent
+instead of printing the command that will be executed to update
+@var{output-file} or to compile @var{object-file}.  It can also
+silence @command{libtool} output.
+
+For more information about how to use, enable, or disable silent
+rules, @pxref{Automake silent-rules Option}.
+
+@item @option{std-options}
+@cindex Options, @option{std-options}
+@cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
+@cindex @option{--help} check
+@cindex @option{--version} check
+@opindex std-options
+
+Make the @code{installcheck} rule check that installed scripts and
+programs support the @option{--help} and @option{--version} options.
+This also provides a basic check that the program's
+run-time dependencies are satisfied after installation.
+
+@vindex AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
+In a few situations, programs (or scripts) have to be exempted from this
+test.  For instance, @command{false} (from GNU coreutils) is never
+successful, even for @option{--help} or @option{--version}.  You can list
+such programs in the variable @code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}.
+Programs (not scripts) listed in this variable should be suffixed by
+@samp{$(EXEEXT)} for the sake of Windows or OS/2.  For instance, suppose we
+build @file{false} as a program but @file{true.sh} as a script, and that
+neither of them support @option{--help} or @option{--version}:
+
+@example
+AUTOMAKE_OPTIONS = std-options
+bin_PROGRAMS = false ...
+bin_SCRIPTS = true.sh ...
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
+@end example
+
+@item @option{subdir-objects}
+@cindex Options, @option{subdir-objects}
+@opindex subdir-objects
+If this option is specified, then objects are placed into the
+subdirectory of the build directory corresponding to the subdirectory of
+the source file.  For instance, if the source file is
+@file{subdir/file.cxx}, then the output file would be
+@file{subdir/file.o}.
+
+In order to use this option with C sources, you should add
+@code{AM_PROG_CC_C_O} to @file{configure.ac}.
+
+@anchor{tar-formats}
+@item @option{tar-v7}
+@itemx @option{tar-ustar}
+@itemx @option{tar-pax}
+@cindex Option, @option{tar-v7}
+@cindex Option, @option{tar-ustar}
+@cindex Option, @option{tar-pax}
+@cindex @command{tar} formats
+@cindex v7 @command{tar} format
+@cindex ustar format
+@cindex pax format
+@opindex tar-v7
+@opindex tar-ustar
+@opindex tar-pax
+
+These three mutually exclusive options select the tar format to use
+when generating tarballs with @samp{make dist}.  (The tar file created
+is then compressed according to the set of @option{no-dist-gzip},
+@option{dist-bzip2}, @option{dist-lzip}, @option{dist-xz} and
+@option{dist-tarZ} options in use.)
+
+These options must be passed as arguments to @code{AM_INIT_AUTOMAKE}
+(@pxref{Macros}) because they can require additional configure checks.
+Automake will complain if it sees such options in an
+@code{AUTOMAKE_OPTIONS} variable.
+
+@option{tar-v7} selects the old V7 tar format.  This is the historical
+default.  This antiquated format is understood by all tar
+implementations and supports file names with up to 99 characters.  When
+given longer file names some tar implementations will diagnose the
+problem while other will generate broken tarballs or use non-portable
+extensions.  Furthermore, the V7 format cannot store empty
+directories.  When using this format, consider using the
+@option{filename-length-max=99} option to catch file names too long.
+
+@option{tar-ustar} selects the ustar format defined by POSIX
+1003.1-1988.  This format is believed to be old enough to be portable.
+It fully supports empty directories.  It can store file names with up
+to 256 characters, provided that the file name can be split at
+directory separator in two parts, first of them being at most 155
+bytes long.  So, in most cases the maximum file name length will be
+shorter than 256 characters.  However you may run against broken tar
+implementations that incorrectly handle file names longer than 99
+characters (please report them to @email{@value{PACKAGE_BUGREPORT}} so we
+can document this accurately).
+
+@option{tar-pax} selects the new pax interchange format defined by POSIX
+1003.1-2001.  It does not limit the length of file names.  However,
+this format is very young and should probably be restricted to
+packages that target only very modern platforms.  There are moves to
+change the pax format in an upward-compatible way, so this option may
+refer to a more recent version in the future.
+
+@xref{Formats, , Controlling the Archive Format, tar, GNU Tar}, for
+further discussion about tar formats.
+
+@command{configure} knows several ways to construct these formats.  It
+will not abort if it cannot find a tool up to the task (so that the
+package can still be built), but @samp{make dist} will fail.
+
+@item @var{version}
+@cindex Option, @var{version}
+A version number (e.g., @samp{0.30}) can be specified.  If Automake is not
+newer than the version specified, creation of the @file{Makefile.in}
+will be suppressed.
+
+@item @option{-W@var{category}} or @option{--warnings=@var{category}}
+@cindex Option, warnings
+@cindex Option, @option{-W@var{category}}
+@cindex Option, @option{--warnings=@var{category}}
+These options behave exactly like their command-line counterpart
+(@pxref{automake Invocation}).  This allows you to enable or disable some
+warning categories on a per-file basis.  You can also setup some warnings
+for your entire project; for instance, try @samp{AM_INIT_AUTOMAKE([-Wall])}
+in your @file{configure.ac}.
+
+@end table
+
+Unrecognized options are diagnosed by @command{automake}.
+
+If you want an option to apply to all the files in the tree, you can use
+the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
+@xref{Macros}.
+
+
+@node Miscellaneous
+@chapter Miscellaneous Rules
+
+There are a few rules and variables that didn't fit anywhere else.
+
+@menu
+* Tags::                        Interfacing to cscope, etags and mkid
+* Suffixes::                    Handling new file extensions
+@end menu
+
+
+@node Tags
+@section Interfacing to @command{etags}
+
+@cindex @file{TAGS} support
+
+Automake will generate rules to generate @file{TAGS} files for use with
+GNU Emacs under some circumstances.
+
+@trindex tags
+If any C, C++ or Fortran 77 source code or headers are present, then
+@code{tags} and @code{TAGS} rules will be generated for the directory.
+All files listed using the @code{_SOURCES}, @code{_HEADERS}, and
+@code{_LISP} primaries will be used to generate tags.  Note that
+generated source files that are not distributed must be declared in
+variables like @code{nodist_noinst_HEADERS} or
+@code{nodist_@var{prog}_SOURCES} or they will be ignored.
+
+A @code{tags} rule will be output at the topmost directory of a
+multi-directory package.  When run from this topmost directory,
+@samp{make tags} will generate a @file{TAGS} file that includes by
+reference all @file{TAGS} files from subdirectories.
+
+The @code{tags} rule will also be generated if the variable
+@code{ETAGS_ARGS} is defined.  This variable is intended for use in
+directories that contain taggable source that @command{etags} does
+not understand.  The user can use the @code{ETAGSFLAGS} to pass
+additional flags to @command{etags}; @code{AM_ETAGSFLAGS} is also
+available for use in @file{Makefile.am}.
+@vindex ETAGS_ARGS
+@vindex ETAGSFLAGS
+@vindex AM_ETAGSFLAGS
+
+Here is how Automake generates tags for its source, and for nodes in its
+Texinfo file:
+
+@example
+ETAGS_ARGS = automake.in --lang=none \
+ --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
+@end example
+
+If you add file names to @code{ETAGS_ARGS}, you will probably also
+want to define @code{TAGS_DEPENDENCIES}.  The contents of this variable
+are added directly to the dependencies for the @code{tags} rule.
+@vindex TAGS_DEPENDENCIES
+
+Automake also generates a @code{ctags} rule that can be used to
+build @command{vi}-style @file{tags} files.  The variable @code{CTAGS}
+is the name of the program to invoke (by default @command{ctags});
+@code{CTAGSFLAGS} can be used by the user to pass additional flags,
+and @code{AM_CTAGSFLAGS} can be used by the @file{Makefile.am}.
+
+@trindex id
+Automake will also generate an @code{ID} rule that will run
+@command{mkid} on the source.  This is only supported on a
+directory-by-directory basis.
+
+Similarly, the @code{cscope} rule will create a list of all the source
+files in the tree and run @command{cscope} to build an inverted index
+database.  The variable @code{CSCOPE} is the name of the program to invoke
+(by default @command{cscope}); @code{CSCOPEFLAGS} and
+@code{CSCOPE_ARGS} can be used by the user to pass additional flags and
+file names respectively, while @code{AM_CSCOPEFLAGS} can be used by the
+@file{Makefile.am}.  Note that, currently, the Automake-provided
+@code{cscope} support, when used in a VPATH build, might not work well
+with non-GNU make implementations (especially with make implementations
+performing @ref{Automatic Rule Rewriting, , VPATH rewrites, autoconf,
+The Autoconf Manual}).
+
+Finally, Automake also emits rules to support the
+@uref{http://www.gnu.org/software/global/, GNU Global Tags program}.
+The @code{GTAGS} rule runs Global Tags and puts the
+result in the top build directory.  The variable @code{GTAGS_ARGS}
+holds arguments that are passed to @command{gtags}.
+@vindex GTAGS_ARGS
+
+
+@node Suffixes
+@section Handling new file extensions
+
+@cindex Adding new @code{SUFFIXES}
+@cindex @code{SUFFIXES}, adding
+@vindex SUFFIXES
+
+It is sometimes useful to introduce a new implicit rule to handle a file
+type that Automake does not know about.
+
+For instance, suppose you had a compiler that could compile @file{.foo}
+files to @file{.o} files.  You would simply define a suffix rule for
+your language:
+
+@example
+.foo.o:
+        foocc -c -o $@@ $<
+@end example
+
+Then you could directly use a @file{.foo} file in a @code{_SOURCES}
+variable and expect the correct results:
+
+@example
+bin_PROGRAMS = doit
+doit_SOURCES = doit.foo
+@end example
+
+This was the simpler and more common case.  In other cases, you will
+have to help Automake to figure out which extensions you are defining your
+suffix rule for.  This usually happens when your extension does not
+start with a dot.  Then, all you have to do is to put a list of new
+suffixes in the @code{SUFFIXES} variable @strong{before} you define your
+implicit rule.
+
+For instance, the following definition prevents Automake from misinterpreting
+the @samp{.idlC.cpp:} rule as an attempt to transform @file{.idlC} files into
+@file{.cpp} files.
+
+@c Keep in sync with suffix7.sh
+@example
+SUFFIXES = .idl C.cpp
+.idlC.cpp:
+        # whatever
+@end example
+
+As you may have noted, the @code{SUFFIXES} variable behaves like the
+@code{.SUFFIXES} special target of @command{make}.  You should not touch
+@code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
+Automake generate the suffix list for @code{.SUFFIXES}.  Any given
+@code{SUFFIXES} go at the start of the generated suffixes list, followed
+by Automake generated suffixes not already in the list.
+
+@node Include
+@chapter Include
+
+@cmindex include
+@cindex Including @file{Makefile} fragment
+@cindex @file{Makefile} fragment, including
+
+Automake supports an @code{include} directive that  can be used to
+include other @file{Makefile} fragments when @command{automake} is run.
+Note that these fragments are read and interpreted by @command{automake},
+not by @command{make}.  As with conditionals, @command{make} has no idea that
+@code{include} is in use.
+
+There are two forms of @code{include}:
+
+@table @code
+@item include $(srcdir)/file
+Include a fragment that is found relative to the current source
+directory.
+
+@item include $(top_srcdir)/file
+Include a fragment that is found relative to the top source directory.
+@end table
+
+Note that if a fragment is included inside a conditional, then the
+condition applies to the entire contents of that fragment.
+
+Makefile fragments included this way are always distributed because
+they are needed to rebuild @file{Makefile.in}.
+
+@node Conditionals
+@chapter Conditionals
+
+@cindex Conditionals
+
+Automake supports a simple type of conditionals.
+
+These conditionals are not the same as conditionals in
+GNU Make.  Automake conditionals are checked at configure time by the
+@file{configure} script, and affect the translation from
+@file{Makefile.in} 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.
+
+@menu
+* Usage of Conditionals::       Declaring conditional content
+* Limits of Conditionals::      Enclosing complete statements
+@end menu
+
+@node Usage of Conditionals
+@section Usage of Conditionals
+
+@acindex AM_CONDITIONAL
+Before using a conditional, you must define it by using
+@code{AM_CONDITIONAL} in the @file{configure.ac} file (@pxref{Macros}).
+
+@defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
+The conditional name, @var{conditional}, should be a simple string
+starting with a letter and containing only letters, digits, and
+underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
+that are reserved by Automake.
+
+The shell @var{condition} (suitable for use in a shell @code{if}
+statement) is evaluated when @command{configure} is run.  Note that you
+must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
+time @command{configure} is run.  If @code{AM_CONDITIONAL} is run
+conditionally (e.g., in a shell @code{if} statement), then the result
+will confuse @command{automake}.
+@end defmac
+
+@cindex @option{--enable-debug}, example
+@cindex Example conditional @option{--enable-debug}
+@cindex Conditional example, @option{--enable-debug}
+
+Conditionals typically depend upon options that the user provides to
+the @command{configure} script.  Here is an example of how to write a
+conditional that is true if the user uses the @option{--enable-debug}
+option.
+
+@example
+AC_ARG_ENABLE([debug],
+[  --enable-debug    Turn on debugging],
+[case "$@{enableval@}" in
+  yes) debug=true ;;
+  no)  debug=false ;;
+  *) AC_MSG_ERROR([bad value $@{enableval@} for --enable-debug]) ;;
+esac],[debug=false])
+AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
+@end example
+
+Here is an example of how to use that conditional in @file{Makefile.am}:
+
+@cmindex if
+@cmindex endif
+@cmindex else
+
+@example
+if DEBUG
+DBG = debug
+else
+DBG =
+endif
+noinst_PROGRAMS = $(DBG)
+@end example
+
+This trivial example could also be handled using @code{EXTRA_PROGRAMS}
+(@pxref{Conditional Programs}).
+
+You may only test a single variable in an @code{if} statement, possibly
+negated using @samp{!}.  The @code{else} statement may be omitted.
+Conditionals may be nested to any depth.  You may specify an argument to
+@code{else} in which case it must be the negation of the condition used
+for the current @code{if}.  Similarly you may specify the condition
+that is closed on the @code{endif} line:
+
+@example
+if DEBUG
+DBG = debug
+else !DEBUG
+DBG =
+endif !DEBUG
+@end example
+
+@noindent
+Unbalanced conditions are errors.  The @code{if}, @code{else}, and
+@code{endif} statements should not be indented, i.e., start on column
+one.
+
+The @code{else} branch of the above two examples could be omitted,
+since assigning the empty string to an otherwise undefined variable
+makes no difference.
+
+@acindex AM_COND_IF
+In order to allow access to the condition registered by
+@code{AM_CONDITIONAL} inside @file{configure.ac}, and to allow
+conditional @code{AC_CONFIG_FILES}, @code{AM_COND_IF} may be used:
+
+@defmac AM_COND_IF (@var{conditional}, @ovar{if-true}, @ovar{if-false})
+If @var{conditional} is fulfilled, execute @var{if-true}, otherwise
+execute @var{if-false}.  If either branch contains @code{AC_CONFIG_FILES},
+it will cause @command{automake} to output the rules for the respective
+files only for the given condition.
+@end defmac
+
+@code{AM_COND_IF} macros may be nested when m4 quotation is used
+properly (@pxref{M4 Quotation, ,, autoconf, The Autoconf Manual}).
+
+@cindex Example conditional @code{AC_CONFIG_FILES}
+@cindex @code{AC_CONFIG_FILES}, conditional
+
+Here is an example of how to define a conditional config file:
+
+@example
+AM_CONDITIONAL([SHELL_WRAPPER], [test "x$with_wrapper" = xtrue])
+AM_COND_IF([SHELL_WRAPPER],
+           [AC_CONFIG_FILES([wrapper:wrapper.in])])
+@end example
+
+@node Limits of Conditionals
+@section Limits of Conditionals
+
+Conditionals should enclose complete statements like variables or
+rules definitions.  Automake cannot deal with conditionals used inside
+a variable definition, for instance, and is not even able to diagnose
+this situation.  The following example would not work:
+
+@example
+# This syntax is not understood by Automake
+AM_CPPFLAGS = \
+  -DFEATURE_A \
+if WANT_DEBUG
+  -DDEBUG \
+endif
+  -DFEATURE_B
+@end example
+
+However the intended definition of @code{AM_CPPFLAGS} can be achieved
+with
+
+@example
+if WANT_DEBUG
+  DEBUGFLAGS = -DDEBUG
+endif
+AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
+@end example
+
+@noindent
+or
+
+@example
+AM_CPPFLAGS = -DFEATURE_A
+if WANT_DEBUG
+AM_CPPFLAGS += -DDEBUG
+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 Silencing Make
+@chapter Silencing @command{make}
+
+@cindex Silent @command{make}
+@cindex Silencing @command{make}
+@cindex Silent rules
+@cindex Silent @command{make} rules
+
+@menu
+* Make verbosity::               Make is verbose by default
+* Tricks For Silencing Make::    Standard and generic ways to silence make
+* Automake silent-rules Option:: How Automake can help in silencing make
+@end menu
+
+@node Make verbosity
+@section Make is verbose by default
+
+Normally, when executing the set of rules associated with a target,
+@command{make} prints each rule before it is executed.  This behaviour,
+while having been in place for a long time, and being even mandated by
+the POSIX standard, starkly violates the ``silence is golden'' UNIX
+principle@footnote{See also
+@uref{http://catb.org/~esr/writings/taoup/html/ch11s09.html}.}:
+
+@quotation
+When a program has nothing interesting or surprising to say, it should
+say nothing.  Well-behaved Unix programs do their jobs unobtrusively,
+with a minimum of fuss and bother.  Silence is golden.
+@end quotation
+
+In fact, while such verbosity of @command{make} can theoretically be
+useful to track bugs and understand reasons of failures right away, it
+can also hide warning and error messages from @command{make}-invoked
+tools, drowning them in a flood of uninteresting and seldom useful
+messages, and thus allowing them to go easily undetected.
+
+This problem can be very annoying, especially for developers, who usually
+know quite well what's going on behind the scenes, and for whom the
+verbose output from @command{make} ends up being mostly noise that hampers
+the easy detection of potentially important warning messages.
+
+@node Tricks For Silencing Make
+@section Standard and generic ways to silence make
+
+Here we describe some common idioms/tricks to obtain a quieter make
+output, with their relative advantages and drawbacks.  In the next
+section (@ref{Automake silent-rules Option}) we'll see how Automake
+can help in this respect.
+
+@itemize @bullet
+
+@item @command{make -s}
+
+This simply causes @command{make} not to print @emph{any} rule before
+executing it.
+
+The @option{-s} flag is mandated by POSIX, universally supported, and
+its purpose and function are easy to understand.
+
+But it also has its serious limitations too.  First of all, it embodies
+an ``all or nothing'' strategy, i.e., either everything is silenced, or
+nothing is; this lack of granularity can sometimes be a fatal flaw.
+Moreover, when the @option{-s} flag is used, the @command{make} output
+might turn out to be too much terse; in case of errors, the user won't
+be able to easily see what rule or command have caused them, or even,
+in case of tools with poor error reporting, what the errors were!
+
+@item @command{make >/dev/null || make}
+
+Apparently, this perfectly obeys the ``silence is golden'' rule: warnings
+from stderr are passed through, output reporting is done only in case of
+error, and in that case it should provide a verbose-enough report to allow
+an easy determination of the error location and causes.
+
+However, calling @command{make} two times in a row might hide errors
+(especially intermittent ones), or subtly change the expected semantic
+of the @command{make} calls --- things these which can clearly make
+debugging and error assessment very difficult.
+
+@item @command{make --no-print-directory}
+
+This is GNU @command{make} specific.  When called with the
+@option{--no-print-directory} option, GNU @command{make} will disable
+printing of the working directory by invoked sub-@command{make}s (the
+well-known ``@i{Entering/Leaving directory ...}'' messages).  This helps
+to decrease the verbosity of the output, but experience has shown that
+it can also often render debugging considerably harder in projects using
+deeply-nested @command{make} recursion.
+
+As an aside, notice that the @option{--no-print-directory} option is
+automatically activated if the @option{-s} flag is used.
+
+@c TODO: Other tricks?
+@c TODO: Maybe speak about the @code{.SILENT} target?
+@c TODO:  - Pros: More granularity on what to silence.
+@c TODO:  - Cons: No easy way to temporarily override.
+
+@end itemize
+
+@node Automake silent-rules Option
+@section How Automake can help in silencing make
+
+The tricks and idioms for silencing @command{make} described in the
+previous section can be useful from time to time, but we've seen that
+they all have their serious drawbacks and limitations.  That's why
+automake provides support for a more advanced and flexible way of
+obtaining quieter output from @command{make}: the @option{silent-rules}
+mode.
+
+@c TODO: Maybe describe in brief the precedent set by the build system
+@c of the Linux Kernel, from which Automake took inspiration ... Links?
+
+To give the gist of what @option{silent-rules} can do, here is a simple
+comparison between a typical @command{make} output (where silent rules
+are disabled) and one with silent rules enabled:
+
+@example
+% @kbd{cat Makefile.am}
+bin_PROGRAMS = foo
+foo_SOURCES = main.c func.c
+% @kbd{cat main.c}
+int main (void) @{ return func (); @}  /* func used undeclared */
+% @kbd{cat func.c}
+int func (void) @{ int i; return i; @} /* i used uninitialized */
+
+@i{The make output is by default very verbose.  This causes warnings
+from the compiler to be somewhat hidden, and not immediate to spot.}
+% @kbd{make CFLAGS=-Wall}
+gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
+-DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
+-DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT main.o
+-MD -MP -MF .deps/main.Tpo -c -o main.o main.c
+main.c: In function ‘main’:
+main.c:3:3: warning: implicit declaration of function ‘func’
+mv -f .deps/main.Tpo .deps/main.Po
+gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
+-DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
+-DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT func.o
+-MD -MP -MF .deps/func.Tpo -c -o func.o func.c
+func.c: In function ‘func’:
+func.c:4:3: warning: ‘i’ used uninitialized in this function
+mv -f .deps/func.Tpo .deps/func.Po
+gcc -Wall -o foo main.o func.o
+
+@i{Clean up, so that we we can rebuild everything from scratch.}
+% @kbd{make clean}
+test -z "foo" || rm -f foo
+rm -f *.o
+
+@i{Silent rules enabled: the output is minimal but informative.  In
+particular, the warnings from the compiler stick out very clearly.}
+% @kbd{make V=0 CFLAGS=-Wall}
+  CC     main.o
+main.c: In function ‘main’:
+main.c:3:3: warning: implicit declaration of function ‘func’
+  CC     func.o
+func.c: In function ‘func’:
+func.c:4:3: warning: ‘i’ used uninitialized in this function
+  CCLD   foo
+@end example
+
+@cindex silent-rules and libtool
+Also, in projects using @command{libtool}, the use of silent rules can
+automatically enable the @command{libtool}'s @option{--silent} option:
+
+@example
+% @kbd{cat Makefile.am}
+lib_LTLIBRARIES = libx.la
+
+% @kbd{make # Both make and libtool are verbose by default.}
+...
+libtool: compile: gcc -DPACKAGE_NAME=\"foo\" ... -DLT_OBJDIR=\".libs/\"
+  -I. -g -O2 -MT libx.lo -MD -MP -MF .deps/libx.Tpo -c libx.c -fPIC
+  -DPIC -o .libs/libx.o
+mv -f .deps/libx.Tpo .deps/libx.Plo
+/bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o libx.la -rpath
+  /usr/local/lib libx.lo
+libtool: link: gcc -shared .libs/libx.o -Wl,-soname -Wl,libx.so.0
+  -o .libs/libx.so.0.0.0
+libtool: link: cd .libs && rm -f libx.so && ln -s libx.so.0.0.0 libx.so
+...
+
+% @kbd{make V=0}
+  CC     libx.lo
+  CCLD   libx.la
+@end example
+
+Let's now see how the @option{silent-rules} mode interfaces with the
+package developer and the package user.
+
+To enable the use of @option{silent-rules} in his package, a developer
+needs to do either of the following:
+
+@itemize @bullet
+@item
+Add the @option{silent-rules} option as argument to @code{AM_INIT_AUTOMAKE}.
+@item
+Call the @code{AM_SILENT_RULES} macro from within the @file{configure.ac}
+file.
+@end itemize
+
+It is not possible to instead specify @option{silent-rules} in a
+@file{Makefile.am} file.
+
+If the developer has done either of the above, then the user of the
+package may influence the verbosity at @command{configure} run time as
+well as at @command{make} run time:
+
+@itemize @bullet
+@item
+@opindex --enable-silent-rules
+@opindex --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}
+will cause normal verbose output.
+@item
+@vindex @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,
+@code{make V=0} less verbose output.
+@end itemize
+
+@cindex default verbosity for silent-rules
+Note that silent rules are @emph{disabled} by default; the user must
+enable them explicitly at either @command{configure} run time or at
+@command{make} run time.  We think that this is a good policy, since
+it provides the casual user with enough information to prepare a good
+bug report in case anything breaks.
+
+Still, notwithstanding the rationales above, a developer who wants to
+make silent rules enabled by default in his own package can do so by
+adding a @samp{yes} argument to the @code{AM_SILENT_RULES} call in
+@file{configure.ac}.  We advise against this approach, though.
+
+@c Keep in sync with silent-configsite.sh
+Users who prefer to have silent rules enabled by default can edit their
+@file{config.site} file to make the variable @code{enable_silent_rules}
+default to @samp{yes}.  This should still allow disabling silent rules
+at @command{configure} time and at @command{make} time.
+
+@c FIXME: there's really a need to specify this explicitly?
+For portability to different @command{make} implementations, package authors
+are advised to not set the variable @code{V} inside the @file{Makefile.am}
+file, to allow the user to override the value for subdirectories as well.
+
+The current implementation of this feature normally uses nested
+variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature
+that is not required by POSIX 2008 but is widely supported in
+practice.  The @option{silent-rules} option thus turns off warnings
+about recursive variable expansion, which are in turn enabled by
+@option{-Wportability} (@pxref{automake Invocation}).  On the rare
+@command{make} implementations that do not support nested variable
+expansion, whether rules are silent is always determined at configure
+time, and cannot be overridden at make time.  Future versions of POSIX
+are likely to require nested variable expansion, so this minor
+limitation should go away with time.
+
+@vindex @code{AM_V_GEN}
+@vindex @code{AM_V_at}
+@vindex @code{AM_DEFAULT_VERBOSITY}
+@vindex @code{AM_V}
+@vindex @code{AM_DEFAULT_V}
+To extend the silent mode to your own rules, you have two choices:
+
+@itemize @bullet
+@item
+You can use the predefined variable @code{AM_V_GEN} as a prefix to
+commands that should output a status line in silent mode, and
+@code{AM_V_at} as a prefix to commands that should not output anything
+in silent mode.  When output is to be verbose, both of these variables
+will expand to the empty string.
+@item
+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
+@code{AM_V_GEN}:
+
+@example
+pkg_verbose = $(pkg_verbose_@@AM_V@@)
+pkg_verbose_ = $(pkg_verbose_@@AM_DEFAULT_V@@)
+pkg_verbose_0 = @@echo PKG-GEN $@@;
+
+foo: foo.in
+        $(pkg_verbose)cp $(srcdir)/foo.in $@@
+@end example
+
+@end itemize
+
+As a final note, observe that, even when silent rules are enabled,
+the @option{--no-print-directory} option is still required with GNU
+@command{make} if the ``@i{Entering/Leaving directory ...}'' messages
+are to be disabled.
+
+@node Gnits
+@chapter The effect of @option{--gnu} and @option{--gnits}
+
+@cindex @option{--gnu}, required files
+@cindex @option{--gnu}, complete description
+
+The @option{--gnu} option (or @option{gnu} in the
+@code{AUTOMAKE_OPTIONS} variable) causes @command{automake} to check
+the following:
+
+@itemize @bullet
+@item
+The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{AUTHORS},
+and @file{ChangeLog}, plus one of @file{COPYING.LIB}, @file{COPYING.LESSER}
+or @file{COPYING}, are required at the topmost directory of the package.
+
+If the @option{--add-missing} option is given, @command{automake} will
+add a generic version of the @file{INSTALL} file as well as the
+@file{COPYING} file containing the text of the current version of the
+GNU General Public License existing at the time of this Automake release
+(version 3 as this is written, @uref{http://www.gnu.org/@/copyleft/@/gpl.html}).
+However, an existing @file{COPYING} file will never be overwritten by
+@command{automake}.
+
+@item
+The options @option{no-installman} and @option{no-installinfo} are
+prohibited.
+@end itemize
+
+Note that this option will be extended in the future to do even more
+checking; it is advisable to be familiar with the precise requirements
+of the GNU standards.  Also, @option{--gnu} can require certain
+non-standard GNU programs to exist for use by various maintainer-only
+rules; for instance, in the future @command{pathchk} might be required for
+@samp{make dist}.
+
+@cindex @option{--gnits}, complete description
+
+The @option{--gnits} option does everything that @option{--gnu} does, and
+checks the following as well:
+
+@itemize @bullet
+@item
+@samp{make installcheck} will check to make sure that the @option{--help}
+and @option{--version} really print a usage message and a version string,
+respectively.  This is the @option{std-options} option (@pxref{Options}).
+
+@item
+@samp{make dist} will check to make sure the @file{NEWS} file has been
+updated to the current version.
+
+@item
+@code{VERSION} is checked to make sure its format complies with Gnits
+standards.
+@c FIXME xref when standards are finished
+
+@item
+@cindex @file{README-alpha}
+If @code{VERSION} indicates that this is an alpha release, and the file
+@file{README-alpha} appears in the topmost directory of a package, then
+it is included in the distribution.  This is done in @option{--gnits}
+mode, and no other, because this mode is the only one where version
+number formats are constrained, and hence the only mode where Automake
+can automatically determine whether @file{README-alpha} should be
+included.
+
+@item
+The file @file{THANKS} is required.
+@end itemize
+
+
+@node Cygnus
+@chapter The effect of @option{--cygnus}
+
+@cindex @option{cygnus} strictness
+
+@emph{The features described in this section are deprecated; you must
+not use any of them in new code, and should remove their use from older
+but still maintained code: they will be withdrawn the next major Automake
+release (1.13).}
+
+Some packages, notably GNU GCC and GNU gdb, used to have a build
+environment originally written at Cygnus Support (subsequently renamed
+Cygnus Solutions, and then later purchased by Red Hat).  Packages with
+this ancestry are sometimes referred to as ``Cygnus'' trees.
+
+A Cygnus tree has slightly different rules for how a
+@file{Makefile.in} is to be constructed.  Passing @option{--cygnus} to
+@command{automake} will cause any generated @file{Makefile.in} to
+comply with Cygnus rules.
+
+Here are the precise effects of @option{--cygnus}:
+
+@itemize @bullet
+
+@item
+The @option{foreign} strictness is implied.
+
+@item
+The options @option{no-installinfo}, @option{no-dependencies} and
+@option{no-dist} are implied (@pxref{Options}).
+
+@item
+The macro @code{AM_MAINTAINER_MODE} is required.
+
+@item
+Info files are always created in the build directory, and not in the
+source directory.  Packages that don't use the @option{cygnus} option
+can emulate this effect by using the @option{no-installinfo} option
+and listing the generated info files in the @code{CLEANFILES} variable.
+
+@item
+@file{texinfo.tex} is not required if a Texinfo source file is
+specified.  The assumption is that the file will be supplied, but in a
+place that Automake cannot find -- it is an artifact of how Cygnus
+packages are typically bundled.  This effect can be emulated in
+packages not using the @option{cygnus} option with a proper definition
+of the @code{TEXINFO_TEX} variable (@pxref{Texinfo}).
+
+@item
+Certain tools will be searched for in the build tree as well as in the
+user's @env{PATH}.  These tools are @command{runtest}, @command{expect},
+@command{makeinfo} and @command{texi2dvi}.
+
+@item
+The @code{check} target doesn't depend on @code{all}.
+@end itemize
+
+
+@node Not Enough
+@chapter When Automake Isn't Enough
+
+In some situations, where Automake is not up to one task, one has to
+resort to handwritten rules or even handwritten @file{Makefile}s.
+
+@menu
+* Extending::                   Adding new rules or overriding existing ones.
+* Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
+@end menu
+
+@node Extending
+@section Extending Automake Rules
+
+With some minor exceptions (for example @code{_PROGRAMS} variables,
+@code{TESTS}, or @code{XFAIL_TESTS}) being rewritten to append
+@samp{$(EXEEXT)}), the contents of a @file{Makefile.am} is copied to
+@file{Makefile.in} verbatim.
+
+@cindex copying semantics
+
+These copying semantics mean that many problems can be worked around
+by simply adding some @command{make} variables and rules to
+@file{Makefile.am}.  Automake will ignore these additions.
+
+@cindex conflicting definitions
+@cindex rules, conflicting
+@cindex variables, conflicting
+@cindex definitions, conflicts
+
+Since a @file{Makefile.in} is built from data gathered from three
+different places (@file{Makefile.am}, @file{configure.ac}, and
+@command{automake} itself), it is possible to have conflicting
+definitions of rules or variables.  When building @file{Makefile.in}
+the following priorities are respected by @command{automake} to ensure
+the user always has the last word:
+
+@itemize
+@item
+User defined variables in @file{Makefile.am} have priority over
+variables @code{AC_SUBST}ed from @file{configure.ac}, and
+@code{AC_SUBST}ed variables have priority over
+@command{automake}-defined variables.
+@item
+As far as rules are concerned, a user-defined rule overrides any
+@command{automake}-defined rule for the same target.
+@end itemize
+
+@cindex overriding rules
+@cindex overriding semantics
+@cindex rules, overriding
+
+These overriding semantics make it possible to fine tune some default
+settings of Automake, or replace some of its rules.  Overriding
+Automake rules is often inadvisable, particularly in the topmost
+directory of a package with subdirectories.  The @option{-Woverride}
+option (@pxref{automake Invocation}) comes in handy to catch overridden
+definitions.
+
+Note that Automake does not make any distinction between rules with
+commands and rules that only specify dependencies.  So it is not
+possible to append new dependencies to an @command{automake}-defined
+target without redefining the entire rule.
+
+@cindex @option{-local} targets
+@cindex local targets
+
+However, various useful targets have a @samp{-local} version you can
+specify in your @file{Makefile.am}.  Automake will supplement the
+standard target with these user-supplied targets.
+
+@trindex  all
+@trindex  all-local
+@trindex  info
+@trindex  info-local
+@trindex  dvi
+@trindex  dvi-local
+@trindex  ps
+@trindex  ps-local
+@trindex  pdf
+@trindex  pdf-local
+@trindex  html
+@trindex  html-local
+@trindex  check
+@trindex  check-local
+@trindex  install
+@trindex  install-data
+@trindex  install-data-local
+@trindex  install-dvi
+@trindex  install-dvi-local
+@trindex  install-exec
+@trindex  install-exec-local
+@trindex  install-html
+@trindex  install-html-local
+@trindex  install-info
+@trindex  install-info-local
+@trindex  install-pdf
+@trindex  install-pdf-local
+@trindex  install-ps
+@trindex  install-ps-local
+@trindex  uninstall
+@trindex  uninstall-local
+@trindex  mostlyclean
+@trindex  mostlyclean-local
+@trindex  clean
+@trindex  clean-local
+@trindex  distclean
+@trindex  distclean-local
+@trindex  installdirs
+@trindex  installdirs-local
+@trindex  installcheck
+@trindex  installcheck-local
+
+The targets that support a local version are @code{all}, @code{info},
+@code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
+@code{install-data}, @code{install-dvi}, @code{install-exec},
+@code{install-html}, @code{install-info}, @code{install-pdf},
+@code{install-ps}, @code{uninstall}, @code{installdirs},
+@code{installcheck} and the various @code{clean} targets
+(@code{mostlyclean}, @code{clean}, @code{distclean}, and
+@code{maintainer-clean}).
+
+Note that there are no @code{uninstall-exec-local} or
+@code{uninstall-data-local} targets; just use @code{uninstall-local}.
+It doesn't make sense to uninstall just data or just executables.
+
+For instance, here is one way to erase a subdirectory during
+@samp{make clean} (@pxref{Clean}).
+
+@example
+clean-local:
+        -rm -rf testSubDir
+@end example
+
+You may be tempted to use @code{install-data-local} to install a file
+to some hard-coded location, but you should avoid this
+(@pxref{Hard-Coded Install Paths}).
+
+With the @code{-local} targets, there is no particular guarantee of
+execution order; typically, they are run early, but with parallel
+make, there is no way to be sure of that.
+
+@cindex @option{-hook} targets
+@cindex hook targets
+@trindex install-data-hook
+@trindex install-exec-hook
+@trindex uninstall-hook
+@trindex dist-hook
+
+In contrast, some rules also have a way to run another rule, called a
+@dfn{hook}; hooks are always executed after the main rule's work is done.
+The hook is named after the principal target, with @samp{-hook} appended.
+The targets allowing hooks are @code{install-data},
+@code{install-exec}, @code{uninstall}, @code{dist}, and
+@code{distcheck}.
+
+For instance, here is how to create a hard link to an installed program:
+
+@example
+install-exec-hook:
+        ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
+           $(DESTDIR)$(bindir)/proglink$(EXEEXT)
+@end example
+
+Although cheaper and more portable than symbolic links, hard links
+will not work everywhere (for instance, OS/2 does not have
+@command{ln}).  Ideally you should fall back to @samp{cp -p} when
+@command{ln} does not work.  An easy way, if symbolic links are
+acceptable to you, is to add @code{AC_PROG_LN_S} to
+@file{configure.ac} (@pxref{Particular Programs, , Particular Program
+Checks, autoconf, The Autoconf Manual}) and use @samp{$(LN_S)} in
+@file{Makefile.am}.
+
+@cindex versioned binaries, installing
+@cindex installing versioned binaries
+@cindex @code{LN_S} example
+For instance, here is how you could install a versioned copy of a
+program using @samp{$(LN_S)}:
+
+@c Keep in sync with insthook.sh
+@example
+install-exec-hook:
+        cd $(DESTDIR)$(bindir) && \
+          mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
+          $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
+@end example
+
+Note that we rename the program so that a new version will erase the
+symbolic link, not the real binary.  Also we @command{cd} into the
+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{The Two Parts of
+Install}).
+@c Keep in sync with primary-prefix-couples-documented-valid.sh
+So a @code{foo_SCRIPTS} will be installed by
+@code{install-data}, and a @code{barexec_SCRIPTS} will be installed by
+@code{install-exec}.  You should define your hooks consequently.
+
+@c FIXME should include discussion of variables you can use in these
+@c rules
+
+@node Third-Party Makefiles
+@section Third-Party @file{Makefile}s
+
+@cindex Third-party packages, interfacing with
+@cindex Interfacing with third-party packages
+
+In most projects all @file{Makefile}s are generated by Automake.  In
+some cases, however, projects need to embed subdirectories with
+handwritten @file{Makefile}s.  For instance, one subdirectory could be
+a third-party project with its own build system, not using Automake.
+
+It is possible to list arbitrary directories in @code{SUBDIRS} or
+@code{DIST_SUBDIRS} provided each of these directories has a
+@file{Makefile} that recognizes all the following recursive targets.
+
+@cindex recursive targets and third-party @file{Makefile}s
+When a user runs one of these targets, that target is run recursively
+in all subdirectories.  This is why it is important that even
+third-party @file{Makefile}s support them.
+
+@table @code
+@item all
+Compile the entire package.  This is the default target in
+Automake-generated @file{Makefile}s, but it does not need to be the
+default in third-party @file{Makefile}s.
+
+@item distdir
+@trindex distdir
+@vindex distdir
+@vindex top_distdir
+Copy files to distribute into @samp{$(distdir)}, before a tarball is
+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{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.
+
+@item install
+@itemx install-data
+@itemx install-exec
+@itemx uninstall
+Install or uninstall files (@pxref{Install}).
+
+@item install-dvi
+@itemx install-html
+@itemx install-info
+@itemx install-ps
+@itemx install-pdf
+Install only some specific documentation format (@pxref{Texinfo}).
+
+@item installdirs
+Create install directories, but do not install any files.
+
+@item check
+@itemx installcheck
+Check the package (@pxref{Tests}).
+
+@item mostlyclean
+@itemx clean
+@itemx distclean
+@itemx maintainer-clean
+Cleaning rules (@pxref{Clean}).
+
+@item dvi
+@itemx pdf
+@itemx ps
+@itemx info
+@itemx html
+Build the documentation in various formats (@pxref{Texinfo}).
+
+@item tags
+@itemx ctags
+Build @file{TAGS} and @file{CTAGS} (@pxref{Tags}).
+@end table
+
+If you have ever used Gettext in a project, this is a good example of
+how third-party @file{Makefile}s can be used with Automake.  The
+@file{Makefile}s @command{gettextize} puts in the @file{po/} and
+@file{intl/} directories are handwritten @file{Makefile}s that
+implement all these targets.  That way they can be added to
+@code{SUBDIRS} in Automake packages.
+
+Directories that are only listed in @code{DIST_SUBDIRS} but not in
+@code{SUBDIRS} need only the @code{distclean},
+@code{maintainer-clean}, and @code{distdir} rules (@pxref{Conditional
+Subdirectories}).
+
+Usually, many of these rules are irrelevant to the third-party
+subproject, but they are required for the whole package to work.  It's
+OK to have a rule that does nothing, so if you are integrating a
+third-party project with no documentation or tag support, you could
+simply augment its @file{Makefile} as follows:
+
+@example
+EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
+.PHONY: $(EMPTY_AUTOMAKE_TARGETS)
+$(EMPTY_AUTOMAKE_TARGETS):
+@end example
+
+Another aspect of integrating third-party build systems is whether
+they support VPATH builds (@pxref{VPATH Builds}).  Obviously if the
+subpackage does not support VPATH builds the whole package will not
+support VPATH builds.  This in turns means that @samp{make distcheck}
+will not work, because it relies on VPATH builds.  Some people can
+live without this (actually, many Automake users have never heard of
+@samp{make distcheck}).  Other people may prefer to revamp the
+existing @file{Makefile}s to support VPATH@.  Doing so does not
+necessarily require Automake, only Autoconf is needed (@pxref{Build
+Directories, , Build Directories, autoconf, The Autoconf Manual}).
+The necessary substitutions: @samp{@@srcdir@@}, @samp{@@top_srcdir@@},
+and @samp{@@top_builddir@@} are defined by @file{configure} when it
+processes a @file{Makefile} (@pxref{Preset Output Variables, , Preset
+Output Variables, autoconf, The Autoconf Manual}), they are not
+computed by the Makefile like the aforementioned @samp{$(distdir)} and
+@samp{$(top_distdir)} variables.
+
+It is sometimes inconvenient to modify a third-party @file{Makefile}
+to introduce the above required targets.  For instance, one may want to
+keep the third-party sources untouched to ease upgrades to new
+versions.
+
+@cindex @file{GNUmakefile} including @file{Makefile}
+Here are two other ideas.  If GNU make is assumed, one possibility is
+to add to that subdirectory a @file{GNUmakefile} that defines the
+required targets and includes the third-party @file{Makefile}.  For
+this to work in VPATH builds, @file{GNUmakefile} must lie in the build
+directory; the easiest way to do this is to write a
+@file{GNUmakefile.in} instead, and have it processed with
+@code{AC_CONFIG_FILES} from the outer package.  For example if we
+assume @file{Makefile} defines all targets except the documentation
+targets, and that the @code{check} target is actually called
+@code{test}, we could write @file{GNUmakefile} (or
+@file{GNUmakefile.in}) like this:
+
+@example
+# First, include the real Makefile
+include Makefile
+# Then, define the other targets needed by Automake Makefiles.
+.PHONY: dvi pdf ps info html check
+dvi pdf ps info html:
+check: test
+@end example
+
+@cindex Proxy @file{Makefile} for third-party packages
+A similar idea that does not use @code{include} is to write a proxy
+@file{Makefile} that dispatches rules to the real @file{Makefile},
+either with @samp{$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target} (if
+it's OK to rename the original @file{Makefile}) or with @samp{cd
+subdir && $(MAKE) $(AM_MAKEFLAGS) target} (if it's OK to store the
+subdirectory project one directory deeper).  The good news is that
+this proxy @file{Makefile} can be generated with Automake.  All we
+need are @option{-local} targets (@pxref{Extending}) that perform the
+dispatch.  Of course the other Automake features are available, so you
+could decide to let Automake perform distribution or installation.
+Here is a possible @file{Makefile.am}:
+
+@example
+all-local:
+        cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
+check-local:
+        cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
+clean-local:
+        cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
+
+# Assuming the package knows how to install itself
+install-data-local:
+        cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
+install-exec-local:
+        cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
+uninstall-local:
+        cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
+
+# Distribute files from here.
+EXTRA_DIST = subdir/Makefile subdir/program.c ...
+@end example
+
+Pushing this idea to the extreme, it is also possible to ignore the
+subproject build system and build everything from this proxy
+@file{Makefile.am}.  This might sound very sensible if you need VPATH
+builds but the subproject does not support them.
+
+@node Distributing
+@chapter Distributing @file{Makefile.in}s
+
+Automake places no restrictions on the distribution of the resulting
+@file{Makefile.in}s.  We still encourage software authors to
+distribute their work under terms like those of the GPL, but doing so
+is not required to use Automake.
+
+Some of the files that can be automatically installed via the
+@option{--add-missing} switch do fall under the GPL@.  However, these also
+have a special exception allowing you to distribute them with your
+package, regardless of the licensing you choose.
+
+
+@node API Versioning
+@chapter Automake API Versioning
+
+New Automake releases usually include bug fixes and new features.
+Unfortunately they may also introduce new bugs and incompatibilities.
+This makes four reasons why a package may require a particular Automake
+version.
+
+Things get worse when maintaining a large tree of packages, each one
+requiring a different version of Automake.  In the past, this meant that
+any developer (and sometimes users) had to install several versions of
+Automake in different places, and switch @samp{$PATH} appropriately for
+each package.
+
+Starting with version 1.6, Automake installs versioned binaries.  This
+means you can install several versions of Automake in the same
+@samp{$prefix}, and can select an arbitrary Automake version by running
+@command{automake-1.6} or @command{automake-1.7} without juggling with
+@samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
+will use @command{automake-1.6} explicitly in their rebuild rules.
+
+The number @samp{1.6} in @command{automake-1.6} is Automake's API version,
+not Automake's version.  If a bug fix release is made, for instance
+Automake 1.6.1, the API version will remain 1.6.  This means that a
+package that works with Automake 1.6 should also work with 1.6.1; after
+all, this is what people expect from bug fix releases.
+
+If your package relies on a feature or a bug fix introduced in
+a release, you can pass this version as an option to Automake to ensure
+older releases will not be used.  For instance, use this in your
+@file{configure.ac}:
+
+@example
+  AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
+@end example
+
+@noindent
+or, in a particular @file{Makefile.am}:
+
+@example
+  AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
+@end example
+
+@noindent
+Automake will print an error message if its version is
+older than the requested version.
+
+
+@heading What is in the API
+
+Automake's programming interface is not easy to define.  Basically it
+should include at least all @strong{documented} variables and targets
+that a @file{Makefile.am} author can use, any behavior associated with
+them (e.g., the places where @samp{-hook}'s are run), the command line
+interface of @command{automake} and @command{aclocal}, @dots{}
+
+@heading What is not in the API
+
+Every undocumented variable, target, or command line option, is not part
+of the API@.  You should avoid using them, as they could change from one
+version to the other (even in bug fix releases, if this helps to fix a
+bug).
+
+If it turns out you need to use such an undocumented feature, contact
+@email{automake@@gnu.org} and try to get it documented and exercised by
+the test-suite.
+
+@node Upgrading
+@chapter Upgrading a Package to a Newer Automake Version
+
+Automake maintains three kind of files in a package.
+
+@itemize
+@item @file{aclocal.m4}
+@item @file{Makefile.in}s
+@item auxiliary tools like @file{install-sh} or @file{py-compile}
+@end itemize
+
+@file{aclocal.m4} is generated by @command{aclocal} and contains some
+Automake-supplied M4 macros.  Auxiliary tools are installed by
+@samp{automake --add-missing} when needed.  @file{Makefile.in}s are
+built from @file{Makefile.am} by @command{automake}, and rely on the
+definitions of the M4 macros put in @file{aclocal.m4} as well as the
+behavior of the auxiliary tools installed.
+
+Because all these files are closely related, it is important to
+regenerate all of them when upgrading to a newer Automake release.
+The usual way to do that is
+
+@example
+aclocal # with any option needed (such a -I m4)
+autoconf
+automake --add-missing --force-missing
+@end example
+
+@noindent
+or more conveniently:
+
+@example
+autoreconf -vfi
+@end example
+
+The use of @option{--force-missing} ensures that auxiliary tools will be
+overridden by new versions (@pxref{automake Invocation}).
+
+It is important to regenerate all these files each time Automake is
+upgraded, even between bug fixes releases.  For instance, it is not
+unusual for a bug fix to involve changes to both the rules generated
+in @file{Makefile.in} and the supporting M4 macros copied to
+@file{aclocal.m4}.
+
+Presently @command{automake} is able to diagnose situations where
+@file{aclocal.m4} has been generated with another version of
+@command{aclocal}.  However it never checks whether auxiliary scripts
+are up-to-date.  In other words, @command{automake} will tell you when
+@command{aclocal} needs to be rerun, but it will never diagnose a
+missing @option{--force-missing}.
+
+Before upgrading to a new major release, it is a good idea to read the
+file @file{NEWS}.  This file lists all changes between releases: new
+features, obsolete constructs, known incompatibilities, and
+workarounds.
+
+@node FAQ
+@chapter Frequently Asked Questions about Automake
+
+This chapter covers some questions that often come up on the mailing
+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
+* Errors with distclean::       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?
+* 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
+* Debugging Make Rules::        Strategies when things don't work as expected
+* Reporting Bugs::              Feedback on bugs and feature requests
+@end menu
+
+@node CVS
+@section CVS and generated files
+
+@subheading Background: distributed generated Files
+@cindex generated files, distributed
+@cindex rebuild rules
+
+Packages made with Autoconf and Automake ship with some generated
+files like @file{configure} or @file{Makefile.in}.  These files were
+generated on the developer's host and are distributed so that
+end-users do not have to install the maintainer tools required to
+rebuild them.  Other generated files like Lex scanners, Yacc parsers,
+or Info documentation, are usually distributed on similar grounds.
+
+Automake outputs rules in @file{Makefile}s to rebuild these files.  For
+instance, @command{make} will run @command{autoconf} to rebuild
+@file{configure} whenever @file{configure.ac} is changed.  This makes
+development safer by ensuring a @file{configure} is never out-of-date
+with respect to @file{configure.ac}.
+
+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.
+
+@subheading Background: CVS and Timestamps
+@cindex timestamps and CVS
+@cindex CVS and timestamps
+
+Unless you use CVS keywords (in which case files must be updated at
+commit time), CVS preserves timestamp during @samp{cvs commit} and
+@samp{cvs import -d} operations.
+
+When you check out a file using @samp{cvs checkout} its timestamp is
+set to that of the revision that is being checked out.
+
+However, during @command{cvs update}, files will have the date of the
+update, not the original timestamp of this revision.  This is meant to
+make sure that @command{make} notices sources files have been updated.
+
+This timestamp shift is troublesome when both sources and generated
+files are kept under CVS@.  Because CVS processes files in lexical
+order, @file{configure.ac} will appear newer than @file{configure}
+after a @command{cvs update} that updates both files, even if
+@file{configure} was newer than @file{configure.ac} when it was
+checked in.  Calling @command{make} will then trigger a spurious rebuild
+of @file{configure}.
+
+@subheading Living with CVS in Autoconfiscated Projects
+@cindex CVS and generated files
+@cindex generated files and CVS
+
+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.
+
+@subsubheading All Files in CVS
+
+@itemize @bullet
+@item
+The CVS repository contains all distributed files so you know exactly
+what is distributed, and you can checkout any prior version entirely.
+
+@item
+Maintainers can see how generated files evolve (for instance, you can
+see what happens to your @file{Makefile.in}s when you upgrade Automake
+and make sure they look OK).
+
+@item
+Users do not need the autotools to build a checkout of the project, it
+works just like a released tarball.
+
+@item
+If users use @command{cvs update} to update their copy, instead of
+@command{cvs checkout} to fetch a fresh one, timestamps will be
+inaccurate.  Some rebuild rules will be triggered and attempt to
+run developer tools such as @command{autoconf} or @command{automake}.
+
+Actually, calls to such tools are all wrapped into a call to the
+@command{missing} script discussed later (@pxref{maintainer-mode}).
+@command{missing} will take care of fixing the timestamps when these
+tools are not installed, so that the build can continue.
+
+@item
+In distributed development, developers are likely to have different
+version of the maintainer tools installed.  In this case rebuilds
+triggered by timestamp lossage will lead to spurious changes
+to generated files.  There are several solutions to this:
+
+@itemize
+@item
+All developers should use the same versions, so that the rebuilt files
+are identical to files in CVS@.  (This starts to be difficult when each
+project you work on uses different versions.)
+@item
+Or people use a script to fix the timestamp after a checkout (the GCC
+folks have such a script).
+@item
+Or @file{configure.ac} uses @code{AM_MAINTAINER_MODE}, which will
+disable all these rebuild rules by default.  This is further discussed
+in @ref{maintainer-mode}.
+@end itemize
+
+@item
+Although we focused on spurious rebuilds, the converse can also
+happen.  CVS's timestamp handling can also let you think an
+out-of-date file is up-to-date.
+
+For instance, suppose a developer has modified @file{Makefile.am} and
+has rebuilt @file{Makefile.in}, and then decides to do a last-minute
+change to @file{Makefile.am} right before checking in both files
+(without rebuilding @file{Makefile.in} to account for the change).
+
+This last change to @file{Makefile.am} makes the copy of
+@file{Makefile.in} out-of-date.  Since CVS processes files
+alphabetically, when another developer @samp{cvs update}s his or her
+tree, @file{Makefile.in} will happen to be newer than
+@file{Makefile.am}.  This other developer will not see that
+@file{Makefile.in} is out-of-date.
+
+@end itemize
+
+@subsubheading 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
+are @file{Makefile} targets (also called @emph{derived} files).
+
+This way developers are not annoyed by changes to generated files.  It
+does not matter if they all have different versions (assuming they are
+compatible, of course).  And finally, timestamps are not lost, changes
+to sources files can't be missed as in the
+@file{Makefile.am}/@file{Makefile.in} example discussed earlier.
+
+The drawback is that the CVS repository is not an exact copy of what
+is distributed and that users now need to install various development
+tools (maybe even specific versions) before they can build a checkout.
+But, after all, CVS's job is versioning, not distribution.
+
+Allowing developers to use different versions of their tools can also
+hide bugs during distributed development.  Indeed, developers will be
+using (hence testing) their own generated files, instead of the
+generated files that will be released actually.  The developer who
+prepares the tarball might be using a version of the tool that
+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.
+
+@subheading Third-party Files
+@cindex CVS and third-party files
+@cindex third-party files and CVS
+
+Another class of files not discussed here (because they do not cause
+timestamp issues) are files that are shipped with a package, but
+maintained elsewhere.  For instance, tools like @command{gettextize}
+and @command{autopoint} (from Gettext) or @command{libtoolize} (from
+Libtool), will install or update files in your package.
+
+These files, whether they are kept under CVS or not, raise similar
+concerns about version mismatch between developers' tools.  The
+Gettext manual has a section about this, see @ref{CVS Issues, CVS
+Issues, Integrating with CVS, gettext, GNU gettext tools}.
+
+@node maintainer-mode
+@section @command{missing} and @code{AM_MAINTAINER_MODE}
+
+@subheading @command{missing}
+@cindex @command{missing}, purpose
+
+The @command{missing} script is a wrapper around several maintainer
+tools, designed to warn users if a maintainer tool is required but
+missing.  Typical maintainer tools are @command{autoconf},
+@command{automake}, @command{bison}, etc.  Because file generated by
+these tools are shipped with the other sources of a package, these
+tools shouldn't be required during a user build and they are not
+checked for in @file{configure}.
+
+However, if for some reason a rebuild rule is triggered and involves a
+missing tool, @command{missing} will notice it and warn the user.
+Besides the warning, when a tool is missing, @command{missing} will
+attempt to fix timestamps in a way that allows the build to continue.
+For instance, @command{missing} will touch @file{configure} if
+@command{autoconf} is not installed.  When all distributed files are
+kept under version control, this feature of @command{missing} allows a
+user @emph{with no maintainer tools} to build a package off its version
+control repository, bypassing any timestamp inconsistency (implied by
+e.g.@: @samp{cvs update} or @samp{git clone}).
+
+If the required tool is installed, @command{missing} will run it and
+won't attempt to continue after failures.  This is correct during
+development: developers love fixing failures.  However, users with
+wrong versions of maintainer tools may get an error when the rebuild
+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.
+
+@subheading @code{AM_MAINTAINER_MODE}
+@cindex @code{AM_MAINTAINER_MODE}, purpose
+@acindex AM_MAINTAINER_MODE
+
+@code{AM_MAINTAINER_MODE} allows you to choose whether the so called
+"rebuild rules" should be enabled or disabled.  With
+@code{AM_MAINTAINER_MODE([enable])}, they are enabled by default,
+otherwise they are disabled by default.  In the latter case, if
+you have @code{AM_MAINTAINER_MODE} in @file{configure.ac}, and run
+@samp{./configure && make}, then @command{make} will *never* attempt to
+rebuild @file{configure}, @file{Makefile.in}s, Lex or Yacc outputs, etc.
+I.e., this disables build rules for files that are usually distributed
+and that users should normally not have to update.
+
+The user can override the default setting by passing either
+@samp{--enable-maintainer-mode} or @samp{--disable-maintainer-mode}
+to @command{configure}.
+
+People use @code{AM_MAINTAINER_MODE} either because they do not want their
+users (or themselves) annoyed by timestamps lossage (@pxref{CVS}), or
+because they simply can't stand the rebuild rules and prefer running
+maintainer tools explicitly.
+
+@code{AM_MAINTAINER_MODE} also allows you to disable some custom build
+rules conditionally.  Some developers use this feature to disable
+rules that need exotic tools that users may not have available.
+
+Several years ago Fran@,{c}ois Pinard pointed out several arguments
+against this @code{AM_MAINTAINER_MODE} macro.  Most of them relate to
+insecurity.  By removing dependencies you get non-dependable builds:
+changes to sources files can have no effect on generated files and this
+can be very confusing when unnoticed.  He adds that security shouldn't
+be reserved to maintainers (what @option{--enable-maintainer-mode}
+suggests), on the contrary.  If one user has to modify a
+@file{Makefile.am}, then either @file{Makefile.in} should be updated
+or a warning should be output (this is what Automake uses
+@command{missing} for) but the last thing you want is that nothing
+happens and the user doesn't notice it (this is what happens when
+rebuild rules are disabled by @code{AM_MAINTAINER_MODE}).
+
+Jim Meyering, the inventor of the @code{AM_MAINTAINER_MODE} macro was
+swayed by Fran@,{c}ois's arguments, and got rid of
+@code{AM_MAINTAINER_MODE} in all of his packages.
+
+Still many people continue to use @code{AM_MAINTAINER_MODE}, because
+it helps them working on projects where all files are kept under version
+control, and because @command{missing} isn't enough if you have the
+wrong version of the tools.
+
+
+@node Wildcards
+@section Why doesn't Automake support wildcards?
+@cindex wildcards
+
+Developers are lazy.  They would often like to use wildcards in
+@file{Makefile.am}s, so that they would not need to remember to
+update @file{Makefile.am}s every time they add, delete, or rename
+a file.
+
+There are several objections to this:
+@itemize
+@item
+When using CVS (or similar) developers need to remember they have to
+run @samp{cvs add} or @samp{cvs rm} anyway.  Updating
+@file{Makefile.am} accordingly quickly becomes a reflex.
+
+Conversely, if your application doesn't compile
+because you forgot to add a file in @file{Makefile.am}, it will help
+you remember to @samp{cvs add} it.
+
+@item
+Using wildcards makes it easy to distribute files by mistake.  For
+instance, some code a developer is experimenting with (a test case,
+say) that should not be part of the distribution.
+
+@item
+Using wildcards it's easy to omit some files by mistake.  For
+instance, one developer creates a new file, uses it in many places,
+but forgets to commit it.  Another developer then checks out the
+incomplete project and is able to run @samp{make dist} successfully,
+even though a file is missing. By listing files, @samp{make dist}
+@emph{will} complain.
+
+@item
+Wildcards are not portable to some non-GNU @command{make} implementations,
+e.g., NetBSD @command{make} will not expand globs such as @samp{*} in
+prerequisites of a target.
+
+@item
+Finally, it's really hard to @emph{forget} to add a file to
+@file{Makefile.am}: files that are not listed in @file{Makefile.am} are
+not compiled or installed, so you can't even test them.
+@end itemize
+
+Still, these are philosophical objections, and as such you may disagree,
+or find enough value in wildcards to dismiss all of them.  Before you
+start writing a patch against Automake to teach it about wildcards,
+let's see the main technical issue: portability.
+
+Although @samp{$(wildcard ...)} works with GNU @command{make}, it is
+not portable to other @command{make} implementations.
+
+The only way Automake could support @command{$(wildcard ...)} is by
+expending @command{$(wildcard ...)} when @command{automake} is run.
+The resulting @file{Makefile.in}s would be portable since they would
+list all files and not use @samp{$(wildcard ...)}.  However that
+means developers would need to remember to run @command{automake} each
+time they add, delete, or rename files.
+
+Compared to editing @file{Makefile.am}, this is a very small gain.  Sure,
+it's easier and faster to type @samp{automake; make} than to type
+@samp{emacs Makefile.am; make}.  But nobody bothered enough to write a
+patch to add support for this syntax.  Some people use scripts to
+generate file lists in @file{Makefile.am} or in separate
+@file{Makefile} fragments.
+
+Even if you don't care about portability, and are tempted to use
+@samp{$(wildcard ...)} anyway because you target only GNU Make, you
+should know there are many places where Automake needs to know exactly
+which files should be processed.  As Automake doesn't know how to
+expand @samp{$(wildcard ...)}, you cannot use it in these places.
+@samp{$(wildcard ...)} is a black box comparable to @code{AC_SUBST}ed
+variables as far Automake is concerned.
+
+You can get warnings about @samp{$(wildcard ...}) constructs using the
+@option{-Wportability} flag.
+
+@node Limitations on File Names
+@section Limitations on File Names
+@cindex file names, limitations on
+
+Automake attempts to support all kinds of file names, even those that
+contain unusual characters or are unusually long.  However, some
+limitations are imposed by the underlying operating system and tools.
+
+Most operating systems prohibit the use of the null byte in file
+names, and reserve @samp{/} as a directory separator.  Also, they
+require that file names are properly encoded for the user's locale.
+Automake is subject to these limits.
+
+Portable packages should limit themselves to POSIX file
+names.  These can contain ASCII letters and digits,
+@samp{_}, @samp{.}, and @samp{-}.  File names consist of components
+separated by @samp{/}.  File name components cannot begin with
+@samp{-}.
+
+Portable POSIX file names cannot contain components that exceed a
+14-byte limit, but nowadays it's normally safe to assume the
+more-generous XOPEN limit of 255 bytes.  POSIX
+limits file names to 255 bytes (XOPEN allows 1023 bytes),
+but you may want to limit a source tarball to file names of 99 bytes
+to avoid interoperability problems with old versions of @command{tar}.
+
+If you depart from these rules (e.g., by using non-ASCII
+characters in file names, or by using lengthy file names), your
+installers may have problems for reasons unrelated to Automake.
+However, if this does not concern you, you should know about the
+limitations imposed by Automake itself.  These limitations are
+undesirable, but some of them seem to be inherent to underlying tools
+like Autoconf, Make, M4, and the shell.  They fall into three
+categories: install directories, build directories, and file names.
+
+The following characters:
+
+@example
+@r{newline} " # $ ' `
+@end example
+
+should not appear in the names of install directories.  For example,
+the operand of @command{configure}'s @option{--prefix} option should
+not contain these characters.
+
+Build directories suffer the same limitations as install directories,
+and in addition should not contain the following characters:
+
+@example
+& @@ \
+@end example
+
+For example, the full name of the directory containing the source
+files should not contain these characters.
+
+Source and installation file names like @file{main.c} are limited even
+further: they should conform to the POSIX/XOPEN
+rules described above.  In addition, if you plan to port to
+non-POSIX environments, you should avoid file names that
+differ only in case (e.g., @file{makefile} and @file{Makefile}).
+Nowadays it is no longer worth worrying about the 8.3 limits of
+DOS file systems.
+
+@c FIXME This should probably be moved in the "Checking the Distribution"
+@c FIXME section...
+@node Errors with distclean
+@section Errors with distclean
+@cindex @code{distclean}, diagnostic
+@cindex @samp{make distclean}, diagnostic
+@cindex dependencies and distributed files
+@trindex distclean
+
+This is a diagnostic you might encounter while running @samp{make
+distcheck}.
+
+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}.
+Files left in the build directory after @samp{make distclean} has run
+are listed after this error.
+
+This diagnostic really covers two kinds of errors:
+
+@itemize @bullet
+@item
+files that are forgotten by distclean;
+@item
+distributed files that are erroneously rebuilt.
+@end itemize
+
+The former left-over files are not distributed, so the fix is to mark
+them for cleaning (@pxref{Clean}), this is obvious and doesn't deserve
+more explanations.
+
+The latter bug is not always easy to understand and fix, so let's
+proceed with an example.  Suppose our package contains a program for
+which we want to build a man page using @command{help2man}.  GNU
+@command{help2man} produces simple manual pages from the @option{--help}
+and @option{--version} output of other commands (@pxref{Top, , Overview,
+help2man, The Help2man Manual}).  Because we don't want to force our
+users to install @command{help2man}, we decide to distribute the
+generated man page using the following setup.
+
+@example
+# This Makefile.am is bogus.
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+dist_man_MANS = foo.1
+
+foo.1: foo$(EXEEXT)
+        help2man --output=foo.1 ./foo$(EXEEXT)
+@end example
+
+This will effectively distribute the man page.  However,
+@samp{make distcheck} will fail with:
+
+@example
+ERROR: files left in build directory after distclean:
+./foo.1
+@end example
+
+Why was @file{foo.1} rebuilt?  Because although distributed,
+@file{foo.1} depends on a non-distributed built file:
+@file{foo$(EXEEXT)}.  @file{foo$(EXEEXT)} is built by the user, so it
+will always appear to be newer than the distributed @file{foo.1}.
+
+@samp{make distcheck} caught an inconsistency in our package.  Our
+intent was to distribute @file{foo.1} so users do not need to install
+@command{help2man}, however since this rule causes this file to be
+always rebuilt, users @emph{do} need @command{help2man}.  Either we
+should ensure that @file{foo.1} is not rebuilt by users, or there is
+no point in distributing @file{foo.1}.
+
+More generally, the rule is that distributed files should never depend
+on non-distributed built files.  If you distribute something
+generated, distribute its sources.
+
+One way to fix the above example, while still distributing
+@file{foo.1} is to not depend on @file{foo$(EXEEXT)}.  For instance,
+assuming @command{foo --version} and @command{foo --help} do not
+change unless @file{foo.c} or @file{configure.ac} change, we could
+write the following @file{Makefile.am}:
+
+@example
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+dist_man_MANS = foo.1
+
+foo.1: foo.c $(top_srcdir)/configure.ac
+        $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
+        help2man --output=foo.1 ./foo$(EXEEXT)
+@end example
+
+This way, @file{foo.1} will not get rebuilt every time
+@file{foo$(EXEEXT)} changes.  The @command{make} call makes sure
+@file{foo$(EXEEXT)} is up-to-date before @command{help2man}.  Another
+way to ensure this would be to use separate directories for binaries
+and man pages, and set @code{SUBDIRS} so that binaries are built
+before man pages.
+
+We could also decide not to distribute @file{foo.1}.  In
+this case it's fine to have @file{foo.1} dependent upon
+@file{foo$(EXEEXT)}, since both will have to be rebuilt.
+However it would be impossible to build the package in a
+cross-compilation, because building @file{foo.1} involves
+an @emph{execution} of @file{foo$(EXEEXT)}.
+
+Another context where such errors are common is when distributed files
+are built by tools that are built by the package.  The pattern is
+similar:
+
+@example
+distributed-file: built-tools distributed-sources
+        build-command
+@end example
+
+@noindent
+should be changed to
+
+@example
+distributed-file: distributed-sources
+        $(MAKE) $(AM_MAKEFLAGS) built-tools
+        build-command
+@end example
+
+@noindent
+or you could choose not to distribute @file{distributed-file}, if
+cross-compilation does not matter.
+
+The points made through these examples are worth a summary:
+
+@cartouche
+@itemize
+@item
+Distributed files should never depend upon non-distributed built
+files.
+@item
+Distributed files should be distributed with all their dependencies.
+@item
+If a file is @emph{intended} to be rebuilt by users, then there is no point
+in distributing it.
+@end itemize
+@end cartouche
+
+@vrindex distcleancheck_listfiles
+For desperate cases, it's always possible to disable this check by
+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.
+
+@node Flag Variables Ordering
+@section Flag Variables Ordering
+@cindex Ordering flag variables
+@cindex Flag variables, ordering
+
+@display
+What is the difference between @code{AM_CFLAGS}, @code{CFLAGS}, and
+@code{mumble_CFLAGS}?
+@end display
+
+@display
+Why does @command{automake} output @code{CPPFLAGS} after
+@code{AM_CPPFLAGS} on compile lines?  Shouldn't it be the converse?
+@end display
+
+@display
+My @file{configure} adds some warning flags into @code{CXXFLAGS}.  In
+one @file{Makefile.am} I would like to append a new flag, however if I
+put the flag into @code{AM_CXXFLAGS} it is prepended to the other
+flags, not appended.
+@end display
+
+@subheading Compile Flag Variables
+@cindex Flag Variables, Ordering
+@cindex Compile Flag Variables
+@cindex @code{AM_CCASFLAGS} and @code{CCASFLAGS}
+@cindex @code{AM_CFLAGS} and @code{CFLAGS}
+@cindex @code{AM_CPPFLAGS} and @code{CPPFLAGS}
+@cindex @code{AM_CXXFLAGS} and @code{CXXFLAGS}
+@cindex @code{AM_FCFLAGS} and @code{FCFLAGS}
+@cindex @code{AM_FFLAGS} and @code{FFLAGS}
+@cindex @code{AM_GCJFLAGS} and @code{GCJFLAGS}
+@cindex @code{AM_LDFLAGS} and @code{LDFLAGS}
+@cindex @code{AM_LFLAGS} and @code{LFLAGS}
+@cindex @code{AM_LIBTOOLFLAGS} and @code{LIBTOOLFLAGS}
+@cindex @code{AM_OBJCFLAGS} and @code{OBJCFLAGS}
+@cindex @code{AM_OBJCXXFLAGS} and @code{OBJXXCFLAGS}
+@cindex @code{AM_RFLAGS} and @code{RFLAGS}
+@cindex @code{AM_UPCFLAGS} and @code{UPCFLAGS}
+@cindex @code{AM_YFLAGS} and @code{YFLAGS}
+@cindex @code{CCASFLAGS} and @code{AM_CCASFLAGS}
+@cindex @code{CFLAGS} and @code{AM_CFLAGS}
+@cindex @code{CPPFLAGS} and @code{AM_CPPFLAGS}
+@cindex @code{CXXFLAGS} and @code{AM_CXXFLAGS}
+@cindex @code{FCFLAGS} and @code{AM_FCFLAGS}
+@cindex @code{FFLAGS} and @code{AM_FFLAGS}
+@cindex @code{GCJFLAGS} and @code{AM_GCJFLAGS}
+@cindex @code{LDFLAGS} and @code{AM_LDFLAGS}
+@cindex @code{LFLAGS} and @code{AM_LFLAGS}
+@cindex @code{LIBTOOLFLAGS} and @code{AM_LIBTOOLFLAGS}
+@cindex @code{OBJCFLAGS} and @code{AM_OBJCFLAGS}
+@cindex @code{OBJCXXFLAGS} and @code{AM_OBJCXXFLAGS}
+@cindex @code{RFLAGS} and @code{AM_RFLAGS}
+@cindex @code{UPCFLAGS} and @code{AM_UPCFLAGS}
+@cindex @code{YFLAGS} and @code{AM_YFLAGS}
+
+This section attempts to answer all the above questions.  We will
+mostly discuss @code{CPPFLAGS} in our examples, but actually the
+answer holds for all the compile flags used in Automake:
+@code{CCASFLAGS}, @code{CFLAGS}, @code{CPPFLAGS}, @code{CXXFLAGS},
+@code{FCFLAGS}, @code{FFLAGS}, @code{GCJFLAGS}, @code{LDFLAGS},
+@code{LFLAGS}, @code{LIBTOOLFLAGS}, @code{OBJCFLAGS}, @code{OBJCXXFLAGS},
+@code{RFLAGS}, @code{UPCFLAGS}, and @code{YFLAGS}.
+
+@code{CPPFLAGS}, @code{AM_CPPFLAGS}, and @code{mumble_CPPFLAGS} are
+three variables that can be used to pass flags to the C preprocessor
+(actually these variables are also used for other languages like C++
+or preprocessed Fortran).  @code{CPPFLAGS} is the user variable
+(@pxref{User Variables}), @code{AM_CPPFLAGS} is the Automake variable,
+and @code{mumble_CPPFLAGS} is the variable specific to the
+@code{mumble} target (we call this a per-target variable,
+@pxref{Program and Library Variables}).
+
+Automake always uses two of these variables when compiling C sources
+files.  When compiling an object file for the @code{mumble} target,
+the first variable will be @code{mumble_CPPFLAGS} if it is defined, or
+@code{AM_CPPFLAGS} otherwise.  The second variable is always
+@code{CPPFLAGS}.
+
+In the following example,
+
+@example
+bin_PROGRAMS = foo bar
+foo_SOURCES = xyz.c
+bar_SOURCES = main.c
+foo_CPPFLAGS = -DFOO
+AM_CPPFLAGS = -DBAZ
+@end example
+
+@noindent
+@file{xyz.o} will be compiled with @samp{$(foo_CPPFLAGS) $(CPPFLAGS)},
+(because @file{xyz.o} is part of the @code{foo} target), while
+@file{main.o} will be compiled with @samp{$(AM_CPPFLAGS) $(CPPFLAGS)}
+(because there is no per-target variable for target @code{bar}).
+
+The difference between @code{mumble_CPPFLAGS} and @code{AM_CPPFLAGS}
+being clear enough, let's focus on @code{CPPFLAGS}.  @code{CPPFLAGS}
+is a user variable, i.e., a variable that users are entitled to modify
+in order to compile the package.  This variable, like many others,
+is documented at the end of the output of @samp{configure --help}.
+
+For instance, someone who needs to add @file{/home/my/usr/include} to
+the C compiler's search path would configure a package with
+
+@example
+./configure CPPFLAGS='-I /home/my/usr/include'
+@end example
+
+@noindent
+and this flag would be propagated to the compile rules of all
+@file{Makefile}s.
+
+It is also not uncommon to override a user variable at
+@command{make}-time.  Many installers do this with @code{prefix}, but
+this can be useful with compiler flags too.  For instance, if, while
+debugging a C++ project, you need to disable optimization in one
+specific object file, you can run something like
+
+@example
+rm file.o
+make CXXFLAGS=-O0 file.o
+make
+@end example
+
+The reason @samp{$(CPPFLAGS)} appears after @samp{$(AM_CPPFLAGS)} or
+@samp{$(mumble_CPPFLAGS)} in the compile command is that users
+should always have the last say.  It probably makes more sense if you
+think about it while looking at the @samp{CXXFLAGS=-O0} above, which
+should supersede any other switch from @code{AM_CXXFLAGS} or
+@code{mumble_CXXFLAGS} (and this of course replaces the previous value
+of @code{CXXFLAGS}).
+
+You should never redefine a user variable such as @code{CPPFLAGS} in
+@file{Makefile.am}.  Use @samp{automake -Woverride} to diagnose such
+mistakes.  Even something like
+
+@example
+CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
+@end example
+
+@noindent
+is erroneous.  Although this preserves @file{configure}'s value of
+@code{CPPFLAGS}, the definition of @code{DATADIR} will disappear if a
+user attempts to override @code{CPPFLAGS} from the @command{make}
+command line.
+
+@example
+AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
+@end example
+
+@noindent
+is all that is needed here if no per-target flags are used.
+
+You should not add options to these user variables within
+@file{configure} either, for the same reason.  Occasionally you need
+to modify these variables to perform a test, but you should reset
+their values afterwards.  In contrast, it is OK to modify the
+@samp{AM_} variables within @file{configure} if you @code{AC_SUBST}
+them, but it is rather rare that you need to do this, unless you
+really want to change the default definitions of the @samp{AM_}
+variables in all @file{Makefile}s.
+
+What we recommend is that you define extra flags in separate
+variables.  For instance, you may write an Autoconf macro that computes
+a set of warning options for the C compiler, and @code{AC_SUBST} them
+in @code{WARNINGCFLAGS}; you may also have an Autoconf macro that
+determines which compiler and which linker flags should be used to
+link with library @file{libfoo}, and @code{AC_SUBST} these in
+@code{LIBFOOCFLAGS} and @code{LIBFOOLDFLAGS}.  Then, a
+@file{Makefile.am} could use these variables as follows:
+
+@example
+AM_CFLAGS = $(WARNINGCFLAGS)
+bin_PROGRAMS = prog1 prog2
+prog1_SOURCES = @dots{}
+prog2_SOURCES = @dots{}
+prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
+prog2_LDFLAGS = $(LIBFOOLDFLAGS)
+@end example
+
+In this example both programs will be compiled with the flags
+substituted into @samp{$(WARNINGCFLAGS)}, and @code{prog2} will
+additionally be compiled with the flags required to link with
+@file{libfoo}.
+
+Note that listing @code{AM_CFLAGS} in a per-target @code{CFLAGS}
+variable is a common idiom to ensure that @code{AM_CFLAGS} applies to
+every target in a @file{Makefile.in}.
+
+Using variables like this gives you full control over the ordering of
+the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
+you want to negate for a particular target, you can use something like
+@samp{prog1_CFLAGS = $(AM_CFLAGS) -no-flag}.  If all these flags had
+been forcefully appended to @code{CFLAGS}, there would be no way to
+disable one flag.  Yet another reason to leave user variables to
+users.
+
+Finally, we have avoided naming the variable of the example
+@code{LIBFOO_LDFLAGS} (with an underscore) because that would cause
+Automake to think that this is actually a per-target variable (like
+@code{mumble_LDFLAGS}) for some non-declared @code{LIBFOO} target.
+
+@subheading 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{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
+(@pxref{Java}) use @code{JAVACFLAGS} and @code{AM_JAVACFLAGS}.  None
+of these rules support per-target flags (yet).
+
+To some extent, even @code{AM_MAKEFLAGS} (@pxref{Subdirectories})
+obeys this naming scheme.  The slight difference is that
+@code{MAKEFLAGS} is passed to sub-@command{make}s implicitly by
+@command{make} itself.
+
+However you should not think that all variables ending with
+@code{FLAGS} follow this convention.  For instance,
+@code{DISTCHECK_CONFIGURE_FLAGS} (@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.
+
+@code{ARFLAGS} (@pxref{A Library}) is usually defined by Automake and
+has neither @code{AM_} nor per-target cousin.
+
+Finally you should not think that the existence of a per-target
+variable implies the existence of an @code{AM_} variable or of a user
+variable.  For instance, the @code{mumble_LDADD} per-target variable
+overrides the makefile-wide @code{LDADD} variable (which is not a user
+variable), and @code{mumble_LIBADD} exists only as a per-target
+variable.  @xref{Program and Library Variables}.
+
+
+@node Renamed Objects
+@section Why are object files sometimes renamed?
+
+This happens when per-target compilation flags are used.  Object
+files need to be renamed just in case they would clash with object
+files compiled from the same sources, but with different flags.
+Consider the following example.
+
+@example
+bin_PROGRAMS = true false
+true_SOURCES = generic.c
+true_CPPFLAGS = -DEXIT_CODE=0
+false_SOURCES = generic.c
+false_CPPFLAGS = -DEXIT_CODE=1
+@end example
+
+@noindent
+Obviously the two programs are built from the same source, but it
+would be bad if they shared the same object, because @file{generic.o}
+cannot be built with both @samp{-DEXIT_CODE=0} @emph{and}
+@samp{-DEXIT_CODE=1}.  Therefore @command{automake} outputs rules to
+build two different objects: @file{true-generic.o} and
+@file{false-generic.o}.
+
+@command{automake} doesn't actually look whether source files are
+shared to decide if it must rename objects.  It will just rename all
+objects of a target as soon as it sees per-target compilation flags
+used.
+
+It's OK to share object files when per-target compilation flags are not
+used.  For instance, @file{true} and @file{false} will both use
+@file{version.o} in the following example.
+
+@example
+AM_CPPFLAGS = -DVERSION=1.0
+bin_PROGRAMS = true false
+true_SOURCES = true.c version.c
+false_SOURCES = false.c version.c
+@end example
+
+Note that the renaming of objects is also affected by the
+@code{_SHORTNAME} variable (@pxref{Program and Library Variables}).
+
+
+@node Per-Object Flags
+@section Per-Object Flags Emulation
+@cindex Per-object flags, emulated
+
+@display
+One of my source files needs to be compiled with different flags.  How
+do I do?
+@end display
+
+Automake supports per-program and per-library compilation flags (see
+@ref{Program and Library Variables} and @ref{Flag Variables
+Ordering}).  With this you can define compilation flags that apply to
+all files compiled for a target.  For instance, in
+
+@example
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c foo.h bar.c bar.h main.c
+foo_CFLAGS = -some -flags
+@end example
+
+@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
+@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.
+
+What if @file{foo.c} needs to be compiled into @file{foo.o} using some
+specific flags, that none of the other files requires?  Obviously
+per-program flags are not directly applicable here.  Something like
+per-object flags are expected, i.e., flags that would be used only
+when creating @file{foo-foo.o}.  Automake does not support that,
+however this is easy to simulate using a library that contains only
+that object, and compiling this library with per-library flags.
+
+@example
+bin_PROGRAMS = foo
+foo_SOURCES = bar.c bar.h main.c
+foo_CFLAGS = -some -flags
+foo_LDADD = libfoo.a
+noinst_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c foo.h
+libfoo_a_CFLAGS = -some -other -flags
+@end example
+
+Here @file{foo-bar.o} and @file{foo-main.o} will all be
+compiled with @samp{-some -flags}, while @file{libfoo_a-foo.o} will
+be compiled using @samp{-some -other -flags}.  Eventually, all
+three objects will be linked to form @file{foo}.
+
+This trick can also be achieved using Libtool convenience libraries,
+for instance @samp{noinst_LTLIBRARIES = libfoo.la} (@pxref{Libtool
+Convenience Libraries}).
+
+Another tempting idea to implement per-object flags is to override the
+compile rules @command{automake} would output for these files.
+Automake will not define a rule for a target you have defined, so you
+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
+@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
+release of Automake generates a different rule, your copy will need to
+be updated by hand.
+
+@node Multiple Outputs
+@section Handling Tools that Produce Many Outputs
+@cindex multiple outputs, rules with
+@cindex many outputs, rules with
+@cindex rules with multiple outputs
+
+This section describes a @command{make} idiom that can be used when a
+tool produces multiple output files.  It is not specific to Automake
+and can be used in ordinary @file{Makefile}s.
+
+Suppose we have a program called @command{foo} that will read one file
+called @file{data.foo} and produce two files named @file{data.c} and
+@file{data.h}.  We want to write a @file{Makefile} rule that captures
+this one-to-two dependency.
+
+The naive rule is incorrect:
+
+@example
+# This is incorrect.
+data.c data.h: data.foo
+        foo data.foo
+@end example
+
+@noindent
+What the above rule really says is that @file{data.c} and
+@file{data.h} each depend on @file{data.foo}, and can each be built by
+running @samp{foo data.foo}.  In other words it is equivalent to:
+
+@example
+# We do not want this.
+data.c: data.foo
+        foo data.foo
+data.h: data.foo
+        foo data.foo
+@end example
+
+@noindent
+which means that @command{foo} can be run twice.  Usually it will not
+be run twice, because @command{make} implementations are smart enough
+to check for the existence of the second file after the first one has
+been built; they will therefore detect that it already exists.
+However there are a few situations where it can run twice anyway:
+
+@itemize
+@item
+The most worrying case is when running a parallel @command{make}.  If
+@file{data.c} and @file{data.h} are built in parallel, two @samp{foo
+data.foo} commands will run concurrently.  This is harmful.
+@item
+Another case is when the dependency (here @file{data.foo}) is
+(or depends upon) a phony target.
+@end itemize
+
+A solution that works with parallel @command{make} but not with
+phony dependencies is the following:
+
+@example
+data.c data.h: data.foo
+        foo data.foo
+data.h: data.c
+@end example
+
+@noindent
+The above rules are equivalent to
+
+@example
+data.c: data.foo
+        foo data.foo
+data.h: data.foo data.c
+        foo data.foo
+@end example
+
+@noindent
+therefore a parallel @command{make} will have to serialize the builds
+of @file{data.c} and @file{data.h}, and will detect that the second is
+no longer needed once the first is over.
+
+Using this pattern is probably enough for most cases.  However it does
+not scale easily to more output files (in this scheme all output files
+must be totally ordered by the dependency relation), so we will
+explore a more complicated solution.
+
+Another idea is to write the following:
+
+@example
+# There is still a problem with this one.
+data.c: data.foo
+        foo data.foo
+data.h: data.c
+@end example
+
+@noindent
+The idea is that @samp{foo data.foo} is run only when @file{data.c}
+needs to be updated, but we further state that @file{data.h} depends
+upon @file{data.c}.  That way, if @file{data.h} is required and
+@file{data.foo} is out of date, the dependency on @file{data.c} will
+trigger the build.
+
+This is almost perfect, but suppose we have built @file{data.h} and
+@file{data.c}, and then we erase @file{data.h}.  Then, running
+@samp{make data.h} will not rebuild @file{data.h}.  The above rules
+just state that @file{data.c} must be up-to-date with respect to
+@file{data.foo}, and this is already the case.
+
+What we need is a rule that forces a rebuild when @file{data.h} is
+missing.  Here it is:
+
+@example
+data.c: data.foo
+        foo data.foo
+data.h: data.c
+## Recover from the removal of $@@
+        @@if test -f $@@; then :; else \
+          rm -f data.c; \
+          $(MAKE) $(AM_MAKEFLAGS) data.c; \
+        fi
+@end example
+
+The above scheme can be extended to handle more outputs and more
+inputs.  One of the outputs is selected to serve as a witness to the
+successful completion of the command, it depends upon all inputs, and
+all other outputs depend upon it.  For instance, if @command{foo}
+should additionally read @file{data.bar} and also produce
+@file{data.w} and @file{data.x}, we would write:
+
+@example
+data.c: data.foo data.bar
+        foo data.foo data.bar
+data.h data.w data.x: data.c
+## Recover from the removal of $@@
+        @@if test -f $@@; then :; else \
+          rm -f data.c; \
+          $(MAKE) $(AM_MAKEFLAGS) data.c; \
+        fi
+@end example
+
+However there are now three minor problems in this setup.  One is related
+to the timestamp ordering of @file{data.h}, @file{data.w},
+@file{data.x}, and @file{data.c}.  Another one is a race condition
+if a parallel @command{make} attempts to run multiple instances of the
+recover block at once.  Finally, the recursive rule breaks @samp{make -n}
+when run with GNU @command{make} (as well as some other @command{make}
+implementations), as it may remove @file{data.h} even when it should not
+(@pxref{MAKE Variable, , How the @code{MAKE} Variable Works, make,
+The GNU Make Manual}).
+
+Let us deal with the first problem.  @command{foo} outputs four files,
+but we do not know in which order these files are created.  Suppose
+that @file{data.h} is created before @file{data.c}.  Then we have a
+weird situation.  The next time @command{make} is run, @file{data.h}
+will appear older than @file{data.c}, the second rule will be
+triggered, a shell will be started to execute the @samp{if@dots{}fi}
+command, but actually it will just execute the @code{then} branch,
+that is: nothing.  In other words, because the witness we selected is
+not the first file created by @command{foo}, @command{make} will start
+a shell to do nothing each time it is run.
+
+A simple riposte is to fix the timestamps when this happens.
+
+@example
+data.c: data.foo data.bar
+        foo data.foo data.bar
+data.h data.w data.x: data.c
+        @@if test -f $@@; then \
+          touch $@@; \
+        else \
+## Recover from the removal of $@@
+          rm -f data.c; \
+          $(MAKE) $(AM_MAKEFLAGS) data.c; \
+        fi
+@end example
+
+Another solution is to use a different and dedicated file as witness,
+rather than using any of @command{foo}'s outputs.
+
+@example
+data.stamp: data.foo data.bar
+        @@rm -f data.tmp
+        @@touch data.tmp
+        foo data.foo data.bar
+        @@mv -f data.tmp $@@
+data.c data.h data.w data.x: data.stamp
+## Recover from the removal of $@@
+        @@if test -f $@@; then :; else \
+          rm -f data.stamp; \
+          $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
+        fi
+@end example
+
+@file{data.tmp} is created before @command{foo} is run, so it has a
+timestamp older than output files output by @command{foo}.  It is then
+renamed to @file{data.stamp} after @command{foo} has run, because we
+do not want to update @file{data.stamp} if @command{foo} fails.
+
+This solution still suffers from the second problem: the race
+condition in the recover rule.  If, after a successful build, a user
+erases @file{data.c} and @file{data.h}, and runs @samp{make -j}, then
+@command{make} may start both recover rules in parallel.  If the two
+instances of the rule execute @samp{$(MAKE) $(AM_MAKEFLAGS)
+data.stamp} concurrently the build is likely to fail (for instance, the
+two rules will create @file{data.tmp}, but only one can rename it).
+
+Admittedly, such a weird situation does not arise during ordinary
+builds.  It occurs only when the build tree is mutilated.  Here
+@file{data.c} and @file{data.h} have been explicitly removed without
+also removing @file{data.stamp} and the other output files.
+@code{make clean; make} will always recover from these situations even
+with parallel makes, so you may decide that the recover rule is solely
+to help non-parallel make users and leave things as-is.  Fixing this
+requires some locking mechanism to ensure only one instance of the
+recover rule rebuilds @file{data.stamp}.  One could imagine something
+along the following lines.
+
+@example
+data.c data.h data.w data.x: data.stamp
+## Recover from the removal of $@@
+        @@if test -f $@@; then :; else \
+          trap 'rm -rf data.lock data.stamp' 1 2 13 15; \
+## mkdir is a portable test-and-set
+          if mkdir data.lock 2>/dev/null; then \
+## This code is being executed by the first process.
+            rm -f data.stamp; \
+            $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
+            result=$$?; rm -rf data.lock; exit $$result; \
+          else \
+## This code is being executed by the follower processes.
+## Wait until the first process is done.
+            while test -d data.lock; do sleep 1; done; \
+## Succeed if and only if the first process succeeded.
+            test -f data.stamp; \
+          fi; \
+        fi
+@end example
+
+Using a dedicated witness, like @file{data.stamp}, is very handy when
+the list of output files is not known beforehand.  As an illustration,
+consider the following rules to compile many @file{*.el} files into
+@file{*.elc} files in a single command.  It does not matter how
+@code{ELFILES} is defined (as long as it is not empty: empty targets
+are not accepted by POSIX).
+
+@example
+ELFILES = one.el two.el three.el @dots{}
+ELCFILES = $(ELFILES:=c)
+
+elc-stamp: $(ELFILES)
+        @@rm -f elc-temp
+        @@touch elc-temp
+        $(elisp_comp) $(ELFILES)
+        @@mv -f elc-temp $@@
+
+$(ELCFILES): elc-stamp
+        @@if test -f $@@; then :; else \
+## Recover from the removal of $@@
+          trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
+          if mkdir elc-lock 2>/dev/null; then \
+## This code is being executed by the first process.
+            rm -f elc-stamp; \
+            $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
+            rmdir elc-lock; \
+          else \
+## This code is being executed by the follower processes.
+## Wait until the first process is done.
+            while test -d elc-lock; do sleep 1; done; \
+## Succeed if and only if the first process succeeded.
+            test -f elc-stamp; exit $$?; \
+@c $$
+          fi; \
+        fi
+@end example
+
+These solutions all still suffer from the third problem, namely that
+they break the promise that @samp{make -n} should not cause any actual
+changes to the tree.  For those solutions that do not create lock files,
+it is possible to split the recover rules into two separate recipe
+commands, one of which does all work but the recursion, and the
+other invokes the recursive @samp{$(MAKE)}.  The solutions involving
+locking could act upon the contents of the @samp{MAKEFLAGS} variable,
+but parsing that portably is not easy (@pxref{The Make Macro MAKEFLAGS,,,
+autoconf, The Autoconf Manual}).  Here is an example:
+
+@example
+ELFILES = one.el two.el three.el @dots{}
+ELCFILES = $(ELFILES:=c)
+
+elc-stamp: $(ELFILES)
+        @@rm -f elc-temp
+        @@touch elc-temp
+        $(elisp_comp) $(ELFILES)
+        @@mv -f elc-temp $@@
+
+$(ELCFILES): elc-stamp
+## Recover from the removal of $@@
+        @@dry=; for f in x $$MAKEFLAGS; do \
+          case $$f in \
+            *=*|--*);; \
+            *n*) dry=:;; \
+          esac; \
+        done; \
+        if test -f $@@; then :; else \
+          $$dry trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
+          if $$dry mkdir elc-lock 2>/dev/null; then \
+## This code is being executed by the first process.
+            $$dry rm -f elc-stamp; \
+            $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
+            $$dry rmdir elc-lock; \
+          else \
+## This code is being executed by the follower processes.
+## Wait until the first process is done.
+            while test -d elc-lock && test -z "$$dry"; do \
+@c $$
+              sleep 1; \
+            done; \
+## Succeed if and only if the first process succeeded.
+            $$dry test -f elc-stamp; exit $$?; \
+          fi; \
+        fi
+@end example
+
+For completeness it should be noted that GNU @command{make} is able to
+express rules with multiple output files using pattern rules
+(@pxref{Pattern Examples, , Pattern Rule Examples, make, The GNU Make
+Manual}).  We do not discuss pattern rules here because they are not
+portable, but they can be convenient in packages that assume GNU
+@command{make}.
+
+
+@node Hard-Coded Install Paths
+@section Installing to Hard-Coded Locations
+
+@display
+My package needs to install some configuration file.  I tried to use
+the following rule, but @samp{make distcheck} fails.  Why?
+
+@example
+# Do not do this.
+install-data-local:
+        $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
+@end example
+@end display
+
+@display
+My package needs to populate the installation directory of another
+package at install-time.  I can easily compute that installation
+directory in @file{configure}, but if I install files therein,
+@samp{make distcheck} fails.  How else should I do?
+@end display
+
+These two setups share their symptoms: @samp{make distcheck} fails
+because they are installing files to hard-coded paths.  In the later
+case the path is not really hard-coded in the package, but we can
+consider it to be hard-coded in the system (or in whichever tool that
+supplies the path).  As long as the path does not use any of the
+standard directory variables (@samp{$(prefix)}, @samp{$(bindir)},
+@samp{$(datadir)}, etc.), the effect will be the same:
+user-installations are impossible.
+
+As a (non-root) user who wants to install a package, you usually have no
+right to install anything in @file{/usr} or @file{/usr/local}.  So you
+do something like @samp{./configure --prefix ~/usr} to install a
+package in your own @file{~/usr} tree.
+
+If a package attempts to install something to some hard-coded path
+(e.g., @file{/etc/afile}), regardless of this @option{--prefix} setting,
+then the installation will fail.  @samp{make distcheck} performs such
+a @option{--prefix} installation, hence it will fail too.
+
+Now, there are some easy solutions.
+
+The above @code{install-data-local} example for installing
+@file{/etc/afile} would be better replaced by
+
+@example
+sysconf_DATA = afile
+@end example
+
+@noindent
+by default @code{sysconfdir} will be @samp{$(prefix)/etc}, because
+this is what the GNU Standards require.  When such a package is
+installed on an FHS compliant system, the installer will have to set
+@samp{--sysconfdir=/etc}.  As the maintainer of the package you
+should not be concerned by such site policies: use the appropriate
+standard directory variable to install your files so that the installer
+can easily redefine these variables to match their site conventions.
+
+Installing files that should be used by another package is slightly
+more involved.  Let's take an example and assume you want to install
+a shared library that is a Python extension module.  If you ask Python
+where to install the library, it will answer something like this:
+
+@example
+% @kbd{python -c 'from distutils import sysconfig;
+             print sysconfig.get_python_lib(1,0)'}
+/usr/lib/python2.5/site-packages
+@end example
+
+If you indeed use this absolute path to install your shared library,
+non-root users will not be able to install the package, hence
+distcheck fails.
+
+Let's do better.  The @samp{sysconfig.get_python_lib()} function
+actually accepts a third argument that will replace Python's
+installation prefix.
+
+@example
+% @kbd{python -c 'from distutils import sysconfig;
+             print sysconfig.get_python_lib(1,0,"$@{exec_prefix@}")'}
+$@{exec_prefix@}/lib/python2.5/site-packages
+@end example
+
+You can also use this new path.  If you do
+@itemize @bullet
+@item
+root users can install your package with the same @option{--prefix}
+as Python (you get the behavior of the previous attempt)
+
+@item
+non-root users can install your package too, they will have the
+extension module in a place that is not searched by Python but they
+can work around this using environment variables (and if you installed
+scripts that use this shared library, it's easy to tell Python were to
+look in the beginning of your script, so the script works in both
+cases).
+@end itemize
+
+The @code{AM_PATH_PYTHON} macro uses similar commands to define
+@samp{$(pythondir)} and @samp{$(pyexecdir)} (@pxref{Python}).
+
+Of course not all tools are as advanced as Python regarding that
+substitution of @var{prefix}.  So another strategy is to figure the
+part of the installation directory that must be preserved.  For
+instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp})
+computes @samp{$(lispdir)}:
+
+@example
+$EMACS -batch -q -eval '(while load-path
+  (princ (concat (car load-path) "\n"))
+  (setq load-path (cdr load-path)))' >conftest.out
+lispdir=`sed -n
+  -e 's,/$,,'
+  -e '/.*\/lib\/x*emacs\/site-lisp$/@{
+        s,.*/lib/\(x*emacs/site-lisp\)$,$@{libdir@}/\1,;p;q;
+      @}'
+  -e '/.*\/share\/x*emacs\/site-lisp$/@{
+        s,.*/share/\(x*emacs/site-lisp\),$@{datarootdir@}/\1,;p;q;
+      @}'
+  conftest.out`
+@end example
+
+I.e., it just picks the first directory that looks like
+@file{*/lib/*emacs/site-lisp} or @file{*/share/*emacs/site-lisp} in
+the search path of emacs, and then substitutes @samp{$@{libdir@}} or
+@samp{$@{datadir@}} appropriately.
+
+The emacs case looks complicated because it processes a list and
+expects two possible layouts, otherwise it's easy, and the benefits for
+non-root users are really worth the extra @command{sed} invocation.
+
+
+@node Debugging Make Rules
+@section Debugging Make Rules
+@cindex debugging rules
+@cindex rules, debugging
+
+The rules and dependency trees generated by @command{automake} can get
+rather complex, and leave the developer head-scratching when things
+don't work as expected.  Besides the debug options provided by the
+@command{make} command (@pxref{Options Summary,,, make, The GNU Make
+Manual}), here's a couple of further hints for debugging makefiles
+generated by @command{automake} effectively:
+
+@itemize
+@item
+If less verbose output has been enabled in the package with the
+@samp{silent-rules} option (@pxref{Options}), you can use
+@code{make V=1} to see the commands being executed.
+@item
+@code{make -n} can help show what would be done without actually doing
+it.  Note however, that this will @emph{still execute} commands prefixed
+with @samp{+}, and, when using GNU @command{make}, commands that contain
+the strings @samp{$(MAKE)} or @samp{$@{MAKE@}} (@pxref{Instead of
+Execution,,, make, The GNU Make Manual}).
+Typically, this is helpful to show what recursive rules would do, but it
+means that, in your own rules, you should not mix such recursion with
+actions that change any files.@footnote{Automake's @samp{dist} and
+@samp{distcheck} rules had a bug in this regard in that they created
+directories even with @option{-n}, but this has been fixed in Automake
+1.11.}  Furthermore, note that GNU @command{make} will update
+prerequisites for the @file{Makefile} file itself even with @option{-n}
+(@pxref{Remaking Makefiles,,, make, The GNU Make Manual}).
+@item
+@code{make SHELL="/bin/bash -vx"} can help debug complex rules.
+@xref{The Make Macro SHELL,,, autoconf, The Autoconf Manual}, for some
+portability quirks associated with this construct.
+@item
+@code{echo 'print: ; @@echo "$(VAR)"' | make -f Makefile -f - print}
+can be handy to examine the expanded value of variables.  You may need
+to use a target other than @samp{print} if that is already used or a
+file with that name exists.
+@item
+@url{http://bashdb.sourceforge.net/@/remake/} provides a modified
+GNU @command{make} command called @command{remake} that copes with
+complex GNU @command{make}-specific Makefiles and allows to trace
+execution, examine variables, and call rules interactively, much like
+a debugger.
+@end itemize
+
+
+@node Reporting Bugs
+@section Reporting Bugs
+
+Most nontrivial software has bugs.  Automake is no exception.  Although
+we cannot promise we can or will fix a bug, and we might not even agree
+that it is a bug, we want to hear about problems you encounter. Often we
+agree they are bugs and want to fix them.
+
+To make it possible for us to fix a bug, please report it. In order to
+do so effectively, it helps to know when and how to do it.
+
+Before reporting a bug, it is a good idea to see if it is already known.
+You can look at the @uref{http://debbugs.gnu.org/, GNU Bug Tracker}
+and the @uref{http://lists.gnu.org/@/archive/@/html/@/bug-automake/,
+bug-automake mailing list archives} for previous bug reports.  We
+previously used a
+@uref{http://sourceware.org/@/cgi-bin/@/gnatsweb.pl?database=automake,
+Gnats database} for bug tracking, so some bugs might have been reported
+there already.  Please do not use it for new bug reports, however.
+
+If the bug is not already known, it should be reported.  It is very
+important to report bugs in a way that is useful and efficient.  For
+this, please familiarize yourself with
+@uref{http://www.chiark.greenend.org.uk/@/~sgtatham/@/bugs.html, How to
+Report Bugs Effectively} and
+@uref{http://catb.org/@/~esr/@/faqs/@/smart-questions.html, How to Ask
+Questions the Smart Way}.  This helps you and developers to save time
+which can then be spent on fixing more bugs and implementing more
+features.
+
+For a bug report, a feature request or other suggestions, please send
+email to @email{@value{PACKAGE_BUGREPORT}}.  This will then open a new
+bug in the @uref{http://debbugs.gnu.org/@/automake, bug tracker}.  Be
+sure to include the versions of Autoconf and Automake that you use.
+Ideally, post a minimal @file{Makefile.am} and @file{configure.ac} that
+reproduces the problem you encounter.  If you have encountered test
+suite failures, please attach the @file{test-suite.log} file.
+
+@c ========================================================== Appendices
+
+@page
+@node Copying This Manual
+@appendix Copying This Manual
+
+@menu
+* GNU Free Documentation License::  License for copying this manual
+@end menu
+
+@node GNU Free Documentation License
+@appendixsec GNU Free Documentation License
+@include fdl.texi
+
+@page
+@node Indices
+@appendix Indices
+
+@menu
+* Macro Index::                 Index of Autoconf macros
+* Variable Index::              Index of Makefile variables
+* General Index::               General index
+@end menu
+
+@node Macro Index
+@appendixsec Macro Index
+
+@printindex fn
+
+@node Variable Index
+@appendixsec Variable Index
+
+@printindex vr
+
+@node General Index
+@appendixsec General Index
+
+@printindex cp
+
+
+@bye
+
+@c  LocalWords:  texinfo setfilename settitle setchapternewpage texi direntry
+@c  LocalWords:  dircategory in's aclocal ifinfo titlepage Tromey vskip pt sp
+@c  LocalWords:  filll defcodeindex ov cv op tr syncodeindex fn cp vr ifnottex
+@c  LocalWords:  dir Automake's ac Dist Gnits gnits cygnus dfn Autoconf's pxref
+@c  LocalWords:  cindex Autoconf autoconf perl samp cvs dist trindex SUBST foo
+@c  LocalWords:  xs emph FIXME ref vindex pkglibdir pkgincludedir pkgdatadir mt
+@c  LocalWords:  pkg libdir cpio bindir sbindir rmt pax sbin zar zardir acindex
+@c  LocalWords:  HTML htmldir html noinst TEXINFOS nodist nobase strudel CFLAGS
+@c  LocalWords:  libmumble CC YFLAGS itemx de fication config url comp
+@c  LocalWords:  depcomp elisp sh mdate mkinstalldirs mkdir py tex dvi ps pdf
+@c  LocalWords:  ylwrap zardoz INIT gettext acinclude mv FUNCS LIBOBJS LDADD fr
+@c  LocalWords:  uref featureful dnl src LINGUAS es ko nl pl sl sv PROG ISC doc
+@c  LocalWords:  POSIX STDC fcntl FUNC ALLOCA blksize struct stat intl po chmod
+@c  LocalWords:  ChangeLog SUBDIRS gettextize gpl testdata getopt INTLLIBS cpp
+@c  LocalWords:  localedir datadir DLOCALEDIR DEXIT CPPFLAGS autoreconf opindex
+@c  LocalWords:  AUX var symlink deps Wno Wnone package's aclocal's distclean
+@c  LocalWords:  ltmain xref LIBSOURCE LIBSOURCES LIBOBJ MEMCMP vs RANLIB CXX
+@c  LocalWords:  LDFLAGS LIBTOOL libtool XTRA LIBS gettext's acdir APIVERSION
+@c  LocalWords:  dirlist noindent usr TIOCGWINSZ sc
+@c  LocalWords:  GWINSZ termios SRCDIR tarball bzip LISPDIR lispdir XEmacs CCAS
+@c  LocalWords:  emacsen MicroEmacs CCASFLAGS UX GCJ gcj GCJFLAGS posix DMALLOC
+@c  LocalWords:  dmalloc ldmalloc REGEX regex DEPDIR DEP DEFUN aclocaldir fi
+@c  LocalWords:  mymacro myothermacro AMFLAGS autopoint autogen libtoolize yum
+@c  LocalWords:  autoheader README MAKEFLAGS subdir Inetutils sync COND endif
+@c  LocalWords:  Miller's installable includedir inc pkgdata EXEEXT libexec bsd
+@c  LocalWords:  pkglib libexecdir prog libcpio cpio's dlopen dlpreopen linux
+@c  LocalWords:  subsubsection OBJEXT esac lib LTLIBRARIES liblob LIBADD AR ar
+@c  LocalWords:  ARFLAGS cru ing maude libgettext lo LTLIBOBJS rpath SGI PRE yy
+@c  LocalWords:  libmaude CCLD CXXFLAGS FFLAGS LFLAGS OBJCFLAGS RFLAGS DEFS cc
+@c  LocalWords:  OBJCXXFLAGS
+@c  LocalWords:  SHORTNAME vtable srcdir nostdinc basename yxx cxx ll lxx gdb
+@c  LocalWords:  lexers yymaxdepth maxdepth yyparse yylex yyerror yylval lval
+@c  LocalWords:  yychar yydebug yypact yyr yydef def yychk chk yypgo pgo yyact
+@c  LocalWords:  yyexca exca yyerrflag errflag yynerrs nerrs yyps yypv pv yys
+@c  LocalWords:  yystate yytmp tmp yyv yyval val yylloc lloc yyreds yytoks toks
+@c  LocalWords:  yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yyname
+@c  LocalWords:  yytable yycheck yyrule byacc CXXCOMPILE CXXLINK FLINK cfortran
+@c  LocalWords:  Catalogue preprocessable FLIBS libfoo baz JAVACFLAGS java exe
+@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
+@c  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
+@c  LocalWords:  mandir thesame alsothesame installman myexecbin DESTDIR Pinard
+@c  LocalWords:  uninstall installdirs uninstalls MOSTLYCLEANFILES mostlyclean
+@c  LocalWords:  DISTCLEANFILES MAINTAINERCLEANFILES GZIP gzip shar exp
+@c  LocalWords:  distdir distcheck distcleancheck listfiles distuninstallcheck
+@c  LocalWords:  VPATH tarfile stdout XFAIL DejaGnu dejagnu DEJATOOL runtest ln
+@c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
+@c  LocalWords:  installcheck gzipped tarZ std utils etags mkid cd
+@c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
+@c  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG enableval FC
+@c  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's TE
+@c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
+@c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
+@c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
+@c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
+@c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
+@c  LocalWords:  mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS te
+@c  LocalWords:  GNUmakefile Subpackages subpackage's subpackages aux
+@c  LocalWords:  detailmenu Timeline pwd reldir AUTOM autom PREREQ FOOBAR libc
+@c  LocalWords:  libhand subpackage moduleN libmain libmisc FCFLAGS FCCOMPILE
+@c  LocalWords:  FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips esyscmd ustar
+@c  LocalWords:  tarballs Woverride vfi ELFILES djm AutoMake honkin FSF
+@c  LocalWords:  fileutils precanned MacKenzie's reimplement termutils Tromey's
+@c  LocalWords:  cois gnitsians LIBPROGRAMS progs LIBLIBRARIES Textutils Ulrich
+@c  LocalWords:  Matzigkeit Drepper's Gord Matzigkeit's jm Dalley Debian org
+@c  LocalWords:  Administrivia ILU CORBA Sourceware Molenda sourceware Elliston
+@c  LocalWords:  dep Oliva Akim Demaille Aiieeee Demaillator Akim's sourcequake
+@c  LocalWords:  grep backported screenshots libgcj KB unnumberedsubsubsec pre
+@c  LocalWords:  precomputing hacky makedepend inline clearmake LD PRELOAD Rel
+@c  LocalWords:  syscalls perlhist acl pm multitable headitem fdl appendixsec
+@c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
+@c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
+@c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
+@c  LocalWords:  barexec Pinard's automatize initialize lzip xz cscope
diff --git a/doc/fdl.texi b/doc/fdl.texi
new file mode 100644 (file)
index 0000000..38bfdd2
--- /dev/null
@@ -0,0 +1,506 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000-2012 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The ``Document'', below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as ``you''.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification.  Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''.  Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''.  You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+  Copyright (C)  @var{year}  @var{your name}.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.3
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+    with the Invariant Sections being @var{list their titles}, with
+    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+    being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/doc/help2man b/doc/help2man
new file mode 100755 (executable)
index 0000000..6b915bc
--- /dev/null
@@ -0,0 +1,669 @@
+#!/usr/bin/perl -w
+
+# Generate a short man page from --help and --version output.
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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/>.
+
+# Written by Brendan O'Dea <bod@debian.org>
+# Available from ftp://ftp.gnu.org/gnu/help2man/
+
+use 5.006;
+use strict;
+use Getopt::Long;
+use Text::Tabs qw(expand);
+use POSIX qw(strftime setlocale LC_ALL);
+
+my $this_program = 'help2man';
+my $this_version = '1.40.8';
+
+sub _ { $_[0] }
+sub configure_locale
+{
+    my $locale = shift;
+    die "$this_program: no locale support (Locale::gettext required)\n"
+       unless $locale eq 'C';
+}
+
+sub dec { $_[0] }
+sub enc { $_[0] }
+sub enc_user { $_[0] }
+sub kark { die +(sprintf shift, @_), "\n" }
+sub N_ { $_[0] }
+
+my $version_info = enc_user sprintf _(<<'EOT'), $this_program, $this_version;
+GNU %s %s
+
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009, 2010,
+2011, 2012 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+Written by Brendan O'Dea <bod@debian.org>
+EOT
+
+my $help_info = enc_user sprintf _(<<'EOT'), $this_program, $this_program;
+`%s' generates a man page out of `--help' and `--version' output.
+
+Usage: %s [OPTION]... EXECUTABLE
+
+ -n, --name=STRING       description for the NAME paragraph
+ -s, --section=SECTION   section number for manual page (1, 6, 8)
+ -m, --manual=TEXT       name of manual (User Commands, ...)
+ -S, --source=TEXT       source of program (FSF, Debian, ...)
+ -L, --locale=STRING     select locale (default "C")
+ -i, --include=FILE      include material from `FILE'
+ -I, --opt-include=FILE  include material from `FILE' if it exists
+ -o, --output=FILE       send output to `FILE'
+ -p, --info-page=TEXT    name of Texinfo manual
+ -N, --no-info           suppress pointer to Texinfo manual
+ -l, --libtool           exclude the `lt-' from the program name
+     --help              print this help, then exit
+     --version           print version number, then exit
+
+EXECUTABLE should accept `--help' and `--version' options and produce output on
+stdout although alternatives may be specified using:
+
+ -h, --help-option=STRING     help option string
+ -v, --version-option=STRING  version option string
+ --version-string=STRING      version string
+ --no-discard-stderr          include stderr when parsing option output
+
+Report bugs to <bug-help2man@gnu.org>.
+EOT
+
+my $section = 1;
+my $manual = '';
+my $source = '';
+my $help_option = '--help';
+my $version_option = '--version';
+my $discard_stderr = 1;
+my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info, $opt_libtool,
+    $version_text);
+
+my %opt_def = (
+    'n|name=s'          => \$opt_name,
+    's|section=s'       => \$section,
+    'm|manual=s'        => \$manual,
+    'S|source=s'        => \$source,
+    'L|locale=s'        => sub { configure_locale pop },
+    'i|include=s'       => sub { push @opt_include, [ pop, 1 ] },
+    'I|opt-include=s'   => sub { push @opt_include, [ pop, 0 ] },
+    'o|output=s'        => \$opt_output,
+    'p|info-page=s'     => \$opt_info,
+    'N|no-info'                 => \$opt_no_info,
+    'l|libtool'                 => \$opt_libtool,
+    'help'              => sub { print $help_info; exit },
+    'version'           => sub { print $version_info; exit },
+    'h|help-option=s'   => \$help_option,
+    'v|version-option=s' => \$version_option,
+    'version-string=s'  => \$version_text,
+    'discard-stderr!'   => \$discard_stderr,
+);
+
+# Parse options.
+Getopt::Long::config('bundling');
+die $help_info unless GetOptions %opt_def and @ARGV == 1;
+
+my %include = ();
+my %append = ();
+my @include = (); # retain order given in include file
+
+# Process include file (if given).  Format is:
+#
+#   [section name]
+#   verbatim text
+#
+# or
+#
+#   /pattern/
+#   verbatim text
+#
+
+while (@opt_include)
+{
+    my ($inc, $required) = @{shift @opt_include};
+
+    next unless -f $inc or $required;
+    kark N_("%s: can't open `%s' (%s)"), $this_program, $inc, $!
+       unless open INC, $inc;
+
+    my $key;
+    my $hash = \%include;
+
+    while (<INC>)
+    {
+       # Convert input to internal Perl format, so that multibyte
+       # sequences are treated as single characters.
+       $_ = dec $_;
+
+       # [section]
+       if (/^\[([^]]+)\]\s*$/)
+       {
+           $key = uc $1;
+           $key =~ s/^\s+//;
+           $key =~ s/\s+$//;
+           $hash = \%include;
+           push @include, $key unless $include{$key};
+           next;
+       }
+
+       # /pattern/
+       if (m!^/(.*)/([ims]*)\s*$!)
+       {
+           my $pat = $2 ? "(?$2)$1" : $1;
+
+           # Check pattern.
+           eval { $key = qr($pat) };
+           if ($@)
+           {
+               $@ =~ s/ at .*? line \d.*//;
+               die "$inc:$.:$@";
+           }
+
+           $hash = \%append;
+           next;
+       }
+
+       # Check for options before the first section--anything else is
+       # silently ignored, allowing the first for comments and
+       # revision info.
+       unless ($key)
+       {
+           # handle options
+           if (/^-/)
+           {
+               local @ARGV = split;
+               GetOptions %opt_def;
+           }
+
+           next;
+       }
+
+       $hash->{$key} ||= '';
+       $hash->{$key} .= $_;
+    }
+
+    close INC;
+
+    kark N_("%s: no valid information found in `%s'"), $this_program, $inc
+       unless $key;
+}
+
+# Compress trailing blank lines.
+for my $hash (\(%include, %append))
+{
+    for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ }
+}
+
+sub get_option_value;
+
+# Grab help and version info from executable.
+my $help_text   = get_option_value $ARGV[0], $help_option;
+$version_text ||= get_option_value $ARGV[0], $version_option;
+
+# Translators: the following message is a strftime(3) format string, which in
+# the English version expands to the month as a word and the full year.  It
+# is used on the footer of the generated manual pages.  If in doubt, you may
+# just use %x as the value (which should be the full locale-specific date).
+my $date = enc strftime _("%B %Y"), localtime;
+(my $program = $ARGV[0]) =~ s!.*/!!;
+my $package = $program;
+my $version;
+
+if ($opt_output)
+{
+    unlink $opt_output or kark N_("%s: can't unlink %s (%s)"),
+       $this_program, $opt_output, $! if -e $opt_output;
+
+    open STDOUT, ">$opt_output"
+       or kark N_("%s: can't create %s (%s)"), $this_program, $opt_output, $!;
+}
+
+# The first line of the --version information is assumed to be in one
+# of the following formats:
+#
+#   <version>
+#   <program> <version>
+#   {GNU,Free} <program> <version>
+#   <program> ({GNU,Free} <package>) <version>
+#   <program> - {GNU,Free} <package> <version>
+#
+# and separated from any copyright/author details by a blank line.
+
+($_, $version_text) = ((split /\n+/, $version_text, 2), '');
+
+if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
+    /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
+{
+    $program = $1;
+    $package = $2;
+    $version = $3;
+}
+elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/)
+{
+    $program = $2;
+    $package = $1 ? "$1$2" : $2;
+    $version = $3;
+}
+else
+{
+    $version = $_;
+}
+
+$program =~ s!.*/!!;
+
+# No info for `info' itself.
+$opt_no_info = 1 if $program eq 'info';
+
+# Translators: "NAME", "SYNOPSIS" and other one or two word strings in all
+# upper case are manual page section headings.  The man(1) manual page in your
+# language, if available should provide the conventional translations.
+for ($include{_('NAME')})
+{
+    if ($opt_name) # --name overrides --include contents.
+    {
+       $_ = "$program \\- $opt_name\n";
+    }
+    elsif ($_) # Use first name given as $program
+    {
+       $program = $1 if /^([^\s,]+)(?:,?\s*[^\s,\\-]+)*\s+\\?-/;
+    }
+    else # Set a default (useless) NAME paragraph.
+    {
+       $_ = sprintf _("%s \\- manual page for %s %s") . "\n", $program,
+           $program, $version;
+    }
+}
+
+# Man pages traditionally have the page title in caps.
+my $PROGRAM = uc $program;
+
+# Set default page head/footers
+$source ||= "$program $version";
+unless ($manual)
+{
+    for ($section)
+    {
+       if (/^(1[Mm]|8)/) { $manual = enc _('System Administration Utilities') }
+       elsif (/^6/)      { $manual = enc _('Games') }
+       else              { $manual = enc _('User Commands') }
+    }
+}
+
+# Extract usage clause(s) [if any] for SYNOPSIS.
+# Translators: "Usage" and "or" here are patterns (regular expressions) which
+# are used to match the usage synopsis in program output.  An example from cp
+# (GNU coreutils) which contains both strings:
+#  Usage: cp [OPTION]... [-T] SOURCE DEST
+#    or:  cp [OPTION]... SOURCE... DIRECTORY
+#    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+my $PAT_USAGE = _('Usage');
+my $PAT_USAGE_CONT = _('or');
+if ($help_text =~ s/^($PAT_USAGE):( +(\S+))(.*)((?:\n(?: {6}\1| *($PAT_USAGE_CONT): +\S).*)*)//om)
+{
+    my @syn = $3 . $4;
+
+    if ($_ = $5)
+    {
+       s/^\n//;
+       for (split /\n/) { s/^ *(($PAT_USAGE_CONT): +)?//o; push @syn, $_ }
+    }
+
+    my $synopsis = '';
+    for (@syn)
+    {
+       $synopsis .= ".br\n" if $synopsis;
+       s!^\S*/!!;
+       s/^lt-// if $opt_libtool;
+       s/^(\S+) *//;
+       $synopsis .= ".B $1\n";
+       s/\s+$//;
+       s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
+       s/^/\\fI/ unless s/^\\fR//;
+       $_ .= '\fR';
+       s/(\\fI)( *)/$2$1/g;
+       s/\\fI\\fR//g;
+       s/^\\fR//;
+       s/\\fI$//;
+       s/^\./\\&./;
+
+       $synopsis .= "$_\n";
+    }
+
+    $include{_('SYNOPSIS')} ||= $synopsis;
+}
+
+# Process text, initial section is DESCRIPTION.
+my $sect = _('DESCRIPTION');
+$_ = "$help_text\n\n$version_text";
+
+# Normalise paragraph breaks.
+s/^\n+//;
+s/\n*$/\n/;
+s/\n\n+/\n\n/g;
+
+# Join hyphenated lines.
+s/([A-Za-z])-\n *([A-Za-z])/$1$2/g;
+
+# Temporarily exchange leading dots, apostrophes and backslashes for
+# tokens.
+s/^\./\x80/mg;
+s/^'/\x81/mg;
+s/\\/\x82/g;
+
+# Translators: patterns are used to match common program output. In the source
+# these strings are all of the form of "my $PAT_something = _('...');" and are
+# regular expressions.  If there is more than one commonly used string, you
+# may separate alternatives with "|".  Spaces in these expressions are written
+# as " +" to indicate that more than one space may be matched.  The string
+# "(?:[\\w-]+ +)?" in the bug reporting pattern is used to indicate an
+# optional word, so that either "Report bugs" or "Report _program_ bugs" will
+# be matched.
+my $PAT_BUGS           = _('Report +(?:[\w-]+ +)?bugs|Email +bug +reports +to');
+my $PAT_AUTHOR         = _('Written +by');
+my $PAT_OPTIONS                = _('Options');
+my $PAT_ENVIRONMENT    = _('Environment');
+my $PAT_FILES          = _('Files');
+my $PAT_EXAMPLES       = _('Examples');
+my $PAT_FREE_SOFTWARE  = _('This +is +free +software');
+
+# Start a new paragraph (if required) for these.
+s/([^\n])\n($PAT_BUGS|$PAT_AUTHOR) /$1\n\n$2 /og;
+
+# Convert iso-8859-1 copyright symbol or (c) to nroff
+# character.
+s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg;
+
+sub convert_option;
+
+while (length)
+{
+    # Convert some standard paragraph names.
+    if (s/^($PAT_OPTIONS): *\n//o)
+    {
+       $sect = _('OPTIONS');
+       next;
+    }
+    if (s/^($PAT_ENVIRONMENT): *\n//o)
+    {
+       $sect = _('ENVIRONMENT');
+       next;
+    }
+    if (s/^($PAT_FILES): *\n//o)
+    {
+       $sect = _('FILES');
+       next;
+    }
+    elsif (s/^($PAT_EXAMPLES): *\n//o)
+    {
+       $sect = _('EXAMPLES');
+       next;
+    }
+
+    # Copyright section
+    if (/^Copyright /)
+    {
+       $sect = _('COPYRIGHT');
+    }
+
+    # Bug reporting section.
+    elsif (/^($PAT_BUGS) /o)
+    {
+       $sect = _('REPORTING BUGS');
+    }
+
+    # Author section.
+    elsif (/^($PAT_AUTHOR)/o)
+    {
+       $sect = _('AUTHOR');
+    }
+
+    # Examples, indicated by an indented leading $, % or > are
+    # rendered in a constant width font.
+    if (/^( +)([\$\%>] )\S/)
+    {
+       my $indent = $1;
+       my $prefix = $2;
+       my $break = '.IP';
+       $include{$sect} ||= '';
+       while (s/^$indent\Q$prefix\E(\S.*)\n*//)
+       {
+           $include{$sect} .= "$break\n\\f(CW$prefix$1\\fR\n";
+           $break = '.br';
+       }
+
+       next;
+    }
+
+    my $matched = '';
+    $include{$sect} ||= '';
+
+    # Sub-sections have a trailing colon and the second line indented.
+    if (s/^(\S.*:) *\n / /)
+    {
+       $matched .= $& if %append;
+       $include{$sect} .= qq(.SS "$1"\n);
+    }
+
+    my $indent = 0;
+    my $content = '';
+
+    # Option with description.
+    if (s/^( {1,10}([+-]\S.*?))(?:(  +(?!-))|\n( {20,}))(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $indent = length ($4 || "$1$3");
+       $content = ".TP\n\x84$2\n\x84$5\n";
+       unless ($4)
+       {
+           # Indent may be different on second line.
+           $indent = length $& if /^ {20,}/;
+       }
+    }
+
+    # Option without description.
+    elsif (s/^ {1,10}([+-]\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $content = ".HP\n\x84$1\n";
+       $indent = 80; # not continued
+    }
+
+    # Indented paragraph with tag.
+    elsif (s/^( +(\S.*?)  +)(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $indent = length $1;
+       $content = ".TP\n\x84$2\n\x84$3\n";
+    }
+
+    # Indented paragraph.
+    elsif (s/^( +)(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $indent = length $1;
+       $content = ".IP\n\x84$2\n";
+    }
+
+    # Left justified paragraph.
+    else
+    {
+       s/(.*)\n//;
+       $matched .= $& if %append;
+       $content = ".PP\n" if $include{$sect};
+       $content .= "$1\n";
+    }
+
+    # Append continuations.
+    while ($indent ? s/^ {$indent}(\S.*)\n// : s/^(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $content .= "\x84$1\n";
+    }
+
+    # Move to next paragraph.
+    s/^\n+//;
+
+    for ($content)
+    {
+       # Leading dot and apostrophe protection.
+       s/\x84\./\x80/g;
+       s/\x84'/\x81/g;
+       s/\x84//g;
+
+       # Convert options.
+       s/(^| |\()(-[][\w=-]+)/$1 . convert_option $2/mge;
+
+       # Escape remaining hyphens
+       s/-/\x83/g;
+
+       if ($sect eq 'COPYRIGHT')
+       {
+           # Insert line breaks before additional copyright messages
+           # and the disclaimer.
+           s/\n(Copyright |$PAT_FREE_SOFTWARE)/\n.br\n$1/og;
+       }
+       elsif ($sect eq 'REPORTING BUGS')
+       {
+           # Handle multi-line bug reporting sections of the form:
+           #
+           #   Report <program> bugs to <addr>
+           #   GNU <package> home page: <url>
+           #   ...
+           s/\n([[:upper:]])/\n.br\n$1/g;
+       }
+    }
+
+    # Check if matched paragraph contains /pat/.
+    if (%append)
+    {
+       for my $pat (keys %append)
+       {
+           if ($matched =~ $pat)
+           {
+               $content .= ".PP\n" unless $append{$pat} =~ /^\./;
+               $content .= $append{$pat};
+           }
+       }
+    }
+
+    $include{$sect} .= $content;
+}
+
+# Refer to the real documentation.
+unless ($opt_no_info)
+{
+    my $info_page = $opt_info || $program;
+
+    $sect = _('SEE ALSO');
+    $include{$sect} ||= '';
+    $include{$sect} .= ".PP\n" if $include{$sect};
+    $include{$sect} .= sprintf _(<<'EOT'), $program, $program, $info_page;
+The full documentation for
+.B %s
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B %s
+programs are properly installed at your site, the command
+.IP
+.B info %s
+.PP
+should give you access to the complete manual.
+EOT
+}
+
+# Output header.
+print <<EOT;
+.\\" DO NOT MODIFY THIS FILE!  It was generated by $this_program $this_version.
+.TH $PROGRAM "$section" "$date" "$source" "$manual"
+EOT
+
+# Section ordering.
+my @pre = (_('NAME'), _('SYNOPSIS'), _('DESCRIPTION'), _('OPTIONS'),
+    _('ENVIRONMENT'), _('FILES'), _('EXAMPLES'));
+
+my @post = (_('AUTHOR'), _('REPORTING BUGS'), _('COPYRIGHT'), _('SEE ALSO'));
+my $filter = join '|', @pre, @post;
+
+# Output content.
+for my $sect (@pre, (grep ! /^($filter)$/o, @include), @post)
+{
+    if ($include{$sect})
+    {
+       my $quote = $sect =~ /\W/ ? '"' : '';
+       print enc ".SH $quote$sect$quote\n";
+
+       for ($include{$sect})
+       {
+           # Replace leading dot, apostrophe, backslash and hyphen
+           # tokens.
+           s/\x80/\\&./g;
+           s/\x81/\\&'/g;
+           s/\x82/\\e/g;
+           s/\x83/\\-/g;
+
+           # Convert some latin1 chars to troff equivalents
+           s/\xa0/\\ /g; # non-breaking space
+
+           print enc $_;
+       }
+    }
+}
+
+close STDOUT or kark N_("%s: error writing to %s (%s)"), $this_program,
+    $opt_output || 'stdout', $!;
+
+exit;
+
+# Call program with given option and return results.
+sub get_option_value
+{
+    my ($prog, $opt) = @_;
+    my $stderr = $discard_stderr ? '/dev/null' : '&1';
+    my $value = join '',
+       map { s/ +$//; expand $_ }
+       map { dec $_ }
+       `$prog $opt 2>$stderr`;
+
+    unless ($value)
+    {
+       my $err = N_("%s: can't get `%s' info from %s%s");
+       my $extra = $discard_stderr
+           ? "\n" . N_("Try `--no-discard-stderr' if option outputs to stderr")
+           : '';
+
+       kark $err, $this_program, $opt, $prog, $extra;
+    }
+
+    return $value;
+}
+
+# Convert option dashes to \- to stop nroff from hyphenating 'em, and
+# embolden.  Option arguments get italicised.
+sub convert_option
+{
+    local $_ = '\fB' . shift;
+
+    s/-/\x83/g;
+    unless (s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
+    {
+       s/=(.)/\\fR=\\fI$1/;
+       s/ (.)/ \\fI$1/;
+       $_ .= '\fR';
+    }
+
+    $_;
+}
diff --git a/doc/stamp-vti b/doc/stamp-vti
new file mode 100644 (file)
index 0000000..ec4f76e
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 1 June 2012
+@set UPDATED-MONTH June 2012
+@set EDITION 1.12.1
+@set VERSION 1.12.1
diff --git a/doc/version.texi b/doc/version.texi
new file mode 100644 (file)
index 0000000..ec4f76e
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 1 June 2012
+@set UPDATED-MONTH June 2012
+@set EDITION 1.12.1
+@set VERSION 1.12.1
diff --git a/gen-testsuite-part b/gen-testsuite-part
new file mode 100755 (executable)
index 0000000..34e10a8
--- /dev/null
@@ -0,0 +1,404 @@
+#! /usr/bin/env perl
+# Automatically compute some dependencies for the hand-written tests
+# of the Automake testsuite.  Also, automatically generate some more
+# tests from them (for particular cases/setups only).
+
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+#--------------------------------------------------------------------------
+
+use warnings FATAL => "all";
+use strict;
+use File::Basename ();
+use constant TRUE => 1;
+use constant FALSE => 0;
+
+my $me = File::Basename::basename $0;
+
+# For use in VPATH builds.
+my $srcdir = ".";
+
+#--------------------------------------------------------------------------
+
+sub unindent ($)
+{
+  my $text = shift;
+  $text =~ /^(\s*)/;
+  my $indentation = $1;
+  $text =~ s/^$indentation//gm;
+  return $text;
+}
+
+sub atomic_write ($$;$)
+{
+  my ($outfile, $func) = (shift, shift);
+  my $perms = @_ > 0 ? shift : 0777;
+  my $tmpfile = "$outfile-t";
+  foreach my $f ($outfile, $tmpfile)
+    {
+      unlink $f or die "$me: cannot unlink '$f': $!\n"
+        if -e $f;
+    }
+  open (my $fh, ">$tmpfile")
+    or die "$me: can't write to '$tmpfile': $!\n";
+  $func->($fh);
+  close $fh
+    or die "$me: closing '$tmpfile': $!\n";
+  chmod ($perms & ~umask, $tmpfile)
+    or die "$me: cannot change perms for '$tmpfile': $!\n";
+  rename ($tmpfile, $outfile)
+    or die "$me: renaming '$tmpfile' -> '$outfile: $!\n'";
+}
+
+sub line_match ($$)
+{
+  my ($re, $file) = (shift, shift);
+  # Try both builddir and srcdir, with builddir first, to play nice
+  # with VPATH builds.
+  open (FH, "<$file") or open (FH, "<$srcdir/$file")
+    or die "$me: cannot open file '$file': $!\n";
+  my $ret = 0;
+  while (defined (my $line = <FH>))
+    {
+      if ($line =~ $re)
+        {
+          $ret = 1;
+          last;
+        }
+    }
+  close FH or die "$me: cannot close file '$file': $!\n";
+  return $ret;
+}
+
+sub write_wrapper_script ($$$)
+{
+  my ($file_handle, $wrapped_test, $shell_setup_code, $creator_name) = @_;
+  # FIXME: we use some creative quoting in the generated scripts,
+  # FIXME: to please maintainer-check.
+  print $file_handle unindent <<EOF;
+    #! /bin/sh
+    # This file has been automatically generated.  DO NOT EDIT BY HAND!
+    . ./defs-static || exit '99';
+    $shell_setup_code
+    # In the spirit of VPATH, we prefer a test in the build tree
+    # over one in the source tree.
+    for dir in . "\$am_top_srcdir"; do
+      if test -f "\$dir/$wrapped_test"; then
+        echo "\$0: will source \$dir/$wrapped_test"
+        . "\$dir/$wrapped_test"; exit "\$?"
+      fi
+    done
+    echo "\$0: cannot find wrapped test '$wrapped_test'" >&2
+    exit '99'
+EOF
+}
+
+sub get_list_of_tests ()
+{
+  my $make = defined $ENV{MAKE} ? $ENV{MAKE} : "make";
+  # Unset MAKEFLAGS, for when we are called from make itself.
+  my $cmd = "MAKEFLAGS= && unset MAKEFLAGS && cd '$srcdir' && "
+            . "$make -s -f t/list-of-tests.mk print-list-of-tests";
+  my @tests_list = split /\s+/, `$cmd`;
+  die "$me: cannot get list of tests\n" unless $? == 0 && @tests_list;
+  my $ok = 1;
+  foreach my $test (@tests_list)
+    {
+      # Respect VPATH builds.
+      next if -f $test || -f "$srcdir/$test";
+      warn "$me: test '$test' not found\n";
+      $ok = 0;
+    }
+  die "$me: some test scripts not found\n" if !$ok;
+  return @tests_list;
+}
+
+sub parse_options (@)
+{
+  use Getopt::Long qw/GetOptions/;
+  local @ARGV = @_;
+  GetOptions ('srcdir=s' => \$srcdir) or die "$me: usage error\n";
+  die "$me: too many arguments\n" if @ARGV > 0;
+  die "$me: srcdir '$srcdir': not a directory\n" unless -d $srcdir;
+}
+
+#--------------------------------------------------------------------------
+
+# Where testsuite-related helper scripts, data files and shell libraries
+# are placed.  Relative to the 't/' subdirectory.
+my $auxdir = "ax";
+
+my %deps_extractor =
+  (
+    libtool_macros =>
+      {
+        line_matcher => qr/^\s*required=.*\blibtool/,
+        nodist_prereqs => "t/libtool-macros.log",
+      },
+    gettext_macros =>
+      {
+        line_matcher => qr/^\s*required=.*\bgettext/,
+        nodist_prereqs => "t/gettext-macros.log",
+      },
+    use_trivial_test_driver =>
+      {
+        line_matcher => qr/\btrivial-test-driver\b/,
+        dist_prereqs => "t/$auxdir/trivial-test-driver",
+      },
+    check_testsuite_summary =>
+      {
+        line_matcher => qr/\btestsuite-summary-checks\.sh\b/,
+        dist_prereqs => "t/$auxdir/testsuite-summary-checks.sh",
+      },
+    extract_testsuite_summary =>
+      {
+        line_matcher => qr/\bextract-testsuite-summary\.pl\b/,
+        dist_prereqs => "t/$auxdir/extract-testsuite-summary.pl",
+      },
+    check_tap_testsuite_summary =>
+      {
+        line_matcher => qr/\btap-summary-aux\.sh\b/,
+        dist_prereqs => "t/$auxdir/tap-summary-aux.sh",
+      },
+    on_tap_with_common_setup =>
+      {
+        line_matcher => qr/\btap-setup\.sh\b/,
+        dist_prereqs => "t/$auxdir/tap-setup.sh",
+        nodist_prereqs => "t/tap-common-setup.log",
+      },
+    depcomp =>
+      {
+        line_matcher => qr/\bdepcomp\.sh\b/,
+        dist_prereqs => "t/$auxdir/depcomp.sh",
+      },
+  );
+
+#--------------------------------------------------------------------------
+
+my %test_generators =
+  (
+    #
+    # Any test script in the Automake testsuite that checks features of
+    # the Automake-provided parallel testsuite harness might want to
+    # define a sibling test that does similar checks, but for the old
+    # serial testsuite harness instead.
+    #
+    # Individual tests can request the creation of such a sibling by
+    # making the string "try-with-serial-tests" appear any line of the
+    # test itself.
+    #
+    serial_testsuite_harness =>
+      {
+        line_matcher     => qr/\btry-with-serial-tests\b/,
+        shell_setup_code => 'am_serial_tests=yes',
+      },
+    #
+    # For each test script in the Automake testsuite that tests features
+    # of one or more automake-provided shell script from the 'lib/'
+    # subdirectory by running those scripts directly (i.e., not thought
+    # make calls and automake-generated makefiles), define a sibling test
+    # that does likewise, but running the said script with the configure
+    # time $SHELL instead of the default system shell /bin/sh.
+    #
+    # A test is considered a candidate for sibling-generation if it calls
+    # the 'get_shell_script' function anywhere.
+    #
+    # Individual tests can prevent the creation of such a sibling by
+    # explicitly setting the '$am_test_prefer_config_shell' variable
+    # to either "yes" or "no".
+    # The rationale for this is that if the variable is set to "yes",
+    # the test already uses $SHELL, so that a sibling would be just a
+    # duplicate; while if the variable is set to "no", the test doesn't
+    # support, or is not meant to use, $SHELL to run the script under
+    # testing, and forcing it to do so in the sibling would likely
+    # cause a spurious failure.
+    #
+    prefer_config_shell =>
+      {
+        line_matcher =>
+          qr/(^|\s)get_shell_script\s/,
+        line_rejecter =>
+          qr/\bam_test_prefer_config_shell=/,
+        shell_setup_code =>
+          'am_test_prefer_config_shell=yes',
+      },
+    #
+    # Tests on tap support should be run with both the perl and awk
+    # implementations of the TAP driver (they run with the awk one
+    # by default).
+    #
+    perl_tap_driver =>
+      {
+        line_matcher =>
+          qr<(?:\bfetch_tap_driver\b|[\s/]tap-setup\.sh\b)>,
+        line_rejecter =>
+          qr/\bam_tap_implementation=/,
+        shell_setup_code =>
+          'am_tap_implementation=perl',
+      },
+  );
+
+#--------------------------------------------------------------------------
+
+parse_options @ARGV;
+
+my @all_tests = get_list_of_tests;
+my @generated_tests = (); # Will be updated later.
+
+print "## -*- Makefile -*-\n";
+print "## Generated by $me.  DO NOT EDIT BY HAND!\n\n";
+
+print <<EOF;
+
+## --------------------------------------------- ##
+##  Autogenerated tests and their dependencies.  ##
+## --------------------------------------------- ##
+
+EOF
+
+# FIXME: the following is not really right, since cannot compose wrapping
+# of tests matching more than one condition.  Still, there should be no
+# such test at the moment, so the limitation is (temporarily) acceptable.
+while (my ($k, $g) = each %test_generators)
+  {
+    my @wrapped_tests = grep {
+      line_match ($g->{line_matcher}, $_)
+        && (!$g->{line_rejecter} || !line_match ($g->{line_rejecter}, $_))
+    } @all_tests;
+    foreach my $wrapped_test (@wrapped_tests)
+      {
+        (my $base = $wrapped_test) =~ s/\.([^.]*)$//;
+        my $suf = $1 or die "$me: test '$wrapped_test' lacks a suffix\n";
+        my $wrapper_test =  "$base-w.$suf";
+        # Register wrapper test as "autogenerated".
+        push @generated_tests, $wrapper_test;
+        # Create wrapper test.
+        atomic_write $wrapper_test,
+                     sub { write_wrapper_script $_[0], $wrapped_test,
+                           $g->{shell_setup_code} },
+                     0555;
+        # The generated test works by sourcing the original test, so that
+        # it has to be re-run every time that changes ...
+        print "$base-w.log: $wrapped_test\n";
+        # ... but also every time the prerequisites of the wrapped test
+        # changes.  The simpler (although suboptimal) way to do so is to
+        # ensure that the wrapped tests runs before the wrappee one (in
+        # case it needs to be re-run *at all*.
+        # FIXME: we could maybe refactor the script to find a more
+        # granular way to express such implicit dependencies.
+        print "$base-w.log: $base.log\n";
+      }
+  }
+
+print <<EOF;
+
+## ---------------------------------------------------- ##
+##  Ad-hoc autogenerated tests and their dependencies.  ##
+## ---------------------------------------------------- ##
+
+EOF
+
+print "## Tests on automatic dependency tracking (see 'depcomp.sh').\n";
+
+# Key: depmode, value: list of required programs.
+my %depmodes =
+  (
+    auto         => ["cc"],
+    disabled     => ["cc"],
+    makedepend   => ["cc", "makedepend"],
+    dashmstdout  => ["gcc"],
+    cpp          => ["gcc"],
+# This is for older (pre-3.x) GCC versions.  Newer versions
+# have depmode "gcc3".
+    gcc          => ["gcc"],
+# This is for older (pre-7) msvc versions.  Newer versions
+# have depmodes "msvc7" and "msvc7msys".
+    msvisualcpp  => ["cl", "cygpath"],
+    msvcmsys     => ["cl", "mingw"],
+  );
+
+foreach my $lt (TRUE, FALSE)
+  {
+    foreach my $m (keys %depmodes)
+      {
+        my $planned = ($lt && $m eq "auto") ? 84 : 28;
+        my @required =
+          (
+            @{$depmodes{$m}},
+            $lt ? ("libtoolize",) : (),
+          );
+        my @vars_init =
+          (
+            "am_create_testdir=empty",
+            "depmode=$m",
+            "depcomp_with_libtool=" . ($lt ? "yes" : "no"),
+          );
+        my $test = "t/depcomp" . ($lt ? "-lt-" : "-") . $m . ".tap";
+        # Register wrapper test as "autogenerated" ...
+        push @generated_tests, $test;
+        # ... and create it.
+        atomic_write ($test, sub
+          {
+            my $file_handle = shift;
+            print $file_handle unindent <<EOF;
+              #! /bin/sh
+              # Automatically generated test.  DO NOT EDIT BY HAND!
+              @vars_init
+              required="@required"
+              . ./defs || Exit 1
+              plan_ $planned
+              . "\$am_testauxdir/depcomp.sh"; exit "\$?"
+EOF
+          },
+          0555);
+      }
+   }
+
+# Update generated makefile fragment to account for all the generated tests.
+print "generated_TESTS =\n";
+map { print "generated_TESTS += $_\n" } @generated_tests;
+
+# The test scripts are scanned for automatic dependency generation *after*
+# the generated tests have been created, so they too can be scanned.  To
+# do so correctly, we need to update the list in '@all_tests' to make it
+# comprise also the freshly-generated tests.
+
+push @all_tests, @generated_tests;
+
+print <<EOF;
+
+## ----------------------------- ##
+##  Autogenerated dependencies.  ##
+## ----------------------------- ##
+
+EOF
+
+while (my ($k, $x) = each %deps_extractor)
+  {
+    my $dist_prereqs = $x->{dist_prereqs} || "";
+    my $nodist_prereqs = $x->{nodist_prereqs} || "";
+    my @tests = grep { line_match $x->{line_matcher}, $_ } @all_tests;
+    map { s/\.[^.]*$//; s/$/\.log/; } (my @logs = @tests);
+    print "## Added by deps-extracting key '$k'.\n";
+    ## The list of all tests which have a dependency detected by the
+    ## current key.
+    print join(" \\\n  ", "${k}_TESTS =", @tests) . "\n";
+    print "EXTRA_DIST += $dist_prereqs\n";
+    map { print "$_: $dist_prereqs $nodist_prereqs\n" } @logs;
+    print "\n";
+  }
+
+__END__
diff --git a/lib/Automake/ChannelDefs.pm b/lib/Automake/ChannelDefs.pm
new file mode 100644 (file)
index 0000000..02ce849
--- /dev/null
@@ -0,0 +1,444 @@
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::ChannelDefs;
+
+use Automake::Config;
+BEGIN
+{
+  if ($perl_threads)
+    {
+      require threads;
+      import threads;
+    }
+}
+use Automake::Channels;
+
+=head1 NAME
+
+Automake::ChannelDefs - channel definitions for Automake and helper functions
+
+=head1 SYNOPSIS
+
+  use Automake::ChannelDefs;
+
+  Automake::ChannelDefs::usage ();
+  prog_error ($MESSAGE, [%OPTIONS]);
+  error ($WHERE, $MESSAGE, [%OPTIONS]);
+  error ($MESSAGE);
+  fatal ($WHERE, $MESSAGE, [%OPTIONS]);
+  fatal ($MESSAGE);
+  verb ($MESSAGE, [%OPTIONS]);
+  switch_warning ($CATEGORY);
+  parse_WARNINGS ();
+  parse_warnings ($OPTION, $ARGUMENT);
+  Automake::ChannelDefs::set_strictness ($STRICTNESS_NAME);
+
+=head1 DESCRIPTION
+
+This packages defines channels that can be used in Automake to
+output diagnostics and other messages (via C<msg()>).  It also defines
+some helper function to enable or disable these channels, and some
+shorthand function to output on specific channels.
+
+=cut
+
+use 5.006;
+use strict;
+use Exporter;
+
+use vars qw (@ISA @EXPORT);
+
+@ISA = qw (Exporter);
+@EXPORT = qw (&prog_error &error &fatal &verb
+             &switch_warning &parse_WARNINGS &parse_warnings);
+
+=head2 CHANNELS
+
+The following channels can be used as the first argument of
+C<Automake::Channel::msg>.  For some of them we list a shorthand
+function that makes the code more readable.
+
+=over 4
+
+=item C<fatal>
+
+Fatal errors.  Use C<&fatal> to send messages over this channel.
+
+=item C<error>
+
+Common errors.  Use C<&error> to send messages over this channel.
+
+=item C<error-gnu>
+
+Errors related to GNU Standards.
+
+=item C<error-gnu/warn>
+
+Errors related to GNU Standards that should be warnings in 'foreign' mode.
+
+=item C<error-gnits>
+
+Errors related to GNITS Standards (silent by default).
+
+=item C<automake>
+
+Internal errors.  Use C<&prog_error> to send messages over this channel.
+
+=item C<gnu>
+
+Warnings related to GNU Coding Standards.
+
+=item C<obsolete>
+
+Warnings about obsolete features (silent by default).
+
+=item C<override>
+
+Warnings about user redefinitions of Automake rules or
+variables (silent by default).
+
+=item C<portability>
+
+Warnings about non-portable constructs.
+
+=item C<extra-portability>
+
+Extra warnings about non-portable constructs covering obscure tools.
+
+=item C<syntax>
+
+Warnings about weird syntax, unused variables, typos...
+
+=item C<unsupported>
+
+Warnings about unsupported (or mis-supported) features.
+
+=item C<verb>
+
+Messages output in C<--verbose> mode.  Use C<&verb> to send such messages.
+
+=item C<note>
+
+Informative messages.
+
+=back
+
+=cut
+
+# Initialize our list of error/warning channels.
+# Do not forget to update &usage and the manual
+# if you add or change a warning channel.
+
+register_channel 'fatal', type => 'fatal', uniq_part => UP_NONE, ordered => 0;
+register_channel 'error', type => 'error';
+register_channel 'error-gnu', type => 'error';
+register_channel 'error-gnu/warn', type => 'error';
+register_channel 'error-gnits', type => 'error', silent => 1;
+register_channel 'automake', type => 'fatal', backtrace => 1,
+  header => ("####################\n" .
+            "## Internal Error ##\n" .
+            "####################\n"),
+  footer => "\nPlease contact <$PACKAGE_BUGREPORT>.",
+  uniq_part => UP_NONE, ordered => 0;
+
+register_channel 'extra-portability', type => 'warning', silent => 1;
+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';
+
+register_channel 'verb', type => 'debug', silent => 1, uniq_part => UP_NONE,
+  ordered => 0;
+register_channel 'note', type => 'debug', silent => 0;
+
+setup_channel_type 'warning', header => 'warning: ';
+setup_channel_type 'error', header => 'error: ';
+setup_channel_type 'fatal', header => 'error: ';
+
+=head2 FUNCTIONS
+
+=over 4
+
+=item C<usage ()>
+
+Display warning categories.
+
+=cut
+
+sub usage ()
+{
+  print <<EOF;
+Warning categories include:
+  gnu                GNU coding standards (default in gnu and gnits modes)
+  obsolete           obsolete features or constructions
+  override           user redefinitions of Automake rules or variables
+  portability        portability issues (default in gnu and gnits modes)
+  extra-portability  extra portability issues related to obscure tools
+  syntax             dubious syntactic constructs (default)
+  unsupported        unsupported or incomplete features (default)
+  all                all the warnings
+  no-CATEGORY        turn off warnings in CATEGORY
+  none               turn off all the warnings
+  error              treat warnings as errors
+EOF
+}
+
+=item C<prog_error ($MESSAGE, [%OPTIONS])>
+
+Signal a programming error (on channel C<automake>),
+display C<$MESSAGE>, and exit 1.
+
+=cut
+
+sub prog_error ($;%)
+{
+  my ($msg, %opts) = @_;
+  msg 'automake', '', $msg, %opts;
+}
+
+=item C<error ($WHERE, $MESSAGE, [%OPTIONS])>
+
+=item C<error ($MESSAGE)>
+
+Uncategorized errors.
+
+=cut
+
+sub error ($;$%)
+{
+  my ($where, $msg, %opts) = @_;
+  msg ('error', $where, $msg, %opts);
+}
+
+=item C<fatal ($WHERE, $MESSAGE, [%OPTIONS])>
+
+=item C<fatal ($MESSAGE)>
+
+Fatal errors.
+
+=cut
+
+sub fatal ($;$%)
+{
+  my ($where, $msg, %opts) = @_;
+  msg ('fatal', $where, $msg, %opts);
+}
+
+=item C<verb ($MESSAGE, [%OPTIONS])>
+
+C<--verbose> messages.
+
+=cut
+
+sub verb ($;%)
+{
+  my ($msg, %opts) = @_;
+  $msg = "thread " . threads->tid . ": " . $msg
+    if $perl_threads;
+  msg 'verb', '', $msg, %opts;
+}
+
+=item C<switch_warning ($CATEGORY)>
+
+If C<$CATEGORY> is C<mumble>, turn on channel C<mumble>.
+If it's C<no-mumble>, turn C<mumble> off.
+Else handle C<all> and C<none> for completeness.
+
+=cut
+
+sub switch_warning ($)
+{
+  my ($cat) = @_;
+  my $has_no = 0;
+
+  if ($cat =~ /^no-(.*)$/)
+    {
+      $cat = $1;
+      $has_no = 1;
+    }
+
+  if ($cat eq 'all')
+    {
+      setup_channel_type 'warning', silent => $has_no;
+    }
+  elsif ($cat eq 'none')
+    {
+      setup_channel_type 'warning', silent => ! $has_no;
+    }
+  elsif ($cat eq 'error')
+    {
+      $warnings_are_errors = ! $has_no;
+      # Set exit code if Perl warns about something
+      # (like uninitialized variables).
+      $SIG{"__WARN__"} =
+       $has_no ? 'DEFAULT' : sub { print STDERR @_; $exit_code = 1; };
+    }
+  elsif (channel_type ($cat) eq 'warning')
+    {
+      setup_channel $cat, silent => $has_no;
+      #
+      # Handling of portability warnings is trickier.  For relevant tests,
+      # see 'dollarvar2', 'extra-portability' and 'extra-portability3'.
+      #
+      # -Wportability-recursive and -Wno-portability-recursive should not
+      # have any effect on other 'portability' or 'extra-portability'
+      # warnings, so there's no need to handle them separately or ad-hoc.
+      #
+      if ($cat eq 'extra-portability' && ! $has_no) # -Wextra-portability
+        {
+          # -Wextra-portability must enable 'portability' and
+          # 'portability-recursive' warnings.
+          setup_channel 'portability', silent => 0;
+          setup_channel 'portability-recursive', silent => 0;
+        }
+      if ($cat eq 'portability') # -Wportability or -Wno-portability
+        {
+          if ($has_no) # -Wno-portability
+            {
+              # -Wno-portability must disable 'extra-portability' and
+              # 'portability-recursive' warnings.
+              setup_channel 'portability-recursive', silent => 1;
+              setup_channel 'extra-portability', silent => 1;
+            }
+          else # -Wportability
+            {
+              # -Wportability must enable 'portability-recursive'
+              # warnings.  But it should have no influence over the
+              # 'extra-portability' warnings.
+              setup_channel 'portability-recursive', silent => 0;
+            }
+        }
+    }
+  else
+    {
+      return 1;
+    }
+  return 0;
+}
+
+=item C<parse_WARNINGS ()>
+
+Parse the WARNINGS environment variable.
+
+=cut
+
+sub parse_WARNINGS ()
+{
+  if (exists $ENV{'WARNINGS'})
+    {
+      # Ignore unknown categories.  This is required because WARNINGS
+      # should be honored by many tools.
+      switch_warning $_ foreach (split (',', $ENV{'WARNINGS'}));
+    }
+}
+
+=item C<parse_warnings ($OPTION, $ARGUMENT)>
+
+Parse the argument of C<--warning=CATEGORY> or C<-WCATEGORY>.
+
+C<$OPTIONS> is C<"--warning"> or C<"-W">, C<$ARGUMENT> is C<CATEGORY>.
+
+This is meant to be used as an argument to C<Getopt>.
+
+=cut
+
+sub parse_warnings ($$)
+{
+  my ($opt, $categories) = @_;
+
+  foreach my $cat (split (',', $categories))
+    {
+      msg 'unsupported', "unknown warning category '$cat'"
+       if switch_warning $cat;
+    }
+}
+
+=item C<set_strictness ($STRICTNESS_NAME)>
+
+Configure channels for strictness C<$STRICTNESS_NAME>.
+
+=cut
+
+sub set_strictness ($)
+{
+  my ($name) = @_;
+
+  if ($name eq 'gnu')
+    {
+      setup_channel 'error-gnu', silent => 0;
+      setup_channel 'error-gnu/warn', silent => 0, type => 'error';
+      setup_channel 'error-gnits', silent => 1;
+      setup_channel 'portability', silent => 0;
+      setup_channel 'extra-portability', silent => 1;
+      setup_channel 'gnu', silent => 0;
+    }
+  elsif ($name eq 'gnits')
+    {
+      setup_channel 'error-gnu', silent => 0;
+      setup_channel 'error-gnu/warn', silent => 0, type => 'error';
+      setup_channel 'error-gnits', silent => 0;
+      setup_channel 'portability', silent => 0;
+      setup_channel 'extra-portability', silent => 1;
+      setup_channel 'gnu', silent => 0;
+    }
+  elsif ($name eq 'foreign')
+    {
+      setup_channel 'error-gnu', silent => 1;
+      setup_channel 'error-gnu/warn', silent => 0, type => 'warning';
+      setup_channel 'error-gnits', silent => 1;
+      setup_channel 'portability', silent => 1;
+      setup_channel 'extra-portability', silent => 1;
+      setup_channel 'gnu', silent => 1;
+    }
+  else
+    {
+      prog_error "level '$name' not recognized";
+    }
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Automake::Channels>
+
+=head1 HISTORY
+
+Written by Alexandre Duret-Lutz E<lt>F<adl@gnu.org>E<gt>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Channels.pm b/lib/Automake/Channels.pm
new file mode 100644 (file)
index 0000000..724a114
--- /dev/null
@@ -0,0 +1,836 @@
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+###############################################################
+# The main copy of this file is in Automake's git repository. #
+# Updates should be sent to automake-patches@gnu.org.         #
+###############################################################
+
+package Automake::Channels;
+
+=head1 NAME
+
+Automake::Channels - support functions for error and warning management
+
+=head1 SYNOPSIS
+
+  use Automake::Channels;
+
+  # Register a channel to output warnings about unused variables.
+  register_channel 'unused', type => 'warning';
+
+  # Register a channel for system errors.
+  register_channel 'system', type => 'error', exit_code => 4;
+
+  # Output a message on channel 'unused'.
+  msg 'unused', "$file:$line", "unused variable '$var'";
+
+  # Make the 'unused' channel silent.
+  setup_channel 'unused', silent => 1;
+
+  # Turn on all channels of type 'warning'.
+  setup_channel_type 'warning', silent => 0;
+
+  # Redirect all channels to push messages on a Thread::Queue using
+  # the specified serialization key.
+  setup_channel_queue $queue, $key;
+
+  # Output a message pending in a Thread::Queue.
+  pop_channel_queue $queue;
+
+  # Treat all warnings as errors.
+  $warnings_are_errors = 1;
+
+  # Exit with the greatest exit code encountered so far.
+  exit $exit_code;
+
+=head1 DESCRIPTION
+
+This perl module provides support functions for handling diagnostic
+channels in programs.  Channels can be registered to convey fatal,
+error, warning, or debug messages.  Each channel has various options
+(e.g. is the channel silent, should duplicate messages be removed,
+etc.) that can also be overridden on a per-message basis.
+
+=cut
+
+use 5.006;
+use strict;
+use Exporter;
+use Carp;
+use File::Basename;
+
+use vars qw (@ISA @EXPORT %channels $me);
+
+@ISA = qw (Exporter);
+@EXPORT = qw ($exit_code $warnings_are_errors
+             &reset_local_duplicates &reset_global_duplicates
+             &register_channel &msg &exists_channel &channel_type
+             &setup_channel &setup_channel_type
+             &dup_channel_setup &drop_channel_setup
+             &buffer_messages &flush_messages
+             &setup_channel_queue &pop_channel_queue
+             US_GLOBAL US_LOCAL
+             UP_NONE UP_TEXT UP_LOC_TEXT);
+
+$me = basename $0;
+
+=head2 Global Variables
+
+=over 4
+
+=item C<$exit_code>
+
+The greatest exit code seen so far. C<$exit_code> is updated from
+the C<exit_code> options of C<fatal> and C<error> channels.
+
+=cut
+
+use vars qw ($exit_code);
+$exit_code = 0;
+
+=item C<$warnings_are_errors>
+
+Set this variable to 1 if warning messages should be treated as
+errors (i.e. if they should update C<$exit_code>).
+
+=cut
+
+use vars qw ($warnings_are_errors);
+$warnings_are_errors = 0;
+
+=back
+
+=head2 Constants
+
+=over 4
+
+=item C<UP_NONE>, C<UP_TEXT>, C<UP_LOC_TEXT>
+
+Possible values for the C<uniq_part> options.  This selects the part
+of the message that should be considered when filtering out duplicates.
+If C<UP_LOC_TEXT> is used, the location and the explanation message
+are used for filtering.  If C<UP_TEXT> is used, only the explanation
+message is used (so the same message will be filtered out if it appears
+at different locations).  C<UP_NONE> means that duplicate messages
+should be output.
+
+=cut
+
+use constant UP_NONE => 0;
+use constant UP_TEXT => 1;
+use constant UP_LOC_TEXT => 2;
+
+=item C<US_LOCAL>, C<US_GLOBAL>
+
+Possible values for the C<uniq_scope> options.
+Use C<US_GLOBAL> for error messages that should be printed only
+once during the execution of the program, C<US_LOCAL> for message that
+should be printed only once per file.  (Actually, C<Channels> does not
+do this now when files are changed, it relies on you calling
+C<reset_local_duplicates> when this happens.)
+
+=cut
+
+# possible values for uniq_scope
+use constant US_LOCAL => 0;
+use constant US_GLOBAL => 1;
+
+=back
+
+=head2 Options
+
+Channels accept the options described below.  These options can be
+passed as a hash to the C<register_channel>, C<setup_channel>, and C<msg>
+functions.  The possible keys, with their default value are:
+
+=over
+
+=item C<type =E<gt> 'warning'>
+
+The type of the channel.  One of C<'debug'>, C<'warning'>, C<'error'>, or
+C<'fatal'>.  Fatal messages abort the program when they are output.
+Error messages update the exit status.  Debug and warning messages are
+harmless, except that warnings are treated as errors if
+C<$warnings_are_errors> is set.
+
+=item C<exit_code =E<gt> 1>
+
+The value to update C<$exit_code> with when a fatal or error message
+is emitted.  C<$exit_code> is also updated for warnings output
+when C<$warnings_are_errors> is set.
+
+=item C<file =E<gt> \*STDERR>
+
+The file where the error should be output.
+
+=item C<silent =E<gt> 0>
+
+Whether the channel should be silent.  Use this do disable a
+category of warning, for instance.
+
+=item C<ordered =E<gt> 1>
+
+Whether, with multi-threaded execution, the message should be queued
+for ordered output.
+
+=item C<uniq_part =E<gt> UP_LOC_TEXT>
+
+The part of the message subject to duplicate filtering.  See the
+documentation for the C<UP_NONE>, C<UP_TEXT>, and C<UP_LOC_TEXT>
+constants above.
+
+C<uniq_part> can also be set to an arbitrary string that will be used
+instead of the message when considering duplicates.
+
+=item C<uniq_scope =E<gt> US_LOCAL>
+
+The scope of duplicate filtering.  See the documentation for the
+C<US_LOCAL>, and C<US_GLOBAL> constants above.
+
+=item C<header =E<gt> ''>
+
+A string to prepend to each message emitted through this channel.
+With partial messages, only the first part will have C<header>
+prepended.
+
+=item C<footer =E<gt> ''>
+
+A string to append to each message emitted through this channel.
+With partial messages, only the final part will have C<footer>
+appended.
+
+=item C<backtrace =E<gt> 0>
+
+Die with a stack backtrace after displaying the message.
+
+=item C<partial =E<gt> 0>
+
+When set, indicates a partial message that should
+be output along with the next message with C<partial> unset.
+Several partial messages can be stacked this way.
+
+Duplicate filtering will apply to the I<global> message resulting from
+all I<partial> messages, using the options from the last (non-partial)
+message.  Linking associated messages is the main reason to use this
+option.
+
+For instance the following messages
+
+  msg 'channel', 'foo:2', 'redefinition of A ...';
+  msg 'channel', 'foo:1', '... A previously defined here';
+  msg 'channel', 'foo:3', 'redefinition of A ...';
+  msg 'channel', 'foo:1', '... A previously defined here';
+
+will result in
+
+ foo:2: redefinition of A ...
+ foo:1: ... A previously defined here
+ foo:3: redefinition of A ...
+
+where the duplicate "I<... A previously defined here>" has been
+filtered out.
+
+Linking these messages using C<partial> as follows will prevent the
+fourth message to disappear.
+
+  msg 'channel', 'foo:2', 'redefinition of A ...', partial => 1;
+  msg 'channel', 'foo:1', '... A previously defined here';
+  msg 'channel', 'foo:3', 'redefinition of A ...', partial => 1;
+  msg 'channel', 'foo:1', '... A previously defined here';
+
+Note that because the stack of C<partial> messages is printed with the
+first non-C<partial> message, most options of C<partial> messages will
+be ignored.
+
+=back
+
+=cut
+
+use vars qw (%_default_options %_global_duplicate_messages
+            %_local_duplicate_messages);
+
+# Default options for a channel.
+%_default_options =
+  (
+   type => 'warning',
+   exit_code => 1,
+   file => \*STDERR,
+   silent => 0,
+   ordered => 1,
+   queue => 0,
+   queue_key => undef,
+   uniq_scope => US_LOCAL,
+   uniq_part => UP_LOC_TEXT,
+   header => '',
+   footer => '',
+   backtrace => 0,
+   partial => 0,
+   );
+
+# Filled with output messages as keys, to detect duplicates.
+# The value associated with each key is the number of occurrences
+# filtered out.
+%_local_duplicate_messages = ();
+%_global_duplicate_messages = ();
+
+sub _reset_duplicates (\%)
+{
+  my ($ref) = @_;
+  my $dup = 0;
+  foreach my $k (keys %$ref)
+    {
+      $dup += $ref->{$k};
+    }
+  %$ref = ();
+  return $dup;
+}
+
+
+=head2 Functions
+
+=over 4
+
+=item C<reset_local_duplicates ()>
+
+Reset local duplicate messages (see C<US_LOCAL>), and
+return the number of messages that have been filtered out.
+
+=cut
+
+sub reset_local_duplicates ()
+{
+  return _reset_duplicates %_local_duplicate_messages;
+}
+
+=item C<reset_global_duplicates ()>
+
+Reset local duplicate messages (see C<US_GLOBAL>), and
+return the number of messages that have been filtered out.
+
+=cut
+
+sub reset_global_duplicates ()
+{
+  return _reset_duplicates %_global_duplicate_messages;
+}
+
+sub _merge_options (\%%)
+{
+  my ($hash, %options) = @_;
+  local $_;
+
+  foreach (keys %options)
+    {
+      if (exists $hash->{$_})
+       {
+         $hash->{$_} = $options{$_}
+       }
+      else
+       {
+         confess "unknown option '$_'";
+       }
+    }
+  if ($hash->{'ordered'})
+    {
+      confess "fatal messages cannot be ordered"
+       if $hash->{'type'} eq 'fatal';
+      confess "backtrace cannot be output on ordered messages"
+       if $hash->{'backtrace'};
+    }
+}
+
+=item C<register_channel ($name, [%options])>
+
+Declare channel C<$name>, and override the default options
+with those listed in C<%options>.
+
+=cut
+
+sub register_channel ($;%)
+{
+  my ($name, %options) = @_;
+  my %channel_opts = %_default_options;
+  _merge_options %channel_opts, %options;
+  $channels{$name} = \%channel_opts;
+}
+
+=item C<exists_channel ($name)>
+
+Returns true iff channel C<$name> has been registered.
+
+=cut
+
+sub exists_channel ($)
+{
+  my ($name) = @_;
+  return exists $channels{$name};
+}
+
+=item C<channel_type ($name)>
+
+Returns the type of channel C<$name> if it has been registered.
+Returns the empty string otherwise.
+
+=cut
+
+sub channel_type ($)
+{
+  my ($name) = @_;
+  return $channels{$name}{'type'} if exists_channel $name;
+  return '';
+}
+
+# _format_sub_message ($LEADER, $MESSAGE)
+# ---------------------------------------
+# Split $MESSAGE at new lines and add $LEADER to each line.
+sub _format_sub_message ($$)
+{
+  my ($leader, $message) = @_;
+  return $leader . join ("\n" . $leader, split ("\n", $message)) . "\n";
+}
+
+# Store partial messages here. (See the 'partial' option.)
+use vars qw ($partial);
+$partial = '';
+
+# _format_message ($LOCATION, $MESSAGE, %OPTIONS)
+# -----------------------------------------------
+# Format the message.  Return a string ready to print.
+sub _format_message ($$%)
+{
+  my ($location, $message, %opts) = @_;
+  my $msg = ($partial eq '' ? $opts{'header'} : '') . $message
+           . ($opts{'partial'} ? '' : $opts{'footer'});
+  if (ref $location)
+    {
+      # If $LOCATION is a reference, assume it's an instance of the
+      # Automake::Location class and display contexts.
+      my $loc = $location->get || $me;
+      $msg = _format_sub_message ("$loc: ", $msg);
+      for my $pair ($location->get_contexts)
+       {
+         $msg .= _format_sub_message ($pair->[0] . ":   ", $pair->[1]);
+       }
+    }
+  else
+    {
+      $location ||= $me;
+      $msg = _format_sub_message ("$location: ", $msg);
+    }
+  return $msg;
+}
+
+# _enqueue ($QUEUE, $KEY, $UNIQ_SCOPE, $TO_FILTER, $MSG, $FILE)
+# -------------------------------------------------------------
+# Push message on a queue, to be processed by another thread.
+sub _enqueue ($$$$$$)
+{
+  my ($queue, $key, $uniq_scope, $to_filter, $msg, $file) = @_;
+  $queue->enqueue ($key, $msg, $to_filter, $uniq_scope);
+  confess "message queuing works only for STDERR"
+    if $file ne \*STDERR;
+}
+
+# _dequeue ($QUEUE)
+# -----------------
+# Pop a message from a queue, and print, similarly to how
+# _print_message would do it.  Return 0 if the queue is
+# empty.  Note that the key has already been dequeued.
+sub _dequeue ($)
+{
+  my ($queue) = @_;
+  my $msg = $queue->dequeue || return 0;
+  my $to_filter = $queue->dequeue;
+  my $uniq_scope = $queue->dequeue;
+  my $file = \*STDERR;
+
+  if ($to_filter ne '')
+    {
+      # Do we want local or global uniqueness?
+      my $dups;
+      if ($uniq_scope == US_LOCAL)
+       {
+         $dups = \%_local_duplicate_messages;
+       }
+      elsif ($uniq_scope == US_GLOBAL)
+       {
+         $dups = \%_global_duplicate_messages;
+       }
+      else
+       {
+         confess "unknown value for uniq_scope: " . $uniq_scope;
+       }
+
+      # Update the hash of messages.
+      if (exists $dups->{$to_filter})
+       {
+         ++$dups->{$to_filter};
+         return 1;
+       }
+      else
+       {
+         $dups->{$to_filter} = 0;
+       }
+    }
+  print $file $msg;
+  return 1;
+}
+
+
+# _print_message ($LOCATION, $MESSAGE, %OPTIONS)
+# ----------------------------------------------
+# Format the message, check duplicates, and print it.
+sub _print_message ($$%)
+{
+  my ($location, $message, %opts) = @_;
+
+  return 0 if ($opts{'silent'});
+
+  my $msg = _format_message ($location, $message, %opts);
+  if ($opts{'partial'})
+    {
+      # Incomplete message.  Store, don't print.
+      $partial .= $msg;
+      return;
+    }
+  else
+    {
+      # Prefix with any partial message send so far.
+      $msg = $partial . $msg;
+      $partial = '';
+    }
+
+  msg ('note', '', 'warnings are treated as errors', uniq_scope => US_GLOBAL)
+    if ($opts{'type'} eq 'warning' && $warnings_are_errors);
+
+  # Check for duplicate message if requested.
+  my $to_filter;
+  if ($opts{'uniq_part'} ne UP_NONE)
+    {
+      # Which part of the error should we match?
+      if ($opts{'uniq_part'} eq UP_TEXT)
+       {
+         $to_filter = $message;
+       }
+      elsif ($opts{'uniq_part'} eq UP_LOC_TEXT)
+       {
+         $to_filter = $msg;
+       }
+      else
+       {
+         $to_filter = $opts{'uniq_part'};
+       }
+
+      # Do we want local or global uniqueness?
+      my $dups;
+      if ($opts{'uniq_scope'} == US_LOCAL)
+       {
+         $dups = \%_local_duplicate_messages;
+       }
+      elsif ($opts{'uniq_scope'} == US_GLOBAL)
+       {
+         $dups = \%_global_duplicate_messages;
+       }
+      else
+       {
+         confess "unknown value for uniq_scope: " . $opts{'uniq_scope'};
+       }
+
+      # Update the hash of messages.
+      if (exists $dups->{$to_filter})
+       {
+         ++$dups->{$to_filter};
+         return 0;
+       }
+      else
+       {
+         $dups->{$to_filter} = 0;
+       }
+    }
+  my $file = $opts{'file'};
+  if ($opts{'ordered'} && $opts{'queue'})
+    {
+      _enqueue ($opts{'queue'}, $opts{'queue_key'}, $opts{'uniq_scope'},
+               $to_filter, $msg, $file);
+    }
+  else
+    {
+      print $file $msg;
+    }
+  return 1;
+}
+
+=item C<msg ($channel, $location, $message, [%options])>
+
+Emit a message on C<$channel>, overriding some options of the channel with
+those specified in C<%options>.  Obviously C<$channel> must have been
+registered with C<register_channel>.
+
+C<$message> is the text of the message, and C<$location> is a location
+associated to the message.
+
+For instance to complain about some unused variable C<mumble>
+declared at line 10 in F<foo.c>, one could do:
+
+  msg 'unused', 'foo.c:10', "unused variable 'mumble'";
+
+If channel C<unused> is not silent (and if this message is not a duplicate),
+the following would be output:
+
+  foo.c:10: unused variable 'mumble'
+
+C<$location> can also be an instance of C<Automake::Location>.  In this
+case, the stack of contexts will be displayed in addition.
+
+If C<$message> contains newline characters, C<$location> is prepended
+to each line.  For instance,
+
+  msg 'error', 'somewhere', "1st line\n2nd line";
+
+becomes
+
+  somewhere: 1st line
+  somewhere: 2nd line
+
+If C<$location> is an empty string, it is replaced by the name of the
+program.  Actually, if you don't use C<%options>, you can even
+elide the empty C<$location>.  Thus
+
+  msg 'fatal', '', 'fatal error';
+  msg 'fatal', 'fatal error';
+
+both print
+
+  progname: fatal error
+
+=cut
+
+
+use vars qw (@backlog %buffering);
+
+# See buffer_messages() and flush_messages() below.
+%buffering = ();       # The map of channel types to buffer.
+@backlog = ();         # The buffer of messages.
+
+sub msg ($$;$%)
+{
+  my ($channel, $location, $message, %options) = @_;
+
+  if (! defined $message)
+    {
+      $message = $location;
+      $location = '';
+    }
+
+  confess "unknown channel $channel" unless exists $channels{$channel};
+
+  my %opts = %{$channels{$channel}};
+  _merge_options (%opts, %options);
+
+  if (exists $buffering{$opts{'type'}})
+    {
+      push @backlog, [$channel, $location->clone, $message, %options];
+      return;
+    }
+
+  # Print the message if needed.
+  if (_print_message ($location, $message, %opts))
+    {
+      # Adjust exit status.
+      if ($opts{'type'} eq 'error'
+         || $opts{'type'} eq 'fatal'
+         || ($opts{'type'} eq 'warning' && $warnings_are_errors))
+       {
+         my $es = $opts{'exit_code'};
+         $exit_code = $es if $es > $exit_code;
+       }
+
+      # Die on fatal messages.
+      confess if $opts{'backtrace'};
+      if ($opts{'type'} eq 'fatal')
+        {
+         # flush messages explicitly here, needed in worker threads.
+         STDERR->flush;
+         exit $exit_code;
+       }
+    }
+}
+
+
+=item C<setup_channel ($channel, %options)>
+
+Override the options of C<$channel> with those specified by C<%options>.
+
+=cut
+
+sub setup_channel ($%)
+{
+  my ($name, %opts) = @_;
+  confess "unknown channel $name" unless exists $channels{$name};
+  _merge_options %{$channels{$name}}, %opts;
+}
+
+=item C<setup_channel_type ($type, %options)>
+
+Override the options of any channel of type C<$type>
+with those specified by C<%options>.
+
+=cut
+
+sub setup_channel_type ($%)
+{
+  my ($type, %opts) = @_;
+  foreach my $channel (keys %channels)
+    {
+      setup_channel $channel, %opts
+       if $channels{$channel}{'type'} eq $type;
+    }
+}
+
+=item C<dup_channel_setup ()>, C<drop_channel_setup ()>
+
+Sometimes it is necessary to make temporary modifications to channels.
+For instance one may want to disable a warning while processing a
+particular file, and then restore the initial setup.  These two
+functions make it easy: C<dup_channel_setup ()> saves a copy of the
+current configuration for later restoration by
+C<drop_channel_setup ()>.
+
+You can think of this as a stack of configurations whose first entry
+is the active one.  C<dup_channel_setup ()> duplicates the first
+entry, while C<drop_channel_setup ()> just deletes it.
+
+=cut
+
+use vars qw (@_saved_channels @_saved_werrors);
+@_saved_channels = ();
+@_saved_werrors = ();
+
+sub dup_channel_setup ()
+{
+  my %channels_copy;
+  foreach my $k1 (keys %channels)
+    {
+      $channels_copy{$k1} = {%{$channels{$k1}}};
+    }
+  push @_saved_channels, \%channels_copy;
+  push @_saved_werrors, $warnings_are_errors;
+}
+
+sub drop_channel_setup ()
+{
+  my $saved = pop @_saved_channels;
+  %channels = %$saved;
+  $warnings_are_errors = pop @_saved_werrors;
+}
+
+=item C<buffer_messages (@types)>, C<flush_messages ()>
+
+By default, when C<msg> is called, messages are processed immediately.
+
+Sometimes it is necessary to delay the output of messages.
+For instance you might want to make diagnostics before
+channels have been completely configured.
+
+After C<buffer_messages(@types)> has been called, messages sent with
+C<msg> to a channel whose type is listed in C<@types> will be stored in a
+list for later processing.
+
+This backlog of messages is processed when C<flush_messages> is
+called, with the current channel options (not the options in effect,
+at the time of C<msg>).  So for instance, if some channel was silenced
+in the meantime, messages to this channel will not be printed.
+
+C<flush_messages> cancels the effect of C<buffer_messages>.  Following
+calls to C<msg> are processed immediately as usual.
+
+=cut
+
+sub buffer_messages (@)
+{
+  foreach my $type (@_)
+    {
+      $buffering{$type} = 1;
+    }
+}
+
+sub flush_messages ()
+{
+  %buffering = ();
+  foreach my $args (@backlog)
+    {
+      &msg (@$args);
+    }
+  @backlog = ();
+}
+
+=item C<setup_channel_queue ($queue, $key)>
+
+Set the queue to fill for each channel that is ordered,
+and the key to use for serialization.
+
+=cut
+sub setup_channel_queue ($$)
+{
+  my ($queue, $key) = @_;
+  foreach my $channel (keys %channels)
+    {
+      setup_channel $channel, queue => $queue, queue_key => $key
+        if $channels{$channel}{'ordered'};
+    }
+}
+
+=item C<pop_channel_queue ($queue)>
+
+pop a message off the $queue; the key has already been popped.
+
+=cut
+sub pop_channel_queue ($)
+{
+  my ($queue) = @_;
+  return _dequeue ($queue);
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Automake::Location>
+
+=head1 HISTORY
+
+Written by Alexandre Duret-Lutz E<lt>F<adl@gnu.org>E<gt>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Condition.pm b/lib/Automake/Condition.pm
new file mode 100644 (file)
index 0000000..cc753d9
--- /dev/null
@@ -0,0 +1,657 @@
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Condition;
+
+use 5.006;
+use strict;
+use Carp;
+
+require Exporter;
+use vars '@ISA', '@EXPORT_OK';
+@ISA = qw/Exporter/;
+@EXPORT_OK = qw/TRUE FALSE reduce_and reduce_or/;
+
+=head1 NAME
+
+Automake::Condition - record a conjunction of conditionals
+
+=head1 SYNOPSIS
+
+  use Automake::Condition;
+
+  # Create a condition to represent "COND1 and not COND2".
+  my $cond = new Automake::Condition "COND1_TRUE", "COND2_FALSE";
+  # Create a condition to represent "not COND3".
+  my $other = new Automake::Condition "COND3_FALSE";
+
+  # Create a condition to represent
+  #   "COND1 and not COND2 and not COND3".
+  my $both = $cond->merge ($other);
+
+  # Likewise, but using a list of conditional strings
+  my $both2 = $cond->merge_conds ("COND3_FALSE");
+
+  # Strip from $both any subconditions which are in $other.
+  # This is the opposite of merge.
+  $cond = $both->strip ($other);
+
+  # Return the list of conditions ("COND1_TRUE", "COND2_FALSE"):
+  my @conds = $cond->conds;
+
+  # Is $cond always true?  (Not in this example)
+  if ($cond->true) { ... }
+
+  # Is $cond always false? (Not in this example)
+  if ($cond->false) { ... }
+
+  # Return the list of conditionals as a string:
+  #  "COND1_TRUE COND2_FALSE"
+  my $str = $cond->string;
+
+  # Return the list of conditionals as a human readable string:
+  #  "COND1 and !COND2"
+  my $str = $cond->human;
+
+  # Return the list of conditionals as a AC_SUBST-style string:
+  #  "@COND1_TRUE@@COND2_FALSE@"
+  my $subst = $cond->subst_string;
+
+  # Is $cond true when $both is true?  (Yes in this example)
+  if ($cond->true_when ($both)) { ... }
+
+  # Is $cond redundant w.r.t. {$other, $both}?
+  # (Yes in this example)
+  if ($cond->redundant_wrt ($other, $both)) { ... }
+
+  # Does $cond imply any of {$other, $both}?
+  # (Not in this example)
+  if ($cond->implies_any ($other, $both)) { ... }
+
+  # Remove superfluous conditionals assuming they will eventually
+  # be multiplied together.
+  # (Returns @conds = ($both) in this example, because
+  # $other and $cond are implied by $both.)
+  @conds = Automake::Condition::reduce_and ($other, $both, $cond);
+
+  # Remove superfluous conditionals assuming they will eventually
+  # be summed together.
+  # (Returns @conds = ($cond, $other) in this example, because
+  # $both is a subset condition of $cond: $cond is true whenever $both
+  # is true.)
+  @conds = Automake::Condition::reduce_or ($other, $both, $cond);
+
+  # Invert a Condition.  This returns a list of Conditions.
+  @conds = $both->not;
+
+=head1 DESCRIPTION
+
+A C<Condition> is a conjunction of conditionals (i.e., atomic conditions
+defined in F<configure.ac> by C<AM_CONDITIONAL>.  In Automake they
+are used to represent the conditions into which F<Makefile> variables and
+F<Makefile> rules are defined.
+
+If the variable C<VAR> is defined as
+
+  if COND1
+    if COND2
+      VAR = value
+    endif
+  endif
+
+then it will be associated a C<Condition> created with
+the following statement.
+
+  new Automake::Condition "COND1_TRUE", "COND2_TRUE";
+
+Remember that a C<Condition> is a I<conjunction> of conditionals, so
+the above C<Condition> means C<VAR> is defined when C<COND1>
+B<and> C<COND2> are true. There is no way to express disjunctions
+(i.e., I<or>s) with this class (but see L<DisjConditions>).
+
+Another point worth to mention is that each C<Condition> object is
+unique with respect to its conditionals.  Two C<Condition> objects
+created for the same set of conditionals will have the same address.
+This makes it easy to compare C<Condition>s: just compare the
+references.
+
+  my $c1 = new Automake::Condition "COND1_TRUE", "COND2_TRUE";
+  my $c2 = new Automake::Condition "COND1_TRUE", "COND2_TRUE";
+  $c1 == $c2;  # True!
+
+=head2 Methods
+
+=over 4
+
+=item C<$cond = new Automake::Condition [@conds]>
+
+Return a C<Condition> objects for the conjunctions of conditionals
+listed in C<@conds> as strings.
+
+An item in C<@conds> should be either C<"FALSE">, C<"TRUE">, or have
+the form C<"NAME_FALSE"> or C<"NAME_TRUE"> where C<NAME> can be
+anything (in practice C<NAME> should be the name of a conditional
+declared in F<configure.ac> with C<AM_CONDITIONAL>, but it's not
+C<Automake::Condition>'s responsibility to ensure this).
+
+An empty C<@conds> means C<"TRUE">.
+
+As explained previously, the reference (object) returned is unique
+with respect to C<@conds>.  For this purpose, duplicate elements are
+ignored, and C<@conds> is rewritten as C<("FALSE")> if it contains
+C<"FALSE"> or two contradictory conditionals (such as C<"NAME_FALSE">
+and C<"NAME_TRUE">.)
+
+Therefore the following two statements create the same object (they
+both create the C<"FALSE"> condition).
+
+  my $c3 = new Automake::Condition "COND1_TRUE", "COND1_FALSE";
+  my $c4 = new Automake::Condition "COND2_TRUE", "FALSE";
+  $c3 == $c4;   # True!
+  $c3 == FALSE; # True!
+
+=cut
+
+# Keys in this hash are conditional strings. Values are the
+# associated object conditions.  This is used by 'new' to reuse
+# Condition objects with identical conditionals.
+use vars '%_condition_singletons';
+# Do NOT reset this hash here.  It's already empty by default,
+# and any setting would otherwise occur AFTER the 'TRUE' and 'FALSE'
+# constants definitions.
+#   %_condition_singletons = ();
+
+sub new ($;@)
+{
+  my ($class, @conds) = @_;
+  my $self = {
+    hash => {},
+  };
+  bless $self, $class;
+
+  for my $cond (@conds)
+    {
+      # Catch some common programming errors:
+      # - A Condition passed to new
+      confess "'$cond' is a reference, expected a string" if ref $cond;
+      # - A Condition passed as a string to new
+      confess "'$cond' does not look like a condition" if $cond =~ /::/;
+    }
+
+  # Accept strings like "FOO BAR" as shorthand for ("FOO", "BAR").
+  @conds = map { split (' ', $_) } @conds;
+
+  for my $cond (@conds)
+    {
+      next if $cond eq 'TRUE';
+
+      # Detect cases when @conds can be simplified to FALSE.
+      if (($cond eq 'FALSE' && $#conds > 0)
+         || ($cond =~ /^(.*)_TRUE$/ && exists $self->{'hash'}{"${1}_FALSE"})
+         || ($cond =~ /^(.*)_FALSE$/ && exists $self->{'hash'}{"${1}_TRUE"}))
+       {
+         return &FALSE;
+       }
+
+      $self->{'hash'}{$cond} = 1;
+    }
+
+  my $key = $self->string;
+  if (exists $_condition_singletons{$key})
+    {
+      return $_condition_singletons{$key};
+    }
+  $_condition_singletons{$key} = $self;
+  return $self;
+}
+
+=item C<$newcond = $cond-E<gt>merge (@otherconds)>
+
+Return a new condition which is the conjunction of
+C<$cond> and C<@otherconds>.
+
+=cut
+
+sub merge ($@)
+{
+  my ($self, @otherconds) = @_;
+  new Automake::Condition (map { $_->conds } ($self, @otherconds));
+}
+
+=item C<$newcond = $cond-E<gt>merge_conds (@conds)>
+
+Return a new condition which is the conjunction of C<$cond> and
+C<@conds>, where C<@conds> is a list of conditional strings, as
+passed to C<new>.
+
+=cut
+
+sub merge_conds ($@)
+{
+  my ($self, @conds) = @_;
+  new Automake::Condition $self->conds, @conds;
+}
+
+=item C<$newcond = $cond-E<gt>strip ($minuscond)>
+
+Return a new condition which has all the conditionals of C<$cond>
+except those of C<$minuscond>.  This is the opposite of C<merge>.
+
+=cut
+
+sub strip ($$)
+{
+  my ($self, $minus) = @_;
+  my @res = grep { not $minus->_has ($_) } $self->conds;
+  return new Automake::Condition @res;
+}
+
+=item C<@list = $cond-E<gt>conds>
+
+Return the set of conditionals defining C<$cond>, as strings.  Note that
+this might not be exactly the list passed to C<new> (or a
+concatenation of such lists if C<merge> was used), because of the
+cleanup mentioned in C<new>'s description.
+
+For instance C<$c3-E<gt>conds> will simply return C<("FALSE")>.
+
+=cut
+
+sub conds ($ )
+{
+  my ($self) = @_;
+  my @conds = keys %{$self->{'hash'}};
+  return ("TRUE") unless @conds;
+  return sort @conds;
+}
+
+# Undocumented, shouldn't be needed outside of this class.
+sub _has ($$)
+{
+  my ($self, $cond) = @_;
+  return exists $self->{'hash'}{$cond};
+}
+
+=item C<$cond-E<gt>false>
+
+Return 1 iff this condition is always false.
+
+=cut
+
+sub false ($ )
+{
+  my ($self) = @_;
+  return $self->_has ('FALSE');
+}
+
+=item C<$cond-E<gt>true>
+
+Return 1 iff this condition is always true.
+
+=cut
+
+sub true ($ )
+{
+  my ($self) = @_;
+  return 0 == keys %{$self->{'hash'}};
+}
+
+=item C<$cond-E<gt>string>
+
+Build a string which denotes the condition.
+
+For instance using the C<$cond> definition from L<SYNOPSYS>,
+C<$cond-E<gt>string> will return C<"COND1_TRUE COND2_FALSE">.
+
+=cut
+
+sub string ($ )
+{
+  my ($self) = @_;
+
+  return $self->{'string'} if defined $self->{'string'};
+
+  my $res = '';
+  if ($self->false)
+    {
+      $res = 'FALSE';
+    }
+  else
+    {
+      $res = join (' ', $self->conds);
+    }
+  $self->{'string'} = $res;
+  return $res;
+}
+
+=item C<$cond-E<gt>human>
+
+Build a human readable string which denotes the condition.
+
+For instance using the C<$cond> definition from L<SYNOPSYS>,
+C<$cond-E<gt>string> will return C<"COND1 and !COND2">.
+
+=cut
+
+sub _to_human ($ )
+{
+  my ($s) = @_;
+  if ($s =~ /^(.*)_(TRUE|FALSE)$/)
+    {
+      return (($2 eq 'FALSE') ? '!' : '') . $1;
+    }
+  else
+    {
+      return $s;
+    }
+}
+
+sub human ($ )
+{
+  my ($self) = @_;
+
+  return $self->{'human'} if defined $self->{'human'};
+
+  my $res = '';
+  if ($self->false)
+    {
+      $res = 'FALSE';
+    }
+  else
+    {
+      $res = join (' and ', map { _to_human $_ } $self->conds);
+    }
+  $self->{'human'} = $res;
+  return $res;
+}
+
+=item C<$cond-E<gt>subst_string>
+
+Build a C<AC_SUBST>-style string for output in F<Makefile.in>.
+
+For instance using the C<$cond> definition from L<SYNOPSYS>,
+C<$cond-E<gt>subst_string> will return C<"@COND1_TRUE@@COND2_FALSE@">.
+
+=cut
+
+sub subst_string ($ )
+{
+  my ($self) = @_;
+
+  return $self->{'subst_string'} if defined $self->{'subst_string'};
+
+  my $res = '';
+  if ($self->false)
+    {
+      $res = '#';
+    }
+  elsif (! $self->true)
+    {
+      $res = '@' . join ('@@', sort $self->conds) . '@';
+    }
+  $self->{'subst_string'} = $res;
+  return $res;
+}
+
+=item C<$cond-E<gt>true_when ($when)>
+
+Return 1 iff C<$cond> is true when C<$when> is true.
+Return 0 otherwise.
+
+Using the definitions from L<SYNOPSYS>, C<$cond> is true
+when C<$both> is true, but the converse is wrong.
+
+=cut
+
+sub true_when ($$)
+{
+  my ($self, $when) = @_;
+
+  # Nothing is true when FALSE (not even FALSE itself, but it
+  # shouldn't hurt if you decide to change that).
+  return 0 if $self->false || $when->false;
+
+  # If we are true, we stay true when $when is true :)
+  return 1 if $self->true;
+
+  # $SELF is true under $WHEN if each conditional component of $SELF
+  # exists in $WHEN.
+  foreach my $cond ($self->conds)
+    {
+      return 0 unless $when->_has ($cond);
+    }
+  return 1;
+}
+
+=item C<$cond-E<gt>redundant_wrt (@conds)>
+
+Return 1 iff C<$cond> is true for any condition in C<@conds>.
+If @conds is empty, return 1 iff C<$cond> is C<FALSE>.
+Return 0 otherwise.
+
+=cut
+
+sub redundant_wrt ($@)
+{
+  my ($self, @conds) = @_;
+
+  foreach my $cond (@conds)
+    {
+      return 1 if $self->true_when ($cond);
+    }
+  return $self->false;
+}
+
+=item C<$cond-E<gt>implies_any (@conds)>
+
+Return 1 iff C<$cond> implies any of the conditions in C<@conds>.
+Return 0 otherwise.
+
+=cut
+
+sub implies_any ($@)
+{
+  my ($self, @conds) = @_;
+
+  foreach my $cond (@conds)
+    {
+      return 1 if $cond->true_when ($self);
+    }
+  return 0;
+}
+
+=item C<$cond-E<gt>not>
+
+Return a negation of C<$cond> as a list of C<Condition>s.
+This list should be used to construct a C<DisjConditions>
+(we cannot return a C<DisjConditions> from C<Automake::Condition>,
+because that would make these two packages interdependent).
+
+=cut
+
+sub not ($ )
+{
+  my ($self) = @_;
+  return @{$self->{'not'}} if defined $self->{'not'};
+  my @res =
+    map { new Automake::Condition &conditional_negate ($_) } $self->conds;
+  $self->{'not'} = [@res];
+  return @res;
+}
+
+=item C<$cond-E<gt>multiply (@conds)>
+
+Assumption: C<@conds> represent a disjunction of conditions.
+
+Return the result of multiplying C<$cond> with that disjunction.
+The result will be a list of conditions suitable to construct a
+C<DisjConditions>.
+
+=cut
+
+sub multiply ($@)
+{
+  my ($self, @set) = @_;
+  my %res = ();
+  for my $cond (@set)
+    {
+      my $ans = $self->merge ($cond);
+      $res{$ans} = $ans;
+    }
+
+  # FALSE can always be removed from a disjunction.
+  delete $res{FALSE};
+
+  # Now, $self is a common factor of the remaining conditions.
+  # If one of the conditions is $self, we can discard the rest.
+  return ($self, ())
+    if exists $res{$self};
+
+  return (values %res);
+}
+
+=back
+
+=head2 Other helper functions
+
+=over 4
+
+=item C<TRUE>
+
+The C<"TRUE"> conditional.
+
+=item C<FALSE>
+
+The C<"FALSE"> conditional.
+
+=cut
+
+use constant TRUE => new Automake::Condition "TRUE";
+use constant FALSE => new Automake::Condition "FALSE";
+
+=item C<reduce_and (@conds)>
+
+Return a subset of @conds with the property that the conjunction of
+the subset is the same as the conjunction of @conds.  For example, if
+both C<COND1_TRUE COND2_TRUE> and C<COND1_TRUE> are in the list,
+discard the latter.  If the input list is empty, return C<(TRUE)>.
+
+=cut
+
+sub reduce_and (@)
+{
+  my (@conds) = @_;
+  my @ret = ();
+  my $cond;
+  while (@conds > 0)
+    {
+      $cond = shift @conds;
+
+      # FALSE is absorbent.
+      return FALSE
+       if $cond == FALSE;
+
+      if (! $cond->redundant_wrt (@ret, @conds))
+       {
+         push (@ret, $cond);
+       }
+    }
+
+  return TRUE if @ret == 0;
+  return @ret;
+}
+
+=item C<reduce_or (@conds)>
+
+Return a subset of @conds with the property that the disjunction of
+the subset is equivalent to the disjunction of @conds.  For example,
+if both C<COND1_TRUE COND2_TRUE> and C<COND1_TRUE> are in the list,
+discard the former.  If the input list is empty, return C<(FALSE)>.
+
+=cut
+
+sub reduce_or (@)
+{
+  my (@conds) = @_;
+  my @ret = ();
+  my $cond;
+  while (@conds > 0)
+    {
+      $cond = shift @conds;
+
+      next
+       if $cond == FALSE;
+      return TRUE
+       if $cond == TRUE;
+
+      push (@ret, $cond)
+       unless $cond->implies_any (@ret, @conds);
+    }
+
+  return FALSE if @ret == 0;
+  return @ret;
+}
+
+=item C<conditional_negate ($condstr)>
+
+Negate a conditional string.
+
+=cut
+
+sub conditional_negate ($)
+{
+  my ($cond) = @_;
+
+  $cond =~ s/TRUE$/TRUEO/;
+  $cond =~ s/FALSE$/TRUE/;
+  $cond =~ s/TRUEO$/FALSE/;
+
+  return $cond;
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Automake::DisjConditions>.
+
+=head1 HISTORY
+
+C<AM_CONDITIONAL>s and supporting code were added to Automake 1.1o by
+Ian Lance Taylor <ian@cygnus.org> in 1997.  Since then it has been
+improved by Tom Tromey <tromey@redhat.com>, Richard Boulton
+<richard@tartarus.org>, Raja R Harinath <harinath@cs.umn.edu>,
+Akim Demaille <akim@epita.fr>, and  Alexandre Duret-Lutz <adl@gnu.org>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Config.in b/lib/Automake/Config.in
new file mode 100644 (file)
index 0000000..bbf55ac
--- /dev/null
@@ -0,0 +1,55 @@
+#  -*- Perl -*-
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+# @configure_input@
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Config;
+use strict;
+
+use 5.006;
+require Exporter;
+
+our @ISA = qw (Exporter);
+our @EXPORT = qw ($APIVERSION $PACKAGE $PACKAGE_BUGREPORT $VERSION
+                  $RELEASE_YEAR $libdir $perl_threads);
+
+# Parameters set by configure.  Not to be changed.  NOTE: assign
+# VERSION as string so that e.g. version 0.30 will print correctly.
+our $APIVERSION = '@APIVERSION@';
+our $PACKAGE = '@PACKAGE@';
+our $PACKAGE_BUGREPORT = '@PACKAGE_BUGREPORT@';
+our $VERSION = '@VERSION@';
+our $RELEASE_YEAR = '@RELEASE_YEAR@';
+our $libdir = '@datadir@/@PACKAGE@-@APIVERSION@';
+our $perl_threads = @PERL_THREADS@;
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Configure_ac.pm b/lib/Automake/Configure_ac.pm
new file mode 100644 (file)
index 0000000..53e62a5
--- /dev/null
@@ -0,0 +1,127 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+###############################################################
+# The main copy of this file is in Automake's git repository. #
+# Updates should be sent to automake-patches@gnu.org.         #
+###############################################################
+
+package Automake::Configure_ac;
+
+use 5.006;
+use strict;
+use Exporter;
+use Automake::Channels;
+use Automake::ChannelDefs;
+
+use vars qw (@ISA @EXPORT);
+
+@ISA = qw (Exporter);
+@EXPORT = qw (&find_configure_ac &require_configure_ac);
+
+=head1 NAME
+
+Automake::Configure_ac - Locate configure.ac or configure.in.
+
+=head1 SYNOPSIS
+
+  use Automake::Configure_ac;
+
+  # Try to locate configure.in or configure.ac in the current
+  # directory.  It may be absent.  Complain if both files exist.
+  my $file_name = find_configure_ac;
+
+  # Likewise, but bomb out if the file does not exist.
+  my $file_name = require_configure_ac;
+
+  # Likewise, but in $dir.
+  my $file_name = find_configure_ac ($dir);
+  my $file_name = require_configure_ac ($dir);
+
+=over 4
+
+=back
+
+=head2 Functions
+
+=over 4
+
+=item C<$configure_ac = find_configure_ac ([$directory])>
+
+Find a F<configure.ac> or F<configure.in> file in C<$directory>,
+defaulting to the current directory.  Complain if both files are present.
+Return the name of the file found, or the former if neither is present.
+
+=cut
+
+sub find_configure_ac (;@)
+{
+  my ($directory) = @_;
+  $directory ||= '.';
+  my $configure_ac =
+    File::Spec->canonpath (File::Spec->catfile ($directory, 'configure.ac'));
+  my $configure_in =
+    File::Spec->canonpath (File::Spec->catfile ($directory, 'configure.in'));
+
+  if (-f $configure_ac)
+    {
+      if (-f $configure_in)
+       {
+         msg ('unsupported',
+              "'$configure_ac' and '$configure_in' both present.\n"
+              . "proceeding with '$configure_ac'");
+       }
+      return $configure_ac
+    }
+  elsif (-f $configure_in)
+    {
+      return $configure_in;
+    }
+  return $configure_ac;
+}
+
+
+=item C<$configure_ac = require_configure_ac ([$directory])>
+
+Like C<find_configure_ac>, but fail if neither is present.
+
+=cut
+
+sub require_configure_ac (;$)
+{
+  my $res = find_configure_ac (@_);
+  fatal "'configure.ac' or 'configure.in' is required"
+    unless -f $res;
+  return $res
+}
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/DisjConditions.pm b/lib/Automake/DisjConditions.pm
new file mode 100644 (file)
index 0000000..e449121
--- /dev/null
@@ -0,0 +1,557 @@
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::DisjConditions;
+
+use 5.006;
+use strict;
+use Carp;
+use Automake::Condition qw/TRUE FALSE/;
+
+=head1 NAME
+
+Automake::DisjConditions - record a disjunction of Conditions
+
+=head1 SYNOPSIS
+
+  use Automake::Condition;
+  use Automake::DisjConditions;
+
+  # Create a Condition to represent "COND1 and not COND2".
+  my $cond = new Automake::Condition "COND1_TRUE", "COND2_FALSE";
+  # Create a Condition to represent "not COND3".
+  my $other = new Automake::Condition "COND3_FALSE";
+
+  # Create a DisjConditions to represent
+  #   "(COND1 and not COND2) or (not COND3)"
+  my $set = new Automake::DisjConditions $cond, $other;
+
+  # Return the list of Conditions involved in $set.
+  my @conds = $set->conds;
+
+  # Return one of the Condition involved in $set.
+  my $cond = $set->one_cond;
+
+  # Return true iff $set is always true (i.e. its subconditions
+  # cover all cases).
+  if ($set->true) { ... }
+
+  # Return false iff $set is always false (i.e. is empty, or contains
+  # only false conditions).
+  if ($set->false) { ... }
+
+  # Return a string representing the DisjConditions.
+  #   "COND1_TRUE COND2_FALSE | COND3_FALSE"
+  my $str = $set->string;
+
+  # Return a human readable string representing the DisjConditions.
+  #   "(COND1 and !COND2) or (!COND3)"
+  my $str = $set->human;
+
+  # Merge (OR) several DisjConditions.
+  my $all = $set->merge($set2, $set3, ...)
+
+  # Invert a DisjConditions, i.e., create a new DisjConditions
+  # that complements $set.
+  my $inv = $set->invert;
+
+  # Multiply two DisjConditions.
+  my $prod = $set1->multiply ($set2);
+
+  # Return the subconditions of a DisjConditions with respect to
+  # a Condition.  See the description for a real example.
+  my $subconds = $set->sub_conditions ($cond);
+
+  # Check whether a new definition in condition $cond would be
+  # ambiguous w.r.t. existing definitions in $set.
+  ($msg, $ambig_cond) = $set->ambiguous_p ($what, $cond);
+
+=head1 DESCRIPTION
+
+A C<DisjConditions> is a disjunction of C<Condition>s.  In Automake
+they are used to represent the conditions into which Makefile
+variables and Makefile rules are defined.
+
+If the variable C<VAR> is defined as
+
+  if COND1
+    if COND2
+      VAR = value1
+    endif
+  endif
+  if !COND3
+    if COND4
+      VAR = value2
+    endif
+  endif
+
+then it will be associated a C<DisjConditions> created with
+the following statement.
+
+  new Automake::DisjConditions
+    (new Automake::Condition ("COND1_TRUE", "COND2_TRUE"),
+     new Automake::Condition ("COND3_FALSE", "COND4_TRUE"));
+
+As you can see, a C<DisjConditions> is made from a list of
+C<Condition>s.  Since C<DisjConditions> is a disjunction, and
+C<Condition> is a conjunction, the above can be read as
+follows.
+
+  (COND1 and COND2) or ((not COND3) and COND4)
+
+That's indeed the condition in which C<VAR> has a value.
+
+Like C<Condition> objects, a C<DisjConditions> object is unique
+with respect to its conditions.  Two C<DisjConditions> objects created
+for the same set of conditions will have the same address.  This makes
+it easy to compare C<DisjConditions>s: just compare the references.
+
+=head2 Methods
+
+=over 4
+
+=item C<$set = new Automake::DisjConditions [@conds]>
+
+Create a C<DisjConditions> object from the list of C<Condition>
+objects passed in arguments.
+
+If the C<@conds> list is empty, the C<DisjConditions> is assumed to be
+false.
+
+As explained previously, the reference (object) returned is unique
+with respect to C<@conds>.  For this purpose, duplicate elements are
+ignored.
+
+=cut
+
+# Keys in this hash are DisjConditions strings. Values are the
+# associated object DisjConditions.  This is used by 'new' to reuse
+# DisjConditions objects with identical conditions.
+use vars '%_disjcondition_singletons';
+
+sub new ($;@)
+{
+  my ($class, @conds) = @_;
+  my @filtered_conds = ();
+  for my $cond (@conds)
+    {
+      confess "'$cond' isn't a reference" unless ref $cond;
+      confess "'$cond' isn't an Automake::Condition"
+       unless $cond->isa ("Automake::Condition");
+
+      # This is a disjunction of conditions, so we drop
+      # false conditions.  We'll always treat an "empty"
+      # DisjConditions as false for this reason.
+      next if $cond->false;
+
+      push @filtered_conds, $cond;
+    }
+
+  my $string;
+  if (@filtered_conds)
+    {
+      @filtered_conds = sort { $a->string cmp $b->string } @filtered_conds;
+      $string = join (' | ', map { $_->string } @filtered_conds);
+    }
+  else
+    {
+      $string = 'FALSE';
+    }
+
+  # Return any existing identical DisjConditions.
+  my $me = $_disjcondition_singletons{$string};
+  return $me if $me;
+
+  # Else, create a new DisjConditions.
+
+  # Store conditions as keys AND as values, because blessed
+  # objects are converted to strings when used as keys (so
+  # at least we still have the value when we need to call
+  # a method).
+  my %h = map {$_ => $_} @filtered_conds;
+
+  my $self = {
+    hash => \%h,
+    string => $string,
+    conds => \@filtered_conds,
+  };
+  bless $self, $class;
+
+  $_disjcondition_singletons{$string} = $self;
+  return $self;
+}
+
+
+=item C<CLONE>
+
+Internal special subroutine to fix up the self hashes in
+C<%_disjcondition_singletons> upon thread creation.  C<CLONE> is invoked
+automatically with ithreads from Perl 5.7.2 or later, so if you use this
+module with earlier versions of Perl, it is not thread-safe.
+
+=cut
+
+sub CLONE
+{
+  foreach my $self (values %_disjcondition_singletons)
+    {
+      my %h = map { $_ => $_ } @{$self->{'conds'}};
+      $self->{'hash'} = \%h;
+    }
+}
+
+
+=item C<@conds = $set-E<gt>conds>
+
+Return the list of C<Condition> objects involved in C<$set>.
+
+=cut
+
+sub conds ($ )
+{
+  my ($self) = @_;
+  return @{$self->{'conds'}};
+}
+
+=item C<$cond = $set-E<gt>one_cond>
+
+Return one C<Condition> object involved in C<$set>.
+
+=cut
+
+sub one_cond ($)
+{
+  my ($self) = @_;
+  return (%{$self->{'hash'}},)[1];
+}
+
+=item C<$et = $set-E<gt>false>
+
+Return 1 iff the C<DisjConditions> object is always false (i.e., if it
+is empty, or if it contains only false C<Condition>s). Return 0
+otherwise.
+
+=cut
+
+sub false ($ )
+{
+  my ($self) = @_;
+  return 0 == keys %{$self->{'hash'}};
+}
+
+=item C<$et = $set-E<gt>true>
+
+Return 1 iff the C<DisjConditions> object is always true (i.e. covers all
+conditions). Return 0 otherwise.
+
+=cut
+
+sub true ($ )
+{
+  my ($self) = @_;
+  return $self->invert->false;
+}
+
+=item C<$str = $set-E<gt>string>
+
+Build a string which denotes the C<DisjConditions>.
+
+=cut
+
+sub string ($ )
+{
+  my ($self) = @_;
+  return $self->{'string'};
+}
+
+=item C<$cond-E<gt>human>
+
+Build a human readable string which denotes the C<DisjConditions>.
+
+=cut
+
+sub human ($ )
+{
+  my ($self) = @_;
+
+  return $self->{'human'} if defined $self->{'human'};
+
+  my $res = '';
+  if ($self->false)
+    {
+      $res = 'FALSE';
+    }
+  else
+    {
+      my @c = $self->conds;
+      if (1 == @c)
+       {
+         $res = $c[0]->human;
+       }
+      else
+       {
+         $res = '(' . join (') or (', map { $_->human } $self->conds) . ')';
+       }
+    }
+  $self->{'human'} = $res;
+  return $res;
+}
+
+
+=item C<$newcond = $cond-E<gt>merge (@otherconds)>
+
+Return a new C<DisjConditions> which is the disjunction of
+C<$cond> and C<@otherconds>.  Items in C<@otherconds> can be
+@C<Condition>s or C<DisjConditions>.
+
+=cut
+
+sub merge ($@)
+{
+  my ($self, @otherconds) = @_;
+  new Automake::DisjConditions (
+    map { $_->isa ("Automake::DisjConditions") ? $_->conds : $_ }
+        ($self, @otherconds));
+}
+
+
+=item C<$prod = $set1-E<gt>multiply ($set2)>
+
+Multiply two conditional sets.
+
+  my $set1 = new Automake::DisjConditions
+    (new Automake::Condition ("A_TRUE"),
+     new Automake::Condition ("B_TRUE"));
+  my $set2 = new Automake::DisjConditions
+    (new Automake::Condition ("C_FALSE"),
+     new Automake::Condition ("D_FALSE"));
+
+C<$set1-E<gt>multiply ($set2)> will return
+
+  new Automake::DisjConditions
+    (new Automake::Condition ("A_TRUE", "C_FALSE"),
+     new Automake::Condition ("B_TRUE", "C_FALSE"),;
+     new Automake::Condition ("A_TRUE", "D_FALSE"),
+     new Automake::Condition ("B_TRUE", "D_FALSE"));
+
+The argument can also be a C<Condition>.
+
+=cut
+
+# Same as multiply() but take a list of Conditionals as second argument.
+# We use this in invert().
+sub _multiply ($@)
+{
+  my ($self, @set) = @_;
+  my @res = map { $_->multiply (@set) } $self->conds;
+  return new Automake::DisjConditions (Automake::Condition::reduce_or @res);
+}
+
+sub multiply ($$)
+{
+  my ($self, $set) = @_;
+  return $self->_multiply ($set) if $set->isa('Automake::Condition');
+  return $self->_multiply ($set->conds);
+}
+
+=item C<$inv = $set-E<gt>invert>
+
+Invert a C<DisjConditions>.  Return a C<DisjConditions> which is true
+when C<$set> is false, and vice-versa.
+
+  my $set = new Automake::DisjConditions
+    (new Automake::Condition ("A_TRUE", "B_TRUE"),
+     new Automake::Condition ("A_FALSE", "B_FALSE"));
+
+Calling C<$set-E<gt>invert> will return the following C<DisjConditions>.
+
+  new Automake::DisjConditions
+    (new Automake::Condition ("A_TRUE", "B_FALSE"),
+     new Automake::Condition ("A_FALSE", "B_TRUE"));
+
+We implement the inversion by a product-of-sums to sum-of-products
+conversion using repeated multiplications.  Because of the way we
+implement multiplication, the result of inversion is in canonical
+prime implicant form.
+
+=cut
+
+sub invert($ )
+{
+  my ($self) = @_;
+
+  return $self->{'invert'} if defined $self->{'invert'};
+
+  # The invert of an empty DisjConditions is TRUE.
+  my $res = new Automake::DisjConditions TRUE;
+
+  #   !((a.b)+(c.d)+(e.f))
+  # = (!a+!b).(!c+!d).(!e+!f)
+  # We develop this into a sum of product iteratively, starting from TRUE:
+  # 1) TRUE
+  # 2) TRUE.!a + TRUE.!b
+  # 3) TRUE.!a.!c + TRUE.!b.!c + TRUE.!a.!d + TRUE.!b.!d
+  # 4) TRUE.!a.!c.!e + TRUE.!b.!c.!e + TRUE.!a.!d.!e + TRUE.!b.!d.!e
+  #    + TRUE.!a.!c.!f + TRUE.!b.!c.!f + TRUE.!a.!d.!f + TRUE.!b.!d.!f
+  foreach my $cond ($self->conds)
+    {
+      $res = $res->_multiply ($cond->not);
+    }
+
+  # Cache result.
+  $self->{'invert'} = $res;
+  # It's tempting to also set $res->{'invert'} to $self, but that
+  # is a bad idea as $self hasn't been normalized in any way.
+  # (Different inputs can produce the same inverted set.)
+  return $res;
+}
+
+=item C<$self-E<gt>simplify>
+
+Return a C<Disjunction> which is a simplified canonical form of C<$self>.
+This canonical form contains only prime implicants, but it can contain
+non-essential prime implicants.
+
+=cut
+
+sub simplify ($)
+{
+  my ($self) = @_;
+  return $self->invert->invert;
+}
+
+=item C<$self-E<gt>sub_conditions ($cond)>
+
+Return the subconditions of C<$self> that contains C<$cond>, with
+C<$cond> stripped.  More formally, return C<$res> such that
+C<$res-E<gt>multiply ($cond) == $self-E<gt>multiply ($cond)> and
+C<$res> does not mention any of the variables in C<$cond>.
+
+For instance, consider:
+
+  my $a = new Automake::DisjConditions
+    (new Automake::Condition ("A_TRUE", "B_TRUE"),
+     new Automake::Condition ("A_TRUE", "C_FALSE"),
+     new Automake::Condition ("A_TRUE", "B_FALSE", "C_TRUE"),
+     new Automake::Condition ("A_FALSE"));
+  my $b = new Automake::DisjConditions
+    (new Automake::Condition ("A_TRUE", "B_FALSE"));
+
+Calling C<$a-E<gt>sub_conditions ($b)> will return the following
+C<DisjConditions>.
+
+  new Automake::DisjConditions
+    (new Automake::Condition ("C_FALSE"), # From A_TRUE C_FALSE
+     new Automake::Condition ("C_TRUE")); # From A_TRUE B_FALSE C_TRUE"
+
+=cut
+
+sub sub_conditions ($$)
+{
+  my ($self, $subcond) = @_;
+
+  # Make $subcond blindingly apparent in the DisjConditions.
+  # For instance '$b->multiply($a->conds)' (from the POD example) is:
+  #    (new Automake::Condition ("FALSE"),
+  #     new Automake::Condition ("A_TRUE", "B_FALSE", "C_FALSE"),
+  #     new Automake::Condition ("A_TRUE", "B_FALSE", "C_TRUE"),
+  #     new Automake::Condition ("FALSE"))
+  my @prodconds = $subcond->multiply ($self->conds);
+
+  # Now, strip $subcond from the remaining (i.e., non-false) Conditions.
+  my @res = map { $_->false ? () : $_->strip ($subcond) } @prodconds;
+
+  return new Automake::DisjConditions @res;
+}
+
+=item C<($string, $ambig_cond) = $condset-E<gt>ambiguous_p ($what, $cond)>
+
+Check for an ambiguous condition.  Return an error message and the
+other condition involved if we have an ambiguity.  Return an empty
+string and FALSE otherwise.
+
+C<$what> is the name of the thing being defined, to use in the error
+message.  C<$cond> is the C<Condition> under which it is being
+defined.  C<$condset> is the C<DisjConditions> under which it had
+already been defined.
+
+=cut
+
+sub ambiguous_p ($$$)
+{
+  my ($self, $var, $cond) = @_;
+
+  # Note that these rules don't consider the following
+  # example as ambiguous.
+  #
+  #   if COND1
+  #     FOO = foo
+  #   endif
+  #   if COND2
+  #     FOO = bar
+  #   endif
+  #
+  # It's up to the user to not define COND1 and COND2
+  # simultaneously.
+
+  return ("$var multiply defined in condition " . $cond->human, $cond)
+    if exists $self->{'hash'}{$cond};
+
+  foreach my $vcond ($self->conds)
+    {
+      return ("$var was already defined in condition " . $vcond->human
+             . ", which includes condition ". $cond->human, $vcond)
+       if $vcond->true_when ($cond);
+
+      return ("$var was already defined in condition " . $vcond->human
+             . ", which is included in condition " . $cond->human, $vcond)
+       if $cond->true_when ($vcond);
+    }
+  return ('', FALSE);
+}
+
+=head1 SEE ALSO
+
+L<Automake::Condition>.
+
+=head1 HISTORY
+
+C<AM_CONDITIONAL>s and supporting code were added to Automake 1.1o by
+Ian Lance Taylor <ian@cygnus.org> in 1997.  Since then it has been
+improved by Tom Tromey <tromey@redhat.com>, Richard Boulton
+<richard@tartarus.org>, Raja R Harinath <harinath@cs.umn.edu>, Akim
+Demaille <akim@epita.fr>, Pavel Roskin <proski@gnu.org>, and
+Alexandre Duret-Lutz <adl@gnu.org>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/FileUtils.pm b/lib/Automake/FileUtils.pm
new file mode 100644 (file)
index 0000000..fc2347b
--- /dev/null
@@ -0,0 +1,425 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+###############################################################
+# The main copy of this file is in Automake's git repository. #
+# Updates should be sent to automake-patches@gnu.org.         #
+###############################################################
+
+package Automake::FileUtils;
+
+=head1 NAME
+
+Automake::FileUtils - handling files
+
+=head1 SYNOPSIS
+
+  use Automake::FileUtils
+
+=head1 DESCRIPTION
+
+This perl module provides various general purpose file handling functions.
+
+=cut
+
+use 5.006;
+use strict;
+use Exporter;
+use File::stat;
+use IO::File;
+use Automake::Channels;
+use Automake::ChannelDefs;
+
+use vars qw (@ISA @EXPORT);
+
+@ISA = qw (Exporter);
+@EXPORT = qw (&contents
+             &find_file &mtime
+             &update_file &up_to_date_p
+             &xsystem &xsystem_hint &xqx
+             &dir_has_case_matching_file &reset_dir_cache
+             &set_dir_cache_file);
+
+=item C<find_file ($file_name, @include)>
+
+Return the first path for a C<$file_name> in the C<include>s.
+
+We match exactly the behavior of GNU M4: first look in the current
+directory (which includes the case of absolute file names), and then,
+if the file name is not absolute, look in C<@include>.
+
+If the file is flagged as optional (ends with C<?>), then return undef
+if absent, otherwise exit with error.
+
+=cut
+
+# $FILE_NAME
+# find_file ($FILE_NAME, @INCLUDE)
+# --------------------------------
+sub find_file ($@)
+{
+  use File::Spec;
+
+  my ($file_name, @include) = @_;
+  my $optional = 0;
+
+  $optional = 1
+    if $file_name =~ s/\?$//;
+
+  return File::Spec->canonpath ($file_name)
+    if -e $file_name;
+
+  if (!File::Spec->file_name_is_absolute ($file_name))
+    {
+      foreach my $path (@include)
+       {
+         return File::Spec->canonpath (File::Spec->catfile ($path, $file_name))
+           if -e File::Spec->catfile ($path, $file_name)
+       }
+    }
+
+  fatal "$file_name: no such file or directory"
+    unless $optional;
+  return undef;
+}
+
+=item C<mtime ($file)>
+
+Return the mtime of C<$file>.  Missing files, or C<-> standing for
+C<STDIN> or C<STDOUT> are "obsolete", i.e., as old as possible.
+
+=cut
+
+# $MTIME
+# MTIME ($FILE)
+# -------------
+sub mtime ($)
+{
+  my ($file) = @_;
+
+  return 0
+    if $file eq '-' || ! -f $file;
+
+  my $stat = stat ($file)
+    or fatal "cannot stat $file: $!";
+
+  return $stat->mtime;
+}
+
+
+=item C<update_file ($from, $to, [$force])>
+
+Rename C<$from> as C<$to>, preserving C<$to> timestamp if it has not
+changed, unless C<$force> is true (defaults to false).  Recognize
+C<$to> = C<-> standing for C<STDIN>.  C<$from> is always
+removed/renamed.
+
+=cut
+
+# &update_file ($FROM, $TO; $FORCE)
+# ---------------------------------
+sub update_file ($$;$)
+{
+  my ($from, $to, $force) = @_;
+  $force = 0
+    unless defined $force;
+  my $SIMPLE_BACKUP_SUFFIX = $ENV{'SIMPLE_BACKUP_SUFFIX'} || '~';
+  use File::Compare;
+  use File::Copy;
+
+  if ($to eq '-')
+    {
+      my $in = new IO::File $from, "<";
+      my $out = new IO::File (">-");
+      while ($_ = $in->getline)
+       {
+         print $out $_;
+       }
+      $in->close;
+      unlink ($from) || fatal "cannot remove $from: $!";
+      return;
+    }
+
+  if (!$force && -f "$to" && compare ("$from", "$to") == 0)
+    {
+      # File didn't change, so don't update its mod time.
+      msg 'note', "'$to' is unchanged";
+      unlink ($from)
+        or fatal "cannot remove $from: $!";
+      return
+    }
+
+  if (-f "$to")
+    {
+      # Back up and install the new one.
+      move ("$to",  "$to$SIMPLE_BACKUP_SUFFIX")
+       or fatal "cannot backup $to: $!";
+      move ("$from", "$to")
+       or fatal "cannot rename $from as $to: $!";
+      msg 'note', "'$to' is updated";
+    }
+  else
+    {
+      move ("$from", "$to")
+       or fatal "cannot rename $from as $to: $!";
+      msg 'note', "'$to' is created";
+    }
+}
+
+
+=item C<up_to_date_p ($file, @dep)>
+
+Is C<$file> more recent than C<@dep>?
+
+=cut
+
+# $BOOLEAN
+# &up_to_date_p ($FILE, @DEP)
+# ---------------------------
+sub up_to_date_p ($@)
+{
+  my ($file, @dep) = @_;
+  my $mtime = mtime ($file);
+
+  foreach my $dep (@dep)
+    {
+      if ($mtime < mtime ($dep))
+       {
+         verb "up_to_date ($file): outdated: $dep";
+         return 0;
+       }
+    }
+
+  verb "up_to_date ($file): up to date";
+  return 1;
+}
+
+
+=item C<handle_exec_errors ($command, [$expected_exit_code = 0], [$hint])>
+
+Display an error message for C<$command>, based on the content of
+C<$?> and C<$!>.  Be quiet if the command exited normally
+with C<$expected_exit_code>.  If C<$hint> is given, display that as well
+if the command failed to run at all.
+
+=cut
+
+sub handle_exec_errors ($;$$)
+{
+  my ($command, $expected, $hint) = @_;
+  $expected = 0 unless defined $expected;
+  if (defined $hint)
+    {
+      $hint = "\n" . $hint;
+    }
+  else
+    {
+      $hint = '';
+    }
+
+  $command = (split (' ', $command))[0];
+  if ($!)
+    {
+      fatal "failed to run $command: $!" . $hint;
+    }
+  else
+    {
+      use POSIX qw (WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG);
+
+      if (WIFEXITED ($?))
+       {
+         my $status = WEXITSTATUS ($?);
+         # Propagate exit codes.
+         fatal ('',
+                "$command failed with exit status: $status",
+                exit_code => $status)
+           unless $status == $expected;
+       }
+      elsif (WIFSIGNALED ($?))
+       {
+         my $signal = WTERMSIG ($?);
+         fatal "$command terminated by signal: $signal";
+       }
+      else
+       {
+         fatal "$command exited abnormally";
+       }
+    }
+}
+
+=item C<xqx ($command)>
+
+Same as C<qx> (but in scalar context), but fails on errors.
+
+=cut
+
+# xqx ($COMMAND)
+# --------------
+sub xqx ($)
+{
+  my ($command) = @_;
+
+  verb "running: $command";
+
+  $! = 0;
+  my $res = `$command`;
+  handle_exec_errors $command
+    if $?;
+
+  return $res;
+}
+
+
+=item C<xsystem (@argv)>
+
+Same as C<system>, but fails on errors, and reports the C<@argv>
+in verbose mode.
+
+=cut
+
+sub xsystem (@)
+{
+  my (@command) = @_;
+
+  verb "running: @command";
+
+  $! = 0;
+  handle_exec_errors "@command"
+    if system @command;
+}
+
+
+=item C<xsystem_hint ($msg, @argv)>
+
+Same as C<xsystem>, but allows to pass a hint that will be displayed
+in case the command failed to run at all.
+
+=cut
+
+sub xsystem_hint (@)
+{
+  my ($hint, @command) = @_;
+
+  verb "running: @command";
+
+  $! = 0;
+  handle_exec_errors "@command", 0, $hint
+    if system @command;
+}
+
+
+=item C<contents ($file_name)>
+
+Return the contents of C<$file_name>.
+
+=cut
+
+# contents ($FILE_NAME)
+# ---------------------
+sub contents ($)
+{
+  my ($file) = @_;
+  verb "reading $file";
+  local $/;                    # Turn on slurp-mode.
+  my $f = new Automake::XFile $file, "<";
+  my $contents = $f->getline;
+  $f->close;
+  return $contents;
+}
+
+
+=item C<dir_has_case_matching_file ($DIRNAME, $FILE_NAME)>
+
+Return true iff $DIR contains a file name that matches $FILE_NAME case
+insensitively.
+
+We need to be cautious on case-insensitive case-preserving file
+systems (e.g. Mac OS X's HFS+).  On such systems C<-f 'Foo'> and C<-f
+'foO'> answer the same thing.  Hence if a package distributes its own
+F<CHANGELOG> file, but has no F<ChangeLog> file, automake would still
+try to distribute F<ChangeLog> (because it thinks it exists) in
+addition to F<CHANGELOG>, although it is impossible for these two
+files to be in the same directory (the two file names designate the
+same file).
+
+=cut
+
+use vars '%_directory_cache';
+sub dir_has_case_matching_file ($$)
+{
+  # Note that print File::Spec->case_tolerant returns 0 even on MacOS
+  # X (with Perl v5.8.1-RC3 at least), so do not try to shortcut this
+  # function using that.
+
+  my ($dirname, $file_name) = @_;
+  return 0 unless -f "$dirname/$file_name";
+
+  # The file appears to exist, however it might be a mirage if the
+  # system is case insensitive.  Let's browse the directory and check
+  # whether the file is really in.  We maintain a cache of directories
+  # so Automake doesn't spend all its time reading the same directory
+  # again and again.
+  if (!exists $_directory_cache{$dirname})
+    {
+      error "failed to open directory '$dirname'"
+       unless opendir (DIR, $dirname);
+      $_directory_cache{$dirname} = { map { $_ => 1 } readdir (DIR) };
+      closedir (DIR);
+    }
+  return exists $_directory_cache{$dirname}{$file_name};
+}
+
+=item C<reset_dir_cache ($dirname)>
+
+Clear C<dir_has_case_matching_file>'s cache for C<$dirname>.
+
+=cut
+
+sub reset_dir_cache ($)
+{
+  delete $_directory_cache{$_[0]};
+}
+
+=item C<set_dir_cache_file ($dirname, $file_name)>
+
+State that C<$dirname> contains C<$file_name> now.
+
+=cut
+
+sub set_dir_cache_file ($$)
+{
+  my ($dirname, $file_name) = @_;
+  $_directory_cache{$dirname}{$file_name} = 1
+    if exists $_directory_cache{$dirname};
+}
+
+1; # for require
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/General.pm b/lib/Automake/General.pm
new file mode 100644 (file)
index 0000000..2a4a527
--- /dev/null
@@ -0,0 +1,87 @@
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::General;
+
+use 5.006;
+use strict;
+use Exporter;
+use File::Basename;
+
+use vars qw (@ISA @EXPORT);
+
+@ISA = qw (Exporter);
+@EXPORT = qw (&uniq $me);
+
+# Variable we share with the main package.  Be sure to have a single
+# copy of them: using 'my' together with multiple inclusion of this
+# package would introduce several copies.
+use vars qw ($me);
+$me = basename ($0);
+
+# END
+# ---
+# Exit nonzero whenever closing STDOUT fails.
+sub END
+{
+  # This is required if the code might send any output to stdout
+  # E.g., even --version or --help.  So it's best to do it unconditionally.
+  if (! close STDOUT)
+    {
+      print STDERR "$me: closing standard output: $!\n";
+      $? = 74; # EX_IOERR
+      return;
+    }
+}
+
+
+# @RES
+# uniq (@LIST)
+# ------------
+# Return LIST with no duplicates.
+sub uniq (@)
+{
+   my @res = ();
+   my %seen = ();
+   foreach my $item (@_)
+     {
+       if (! exists $seen{$item})
+        {
+          $seen{$item} = 1;
+          push (@res, $item);
+        }
+     }
+   return wantarray ? @res : "@res";
+}
+
+
+1; # for require
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Getopt.pm b/lib/Automake/Getopt.pm
new file mode 100644 (file)
index 0000000..ea1c7ca
--- /dev/null
@@ -0,0 +1,115 @@
+# Copyright (C) 2012 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, 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/>.
+
+package Automake::Getopt;
+
+=head1 NAME
+
+Automake::Getopt - GCS conforming parser for command line options
+
+=head1 SYNOPSIS
+
+  use Automake::Getopt;
+
+=head1 DESCRIPTION
+
+Export a function C<parse_options>, performing parsing of command
+line options in conformance to the GNU Coding standards.
+
+=cut
+
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use Exporter ();
+use Getopt::Long ();
+use Automake::ChannelDefs qw/fatal/;
+use Carp qw/croak confess/;
+
+use vars qw (@ISA @EXPORT);
+@ISA = qw (Exporter);
+@EXPORT= qw/getopt/;
+
+=item C<parse_options (%option)>
+
+Wrapper around C<Getopt::Long>, trying to conform to the GNU
+Coding Standards for error messages.
+
+=cut
+
+sub parse_options (%)
+{
+  my %option = @_;
+
+  Getopt::Long::Configure ("bundling", "pass_through");
+  # Unrecognized options are passed through, so GetOption can only fail
+  # due to internal errors or misuse of options specification.
+  Getopt::Long::GetOptions (%option)
+    or confess "error in options specification (likely)";
+
+  if (@ARGV && $ARGV[0] =~ /^-./)
+    {
+      my %argopts;
+      for my $k (keys %option)
+       {
+         if ($k =~ /(.*)=s$/)
+           {
+             map { $argopts{(length ($_) == 1)
+                            ? "-$_" : "--$_" } = 1; } (split (/\|/, $1));
+           }
+       }
+      if ($ARGV[0] eq '--')
+       {
+         shift @ARGV;
+       }
+      elsif (exists $argopts{$ARGV[0]})
+       {
+         fatal ("option '$ARGV[0]' requires an argument\n"
+                . "Try '$0 --help' for more information.");
+       }
+      else
+       {
+         fatal ("unrecognized option '$ARGV[0]'.\n"
+                . "Try '$0 --help' for more information.");
+       }
+    }
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Getopt::Long>
+
+=cut
+
+1; # for require
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Item.pm b/lib/Automake/Item.pm
new file mode 100644 (file)
index 0000000..6da070e
--- /dev/null
@@ -0,0 +1,206 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Item;
+
+use 5.006;
+use strict;
+use Carp;
+use Automake::ChannelDefs;
+use Automake::DisjConditions;
+
+=head1 NAME
+
+Automake::Item - base class for Automake::Variable and Automake::Rule
+
+=head1 DESCRIPTION
+
+=head2 Methods
+
+=over 4
+
+=item C<new Automake::Item $name>
+
+Create and return an empty Item called C<$name>.
+
+=cut
+
+sub new ($$)
+{
+  my ($class, $name) = @_;
+  my $self = {
+    name => $name,
+    defs => {},
+    conds => {},
+  };
+  bless $self, $class;
+  return $self;
+}
+
+=item C<$item-E<gt>name>
+
+Return the name of C<$item>.
+
+=cut
+
+sub name ($)
+{
+  my ($self) = @_;
+  return $self->{'name'};
+}
+
+=item C<$item-E<gt>def ($cond)>
+
+Return the definition for this item in condition C<$cond>, if it
+exists.  Return 0 otherwise.
+
+=cut
+
+sub def ($$)
+{
+  # This method is called very often, so keep it small and fast.  We
+  # don't mind the extra undefined items introduced by lookup failure;
+  # avoiding this with 'exists' means doing two hash lookup on
+  # success, and proved worse on benchmark.
+  my $def = $_[0]->{'defs'}{$_[1]};
+  return defined $def && $def;
+}
+
+=item C<$item-E<gt>rdef ($cond)>
+
+Return the definition for this item in condition C<$cond>.  Abort with
+an internal error if the item was not defined under this condition.
+
+The I<r> in front of C<def> stands for I<required>.  One
+should call C<rdef> to assert the conditional definition's existence.
+
+=cut
+
+sub rdef ($$)
+{
+  my ($self, $cond) = @_;
+  my $d = $self->def ($cond);
+  prog_error ("undefined condition '" . $cond->human . "' for '"
+             . $self->name . "'\n" . $self->dump)
+    unless $d;
+  return $d;
+}
+
+=item C<$item-E<gt>set ($cond, $def)>
+
+Add a new definition to an existing item.
+
+=cut
+
+sub set ($$$)
+{
+  my ($self, $cond, $def) = @_;
+  $self->{'defs'}{$cond} = $def;
+  $self->{'conds'}{$cond} = $cond;
+}
+
+=item C<$var-E<gt>conditions>
+
+Return an L<Automake::DisjConditions> describing the conditions that
+that an item is defined in.
+
+These are all the conditions for which is would be safe to call
+C<rdef>.
+
+=cut
+
+sub conditions ($)
+{
+  my ($self) = @_;
+  prog_error ("self is not a reference")
+    unless ref $self;
+  return new Automake::DisjConditions (values %{$self->{'conds'}});
+}
+
+=item C<@missing_conds = $var-E<gt>not_always_defined_in_cond ($cond)>
+
+Check whether C<$var> is always defined for condition C<$cond>.
+Return a list of conditions where the definition is missing.
+
+For instance, given
+
+  if COND1
+    if COND2
+      A = foo
+      D = d1
+    else
+      A = bar
+      D = d2
+    endif
+  else
+    D = d3
+  endif
+  if COND3
+    A = baz
+    B = mumble
+  endif
+  C = mumble
+
+we should have (we display result as conditional strings in this
+illustration, but we really return DisjConditions objects):
+
+  var ('A')->not_always_defined_in_cond ('COND1_TRUE COND2_TRUE')
+    => ()
+  var ('A')->not_always_defined_in_cond ('COND1_TRUE')
+    => ()
+  var ('A')->not_always_defined_in_cond ('TRUE')
+    => ("COND1_FALSE COND3_FALSE")
+  var ('B')->not_always_defined_in_cond ('COND1_TRUE')
+    => ("COND1_TRUE COND3_FALSE")
+  var ('C')->not_always_defined_in_cond ('COND1_TRUE')
+    => ()
+  var ('D')->not_always_defined_in_cond ('TRUE')
+    => ()
+  var ('Z')->not_always_defined_in_cond ('TRUE')
+    => ("TRUE")
+
+=cut
+
+sub not_always_defined_in_cond ($$)
+{
+  my ($self, $cond) = @_;
+
+  # Compute the subconditions where $var isn't defined.
+  return
+    $self->conditions
+      ->sub_conditions ($cond)
+       ->invert
+         ->multiply ($cond);
+}
+
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/ItemDef.pm b/lib/Automake/ItemDef.pm
new file mode 100644 (file)
index 0000000..8b64562
--- /dev/null
@@ -0,0 +1,113 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::ItemDef;
+
+use 5.006;
+use strict;
+use Carp;
+
+=head1 NAME
+
+Automake::ItemDef - base class for Automake::VarDef and Automake::RuleDef
+
+=head1 DESCRIPTION
+
+=head2 Methods
+
+=over 4
+
+=item C<my $def = Automake::new ($comment, $location, $owner)>
+
+Create a new Makefile-item definition.
+
+C<$comment> is any comment preceding the definition.  (Because
+Automake reorders items in the output, it also tries to carry comments
+around.)
+
+C<$location> is the place where the definition occurred, it should be
+an instance of L<Automake::Location>.
+
+C<$owner> specifies who owns the rule.
+
+=cut
+
+sub new ($$$$)
+{
+  my ($class, $comment, $location, $owner) = @_;
+
+  my $self = {
+    comment => $comment,
+    location => $location,
+    owner => $owner,
+  };
+  bless $self, $class;
+
+  return $self;
+}
+
+=item C<$def-E<gt>comment>
+
+=item C<$def-E<gt>location>
+
+=item C<$def-E<gt>owner>
+
+Accessors to the various constituents of an C<ItemDef>.  See the
+documentation of C<new>'s arguments for a description of these.
+
+=cut
+
+sub comment ($)
+{
+  my ($self) = @_;
+  return $self->{'comment'};
+}
+
+sub location ($)
+{
+  my ($self) = @_;
+  return $self->{'location'};
+}
+
+sub owner ($)
+{
+  my ($self) = @_;
+  return $self->{'owner'};
+}
+
+=head1 SEE ALSO
+
+L<Automake::VarDef>, and L<Automake::RuleDef>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Location.pm b/lib/Automake/Location.pm
new file mode 100644 (file)
index 0000000..290db73
--- /dev/null
@@ -0,0 +1,279 @@
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Location;
+
+use 5.006;
+
+=head1 NAME
+
+Automake::Location - a class for location tracking, with a stack of contexts
+
+=head1 SYNOPSIS
+
+  use Automake::Location;
+
+  # Create a new Location object
+  my $where = new Automake::Location "foo.c:13";
+
+  # Change the location
+  $where->set ("foo.c:14");
+
+  # Get the location (without context).
+  # Here this should print "foo.c:14"
+  print $where->get, "\n";
+
+  # Push a context, and change the location
+  $where->push_context ("included from here");
+  $where->set ("bar.h:1");
+
+  # Print the location and the stack of context (for debugging)
+  print $where->dump;
+  # This should display
+  #   bar.h:1:
+  #   foo.c:14:   included from here
+
+  # Get the contexts (list of [$location_string, $description])
+  for my $pair (reverse $where->contexts)
+    {
+      my ($loc, $descr) = @{$pair};
+      ...
+    }
+
+  # Pop a context, and reset the location to the previous context.
+  $where->pop_context;
+
+  # Clone a Location.  Use this when storing the state of a location
+  # that would otherwise be modified.
+  my $where_copy = $where->clone;
+
+  # Serialize a Location object (for passing through a thread queue,
+  # for example)
+  my @array = $where->serialize ();
+
+  # De-serialize: recreate a Location object from a queue.
+  my $where = new Automake::Location::deserialize ($queue);
+
+=head1 DESCRIPTION
+
+C<Location> objects are used to keep track of locations in Automake,
+and used to produce diagnostics.
+
+A C<Location> object is made of two parts: a location string, and
+a stack of contexts.
+
+For instance if C<VAR> is defined at line 1 in F<bar.h> which was
+included at line 14 in F<foo.c>, then the location string should be
+C<"bar.h:10"> and the context should be the pair (C<"foo.c:14">,
+C<"included from here">).
+
+Section I<SYNOPSIS> shows how to setup such a C<Location>, and access
+the location string or the stack of contexts.
+
+You can pass a C<Location> to C<Automake::Channels::msg>.
+
+=cut
+
+=head2 Methods
+
+=over
+
+=item C<$where = new Automake::Location ([$position])>
+
+Create and return a new Location object.
+
+=cut
+
+sub new ($;$)
+{
+  my ($class, $position) = @_;
+  my $self = {
+    position => $position,
+    contexts => [],
+  };
+  bless $self, $class;
+  return $self;
+}
+
+=item C<$location-E<gt>set ($position)>
+
+Change the location to be C<$position>.
+
+=cut
+
+sub set ($$)
+{
+  my ($self, $position) = @_;
+  $self->{'position'} = $position;
+}
+
+=item C<$location-E<gt>get>
+
+Get the location (without context).
+
+=cut
+
+sub get ($)
+{
+  my ($self) = @_;
+  return $self->{'position'};
+}
+
+=item C<$location-E<gt>push_context ($context)>
+
+Push a context to the location.
+
+=cut
+
+sub push_context ($$)
+{
+  my ($self, $context) = @_;
+  push @{$self->{'contexts'}}, [$self->get, $context];
+  $self->set (undef);
+}
+
+=item C<$where = $location-E<gt>pop_context ($context)>
+
+Pop a context, and reset the location to the previous context.
+
+=cut
+
+sub pop_context ($)
+{
+  my ($self) = @_;
+  my $pair = pop @{$self->{'contexts'}};
+  $self->set ($pair->[0]);
+  return @{$pair};
+}
+
+=item C<@contexts = $location-E<gt>get_contexts>
+
+Return the array of contexts.
+
+=cut
+
+sub get_contexts ($)
+{
+  my ($self) = @_;
+  return @{$self->{'contexts'}};
+}
+
+=item C<$location = $location-E<gt>clone>
+
+Clone a Location.  Use this when storing the state of a location
+that would otherwise be modified.
+
+=cut
+
+sub clone ($)
+{
+  my ($self) = @_;
+  my $other = new Automake::Location ($self->get);
+  my @contexts = $self->get_contexts;
+  for my $pair (@contexts)
+    {
+      push @{$other->{'contexts'}}, [@{$pair}];
+    }
+  return $other;
+}
+
+=item C<$res = $location-E<gt>dump>
+
+Print the location and the stack of context (for debugging).
+
+=cut
+
+sub dump ($)
+{
+  my ($self) = @_;
+  my $res = ($self->get || 'INTERNAL') . ":\n";
+  for my $pair (reverse $self->get_contexts)
+    {
+      $res .= $pair->[0] || 'INTERNAL';
+      $res .= ": $pair->[1]\n";
+    }
+  return $res;
+}
+
+=item C<@array = $location-E<gt>serialize>
+
+Serialize a Location object (for passing through a thread queue,
+for example).
+
+=cut
+
+sub serialize ($)
+{
+  my ($self) = @_;
+  my @serial = ();
+  push @serial, $self->get;
+  my @contexts = $self->get_contexts;
+  for my $pair (@contexts)
+    {
+      push @serial, @{$pair};
+    }
+  push @serial, undef;
+  return @serial;
+}
+
+=item C<new Automake::Location::deserialize ($queue)>
+
+De-serialize: recreate a Location object from a queue.
+
+=cut
+
+sub deserialize ($)
+{
+  my ($queue) = @_;
+  my $position = $queue->dequeue ();
+  my $self = new Automake::Location $position;
+  while (my $position = $queue->dequeue ())
+    {
+      my $context = $queue->dequeue ();
+      push @{$self->{'contexts'}}, [$position, $context];
+    }
+  return $self;
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Automake::Channels>
+
+=head1 HISTORY
+
+Written by Alexandre Duret-Lutz E<lt>F<adl@gnu.org>E<gt>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Options.pm b/lib/Automake/Options.pm
new file mode 100644 (file)
index 0000000..2f977bd
--- /dev/null
@@ -0,0 +1,456 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Options;
+
+use 5.006;
+use strict;
+use Exporter;
+use Automake::Config;
+use Automake::ChannelDefs;
+use Automake::Channels;
+use Automake::Version;
+
+use vars qw (@ISA @EXPORT);
+
+@ISA = qw (Exporter);
+@EXPORT = qw (option global_option
+              set_option set_global_option
+              unset_option unset_global_option
+              process_option_list process_global_option_list
+              set_strictness $strictness $strictness_name
+              &FOREIGN &GNU &GNITS);
+
+=head1 NAME
+
+Automake::Options - keep track of Automake options
+
+=head1 SYNOPSIS
+
+  use Automake::Options;
+
+  # Option lookup and setting.
+  $opt = option 'name';
+  $opt = global_option 'name';
+  set_option 'name', 'value';
+  set_global_option 'name', 'value';
+  unset_option 'name';
+  unset_global_option 'name';
+
+  # Batch option setting.
+  process_option_list $location, @names;
+  process_global_option_list $location, @names;
+
+  # Strictness lookup and setting.
+  set_strictness 'foreign';
+  set_strictness 'gnu';
+  set_strictness 'gnits';
+  if ($strictness >= GNU) { ... }
+  print "$strictness_name\n";
+
+=head1 DESCRIPTION
+
+This packages manages Automake's options and strictness settings.
+Options can be either local or global.  Local options are set using an
+C<AUTOMAKE_OPTIONS> variable in a F<Makefile.am> and apply only to
+this F<Makefile.am>.  Global options are set from the command line or
+passed as an argument to C<AM_INIT_AUTOMAKE>, they apply to all
+F<Makefile.am>s.
+
+=cut
+
+# Values are the Automake::Location of the definition.
+use vars '%_options';        # From AUTOMAKE_OPTIONS
+use vars '%_global_options'; # From AM_INIT_AUTOMAKE or the command line.
+
+# Whether process_option_list has already been called for the current
+# Makefile.am.
+use vars '$_options_processed';
+# Whether process_global_option_list has already been called.
+use vars '$_global_options_processed';
+
+=head2 Constants
+
+=over 4
+
+=item FOREIGN
+
+=item GNU
+
+=item GNITS
+
+Strictness constants used as values for C<$strictness>.
+
+=back
+
+=cut
+
+# Constants to define the "strictness" level.
+use constant FOREIGN => 0;
+use constant GNU     => 1;
+use constant GNITS   => 2;
+
+=head2 Variables
+
+=over 4
+
+=item C<$strictness>
+
+The current strictness.  One of C<FOREIGN>, C<GNU>, or C<GNITS>.
+
+=item C<$strictness_name>
+
+The current strictness name.  One of C<'foreign'>, C<'gnu'>, or C<'gnits'>.
+
+=back
+
+=cut
+
+# Strictness levels.
+use vars qw ($strictness $strictness_name);
+
+# Strictness level as set on command line.
+use vars qw ($_default_strictness $_default_strictness_name);
+
+
+=head2 Functions
+
+=over 4
+
+=item C<Automake::Options::reset>
+
+Reset the options variables for the next F<Makefile.am>.
+
+In other words, this gets rid of all local options in use by the
+previous F<Makefile.am>.
+
+=cut
+
+sub reset ()
+{
+  $_options_processed = 0;
+  %_options = %_global_options;
+  # The first time we are run,
+  # remember the current setting as the default.
+  if (defined $_default_strictness)
+    {
+      $strictness = $_default_strictness;
+      $strictness_name = $_default_strictness_name;
+    }
+  else
+    {
+      $_default_strictness = $strictness;
+      $_default_strictness_name = $strictness_name;
+    }
+}
+
+=item C<$value = option ($name)>
+
+=item C<$value = global_option ($name)>
+
+Query the state of an option.  If the option is unset, this
+returns the empty list.  Otherwise it returns the option's value,
+as set by C<set_option> or C<set_global_option>.
+
+Note that C<global_option> should be used only when it is
+important to make sure an option hasn't been set locally.
+Otherwise C<option> should be the standard function to
+check for options (be they global or local).
+
+=cut
+
+sub option ($)
+{
+  my ($name) = @_;
+  return () unless defined $_options{$name};
+  return $_options{$name};
+}
+
+sub global_option ($)
+{
+  my ($name) = @_;
+  return () unless defined $_global_options{$name};
+  return $_global_options{$name};
+}
+
+=item C<set_option ($name, $value)>
+
+=item C<set_global_option ($name, $value)>
+
+Set an option.  By convention, C<$value> is usually the location
+of the option definition.
+
+=cut
+
+sub set_option ($$)
+{
+  my ($name, $value) = @_;
+  $_options{$name} = $value;
+}
+
+sub set_global_option ($$)
+{
+  my ($name, $value) = @_;
+  $_global_options{$name} = $value;
+}
+
+
+=item C<unset_option ($name)>
+
+=item C<unset_global_option ($name)>
+
+Unset an option.
+
+=cut
+
+sub unset_option ($)
+{
+  my ($name) = @_;
+  delete $_options{$name};
+}
+
+sub unset_global_option ($)
+{
+  my ($name) = @_;
+  delete $_global_options{$name};
+}
+
+
+=item C<process_option_list (@list)>
+
+=item C<process_global_option_list (@list)>
+
+Process Automake's option lists.  C<@list> should be a list of hash
+references with keys C<option> and C<where>, where C<option> is an
+option as they occur in C<AUTOMAKE_OPTIONS> or C<AM_INIT_AUTOMAKE>,
+and C<where> is the location where that option occurred.
+
+These functions should be called at most once for each set of options
+having the same precedence; i.e., do not call it twice for two options
+from C<AM_INIT_AUTOMAKE>.
+
+Return 1 on error, 0 otherwise.
+
+=cut
+
+# _option_must_be_from_configure ($OPTION, $WHERE)
+# ----------------------------------------------
+# Check that the $OPTION given in location $WHERE is specified with
+# AM_INIT_AUTOMAKE, not with AUTOMAKE_OPTIONS.
+sub _option_must_be_from_configure ($$)
+{
+  my ($opt, $where)= @_;
+  return
+    if $where->get =~ /^configure\./;
+  error $where,
+        "option '$opt' can only be used as argument to AM_INIT_AUTOMAKE\n" .
+        "but not in AUTOMAKE_OPTIONS makefile statements";
+}
+
+# _is_valid_easy_option ($OPTION)
+# -------------------------------
+# Explicitly recognize valid automake options that require no
+# special handling by '_process_option_list' below.
+sub _is_valid_easy_option ($)
+{
+  my $opt = shift;
+  return scalar grep { $opt eq $_ } qw(
+    check-news
+    color-tests
+    cygnus
+    dejagnu
+    dist-bzip2
+    dist-lzip
+    dist-shar
+    dist-tarZ
+    dist-xz
+    dist-zip
+    no-define
+    no-dependencies
+    no-dist
+    no-dist-gzip
+    no-exeext
+    no-installinfo
+    no-installman
+    no-texinfo.tex
+    nostdinc
+    readme-alpha
+    std-options
+    subdir-objects
+  );
+}
+
+# $BOOL
+# _process_option_list (\%OPTIONS, @LIST)
+# ------------------------------------------
+# Process a list of options.  \%OPTIONS is the hash to fill with options
+# data.  @LIST is a list of options as get passed to public subroutines
+# process_option_list() and process_global_option_list() (see POD
+# documentation above).
+sub _process_option_list (\%@)
+{
+  my ($options, @list) = @_;
+  my @warnings = ();
+
+  foreach my $h (@list)
+    {
+      local $_ = $h->{'option'};
+      my $where = $h->{'where'};
+      $options->{$_} = $where;
+      if ($_ eq 'gnits' || $_ eq 'gnu' || $_ eq 'foreign')
+        {
+          set_strictness ($_);
+        }
+      elsif (/^(.*\/)?ansi2knr$/)
+        {
+          # Obsolete (and now removed) de-ANSI-fication support.
+          error ($where,
+                 "automatic de-ANSI-fication support has been removed");
+        }
+      elsif ($_ eq 'dist-lzma')
+        {
+          error ($where, "support for lzma-compressed distribution " .
+                         "archives has been removed");
+        }
+      elsif ($_ eq 'parallel-tests')
+        {
+          # Just recognize it explicitly.
+        }
+      elsif ($_ eq 'serial-tests')
+        {
+          # This is a little of an hack, but good enough for the moment.
+          delete $options->{'parallel-tests'};
+        }
+      elsif (/^filename-length-max=(\d+)$/)
+        {
+          delete $options->{$_};
+          $options->{'filename-length-max'} = [$_, $1];
+        }
+      elsif ($_ eq 'silent-rules')
+        {
+          _option_must_be_from_configure ($_, $where);
+        }
+      elsif ($_ eq 'tar-v7' || $_ eq 'tar-ustar' || $_ eq 'tar-pax')
+        {
+          _option_must_be_from_configure ($_, $where);
+          for my $opt ('tar-v7', 'tar-ustar', 'tar-pax')
+            {
+              next
+                if $opt eq $_ or ! exists $options->{$opt};
+              error ($where,
+                     "options '$_' and '$opt' are mutually exclusive");
+              last;
+            }
+        }
+      elsif (/^\d+\.\d+(?:\.\d+)?[a-z]?(?:-[A-Za-z0-9]+)?$/)
+        {
+          # Got a version number.
+          if (Automake::Version::check ($VERSION, $&))
+            {
+              error ($where, "require Automake $_, but have $VERSION",
+                     uniq_scope => US_GLOBAL);
+              return 1;
+            }
+        }
+      elsif (/^(?:--warnings=|-W)(.*)$/)
+        {
+          my @w = map { { cat => $_, loc => $where} } split (',', $1);
+          push @warnings, @w;
+        }
+      elsif (! _is_valid_easy_option $_)
+        {
+          error ($where, "option '$_' not recognized",
+                 uniq_scope => US_GLOBAL);
+          return 1;
+        }
+    }
+  # We process warnings here, so that any explicitly-given warning setting
+  # will take precedence over warning settings defined implicitly by the
+  # strictness.
+  foreach my $w (@warnings)
+    {
+      msg 'unsupported', $w->{'loc'},
+          "unknown warning category '$w->{'cat'}'"
+        if switch_warning $w->{cat};
+    }
+  return 0;
+}
+
+sub process_option_list (@)
+{
+  prog_error "local options already processed"
+    if $_options_processed;
+  return _process_option_list (%_options, @_);
+  $_options_processed = 1;
+}
+
+sub process_global_option_list (@)
+{
+  prog_error "global options already processed"
+    if $_global_options_processed;
+  return _process_option_list (%_global_options, @_);
+  $_global_options_processed = 1;
+}
+
+=item C<set_strictness ($name)>
+
+Set the current strictness level.
+C<$name> should be one of C<'foreign'>, C<'gnu'>, or C<'gnits'>.
+
+=cut
+
+# Set strictness.
+sub set_strictness ($)
+{
+  $strictness_name = $_[0];
+
+  Automake::ChannelDefs::set_strictness ($strictness_name);
+
+  if ($strictness_name eq 'gnu')
+    {
+      $strictness = GNU;
+    }
+  elsif ($strictness_name eq 'gnits')
+    {
+      $strictness = GNITS;
+    }
+  elsif ($strictness_name eq 'foreign')
+    {
+      $strictness = FOREIGN;
+    }
+  else
+    {
+      prog_error "level '$strictness_name' not recognized";
+    }
+}
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Rule.pm b/lib/Automake/Rule.pm
new file mode 100644 (file)
index 0000000..3f17daa
--- /dev/null
@@ -0,0 +1,891 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Rule;
+
+use 5.006;
+use strict;
+use Carp;
+
+use Automake::Item;
+use Automake::RuleDef;
+use Automake::ChannelDefs;
+use Automake::Channels;
+use Automake::Options;
+use Automake::Condition qw (TRUE FALSE);
+use Automake::DisjConditions;
+require Exporter;
+use vars '@ISA', '@EXPORT', '@EXPORT_OK';
+@ISA = qw/Automake::Item Exporter/;
+@EXPORT = qw (reset register_suffix_rule suffix_rules_count
+             suffixes rules $suffix_rules $KNOWN_EXTENSIONS_PATTERN
+             depend %dependencies %actions register_action
+             accept_extensions
+             reject_rule msg_rule msg_cond_rule err_rule err_cond_rule
+             rule rrule ruledef rruledef);
+
+=head1 NAME
+
+Automake::Rule - support for rules definitions
+
+=head1 SYNOPSIS
+
+  use Automake::Rule;
+  use Automake::RuleDef;
+
+
+=head1 DESCRIPTION
+
+This package provides support for Makefile rule definitions.
+
+An C<Automake::Rule> is a rule name associated to possibly
+many conditional definitions.  These definitions are instances
+of C<Automake::RuleDef>.
+
+Therefore obtaining the value of a rule under a given
+condition involves two lookups.  One to look up the rule,
+and one to look up the conditional definition:
+
+  my $rule = rule $name;
+  if ($rule)
+    {
+      my $def = $rule->def ($cond);
+      if ($def)
+       {
+         return $def->location;
+       }
+      ...
+    }
+  ...
+
+when it is known that the rule and the definition
+being looked up exist, the above can be simplified to
+
+  return rule ($name)->def ($cond)->location; # do not write this.
+
+but is better written
+
+  return rrule ($name)->rdef ($cond)->location;
+
+or even
+
+  return rruledef ($name, $cond)->location;
+
+The I<r> variants of the C<rule>, C<def>, and C<ruledef> methods add
+an extra test to ensure that the lookup succeeded, and will diagnose
+failures as internal errors (with a message which is much more
+informative than Perl's warning about calling a method on a
+non-object).
+
+=head2 Global variables
+
+=over 4
+
+=cut
+
+my $_SUFFIX_RULE_PATTERN =
+  '^(\.[a-zA-Z0-9_(){}$+@\-]+)(\.[a-zA-Z0-9_(){}$+@\-]+)' . "\$";
+
+# Suffixes found during a run.
+use vars '@_suffixes';
+
+# Same as $suffix_rules (declared below), but records only the
+# default rules supplied by the languages Automake supports.
+use vars '$_suffix_rules_default';
+
+=item C<%dependencies>
+
+Holds the dependencies of targets which dependencies are factored.
+Typically, C<.PHONY> will appear in plenty of F<*.am> files, but must
+be output once.  Arguably all pure dependencies could be subject to
+this factoring, but it is not unpleasant to have paragraphs in
+Makefile: keeping related stuff altogether.
+
+=cut
+
+use vars '%dependencies';
+
+=item <%actions>
+
+Holds the factored actions.  Tied to C<%dependencies>, i.e., filled
+only when keys exists in C<%dependencies>.
+
+=cut
+
+use vars '%actions';
+
+=item <$suffix_rules>
+
+This maps the source extension for all suffix rules seen to
+a C<hash> whose keys are the possible output extensions.
+
+Note that this is transitively closed by construction:
+if we have
+      exists $suffix_rules{$ext1}{$ext2}
+   && exists $suffix_rules{$ext2}{$ext3}
+then we also have
+      exists $suffix_rules{$ext1}{$ext3}
+
+So it's easy to check whether C<.foo> can be transformed to
+C<.$(OBJEXT)> by checking whether
+C<$suffix_rules{'.foo'}{'.$(OBJEXT)'}> exists.  This will work even if
+transforming C<.foo> to C<.$(OBJEXT)> involves a chain of several
+suffix rules.
+
+The value of C<$suffix_rules{$ext1}{$ext2}> is a pair
+C<[ $next_sfx, $dist ]> where C<$next_sfx> is target suffix
+for the next rule to use to reach C<$ext2>, and C<$dist> the
+distance to C<$ext2'>.
+
+The content of this variable should be updated via the
+C<register_suffix_rule> function.
+
+=cut
+
+use vars '$suffix_rules';
+
+=item C<$KNOWN_EXTENSIONS_PATTERN>
+
+Pattern that matches all know input extensions (i.e. extensions used
+by the languages supported by Automake).  Using this pattern (instead
+of '\..*$') to match extensions allows Automake to support dot-less
+extensions.
+
+New extensions should be registered with C<accept_extensions>.
+
+=cut
+
+use vars qw ($KNOWN_EXTENSIONS_PATTERN @_known_extensions_list);
+$KNOWN_EXTENSIONS_PATTERN = "";
+@_known_extensions_list = ();
+
+=back
+
+=head2 Error reporting functions
+
+In these functions, C<$rule> can be either a rule name, or
+an instance of C<Automake::Rule>.
+
+=over 4
+
+=item C<err_rule ($rule, $message, [%options])>
+
+Uncategorized errors about rules.
+
+=cut
+
+sub err_rule ($$;%)
+{
+  msg_rule ('error', @_);
+}
+
+=item C<err_cond_rule ($cond, $rule, $message, [%options])>
+
+Uncategorized errors about conditional rules.
+
+=cut
+
+sub err_cond_rule ($$$;%)
+{
+  msg_cond_rule ('error', @_);
+}
+
+=item C<msg_cond_rule ($channel, $cond, $rule, $message, [%options])>
+
+Messages about conditional rules.
+
+=cut
+
+sub msg_cond_rule ($$$$;%)
+{
+  my ($channel, $cond, $rule, $msg, %opts) = @_;
+  my $r = ref ($rule) ? $rule : rrule ($rule);
+  msg $channel, $r->rdef ($cond)->location, $msg, %opts;
+}
+
+=item C<msg_rule ($channel, $targetname, $message, [%options])>
+
+Messages about rules.
+
+=cut
+
+sub msg_rule ($$$;%)
+{
+  my ($channel, $rule, $msg, %opts) = @_;
+  my $r = ref ($rule) ? $rule : rrule ($rule);
+  # Don't know which condition is concerned.  Pick any.
+  my $cond = $r->conditions->one_cond;
+  msg_cond_rule ($channel, $cond, $r, $msg, %opts);
+}
+
+
+=item C<$bool = reject_rule ($rule, $error_msg)>
+
+Bail out with C<$error_msg> if a rule with name C<$rule> has been
+defined.
+
+Return true iff C<$rule> is defined.
+
+=cut
+
+sub reject_rule ($$)
+{
+  my ($rule, $msg) = @_;
+  if (rule ($rule))
+    {
+      err_rule $rule, $msg;
+      return 1;
+    }
+  return 0;
+}
+
+=back
+
+=head2 Administrative functions
+
+=over 4
+
+=item C<accept_extensions (@exts)>
+
+Update C<$KNOWN_EXTENSIONS_PATTERN> to recognize the extensions
+listed in C<@exts>.  Extensions should contain a dot if needed.
+
+=cut
+
+sub accept_extensions (@)
+{
+    push @_known_extensions_list, @_;
+    $KNOWN_EXTENSIONS_PATTERN =
+       '(?:' . join ('|', map (quotemeta, @_known_extensions_list)) . ')';
+}
+
+=item C<rules>
+
+Return the list of all L<Automake::Rule> instances.  (I.e., all
+rules defined so far.)
+
+=cut
+
+use vars '%_rule_dict';
+sub rules ()
+{
+  return values %_rule_dict;
+}
+
+
+=item C<register_action($target, $action)>
+
+Append the C<$action> to C<$actions{$target}> taking care of special
+cases.
+
+=cut
+
+sub register_action ($$)
+{
+  my ($target, $action) = @_;
+  if ($actions{$target})
+    {
+      $actions{$target} .= "\n$action" if $action;
+    }
+  else
+    {
+      $actions{$target} = $action;
+    }
+}
+
+
+=item C<Automake::Rule::reset>
+
+The I<forget all> function.  Clears all known rules and resets some
+other internal data.
+
+=cut
+
+sub reset()
+{
+  %_rule_dict = ();
+  @_suffixes = ();
+  # The first time we initialize the variables,
+  # we save the value of $suffix_rules.
+  if (defined $_suffix_rules_default)
+    {
+      $suffix_rules = $_suffix_rules_default;
+    }
+  else
+    {
+      $_suffix_rules_default = $suffix_rules;
+    }
+
+  %dependencies =
+    (
+     # Texinfoing.
+     'dvi'      => [],
+     'dvi-am'   => [],
+     'pdf'      => [],
+     'pdf-am'   => [],
+     'ps'       => [],
+     'ps-am'    => [],
+     'info'     => [],
+     'info-am'  => [],
+     'html'     => [],
+     'html-am'  => [],
+
+     # Installing/uninstalling.
+     'install-data-am'      => [],
+     'install-exec-am'      => [],
+     'uninstall-am'         => [],
+
+     'install-man'         => [],
+     'uninstall-man'       => [],
+
+     'install-dvi'          => [],
+     'install-dvi-am'       => [],
+     'install-html'         => [],
+     'install-html-am'      => [],
+     'install-info'         => [],
+     'install-info-am'      => [],
+     'install-pdf'          => [],
+     'install-pdf-am'       => [],
+     'install-ps'           => [],
+     'install-ps-am'        => [],
+
+     'installcheck-am'      => [],
+
+     # Cleaning.
+     'clean-am'             => [],
+     'mostlyclean-am'       => [],
+     'maintainer-clean-am'  => [],
+     'distclean-am'         => [],
+     'clean'                => [],
+     'mostlyclean'          => [],
+     'maintainer-clean'     => [],
+     'distclean'            => [],
+
+     # Tarballing.
+     'dist-all'             => [],
+
+     # Phonying.
+     '.PHONY'               => [],
+     # Recursive install targets (so "make -n install" works for BSD Make).
+     '.MAKE'               => [],
+     );
+  %actions = ();
+}
+
+=item C<register_suffix_rule ($where, $src, $dest)>
+
+Register a suffix rule defined on C<$where> that transforms
+files ending in C<$src> into files ending in C<$dest>.
+
+This upgrades the C<$suffix_rules> variables.
+
+=cut
+
+sub register_suffix_rule ($$$)
+{
+  my ($where, $src, $dest) = @_;
+
+  verb "Sources ending in $src become $dest";
+  push @_suffixes, $src, $dest;
+
+  # When transforming sources to objects, Automake uses the
+  # %suffix_rules to move from each source extension to
+  # '.$(OBJEXT)', not to '.o' or '.obj'.  However some people
+  # define suffix rules for '.o' or '.obj', so internally we will
+  # consider these extensions equivalent to '.$(OBJEXT)'.  We
+  # CANNOT rewrite the target (i.e., automagically replace '.o'
+  # and '.obj' by '.$(OBJEXT)' in the output), or warn the user
+  # that (s)he'd better use '.$(OBJEXT)', because Automake itself
+  # output suffix rules for '.o' or '.obj' ...
+  $dest = '.$(OBJEXT)' if ($dest eq '.o' || $dest eq '.obj');
+
+  # Reading the comments near the declaration of $suffix_rules might
+  # help to understand the update of $suffix_rules that follows ...
+
+  # Register $dest as a possible destination from $src.
+  # We might have the create the \hash.
+  if (exists $suffix_rules->{$src})
+    {
+      $suffix_rules->{$src}{$dest} = [ $dest, 1 ];
+    }
+  else
+    {
+      $suffix_rules->{$src} = { $dest => [ $dest, 1 ] };
+    }
+
+  # If we know how to transform $dest in something else, then
+  # we know how to transform $src in that "something else".
+  if (exists $suffix_rules->{$dest})
+    {
+      for my $dest2 (keys %{$suffix_rules->{$dest}})
+       {
+         my $dist = $suffix_rules->{$dest}{$dest2}[1] + 1;
+         # Overwrite an existing $src->$dest2 path only if
+         # the path via $dest which is shorter.
+         if (! exists $suffix_rules->{$src}{$dest2}
+             || $suffix_rules->{$src}{$dest2}[1] > $dist)
+           {
+             $suffix_rules->{$src}{$dest2} = [ $dest, $dist ];
+           }
+       }
+    }
+
+  # Similarly, any extension that can be derived into $src
+  # can be derived into the same extensions as $src can.
+  my @dest2 = keys %{$suffix_rules->{$src}};
+  for my $src2 (keys %$suffix_rules)
+    {
+      if (exists $suffix_rules->{$src2}{$src})
+       {
+         for my $dest2 (@dest2)
+           {
+             my $dist = $suffix_rules->{$src}{$dest2} + 1;
+             # Overwrite an existing $src2->$dest2 path only if
+             # the path via $src is shorter.
+             if (! exists $suffix_rules->{$src2}{$dest2}
+                 || $suffix_rules->{$src2}{$dest2}[1] > $dist)
+               {
+                 $suffix_rules->{$src2}{$dest2} = [ $src, $dist ];
+               }
+           }
+       }
+    }
+}
+
+=item C<$count = suffix_rules_count>
+
+Return the number of suffix rules added while processing the current
+F<Makefile> (excluding predefined suffix rules).
+
+=cut
+
+sub suffix_rules_count ()
+{
+  return (scalar keys %$suffix_rules) - (scalar keys %$_suffix_rules_default);
+}
+
+=item C<@list = suffixes>
+
+Return the list of known suffixes.
+
+=cut
+
+sub suffixes ()
+{
+  return @_suffixes;
+}
+
+=item C<rule ($rulename)>
+
+Return the C<Automake::Rule> object for the rule
+named C<$rulename> if defined.  Return 0 otherwise.
+
+=cut
+
+sub rule ($)
+{
+  my ($name) = @_;
+  # Strip $(EXEEXT) from $name, so we can diagnose
+  # a clash if 'ctags$(EXEEXT):' is redefined after 'ctags:'.
+  $name =~ s,\$\(EXEEXT\)$,,;
+  return $_rule_dict{$name} || 0;
+}
+
+=item C<ruledef ($rulename, $cond)>
+
+Return the C<Automake::RuleDef> object for the rule named
+C<$rulename> if defined in condition C<$cond>.  Return false
+if the condition or the rule does not exist.
+
+=cut
+
+sub ruledef ($$)
+{
+  my ($name, $cond) = @_;
+  my $rule = rule $name;
+  return $rule && $rule->def ($cond);
+}
+
+=item C<rrule ($rulename)
+
+Return the C<Automake::Rule> object for the variable named
+C<$rulename>.  Abort with an internal error if the variable was not
+defined.
+
+The I<r> in front of C<var> stands for I<required>.  One
+should call C<rvar> to assert the rule's existence.
+
+=cut
+
+sub rrule ($)
+{
+  my ($name) = @_;
+  my $r = rule $name;
+  prog_error ("undefined rule $name\n" . &rules_dump)
+    unless $r;
+  return $r;
+}
+
+=item C<rruledef ($varname, $cond)>
+
+Return the C<Automake::RuleDef> object for the rule named
+C<$rulename> if defined in condition C<$cond>.  Abort with an internal
+error if the condition or the rule does not exist.
+
+=cut
+
+sub rruledef ($$)
+{
+  my ($name, $cond) = @_;
+  return rrule ($name)->rdef ($cond);
+}
+
+# Create the variable if it does not exist.
+# This is used only by other functions in this package.
+sub _crule ($)
+{
+  my ($name) = @_;
+  my $r = rule $name;
+  return $r if $r;
+  return _new Automake::Rule $name;
+}
+
+sub _new ($$)
+{
+  my ($class, $name) = @_;
+
+  # Strip $(EXEEXT) from $name, so we can diagnose
+  # a clash if 'ctags$(EXEEXT):' is redefined after 'ctags:'.
+  (my $keyname = $name) =~ s,\$\(EXEEXT\)$,,;
+
+  my $self = Automake::Item::new ($class, $name);
+  $_rule_dict{$keyname} = $self;
+  return $self;
+}
+
+sub _rule_defn_with_exeext_awareness ($$$)
+{
+  my ($target, $cond, $where) = @_;
+
+  # For now 'foo:' will override 'foo$(EXEEXT):'.  This is temporary,
+  # though, so we emit a warning.
+  (my $noexe = $target) =~ s/\$\(EXEEXT\)$//;
+  my $noexerule = rule $noexe;
+  my $tdef = $noexerule ? $noexerule->def ($cond) : undef;
+
+  if ($noexe ne $target
+      && $tdef
+      && $noexerule->name ne $target)
+    {
+      # The no-exeext option enables this feature.
+      if (! option 'no-exeext')
+       {
+         msg ('obsolete', $tdef->location,
+              "deprecated feature: target '$noexe' overrides "
+              . "'$noexe\$(EXEEXT)'\n"
+              . "change your target to read '$noexe\$(EXEEXT)'",
+              partial => 1);
+         msg ('obsolete', $where, "target '$target' was defined here");
+       }
+    }
+    return $tdef;
+}
+
+sub _maybe_warn_about_duplicated_target ($$$$$$)
+{
+  my ($target, $tdef, $source, $owner, $cond, $where) = @_;
+
+  my $oldowner  = $tdef->owner;
+  # Ok, it's the name target, but the name maybe different because
+  # 'foo$(EXEEXT)' and 'foo' have the same key in our table.
+  my $oldname = $tdef->name;
+
+  # Don't mention true conditions in diagnostics.
+  my $condmsg =
+    $cond == TRUE ? '' : (" in condition '" . $cond->human . "'");
+
+  if ($owner == RULE_USER)
+    {
+      if ($oldowner == RULE_USER)
+        {
+          # Ignore '%'-style pattern rules.  We'd need the
+          # dependencies to detect duplicates, and they are
+          # already diagnosed as unportable by -Wportability.
+          if ($target !~ /^[^%]*%[^%]*$/)
+            {
+              ## FIXME: Presently we can't diagnose duplicate user rules
+              ## because we don't distinguish rules with commands
+              ## from rules that only add dependencies.  E.g.,
+              ##   .PHONY: foo
+              ##   .PHONY: bar
+              ## is legitimate. (This is phony.test.)
+
+              # msg ('syntax', $where,
+              #      "redefinition of '$target'$condmsg ...", partial => 1);
+              # msg_cond_rule ('syntax', $cond, $target,
+              #                "... '$target' previously defined here");
+            }
+        }
+      else
+        {
+          # Since we parse the user Makefile.am before reading
+          # the Automake fragments, this condition should never happen.
+          prog_error ("user target '$target'$condmsg seen after Automake's"
+                      . " definition\nfrom " . $tdef->source);
+        }
+    }
+  else # $owner == RULE_AUTOMAKE
+    {
+      if ($oldowner == RULE_USER)
+        {
+          # -am targets listed in %dependencies support a -local
+          # variant.  If the user tries to override TARGET or
+          # TARGET-am for which there exists a -local variant,
+          # just tell the user to use it.
+          my $hint = 0;
+          my $noam = $target;
+          $noam =~ s/-am$//;
+          if (exists $dependencies{"$noam-am"})
+            {
+              $hint = "consider using $noam-local instead of $target";
+            }
+
+          msg_cond_rule ('override', $cond, $target,
+                         "user target '$target' defined here"
+                         . "$condmsg ...", partial => 1);
+          msg ('override', $where,
+               "... overrides Automake target '$oldname' defined here",
+               partial => $hint);
+          msg_cond_rule ('override', $cond, $target, $hint)
+            if $hint;
+        }
+      else # $oldowner == RULE_AUTOMAKE
+        {
+          # Automake should ignore redefinitions of its own
+          # rules if they came from the same file.  This makes
+          # it easier to process a Makefile fragment several times.
+          # However it's an error if the target is defined in many
+          # files.  E.g., the user might be using bin_PROGRAMS = ctags
+          # which clashes with our 'ctags' rule.
+          # (It would be more accurate if we had a way to compare
+          # the *content* of both rules.  Then $targets_source would
+          # be useless.)
+          my $oldsource = $tdef->source;
+          if (not ($source eq $oldsource && $target eq $oldname))
+            {
+               msg ('syntax',
+                    $where, "redefinition of '$target'$condmsg ...",
+                    partial => 1);
+               msg_cond_rule ('syntax', $cond, $target,
+                              "... '$oldname' previously defined here");
+            }
+        }
+    }
+}
+
+# Return the list of conditionals in which the rule was defined.  In case
+# an ambiguous conditional definition is detected, return the empty list.
+sub _conditionals_for_rule ($$$$)
+{
+  my ($rule, $owner, $cond, $where) = @_;
+  my $target = $rule->name;
+  my @conds;
+  my ($message, $ambig_cond) = $rule->conditions->ambiguous_p ($target, $cond);
+
+  return $cond if !$message; # No ambiguity.
+
+  if ($owner == RULE_USER)
+    {
+      # For user rules, just diagnose the ambiguity.
+      msg 'syntax', $where, "$message ...", partial => 1;
+      msg_cond_rule ('syntax', $ambig_cond, $target,
+                     "... '$target' previously defined here");
+      return ();
+    }
+
+  # FIXME: for Automake rules, we can't diagnose ambiguities yet.
+  # The point is that Automake doesn't propagate conditions
+  # everywhere.  For instance &handle_PROGRAMS doesn't care if
+  # bin_PROGRAMS was defined conditionally or not.
+  # On the following input
+  #   if COND1
+  #   foo:
+  #           ...
+  #   else
+  #   bin_PROGRAMS = foo
+  #   endif
+  # &handle_PROGRAMS will attempt to define a 'foo:' rule
+  # in condition TRUE (which conflicts with COND1).  Fixing
+  # this in &handle_PROGRAMS and siblings seems hard: you'd
+  # have to explain &file_contents what to do with a
+  # condition.  So for now we do our best *here*.  If 'foo:'
+  # was already defined in condition COND1 and we want to define
+  # it in condition TRUE, then define it only in condition !COND1.
+  # (See cond14.test and cond15.test for some test cases.)
+  @conds = $rule->not_always_defined_in_cond ($cond)->conds;
+
+  # No conditions left to define the rule.
+  # Warn, because our workaround is meaningless in this case.
+  if (scalar @conds == 0)
+    {
+      msg 'syntax', $where, "$message ...", partial => 1;
+      msg_cond_rule ('syntax', $ambig_cond, $target,
+                     "... '$target' previously defined here");
+      return ();
+    }
+  return @conds;
+}
+
+=item C<@conds = define ($rulename, $source, $owner, $cond, $where)>
+
+Define a new rule.  C<$rulename> is the list of targets.  C<$source>
+is the filename the rule comes from.  C<$owner> is the owner of the
+rule (C<RULE_AUTOMAKE> or C<RULE_USER>).  C<$cond> is the
+C<Automake::Condition> under which the rule is defined.  C<$where> is
+the C<Automake::Location> where the rule is defined.
+
+Returns a (possibly empty) list of C<Automake::Condition>s where the
+rule's definition should be output.
+
+=cut
+
+sub define ($$$$$)
+{
+  my ($target, $source, $owner, $cond, $where) = @_;
+
+  prog_error "$where is not a reference"
+    unless ref $where;
+  prog_error "$cond is not a reference"
+    unless ref $cond;
+
+  # Don't even think about defining a rule in condition FALSE.
+  return () if $cond == FALSE;
+
+  my $tdef = _rule_defn_with_exeext_awareness ($target, $cond, $where);
+
+  # A GNU make-style pattern rule has a single "%" in the target name.
+  msg ('portability', $where,
+       "'%'-style pattern rules are a GNU make extension")
+    if $target =~ /^[^%]*%[^%]*$/;
+
+  # See whether this is a duplicated target declaration.
+  if ($tdef)
+    {
+      # Diagnose invalid target redefinitions, if any.  Note that some
+      # target redefinitions are valid (e.g., for multiple-targets
+      # pattern rules).
+      _maybe_warn_about_duplicated_target ($target, $tdef, $source,
+                                           $owner, $cond, $where);
+      # Return so we don't redefine the rule in our tables, don't check
+      # for ambiguous condition, etc.  The rule will be output anyway
+      # because '&read_am_file' ignores the return code.
+      return ();
+    }
+
+  my $rule = _crule $target;
+
+  # Conditions for which the rule should be defined.  Due to some
+  # complications in the automake internals, this aspect is not as
+  # obvious as it might be, and in come cases this list must contain
+  # other entries in addition to '$cond'.  See the comments in
+  # '_conditionals_for_rule' for a rationale.
+  my @conds = _conditionals_for_rule ($rule, $owner, $cond, $where);
+
+  # Stop if we had ambiguous conditional definitions.
+  return unless @conds;
+
+  # Finally define this rule.
+  for my $c (@conds)
+    {
+      my $def = new Automake::RuleDef ($target, '', $where->clone,
+                                      $owner, $source);
+      $rule->set ($c, $def);
+    }
+
+  # We honor inference rules with multiple targets because many
+  # makes support this and people use it.  However this is disallowed
+  # by POSIX.  We'll print a warning later.
+  my $target_count = 0;
+  my $inference_rule_count = 0;
+
+  for my $t (split (' ', $target))
+    {
+      ++$target_count;
+      # Check if the rule is a suffix rule: either it's a rule for
+      # two known extensions...
+      if ($t =~ /^($KNOWN_EXTENSIONS_PATTERN)($KNOWN_EXTENSIONS_PATTERN)$/
+         # ...or it's a rule with unknown extensions (i.e., the rule
+         # looks like '.foo.bar:' but '.foo' or '.bar' are not
+         # declared in SUFFIXES and are not known language
+         # extensions).  Automake will complete SUFFIXES from
+         # @suffixes automatically (see handle_footer).
+         || ($t =~ /$_SUFFIX_RULE_PATTERN/o && accept_extensions($1)))
+       {
+         ++$inference_rule_count;
+         register_suffix_rule ($where, $1, $2);
+       }
+    }
+
+  # POSIX allows multiple targets before the colon, but disallows
+  # definitions of multiple inference rules.  It's also
+  # disallowed to mix plain targets with inference rules.
+  msg ('portability', $where,
+       "inference rules can have only one target before the colon (POSIX)")
+    if $inference_rule_count > 0 && $target_count > 1;
+
+  return @conds;
+}
+
+=item C<depend ($target, @deps)>
+
+Adds C<@deps> to the dependencies of target C<$target>.  This should
+be used only with factored targets (those appearing in
+C<%dependees>).
+
+=cut
+
+sub depend ($@)
+{
+  my ($category, @dependees) = @_;
+  push (@{$dependencies{$category}}, @dependees);
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Automake::RuleDef>, L<Automake::Condition>,
+L<Automake::DisjConditions>, L<Automake::Location>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/RuleDef.pm b/lib/Automake/RuleDef.pm
new file mode 100644 (file)
index 0000000..571111c
--- /dev/null
@@ -0,0 +1,129 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::RuleDef;
+
+use 5.006;
+use strict;
+use Carp;
+use Automake::ChannelDefs;
+use Automake::ItemDef;
+
+require Exporter;
+use vars '@ISA', '@EXPORT';
+@ISA = qw/Automake::ItemDef Exporter/;
+@EXPORT = qw (&RULE_AUTOMAKE &RULE_USER);
+
+=head1 NAME
+
+Automake::RuleDef - a class for rule definitions
+
+=head1 SYNOPSIS
+
+  use Automake::RuleDef;
+  use Automake::Location;
+
+=head1 DESCRIPTION
+
+This class gathers data related to one Makefile-rule definition.
+It shouldn't be needed outside of F<Rule.pm>.
+
+=head2 Constants
+
+=over 4
+
+=item C<RULE_AUTOMAKE>, C<RULE_USER>
+
+Possible owners for rules.
+
+=cut
+
+use constant RULE_AUTOMAKE => 0; # Rule defined by Automake.
+use constant RULE_USER => 1;     # Rule defined in the user's Makefile.am.
+
+=back
+
+=head2 Methods
+
+=over 4
+
+=item C<new Automake::RuleDef ($name, $comment, $location, $owner, $source)>
+
+Create a new rule definition with target C<$name>, with associated comment
+C<$comment>, Location C<$location> and owner C<$owner>, defined in file
+C<$source>.
+
+=cut
+
+sub new ($$$$$)
+{
+  my ($class, $name, $comment, $location, $owner, $source) = @_;
+
+  my $self = Automake::ItemDef::new ($class, $comment, $location, $owner);
+  $self->{'source'} = $source;
+  $self->{'name'} = $name;
+  return $self;
+}
+
+=item C<$source = $rule-E<gt>source>
+
+Return the source of the rule.
+
+=cut
+
+sub source ($)
+{
+  my ($self) = @_;
+  return $self->{'source'};
+}
+
+=item C<$name = $rule-E<gt>name>
+
+Return the name of the rule.
+
+=cut
+
+sub name ($)
+{
+  my ($self) = @_;
+  return $self->{'name'};
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Automake::Rule>, L<Automake::ItemDef>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/VarDef.pm b/lib/Automake/VarDef.pm
new file mode 100644 (file)
index 0000000..dde99ac
--- /dev/null
@@ -0,0 +1,349 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::VarDef;
+
+use 5.006;
+use strict;
+use Carp;
+use Automake::ChannelDefs;
+use Automake::ItemDef;
+
+require Exporter;
+use vars '@ISA', '@EXPORT';
+@ISA = qw/Automake::ItemDef Exporter/;
+@EXPORT = qw (&VAR_AUTOMAKE &VAR_CONFIGURE &VAR_MAKEFILE
+             &VAR_ASIS &VAR_PRETTY &VAR_SILENT &VAR_SORTED);
+
+=head1 NAME
+
+Automake::VarDef - a class for variable definitions
+
+=head1 SYNOPSIS
+
+  use Automake::VarDef;
+  use Automake::Location;
+
+  # Create a VarDef for a definition such as
+  # | # any comment
+  # | foo = bar # more comment
+  # in Makefile.am
+  my $loc = new Automake::Location 'Makefile.am:2';
+  my $def = new Automake::VarDef ('foo', 'bar # more comment',
+                                  '# any comment',
+                                  $loc, '', VAR_MAKEFILE, VAR_ASIS);
+
+  # Appending to a definition.
+  $def->append ('value to append', 'comment to append');
+
+  # Accessors.
+  my $value    = $def->value;  # with trailing '#' comments and
+                               # continuation ("\\\n") omitted.
+  my $value    = $def->raw_value; # the real value, as passed to new().
+  my $comment  = $def->comment;
+  my $location = $def->location;
+  my $type     = $def->type;
+  my $owner    = $def->owner;
+  my $pretty   = $def->pretty;
+
+  # Changing owner.
+  $def->set_owner (VAR_CONFIGURE,
+                   new Automake::Location 'configure.ac:15');
+
+  # Marking examined definitions.
+  $def->set_seen;
+  my $seen_p = $def->seen;
+
+  # Printing a variable for debugging.
+  print STDERR $def->dump;
+
+=head1 DESCRIPTION
+
+This class gathers data related to one Makefile-variable definition.
+
+=head2 Constants
+
+=over 4
+
+=item C<VAR_AUTOMAKE>, C<VAR_CONFIGURE>, C<VAR_MAKEFILE>
+
+Possible owners for variables.  A variable can be defined
+by Automake, in F<configure.ac> (using C<AC_SUBST>), or in
+the user's F<Makefile.am>.
+
+=cut
+
+# Defined so that the owner of a variable can only be increased (e.g
+# Automake should not override a configure or Makefile variable).
+use constant VAR_AUTOMAKE => 0; # Variable defined by Automake.
+use constant VAR_CONFIGURE => 1;# Variable defined in configure.ac.
+use constant VAR_MAKEFILE => 2; # Variable defined in Makefile.am.
+
+=item C<VAR_ASIS>, C<VAR_PRETTY>, C<VAR_SILENT>, C<VAR_SORTED>
+
+Possible print styles.  C<VAR_ASIS> variables should be output as-is.
+C<VAR_PRETTY> variables are wrapped on multiple lines if they cannot
+fit on one.  C<VAR_SILENT> variables are not output at all.  Finally,
+C<VAR_SORTED> variables should be sorted and then handled as
+C<VAR_PRETTY> variables.
+
+C<VAR_SILENT> variables can also be overridden silently (unlike the
+other kinds of variables whose overriding may sometimes produce
+warnings).
+
+=cut
+
+# Possible values for pretty.
+use constant VAR_ASIS => 0;    # Output as-is.
+use constant VAR_PRETTY => 1;  # Pretty printed on output.
+use constant VAR_SILENT => 2;  # Not output.  (Can also be
+                               # overridden silently.)
+use constant VAR_SORTED => 3;  # Sorted and pretty-printed.
+
+=back
+
+=head2 Methods
+
+C<VarDef> defines the following methods in addition to those inherited
+from L<Automake::ItemDef>.
+
+=over 4
+
+=item C<my $def = new Automake::VarDef ($varname, $value, $comment, $location, $type, $owner, $pretty)>
+
+Create a new Makefile-variable definition.  C<$varname> is the name of
+the variable being defined and C<$value> its value.
+
+C<$comment> is any comment preceding the definition.  (Because
+Automake reorders variable definitions in the output, it also tries to
+carry comments around.)
+
+C<$location> is the place where the definition occurred, it should be
+an instance of L<Automake::Location>.
+
+C<$type> should be C<''> for definitions made with C<=>, and C<':'>
+for those made with C<:=>.
+
+C<$owner> specifies who owns the variables, it can be one of
+C<VAR_AUTOMAKE>, C<VAR_CONFIGURE>, or C<VAR_MAKEFILE> (see these
+definitions).
+
+Finally, C<$pretty> tells how the variable should be output, and can
+be one of C<VAR_ASIS>, C<VAR_PRETTY>, or C<VAR_SILENT>, or
+C<VAR_SORTED> (see these definitions).
+
+=cut
+
+sub new ($$$$$$$$)
+{
+  my ($class, $var, $value, $comment, $location, $type, $owner, $pretty) = @_;
+
+  # A user variable must be set by either '=' or ':=', and later
+  # promoted to '+='.
+  if ($owner != VAR_AUTOMAKE && $type eq '+')
+    {
+      error $location, "$var must be set with '=' before using '+='";
+    }
+
+  my $self = Automake::ItemDef::new ($class, $comment, $location, $owner);
+  $self->{'value'} = $value;
+  $self->{'type'} = $type;
+  $self->{'pretty'} = $pretty;
+  $self->{'seen'} = 0;
+  return $self;
+}
+
+=item C<$def-E<gt>append ($value, $comment)>
+
+Append C<$value> and <$comment> to the existing value and comment of
+C<$def>.  This is normally called on C<+=> definitions.
+
+=cut
+
+sub append ($$$)
+{
+  my ($self, $value, $comment) = @_;
+  $self->{'comment'} .= $comment;
+
+  my $val = $self->{'value'};
+
+  # Strip comments from augmented variables.  This is so that
+  #   VAR = foo # com
+  #   VAR += bar
+  # does not become
+  #   VAR = foo # com bar
+  # Furthermore keeping '#' would not be portable if the variable is
+  # output on multiple lines.
+  $val =~ s/ ?#.*//;
+  # Insert a separator, if required.
+  $val .= ' ' if $val;
+  $self->{'value'} = $val . $value;
+  # Turn ASIS appended variables into PRETTY variables.  This is to
+  # cope with 'make' implementation that cannot read very long lines.
+  $self->{'pretty'} = VAR_PRETTY if $self->{'pretty'} == VAR_ASIS;
+}
+
+=item C<$def-E<gt>value>
+
+=item C<$def-E<gt>raw_value>
+
+=item C<$def-E<gt>type>
+
+=item C<$def-E<gt>pretty>
+
+Accessors to the various constituents of a C<VarDef>.  See the
+documentation of C<new>'s arguments for a description of these.
+
+=cut
+
+sub value ($)
+{
+  my ($self) = @_;
+  my $val = $self->raw_value;
+  # Strip anything past '#'.  '#' characters cannot be escaped
+  # in Makefiles, so we don't have to be smart.
+  $val =~ s/#.*$//s;
+  # Strip backslashes.
+  $val =~ s/\\$/ /mg;
+  return $val;
+}
+
+sub raw_value ($)
+{
+  my ($self) = @_;
+  return $self->{'value'};
+}
+
+sub type ($)
+{
+  my ($self) = @_;
+  return $self->{'type'};
+}
+
+sub pretty ($)
+{
+  my ($self) = @_;
+  return $self->{'pretty'};
+}
+
+=item C<$def-E<gt>set_owner ($owner, $location)>
+
+Change the owner of a definition.  This usually happens because
+the user used C<+=> on an Automake variable, so (s)he now owns
+the content.  C<$location> should be an instance of L<Automake::Location>
+indicating where the change took place.
+
+=cut
+
+sub set_owner ($$$)
+{
+  my ($self, $owner, $location) = @_;
+  # We always adjust the location when the owner changes (even for
+  # '+=' statements).  The risk otherwise is to warn about
+  # a VAR_MAKEFILE variable and locate it in configure.ac...
+  $self->{'owner'} = $owner;
+  $self->{'location'} = $location;
+}
+
+=item C<$def-E<gt>set_seen>
+
+=item C<$bool = $def-E<gt>seen>
+
+These function allows Automake to mark (C<set_seen>) variable that
+it has examined in some way, and latter check (using C<seen>) for
+unused variables.  Unused variables usually indicate typos.
+
+=cut
+
+sub set_seen ($)
+{
+  my ($self) = @_;
+  $self->{'seen'} = 1;
+}
+
+sub seen ($)
+{
+  my ($self) = @_;
+  return $self->{'seen'};
+}
+
+=item C<$str = $def-E<gt>dump>
+
+Format the contents of C<$def> as a human-readable string,
+for debugging.
+
+=cut
+
+sub dump ($)
+{
+  my ($self) = @_;
+  my $owner = $self->owner;
+
+  if ($owner == VAR_AUTOMAKE)
+    {
+      $owner = 'Automake';
+    }
+  elsif ($owner == VAR_CONFIGURE)
+    {
+      $owner = 'Configure';
+    }
+  elsif ($owner == VAR_MAKEFILE)
+    {
+      $owner = 'Makefile';
+    }
+  else
+    {
+      prog_error ("unexpected owner");
+    }
+
+  my $where = $self->location->dump;
+  my $comment = $self->comment;
+  my $value = $self->raw_value;
+  my $type = $self->type;
+
+  return "{
+      type: $type=
+      where: $where      comment: $comment
+      value: $value
+      owner: $owner
+    }\n";
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Automake::Variable>, L<Automake::ItemDef>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Variable.pm b/lib/Automake/Variable.pm
new file mode 100644 (file)
index 0000000..d4d230f
--- /dev/null
@@ -0,0 +1,1693 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Variable;
+
+use 5.006;
+use strict;
+use Carp;
+
+use Automake::Channels;
+use Automake::ChannelDefs;
+use Automake::Configure_ac;
+use Automake::Item;
+use Automake::VarDef;
+use Automake::Condition qw (TRUE FALSE);
+use Automake::DisjConditions;
+use Automake::General 'uniq';
+use Automake::Wrap 'makefile_wrap';
+
+require Exporter;
+use vars '@ISA', '@EXPORT', '@EXPORT_OK';
+@ISA = qw/Automake::Item Exporter/;
+@EXPORT = qw (err_var msg_var msg_cond_var reject_var
+             var rvar vardef rvardef
+             variables
+             scan_variable_expansions check_variable_expansions
+             variable_delete
+             variables_dump
+             set_seen
+             require_variables
+             variable_value
+             output_variables
+             transform_variable_recursively);
+
+=head1 NAME
+
+Automake::Variable - support for variable definitions
+
+=head1 SYNOPSIS
+
+  use Automake::Variable;
+  use Automake::VarDef;
+
+  # Defining a variable.
+  Automake::Variable::define($varname, $owner, $type,
+                             $cond, $value, $comment,
+                             $where, $pretty)
+
+  # Looking up a variable.
+  my $var = var $varname;
+  if ($var)
+    {
+      ...
+    }
+
+  # Looking up a variable that is assumed to exist.
+  my $var = rvar $varname;
+
+  # The list of conditions where $var has been defined.
+  # ($var->conditions is an Automake::DisjConditions,
+  # $var->conditions->conds is a list of Automake::Condition.)
+  my @conds = $var->conditions->conds
+
+  # Access to the definition in Condition $cond.
+  # $def is an Automake::VarDef.
+  my $def = $var->def ($cond);
+  if ($def)
+    {
+      ...
+    }
+
+  # When the conditional definition is assumed to exist, use
+  my $def = $var->rdef ($cond);
+
+
+=head1 DESCRIPTION
+
+This package provides support for Makefile variable definitions.
+
+An C<Automake::Variable> is a variable name associated to possibly
+many conditional definitions.  These definitions are instances
+of C<Automake::VarDef>.
+
+Therefore obtaining the value of a variable under a given
+condition involves two lookups.  One to look up the variable,
+and one to look up the conditional definition:
+
+  my $var = var $name;
+  if ($var)
+    {
+      my $def = $var->def ($cond);
+      if ($def)
+        {
+          return $def->value;
+        }
+      ...
+    }
+  ...
+
+When it is known that the variable and the definition
+being looked up exist, the above can be simplified to
+
+  return var ($name)->def ($cond)->value; # Do not write this.
+
+but is better written
+
+  return rvar ($name)->rdef ($cond)->value;
+
+or even
+
+  return rvardef ($name, $cond)->value;
+
+The I<r> variants of the C<var>, C<def>, and C<vardef> methods add an
+extra test to ensure that the lookup succeeded, and will diagnose
+failures as internal errors (with a message which is much more
+informative than Perl's warning about calling a method on a
+non-object).
+
+=cut
+
+my $_VARIABLE_CHARACTERS = '[.A-Za-z0-9_@]+';
+my $_VARIABLE_PATTERN = '^' . $_VARIABLE_CHARACTERS . "\$";
+my $_VARIABLE_RECURSIVE_PATTERN =
+    '^([.A-Za-z0-9_@]|\$[({]' . $_VARIABLE_CHARACTERS . '[})]?)+' . "\$";
+
+# The order in which variables should be output.  (May contain
+# duplicates -- only the first occurrence matters.)
+my @_var_order;
+
+# This keeps track of all variables defined by &_gen_varname.
+# $_gen_varname{$base} is a hash for all variables defined with
+# prefix '$base'.  Values stored in this hash are the variable names.
+# Keys have the form "(COND1)VAL1(COND2)VAL2..." where VAL1 and VAL2
+# are the values of the variable for condition COND1 and COND2.
+my %_gen_varname = ();
+# $_gen_varname_n{$base} is the number of variables generated by
+# _gen_varname() for $base.  This is not the same as keys
+# %{$_gen_varname{$base}} because %_gen_varname may also contain
+# variables not generated by _gen_varname.
+my %_gen_varname_n = ();
+
+# Declare the macros that define known variables, so we can
+# hint the user if she try to use one of these variables.
+
+# Macros accessible via aclocal.
+my %_am_macro_for_var =
+  (
+   CCAS => 'AM_PROG_AS',
+   CCASFLAGS => 'AM_PROG_AS',
+   EMACS => 'AM_PATH_LISPDIR',
+   GCJ => 'AM_PROG_GCJ',
+   LEX => 'AM_PROG_LEX',
+   LIBTOOL => 'LT_INIT',
+   lispdir => 'AM_PATH_LISPDIR',
+   pkgpyexecdir => 'AM_PATH_PYTHON',
+   pkgpythondir => 'AM_PATH_PYTHON',
+   pyexecdir => 'AM_PATH_PYTHON',
+   PYTHON => 'AM_PATH_PYTHON',
+   pythondir => 'AM_PATH_PYTHON',
+   );
+
+# Macros shipped with Autoconf.
+my %_ac_macro_for_var =
+  (
+   ALLOCA => 'AC_FUNC_ALLOCA',
+   CC => 'AC_PROG_CC',
+   CFLAGS => 'AC_PROG_CC',
+   CXX => 'AC_PROG_CXX',
+   CXXFLAGS => 'AC_PROG_CXX',
+   F77 => 'AC_PROG_F77',
+   FFLAGS => 'AC_PROG_F77',
+   FC => 'AC_PROG_FC',
+   FCFLAGS => 'AC_PROG_FC',
+   OBJC => 'AC_PROG_OBJC',
+   OBJCFLAGS => 'AC_PROG_OBJC',
+   OBJCXX => 'AC_PROG_OBJCXX',
+   OBJCXXFLAGS => 'AC_PROG_OBJCXX',
+   RANLIB => 'AC_PROG_RANLIB',
+   UPC => 'AM_PROG_UPC',
+   UPCFLAGS => 'AM_PROG_UPC',
+   YACC => 'AC_PROG_YACC',
+   );
+
+# The name of the configure.ac file.
+my $configure_ac;
+
+# Variables that can be overridden without complaint from -Woverride
+my %_silent_variable_override =
+  (AM_MAKEINFOHTMLFLAGS => 1,
+   AR => 1,
+   ARFLAGS => 1,
+   DEJATOOL => 1,
+   JAVAC => 1,
+   JAVAROOT => 1);
+
+# Count of helper variables used to implement conditional '+='.
+my $_appendvar;
+
+# Each call to C<Automake::Variable::traverse_recursively> gets an
+# unique label. This is used to detect recursively defined variables.
+my $_traversal = 0;
+
+
+=head2 Error reporting functions
+
+In these functions, C<$var> can be either a variable name, or
+an instance of C<Automake::Variable>.
+
+=over 4
+
+=item C<err_var ($var, $message, [%options])>
+
+Uncategorized errors about variables.
+
+=cut
+
+sub err_var ($$;%)
+{
+  msg_var ('error', @_);
+}
+
+=item C<msg_cond_var ($channel, $cond, $var, $message, [%options])>
+
+Messages about conditional variable.
+
+=cut
+
+sub msg_cond_var ($$$$;%)
+{
+  my ($channel, $cond, $var, $msg, %opts) = @_;
+  my $v = ref ($var) ? $var : rvar ($var);
+  msg $channel, $v->rdef ($cond)->location, $msg, %opts;
+}
+
+=item C<msg_var ($channel, $var, $message, [%options])>
+
+Messages about variables.
+
+=cut
+
+sub msg_var ($$$;%)
+{
+  my ($channel, $var, $msg, %opts) = @_;
+  my $v = ref ($var) ? $var : rvar ($var);
+  # Don't know which condition is concerned.  Pick any.
+  my $cond = $v->conditions->one_cond;
+  msg_cond_var $channel, $cond, $v, $msg, %opts;
+}
+
+=item C<$bool = reject_var ($varname, $error_msg)>
+
+Bail out with C<$error_msg> if a variable with name C<$varname> has
+been defined.
+
+Return true iff C<$varname> is defined.
+
+=cut
+
+sub reject_var ($$)
+{
+  my ($var, $msg) = @_;
+  my $v = var ($var);
+  if ($v)
+    {
+      err_var $v, $msg;
+      return 1;
+    }
+  return 0;
+}
+
+=back
+
+=head2 Administrative functions
+
+=over 4
+
+=item C<Automake::Variable::hook ($varname, $fun)>
+
+Declare a function to be called whenever a variable
+named C<$varname> is defined or redefined.
+
+C<$fun> should take two arguments: C<$type> and C<$value>.
+When type is C<''> or <':'>, C<$value> is the value being
+assigned to C<$varname>.  When C<$type> is C<'+'>, C<$value>
+is the value being appended to  C<$varname>.
+
+=cut
+
+use vars '%_hooks';
+sub hook ($$)
+{
+  my ($var, $fun) = @_;
+  $_hooks{$var} = $fun;
+}
+
+=item C<variables ([$suffix])>
+
+Returns the list of all L<Automake::Variable> instances.  (I.e., all
+variables defined so far.)  If C<$suffix> is supplied, return only
+the L<Automake::Variable> instances that ends with C<_$suffix>.
+
+=cut
+
+use vars '%_variable_dict', '%_primary_dict';
+sub variables (;$)
+{
+  my ($suffix) = @_;
+  if ($suffix)
+    {
+      if (exists $_primary_dict{$suffix})
+       {
+         return values %{$_primary_dict{$suffix}};
+       }
+      else
+       {
+         return ();
+       }
+    }
+  else
+    {
+      return values %_variable_dict;
+    }
+}
+
+=item C<Automake::Variable::reset>
+
+The I<forget all> function.  Clears all know variables and reset some
+other internal data.
+
+=cut
+
+sub reset ()
+{
+  %_variable_dict = ();
+  %_primary_dict = ();
+  $_appendvar = 0;
+  @_var_order = ();
+  %_gen_varname = ();
+  %_gen_varname_n = ();
+  $_traversal = 0;
+}
+
+=item C<var ($varname)>
+
+Return the C<Automake::Variable> object for the variable
+named C<$varname> if defined.  Return 0 otherwise.
+
+=cut
+
+sub var ($)
+{
+  my ($name) = @_;
+  return $_variable_dict{$name} if exists $_variable_dict{$name};
+  return 0;
+}
+
+=item C<vardef ($varname, $cond)>
+
+Return the C<Automake::VarDef> object for the variable named
+C<$varname> if defined in condition C<$cond>.  Return false
+if the condition or the variable does not exist.
+
+=cut
+
+sub vardef ($$)
+{
+  my ($name, $cond) = @_;
+  my $var = var $name;
+  return $var && $var->def ($cond);
+}
+
+# Create the variable if it does not exist.
+# This is used only by other functions in this package.
+sub _cvar ($)
+{
+  my ($name) = @_;
+  my $v = var $name;
+  return $v if $v;
+  return _new Automake::Variable $name;
+}
+
+=item C<rvar ($varname)>
+
+Return the C<Automake::Variable> object for the variable named
+C<$varname>.  Abort with an internal error if the variable was not
+defined.
+
+The I<r> in front of C<var> stands for I<required>.  One
+should call C<rvar> to assert the variable's existence.
+
+=cut
+
+sub rvar ($)
+{
+  my ($name) = @_;
+  my $v = var $name;
+  prog_error ("undefined variable $name\n" . &variables_dump)
+    unless $v;
+  return $v;
+}
+
+=item C<rvardef ($varname, $cond)>
+
+Return the C<Automake::VarDef> object for the variable named
+C<$varname> if defined in condition C<$cond>.  Abort with an internal
+error if the condition or the variable does not exist.
+
+=cut
+
+sub rvardef ($$)
+{
+  my ($name, $cond) = @_;
+  return rvar ($name)->rdef ($cond);
+}
+
+=back
+
+=head2 Methods
+
+C<Automake::Variable> is a subclass of C<Automake::Item>.  See
+that package for inherited methods.
+
+Here are the methods specific to the C<Automake::Variable> instances.
+Use the C<define> function, described latter, to create such objects.
+
+=over 4
+
+=cut
+
+# Create Automake::Variable objects.  This is used
+# only in this file.  Other users should use
+# the "define" function.
+sub _new ($$)
+{
+  my ($class, $name) = @_;
+  my $self = Automake::Item::new ($class, $name);
+  $self->{'scanned'} = 0;
+  $self->{'last-append'} = []; # helper variable for last conditional append.
+  $_variable_dict{$name} = $self;
+  if ($name =~ /_([[:alnum:]]+)$/)
+    {
+      $_primary_dict{$1}{$name} = $self;
+    }
+  return $self;
+}
+
+# _check_ambiguous_condition ($SELF, $COND, $WHERE)
+# -------------------------------------------------
+# Check for an ambiguous conditional.  This is called when a variable
+# is being defined conditionally.  If we already know about a
+# definition that is true under the same conditions, then we have an
+# ambiguity.
+sub _check_ambiguous_condition ($$$)
+{
+  my ($self, $cond, $where) = @_;
+  my $var = $self->name;
+  my ($message, $ambig_cond) = $self->conditions->ambiguous_p ($var, $cond);
+
+  # We allow silent variables to be overridden silently,
+  # by either silent or non-silent variables.
+  my $def = $self->def ($ambig_cond);
+  if ($message && $def->pretty != VAR_SILENT)
+    {
+      msg 'syntax', $where, "$message ...", partial => 1;
+      msg_var ('syntax', $var, "... '$var' previously defined here");
+      verb ($self->dump);
+    }
+}
+
+=item C<$bool = $var-E<gt>check_defined_unconditionally ([$parent, $parent_cond])>
+
+Warn if the variable is conditionally defined.  C<$parent> is the name
+of the parent variable, and C<$parent_cond> the condition of the parent
+definition.  These two variables are used to display diagnostics.
+
+=cut
+
+sub check_defined_unconditionally ($;$$)
+{
+  my ($self, $parent, $parent_cond) = @_;
+
+  if (!$self->conditions->true)
+    {
+      if ($parent)
+       {
+         msg_cond_var ('unsupported', $parent_cond, $parent,
+                       "automake does not support conditional definition of "
+                       . $self->name . " in $parent");
+       }
+      else
+       {
+         msg_var ('unsupported', $self,
+                  "automake does not support " . $self->name
+                  . " being defined conditionally");
+       }
+    }
+}
+
+=item C<$str = $var-E<gt>output ([@conds])>
+
+Format all the definitions of C<$var> if C<@cond> is not specified,
+else only that corresponding to C<@cond>.
+
+=cut
+
+sub output ($@)
+{
+  my ($self, @conds) = @_;
+
+  @conds = $self->conditions->conds
+    unless @conds;
+
+  my $res = '';
+  my $name = $self->name;
+
+  foreach my $cond (@conds)
+    {
+      my $def = $self->def ($cond);
+      prog_error ("unknown condition '" . $cond->human . "' for '"
+                 . $self->name . "'")
+       unless $def;
+
+      next
+       if $def->pretty == VAR_SILENT;
+
+      $res .= $def->comment;
+
+      my $val = $def->raw_value;
+      my $equals = $def->type eq ':' ? ':=' : '=';
+      my $str = $cond->subst_string;
+
+
+      if ($def->pretty == VAR_ASIS)
+       {
+         my $output_var = "$name $equals $val";
+         $output_var =~ s/^/$str/meg;
+         $res .= "$output_var\n";
+       }
+      elsif ($def->pretty == VAR_PRETTY)
+       {
+         # Suppress escaped new lines.  &makefile_wrap will
+         # add them back, maybe at other places.
+         $val =~ s/\\$//mg;
+         my $wrap = makefile_wrap ("$str$name $equals", "$str\t",
+                                   split (' ', $val));
+
+         # If the last line of the definition is made only of
+         # @substitutions@, append an empty variable to make sure it
+         # cannot be substituted as a blank line (that would confuse
+         # HP-UX Make).
+         $wrap = makefile_wrap ("$str$name $equals", "$str\t",
+                                split (' ', $val), '$(am__empty)')
+           if $wrap =~ /\n(\s*@\w+@)+\s*$/;
+
+         $res .= $wrap;
+       }
+      else # ($def->pretty == VAR_SORTED)
+       {
+         # Suppress escaped new lines.  &makefile_wrap will
+         # add them back, maybe at other places.
+         $val =~ s/\\$//mg;
+         $res .= makefile_wrap ("$str$name $equals", "$str\t",
+                                sort (split (' ' , $val)));
+       }
+    }
+  return $res;
+}
+
+=item C<@values = $var-E<gt>value_as_list ($cond, [$parent, $parent_cond])>
+
+Get the value of C<$var> as a list, given a specified condition,
+without recursing through any subvariables.
+
+C<$cond> is the condition of interest.  C<$var> does not need
+to be defined for condition C<$cond> exactly, but it needs
+to be defined for at most one condition implied by C<$cond>.
+
+C<$parent> and C<$parent_cond> designate the name and the condition
+of the parent variable, i.e., the variable in which C<$var> is
+being expanded.  These are used in diagnostics.
+
+For example, if C<A> is defined as "C<foo $(B) bar>" in condition
+C<TRUE>, calling C<rvar ('A')->value_as_list (TRUE)> will return
+C<("foo", "$(B)", "bar")>.
+
+=cut
+
+sub value_as_list ($$;$$)
+{
+  my ($self, $cond, $parent, $parent_cond) = @_;
+  my @result;
+
+  # Get value for given condition
+  my $onceflag;
+  foreach my $vcond ($self->conditions->conds)
+    {
+      if ($vcond->true_when ($cond))
+       {
+         # If there is more than one definitions of $var matching
+         # $cond then we are in trouble: tell the user we need a
+         # paddle.  Continue by merging results from all conditions,
+         # although it doesn't make much sense.
+         $self->check_defined_unconditionally ($parent, $parent_cond)
+           if $onceflag;
+         $onceflag = 1;
+
+         my $val = $self->rdef ($vcond)->value;
+         push @result, split (' ', $val);
+       }
+    }
+  return @result;
+}
+
+=item C<@values = $var-E<gt>value_as_list_recursive ([%options])>
+
+Return the contents of C<$var> as a list, split on whitespace.  This
+will recursively follow C<$(...)> and C<${...}> inclusions.  It
+preserves C<@...@> substitutions.
+
+C<%options> is a list of option for C<Variable::traverse_recursively>
+(see this method).  The most useful is C<cond_filter>:
+
+  $var->value_as_list_recursive (cond_filter => $cond)
+
+will return the contents of C<$var> and any subvariable in all
+conditions implied by C<$cond>.
+
+C<%options> can also carry options specific to C<value_as_list_recursive>.
+Presently, the only such option is C<location =E<gt> 1> which instructs
+C<value_as_list_recursive> to return a list of C<[$location, @values]> pairs.
+
+=cut
+
+sub value_as_list_recursive ($;%)
+{
+  my ($var, %options) = @_;
+
+  return $var->traverse_recursively
+    (# Construct [$location, $value] pairs if requested.
+     sub {
+       my ($var, $val, $cond, $full_cond) = @_;
+       return [$var->rdef ($cond)->location, $val] if $options{'location'};
+       return $val;
+     },
+     # Collect results.
+     sub {
+       my ($var, $parent_cond, @allresults) = @_;
+       return map { my ($cond, @vals) = @$_; @vals } @allresults;
+     },
+     %options);
+}
+
+
+=item C<$bool = $var-E<gt>has_conditional_contents>
+
+Return 1 if C<$var> or one of its subvariable was conditionally
+defined.  Return 0 otherwise.
+
+=cut
+
+sub has_conditional_contents ($)
+{
+  my ($self) = @_;
+
+  # Traverse the variable recursively until we
+  # find a variable defined conditionally.
+  # Use 'die' to abort the traversal, and pass it '$full_cond'
+  # to we can find easily whether the 'eval' block aborted
+  # because we found a condition, or for some other error.
+  eval
+    {
+      $self->traverse_recursively
+       (sub
+        {
+          my ($subvar, $val, $cond, $full_cond) = @_;
+          die $full_cond if ! $full_cond->true;
+          return ();
+        },
+        sub { return (); });
+    };
+  if ($@)
+    {
+      return 1 if ref ($@) && $@->isa ("Automake::Condition");
+      # Propagate other errors.
+      die;
+    }
+  return 0;
+}
+
+
+=item C<$string = $var-E<gt>dump>
+
+Return a string describing all we know about C<$var>.
+For debugging.
+
+=cut
+
+sub dump ($)
+{
+  my ($self) = @_;
+
+  my $text = $self->name . ": \n  {\n";
+  foreach my $vcond ($self->conditions->conds)
+    {
+      $text .= "    " . $vcond->human . " => " . $self->rdef ($vcond)->dump;
+    }
+  $text .= "  }\n";
+  return $text;
+}
+
+
+=back
+
+=head2 Utility functions
+
+=over 4
+
+=item C<@list = scan_variable_expansions ($text)>
+
+Return the list of variable names expanded in C<$text>.  Note that
+unlike some other functions, C<$text> is not split on spaces before we
+check for subvariables.
+
+=cut
+
+sub scan_variable_expansions ($)
+{
+  my ($text) = @_;
+  my @result = ();
+
+  # Strip comments.
+  $text =~ s/#.*$//;
+
+  # Record each use of ${stuff} or $(stuff) that does not follow a $.
+  while ($text =~ /(?<!\$)\$(?:\{([^\}]*)\}|\(([^\)]*)\))/g)
+    {
+      my $var = $1 || $2;
+      # The occurrence may look like $(string1[:subst1=[subst2]]) but
+      # we want only 'string1'.
+      $var =~ s/:[^:=]*=[^=]*$//;
+      push @result, $var;
+    }
+
+  return @result;
+}
+
+=item C<check_variable_expansions ($text, $where)>
+
+Check variable expansions in C<$text> and warn about any name that
+does not conform to POSIX.  C<$where> is the location of C<$text>
+for the error message.
+
+=cut
+
+sub check_variable_expansions ($$)
+{
+  my ($text, $where) = @_;
+  # Catch expansion of variables whose name does not conform to POSIX.
+  foreach my $var (scan_variable_expansions ($text))
+    {
+      if ($var !~ /$_VARIABLE_PATTERN/o)
+       {
+         # If the variable name contains a space, it's likely
+         # to be a GNU make extension (such as $(addsuffix ...)).
+         # Mention this in the diagnostic.
+         my $gnuext = "";
+         $gnuext = "\n(probably a GNU make extension)" if $var =~ / /;
+         # 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");
+           }
+       }
+    }
+}
+
+
+
+=item C<Automake::Variable::define($varname, $owner, $type, $cond, $value, $comment, $where, $pretty)>
+
+Define or append to a new variable.
+
+C<$varname>: the name of the variable being defined.
+
+C<$owner>: owner of the variable (one of C<VAR_MAKEFILE>,
+C<VAR_CONFIGURE>, or C<VAR_AUTOMAKE>, defined by L<Automake::VarDef>).
+Variables can be overridden, provided the new owner is not weaker
+(C<VAR_AUTOMAKE> < C<VAR_CONFIGURE> < C<VAR_MAKEFILE>).
+
+C<$type>: the type of the assignment (C<''> for C<FOO = bar>,
+C<':'> for C<FOO := bar>, and C<'+'> for C<'FOO += bar'>).
+
+C<$cond>: the C<Condition> in which C<$var> is being defined.
+
+C<$value>: the value assigned to C<$var> in condition C<$cond>.
+
+C<$comment>: any comment (C<'# bla.'>) associated with the assignment.
+Comments from C<+=> assignments stack with comments from the last C<=>
+assignment.
+
+C<$where>: the C<Location> of the assignment.
+
+C<$pretty>: whether C<$value> should be pretty printed (one of
+C<VAR_ASIS>, C<VAR_PRETTY>, C<VAR_SILENT>, or C<VAR_SORTED>, defined
+by by L<Automake::VarDef>).  C<$pretty> applies only to real
+assignments.  I.e., it does not apply to a C<+=> assignment (except
+when part of it is being done as a conditional C<=> assignment).
+
+This function will all run any hook registered with the C<hook>
+function.
+
+=cut
+
+sub define ($$$$$$$$)
+{
+  my ($var, $owner, $type, $cond, $value, $comment, $where, $pretty) = @_;
+
+  prog_error "$cond is not a reference"
+    unless ref $cond;
+
+  prog_error "$where is not a reference"
+    unless ref $where;
+
+  prog_error "pretty argument missing"
+    unless defined $pretty && ($pretty == VAR_ASIS
+                              || $pretty == VAR_PRETTY
+                              || $pretty == VAR_SILENT
+                              || $pretty == VAR_SORTED);
+
+  error $where, "bad characters in variable name '$var'"
+    if $var !~ /$_VARIABLE_PATTERN/o;
+
+  # ':='-style assignments are not acknowledged by POSIX.  Moreover it
+  # has multiple meanings.  In GNU make or BSD make it means "assign
+  # with immediate expansion", while in OSF make it is used for
+  # conditional assignments.
+  msg ('portability', $where, "':='-style assignments are not portable")
+    if $type eq ':';
+
+  check_variable_expansions ($value, $where);
+
+  # If there's a comment, make sure it is \n-terminated.
+  if ($comment)
+    {
+      chomp $comment;
+      $comment .= "\n";
+    }
+  else
+    {
+      $comment = '';
+    }
+
+  my $self = _cvar $var;
+
+  my $def = $self->def ($cond);
+  my $new_var = $def ? 0 : 1;
+
+  # Additional checks for Automake definitions.
+  if ($owner == VAR_AUTOMAKE && ! $new_var)
+    {
+      # An Automake variable must be consistently defined with the same
+      # sign by Automake.
+      if ($def->type ne $type && $def->owner == VAR_AUTOMAKE)
+       {
+         error ($def->location,
+                "Automake variable '$var' was set with '"
+                . $def->type . "=' here ...", partial => 1);
+         error ($where, "... and is now set with '$type=' here.");
+         prog_error ("Automake variable assignments should be consistently\n"
+                     . "defined with the same sign");
+       }
+
+      # If Automake tries to override a value specified by the user,
+      # just don't let it do.
+      if ($def->owner != VAR_AUTOMAKE)
+       {
+         if (! exists $_silent_variable_override{$var})
+           {
+             my $condmsg = ($cond == TRUE
+                            ? '' : (" in condition '" . $cond->human . "'"));
+             msg_cond_var ('override', $cond, $var,
+                           "user variable '$var' defined here$condmsg ...",
+                           partial => 1);
+             msg ('override', $where,
+                  "... overrides Automake variable '$var' defined here");
+           }
+         verb ("refusing to override the user definition of:\n"
+               . $self->dump ."with '" . $cond->human . "' => '$value'");
+         return;
+       }
+    }
+
+  # Differentiate assignment types.
+
+  # 1. append (+=) to a variable defined for current condition
+  if ($type eq '+' && ! $new_var)
+    {
+      $def->append ($value, $comment);
+      $self->{'last-append'} = [];
+
+      # Only increase owners.  A VAR_CONFIGURE variable augmented in a
+      # Makefile.am becomes a VAR_MAKEFILE variable.
+      $def->set_owner ($owner, $where->clone)
+       if $owner > $def->owner;
+    }
+  # 2. append (+=) to a variable defined for *another* condition
+  elsif ($type eq '+' && ! $self->conditions->false)
+    {
+      # * Generally, $cond is not TRUE.  For instance:
+      #     FOO = foo
+      #     if COND
+      #       FOO += bar
+      #     endif
+      #   In this case, we declare an helper variable conditionally,
+      #   and append it to FOO:
+      #     FOO = foo $(am__append_1)
+      #     @COND_TRUE@am__append_1 = bar
+      #   Of course if FOO is defined under several conditions, we add
+      #   $(am__append_1) to each definitions.
+      #
+      # * If $cond is TRUE, we don't need the helper variable.  E.g., in
+      #     if COND1
+      #       FOO = foo1
+      #     else
+      #       FOO = foo2
+      #     endif
+      #     FOO += bar
+      #   we can add bar directly to all definition of FOO, and output
+      #     @COND_TRUE@FOO = foo1 bar
+      #     @COND_FALSE@FOO = foo2 bar
+
+      my $lastappend = [];
+      # Do we need an helper variable?
+      if ($cond != TRUE)
+        {
+         # Can we reuse the helper variable created for the previous
+         # append?  (We cannot reuse older helper variables because
+         # we must preserve the order of items appended to the
+         # variable.)
+         my $condstr = $cond->string;
+         my $key = "$var:$condstr";
+         my ($appendvar, $appendvarcond) = @{$self->{'last-append'}};
+         if ($appendvar && $condstr eq $appendvarcond)
+           {
+             # Yes, let's simply append to it.
+             $var = $appendvar;
+             $owner = VAR_AUTOMAKE;
+             $self = var ($var);
+             $def = $self->rdef ($cond);
+             $new_var = 0;
+           }
+         else
+           {
+             # No, create it.
+             my $num = ++$_appendvar;
+             my $hvar = "am__append_$num";
+             $lastappend = [$hvar, $condstr];
+             &define ($hvar, VAR_AUTOMAKE, '+',
+                      $cond, $value, $comment, $where, $pretty);
+
+             # Now HVAR is to be added to VAR.
+             $comment = '';
+             $value = "\$($hvar)";
+           }
+       }
+
+      # Add VALUE to all definitions of SELF.
+      foreach my $vcond ($self->conditions->conds)
+        {
+         # We have a bit of error detection to do here.
+         # This:
+         #   if COND1
+         #     X = Y
+         #   endif
+         #   X += Z
+         # should be rejected because X is not defined for all conditions
+         # where '+=' applies.
+         my $undef_cond = $self->not_always_defined_in_cond ($cond);
+         if (! $undef_cond->false)
+           {
+             error ($where,
+                    "cannot apply '+=' because '$var' is not defined "
+                    . "in\nthe following conditions:\n  "
+                    . join ("\n  ", map { $_->human } $undef_cond->conds)
+                    . "\neither define '$var' in these conditions,"
+                    . " or use\n'+=' in the same conditions as"
+                    . " the definitions.");
+           }
+         else
+           {
+             &define ($var, $owner, '+', $vcond, $value, $comment,
+                      $where, $pretty);
+           }
+       }
+      $self->{'last-append'} = $lastappend;
+    }
+  # 3. first assignment (=, :=, or +=)
+  else
+    {
+      # There must be no previous value unless the user is redefining
+      # an Automake variable or an AC_SUBST variable for an existing
+      # condition.
+      _check_ambiguous_condition ($self, $cond, $where)
+       unless (!$new_var
+               && (($def->owner == VAR_AUTOMAKE && $owner != VAR_AUTOMAKE)
+                   || $def->owner == VAR_CONFIGURE));
+
+      # Never decrease an owner.
+      $owner = $def->owner
+       if ! $new_var && $owner < $def->owner;
+
+      # Assignments to a macro set its location.  We don't adjust
+      # locations for '+='.  Ideally I suppose we would associate
+      # line numbers with random bits of text.
+      $def = new Automake::VarDef ($var, $value, $comment, $where->clone,
+                                  $type, $owner, $pretty);
+      $self->set ($cond, $def);
+      push @_var_order, $var;
+    }
+
+  # Call any defined hook.  This helps to update some internal state
+  # *while* parsing the file.  For instance the handling of SUFFIXES
+  # requires this (see var_SUFFIXES_trigger).
+  &{$_hooks{$var}}($type, $value) if exists $_hooks{$var};
+}
+
+=item C<variable_delete ($varname, [@conds])>
+
+Forget about C<$varname> under the conditions C<@conds>, or completely
+if C<@conds> is empty.
+
+=cut
+
+sub variable_delete ($@)
+{
+  my ($var, @conds) = @_;
+
+  if (!@conds)
+    {
+      delete $_variable_dict{$var};
+    }
+  else
+    {
+      for my $cond (@conds)
+       {
+         delete $_variable_dict{$var}{'defs'}{$cond};
+       }
+    }
+  if ($var =~ /_([[:alnum:]]+)$/)
+    {
+      delete $_primary_dict{$1}{$var};
+    }
+}
+
+=item C<$str = variables_dump>
+
+Return a string describing all we know about all variables.
+For debugging.
+
+=cut
+
+sub variables_dump ()
+{
+  my $text = "all variables:\n{\n";
+  foreach my $var (sort { $a->name cmp $b->name } variables)
+    {
+      $text .= $var->dump;
+    }
+  $text .= "}\n";
+  return $text;
+}
+
+
+=item C<$var = set_seen ($varname)>
+
+=item C<$var = $var-E<gt>set_seen>
+
+Mark all definitions of this variable as examined, if the variable
+exists.  See L<Automake::VarDef::set_seen>.
+
+Return the C<Variable> object if the variable exists, or 0
+otherwise (i.e., as the C<var> function).
+
+=cut
+
+sub set_seen ($)
+{
+  my ($self) = @_;
+  $self = ref $self ? $self : var $self;
+
+  return 0 unless $self;
+
+  for my $c ($self->conditions->conds)
+    {
+      $self->rdef ($c)->set_seen;
+    }
+
+  return $self;
+}
+
+
+=item C<$count = require_variables ($where, $reason, $cond, @variables)>
+
+Make sure that each supplied variable is defined in C<$cond>.
+Otherwise, issue a warning showing C<$reason> (C<$reason> should be
+the reason why these variables are required, for instance C<'option foo
+used'>).  If we know which macro can define this variable, hint the
+user.  Return the number of undefined variables.
+
+=cut
+
+sub require_variables ($$$@)
+{
+  my ($where, $reason, $cond, @vars) = @_;
+  my $res = 0;
+  $reason .= ' but ' unless $reason eq '';
+
+  $configure_ac = find_configure_ac
+    unless defined $configure_ac;
+
+ VARIABLE:
+  foreach my $var (@vars)
+    {
+      # Nothing to do if the variable exists.
+      next VARIABLE
+       if vardef ($var, $cond);
+
+      my $text = "$reason'$var' is undefined\n";
+      my $v = var $var;
+      if ($v)
+       {
+         my $undef_cond = $v->not_always_defined_in_cond ($cond);
+         next VARIABLE
+           if $undef_cond->false;
+         $text .= ("in the following conditions:\n  "
+                   . join ("\n  ", map { $_->human } $undef_cond->conds)
+                   . "\n");
+       }
+
+      ++$res;
+
+      if (exists $_am_macro_for_var{$var})
+       {
+         my $mac = $_am_macro_for_var{$var};
+         $text .= "  The usual way to define '$var' is to add "
+           . "'$mac'\n  to '$configure_ac' and run 'aclocal' and "
+           . "'autoconf' again.";
+         # aclocal will not warn about undefined macros unless it
+         # starts with AM_.
+         $text .= "\n  If '$mac' is in '$configure_ac', make sure\n"
+           . "  its definition is in aclocal's search path."
+           unless $mac =~ /^AM_/;
+       }
+      elsif (exists $_ac_macro_for_var{$var})
+       {
+         $text .= "  The usual way to define '$var' is to add "
+           . "'$_ac_macro_for_var{$var}'\n  to '$configure_ac' and "
+           . "run 'autoconf' again.";
+       }
+
+      error $where, $text, uniq_scope => US_GLOBAL;
+    }
+  return $res;
+}
+
+=item C<$count = $var->requires_variables ($reason, @variables)>
+
+Same as C<require_variables>, but a method of Automake::Variable.
+C<@variables> should be defined in the same conditions as C<$var> is
+defined.
+
+=cut
+
+sub requires_variables ($$@)
+{
+  my ($var, $reason, @args) = @_;
+  my $res = 0;
+  for my $cond ($var->conditions->conds)
+    {
+      $res += require_variables ($var->rdef ($cond)->location, $reason,
+                                $cond, @args);
+    }
+  return $res;
+}
+
+
+=item C<variable_value ($var)>
+
+Get the C<TRUE> value of a variable, warn if the variable is
+conditionally defined.  C<$var> can be either a variable name
+or a C<Automake::Variable> instance (this allows calls such
+as C<$var-E<gt>variable_value>).
+
+=cut
+
+sub variable_value ($)
+{
+    my ($var) = @_;
+    my $v = ref ($var) ? $var : var ($var);
+    return () unless $v;
+    $v->check_defined_unconditionally;
+    my $d = $v->def (TRUE);
+    return $d ? $d->value : "";
+}
+
+=item C<$str = output_variables>
+
+Format definitions for all variables.
+
+=cut
+
+sub output_variables ()
+{
+  my $res = '';
+  # We output variables it in the same order in which they were
+  # defined (skipping duplicates).
+  my @vars = uniq @_var_order;
+
+  # Output all the Automake variables.  If the user changed one,
+  # then it is now marked as VAR_CONFIGURE or VAR_MAKEFILE.
+  foreach my $var (@vars)
+    {
+      my $v = rvar $var;
+      foreach my $cond ($v->conditions->conds)
+       {
+         $res .= $v->output ($cond)
+           if $v->rdef ($cond)->owner == VAR_AUTOMAKE;
+       }
+    }
+
+  # Now dump the user variables that were defined.
+  foreach my $var (@vars)
+    {
+      my $v = rvar $var;
+      foreach my $cond ($v->conditions->conds)
+       {
+         $res .= $v->output ($cond)
+           if $v->rdef ($cond)->owner != VAR_AUTOMAKE;
+       }
+    }
+  return $res;
+}
+
+=item C<$var-E<gt>traverse_recursively (&fun_item, &fun_collect, [cond_filter =E<gt> $cond_filter], [inner_expand =E<gt> 1], [skip_ac_subst =E<gt> 1])>
+
+Split the value of the Automake::Variable C<$var> on space, and
+traverse its components recursively.
+
+If C<$cond_filter> is an C<Automake::Condition>, process any
+conditions which are true when C<$cond_filter> is true.  Otherwise,
+process all conditions.
+
+We distinguish two kinds of items in the content of C<$var>.
+Terms that look like C<$(foo)> or C<${foo}> are subvariables
+and cause recursion.  Other terms are assumed to be filenames.
+
+Each time a filename is encountered, C<&fun_item> is called with the
+following arguments:
+
+  ($var,        -- the Automake::Variable we are currently
+                   traversing
+   $val,        -- the item (i.e., filename) to process
+   $cond,       -- the Condition for the $var definition we are
+                   examining (ignoring the recursion context)
+   $full_cond)  -- the full Condition, taking into account
+                   conditions inherited from parent variables
+                   during recursion
+
+If C<inner_expand> is set, variable references occurring in filename
+(as in C<$(BASE).ext>) are expanded before the filename is passed to
+C<&fun_item>.
+
+If C<skip_ac_subst> is set, Autoconf @substitutions@ will be skipped,
+i.e., C<&fun_item> will never be called for them.
+
+C<&fun_item> may return a list of items, they will be passed to
+C<&fun_store> later on.  Define C<&fun_item> or @<&fun_store> as
+C<undef> when they serve no purpose.
+
+Once all items of a variable have been processed, the result (of the
+calls to C<&fun_items>, or of recursive traversals of subvariables)
+are passed to C<&fun_collect>.  C<&fun_collect> receives three
+arguments:
+
+  ($var,         -- the variable being traversed
+   $parent_cond, -- the Condition inherited from parent
+                    variables during recursion
+   @condlist)    -- a list of [$cond, @results] pairs
+                    where each $cond appear only once, and @result
+                    are all the results for this condition.
+
+Typically you should do C<$cond->merge ($parent_cond)> to recompute
+the C<$full_cond> associated to C<@result>.  C<&fun_collect> may
+return a list of items, that will be used as the result of
+C<Automake::Variable::traverse_recursively> (the top-level, or its
+recursive calls).
+
+=cut
+
+# Contains a stack of 'from' and 'to' parts of variable
+# substitutions currently in force.
+my @_substfroms;
+my @_substtos;
+sub traverse_recursively ($&&;%)
+{
+  ++$_traversal;
+  @_substfroms = ();
+  @_substtos = ();
+  my ($var, $fun_item, $fun_collect, %options) = @_;
+  my $cond_filter = $options{'cond_filter'};
+  my $inner_expand = $options{'inner_expand'};
+  my $skip_ac_subst = $options{'skip_ac_subst'};
+  return $var->_do_recursive_traversal ($var,
+                                       $fun_item, $fun_collect,
+                                       $cond_filter, TRUE, $inner_expand,
+                                       $skip_ac_subst)
+}
+
+# The guts of Automake::Variable::traverse_recursively.
+sub _do_recursive_traversal ($$&&$$$$)
+{
+  my ($var, $parent, $fun_item, $fun_collect, $cond_filter, $parent_cond,
+      $inner_expand, $skip_ac_subst) = @_;
+
+  $var->set_seen;
+
+  if ($var->{'scanned'} == $_traversal)
+    {
+      err_var $var, "variable '" . $var->name() . "' recursively defined";
+      return ();
+    }
+  $var->{'scanned'} = $_traversal;
+
+  my @allresults = ();
+  my $cond_once = 0;
+  foreach my $cond ($var->conditions->conds)
+    {
+      if (ref $cond_filter)
+       {
+         # Ignore conditions that don't match $cond_filter.
+         next if ! $cond->true_when ($cond_filter);
+         # If we found out several definitions of $var
+         # match $cond_filter then we are in trouble.
+         # Tell the user we don't support this.
+         $var->check_defined_unconditionally ($parent, $parent_cond)
+           if $cond_once;
+         $cond_once = 1;
+       }
+      my @result = ();
+      my $full_cond = $cond->merge ($parent_cond);
+
+      my @to_process = $var->value_as_list ($cond, $parent, $parent_cond);
+      while (@to_process)
+       {
+         my $val = shift @to_process;
+         # If $val is a variable (i.e. ${foo} or $(bar), not a filename),
+         # handle the sub variable recursively.
+         # (Backslashes before '}' and ')' within brackets are here to
+         # please Emacs's indentation.)
+         if ($val =~ /^\$\{([^\}]*)\}$/ || $val =~ /^\$\(([^\)]*)\)$/)
+           {
+             my $subvarname = $1;
+
+             # If the user uses a losing variable name, just ignore it.
+             # This isn't ideal, but people have requested it.
+             next if ($subvarname =~ /\@.*\@/);
+
+             # See if the variable is actually a substitution reference
+             my ($from, $to);
+              # This handles substitution references like ${foo:.a=.b}.
+             if ($subvarname =~ /^([^:]*):([^=]*)=(.*)$/o)
+               {
+                 $subvarname = $1;
+                 $to = $3;
+                 $from = quotemeta $2;
+               }
+
+             my $subvar = var ($subvarname);
+             # Don't recurse into undefined variables.
+             next unless $subvar;
+
+             push @_substfroms, $from;
+             push @_substtos, $to;
+
+             my @res = $subvar->_do_recursive_traversal ($parent,
+                                                         $fun_item,
+                                                         $fun_collect,
+                                                         $cond_filter,
+                                                         $full_cond,
+                                                         $inner_expand,
+                                                         $skip_ac_subst);
+             push (@result, @res);
+
+             pop @_substfroms;
+             pop @_substtos;
+
+             next;
+           }
+         # Try to expand variable references inside filenames such as
+         # '$(NAME).txt'.  We do not handle ':.foo=.bar'
+         # substitutions, but it would make little sense to use this
+         # here anyway.
+         elsif ($inner_expand
+                && ($val =~ /\$\{([^\}]*)\}/ || $val =~ /\$\(([^\)]*)\)/))
+           {
+             my $subvarname = $1;
+             my $subvar = var $subvarname;
+             if ($subvar)
+               {
+                 # Replace the reference by its value, and reschedule
+                 # for expansion.
+                 foreach my $c ($subvar->conditions->conds)
+                   {
+                     if (ref $cond_filter)
+                       {
+                         # Ignore conditions that don't match $cond_filter.
+                         next if ! $c->true_when ($cond_filter);
+                         # If we found out several definitions of $var
+                         # match $cond_filter then we are in trouble.
+                         # Tell the user we don't support this.
+                         $subvar->check_defined_unconditionally ($var,
+                                                                 $full_cond)
+                           if $cond_once;
+                         $cond_once = 1;
+                       }
+                     my $subval = $subvar->rdef ($c)->value;
+                     $val =~ s/\$\{$subvarname\}/$subval/g;
+                     $val =~ s/\$\($subvarname\)/$subval/g;
+                     unshift @to_process, split (' ', $val);
+                   }
+                 next;
+               }
+             # We do not know any variable with this name.  Fall through
+             # to filename processing.
+           }
+         elsif ($skip_ac_subst && $val =~ /^\@.+\@$/)
+           {
+             next;
+           }
+
+         if ($fun_item) # $var is a filename we must process
+           {
+             my $substnum=$#_substfroms;
+             while ($substnum >= 0)
+               {
+                 $val =~ s/$_substfroms[$substnum]$/$_substtos[$substnum]/
+                   if defined $_substfroms[$substnum];
+                 $substnum -= 1;
+               }
+
+             # Make sure you update the doc of
+             # Automake::Variable::traverse_recursively
+             # if you change the prototype of &fun_item.
+             my @transformed = &$fun_item ($var, $val, $cond, $full_cond);
+             push (@result, @transformed);
+           }
+       }
+      push (@allresults, [$cond, @result]) if @result;
+    }
+
+  # We only care about _recursive_ variable definitions.  The user
+  # is free to use the same variable several times in the same definition.
+  $var->{'scanned'} = -1;
+
+  return ()
+    unless $fun_collect;
+  # Make sure you update the doc of Automake::Variable::traverse_recursively
+  # if you change the prototype of &fun_collect.
+  return &$fun_collect ($var, $parent_cond, @allresults);
+}
+
+# _hash_varname ($VAR)
+# --------------------
+# Compute the key associated $VAR in %_gen_varname.
+# See _gen_varname() below.
+sub _hash_varname ($)
+{
+  my ($var) = @_;
+  my $key = '';
+  foreach my $cond ($var->conditions->conds)
+    {
+      my @values = $var->value_as_list ($cond);
+      $key .= "($cond)@values";
+    }
+  return $key;
+}
+
+# _hash_values (@VALUES)
+# ----------------------
+# Hash @VALUES for %_gen_varname.  @VALUES should be a list
+# of pairs: ([$cond, @values], [$cond, @values], ...).
+# See _gen_varname() below.
+sub _hash_values (@)
+{
+  my $key = '';
+  foreach my $pair (@_)
+    {
+      my ($cond, @values) = @$pair;
+      $key .= "($cond)@values";
+    }
+  return $key;
+}
+# ($VARNAME, $GENERATED)
+# _gen_varname ($BASE, @DEFINITIONS)
+# ----------------------------------
+# Return a variable name starting with $BASE, that will be
+# used to store definitions @DEFINITIONS.
+# @DEFINITIONS is a list of pair [$COND, @OBJECTS].
+#
+# If we already have a $BASE-variable containing @DEFINITIONS, reuse
+# it and set $GENERATED to 0.  Otherwise construct a new name and set
+# $GENERATED to 1.
+#
+# This way, we avoid combinatorial explosion of the generated
+# variables.  Especially, in a Makefile such as:
+#
+# | if FOO1
+# | A1=1
+# | endif
+# |
+# | if FOO2
+# | A2=2
+# | endif
+# |
+# | ...
+# |
+# | if FOON
+# | AN=N
+# | endif
+# |
+# | B=$(A1) $(A2) ... $(AN)
+# |
+# | c_SOURCES=$(B)
+# | d_SOURCES=$(B)
+#
+# The generated c_OBJECTS and d_OBJECTS will share the same variable
+# definitions.
+#
+# This setup can be the case of a testsuite containing lots (>100) of
+# small C programs, all testing the same set of source files.
+sub _gen_varname ($@)
+{
+  my $base = shift;
+  my $key = _hash_values @_;
+
+  return ($_gen_varname{$base}{$key}, 0)
+    if exists $_gen_varname{$base}{$key};
+
+  my $num = 1 + ($_gen_varname_n{$base} || 0);
+  $_gen_varname_n{$base} = $num;
+  my $name = "${base}_${num}";
+  $_gen_varname{$base}{$key} = $name;
+
+  return ($name, 1);
+}
+
+=item C<$resvar = transform_variable_recursively ($var, $resvar, $base, $nodefine, $where, &fun_item, [%options])>
+
+=item C<$resvar = $var-E<gt>transform_variable_recursively ($resvar, $base, $nodefine, $where, &fun_item, [%options])>
+
+Traverse C<$var> recursively, and create a C<$resvar> variable in
+which each filename in C<$var> have been transformed using
+C<&fun_item>.  (C<$var> may be a variable name in the first syntax.
+It must be an C<Automake::Variable> otherwise.)
+
+Helper variables (corresponding to sub-variables of C<$var>) are
+created as needed, using C<$base> as prefix.
+
+Arguments are:
+  $var       source variable to traverse
+  $resvar    resulting variable to define
+  $base      prefix to use when naming subvariables of $resvar
+  $nodefine  if true, traverse $var but do not define any variable
+             (this assumes &fun_item has some useful side-effect)
+  $where     context into which variable definitions are done
+  &fun_item  a transformation function -- see the documentation
+             of &fun_item in Automake::Variable::traverse_recursively.
+
+This returns the string C<"\$($RESVAR)">.
+
+C<%options> is a list of options to pass to
+C<Variable::traverse_recursively> (see this method).
+
+=cut
+
+sub transform_variable_recursively ($$$$$&;%)
+{
+  my ($var, $resvar, $base, $nodefine, $where, $fun_item, %options) = @_;
+
+  $var = ref $var ? $var : rvar $var;
+
+  my $res = $var->traverse_recursively
+    ($fun_item,
+     # The code that defines the variable holding the result
+     # of the recursive transformation of a subvariable.
+     sub {
+       my ($subvar, $parent_cond, @allresults) = @_;
+       # If no definition is required, return anything: the result is
+       # not expected to be used, only the side effect of $fun_item
+       # should matter.
+       return 'report-me' if $nodefine;
+       # Cache $subvar, so that we reuse it if @allresults is the same.
+       my $key = _hash_varname $subvar;
+       $_gen_varname{$base}{$key} = $subvar->name;
+
+       # Find a name for the variable, unless this is the top-variable
+       # for which we want to use $resvar.
+       my ($varname, $generated) =
+        ($var != $subvar) ? _gen_varname ($base, @allresults) : ($resvar, 1);
+
+       # Define the variable if we are not reusing a previously
+       # defined variable.  At the top-level, we can also avoid redefining
+       # the variable if it already contains the same values.
+       if ($generated
+          && !($varname eq $var->name && $key eq _hash_values @allresults))
+        {
+          # If the new variable is the source variable, we assume
+          # we are trying to override a user variable.  Delete
+          # the old variable first.
+          variable_delete ($varname) if $varname eq $var->name;
+          # Define an empty variable in condition TRUE if there is no
+          # result.
+          @allresults = ([TRUE, '']) unless @allresults;
+          # Define the rewritten variable in all conditions not
+          # already covered by user definitions.
+          foreach my $pair (@allresults)
+            {
+              my ($cond, @result) = @$pair;
+              my $var = var $varname;
+              my @conds = ($var
+                           ? $var->not_always_defined_in_cond ($cond)->conds
+                           : $cond);
+
+              foreach (@conds)
+                {
+                  define ($varname, VAR_AUTOMAKE, '', $_, "@result",
+                          '', $where, VAR_PRETTY);
+                }
+            }
+        }
+       set_seen $varname;
+       return "\$($varname)";
+     },
+     %options);
+  return $res;
+}
+
+
+=back
+
+=head1 SEE ALSO
+
+L<Automake::VarDef>, L<Automake::Condition>,
+L<Automake::DisjConditions>, L<Automake::Location>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Version.pm b/lib/Automake/Version.pm
new file mode 100644 (file)
index 0000000..423375b
--- /dev/null
@@ -0,0 +1,159 @@
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Version;
+
+use 5.006;
+use strict;
+use Automake::ChannelDefs;
+
+=head1 NAME
+
+Automake::Version - version comparison
+
+=head1 SYNOPSIS
+
+  use Automake::Version;
+
+  print "Version $version is older than required version $required\n"
+    if Automake::Version::check ($version, $required);
+
+=head1 DESCRIPTION
+
+This module provides support for comparing versions string
+as they are used in Automake.
+
+A version is a string that looks like
+C<MAJOR.MINOR[.MICRO][ALPHA][-FORK]> where C<MAJOR>, C<MINOR>, and
+C<MICRO> are digits, C<ALPHA> is a character, and C<FORK> any
+alphanumeric word.
+
+Usually, C<ALPHA> is used to label alpha releases or intermediate
+snapshots, C<FORK> is used for git branches or patched releases, and
+C<MICRO> is used for bug fixes releases on the C<MAJOR.MINOR> branch.
+
+For the purpose of ordering, C<1.4> is the same as C<1.4.0>, but
+C<1.4g> is the same as C<1.4.99g>.  The C<FORK> identifier is ignored
+in the ordering, except when it looks like C<-pMINOR[ALPHA]>: some
+versions were labeled like C<1.4-p3a>, this is the same as an alpha
+release labeled C<1.4.3a>.  Yes, it's horrible, but Automake did not
+support two-dot versions in the past.
+
+=head2 FUNCTIONS
+
+=over 4
+
+=item C<split ($version)>
+
+Split the string C<$version> into the corresponding C<(MAJOR, MINOR,
+MICRO, ALPHA, FORK)> tuple.  For instance C<'1.4g'> would be split
+into C<(1, 4, 99, 'g', '')>.  Return C<()> on error.
+
+=cut
+
+sub split ($)
+{
+  my ($ver) = @_;
+
+  # Special case for versions like 1.4-p2a.
+  if ($ver =~ /^(\d+)\.(\d+)(?:-p(\d+)([a-z]+)?)$/)
+  {
+    return ($1, $2, $3, $4 || '', '');
+  }
+  # Common case.
+  elsif ($ver =~ /^(\d+)\.(\d+)(?:\.(\d+))?([a-z])?(?:-([A-Za-z0-9]+))?$/)
+  {
+    return ($1, $2, $3 || (defined $4 ? 99 : 0), $4 || '', $5 || '');
+  }
+  return ();
+}
+
+=item C<compare (\@LVERSION, \@RVERSION)>
+
+Compare two version tuples, as returned by C<split>.
+
+Return 1, 0, or -1, if C<LVERSION> is found to be respectively
+greater than, equal to, or less than C<RVERSION>.
+
+=cut
+
+sub compare (\@\@)
+{
+  my @l = @{$_[0]};
+  my @r = @{$_[1]};
+
+  for my $i (0, 1, 2)
+  {
+    return 1  if ($l[$i] > $r[$i]);
+    return -1 if ($l[$i] < $r[$i]);
+  }
+  for my $i (3, 4)
+  {
+    return 1  if ($l[$i] gt $r[$i]);
+    return -1 if ($l[$i] lt $r[$i]);
+  }
+  return 0;
+}
+
+=item C<check($VERSION, $REQUIRED)>
+
+Handles the logic of requiring a version number in Automake.
+C<$VERSION> should be Automake's version, while C<$REQUIRED>
+is the version required by the user input.
+
+Return 0 if the required version is satisfied, 1 otherwise.
+
+=cut
+
+sub check ($$)
+{
+  my ($version, $required) = @_;
+  my @version = Automake::Version::split ($version);
+  my @required = Automake::Version::split ($required);
+
+  prog_error "version is incorrect: $version"
+    if $#version == -1;
+
+  # This should not happen, because process_option_list and split_version
+  # use similar regexes.
+  prog_error "required version is incorrect: $required"
+    if $#required == -1;
+
+  # If we require 3.4n-foo then we require something
+  # >= 3.4n, with the 'foo' fork identifier.
+  return 1
+    if ($required[4] ne '' && $required[4] ne $version[4]);
+
+  return 0 > compare (@version, @required);
+}
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/Wrap.pm b/lib/Automake/Wrap.pm
new file mode 100644 (file)
index 0000000..34b349e
--- /dev/null
@@ -0,0 +1,166 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Wrap;
+
+use 5.006;
+use strict;
+
+require Exporter;
+use vars '@ISA', '@EXPORT_OK';
+@ISA = qw/Exporter/;
+@EXPORT_OK = qw/wrap makefile_wrap/;
+
+=head1 NAME
+
+Automake::Wrap - a paragraph formatter
+
+=head1 SYNOPSIS
+
+  use Automake::Wrap 'wrap', 'makefile_wrap';
+
+  print wrap ($first_ident, $next_ident, $end_of_line, $max_length,
+              @values);
+
+  print makefile_wrap ("VARIABLE = ", "    ", @values);
+
+=head1 DESCRIPTION
+
+This modules provide facility to format list of strings.  It is
+comparable to Perl's L<Text::Wrap>, however we can't use L<Text::Wrap>
+because some versions will abort when some word to print exceeds the
+maximum length allowed.  (Ticket #17141, fixed in Perl 5.8.0.)
+
+=head2 Functions
+
+=over 4
+
+=cut
+
+# _tab_length ($TXT)
+# ------------------
+# Compute the length of TXT, counting tab characters as 8 characters.
+sub _tab_length($)
+{
+  my ($txt) = @_;
+  my $len = length ($txt);
+  $len += 7 * ($txt =~ tr/\t/\t/);
+  return $len;
+}
+
+=item C<wrap ($head, $fill, $eol, $max_len, @values)>
+
+Format C<@values> as a block of text that starts with C<$head>,
+followed by the strings in C<@values> separated by spaces or by
+C<"$eol\n$fill"> so that the length of each line never exceeds
+C<$max_len>.
+
+The C<$max_len> constraint is ignored for C<@values> items which
+are too big to fit alone one a line.
+
+The constructed paragraph is C<"\n">-terminated.
+
+=cut
+
+sub wrap($$$$@)
+{
+  my ($head, $fill, $eol, $max_len, @values) = @_;
+
+  my $result = $head;
+  my $column = _tab_length ($head);
+
+  my $fill_len = _tab_length ($fill);
+  my $eol_len = _tab_length ($eol);
+
+  my $not_first_word = 0;
+
+  foreach (@values)
+    {
+      my $len = _tab_length ($_);
+
+      # See if the new variable fits on this line.
+      # (The + 1 is for the space we add in front of the value.).
+      if ($column + $len + $eol_len + 1 > $max_len
+         # Do not break before the first word if it does not fit on
+         # the next line anyway.
+         && ($not_first_word || $fill_len + $len + $eol_len + 1 <= $max_len))
+       {
+         # Start a new line.
+         $result .= "$eol\n" . $fill;
+         $column = $fill_len;
+       }
+      elsif ($not_first_word)
+       {
+         # Add a space only if result does not already end
+         # with a space.
+         $_ = " $_" if $result =~ /\S\z/;
+         ++$len;
+       }
+      $result .= $_;
+      $column += $len;
+      $not_first_word = 1;
+    }
+
+  $result .= "\n";
+  return $result;
+}
+
+
+=item C<makefile_wrap ($head, $fill, @values)>
+
+Format C<@values> in a way which is suitable for F<Makefile>s.
+This is comparable to C<wrap>, except C<$eol> is known to
+be C<" \\">, and the maximum length has been hardcoded to C<72>.
+
+A space is appended to C<$head> when this is not already
+the case.
+
+This can be used to format variable definitions or dependency lines.
+
+  makefile_wrap ('VARIABLE =', "\t", @values);
+  makefile_wrap ('rule:', "\t", @dependencies);
+
+=cut
+
+sub makefile_wrap ($$@)
+{
+  my ($head, $fill, @values) = @_;
+  if (@values)
+    {
+      $head .= ' ' if $head =~ /\S\z/;
+      return wrap $head, $fill, " \\", 72, @values;
+    }
+  return "$head\n";
+}
+
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/Automake/XFile.pm b/lib/Automake/XFile.pm
new file mode 100644 (file)
index 0000000..177dad9
--- /dev/null
@@ -0,0 +1,324 @@
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Written by Akim Demaille <akim@freefriends.org>.
+
+###############################################################
+# The main copy of this file is in Automake's git repository. #
+# Updates should be sent to automake-patches@gnu.org.         #
+###############################################################
+
+package Automake::XFile;
+
+=head1 NAME
+
+Automake::XFile - supply object methods for filehandles with error handling
+
+=head1 SYNOPSIS
+
+    use Automake::XFile;
+
+    $fh = new Automake::XFile;
+    $fh->open ("file", "<");
+    # No need to check $FH: we died if open failed.
+    print <$fh>;
+    $fh->close;
+    # No need to check the return value of close: we died if it failed.
+
+    $fh = new Automake::XFile "file", ">";
+    # No need to check $FH: we died if new failed.
+    print $fh "bar\n";
+    $fh->close;
+
+    $fh = new Automake::XFile "file", "r";
+    # No need to check $FH: we died if new failed.
+    defined $fh
+    print <$fh>;
+    undef $fh;   # automatically closes the file and checks for errors.
+
+    $fh = new Automake::XFile "file", O_WRONLY | O_APPEND;
+    # No need to check $FH: we died if new failed.
+    print $fh "corge\n";
+
+    $pos = $fh->getpos;
+    $fh->setpos ($pos);
+
+    undef $fh;   # automatically closes the file and checks for errors.
+
+    autoflush STDOUT 1;
+
+=head1 DESCRIPTION
+
+C<Automake::XFile> inherits from C<IO::File>.  It provides the method
+C<name> returning the file name.  It provides dying versions of the
+methods C<close>, C<lock> (corresponding to C<flock>), C<new>,
+C<open>, C<seek>, and C<truncate>.  It also overrides the C<getline>
+and C<getlines> methods to translate C<\r\n> to C<\n>.
+
+=cut
+
+use 5.006;
+use strict;
+use vars qw($VERSION @EXPORT @EXPORT_OK $AUTOLOAD @ISA);
+use Carp;
+use Errno;
+use IO::File;
+use File::Basename;
+use Automake::ChannelDefs;
+use Automake::Channels qw(msg);
+use Automake::FileUtils;
+
+require Exporter;
+require DynaLoader;
+
+@ISA = qw(IO::File Exporter DynaLoader);
+
+$VERSION = "1.2";
+
+@EXPORT = @IO::File::EXPORT;
+
+eval {
+  # Make all Fcntl O_XXX and LOCK_XXX constants available for importing
+  require Fcntl;
+  my @O = grep /^(LOCK|O)_/, @Fcntl::EXPORT, @Fcntl::EXPORT_OK;
+  Fcntl->import (@O);  # first we import what we want to export
+  push (@EXPORT, @O);
+};
+
+=head2 Methods
+
+=over
+
+=item C<$fh = new Automake::XFile ([$expr, ...]>
+
+Constructor a new XFile object.  Additional arguments
+are passed to C<open>, if any.
+
+=cut
+
+sub new
+{
+  my $type = shift;
+  my $class = ref $type || $type || "Automake::XFile";
+  my $fh = $class->SUPER::new ();
+  if (@_)
+    {
+      $fh->open (@_);
+    }
+  $fh;
+}
+
+=item C<$fh-E<gt>open ([$file, ...])>
+
+Open a file, passing C<$file> and further arguments to C<IO::File::open>.
+Die if opening fails.  Store the name of the file.  Use binmode for writing.
+
+=cut
+
+sub open
+{
+  my $fh = shift;
+  my ($file, $mode) = @_;
+
+  # WARNING: Gross hack: $FH is a typeglob: use its hash slot to store
+  # the 'name' of the file we are opening.  See the example with
+  # io_socket_timeout in IO::Socket for more, and read Graham's
+  # comment in IO::Handle.
+  ${*$fh}{'autom4te_xfile_file'} = "$file";
+
+  if (!$fh->SUPER::open (@_))
+    {
+      fatal "cannot open $file: $!";
+    }
+
+  # In case we're running under MSWindows, don't write with CRLF.
+  # (This circumvents a bug in at least Cygwin bash where the shell
+  # parsing fails on lines ending with the continuation character '\'
+  # and CRLF).
+  # Correctly recognize usages like:
+  #  - open ($file, "w")
+  #  - open ($file, "+<")
+  #  - open (" >$file")
+  binmode $fh
+    if (defined $mode && $mode =~ /^[+>wa]/ or $file =~ /^\s*>/);
+}
+
+=item C<$fh-E<gt>close>
+
+Close the file, handling errors.
+
+=cut
+
+sub close
+{
+  my $fh = shift;
+  if (!$fh->SUPER::close (@_))
+    {
+      my $file = $fh->name;
+      Automake::FileUtils::handle_exec_errors $file
+       unless $!;
+      fatal "cannot close $file: $!";
+    }
+}
+
+=item C<$line = $fh-E<gt>getline>
+
+Read and return a line from the file.  Ensure C<\r\n> is translated to
+C<\n> on input files.
+
+=cut
+
+# Some native Windows/perl installations fail to translate \r\n to \n on
+# input so we do that here.
+sub getline
+{
+  local $_ = $_[0]->SUPER::getline;
+  # Perform a _global_ replacement: $_ may can contains many lines
+  # in slurp mode ($/ = undef).
+  s/\015\012/\n/gs if defined $_;
+  return $_;
+}
+
+=item C<@lines = $fh-E<gt>getlines>
+
+Slurp lines from the files.
+
+=cut
+
+sub getlines
+{
+  my @res = ();
+  my $line;
+  push @res, $line while $line = $_[0]->getline;
+  return @res;
+}
+
+=item C<$name = $fh-E<gt>name>
+
+Return the name of the file.
+
+=cut
+
+sub name
+{
+  my $fh = shift;
+  return ${*$fh}{'autom4te_xfile_file'};
+}
+
+=item C<$fh-E<gt>lock>
+
+Lock the file using C<flock>.  If locking fails for reasons other than
+C<flock> being unsupported, then error out if C<$ENV{'MAKEFLAGS'}> indicates
+that we are spawned from a parallel C<make>.
+
+=cut
+
+sub lock
+{
+  my ($fh, $mode) = @_;
+  # Cannot use @_ here.
+
+  # Unless explicitly configured otherwise, Perl implements its 'flock' with the
+  # first of flock(2), fcntl(2), or lockf(3) that works.  These can fail on
+  # NFS-backed files, with ENOLCK (GNU/Linux) or EOPNOTSUPP (FreeBSD); we
+  # usually ignore these errors.  If $ENV{MAKEFLAGS} suggests that a parallel
+  # invocation of 'make' has invoked the tool we serve, report all locking
+  # failures and abort.
+  #
+  # On Unicos, flock(2) and fcntl(2) over NFS hang indefinitely when 'lockd' is
+  # not running.  NetBSD NFS clients silently grant all locks.  We do not
+  # attempt to defend against these dangers.
+  #
+  # -j is for parallel BSD make, -P is for parallel HP-UX make.
+  if (!flock ($fh, $mode))
+    {
+      my $make_j = (exists $ENV{'MAKEFLAGS'}
+                   && " -$ENV{'MAKEFLAGS'}" =~ / (-[BdeikrRsSw]*[jP]|--[jP]|---?jobs)/);
+      my $note = "\nforgo \"make -j\" or use a file system that supports locks";
+      my $file = $fh->name;
+
+      msg ($make_j ? 'fatal' : 'unsupported',
+          "cannot lock $file with mode $mode: $!" . ($make_j ? $note : ""))
+       if $make_j || !($!{ENOLCK} || $!{EOPNOTSUPP});
+    }
+}
+
+=item C<$fh-E<gt>seek ($position, [$whence])>
+
+Seek file to C<$position>.  Die if seeking fails.
+
+=cut
+
+sub seek
+{
+  my $fh = shift;
+  # Cannot use @_ here.
+  if (!seek ($fh, $_[0], $_[1]))
+    {
+      my $file = $fh->name;
+      fatal "cannot rewind $file with @_: $!";
+    }
+}
+
+=item C<$fh-E<gt>truncate ($len)>
+
+Truncate the file to length C<$len>.  Die on failure.
+
+=cut
+
+sub truncate
+{
+  my ($fh, $len) = @_;
+  if (!truncate ($fh, $len))
+    {
+      my $file = $fh->name;
+      fatal "cannot truncate $file at $len: $!";
+    }
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<perlfunc>,
+L<perlop/"I/O Operators">,
+L<IO::File>
+L<IO::Handle>
+L<IO::Seekable>
+
+=head1 HISTORY
+
+Derived from IO::File.pm by Akim Demaille E<lt>F<akim@freefriends.org>E<gt>.
+
+=cut
+
+1;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/lib/COPYING b/lib/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 of the License, 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/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/lib/INSTALL b/lib/INSTALL
new file mode 100644 (file)
index 0000000..6e90e07
--- /dev/null
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
+Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf limitation.  Until the limitation is lifted, you can use
+this workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
diff --git a/lib/am/check.am b/lib/am/check.am
new file mode 100644 (file)
index 0000000..9cda82a
--- /dev/null
@@ -0,0 +1,561 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+if %?COLOR%
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+## If stdout is a non-dumb tty, use colors.  If test -t is not supported,
+## then this check fails; a conservative approach.  Of course do not
+## redirect stdout here, just stderr.
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='\e[0;31m'; \
+    grn='\e[0;32m'; \
+    lgn='\e[1;32m'; \
+    blu='\e[1;34m'; \
+    mgn='\e[0;35m'; \
+    brg='\e[1m'; \
+    std='\e[m'; \
+  fi; \
+}
+else !%?COLOR%
+am__tty_colors = $(am__tty_colors_dummy)
+endif !%?COLOR%
+
+.PHONY: check-TESTS
+
+if %?PARALLEL_TESTS%
+
+include inst-vars.am
+
+## New parallel test driver.
+##
+## The first version of the code here was 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.
+## The current version is an heavy rewrite of that, to allow for support
+## of more test metadata, and the use of custom test derivers and protocols
+## (among them, TAP).
+
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+## By default, we assume the test is to be re-run.
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+## If we've encountered an I/O error here, there are three possibilities:
+##
+##  [1] The '.log' file exists, but the '.trs' does not; in this case,
+##      we "gracefully" recover by assuming the corresponding test is
+##      to be re-run (which will re-create the missing '.trs' file).
+##
+##  [2] Both the '.log' and '.trs' files are missing; this means that
+##      the corresponding test has not been run, and is thus *not* to
+##      be re-run.
+##
+##  [3] We have encountered some corner-case problem (e.g., a '.log' or
+##      '.trs' files somehow made unreadable, or issues with a bad NFS
+##      connection, or whatever); we don't handle such corner cases.
+##
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+## A directive explicitly specifying the test is *not* to be re-run.
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+## A directive explicitly specifying the test *is* to be re-run.
+          break; \
+        } \
+## else continue with the next iteration.
+    }; \
+  if (recheck) \
+    print $$0; \
+## Don't leak open file descriptors, as this could cause serious
+## problems when there are many tests (yes, even on Linux).
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+## By default, we assume the test log is to be copied in the global log,
+## and that its result is simply "RUN" (i.e., we still don't know what
+## it outcome was, but we know that at least it has run).
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+## Don't leak open file descriptors, as this could cause serious
+## problems when there are many tests (yes, even on Linux).
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+
+# 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.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre =                                                \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(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='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+## The use of $dir below is required to account for VPATH
+## rewriting done by Sun make.
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.test' and 'test-trs-basic.test'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+## Trim away any extra whitespace.  This has already proved useful
+## in avoiding weird bug on lesser make implementations.  It also
+## works around the GNU make 3.80 bug where trailing whitespace in
+## "TESTS = foo.test $(empty)" causes $(TESTS_LOGS)  to erroneously
+## expand to "foo.log .log".
+  bases=`echo $$bases`
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+## Helper shell function, tells whether a path refers to an existing,
+## regular, readable file.
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+## We need to ensures that all the required '.trs' and '.log' files will
+## be present and readable.  The direct dependencies of $(TEST_SUITE_LOG)
+## only ensure that all the '.log' files exists; they don't ensure that
+## the '.log' files are readable, and worse, they don't ensure that the
+## '.trs' files even exist.
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+## Uh-oh, either some '.log' files were unreadable, or some '.trs' files
+## were missing (or unreadable).  We need to re-run the corresponding
+## tests in order to re-create them.
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+## Break "rm -f" into two calls to minimize the possibility of exceeding
+## command line length limits.
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+         fi; \
+       fi; \
+## Use a trick to to ensure that we don't go into an infinite recursion
+## in case a test log in $(TEST_LOGS) is the same as $(TEST_SUITE_LOG).
+## Yes, this has already happened in practice.  Sigh!
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       else \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+## Sanity check: each unreadable or non-existent test result file should
+## has been properly remade at this point, as should the corresponding log
+## file.
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+         done; \
+         test $$st -eq 0 || exit 1; \
+       fi
+## We need a new subshell to work portably with "make -n", since the
+## previous part of the recipe contained a $(MAKE) invocation.
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+## List of test result files.
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+## Prepare data for the test suite summary.  These do not take into account
+## unreadable test results, but they'll be appropriately updated later if
+## needed.
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+## Whether the testsuite was successful or not.
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+## Make $br a line of exactly 76 '=' characters, that will be used to
+## enclose the testsuite summary report when displayed on the console.
+       br='==================='; br=$$br$$br$$br$$br; \
+## When writing the test summary to the console, we want to color a line
+## reporting the count of some result *only* if at least one test
+## experienced such a result.  This function is handy in this regard.
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
+           else \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+           fi; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
+           else \
+             color_start= color_end=; \
+           fi; \
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+## A shell function that creates the testsuite summary.  We need it
+## because we have to create *two* summaries, one for test-suite.log,
+## and a possibly-colorized one for console output.
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+## Write "global" testsuite log.
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+## Emit the test summary on the console.
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+## Multi line coloring is problematic with "less -R", so we really need
+## to color each line individually.
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+## This is expected to go to the console, so it might have to be colorized.
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+## Be sure to exit with the proper exit status.  The use of "exit 1" below
+## is required to work around a FreeBSD make bug (present only when running
+## in concurrent mode).  See automake bug#9245:
+##  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9245>
+## and FreeBSD PR bin/159730:
+##  <http://www.freebsd.org/cgi/query-pr.cgi?pr=159730>.
+       $$success || exit 1
+
+RECHECK_LOGS = $(TEST_LOGS)
+
+## ------------------------------------------ ##
+## Running all tests, or rechecking failures. ##
+## ------------------------------------------ ##
+
+check-TESTS recheck:
+## If we are running "make recheck", it's not the user which can decide
+## which tests to consider for re-execution, so we must ignore the value
+## of $(RECHECK_LOGS).
+## Here and below, we expand $(RECHECK_LOGS) only once, to avoid exceeding
+## line length limits.
+       @if test $@ != recheck; then \
+          list='$(RECHECK_LOGS)'; \
+          test -z "$$list" || rm -f $$list; \
+        fi
+       @if test $@ != recheck; then \
+          list='$(RECHECK_LOGS:.log=.trs)'; \
+          test -z "$$list" || rm -f $$list; \
+        fi
+## 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)
+       @$(am__set_TESTS_bases); \
+       if test $@ = recheck; then \
+## If running a "make recheck", we must only consider tests that had an
+## unexpected outcome (FAIL or XPASS) in the earlier run.
+         bases=`for i in $$bases; do echo $$i; done \
+                  | $(am__list_recheck_tests)` || exit 1; \
+       fi; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+## Remove newlines and normalize whitespace, being careful to avoid extra
+## whitespace in the definition of $log_list, since its value will be
+## passed to the recursive make invocation below through the TEST_LOGS
+## macro, and leading/trailing white space in a make macro definition can
+## be problematic.  In this particular case, trailing white space is known
+## to have caused segmentation faults on Solaris 10 XPG4 make:
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+## Under "make recheck", remove the .log and .trs files associated
+## with the files to recheck, so that those will be rerun by the
+## "make test-suite.log" recursive invocation below.  But use a proper
+## hack to avoid extra files removal when running under "make -n".
+       if test $@ != recheck || $(am__make_dryrun); then :; else \
+         test -z "$$log_list" || rm -f $$log_list; \
+         test -z "$$trs_list" || rm -f $$trs_list; \
+       fi; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"
+
+## Recheck must depend on $(check_SCRIPTS), $(check_PROGRAMS), etc.
+## It must also depend on the 'all' target.  See automake bug#11252.
+recheck: all %CHECK_DEPS%
+
+AM_RECURSIVE_TARGETS += check recheck
+
+.PHONY: recheck
+
+else !%?PARALLEL_TESTS%
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+## Make sure Solaris VPATH-expands all members of this list, even
+## the first and the last one; thus the spaces around $(TESTS)
+       list=' $(TESTS) '; \
+       $(am__tty_colors); \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+## Note: Solaris 2.7 seems to expand TESTS using VPATH.  That's
+## why we also try 'dir='.
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \
+## Success
+             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 \
+## Failure
+             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 \
+## Skipped
+             skip=`expr $$skip + 1`; \
+             col=$$blu; res=SKIP; \
+           fi; \
+           echo "$${col}$$res$${std}: $$tst"; \
+         done; \
+## Prepare the banner
+         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 should contain the largest line of the banner.
+         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 \
+           col="$$grn"; \
+         else \
+           col="$$red"; \
+         fi; \
+## Multi line coloring is problematic with "less -R", so we really need
+## to color each line individually.
+         echo "$${col}$$dashes$${std}"; \
+         echo "$${col}$$banner$${std}"; \
+         test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
+         test -z "$$report" || echo "$${col}$$report$${std}"; \
+         echo "$${col}$$dashes$${std}"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+
+endif !%?PARALLEL_TESTS%
diff --git a/lib/am/check2.am b/lib/am/check2.am
new file mode 100644 (file)
index 0000000..9847a44
--- /dev/null
@@ -0,0 +1,60 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2008-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if %?FIRST%
+## When BSD make is run in parallel mode, it apparently strips any
+## leading directory component from the automatic variable '$*' (of
+## course, against what POSIX mandates).  Try to detect and work
+## around this incompatibility.
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+endif %?FIRST%
+
+## From a test file to a .log and .trs file.
+?GENERIC?%EXT%.log:
+?!GENERIC?%OBJ%: %SOURCE%
+       @p='%SOURCE%'; \
+## Another hack to support BSD make in parallel mode.
+?!GENERIC?     b='%BASE%'; \
+?GENERIC?      $(am__set_b); \
+       $(am__check_pre) %DRIVER% --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) %DRIVER_FLAGS% -- %COMPILE% \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+## 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%'; \
+       ## Another hack to support BSD make in parallel mode.
+?!GENERIC?     b='%BASE%'; \
+?GENERIC?      $(am__set_b); \
+       $(am__check_pre) %DRIVER% --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) %DRIVER_FLAGS% -- %COMPILE% \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+endif %am__EXEEXT%
diff --git a/lib/am/clean-hdr.am b/lib/am/clean-hdr.am
new file mode 100644 (file)
index 0000000..3f377c8
--- /dev/null
@@ -0,0 +1,20 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.PHONY: distclean-hdr
+distclean-am: distclean-hdr
+distclean-hdr:
+       -rm -f %FILES%
diff --git a/lib/am/clean.am b/lib/am/clean.am
new file mode 100644 (file)
index 0000000..da46435
--- /dev/null
@@ -0,0 +1,62 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## We must test each macro because it might be empty, and an empty "rm
+## -rf" command looks disturbing.  Also, the Solaris 2.4 "rm" will
+## return an error if there are no arguments other than "-f".
+mostlyclean-am: mostlyclean-generic
+mostlyclean-generic:
+%MOSTLYCLEAN_RMS%
+
+clean-am: clean-generic mostlyclean-am
+clean-generic:
+%CLEAN_RMS%
+
+distclean-am: distclean-generic clean-am
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+%DISTCLEAN_RMS%
+
+## Makefiles and their dependencies cannot be cleaned by
+## an -am dependency, because that would prevent other distclean
+## dependencies from calling make recursively.  (The multilib
+## cleaning rules do this.)
+##
+## If you change distclean here, you probably also want to change
+## maintainer-clean below.
+distclean:
+       -rm -f %MAKEFILE%
+
+maintainer-clean-am: maintainer-clean-generic distclean-am
+maintainer-clean-generic:
+## FIXME: shouldn't we really print these messages before running
+## the dependencies?
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+%MAINTAINER_CLEAN_RMS%
+
+## See comment for distclean.
+maintainer-clean:
+       -rm -f %MAKEFILE%
+
+.PHONY: clean mostlyclean distclean maintainer-clean \
+clean-generic mostlyclean-generic distclean-generic maintainer-clean-generic
+
+?!SUBDIRS?clean: clean-am
+?!SUBDIRS?distclean: distclean-am
+?!SUBDIRS?mostlyclean: mostlyclean-am
+?!SUBDIRS?maintainer-clean: maintainer-clean-am
diff --git a/lib/am/compile.am b/lib/am/compile.am
new file mode 100644 (file)
index 0000000..7b37da2
--- /dev/null
@@ -0,0 +1,29 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+DEFAULT_INCLUDES = %DEFAULT_INCLUDES%
+
+mostlyclean-am: mostlyclean-compile
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+?MOSTLYRMS?%MOSTLYRMS%
+
+distclean-am: distclean-compile
+distclean-compile:
+       -rm -f *.tab.c
+?DISTRMS?%DISTRMS%
+
+.PHONY: mostlyclean-compile distclean-compile
diff --git a/lib/am/configure.am b/lib/am/configure.am
new file mode 100644 (file)
index 0000000..20534c7
--- /dev/null
@@ -0,0 +1,162 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+## This dummy rule is called from subdirectories whenever one of the
+## top-level Makefile's dependencies must be updated.  It does depend
+## on %MAKEFILE% for the benefit of non-GNU make implementations (GNU
+## make will always make sure %MAKEFILE% is updated before considering
+## the am--refresh target anyway).
+if %?TOPDIR_P%
+.PHONY: am--refresh
+am--refresh: %MAKEFILE%
+       @:
+endif %?TOPDIR_P%
+
+## --------------------- ##
+## Building Makefile.*.  ##
+## --------------------- ##
+
+## This rule remakes the Makefile.in.
+%MAKEFILE-IN%: %MAINTAINER-MODE% %MAKEFILE-AM% %MAKEFILE-IN-DEPS% $(am__configure_deps)
+## If configure.ac or one of configure's dependencies has changed, all
+## Makefile.in are to be updated; it is then more efficient to run
+## automake on all the Makefiles at once.  It also allow Automake to be
+## run for newly added directories.
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+?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
+## am--refresh will not be aware of any need to run.  We still invoke it
+## due to $? listing all prerequisites.  Fix up for it by running the rebuild
+## rule for this file only, below.
+?!TOPDIR_P?            && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+## Otherwise, rebuild only this file.
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) %AUTOMAKE-OPTIONS% %MAKEFILE-AM-SOURCES%'; \
+       $(am__cd) $(top_srcdir) && \
+         $(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
+## ./config.status to recreate the lost Makefile.
+.PRECIOUS: %MAKEFILE%
+## This rule remakes the Makefile.
+%MAKEFILE%: %MAKEFILE-DEPS% $(top_builddir)/config.status
+## If Makefile is to be updated because of config.status, then run
+## config.status without argument in order to (i) rerun all the
+## AC_CONFIG_COMMANDS including those that are not visible to
+## Automake, and (ii) to save time by running config.status all with
+## all the files, instead of once per file (iii) generate Makefiles
+## in newly added directories.
+       @case '$?' in \
+## Don't prefix $(top_builddir), because GNU make will strip it out
+## when it's '.'.
+         *config.status*) \
+?TOPDIR_P?         echo ' $(SHELL) ./config.status'; \
+?TOPDIR_P?         $(SHELL) ./config.status;; \
+?!TOPDIR_P?        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+## FIXME: $(am__depfiles_maybe) lets us re-run the rule to create the
+## .P files.  Ideally we wouldn't have to do this by hand.
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status %CONFIG-MAKEFILE% $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status %CONFIG-MAKEFILE% $(am__depfiles_maybe);; \
+       esac;
+
+## Avoid the "deleted header file" problem for the dependencies.
+?HAVE-MAKEFILE-IN-DEPS?%MAKEFILE-IN-DEPS%:
+
+DIST_COMMON += %MAKEFILE-AM%
+
+
+## --------------------------- ##
+## config.status & configure.  ##
+## --------------------------- ##
+
+if %?TOPDIR_P%
+## Always require configure.ac and configure at top level, even if they
+## don't exist.  This is especially important for configure, since it
+## won't be created until autoconf is run -- which might be after
+## automake is run.
+DIST_COMMON += $(top_srcdir)/configure $(am__configure_deps)
+endif %?TOPDIR_P%
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+?TOPDIR_P?     $(SHELL) ./config.status --recheck
+?!TOPDIR_P?    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: %MAINTAINER-MODE% $(am__configure_deps)
+?TOPDIR_P?     $(am__cd) $(srcdir) && $(AUTOCONF)
+?!TOPDIR_P?    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+
+## ------------ ##
+## aclocal.m4.  ##
+## ------------ ##
+
+## aclocal.m4 must be built by the top-level Makefile, because this is
+## where the user is expected to define $(ACLOCAL_AMFLAGS).
+##
+## Whenever a configure dependency changes we need to rebuild
+## aclocal.m4 too.  Changing configure.ac, or any file included by
+## aclocal.m4 might require adding more files to aclocal.m4.  Hence
+## the $(am__configure_deps) dependency.
+if %?REGEN-ACLOCAL-M4%
+$(ACLOCAL_M4): %MAINTAINER-MODE% $(am__aclocal_m4_deps)
+?TOPDIR_P?     $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+?!TOPDIR_P?    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+## Avoid the "deleted header file" problem for the dependencies.
+$(am__aclocal_m4_deps):
+endif %?REGEN-ACLOCAL-M4%
+
+
+## --------- ##
+## cleanup.  ##
+## --------- ##
+
+## We special-case config.status here.  If we do it as part of the
+## normal clean processing for this directory, then it might be
+## removed before some subdir is cleaned.  However, that subdir's
+## Makefile depends on config.status.
+
+if %?TOPDIR_P%
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+distclean:
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+
+## Note: you might think we should remove Makefile.in, configure, or
+## aclocal.m4 here in a maintainer-clean rule.  However, the GNU
+## Coding Standards explicitly prohibit this.
+
+maintainer-clean:
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+## autom4te.cache is created by Autoconf; the only valid target to
+## remove it is maintainer-clean, not distclean.
+## If you have an autom4te.cache that cause distcheck to fail, then
+## it is good news: you finally discovered that autoconf and/or
+## autoheader is needed to use your tarball, which is wrong.
+       -rm -rf $(top_srcdir)/autom4te.cache
+
+
+endif %?TOPDIR_P%
diff --git a/lib/am/data.am b/lib/am/data.am
new file mode 100644 (file)
index 0000000..b8b6588
--- /dev/null
@@ -0,0 +1,99 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if %?INSTALL%
+include inst-vars.am
+endif %?INSTALL%
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+if %?INSTALL%
+am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
+.PHONY install-%EXEC?exec:data%-am: install-%DIR%%PRIMARY%
+install-%DIR%%PRIMARY%: $(%DIR%_%PRIMARY%)
+       @$(NORMAL_INSTALL)
+if %?BASE%
+## Funny invocation because Makefile variable can be empty, leading to
+## a syntax error in sh.
+       @list='$(%DIR%_%PRIMARY%)'; test -n "$(%NDIR%dir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+## A file can be in the source directory or the build directory.
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+## If the _%PRIMARY% variable has an entry like foo/bar, install it as
+## $(destdir)/bar, not $(destdir)/foo/bar.  The user can make a
+## new dir variable or use a nobase_ target for the latter case.
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_%ONE_PRIMARY%) $$files '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(INSTALL_%ONE_PRIMARY%) $$files "$(DESTDIR)$(%NDIR%dir)" || exit $$?; \
+       done
+else !%?BASE%
+       @list='$(%DIR%_%PRIMARY%)'; test -n "$(%NDIR%dir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+       fi; \
+       $(am__nobase_list) | while read dir files; do \
+         xfiles=; for file in $$files; do \
+           if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+           else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+         test -z "$$xfiles" || { \
+           test "x$$dir" = x. || { \
+             echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+             $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)/$$dir"; }; \
+           echo " $(INSTALL_%ONE_PRIMARY%) $$xfiles '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+           $(INSTALL_%ONE_PRIMARY%) $$xfiles "$(DESTDIR)$(%NDIR%dir)/$$dir" || exit $$?; }; \
+       done
+endif !%?BASE%
+endif %?INSTALL%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?INSTALL%
+.PHONY uninstall-am: uninstall-%DIR%%PRIMARY%
+uninstall-%DIR%%PRIMARY%:
+       @$(NORMAL_UNINSTALL)
+       @list='$(%DIR%_%PRIMARY%)'; test -n "$(%NDIR%dir)" || list=; \
+?BASE? files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+?!BASE?        $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+       dir='$(DESTDIR)$(%NDIR%dir)'; $(am__uninstall_files_from_dir)
+endif %?INSTALL%
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+## Nothing.
+
+
+## -------------- ##
+## Distributing.  ##
+## -------------- ##
+
+if %?DIST%
+DIST_COMMON += %DISTVAR%
+endif %?DIST%
diff --git a/lib/am/dejagnu.am b/lib/am/dejagnu.am
new file mode 100644 (file)
index 0000000..f1ee471
--- /dev/null
@@ -0,0 +1,116 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## Name of tool to use.  Default is the same as the package.
+DEJATOOL = $(PACKAGE)
+
+## Default flags to pass to dejagnu.  The user can override this.
+RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
+
+## In Cygnus mode, these are found in the build tree.
+## Otherwise they are looked for in $PATH.
+if %?CYGNUS%
+EXPECT = `if test -f $(top_builddir)/../expect/expect; then \
+           echo $(top_builddir)/../expect/expect; \
+         else \
+           echo expect; \
+         fi`
+
+RUNTEST = `if test -f $(top_srcdir)/../dejagnu/runtest; then \
+            echo $(top_srcdir)/../dejagnu/runtest; \
+          else \
+            echo runtest; \
+          fi`
+else ! %?CYGNUS%
+EXPECT = expect
+RUNTEST = runtest
+endif ! %?CYGNUS%
+
+
+.PHONY: check-DEJAGNU
+check-DEJAGNU: site.exp
+## Life is easiest with an absolute srcdir, so do that.
+       srcdir='$(srcdir)'; export srcdir; \
+       EXPECT=$(EXPECT); export EXPECT; \
+## Allow this to work when expect and DejaGnu are in tree.
+## Only required when --cygnus in force.
+?CYGNUS?       if [ -f $(top_builddir)/../expect/expect ]; then \
+?CYGNUS?         TCL_LIBRARY=`$(am__cd) $(top_srcdir)/../tcl/library && pwd`; \
+?CYGNUS?         export TCL_LIBRARY; \
+?CYGNUS?       fi; \
+       runtest=$(RUNTEST); \
+## If runtest can't be found, print a warning but don't die.  It is
+## pointless to cause a failure if the tests cannot be run at all.
+       if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+         exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \
+           if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
+           then :; else exit_status=1; fi; \
+         done; \
+       else echo "WARNING: could not find 'runtest'" 1>&2; :;\
+       fi; \
+       exit $$exit_status
+
+
+## ------------------- ##
+## Building site.exp.  ##
+## ------------------- ##
+
+## Note that in the rule we don't directly generate site.exp to avoid
+## the possibility of a corrupted site.exp if make is interrupted.
+## Jim Meyering has some useful text on this topic.
+site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG)
+       @echo 'Making a new site.exp file ...'
+       @echo '## these variables are automatically generated by make ##' >site.tmp
+       @echo '# Do not edit here.  If you wish to override these values' >>site.tmp
+       @echo '# edit the last section' >>site.tmp
+       @echo 'set srcdir "$(srcdir)"' >>site.tmp
+       @echo "set objdir `pwd`" >>site.tmp
+## Quote the *_alias variables because they might be empty.
+?BUILD?        @echo 'set build_alias "$(build_alias)"' >>site.tmp
+?BUILD?        @echo 'set build_triplet $(build_triplet)' >>site.tmp
+?HOST? @echo 'set host_alias "$(host_alias)"' >>site.tmp
+?HOST? @echo 'set host_triplet $(host_triplet)' >>site.tmp
+?TARGET?       @echo 'set target_alias "$(target_alias)"' >>site.tmp
+?TARGET?       @echo 'set target_triplet $(target_triplet)' >>site.tmp
+## Allow the package author to extend site.exp.
+       @list='$(EXTRA_DEJAGNU_SITE_CONFIG)'; for f in $$list; do \
+         echo "## Begin content included from file $$f.  Do not modify. ##" \
+          && cat `test -f "$$f" || echo '$(srcdir)/'`$$f \
+          && echo "## End content included from file $$f. ##" \
+          || exit 1; \
+        done >> site.tmp
+       @echo "## End of auto-generated content; you can edit from here. ##" >> site.tmp
+       @if test -f site.exp; then \
+          sed -e '1,/^## End of auto-generated content.*##/d' site.exp >> site.tmp; \
+        fi
+       @-rm -f site.bak
+       @test ! -f site.exp || mv site.exp site.bak
+       @mv site.tmp site.exp
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+.PHONY distclean-am: distclean-DEJAGNU
+
+distclean-DEJAGNU:
+## Any other cleaning must be done by the user or by the test suite
+## itself.  We can't predict what dejagnu or the test suite might
+## generate.
+       -rm -f site.exp site.bak
+       -l='$(DEJATOOL)'; for tool in $$l; do \
+         rm -f $$tool.sum $$tool.log; \
+       done
diff --git a/lib/am/depend.am b/lib/am/depend.am
new file mode 100644 (file)
index 0000000..643c6ab
--- /dev/null
@@ -0,0 +1,27 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+am__mv = mv -f
+
+## This Makefile depends on Depdirs' files, so we should never
+## erase them in -am or -recursive rules; that would prevent any other
+## rules from being recursive (for instance multilib clean rules are
+## recursive).
+distclean:
+       -rm -rf %DEPDIRS%
+
+maintainer-clean:
+       -rm -rf %DEPDIRS%
diff --git a/lib/am/depend2.am b/lib/am/depend2.am
new file mode 100644 (file)
index 0000000..845472f
--- /dev/null
@@ -0,0 +1,138 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## This file is read several times:
+## - once per *extension* (not per language) for generic compilation rules
+## - once for each file which requires specific flags.
+
+## Note it is on purpose we wrote "if %AMDEP%", since:
+##
+## - if deps are turned off, %AMDEP% is mapped onto FALSE, and therefore
+##   the "if FALSE" chunk is removed (automake-time conditionals).
+##
+## - if deps are on, %AMDEP% is mapped onto AMDEP,  and therefore
+##   the "if AMDEP" chunk is prefix with @AMDEP_TRUE@ just like for any
+##   other configure-time conditional.
+##
+## We do likewise for %FASTDEP%; this expands to an ordinary
+## configure-time conditional.  %FASTDEP% is used to speed up the
+## common case of building a package with gcc 3.x.  In this case we
+## can skip the use of depcomp and easily inline the dependency
+## tracking.
+
+## Verbosity of FASTDEP rules
+## --------------------------
+## (1) Some people want to see what happens during make.  They think
+##     @-commands are evil because hiding things hinders debugging.
+## (2) Other people want to see only the important commands--those that
+##     may produce diagnostics, such as compiler invocations.  They
+##     do not care about build details such as dependency generation
+##     (the if/then/else machinery in FASTDEP rules).  Their point is
+##     that it is hard to spot diagnostics in a verbose output.
+## (3) Other people want "make -s" to work as expected: silently.
+##     This way they can spot any diagnostic really easily.
+##
+## The second point suggests we hide rules with @ and that we 'echo'
+## only the relevant parts.  However this goes against the two others.
+## There are regular complaints about this on the mailing list, but
+## it's hard to please everybody.  On April 2003, William Fulton (from
+## clan (3)) and Karl Berry (from clan (2)) agreed that folding the
+## compile rules so that they are output on a single line (instead of 5)
+## would be a good compromise.  Actually we use two lines rather than one,
+## because this way %SOURCE% is always located at the end of the first
+## line and is therefore easier to spot.  (We need an extra line when
+## depbase is used.)
+
+if %?NONLIBTOOL%
+?GENERIC?%EXT%.o:
+?!GENERIC?%OBJ%: %SOURCE%
+if %FASTDEP%
+## In fast-dep mode, we can always use -o.
+## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
+?!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% &&\
+?GENERIC??SUBDIROBJ?   $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
+else !%FASTDEP%
+if %AMDEP%
+       %VERBOSE%source='%SOURCE%' object='%OBJ%' libtool=no @AMDEPBACKSLASH@
+       DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif %AMDEP%
+if %?GENERIC%
+?-o?   %VERBOSE-NODEP%%COMPILE% %-c% %-o% %OBJ% %SOURCEFLAG%%SOURCE%
+?!-o?  %VERBOSE-NODEP%%COMPILE% %-c% %SOURCEFLAG%%SOURCE%
+else !%?GENERIC%
+## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
+?-o?   %VERBOSE-NODEP%%COMPILE% %-c% %-o% %OBJ% %SOURCEFLAG%`test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
+?!-o?  %VERBOSE-NODEP%%COMPILE% %-c% %SOURCEFLAG%`test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
+endif !%?GENERIC%
+endif !%FASTDEP%
+
+?GENERIC?%EXT%.obj:
+?!GENERIC?%OBJOBJ%: %SOURCE%
+if %FASTDEP%
+## In fast-dep mode, we can always use -o.
+## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
+?!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%'` &&\
+?GENERIC??SUBDIROBJ?   $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
+else !%FASTDEP%
+if %AMDEP%
+       %VERBOSE%source='%SOURCE%' object='%OBJOBJ%' libtool=no @AMDEPBACKSLASH@
+       DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif %AMDEP%
+if %?GENERIC%
+?-o?   %VERBOSE-NODEP%%COMPILE% %-c% %-o% %OBJOBJ% %SOURCEFLAG%`$(CYGPATH_W) '%SOURCE%'`
+?!-o?  %VERBOSE-NODEP%%COMPILE% %-c% `$(CYGPATH_W) %SOURCEFLAG%'%SOURCE%'`
+else !%?GENERIC%
+## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
+?-o?   %VERBOSE-NODEP%%COMPILE% %-c% %-o% %OBJOBJ% %SOURCEFLAG%`if test -f '%SOURCE%'; then $(CYGPATH_W) '%SOURCE%'; else $(CYGPATH_W) '$(srcdir)/%SOURCE%'; fi`
+?!-o?  %VERBOSE-NODEP%%COMPILE% %-c% %SOURCEFLAG%`if test -f '%SOURCE%'; then $(CYGPATH_W) '%SOURCE%'; else $(CYGPATH_W) '$(srcdir)/%SOURCE%'; fi`
+endif !%?GENERIC%
+endif !%FASTDEP%
+endif %?NONLIBTOOL%
+
+if %?LIBTOOL%
+?GENERIC?%EXT%.lo:
+?!GENERIC?%LTOBJ%: %SOURCE%
+if %FASTDEP%
+## In fast-dep mode, we can always use -o.
+## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
+?!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% &&\
+?GENERIC??SUBDIROBJ?   $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Plo
+else !%FASTDEP%
+if %AMDEP%
+       %VERBOSE%source='%SOURCE%' object='%LTOBJ%' libtool=yes @AMDEPBACKSLASH@
+       DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif %AMDEP%
+## We can always use '-o' with Libtool.
+?GENERIC?      %VERBOSE-NODEP%%LTCOMPILE% %-c% -o %LTOBJ% %SOURCEFLAG%%SOURCE%
+## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
+?!GENERIC?     %VERBOSE-NODEP%%LTCOMPILE% %-c% -o %LTOBJ% %SOURCEFLAG%`test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
+endif !%FASTDEP%
+endif %?LIBTOOL%
diff --git a/lib/am/distdir.am b/lib/am/distdir.am
new file mode 100644 (file)
index 0000000..e27b650
--- /dev/null
@@ -0,0 +1,564 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## DIST_COMMON comes first so that README can be the very first file.
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+if %?TOPDIR_P%
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+## On MSYS (1.0.17) it is not possible to remove a directory that is in
+## use; so, if the first rm fails, we sleep some seconds and retry, to
+## give pending processes some time to exit and "release" the directory
+## before we remove it.  The value of "some seconds" is 5 for the moment,
+## which is mostly an arbitrary value, but seems high enough in practice.
+## See automake bug#10470.
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+endif %?TOPDIR_P%
+
+if %?SUBDIRS%
+## computes a relative pathname RELDIR such that DIR1/RELDIR = DIR2.
+## Input:
+## - DIR1            relative pathname, relative to the current directory
+## - DIR2            relative pathname, relative to the current directory
+## Output:
+## - reldir          relative pathname of DIR2, relative to DIR1
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+endif %?SUBDIRS%
+
+.PHONY: distdir
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += distdir
+endif %?SUBDIRS%
+
+distdir: $(DISTFILES)
+##
+## For Gnits users, this is pretty handy.  Look at 15 lines
+## in case some explanatory text is desirable.
+##
+if %?TOPDIR_P%
+if  %?CK-NEWS%
+       @case `sed 15q $(srcdir)/NEWS` in \
+       *"$(VERSION)"*) : ;; \
+       *) \
+         echo "NEWS not updated; not releasing" 1>&2; \
+         exit 1;; \
+       esac
+endif  %?CK-NEWS%
+endif %?TOPDIR_P%
+##
+## 'missing help2man' may have created some bogus man pages.  Ensure they
+## are not distributed.
+##
+if %?INSTALL-MAN%
+if %?HAVE-MANS%
+       @list='$(MANS)'; if test -n "$$list"; then \
+         list=`for p in $$list; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+## Note that we check existing man pages here only.  If there are man pages
+## which are not distributed, and may be generated only conditionally, then
+## we should not error out because of them.  This could be refined to take
+## into account only dist_*_MANS, but then we'd be missing out on those
+## the user distributes with EXTRA_DIST.
+           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+         if test -n "$$list" && \
+           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+           echo "error: found man pages containing the 'missing help2man' replacement text:" >&2; \
+           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+           echo "       typically 'make maintainer-clean' will remove them" >&2; \
+           exit 1; \
+         else :; fi; \
+       else :; fi
+endif %?HAVE-MANS%
+endif %?INSTALL-MAN%
+##
+## Only for the top dir.
+##
+if %?TOPDIR_P%
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+endif %?TOPDIR_P%
+##
+##
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+##
+## Yet another hack to support SUN make.
+##
+## Let's assume 'foo' appears in DISTFILES and is not a built file.
+## When building with VPATH=$(srcdir), SUN make and OSF1/Tru64 will
+## rewrite 'foo' as '$(srcdir)/foo'.  An attempt to install the file
+## with
+##    cp $file $(distdir)/$file
+## will thus install $(srcdir)/foo as $(distdir)/$(srcdir)/foo
+## instead of $(distdir)/foo.
+##
+## So let's strip this leading $(srcdir)/ when it exists.  (As far we
+## know, only SUN make and OSF1/Tru64 make add it.)  Searching whether
+## the file is to be found in the source or build directory will be
+## done later.
+##
+## In case we are _not_ using SUN or OSF1/Tru64 make, how can we be sure
+## we are not stripping a legitimate filename that starts with the
+## same pattern as $(srcdir)?
+## Well, it can't happen without the Makefile author distributing
+## something out of the distribution (which is bad).  As an example,
+## consider "EXTRA_DIST = ../bar".  This is an issue if $srcdir is
+## '..', however getting this value for srcdir is impossible:
+## "EXTRA_DIST = ../bar" implies we are in a subdirectory (so '../bar'
+## is within the package), hence '$srcdir' is something like
+## '../../subdir'.
+##
+## There is more to say about files which are above the current directory,
+## like '../bar' in the previous example.  The OSF1/Tru64 make
+## implementation can simplify filenames resulting from a VPATH lookup.
+## For instance if "VPATH = ../../subdir" and '../bar' is found in that
+## VPATH directory, then occurrences of '../bar' will be replaced by
+## '../../bar' (instead of '../../subdir/../bar').  This obviously defeats
+## any attempt to strip a leading $srcdir.  Presently we have no workaround
+## for this.  We avoid this issue by writing "EXTRA_DIST = $(srcdir)/../bar"
+## instead of "EXTRA_DIST = ../bar".  This prefixing is needed only for files
+## above the current directory.  Fortunately, apart from auxdir files which
+## can be located in .. or ../.., this situation hardly occurs in practice.
+##
+## Also rewrite $(top_srcdir) (which sometimes appears in DISTFILES, and can
+## be absolute) by $(top_builddir) (which is always relative).  $(srcdir) will
+## be prepended later.
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+## (The second 't' command clears the flag for the next round.)
+##
+## Make the subdirectories for the files.
+##
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+##
+##
+       for file in $$dist_files; do \
+##
+## Always look for the file in the build directory first.  That way
+## for something like yacc output we will correctly pick up the latest
+## version.  Also check for directories in the build directory first,
+## so one can ship generated directories.
+##
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+##
+## Use cp, not ln.  There are situations in which "ln" can fail.  For
+## instance a file to distribute could actually be a cross-filesystem
+## symlink -- this can easily happen if "gettextize" was run on the
+## distribution.
+##
+         if test -d $$d/$$file; then \
+## Don't mention $$file in the destination argument, since this fails if
+## the destination directory already exists.  Also, use '-R' and not '-r'.
+## '-r' is almost always incorrect.
+##
+## If a directory exists both in '.' and $(srcdir), then we copy the
+## files from $(srcdir) first and then install those from '.'.  This
+## can help people who distribute directories made of source files
+## *and* generated files.  It is also important when the directory
+## exists only in $(srcdir), because some vendor Make (such as Tru64)
+## will magically create an empty directory in '.'.
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+## If the destination directory already exists, it may contain read-only
+## files, e.g., during "make distcheck".
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+## Test for file existence because sometimes a file gets included in
+## DISTFILES twice.  For example this happens when a single source
+## file is used in building more than one program.
+## See also test 'dist-repeated.test'.
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+##
+## Test for directory existence here because previous automake
+## invocation might have created some directories.  Note that we
+## explicitly set distdir for the subdir make; that lets us mix-n-match
+## many automake-using packages into one large package, and have "dist"
+## at the top level do the right thing.  If we're in the topmost
+## directory, then we use 'distdir' instead of 'top_distdir'; this lets
+## us work correctly with an enclosing package.
+if %?SUBDIRS%
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+## Disable am__remove_distdir so that sub-packages do not clear a
+## directory we have already cleared and might even have populated
+## (e.g. shared AUX dir in the sub-package).
+               am__remove_distdir=: \
+## Disable filename length check:
+               am__skip_length_check=: \
+## No need to fix modes more than once:
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+endif %?SUBDIRS%
+##
+## We might have to perform some last second updates, such as updating
+## info files.
+## We must explicitly set distdir and top_distdir for these sub-makes.
+##
+if %?DIST-TARGETS%
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         %DIST-TARGETS%
+endif %?DIST-TARGETS%
+##
+## This complex find command will try to avoid changing the modes of
+## links into the source tree, in case they're hard-linked.
+##
+## Ignore return result from chmod, because it might give an error
+## if we chmod a symlink.
+##
+## Another nastiness: if the file is unreadable by us, we make it
+## readable regardless of the number of links to it.  This only
+## happens in perverse cases.
+##
+## We use $(install_sh) because that is a known-portable way to modify
+## the file in place in the source tree.
+##
+## If we are being invoked recursively, then there is no need to walk
+## the whole subtree again.  This is a complexity reduction for a deep
+## hierarchy of subpackages.
+##
+if %?TOPDIR_P%
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+if %?FILENAME_FILTER%
+       @if test -z "$(am__skip_length_check)" && find "$(distdir)" -type f -print | \
+         grep '^%FILENAME_FILTER%' 1>&2; then \
+         echo 'error: the above filenames are too long' 1>&2; \
+         exit 1; \
+       else :; fi
+endif %?FILENAME_FILTER%
+endif %?TOPDIR_P%
+
+
+
+## --------------------------------------- ##
+## Building various distribution flavors.  ##
+## --------------------------------------- ##
+
+## Note that we don't use GNU tar's '-z' option.  One reason (but not
+## the only reason) is that some versions of tar (e.g., OSF1)
+## interpret '-z' differently.
+##
+## The -o option of GNU tar used to exclude empty directories.  This
+## behavior was fixed in tar 1.12 (released on 1997-04-25).  But older
+## versions of tar are still used (for instance NetBSD 1.6.1 ships
+## with tar 1.11.2).  We do not do anything specific w.r.t. this
+## incompatibility since packages where empty directories need to be
+## present in the archive are really unusual.
+##
+## We order DIST_TARGETS by expected duration of the compressors,
+## slowest first, for better parallelism in "make dist".  Do not
+## reorder DIST_ARCHIVES, users may expect gzip to be first.
+
+if %?TOPDIR_P%
+
+?GZIP?DIST_ARCHIVES += $(distdir).tar.gz
+GZIP_ENV = --best
+.PHONY: dist-gzip
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__post_remove_distdir)
+
+?BZIP2?DIST_ARCHIVES += $(distdir).tar.bz2
+.PHONY: dist-bzip2
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__post_remove_distdir)
+
+?LZIP?DIST_ARCHIVES += $(distdir).tar.lz
+.PHONY: dist-lzip
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+       $(am__post_remove_distdir)
+
+?XZ?DIST_ARCHIVES += $(distdir).tar.xz
+.PHONY: dist-xz
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+       $(am__post_remove_distdir)
+
+?COMPRESS?DIST_ARCHIVES += $(distdir).tar.Z
+.PHONY: dist-tarZ
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__post_remove_distdir)
+
+?SHAR?DIST_ARCHIVES += $(distdir).shar.gz
+.PHONY: dist-shar
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__post_remove_distdir)
+
+?ZIP?DIST_ARCHIVES += $(distdir).zip
+.PHONY: dist-zip
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__post_remove_distdir)
+
+?LZIP?DIST_TARGETS += dist-lzip
+?XZ?DIST_TARGETS += dist-xz
+?SHAR?DIST_TARGETS += dist-shar
+?BZIP2?DIST_TARGETS += dist-bzip2
+?GZIP?DIST_TARGETS += dist-gzip
+?ZIP?DIST_TARGETS += dist-zip
+?COMPRESS?DIST_TARGETS += dist-tarZ
+
+endif %?TOPDIR_P%
+
+
+
+## ------------------------------------------------- ##
+## Building all the requested distribution flavors.  ##
+## ------------------------------------------------- ##
+
+## Currently we cannot use if/endif inside a rule.  The file_contents
+## parser needs work.
+
+if %?TOPDIR_P%
+
+.PHONY: dist dist-all
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += dist dist-all
+endif %?SUBDIRS%
+
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
+
+endif %?TOPDIR_P%
+
+
+## ------------------------- ##
+## Checking a distribution.  ##
+## ------------------------- ##
+
+
+if %?TOPDIR_P%
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += distcheck
+endif %?SUBDIRS%
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+.PHONY: distcheck
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+## Make the new source tree read-only.  Distributions ought to work in
+## this case.  However, make the top-level directory writable so we
+## can make our new subdirs.
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+## Undo the write access.
+       chmod a-w $(distdir)
+## With GNU make, the following command will be executed even with "make -n",
+## due to the presence of '$(MAKE)'.  That is normally all well (and '$(MAKE)'
+## is necessary for things like parallel distcheck), but here we don't want
+## execution.  To avoid MAKEFLAGS parsing hassles, use a witness file that a
+## non-'-n' run would have just created.
+       test -d $(distdir)/_build || exit 0; \
+## Compute the absolute path of '_inst'.  Strip any leading DOS drive
+## to allow DESTDIR installations.  Otherwise "$(DESTDIR)$(prefix)" would
+## expand to "c:/temp/am-dc-5668/c:/src/package/package-1.0/_inst".
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+## We will attempt a DESTDIR install in $dc_destdir.  We don't
+## create this directory under $dc_install_base, because it would
+## create very long directory names.
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+?DISTCHECK-HOOK?         && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
+## Parallel BSD make may not start a new shell for each command in a recipe,
+## so be sure to 'cd' back to the original directory after this.
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+?GETTEXT?          --with-included-gettext \
+## Additional flags for configure.  Keep this last in the configure
+## invocation so the developer and user can override previous options,
+## and let the user's flags take precedence over the developer's ones.
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+## Make sure the package has proper DESTDIR support (we could not test this
+## in the previous install/installcheck/uninstall test, because it's reasonable
+## for installcheck to fail in a DESTDIR install).
+## We make the '$dc_install_base' read-only because this is where files
+## with missing DESTDIR support are likely to be installed.
+         && chmod -R a-w "$$dc_install_base" \
+## The logic here is quite convoluted because we must clean $dc_destdir
+## whatever happens (it won't be erased by the next run of distcheck like
+## $(distdir) is).
+         && ({ \
+## Build the directory, so we can cd into it even if "make install"
+## didn't create it.  Use mkdir, not $(MKDIR_P) because we want to
+## fail if the directory already exists (PR/413).
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+## Make sure to remove the dists we created in the test build directory.
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+## Cater to parallel BSD make (see above).
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__post_remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+
+## Define distuninstallcheck_listfiles and distuninstallcheck separately
+## from distcheck, so that they can be overridden by the user.
+.PHONY: distuninstallcheck
+distuninstallcheck_listfiles = find . -type f -print
+## The 'dir' file (created by install-info) might still exist after
+## uninstall, so we must be prepared to account for it.  The following
+## check is not 100% strict, but is definitely good enough, and even
+## accounts for overridden $(infodir).
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distuninstallcheck:
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+
+## Define distcleancheck_listfiles and distcleancheck separately
+## from distcheck, so that they can be overridden by the user.
+.PHONY: distcleancheck
+distcleancheck_listfiles = find . -type f -print
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+endif %?TOPDIR_P%
diff --git a/lib/am/footer.am b/lib/am/footer.am
new file mode 100644 (file)
index 0000000..71ac76b
--- /dev/null
@@ -0,0 +1,19 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# 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.
+.NOEXPORT:
diff --git a/lib/am/header-vars.am b/lib/am/header-vars.am
new file mode 100644 (file)
index 0000000..ba4aa0b
--- /dev/null
@@ -0,0 +1,83 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+VPATH = @srcdir@
+
+@SET_MAKE@
+
+## We used to define this.  However, we don't because vendor makes
+## (e.g., Solaris, Irix) won't correctly propagate variables that are
+## defined in Makefile.  This particular variable can't be correctly
+## defined by configure (at least, not the current configure), so we
+## simply avoid defining it to allow the user to use this feature with
+## a vendor make.
+## DESTDIR =
+
+## Shell code that determines whether make is running in "dry mode"
+## ("make -n") or not.  Useful in rules that invoke make recursively,
+## and are thus executed also with "make -n" -- either because they
+## are declared as dependencies to '.MAKE' (NetBSD make), or because
+## their recipes contain the "$(MAKE)" string (GNU and Solaris make).
+
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+## If we run "make TESTS='snooze nap'", GNU make will export MAKEFLAGS
+## to "TESTS=foo\ nap", so that the simpler loop below (on word-splitted
+## $$MAKEFLAGS) would see a "make flag" equal to "nap", and would wrongly
+## misinterpret that as and indication that make is running in dry mode.
+## This has already happened in practice.  So we need this hack.
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
+
+## Some derived variables that have been found to be useful.
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+
+## These are defined because otherwise make on NetBSD V1.1 will print
+## (eg): $(NORMAL_INSTALL) expands to empty string.
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+
+## dejagnu.am uses these variables.  Some users might rely on them too.
+?BUILD?build_triplet = @build@
+?HOST?host_triplet = @host@
+?TARGET?target_triplet = @target@
diff --git a/lib/am/header.am b/lib/am/header.am
new file mode 100644 (file)
index 0000000..752af19
--- /dev/null
@@ -0,0 +1,19 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+## Exactly the same as data.am.
+include data.am
diff --git a/lib/am/inst-vars.am b/lib/am/inst-vars.am
new file mode 100644 (file)
index 0000000..3096f0a
--- /dev/null
@@ -0,0 +1,73 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2004-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if %?FIRST%
+
+## These variables help stripping any $(VPATH) that some
+## Make implementations prepend before VPATH-found files.
+## The issue is discussed at length in distdir.am.
+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;
+## Strip all directories.
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+## Number of files to install concurrently.
+am__install_max = 40
+## Take a $list of nobase files, strip $(srcdir) from them.
+## Split apart in setup variable and an action that can be used
+## in backticks or in a pipe.
+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/||"
+## Take a $list of nobase files, collect them, indexed by their
+## srcdir-stripped dirnames.  For up to am__install_max files, output
+## a line containing the dirname and the files, space-separated.
+## The arbitrary limit helps avoid the quadratic scaling exhibited by
+## string concatenation in most shells, and should avoid line length
+## limitations, while still offering only negligible performance impact
+## through spawning more install commands than absolutely needed.
+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] }'
+## Collect up to 40 files per line from stdin.
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+
+## A shell code fragment to uninstall files from a given directory.
+## It expects the $dir and $files shell variables to be defined respectively
+## to the directory where the files to be removed are, and to the list of
+## such files.
+am__uninstall_files_from_dir = { \
+## Some rm implementations complain if 'rm -f' is used without arguments.
+  test -z "$$files" \
+## At least Solaris /bin/sh still lacks 'test -e', so we use the multiple
+## tests below instead.  We expect $dir to be either non-existent or a
+## directory, so the failure we'll experience if it is a regular file
+## is indeed desired and welcome (better to fail loudly thasn silently).
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+
+endif %?FIRST%
diff --git a/lib/am/install.am b/lib/am/install.am
new file mode 100644 (file)
index 0000000..b587d08
--- /dev/null
@@ -0,0 +1,105 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ----------------------------------------- ##
+## installdirs -- Creating the installdirs.  ##
+## ----------------------------------------- ##
+
+## The reason we loop over %am__installdirs% (instead of simply running
+## $(MKDIR_P) %am__installdirs%) is that directories variable such as
+## "$(DESTDIR)$(mydir)" can potentially expand to "" if $(mydir) is
+## conditionally defined.  BTW, those directories are quoted in order
+## to support installation paths with spaces.
+
+if %?SUBDIRS%
+.PHONY: installdirs installdirs-am
+RECURSIVE_TARGETS += installdirs-recursive
+installdirs: installdirs-recursive
+installdirs-am:%installdirs-local%
+?am__installdirs?      for dir in %am__installdirs%; do \
+?am__installdirs?        test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+?am__installdirs?      done
+else !%?SUBDIRS%
+.PHONY: installdirs
+installdirs:%installdirs-local%
+?am__installdirs?      for dir in %am__installdirs%; do \
+?am__installdirs?        test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+?am__installdirs?      done
+endif !%?SUBDIRS%
+
+
+## ----------------- ##
+## Install targets.  ##
+## ----------------- ##
+
+.PHONY: install install-exec install-data uninstall
+.PHONY: install-exec-am install-data-am uninstall-am
+
+if %?SUBDIRS%
+RECURSIVE_TARGETS += install-data-recursive install-exec-recursive \
+                    install-recursive uninstall-recursive
+install:%maybe_BUILT_SOURCES% install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+else !%?SUBDIRS%
+install:%maybe_BUILT_SOURCES% install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+endif !%?SUBDIRS%
+
+if %?maybe_BUILT_SOURCES%
+.MAKE: install
+endif %?maybe_BUILT_SOURCES%
+
+.MAKE .PHONY: install-am
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+
+.PHONY: installcheck
+?SUBDIRS?installcheck: installcheck-recursive
+?!SUBDIRS?installcheck: installcheck-am
+?!SUBDIRS?.PHONY: installcheck-am
+?!SUBDIRS?installcheck-am:
+
+## If you ever modify this, keep in mind that INSTALL_PROGRAM is used
+## in subdirectories, so never set it to a value relative to the top
+## directory.
+.MAKE .PHONY: install-strip
+install-strip:
+## Beware that there are two variables used to install programs:
+##   INSTALL_PROGRAM is used for ordinary *_PROGRAMS
+##   install_sh_PROGRAM is used for nobase_*_PROGRAMS (because install-sh
+##                                                     creates directories)
+## It's OK to override both with INSTALL_STRIP_PROGRAM, because
+## INSTALL_STRIP_PROGRAM uses install-sh (see m4/strip.m4 for a rationale).
+##
+## Use double quotes for the *_PROGRAM settings because we might need to
+## interpolate some backquotes at runtime.
+##
+## The case for empty $(STRIP) is separate so that it is quoted correctly for
+## multiple words, but does not expand to an empty words if STRIP is empty.
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
diff --git a/lib/am/java.am b/lib/am/java.am
new file mode 100644 (file)
index 0000000..6c163b5
--- /dev/null
@@ -0,0 +1,92 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1998-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+## ---------- ##
+## Building.  ##
+## ---------- ##
+
+if %?FIRST%
+JAVAC = javac
+CLASSPATH_ENV = CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT)$${CLASSPATH:+":$$CLASSPATH"}
+JAVAROOT = $(top_builddir)
+endif %?FIRST%
+
+class%NDIR%.stamp: $(am__java_sources)
+       @list1='$?'; list2=; if test -n "$$list1"; then \
+         for p in $$list1; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+           list2="$$list2 $$d$$p"; \
+         done; \
+         echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \
+         $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \
+       else :; fi
+       echo timestamp > $@
+
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+if %?INSTALL%
+am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
+?EXEC?.PHONY install-exec-am: install-%DIR%JAVA
+?!EXEC?.PHONY install-data-am: install-%DIR%JAVA
+install-%DIR%JAVA: class%NDIR%.stamp
+       @$(NORMAL_INSTALL)
+## A single .java file can be compiled into multiple .class files.  So
+## we just install all the .class files that got built into this
+## directory.  This is not optimal, but will have to do for now.
+       @test -n "$(%DIR%_JAVA)" && test -n "$(%NDIR%dir)" || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)"; \
+       set x *.class; shift; test "$$1" != "*.class" || exit 0; \
+       echo " $(INSTALL_DATA)" "$$@" "'$(DESTDIR)$(%NDIR%dir)/$$p'"; \
+       $(INSTALL_DATA) "$$@" "$(DESTDIR)$(%NDIR%dir)"
+endif %?INSTALL%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?INSTALL%
+.PHONY uninstall-am: uninstall-%DIR%JAVA
+uninstall-%DIR%JAVA:
+       @$(NORMAL_UNINSTALL)
+       @test -n "$(%DIR%_JAVA)" && test -n "$(%NDIR%dir)" || exit 0; \
+       set x *.class; shift; test "$$1" != "*.class" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(%NDIR%dir)' && rm -f" "$$@" ")"; \
+       cd "$(DESTDIR)$(%NDIR%dir)" && rm -f "$$@"
+endif %?INSTALL%
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+.PHONY clean-am: clean-%NDIR%JAVA
+clean-%NDIR%JAVA:
+       -rm -f *.class class%NDIR%.stamp
+
+
+## -------------- ##
+## Distributing.  ##
+## -------------- ##
+
+if %?DIST%
+DIST_COMMON += %DISTVAR%
+endif %?DIST%
diff --git a/lib/am/lang-compile.am b/lib/am/lang-compile.am
new file mode 100644 (file)
index 0000000..04cafb3
--- /dev/null
@@ -0,0 +1,39 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## This file is read once per *language*, not per extension.
+
+## ------------------------- ##
+## Preprocessed Fortran 77.  ##
+## ------------------------- ##
+
+## We also handle the case of preprocessing '.F' files into '.f' files.
+if %?PPF77%
+.F.f:
+       $(F77COMPILE) -F $<
+endif %?PPF77%
+
+
+
+## -------- ##
+## Ratfor.  ##
+## -------- ##
+
+## We also handle the case of preprocessing `.r' files into `.f' files.
+if %?RATFOR%
+.r.f:
+       $(RCOMPILE) -F $<
+endif %?RATFOR%
diff --git a/lib/am/lex.am b/lib/am/lex.am
new file mode 100644 (file)
index 0000000..7467f4f
--- /dev/null
@@ -0,0 +1,30 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## See the comment about am__skipyacc in yacc.am.
+if %?MAINTAINER-MODE%
+if %?FIRST%
+@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
+endif %?FIRST%
+endif %?MAINTAINER-MODE%
+
+?GENERIC?%EXT%%DERIVED-EXT%:
+?!GENERIC?%OBJ%: %SOURCE%
+?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
new file mode 100644 (file)
index 0000000..686b648
--- /dev/null
@@ -0,0 +1,19 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%LIBRARY%: $(%XLIBRARY%_OBJECTS) $(%XLIBRARY%_DEPENDENCIES) $(EXTRA_%XLIBRARY%_DEPENDENCIES) %DIRSTAMP%
+       %SILENT%-rm -f %LIBRARY%
+       %VERBOSE%$(%XLIBRARY%_AR) %LIBRARY% $(%XLIBRARY%_OBJECTS) $(%XLIBRARY%_LIBADD)
+       %SILENT%$(RANLIB) %LIBRARY%
diff --git a/lib/am/libs.am b/lib/am/libs.am
new file mode 100644 (file)
index 0000000..d1f63ae
--- /dev/null
@@ -0,0 +1,104 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if %?INSTALL%
+include inst-vars.am
+endif %?INSTALL%
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+if %?INSTALL%
+am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
+.PHONY install-%EXEC?exec:data%-am: install-%DIR%LIBRARIES
+install-%DIR%LIBRARIES: $(%DIR%_LIBRARIES)
+       @$(NORMAL_INSTALL)
+if %?BASE%
+## Funny invocation because Makefile variable can be empty, leading to
+## a syntax error in sh.
+       @list='$(%DIR%_LIBRARIES)'; test -n "$(%NDIR%dir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+         echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(INSTALL_DATA) $$list2 "$(DESTDIR)$(%NDIR%dir)" || exit $$?; }
+else !%?BASE%
+## Funny invocation because Makefile variable can be empty, leading to
+## a syntax error in sh.
+       @list='$(%DIR%_LIBRARIES)'; test -n "$(%NDIR%dir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+       fi; \
+       $(am__nobase_list) | while read dir files; do \
+         xfiles=; for p in $$files; do \
+           if test -f "$$p"; then xfiles="$$xfiles $$p"; else :; fi; done; \
+         test -z "$$xfiles" || { \
+           test "x$$dir" = x. || { \
+             echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+             $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)/$$dir"; }; \
+           echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+           $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(%NDIR%dir)/$$dir" || exit $$?; }; \
+       done
+endif !%?BASE%
+## We do two loops here so that $(POST_INSTALL) can be empty.  If we
+## merge the two loops, we get a syntax error from sh.  Anyway, having
+## $(POST_INSTALL) in the middle of the loop essentially renders it
+## useless; sh never actually executes this command.  Read the GNU
+## Standards for a little enlightenment on this.
+       @$(POST_INSTALL)
+       @list='$(%DIR%_LIBRARIES)'; test -n "$(%NDIR%dir)" || list=; \
+       for p in $$list; do \
+         if test -f $$p; then \
+           %BASE?$(am__strip_dir):f=$$p;% \
+## Must ranlib after installing because mod time changes.
+## cd to target directory because AIX ranlib messes up with whitespace
+## in the argument.
+           echo " ( cd '$(DESTDIR)$(%NDIR%dir)' && $(RANLIB) $$f )"; \
+           ( cd "$(DESTDIR)$(%NDIR%dir)" && $(RANLIB) $$f ) || exit $$?; \
+         else :; fi; \
+       done
+endif %?INSTALL%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?INSTALL%
+.PHONY uninstall-am: uninstall-%DIR%LIBRARIES
+uninstall-%DIR%LIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(%DIR%_LIBRARIES)'; test -n "$(%NDIR%dir)" || list=; \
+?BASE? files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+?!BASE?        $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+       dir='$(DESTDIR)$(%NDIR%dir)'; $(am__uninstall_files_from_dir)
+endif %?INSTALL%
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+.PHONY clean-am: clean-%DIR%LIBRARIES
+clean-%DIR%LIBRARIES:
+       -test -z "$(%DIR%_LIBRARIES)" || rm -f $(%DIR%_LIBRARIES)
diff --git a/lib/am/libtool.am b/lib/am/libtool.am
new file mode 100644 (file)
index 0000000..3681c45
--- /dev/null
@@ -0,0 +1,28 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.PHONY: mostlyclean-libtool clean-libtool distclean-libtool
+mostlyclean-am: mostlyclean-libtool
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-am: clean-libtool
+clean-libtool:
+?LTRMS?%LTRMS%
+
+?TOPDIR_P?distclean-am: distclean-libtool
+?TOPDIR_P?distclean-libtool:
+?TOPDIR_P?     -rm -f libtool config.lt
diff --git a/lib/am/lisp.am b/lib/am/lisp.am
new file mode 100644 (file)
index 0000000..ba5c92a
--- /dev/null
@@ -0,0 +1,149 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1996-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if %?INSTALL%
+include inst-vars.am
+endif %?INSTALL%
+
+## ---------- ##
+## Building.  ##
+## ---------- ##
+
+elc-stamp: $(LISP)
+       @echo 'WARNING: Warnings can be ignored. :-)'
+       @rm -f elc-temp && touch elc-temp
+       if test "$(EMACS)" != no; then \
+## Make sure "$@" isn't empty initially.
+         set x; \
+## Populate "$@" with elisp files (found in the current directory
+## or in $srcdir).
+         list='$(LISP)'; for p in $$list; do \
+           if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+           set x "$$@" "$$d$$p"; shift; \
+         done; \
+## Finally call elisp-comp for all files.
+         shift; \
+         EMACS="$(EMACS)" $(SHELL) $(elisp_comp) "$$@" || exit 1; \
+       else : ; fi
+       @mv -f elc-temp $@
+
+## Do not use $(ELCFILES) as target, because it may have been emptied
+## by the user (to disable byte-compilation), and POSIX does not allow
+## an empty target.
+$(am__ELCFILES): elc-stamp
+## Recover from the removal of $@.
+##
+## Do not call "make elc-stamp" if emacs is not available, because it would
+## be useless.
+##
+## If "make -n" is called, do not execute any command in the recipe that
+## changes the tree; however, invoke the recursive make for debuggability.
+       @if $(am__make_dryrun); then dry=:; else dry=; fi; \
+       if test "$(EMACS)" != no && test ! -f $@; then \
+## If "make -j" is used and more than one file has been erased, several
+## processes can execute this block.  We have to make sure that only
+## the first one will run "$(MAKE) $(AM_MAKEFLAGS) elc-stamp", and the
+## other ones will wait.
+##
+## There is a race here if only one child of make receive a signal.
+## In that case the build may fail.  We remove elc-stamp when we receive
+## a signal so we are sure the build will succeed the next time.
+         $$dry trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
+         if $$dry mkdir elc-lock 2>/dev/null; then \
+## This code is being executed by the first process.
+           $$dry rm -f elc-stamp; \
+           $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
+           $$dry rmdir elc-lock; \
+         else \
+## This code is being executed by the follower processes.
+## Wait until the first process is done.
+           while test -d elc-lock && test -z "$$dry"; do sleep 1; done; \
+## Succeed if and only if the first process succeeded.
+           $$dry test -f elc-stamp; exit $$?; \
+         fi; \
+       else : ; fi
+
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+if %?INSTALL%
+am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
+%DIR%LISP_INSTALL = %BASE?$(INSTALL_DATA):$(install_sh_DATA)%
+.PHONY install-%EXEC?exec:data%-am: install-%DIR%LISP
+install-%DIR%LISP: $(%DIR%_LISP) $(ELCFILES)
+       @$(NORMAL_INSTALL)
+## Do not install anything if EMACS was not found.
+       @if test "$(EMACS)" != no && test -n "$(%NDIR%dir)"; then \
+?!BASE?          $(am__vpath_adj_setup) \
+## Funny invocation because Makefile variable can be empty, leading to
+## a syntax error in sh.
+         list='$(%DIR%_LISP)'; \
+         if test -n "$$list"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+           $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+         fi; \
+         for p in $$list; do \
+## A lisp file can be in the source directory or the build directory.
+           if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+           %BASE?$(am__strip_dir):$(am__vpath_adj)% \
+           echo " $(%DIR%LISP_INSTALL) '$$d$$p' '$(DESTDIR)$(%NDIR%dir)/$$f'"; \
+           $(%DIR%LISP_INSTALL) "$$d$$p" "$(DESTDIR)$(%NDIR%dir)/$$f" || exit $$?; \
+## Only install .elc file if it exists.
+           if test -f $${p}c; then \
+             echo " $(%DIR%LISP_INSTALL) '$${p}c' '$(DESTDIR)$(%NDIR%dir)/$${f}c'"; \
+             $(%DIR%LISP_INSTALL) "$${p}c" "$(DESTDIR)$(%NDIR%dir)/$${f}c" || exit $$?; \
+           else : ; fi; \
+         done; \
+       else : ; fi
+endif %?INSTALL%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?INSTALL%
+.PHONY uninstall-am: uninstall-%DIR%LISP
+uninstall-%DIR%LISP:
+       @$(NORMAL_UNINSTALL)
+## Do not uninstall anything if EMACS was not found.
+       @test "$(EMACS)" != no && test -n "$(%NDIR%dir)" || exit 0; \
+       list='$(%DIR%_LISP)'; \
+?BASE? files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+?!BASE?        $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+       files="$$files "`echo "$$files" | sed 's|$$|c|'`; \
+       dir='$(DESTDIR)$(%NDIR%dir)'; $(am__uninstall_files_from_dir)
+endif %?INSTALL%
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+.PHONY clean-am: clean-lisp
+clean-lisp:
+       -rm -f elc-stamp $(ELCFILES)
+
+
+## -------------- ##
+## Distributing.  ##
+## -------------- ##
+
+if %?DIST%
+DIST_COMMON += %DISTVAR%
+endif %?DIST%
diff --git a/lib/am/ltlib.am b/lib/am/ltlib.am
new file mode 100644 (file)
index 0000000..1ca26b5
--- /dev/null
@@ -0,0 +1,118 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if %?INSTALL%
+include inst-vars.am
+endif %?INSTALL%
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+if %?INSTALL%
+am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
+.PHONY install-%EXEC?exec:data%-am: install-%DIR%LTLIBRARIES
+install-%DIR%LTLIBRARIES: $(%DIR%_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+if %?BASE%
+## Funny invocation because Makefile variable can be empty, leading to
+## a syntax error in sh.
+       @list='$(%DIR%_LTLIBRARIES)'; test -n "$(%NDIR%dir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+## Note that we explicitly set the libtool mode.  This avoids any lossage
+## if the program doesn't have a name that libtool expects.
+## Use INSTALL and not INSTALL_DATA because libtool knows the right
+## permissions to use.
+?LIBTOOL?        echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(%NDIR%dir)'"; \
+?LIBTOOL?        $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(%NDIR%dir)"; \
+?!LIBTOOL?       echo " $(INSTALL) $(INSTALL_STRIP_FLAG) $$list '$(DESTDIR)$(%NDIR%dir)'"; \
+?!LIBTOOL?       $(INSTALL) $(INSTALL_STRIP_FLAG) $$list "$(DESTDIR)$(%NDIR%dir)"; \
+       }
+else !%?BASE%
+       @list='$(%DIR%_LTLIBRARIES)'; test -n "$(%NDIR%dir)"  || list=; \
+       if test -n "$$list"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+           $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+       fi; \
+       for p in $$list; do if test -f "$$p"; then echo "$$p $$p"; else :; fi; done | \
+       sed '/ .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+       $(AWK) 'BEGIN { cur = "." } \
+         { if ($$2 == cur) { files = files " " $$1 } \
+           else { print cur, files; files = $$1; cur = $$2 } } \
+         END { print cur, files }' | \
+       while read dir files; do \
+         test -z "$$files" || { \
+           test "x$$dir" = x. || { \
+             echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+             $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)/$$dir"; }; \
+## Note that we explicitly set the libtool mode.  This avoids any lossage
+## if the program doesn't have a name that libtool expects.
+## Use INSTALL and not INSTALL_DATA because libtool knows the right
+## permissions to use.
+?LIBTOOL?          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$files '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+?LIBTOOL?          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$files "$(DESTDIR)$(%NDIR%dir)/$$dir" || exit $$?; \
+?!LIBTOOL?         echo " $(INSTALL) $(INSTALL_STRIP_FLAG) $$files '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+?!LIBTOOL?         $(INSTALL) $(INSTALL_STRIP_FLAG) $$files "$(DESTDIR)$(%NDIR%dir)/$$dir" || exit $$?; \
+         }; \
+       done
+endif !%?BASE%
+endif %?INSTALL%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?INSTALL%
+.PHONY uninstall-am: uninstall-%DIR%LTLIBRARIES
+uninstall-%DIR%LTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(%DIR%_LTLIBRARIES)'; test -n "$(%NDIR%dir)" || list=; \
+       for p in $$list; do \
+         %BASE?$(am__strip_dir):f=$$p;% \
+?LIBTOOL?        echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(%NDIR%dir)/$$f'"; \
+?LIBTOOL?        $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(%NDIR%dir)/$$f"; \
+?!LIBTOOL?       echo " rm -f '$(DESTDIR)$(%NDIR%dir)/$$f'"; \
+?!LIBTOOL?       rm -f "$(DESTDIR)$(%NDIR%dir)/$$f"; \
+       done
+endif %?INSTALL%
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+.PHONY clean-am: clean-%DIR%LTLIBRARIES
+clean-%DIR%LTLIBRARIES:
+       -test -z "$(%DIR%_LTLIBRARIES)" || rm -f $(%DIR%_LTLIBRARIES)
+## 'so_locations' files are created by some linkers (IRIX, OSF) when
+## building a shared object.  Libtool places these files in the
+## directory where the shared object is created.
+       @list='$(%DIR%_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
diff --git a/lib/am/ltlibrary.am b/lib/am/ltlibrary.am
new file mode 100644 (file)
index 0000000..b758880
--- /dev/null
@@ -0,0 +1,17 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%LTLIBRARY%: $(%XLTLIBRARY%_OBJECTS) $(%XLTLIBRARY%_DEPENDENCIES) $(EXTRA_%XLTLIBRARY%_DEPENDENCIES) %DIRSTAMP%
+       %VERBOSE%$(%XLINK%) %RPATH% $(%XLTLIBRARY%_OBJECTS) $(%XLTLIBRARY%_LIBADD) $(LIBS)
diff --git a/lib/am/mans-vars.am b/lib/am/mans-vars.am
new file mode 100644 (file)
index 0000000..5d582d7
--- /dev/null
@@ -0,0 +1,20 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+NROFF = nroff
+## We don't really need this, but we use it in case we ever want to
+## support noinst_MANS.
+MANS = %MANS%
diff --git a/lib/am/mans.am b/lib/am/mans.am
new file mode 100644 (file)
index 0000000..bfc71dc
--- /dev/null
@@ -0,0 +1,154 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1998-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+include inst-vars.am
+man%SECTION%dir = $(mandir)/man%SECTION%
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+## MANS primary are always installed in mandir, hence install-data
+## is hard coded.
+
+.PHONY: install-man
+?INSTALL-MAN?install-data-am: install-man
+?INSTALL-MAN?am__installdirs += "$(DESTDIR)$(man%SECTION%dir)"
+.PHONY install-man: install-man%SECTION%
+install-man%SECTION%: %DEPS%
+       @$(NORMAL_INSTALL)
+if %?NOTRANS_MANS%
+## Handle MANS with notrans_ prefix
+       @list1='%NOTRANS_SECT_LIST%'; \
+?!HAVE_NOTRANS?        list2=''; \
+?HAVE_NOTRANS? list2='%NOTRANS_LIST%'; \
+       test -n "$(man%SECTION%dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man%SECTION%dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man%SECTION%dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+## Extract all items from notrans_man_MANS that should go in this section.
+## This must be done dynamically to support conditionals.
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+## Accept for 'man1' files like 'foo.1c' but not 'sub.1/foo.2' or 'foo-2.1.4'.
+           | sed -n '/\.%SECTION%[a-z]*$$/p'; \
+       fi; \
+## Extract basename of manpage, change the extension if needed.
+       } | while read p; do \
+## Find the file.
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+## Extract the basename of the man page and change the extension if needed.
+       sed 'n;s,.*/,,;p;s,\.[^%SECTION%][0-9a-z]*$$,.%SECTION%,' | \
+       sed 'N;N;s,\n, ,g' | { \
+## We now have a list "sourcefile basename installed-name".
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man%SECTION%dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man%SECTION%dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man%SECTION%dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man%SECTION%dir)" || exit $$?; }; \
+       done; }
+endif %?NOTRANS_MANS%
+if %?TRANS_MANS%
+## Handle MANS without notrans_ prefix
+       @list1='%TRANS_SECT_LIST%'; \
+?!HAVE_TRANS?  list2=''; \
+?HAVE_TRANS?   list2='%TRANS_LIST%'; \
+       test -n "$(man%SECTION%dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man%SECTION%dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man%SECTION%dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+## Extract all items from notrans_man_MANS that should go in this section.
+## This must be done dynamically to support conditionals.
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+## Accept for 'man1' files like `foo.1c' but not 'sub.1/foo.2' or 'foo-2.1.4'.
+           | sed -n '/\.%SECTION%[a-z]*$$/p'; \
+       fi; \
+## Extract basename of manpage, change the extension if needed.
+       } | while read p; do \
+## Find the file.
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+## Extract the basename of the man page and change the extension if needed.
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^%SECTION%][0-9a-z]*$$,%SECTION%,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+## We now have a list "sourcefile basename installed-name".
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man%SECTION%dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man%SECTION%dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man%SECTION%dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man%SECTION%dir)" || exit $$?; }; \
+       done; }
+endif %?TRANS_MANS%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+.PHONY: uninstall-man
+?INSTALL-MAN?uninstall-am: uninstall-man
+.PHONY uninstall-man: uninstall-man%SECTION%
+uninstall-man%SECTION%:
+       @$(NORMAL_UNINSTALL)
+if %?NOTRANS_MANS%
+## Handle MANS with notrans_ prefix
+       @list='%NOTRANS_SECT_LIST%'; test -n "$(man%SECTION%dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+## Extract all items from notrans_man_MANS that should go in this section.
+## This must be done dynamically to support conditionals.
+?HAVE_NOTRANS? l2='%NOTRANS_LIST%'; for i in $$l2; do echo "$$i"; done | \
+## Accept for 'man1' files like 'foo.1c' but not 'sub.1/foo.2' or 'foo-2.1.4'.
+?HAVE_NOTRANS?   sed -n '/\.%SECTION%[a-z]*$$/p'; \
+## Extract basename of manpage, change the extension if needed.
+       } | sed 's,.*/,,;s,\.[^%SECTION%][0-9a-z]*$$,.%SECTION%,'`; \
+       dir='$(DESTDIR)$(man%SECTION%dir)'; $(am__uninstall_files_from_dir)
+endif %?NOTRANS_MANS%
+if %?TRANS_MANS%
+## Handle MANS without notrans_ prefix
+       @list='%TRANS_SECT_LIST%'; test -n "$(man%SECTION%dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+## Extract all items from man_MANS that should go in this section.
+## This must be done dynamically to support conditionals.
+?HAVE_TRANS?   l2='%TRANS_LIST%'; for i in $$l2; do echo "$$i"; done | \
+## Accept for 'man1' files like 'foo.1c' but not 'sub.1/foo.2' or 'foo-2.1.4'.
+?HAVE_TRANS?     sed -n '/\.%SECTION%[a-z]*$$/p'; \
+## Extract basename of manpage, run it through the program rename
+## transform, and change the extension if needed.
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^%SECTION%][0-9a-z]*$$,%SECTION%,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       dir='$(DESTDIR)$(man%SECTION%dir)'; $(am__uninstall_files_from_dir)
+endif %?TRANS_MANS%
diff --git a/lib/am/program.am b/lib/am/program.am
new file mode 100644 (file)
index 0000000..699afb5
--- /dev/null
@@ -0,0 +1,23 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%PROGRAM%%EXEEXT%: $(%XPROGRAM%_OBJECTS) $(%XPROGRAM%_DEPENDENCIES) $(EXTRA_%XPROGRAM%_DEPENDENCIES) %DIRSTAMP%
+## Remove program before linking.  Otherwise the link will fail if the
+## program is running somewhere.  FIXME: this could be a loss if
+## you're using an incremental linker.  Maybe we should think twice?
+## Or maybe not... sadly, incremental linkers are rarer than losing
+## systems.
+       @rm -f %PROGRAM%%EXEEXT%
+       %VERBOSE%$(%XLINK%) $(%XPROGRAM%_OBJECTS) $(%XPROGRAM%_LDADD) $(LIBS)
diff --git a/lib/am/progs.am b/lib/am/progs.am
new file mode 100644 (file)
index 0000000..2be8bca
--- /dev/null
@@ -0,0 +1,146 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+if %?INSTALL%
+am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
+.PHONY install-%EXEC?exec:data%-am: install-%DIR%PROGRAMS
+install-%DIR%PROGRAMS: $(%DIR%_PROGRAMS)
+       @$(NORMAL_INSTALL)
+## Funny invocation because Makefile variable can be empty, leading to
+## a syntax error in sh.
+       @list='$(%DIR%_PROGRAMS)'; test -n "$(%NDIR%dir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+## On Cygwin with libtool test won't see 'foo.exe' but instead 'foo'.
+## So we check for both.
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p%LIBTOOL? || test -f $$p1%; \
+         then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+## We now have a list of sourcefile pairs, separated by newline.
+## Turn that into "sourcefile source_base target_dir xformed_target_base",
+## with newlines being turned into spaces in a second step.
+       sed -e 'p;s,.*/,,;n;h' -e '%BASE?s|.*|.|:s|[^/]*$$||; s|^$$|.|%' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+## The following awk script turns that into one line containing directories
+## and then lines of 'type target_name_or_directory sources ...', with type
+## 'd' designating directories, and 'f' files.
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+?!BASE?          case $$type in \
+?!BASE?          d) echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+?!BASE?             $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)/$$dir" || exit $$?;; \
+?!BASE?          f) \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+?!LIBTOOL?           echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(%NDIR%dir)$$dir'"; \
+?!LIBTOOL?           $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(%NDIR%dir)$$dir" || exit $$?; \
+## Note that we explicitly set the libtool mode.  This avoids any
+## lossage if the install program doesn't have a name that libtool
+## expects.
+?LIBTOOL?          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(%NDIR%dir)$$dir'"; \
+?LIBTOOL?          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(%NDIR%dir)$$dir" || exit $$?; \
+           } \
+?!BASE?          ;; esac \
+       ; done
+
+endif %?INSTALL%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?INSTALL%
+.PHONY uninstall-am: uninstall-%DIR%PROGRAMS
+uninstall-%DIR%PROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(%DIR%_PROGRAMS)'; test -n "$(%NDIR%dir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+## Remove any leading directory before applying $(transform),
+## but keep the directory part in the hold buffer, in order to
+## reapply it again afterwards in the nobase case.  Append $(EXEEXT).
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/'%BASE? : -e 'x;s,[^/]*$$,,;G;s,\n,,'%`; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(%NDIR%dir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(%NDIR%dir)" && rm -f $$files
+endif %?INSTALL%
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+.PHONY clean-am: clean-%DIR%PROGRAMS
+clean-%DIR%PROGRAMS:
+?!LIBTOOL?     -test -z "$(%DIR%_PROGRAMS)" || rm -f $(%DIR%_PROGRAMS)
+## Under Cygwin, we build 'program$(EXEEXT)'.  However, if this
+## program uses a Libtool library, Libtool will move it in
+## '_libs/program$(EXEEXT)' and create a 'program' wrapper (without
+## '$(EXEEXT)').  Therefore, if Libtool is used, we must try to erase
+## both 'program$(EXEEXT)' and 'program'.
+## Cleaning the '_libs/' or '.libs/' directory is done from clean-libtool.
+## FIXME: In the future (i.e., when it works) it would be nice to delegate
+## this task to "libtool --mode=clean".
+?LIBTOOL?      @list='$(%DIR%_PROGRAMS)'; test -n "$$list" || exit 0; \
+?LIBTOOL?      echo " rm -f" $$list; \
+?LIBTOOL?      rm -f $$list || exit $$?; \
+?LIBTOOL?      test -n "$(EXEEXT)" || exit 0; \
+?LIBTOOL?      list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+?LIBTOOL?      echo " rm -f" $$list; \
+?LIBTOOL?      rm -f $$list
+
+
+## ---------- ##
+## Checking.  ##
+## ---------- ##
+
+if %?CK-OPTS%
+.PHONY installcheck-am: installcheck-%DIR%PROGRAMS
+installcheck-%DIR%PROGRAMS: $(%DIR%_PROGRAMS)
+       bad=0; pid=$$$$; list="$(%DIR%_PROGRAMS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+## Match $(srcdir)/$$p in addition to $$p because Sun make might rewrite
+## filenames in AM_INSTALLCHECK_STD_OPTIONS_EXEMPT during VPATH builds.
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+## Strip the directory and $(EXEEXT) before applying $(transform).
+         f=`echo "$$p" | \
+            sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+## Insert the directory back if nobase_ is used.
+?!BASE?          f=`echo "$$p" | sed 's|[^/]*$$||'`"$$f"; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(%NDIR%dir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
+endif %?CK-OPTS%
diff --git a/lib/am/python.am b/lib/am/python.am
new file mode 100644 (file)
index 0000000..cab6129
--- /dev/null
@@ -0,0 +1,129 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1999-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if %?INSTALL%
+include inst-vars.am
+endif %?INSTALL%
+
+?FIRST?am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+if %?INSTALL%
+am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
+.PHONY install-%EXEC?exec:data%-am: install-%DIR%PYTHON
+install-%DIR%PYTHON: $(%DIR%_PYTHON)
+       @$(NORMAL_INSTALL)
+if %?BASE%
+       @list='$(%DIR%_PYTHON)'; dlist=; list2=; test -n "$(%NDIR%dir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+## A file can be in the source directory or the build directory.
+         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
+         if test -f $$b$$p; then \
+## Compute basename of source file.  Unless this is a nobase_ target, we
+## want to install 'python/foo.py' as '$(DESTDIR)$(%NDIR%dir)/foo.py',
+## not '$(DESTDIR)$(%NDIR%dir)/python/foo.py'.
+           $(am__strip_dir) \
+           dlist="$$dlist $$f"; \
+           list2="$$list2 $$b$$p"; \
+         else :; fi; \
+       done; \
+       for file in $$list2; do echo $$file; done | $(am__base_list) | \
+       while read files; do \
+## Don't perform translation, since script name is important.
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(%NDIR%dir)" || exit $$?; \
+       done || exit $$?; \
+## Byte-compile must be done at install time, since file times are
+## encoded in the actual files.
+       if test -n "$$dlist"; then \
+         $(am__py_compile) --destdir "$(DESTDIR)" \
+                           --basedir "$(%NDIR%dir)" $$dlist; \
+       else :; fi
+else !%?BASE%
+       @list='$(%DIR%_PYTHON)'; test -n "$(%NDIR%dir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+       fi; \
+       $(am__nobase_list) | while read dir files; do \
+         xfiles=; for p in $$files; do \
+## A file can be in the source directory or the build directory.
+           if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
+           if test -f "$$b$$p"; then xfiles="$$xfiles $$b$$p"; dlist="$$dlist $$p"; \
+           else :; fi; done; \
+         test -z "$$xfiles" || { \
+           test "x$$dir" = x. || { \
+             echo "$(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+             $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)/$$dir"; }; \
+## Don't perform translation, since script name is important.
+           echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+           $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(%NDIR%dir)/$$dir" || exit $$?; }; \
+## Byte-compile must be done at install time, since file times are
+## encoded in the actual files.
+         if test -n "$$dlist"; then \
+           $(am__py_compile) --destdir "$(DESTDIR)" \
+                             --basedir "$(%NDIR%dir)" $$dlist; \
+         else :; fi \
+       done
+endif !%?BASE%
+endif %?INSTALL%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?INSTALL%
+.PHONY uninstall-am: uninstall-%DIR%PYTHON
+uninstall-%DIR%PYTHON:
+       @$(NORMAL_UNINSTALL)
+       @list='$(%DIR%_PYTHON)'; test -n "$(%NDIR%dir)" || list=; \
+?BASE? files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+?!BASE?        $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+       test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(%NDIR%dir)'; \
+## Also remove the .pyc and .pyo byte compiled versions.
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
+endif %?INSTALL%
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+## There is nothing to clean here since files are
+## byte-compiled when (and where) they are installed.
+
+## -------------- ##
+## Distributing.  ##
+## -------------- ##
+
+if %?DIST%
+DIST_COMMON += %DISTVAR%
+endif %?DIST%
diff --git a/lib/am/remake-hdr.am b/lib/am/remake-hdr.am
new file mode 100644 (file)
index 0000000..f61400a
--- /dev/null
@@ -0,0 +1,74 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## Explicitly look in srcdir for benefit of non-GNU makes.
+
+
+%CONFIG_H%: %STAMP%
+## Recover from removal of CONFIG_HEADER
+       @if test ! -f $@; then rm -f %STAMP%; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) %STAMP%; else :; fi
+
+
+%STAMP%: %CONFIG_H_DEPS% $(top_builddir)/config.status
+       @rm -f %STAMP%
+       cd $(top_builddir) && $(SHELL) ./config.status %CONFIG_H_PATH%
+
+
+## Only the first file of AC_CONFIG_HEADERS is assumed to be generated
+## by autoheader.
+if %?FIRST%
+%CONFIG_HIN%: %MAINTAINER-MODE% $(am__configure_deps) %FILES%
+## Cater to parallel BSD make.
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+## Whenever $(AUTOHEADER) has run, we must make sure that
+## ./config.status will rebuild config.h.  The dependency from %STAMP%
+## on %CONFIG_H_DEPS% (which contains config.hin) is not enough to
+## express this.
+##
+## There are some tricky cases where this rule will build a
+## config.hin which has the same timestamp as %STAMP%, in which case
+## ./config.status will not be rerun (meaning that users will use an
+## out-of-date config.h without knowing it).  One situation where this
+## can occur is the following:
+## 1. the user updates some configure dependency (let's say foo.m4)
+##    and runs 'make';
+## 2. the rebuild rules detect that a foo.m4 has changed,
+##    run aclocal, autoconf, automake, and then run ./config.status.
+##    (Note that autoheader hasn't been called yet, so ./config.status
+##    outputs a config.h from an obsolete config.hin);
+## 3. once Makefile has been regenerated, make continues, and
+##    discovers that config.h is a dependency of the 'all' rule.
+##    Because config.h depends on stamp-h1, stamp-h1 depends on
+##    config.hin, and config.hin depends on aclocal.m4, make runs
+##    autoheader to rebuild config.hin.
+## Now make ought to call ./config.status once again to rebuild
+## config.h from the new config.hin, but if you have a sufficiently
+## fast box, steps 2 and 3 will occur within the same second: the
+## config.h/stamp-h1 generated from the outdated config.hin will have
+## the same mtime as the new config.hin.  Hence make will think that
+## config.h is up to date.
+##
+## A solution is to erase %STAMP% here so that the %STAMP% rule
+## is always triggered after the this one.
+       rm -f %STAMP%
+## Autoheader has the bad habit of not changing the timestamp if
+## config.hin is unchanged, which breaks Make targets.  Since what
+## must not changed gratuitously is config.h, which is already handled
+## by config.status, there is no reason to make things complex for
+## config.hin.
+       touch $@
+endif %?FIRST%
diff --git a/lib/am/scripts.am b/lib/am/scripts.am
new file mode 100644 (file)
index 0000000..64e093e
--- /dev/null
@@ -0,0 +1,126 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if %?INSTALL%
+include inst-vars.am
+endif %?INSTALL%
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+if %?INSTALL%
+## if doesn't work properly for Automake variables yet.
+am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
+.PHONY install-%EXEC?exec:data%-am: install-%DIR%SCRIPTS
+install-%DIR%SCRIPTS: $(%DIR%_SCRIPTS)
+       @$(NORMAL_INSTALL)
+## Funny invocation because Makefile variable can be empty, leading to
+## a syntax error in sh.
+       @list='$(%DIR%_SCRIPTS)'; test -n "$(%NDIR%dir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
+       fi; \
+?!BASE?        $(am__nobase_strip_setup); \
+       for p in $$list; do \
+## A file can be in the source directory or the build directory.
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+## A script may or may not exist.
+         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+       done | \
+## We now have a list of "sourcefile newline (nobase-)target" pairs.
+## Turn that into "sourcefile source_base target_dir xformed_target_base",
+## with newlines being turned into spaces in a second step.
+       sed -e 'p;s,.*/,,;n' \
+?BASE?     -e 'h;s|.*|.|' \
+?!BASE?            -e "s|$$srcdirstrip/||" -e 'h;s|[^/]*$$||; s|^$$|.|' \
+           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+             if (++n[d] == $(am__install_max)) { \
+               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+           else { print "f", d "/" $$4, $$1 } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+?!BASE?          case $$type in \
+?!BASE?          d) echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)/$$dir'"; \
+?!BASE?             $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)/$$dir" || exit $$?;; \
+?!BASE?          f) \
+            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+            test -z "$$files" || { \
+              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(%NDIR%dir)$$dir'"; \
+              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(%NDIR%dir)$$dir" || exit $$?; \
+            } \
+?!BASE?          ;; esac \
+       ; done
+endif %?INSTALL%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?INSTALL%
+.PHONY uninstall-am: uninstall-%DIR%SCRIPTS
+uninstall-%DIR%SCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(%DIR%_SCRIPTS)'; test -n "$(%NDIR%dir)" || exit 0; \
+?BASE? files=`for p in $$list; do echo "$$p"; done | \
+?BASE?        sed -e 's,.*/,,;$(transform)'`; \
+?!BASE?        $(am__nobase_strip_setup); \
+?!BASE?        files=`$(am__nobase_strip) \
+?!BASE?               -e 'h;s,.*/,,;$(transform);x;s|[^/]*$$||;G;s,\n,,'`; \
+       dir='$(DESTDIR)$(%NDIR%dir)'; $(am__uninstall_files_from_dir)
+endif %?INSTALL%
+
+
+## -------------- ##
+## Distributing.  ##
+## -------------- ##
+
+if %?DIST%
+DIST_COMMON += %DISTVAR%
+endif %?DIST%
+
+
+## ---------- ##
+## Checking.  ##
+## ---------- ##
+
+if %?CK-OPTS%
+.PHONY installcheck-am: installcheck-%DIR%SCRIPTS
+installcheck-%DIR%SCRIPTS: $(%DIR%_SCRIPTS)
+       bad=0; pid=$$$$; list="$(%DIR%_SCRIPTS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+## Match $(srcdir)/$$p in addition to $$p because Sun make might rewrite
+## filenames in AM_INSTALLCHECK_STD_OPTIONS_EXEMPT during VPATH builds.
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+## Strip any leading directory before applying $(transform).
+         f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
+## Insert the directory back if nobase_ is used.
+?!BASE?          f=`echo "$$p" | sed 's|[^/]*$$||'`"$$f"; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(%NDIR%dir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
+endif %?CK-OPTS%
diff --git a/lib/am/subdirs.am b/lib/am/subdirs.am
new file mode 100644 (file)
index 0000000..1d1295e
--- /dev/null
@@ -0,0 +1,110 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+RECURSIVE_TARGETS += all-recursive check-recursive installcheck-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+## All documented targets which invoke 'make' recursively, or depend
+## on targets that do so.
+AM_RECURSIVE_TARGETS += $(RECURSIVE_TARGETS:-recursive=) \
+  $(RECURSIVE_CLEAN_TARGETS:-recursive=)
+
+.PHONY: $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS)
+.MAKE: $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+
+$(RECURSIVE_TARGETS):
+## Using $failcom allows "-k" to keep its natural meaning when running a
+## recursive rule.
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+
+mostlyclean: mostlyclean-recursive
+clean: clean-recursive
+distclean: distclean-recursive
+maintainer-clean: maintainer-clean-recursive
+
+## We run all 'clean' targets in reverse order.  Why?  It's an attempt
+## to alleviate a problem that can happen when dependencies are
+## enabled.  In this case, the .P file in one directory can depend on
+## some automatically generated header in an earlier directory.  Since
+## the dependencies are required before any target is examined, make
+## bombs.
+$(RECURSIVE_CLEAN_TARGETS):
+## Using $failcom allows "-k" to keep its natural meaning when running a
+## recursive rule.
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+## For distclean and maintainer-clean we make sure to use the full
+## list of subdirectories.  We do this so that 'configure; make
+## distclean' really is a no-op, even if SUBDIRS is conditional.  For
+## other clean targets this doesn't matter.
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+## Always do '.' last.
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
diff --git a/lib/am/tags.am b/lib/am/tags.am
new file mode 100644 (file)
index 0000000..fccacca
--- /dev/null
@@ -0,0 +1,181 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ---- ##
+## ID.  ##
+## ---- ##
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+## Make sure the list of sources is unique.
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+## Handle VPATH correctly.
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+
+
+## ------ ##
+## TAGS.  ##
+## ------ ##
+
+ETAGS = etags
+.PHONY: tags
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += tags TAGS
+endif %?SUBDIRS%
+tags: TAGS
+
+TAGS: %TAGSDIRS% $(HEADERS) $(SOURCES) %CONFIG% $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+## We use the positional parameters to build the subdir list with
+## absolute names, without the need to worry about white space in `pwd`.
+       set x; \
+       here=`pwd`; \
+## Exuberant Ctags wants --etags-include,
+## GNU Etags             --include
+## Furthermore Exuberant Ctags 5.5.4 fails to create TAGS files
+## when no files are supplied, despite any --etags-include option.
+## A workaround is to pass '.' as a file.  This is what $empty_fix is for.
+?SUBDIRS?      if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+?SUBDIRS?        include_option=--etags-include; \
+?SUBDIRS?        empty_fix=.; \
+?SUBDIRS?      else \
+?SUBDIRS?        include_option=--include; \
+?SUBDIRS?        empty_fix=; \
+?SUBDIRS?      fi; \
+?SUBDIRS?      list='$(SUBDIRS)'; for subdir in $$list; do \
+## Do nothing if we're trying to look in '.'.
+?SUBDIRS?        if test "$$subdir" = .; then :; else \
+?SUBDIRS?          test ! -f $$subdir/TAGS || \
+## Note that the = is mandatory for --etags-include.
+?SUBDIRS?            set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+?SUBDIRS?        fi; \
+?SUBDIRS?      done; \
+## Make sure the list of sources is unique.
+       list='$(SOURCES) $(HEADERS) %CONFIG% $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+## Handle VPATH correctly.
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+## Remove the 'x' we added first:
+       shift; \
+## Make sure we have something to run etags on.
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+
+
+## --------------- ##
+## vi-style tags.  ##
+## --------------- ##
+
+CTAGS = ctags
+.PHONY: CTAGS ctags
+if %?SUBDIRS%
+AM_RECURSIVE_TARGETS += ctags CTAGS
+endif %?SUBDIRS%
+ctags: CTAGS
+
+## We have a dummy name here because 'tags' has already been in use
+## for a long time to mean Emacs-style tags.  Oops.  This means the
+## dependencies here are useless.
+CTAGS: %CTAGSDIRS% $(HEADERS) $(SOURCES) %CONFIG% $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+## Make sure the list of sources is unique.
+       list='$(SOURCES) $(HEADERS) %CONFIG% $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+## Handle VPATH correctly.
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+## Make sure we have something to run ctags on.
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+
+## --------------- ##
+## "Global tags".  ##
+## --------------- ##
+
+.PHONY: GTAGS
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+
+## ------- ##
+## cscope  ##
+## ------- ##
+
+if %?TOPDIR_P%
+
+CSCOPE = cscope
+.PHONY: cscope clean-cscope
+AM_RECURSIVE_TARGETS += cscope
+
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+
+clean-cscope:
+       -rm -f cscope.files
+
+cscope.files: clean-cscope %CSCOPEDIRS% cscopelist
+
+endif %?TOPDIR_P%
+
+.PHONY: cscopelist
+cscopelist: %CSCOPEDIRS% $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+.PHONY distclean-am: distclean-tags
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+if %?TOPDIR_P%
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+endif %?TOPDIR_P%
diff --git a/lib/am/texi-vers.am b/lib/am/texi-vers.am
new file mode 100644 (file)
index 0000000..4065524
--- /dev/null
@@ -0,0 +1,58 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+DIST_COMMON += %VTEXI% %STAMPVTI%
+
+## Don't give this rule a command (even '@:').
+## %STAMPVTI% is always newer than %VTEXI%, so this rule is always
+## triggered.  If you equip this rule with a command, GNU make will
+## assume %VTEXI% has been rebuild in the current directory and
+## discard any %VTEXI% file found in a VPATH search.
+%VTEXI%: %MAINTAINER-MODE% %STAMPVTI%
+
+## Depend on configure so that version number updates cause a rebuild.
+## (Not configure.ac, because not all setups define the version number
+## in this file.)
+%STAMPVTI%: %TEXI% $(top_srcdir)/configure
+## It is wrong to have %STAMPVTI% dependent on %DIRSTAMP%, because
+## %STAMPVTI% is distributed and %DIRSTAMP% isn't: a distributed file
+## should never be dependent upon a non-distributed built file.
+## Therefore we ensure that %DIRSTAMP% exists in the rule.
+?DIRSTAMP?     test -f %DIRSTAMP% || $(MAKE) $(AM_MAKEFLAGS) %DIRSTAMP%
+       @(dir=.; test -f ./%TEXI% || dir=$(srcdir); \
+       set `$(SHELL) %MDDIR%mdate-sh $$dir/%TEXI%`; \
+       echo "@set UPDATED $$1 $$2 $$3"; \
+       echo "@set UPDATED-MONTH $$2 $$3"; \
+       echo "@set EDITION $(VERSION)"; \
+       echo "@set VERSION $(VERSION)") > %VTI%.tmp
+## Use cp and rm here because some older "mv"s can't move across
+## filesystems.  Furthermore, GNU "mv" in the AmigaDOS environment
+## can't handle this.
+       @cmp -s %VTI%.tmp %VTEXI% \
+         || (echo "Updating %VTEXI%"; \
+             cp %VTI%.tmp %VTEXI%)
+       -@rm -f %VTI%.tmp
+       @cp %VTEXI% $@
+
+mostlyclean-am: mostlyclean-%VTI%
+mostlyclean-%VTI%:
+       -rm -f %VTI%.tmp
+
+maintainer-clean-am: maintainer-clean-%VTI%
+maintainer-clean-%VTI%:
+%MAINTAINER-MODE%      -rm -f %STAMPVTI% %VTEXI%
+
+.PHONY: mostlyclean-%VTI% maintainer-clean-%VTI%
diff --git a/lib/am/texibuild.am b/lib/am/texibuild.am
new file mode 100644 (file)
index 0000000..f77748a
--- /dev/null
@@ -0,0 +1,126 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+?GENERIC_INFO?%SOURCE_SUFFIX%%DEST_SUFFIX%:
+?!GENERIC_INFO?%DEST_INFO_PREFIX%%DEST_SUFFIX%: %SOURCE_INFO% %DEPS%
+## It is wrong to have 'info' files dependent on %DIRSTAMP%, because
+## 'info' files are distributed and %DIRSTAMP% isn't: a distributed file
+## should never be dependent upon a non-distributed built file.
+## Therefore we ensure that %DIRSTAMP% exists in the rule.
+?!INSRC??DIRSTAMP?     @test -f %DIRSTAMP% || $(MAKE) $(AM_MAKEFLAGS) %DIRSTAMP%
+## Back up the info files before running makeinfo. This is the cheapest
+## way to ensure that
+## 1) If the texinfo file shrinks (or if you start using --no-split),
+##    you'll not be left with some dead info files lying around -- dead
+##    files which would end up in the distribution.
+## 2) If the texinfo file has some minor mistakes which cause makeinfo
+##    to fail, the info files are not removed.  (They are needed by the
+##    developer while he writes documentation.)
+## *.iNN files are used on DJGPP.  See the comments in install-info-am
+       %AM_V_MAKEINFO%restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+?INSRC?        am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+       rm -rf $$backupdir && mkdir $$backupdir && \
+## If makeinfo is not installed we must not backup the files so
+## 'missing' can do its job and touch $@ if it exists.
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
+?INSRC?        cd "$$am__cwd"; \
+       if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) %MAKEINFOFLAGS% \
+?!INSRC?        -o $@ `test -f '%SOURCE_INFO%' || echo '$(srcdir)/'`%SOURCE_INFO%; \
+?INSRC??!GENERIC_INFO?  -o $@ $(srcdir)/%SOURCE_INFO%; \
+?INSRC??GENERIC_INFO?   -o $@ $<; \
+       then \
+         rc=0; \
+?INSRC?          $(am__cd) $(srcdir); \
+       else \
+         rc=$$?; \
+## Beware that backup info files might come from a subdirectory.
+?INSRC?          $(am__cd) $(srcdir) && \
+         $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+       fi; \
+       rm -rf $$backupdir; exit $$rc
+
+INFO_DEPS += %DEST_INFO_PREFIX%%DEST_SUFFIX%
+
+?GENERIC?%SOURCE_SUFFIX%.dvi:
+?!GENERIC?%DEST_PREFIX%.dvi: %SOURCE% %DEPS% %DIRSTAMP%
+       %AM_V_TEXI2DVI%TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+## Must set MAKEINFO like this so that version.texi will be found even
+## if it is in srcdir (-I $(srcdir) is set in %MAKEINFOFLAGS%).
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) %MAKEINFOFLAGS%' \
+## Do not use '-o' unless necessary: it is only supported since Texinfo 4.1.
+## texi2dvi doesn't silence everything with -q, redirect to /dev/null instead.
+## We still want -q (%TEXIQUIET%) because it turns on batch mode.
+## Use '--clean' to avoid leaving auxiliary files behind cluttering the build
+## directory (see automake bug#11146).  We should start using '--tidy' when we
+## can assume Texinf 4.9 or later.
+?GENERIC?      $(TEXI2DVI) %TEXIQUIET% --clean %SOURCE% %TEXIDEVNULL%
+?!GENERIC?     $(TEXI2DVI) %TEXIQUIET% --clean -o $@ `test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE% %TEXIDEVNULL%
+
+?GENERIC?%SOURCE_SUFFIX%.pdf:
+?!GENERIC?%DEST_PREFIX%.pdf: %SOURCE% %DEPS% %DIRSTAMP%
+       %AM_V_TEXI2PDF%TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+## Must set MAKEINFO like this so that version.texi will be found even
+## if it is in srcdir (-I $(srcdir) is set in %MAKEINFOFLAGS%).
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) %MAKEINFOFLAGS%' \
+## Do not use '-o' unless necessary: it is only supported since Texinfo 4.1.
+## texi2pdf doesn't silence everything with -q, redirect to /dev/null instead.
+## We still want -q (%TEXIQUIET%) because it turns on batch mode.
+## Use '--clean' to avoid leaving auxiliary files behind cluttering the build
+## directory (see automake bug#11146).  We should start using '--tidy' when we
+## can assume Texinf 4.9 or later.
+?GENERIC?      $(TEXI2PDF) %TEXIQUIET% --clean %SOURCE% %TEXIDEVNULL%
+?!GENERIC?     $(TEXI2PDF) %TEXIQUIET% --clean -o $@ `test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE% %TEXIDEVNULL%
+
+?GENERIC?%SOURCE_SUFFIX%.html:
+?!GENERIC?%DEST_PREFIX%.html: %SOURCE% %DEPS% %DIRSTAMP%
+## When --split (the default) is used, makeinfo will output a
+## directory.  However it will not update the time stamp of a
+## previously existing directory, and when the names of the nodes
+## in the manual change, it may leave unused pages.  Our fix
+## is to build under a temporary name, and replace the target on
+## success.
+       %AM_V_MAKEINFO%rm -rf $(@:.html=.htp)
+       %SILENT%if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) %MAKEINFOFLAGS% \
+?GENERIC?       -o $(@:.html=.htp) %SOURCE%; \
+?!GENERIC?      -o $(@:.html=.htp) `test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%; \
+       then \
+         rm -rf $@; \
+## Work around a bug in Texinfo 4.1 (-o foo.html outputs files in foo/
+## instead of foo.html/).
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+       else \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+         exit 1; \
+       fi
+
+## If we are using the generic rules, we need separate dependencies.
+## (Don't wonder about %DIRSTAMP% here, this is used only by non-generic
+## rules.)
+if %?GENERIC_INFO%
+%DEST_INFO_PREFIX%%DEST_SUFFIX%: %SOURCE_REAL% %DEPS%
+endif %?GENERIC_INFO%
+if %?GENERIC%
+%DEST_PREFIX%.dvi: %SOURCE_REAL% %DEPS%
+%DEST_PREFIX%.pdf: %SOURCE_REAL% %DEPS%
+%DEST_PREFIX%.html: %SOURCE_REAL% %DEPS%
+endif %?GENERIC%
diff --git a/lib/am/texinfos.am b/lib/am/texinfos.am
new file mode 100644 (file)
index 0000000..42787c7
--- /dev/null
@@ -0,0 +1,433 @@
+## automake - create Makefile.in from Makefile.am
+
+## Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ----------- ##
+## Variables.  ##
+## ----------- ##
+
+if %?LOCAL-TEXIS%
+if ! %?CYGNUS%
+TEXI2DVI = texi2dvi
+
+else %?CYGNUS%
+
+## Find these programs wherever they may lie.  Yes, this has
+## intimate knowledge of the structure of the texinfo distribution.
+MAKEINFO = `if test -f $(top_builddir)/../texinfo/makeinfo/makeinfo; then \
+            echo $(top_builddir)/../texinfo/makeinfo/makeinfo; \
+          else \
+            echo makeinfo; \
+          fi`
+
+TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then \
+             echo $(top_srcdir)/../texinfo/util/texi2dvi; \
+           else \
+             echo texi2dvi; \
+           fi`
+endif %?CYGNUS%
+
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+endif %?LOCAL-TEXIS%
+
+
+## ---------- ##
+## Building.  ##
+## ---------- ##
+
+## The way to make PostScript, for those who want it.
+if %?LOCAL-TEXIS%
+DVIPS = dvips
+.dvi.ps:
+       %AM_V_DVIPS%TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       $(DVIPS) %TEXIQUIET% -o $@ $<
+endif %?LOCAL-TEXIS%
+
+.PHONY: dvi dvi-am html html-am info info-am pdf pdf-am ps ps-am
+if %?SUBDIRS%
+RECURSIVE_TARGETS += dvi-recursive html-recursive info-recursive
+RECURSIVE_TARGETS += pdf-recursive ps-recursive
+dvi: dvi-recursive
+html: html-recursive
+info: info-recursive
+pdf: pdf-recursive
+ps: ps-recursive
+else !%?SUBDIRS%
+dvi: dvi-am
+html: html-am
+info: info-am
+pdf: pdf-am
+ps: ps-am
+endif !%?SUBDIRS%
+
+if %?LOCAL-TEXIS%
+dvi-am: $(DVIS)
+html-am: $(HTMLS)
+info-am: $(INFO_DEPS)
+pdf-am: $(PDFS)
+ps-am: $(PSS)
+else ! %?LOCAL-TEXIS%
+dvi-am:
+html-am:
+info-am:
+pdf-am:
+ps-am:
+endif ! %?LOCAL-TEXIS%
+
+
+## ------------ ##
+## Installing.  ##
+## ------------ ##
+
+## Some code should be run only if install-info actually exists, and
+## if the user doesn't request it not to be run (through the
+## 'AM_UPDATE_INFO_DIR' environment variable).  See automake bug#9773
+## and Debian Bug#543992.
+if %?FIRST%
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+endif
+
+## Look in both . and srcdir because the info pages might have been
+## rebuilt in the build directory.  Can't cd to srcdir; that might
+## break a possible install-sh reference.
+##
+## Funny name due to --cygnus influence; we want to reserve
+## 'install-info' for the user.
+##
+## TEXINFOS primary are always installed in infodir, hence install-data
+## is hard coded.
+if %?INSTALL-INFO%
+if %?LOCAL-TEXIS%
+am__installdirs += "$(DESTDIR)$(infodir)"
+install-data-am: install-info-am
+endif %?LOCAL-TEXIS%
+endif %?INSTALL-INFO%
+.PHONY: \
+  install-dvi  install-dvi-am \
+  install-html install-html-am \
+  install-info install-info-am \
+  install-pdf  install-pdf-am \
+  install-ps   install-ps-am
+
+if %?SUBDIRS%
+RECURSIVE_TARGETS += \
+  install-dvi-recursive \
+  install-html-recursive \
+  install-info-recursive \
+  install-pdf-recursive \
+  install-ps-recursive
+install-dvi: install-dvi-recursive
+install-html: install-html-recursive
+install-info: install-info-recursive
+install-pdf: install-pdf-recursive
+install-ps: install-ps-recursive
+else !%?SUBDIRS%
+install-dvi: install-dvi-am
+install-html: install-html-am
+install-info: install-info-am
+install-pdf: install-pdf-am
+install-ps: install-ps-am
+endif !%?SUBDIRS%
+
+if %?LOCAL-TEXIS%
+
+include inst-vars.am
+
+install-dvi-am: $(DVIS)
+       @$(NORMAL_INSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+       done
+
+install-html-am: $(HTMLS)
+       @$(NORMAL_INSTALL)
+       @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         $(am__strip_dir) \
+## This indirection is required to work around a bug of the Solaris 10
+## shell /usr/xpg4/bin/sh.  The description of the bug can be found at
+## <http://lists.gnu.org/archive/html/bug-autoconf/2011-11/msg00005.html>
+## and the report of the original failure can be found at automake
+## bug#10026 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10026#23>
+         d2=$$d$$p; \
+         if test -d "$$d2"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+           echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+         else \
+           list2="$$list2 $$d2"; \
+         fi; \
+       done; \
+       test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+       done; }
+
+install-info-am: $(INFO_DEPS)
+       @$(NORMAL_INSTALL)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
+       fi; \
+       for file in $$list; do \
+## Strip possible $(srcdir) prefix.
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$file; then d=.; else d=$(srcdir); fi; \
+## 8+3 filesystems cannot deal with foo.info-N filenames: they all
+## conflict.  DJGPP comes with a tool, DJTAR, that will rename these
+## files to foo.iNN while extracting the archive.  DJGPP's makeinfo
+## is patched to grok these filenames.  However we have to account
+## for the renaming when installing the info files.
+##
+## If $file == foo.info, then $file_i == foo.i.  The reason we use two
+## shell commands instead of one ('s|\.info$$|.i|') is so that a suffix-less
+## 'foo' becomes 'foo.i' too.
+         file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                      $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+           if test -f $$ifile; then \
+             echo "$$ifile"; \
+           else : ; fi; \
+         done; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+       @$(POST_INSTALL)
+       @if $(am__can_run_installinfo); then \
+         list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+         for file in $$list; do \
+## Strip directory
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+## Run ":" after install-info in case install-info fails.  We really
+## don't care about failures here, because they can be spurious.  For
+## instance if you don't have a dir file, install-info will fail.  I
+## think instead it should create a new dir file for you.  This bug
+## causes the "make distcheck" target to fail reliably.
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+## Use "|| :" here because Sun make passes -e to sh; if install-info
+## fails then we'd fail if we used ";".
+           install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+         done; \
+       else : ; fi
+
+install-pdf-am: $(PDFS)
+       @$(NORMAL_INSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+
+install-ps-am: $(PSS)
+       @$(NORMAL_INSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+
+else ! %?LOCAL-TEXIS%
+install-dvi-am:
+install-html-am:
+install-info-am:
+install-pdf-am:
+install-ps-am:
+endif ! %?LOCAL-TEXIS%
+
+
+## -------------- ##
+## Uninstalling.  ##
+## -------------- ##
+
+if %?LOCAL-TEXIS%
+.PHONY uninstall-am: \
+  uninstall-dvi-am \
+  uninstall-html-am \
+  uninstall-info-am \
+  uninstall-ps-am \
+  uninstall-pdf-am
+
+uninstall-dvi-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+         rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+       done
+
+uninstall-html-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+## $f can be a directory, hence the -r.
+         echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+         rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+       done
+
+uninstall-info-am:
+       @$(PRE_UNINSTALL)
+## Run two loops here so that we can handle PRE_UNINSTALL and
+## NORMAL_UNINSTALL correctly.
+       @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
+         list='$(INFO_DEPS)'; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+## install-info needs the actual info file.  We use the installed one,
+## rather than relying on one still being in srcdir or builddir.
+## However, "make uninstall && make uninstall" should not fail,
+## so we ignore failure if the file did not exist.
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+           if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+           then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+         done; \
+       else :; fi
+       @$(NORMAL_UNINSTALL)
+       @list='$(INFO_DEPS)'; \
+       for file in $$list; do \
+         relfile=`echo "$$file" | sed 's|^.*/||'`; \
+## DJGPP-style info files.  See comment in install-info-am.
+         relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+         (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+            echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+            rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+          else :; fi); \
+       done
+
+uninstall-pdf-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+       done
+
+uninstall-ps-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(psdir)/$$f"; \
+       done
+endif %?LOCAL-TEXIS%
+
+if %?LOCAL-TEXIS%
+.PHONY: dist-info
+dist-info: $(INFO_DEPS)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; \
+       for base in $$list; do \
+## Strip possible $(srcdir) prefix.
+         case $$base in \
+           $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$base; then d=.; else d=$(srcdir); fi; \
+         base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+           if test -f $$file; then \
+## Strip leading '$$d/'.
+             relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+             test -f "$(distdir)/$$relfile" || \
+               cp -p $$file "$(distdir)/$$relfile"; \
+           else :; fi; \
+         done; \
+       done
+endif %?LOCAL-TEXIS%
+
+
+## ---------- ##
+## Cleaning.  ##
+## ---------- ##
+
+## The funny name is due to --cygnus influence; in Cygnus mode,
+## 'clean-info' is a target that users can use.
+
+if %?LOCAL-TEXIS%
+.PHONY mostlyclean-am: mostlyclean-aminfo
+.PHONY: mostlyclean-aminfo
+mostlyclean-aminfo:
+## 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:
+       @list='$(INFO_DEPS)'; for i in $$list; do \
+## .iNN files are DJGPP-style info files.
+         i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+         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 clean-aminfo
+endif %?LOCAL-TEXIS%
diff --git a/lib/am/vala.am b/lib/am/vala.am
new file mode 100644 (file)
index 0000000..b4d0190
--- /dev/null
@@ -0,0 +1,17 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 2008-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## There is no rule here.  :-)
diff --git a/lib/am/yacc.am b/lib/am/yacc.am
new file mode 100644 (file)
index 0000000..e74259f
--- /dev/null
@@ -0,0 +1,50 @@
+## automake - create Makefile.in from Makefile.am
+## Copyright (C) 1998-2012 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## We want to disable the Yacc rebuild rule when
+##   1. AM_MAINTAINER_MODE is used, and
+##   2. --enable-maintainer-mode is not specified, and
+##   3. parser.c already exist, and
+##   4. parser.y and parser.c are distributed.
+## Point #3 is because "make maintainer-clean" erases parser.c, yet
+## the GNU Coding Standards require that ./configure; make works even
+## after that.
+## Point #4 is because parsers listed in nodist_*_SOURCES are always
+## built on the user's side, so it makes no sense to disable them.
+##
+## Points #1, #2, #3 are solved by unconditionally prefixing the rule
+## with $(am__skipyacc) defined below only when needed.
+##
+## Point #4 requires a condition on whether parser.y/parser.c are
+## distributed or not.  We cannot have a generic rule that works in
+## both cases, so we ensure in automake that nodist_ parsers always
+## use non-generic rules.
+if %?FIRST%
+if %?MAINTAINER-MODE%
+@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
+endif %?MAINTAINER-MODE%
+## The 's/c$/h/' substitution *must* be the last one.
+am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
+                  -e s/c++$$/h++/ -e s/c$$/h/
+endif %?FIRST%
+
+?GENERIC?%EXT%%DERIVED-EXT%:
+?!GENERIC?%OBJ%: %SOURCE%
+?GENERIC?      %VERBOSE%$(am__skipyacc) $(SHELL) $(YLWRAP) %SOURCE% y.tab.c %OBJ% y.tab.h `echo %OBJ% | $(am__yacc_c2h)` 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 `echo %OBJ% | $(am__yacc_c2h)` y.output %BASE%.output -- %COMPILE%
diff --git a/lib/ar-lib b/lib/ar-lib
new file mode 100755 (executable)
index 0000000..67f5f36
--- /dev/null
@@ -0,0 +1,270 @@
+#! /bin/sh
+# Wrapper for Microsoft lib.exe
+
+me=ar-lib
+scriptversion=2012-03-01.08; # UTC
+
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+# Written by Peter Rosin <peda@lysator.liu.se>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+
+# func_error message
+func_error ()
+{
+  echo "$me: $1" 1>&2
+  exit 1
+}
+
+file_conv=
+
+# func_file_conv build_file
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv in
+       mingw)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_at_file at_file operation archive
+# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
+# for each of them.
+# When interpreting the content of the @FILE, do NOT use func_file_conv,
+# since the user would need to supply preconverted file names to
+# binutils ar, at least for MinGW.
+func_at_file ()
+{
+  operation=$2
+  archive=$3
+  at_file_contents=`cat "$1"`
+  eval set x "$at_file_contents"
+  shift
+
+  for member
+  do
+    $AR -NOLOGO $operation:"$member" "$archive" || exit $?
+  done
+}
+
+case $1 in
+  '')
+     func_error "no command.  Try '$0 --help' for more information."
+     ;;
+  -h | --h*)
+    cat <<EOF
+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
+
+Members may be specified in a file named with @FILE.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "$me, version $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test $# -lt 3; then
+  func_error "you must specify a program, an action and an archive"
+fi
+
+AR=$1
+shift
+while :
+do
+  if test $# -lt 2; then
+    func_error "you must specify a program, an action and an archive"
+  fi
+  case $1 in
+    -lib | -LIB \
+    | -ltcg | -LTCG \
+    | -machine* | -MACHINE* \
+    | -subsystem* | -SUBSYSTEM* \
+    | -verbose | -VERBOSE \
+    | -wx* | -WX* )
+      AR="$AR $1"
+      shift
+      ;;
+    *)
+      action=$1
+      shift
+      break
+      ;;
+  esac
+done
+orig_archive=$1
+shift
+func_file_conv "$orig_archive"
+archive=$file
+
+# strip leading dash in $action
+action=${action#-}
+
+delete=
+extract=
+list=
+quick=
+replace=
+index=
+create=
+
+while test -n "$action"
+do
+  case $action in
+    d*) delete=yes  ;;
+    x*) extract=yes ;;
+    t*) list=yes    ;;
+    q*) quick=yes   ;;
+    r*) replace=yes ;;
+    s*) index=yes   ;;
+    S*)             ;; # the index is always updated implicitly
+    c*) create=yes  ;;
+    u*)             ;; # TODO: don't ignore the update modifier
+    v*)             ;; # TODO: don't ignore the verbose modifier
+    *)
+      func_error "unknown action specified"
+      ;;
+  esac
+  action=${action#?}
+done
+
+case $delete$extract$list$quick$replace,$index in
+  yes,* | ,yes)
+    ;;
+  yesyes*)
+    func_error "more than one action specified"
+    ;;
+  *)
+    func_error "no action specified"
+    ;;
+esac
+
+if test -n "$delete"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  for member
+  do
+    case $1 in
+      @*)
+        func_at_file "${1#@}" -REMOVE "$archive"
+        ;;
+      *)
+        func_file_conv "$1"
+        $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
+        ;;
+    esac
+  done
+
+elif test -n "$extract"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  if test $# -gt 0; then
+    for member
+    do
+      case $1 in
+        @*)
+          func_at_file "${1#@}" -EXTRACT "$archive"
+          ;;
+        *)
+          func_file_conv "$1"
+          $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
+          ;;
+      esac
+    done
+  else
+    $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+    do
+      $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+    done
+  fi
+
+elif test -n "$quick$replace"; then
+  if test ! -f "$orig_archive"; then
+    if test -z "$create"; then
+      echo "$me: creating $orig_archive"
+    fi
+    orig_archive=
+  else
+    orig_archive=$archive
+  fi
+
+  for member
+  do
+    case $1 in
+    @*)
+      func_file_conv "${1#@}"
+      set x "$@" "@$file"
+      ;;
+    *)
+      func_file_conv "$1"
+      set x "$@" "$file"
+      ;;
+    esac
+    shift
+    shift
+  done
+
+  if test -n "$orig_archive"; then
+    $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
+  else
+    $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
+  fi
+
+elif test -n "$list"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  $AR -NOLOGO -LIST "$archive" || exit $?
+fi
diff --git a/lib/compile b/lib/compile
new file mode 100755 (executable)
index 0000000..7b4a9a7
--- /dev/null
@@ -0,0 +1,342 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-03-05.13; # UTC
+
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/config.guess b/lib/config.guess
new file mode 100755 (executable)
index 0000000..d622a44
--- /dev/null
@@ -0,0 +1,1530 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
+
+timestamp='2012-02-10'
+
+# This file 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 of the License, 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/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           sh5el) machine=sh5le-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep -q __ELF__
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit ;;
+    *:OpenBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+       exit ;;
+    *:ekkoBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       exit ;;
+    *:SolidBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+       exit ;;
+    macppc:MirBSD:*:*)
+       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    *:MirBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    alpha:OSF1:*:*)
+       case $UNAME_RELEASE in
+       *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+               ;;
+       *5.*)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               ;;
+       esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Pn.n version is a patched version.
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+       exitcode=$?
+       trap '' 0
+       exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit ;;
+    *:z/VM:*:*)
+       echo s390-ibm-zvmoe
+       exit ;;
+    *:OS400:*:*)
+       echo powerpc-ibm-os400
+       exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+       echo arm-unknown-riscos
+       exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7; exit ;;
+       esac ;;
+    s390x:SunOS:*:*)
+       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+       echo i386-pc-auroraux${UNAME_RELEASE}
+       exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+       eval $set_cc_for_build
+       SUN_ARCH="i386"
+       # If there is a compiler, see if it is configured for 64-bit objects.
+       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+       # This test works for both compilers.
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               SUN_ARCH="x86_64"
+           fi
+       fi
+       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+       echo m68k-milan-mint${UNAME_RELEASE}
+       exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+       echo m68k-hades-mint${UNAME_RELEASE}
+       exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+       echo m68k-unknown-mint${UNAME_RELEASE}
+       exit ;;
+    m68k:machten:*:*)
+       echo m68k-apple-machten${UNAME_RELEASE}
+       exit ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c &&
+         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+         SYSTEM_NAME=`$dummy $dummyarg` &&
+           { echo "$SYSTEM_NAME"; exit; }
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit ;;
+    AViiON:dgux:*:*)
+       # DG/UX returns AViiON for all architectures
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+               then
+                       echo "$SYSTEM_NAME"
+               else
+                       echo rs6000-ibm-aix3.2.5
+               fi
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit ;;
+    *:AIX:*:[4567])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                   case "${sc_cpu_version}" in
+                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                     532)                      # CPU_PA_RISC2_0
+                       case "${sc_kernel_bits}" in
+                         32) HP_ARCH="hppa2.0n" ;;
+                         64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                       esac ;;
+                   esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^            //' << EOF >$dummy.c
+
+               #define _HPUX_SOURCE
+               #include <stdlib.h>
+               #include <unistd.h>
+
+               int main ()
+               {
+               #if defined(_SC_KERNEL_BITS)
+                   long bits = sysconf(_SC_KERNEL_BITS);
+               #endif
+                   long cpu  = sysconf (_SC_CPU_VERSION);
+
+                   switch (cpu)
+                       {
+                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+                       case CPU_PA_RISC2_0:
+               #if defined(_SC_KERNEL_BITS)
+                           switch (bits)
+                               {
+                               case 64: puts ("hppa2.0w"); break;
+                               case 32: puts ("hppa2.0n"); break;
+                               default: puts ("hppa2.0"); break;
+                               } break;
+               #else  /* !defined(_SC_KERNEL_BITS) */
+                           puts ("hppa2.0"); break;
+               #endif
+                       default: puts ("hppa1.0"); break;
+                       }
+                   exit (0);
+               }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           eval $set_cc_for_build
+
+           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+           # generating 64-bit code.  GNU and HP use different nomenclature:
+           #
+           # $ CC_FOR_BUILD=cc ./config.guess
+           # => hppa2.0w-hp-hpux11.23
+           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+           # => hppa64-hp-hpux11.23
+
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+               grep -q __LP64__
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+               { echo "$SYSTEM_NAME"; exit; }
+       echo unknown-hitachi-hiuxwe2
+       exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+       exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+       exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+       exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+       exit ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    *:UNICOS/mp:*:*)
+       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    5000:UNIX_System_V:4.*:*)
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:FreeBSD:*:*)
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       case ${UNAME_PROCESSOR} in
+           amd64)
+               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           *)
+               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+       esac
+       exit ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit ;;
+    *:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit ;;
+    i*:MSYS*:*)
+       echo ${UNAME_MACHINE}-pc-msys
+       exit ;;
+    i*:windows32*:*)
+       # uname -m includes "-pc" on this system.
+       echo ${UNAME_MACHINE}-mingw32
+       exit ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit ;;
+    *:Interix*:*)
+       case ${UNAME_MACHINE} in
+           x86)
+               echo i586-pc-interix${UNAME_RELEASE}
+               exit ;;
+           authenticamd | genuineintel | EM64T)
+               echo x86_64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+           IA64)
+               echo ia64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+       esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit ;;
+    8664:Windows_NT:*)
+       echo x86_64-pc-mks
+       exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+       echo x86_64-unknown-cygwin
+       exit ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    *:GNU:*:*)
+       # the GNU system
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit ;;
+    *:GNU/*:*:*)
+       # other systems with GNU libc and userland
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       exit ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit ;;
+    aarch64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    aarch64_be:Linux:*:*)
+       UNAME_MACHINE=aarch64_be
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+       esac
+       objdump --private-headers /bin/sh | grep -q ld.so.1
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit ;;
+    arm*:Linux:*:*)
+       eval $set_cc_for_build
+       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_EABI__
+       then
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
+       else
+           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+               | grep -q __ARM_PCS_VFP
+           then
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+           else
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+           fi
+       fi
+       exit ;;
+    avr32*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    cris:Linux:*:*)
+       echo ${UNAME_MACHINE}-axis-linux-gnu
+       exit ;;
+    crisv32:Linux:*:*)
+       echo ${UNAME_MACHINE}-axis-linux-gnu
+       exit ;;
+    frv:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    hexagon:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    i*86:Linux:*:*)
+       LIBC=gnu
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+       exit ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m32r*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef ${UNAME_MACHINE}
+       #undef ${UNAME_MACHINE}el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=${UNAME_MACHINE}el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=${UNAME_MACHINE}
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       ;;
+    or32:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    padre:Linux:*:*)
+       echo sparc-unknown-linux-gnu
+       exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    tile*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    vax:Linux:*:*)
+       echo ${UNAME_MACHINE}-dec-linux-gnu
+       exit ;;
+    x86_64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+       # Unixware is an offshoot of SVR4, but it has its own version
+       # number series starting with 2...
+       # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+       # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit ;;
+    i*86:syllable:*:*)
+       echo ${UNAME_MACHINE}-pc-syllable
+       exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit ;;
+    i*86:*:5:[678]*)
+       # UnixWare 7.x, OpenUNIX and OpenServer 6.
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+       # uname -m prints for DJGPP always 'pc', but it prints nothing about
+       # the processor, so we play safe by assuming i586.
+       # Note: whatever this is, it MUST be the same as what config.sub
+       # prints for the "djgpp" host, or else GDB configury will decide that
+       # this is a cross-build.
+       echo i586-pc-msdosdjgpp
+       exit ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit ;;
+    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+       OS_REL='.3'
+       test -r /etc/.relid \
+           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit ;;
+    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                       # says <Richard.M.Bartel@ccMail.Census.GOV>
+       echo i586-unisys-sysv4
+       exit ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit ;;
+    i*86:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo ${UNAME_MACHINE}-stratus-vos
+       exit ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+       exit ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit ;;
+    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
+       echo i586-pc-haiku
+       exit ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-7:SUPER-UX:*:*)
+       echo sx7-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8:SUPER-UX:*:*)
+       echo sx8-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8R:SUPER-UX:*:*)
+       echo sx8r-nec-superux${UNAME_RELEASE}
+       exit ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Darwin:*:*)
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       case $UNAME_PROCESSOR in
+           i386)
+               eval $set_cc_for_build
+               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                     grep IS_64BIT_ARCH >/dev/null
+                 then
+                     UNAME_PROCESSOR="x86_64"
+                 fi
+               fi ;;
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+       echo nse-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit ;;
+    SEI:*:*:SEIUX)
+       echo mips-sei-seiux${UNAME_RELEASE}
+       exit ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit ;;
+    *:*VMS:*:*)
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       case "${UNAME_MACHINE}" in
+           A*) echo alpha-dec-vms ; exit ;;
+           I*) echo ia64-dec-vms ; exit ;;
+           V*) echo vax-dec-vms ; exit ;;
+       esac ;;
+    *:XENIX:*:SysV)
+       echo i386-pc-xenix
+       exit ;;
+    i*86:skyos:*:*)
+       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+       exit ;;
+    i*86:rdos:*:*)
+       echo ${UNAME_MACHINE}-pc-rdos
+       exit ;;
+    i*86:AROS:*:*)
+       echo ${UNAME_MACHINE}-pc-aros
+       exit ;;
+    x86_64:VMkernel:*:*)
+       echo ${UNAME_MACHINE}-unknown-esx
+       exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+       "4"
+#else
+       ""
+#endif
+       ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    c34*)
+       echo c34-convex-bsd
+       exit ;;
+    c38*)
+       echo c38-convex-bsd
+       exit ;;
+    c4*)
+       echo c4-convex-bsd
+       exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/lib/config.sub b/lib/config.sub
new file mode 100755 (executable)
index 0000000..59bb593
--- /dev/null
@@ -0,0 +1,1779 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
+
+timestamp='2012-04-18'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file 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 of the License, 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/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis | -knuth | -cray | -microblaze)
+               os=
+               basic_machine=$1
+               ;;
+       -bluegene*)
+               os=-cnk
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco6)
+               os=-sco5v6
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*178)
+               os=-lynxos178
+               ;;
+       -lynx*5)
+               os=-lynxos5
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | aarch64 | aarch64_be \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+        | be32 | be64 \
+       | bfin \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | epiphany \
+       | fido | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | hexagon \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+       | le32 | le64 \
+       | lm32 \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | mcore | mep | metag \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64octeon | mips64octeonel \
+       | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mips64vr5900 | mips64vr5900el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | moxie \
+       | mt \
+       | msp430 \
+       | nds32 | nds32le | nds32be \
+       | nios | nios2 \
+       | ns16k | ns32k \
+       | open8 \
+       | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle \
+       | pyramid \
+       | rl78 | rx \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+       | spu \
+       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+       | ubicom32 \
+       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+       | we32k \
+       | x86 | xc16x | xstormy16 | xtensa \
+       | z8k | z80)
+               basic_machine=$basic_machine-unknown
+               ;;
+       c54x)
+               basic_machine=tic54x-unknown
+               ;;
+       c55x)
+               basic_machine=tic55x-unknown
+               ;;
+       c6x)
+               basic_machine=tic6x-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+       ms1)
+               basic_machine=mt-unknown
+               ;;
+
+       strongarm | thumb | xscale)
+               basic_machine=arm-unknown
+               ;;
+       xgate)
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       xscaleeb)
+               basic_machine=armeb-unknown
+               ;;
+
+       xscaleel)
+               basic_machine=armel-unknown
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | aarch64-* | aarch64_be-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* | avr32-* \
+       | be32-* | be64-* \
+       | bfin-* | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* \
+       | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | hexagon-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | le32-* | le64-* \
+       | lm32-* \
+       | m32c-* | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64octeon-* | mips64octeonel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mips64vr5900-* | mips64vr5900el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | mt-* \
+       | msp430-* \
+       | nds32-* | nds32le-* | nds32be-* \
+       | nios-* | nios2-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | open8-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+       | pyramid-* \
+       | rl78-* | romp-* | rs6000-* | rx-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+       | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+       | tahoe-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tile*-* \
+       | tron-* \
+       | ubicom32-* \
+       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+       | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* \
+       | xstormy16-* | xtensa*-* \
+       | ymp-* \
+       | z8k-* | z80-*)
+               ;;
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aros)
+               basic_machine=i386-pc
+               os=-aros
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       bluegene*)
+               basic_machine=powerpc-ibm
+               os=-cnk
+               ;;
+       c54x-*)
+               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c55x-*)
+               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c6x-*)
+               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       cegcc)
+               basic_machine=arm-unknown
+               os=-cegcc
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16 | cr16-*)
+               basic_machine=cr16-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dicos)
+               basic_machine=i686-pc
+               os=-dicos
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       microblaze)
+               basic_machine=microblaze-xilinx
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       ms1-*)
+               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+               ;;
+       msys)
+               basic_machine=i386-pc
+               os=-msys
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       nacl)
+               basic_machine=le32-unknown
+               os=-nacl
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       neo-tandem)
+               basic_machine=neo-tandem
+               ;;
+       nse-tandem)
+               basic_machine=nse-tandem
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       openrisc | openrisc-*)
+               basic_machine=or32-unknown
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pc98)
+               basic_machine=i386-pc
+               ;;
+       pc98-*)
+               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc | ppcbe)    basic_machine=powerpc-unknown
+               ;;
+       ppc-* | ppcbe-*)
+               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rdos)
+               basic_machine=i386-pc
+               os=-rdos
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh5el)
+               basic_machine=sh5le-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       strongarm-* | thumb-*)
+               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       tile*)
+               basic_machine=$basic_machine-unknown
+               os=-linux-gnu
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       xscale-* | xscalee[bl]-*)
+               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       z80-*-coff)
+               basic_machine=z80-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       mmix)
+               basic_machine=mmix-knuth
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+       # First match some system type aliases
+       # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -auroraux)
+               os=-auroraux
+               ;;
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+             | -sym* | -kopensolaris* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* | -aros* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+             | -openbsd* | -solidbsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* | -cegcc* \
+             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-uclibc* \
+             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux-dietlibc)
+               os=-linux-dietlibc
+               ;;
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+       -os400*)
+               os=-os400
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -syllable*)
+               os=-syllable
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+       -tpf*)
+               os=-tpf
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -kaos*)
+               os=-kaos
+               ;;
+       -zvmoe)
+               os=-zvmoe
+               ;;
+       -dicos*)
+               os=-dicos
+               ;;
+       -nacl*)
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       score-*)
+               os=-elf
+               ;;
+       spu-*)
+               os=-elf
+               ;;
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+       c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       tic54x-*)
+               os=-coff
+               ;;
+       tic55x-*)
+               os=-coff
+               ;;
+       tic6x-*)
+               os=-coff
+               ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mep-*)
+               os=-elf
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-haiku)
+               os=-haiku
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-knuth)
+               os=-mmixware
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+       *-gould)
+               os=-sysv
+               ;;
+       *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+       *-sgi)
+               os=-irix
+               ;;
+       *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -cnk*|-aix*)
+                               vendor=ibm
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -os400*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -tpf*)
+                               vendor=ibm
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/lib/depcomp b/lib/depcomp
new file mode 100755 (executable)
index 0000000..debb6ff
--- /dev/null
@@ -0,0 +1,707 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2012-03-27.16; # UTC
+
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+# A tabulation character.
+tab='  '
+# A newline character.
+nl='
+'
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+   gccflag=-qmakedep=gcc,-MF
+   depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # '$object: dependent.h' and one to simply 'dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+  # However on
+  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using '\':
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+  # tcc 0.9.26 (FIXME still under development at the moment of writing)
+  # will emit a similar output, but also prepend the continuation lines
+  # with horizontal tabulation characters.
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form 'foo.o: dependent.h',
+  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # '$object: dependent.h' and one to simply 'dependent.h:'.
+  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
+    < "$tmpdepfile" > "$depfile"
+  sed '
+    s/[ '"$tab"'][ '"$tab"']*/ /g
+    s/^ *//
+    s/ *\\*$//
+    s/^[^:]*: *//
+    /^$/d
+    /:$/d
+    s/$/ :/
+  ' < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
+    sed -ne '2,${
+              s/^ *//
+              s/ \\*$//
+              s/$/:/
+              p
+            }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in 'foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for ':'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' "$nl" < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/elisp-comp b/lib/elisp-comp
new file mode 100755 (executable)
index 0000000..7766db4
--- /dev/null
@@ -0,0 +1,93 @@
+#!/bin/sh
+# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+scriptversion=2010-02-06.18; # UTC
+
+# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1995.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+  '')
+     echo "$0: No files.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: elisp-comp [--help] [--version] FILES...
+
+This script byte-compiles all '.el' files listed as FILES using GNU
+Emacs, and put the resulting '.elc' files into the current directory,
+so disregarding the original directories used in '.el' arguments.
+
+This script manages in such a way that all Emacs LISP files to
+be compiled are made visible between themselves, in the event
+they require or load-library one another.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "elisp-comp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$EMACS" || test "$EMACS" = "t"; then
+  # Value of "t" means we are running in a shell under Emacs.
+  # Just assume Emacs is called "emacs".
+  EMACS=emacs
+fi
+
+tempdir=elc.$$
+
+# Cleanup the temporary directory on exit.
+trap 'ret=$?; rm -rf "$tempdir" && exit $ret' 0
+do_exit='(exit $ret); exit $ret'
+trap "ret=129; $do_exit" 1
+trap "ret=130; $do_exit" 2
+trap "ret=141; $do_exit" 13
+trap "ret=143; $do_exit" 15
+
+mkdir $tempdir
+cp "$@" $tempdir
+
+(
+  cd $tempdir
+  echo "(setq load-path (cons nil load-path))" > script
+  $EMACS -batch -q -l script -f batch-byte-compile *.el || exit $?
+  mv *.elc ..
+) || exit $?
+
+(exit 0); exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/gitlog-to-changelog b/lib/gitlog-to-changelog
new file mode 100755 (executable)
index 0000000..38c6f3a
--- /dev/null
@@ -0,0 +1,385 @@
+eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
+  & eval 'exec perl -wS "$0" $argv:q'
+    if 0;
+# Convert git log output to ChangeLog format.
+
+my $VERSION = '2012-01-18 07:50'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, 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/>.
+
+# Written by Jim Meyering
+
+use strict;
+use warnings;
+use Getopt::Long;
+use POSIX qw(strftime);
+
+(my $ME = $0) =~ s|.*/||;
+
+# use File::Coda; # http://meyering.net/code/Coda/
+END {
+  defined fileno STDOUT or return;
+  close STDOUT and return;
+  warn "$ME: failed to close standard output: $!\n";
+  $? ||= 1;
+}
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try '$ME --help' for more information.\n";
+    }
+  else
+    {
+      print $STREAM <<EOF;
+Usage: $ME [OPTIONS] [ARGS]
+
+Convert git log output to ChangeLog format.  If present, any ARGS
+are passed to "git log".  To avoid ARGS being parsed as options to
+$ME, they may be preceded by '--'.
+
+OPTIONS:
+
+   --amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that
+                  makes a change to SHA1's commit log text or metadata.
+   --append-dot append a dot to the first line of each commit message if
+                  there is no other punctuation or blank at the end.
+   --no-cluster never cluster commit messages under the same date/author
+                  header; the default is to cluster adjacent commit messages
+                  if their headers are the same and neither commit message
+                  contains multiple paragraphs.
+   --since=DATE convert only the logs since DATE;
+                  the default is to convert all log entries.
+   --format=FMT set format string for commit subject and body;
+                  see 'man git-log' for the list of format metacharacters;
+                  the default is '%s%n%b%n'
+
+   --help       display this help and exit
+   --version    output version information and exit
+
+EXAMPLE:
+
+  $ME --since=2008-01-01 > ChangeLog
+  $ME -- -n 5 foo > last-5-commits-to-branch-foo
+
+SPECIAL SYNTAX:
+
+The following types of strings are interpreted specially when they appear
+at the beginning of a log message line.  They are not copied to the output.
+
+  Copyright-paperwork-exempt: Yes
+    Append the "(tiny change)" notation to the usual "date name email"
+    ChangeLog header to mark a change that does not require a copyright
+    assignment.
+  Co-authored-by: Joe User <user\@example.com>
+    List the specified name and email address on a second
+    ChangeLog header, denoting a co-author.
+  Signed-off-by: Joe User <user\@example.com>
+    These lines are simply elided.
+
+In a FILE specified via --amend, comment lines (starting with "#") are ignored.
+FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
+a line) referring to a commit in the current project, and CODE refers to one
+or more consecutive lines of Perl code.  Pairs must be separated by one or
+more blank line.
+
+Here is sample input for use with --amend=FILE, from coreutils:
+
+3a169f4c5d9159283548178668d2fae6fced3030
+# fix typo in title:
+s/all tile types/all file types/
+
+1379ed974f1fa39b12e2ffab18b3f7a607082202
+# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
+# Change the author to be Paul.  Note the escaped "@":
+s,Jim .*>,Paul Eggert <eggert\\\@cs.ucla.edu>,
+
+EOF
+    }
+  exit $exit_code;
+}
+
+# If the string $S is a well-behaved file name, simply return it.
+# If it contains white space, quotes, etc., quote it, and return the new string.
+sub shell_quote($)
+{
+  my ($s) = @_;
+  if ($s =~ m![^\w+/.,-]!)
+    {
+      # Convert each single quote to '\''
+      $s =~ s/\'/\'\\\'\'/g;
+      # Then single quote the string.
+      $s = "'$s'";
+    }
+  return $s;
+}
+
+sub quoted_cmd(@)
+{
+  return join (' ', map {shell_quote $_} @_);
+}
+
+# Parse file F.
+# Comment lines (starting with "#") are ignored.
+# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1
+# (alone on a line) referring to a commit in the current project, and
+# CODE refers to one or more consecutive lines of Perl code.
+# Pairs must be separated by one or more blank line.
+sub parse_amend_file($)
+{
+  my ($f) = @_;
+
+  open F, '<', $f
+    or die "$ME: $f: failed to open for reading: $!\n";
+
+  my $fail;
+  my $h = {};
+  my $in_code = 0;
+  my $sha;
+  while (defined (my $line = <F>))
+    {
+      $line =~ /^\#/
+        and next;
+      chomp $line;
+      $line eq ''
+        and $in_code = 0, next;
+
+      if (!$in_code)
+        {
+          $line =~ /^([0-9a-fA-F]{40})$/
+            or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
+              $fail = 1, next;
+          $sha = lc $1;
+          $in_code = 1;
+          exists $h->{$sha}
+            and (warn "$ME: $f:$.: duplicate SHA1\n"),
+              $fail = 1, next;
+        }
+      else
+        {
+          $h->{$sha} ||= '';
+          $h->{$sha} .= "$line\n";
+        }
+    }
+  close F;
+
+  $fail
+    and exit 1;
+
+  return $h;
+}
+
+{
+  my $since_date;
+  my $format_string = '%s%n%b%n';
+  my $amend_file;
+  my $append_dot = 0;
+  my $cluster = 1;
+  GetOptions
+    (
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+     'since=s' => \$since_date,
+     'format=s' => \$format_string,
+     'amend=s' => \$amend_file,
+     'append-dot' => \$append_dot,
+     'cluster!' => \$cluster,
+    ) or usage 1;
+
+
+  defined $since_date
+    and unshift @ARGV, "--since=$since_date";
+
+  # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/)
+  # that makes a correction in the log or attribution of that commit.
+  my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
+
+  my @cmd = (qw (git log --log-size),
+             '--pretty=format:%H:%ct  %an  <%ae>%n%n'.$format_string, @ARGV);
+  open PIPE, '-|', @cmd
+    or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n"
+            . "(Is your Git too old?  Version 1.5.1 or later is required.)\n");
+
+  my $prev_multi_paragraph;
+  my $prev_date_line = '';
+  my @prev_coauthors = ();
+  while (1)
+    {
+      defined (my $in = <PIPE>)
+        or last;
+      $in =~ /^log size (\d+)$/
+        or die "$ME:$.: Invalid line (expected log size):\n$in";
+      my $log_nbytes = $1;
+
+      my $log;
+      my $n_read = read PIPE, $log, $log_nbytes;
+      $n_read == $log_nbytes
+        or die "$ME:$.: unexpected EOF\n";
+
+      # Extract leading hash.
+      my ($sha, $rest) = split ':', $log, 2;
+      defined $sha
+        or die "$ME:$.: malformed log entry\n";
+      $sha =~ /^[0-9a-fA-F]{40}$/
+        or die "$ME:$.: invalid SHA1: $sha\n";
+
+      # If this commit's log requires any transformation, do it now.
+      my $code = $amend_code->{$sha};
+      if (defined $code)
+        {
+          eval 'use Safe';
+          my $s = new Safe;
+          # Put the unpreprocessed entry into "$_".
+          $_ = $rest;
+
+          # Let $code operate on it, safely.
+          my $r = $s->reval("$code")
+            or die "$ME:$.:$sha: failed to eval \"$code\":\n$@\n";
+
+          # Note that we've used this entry.
+          delete $amend_code->{$sha};
+
+          # Update $rest upon success.
+          $rest = $_;
+        }
+
+      my @line = split "\n", $rest;
+      my $author_line = shift @line;
+      defined $author_line
+        or die "$ME:$.: unexpected EOF\n";
+      $author_line =~ /^(\d+)  (.*>)$/
+        or die "$ME:$.: Invalid line "
+          . "(expected date/author/email):\n$author_line\n";
+
+      # Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
+      # `(tiny change)' annotation.
+      my $tiny = (grep (/^Copyright-paperwork-exempt:\s+[Yy]es$/, @line)
+                  ? '  (tiny change)' : '');
+
+      my $date_line = sprintf "%s  %s$tiny\n",
+        strftime ("%F", localtime ($1)), $2;
+
+      my @coauthors = grep /^Co-authored-by:.*$/, @line;
+      # Omit meta-data lines we've already interpreted.
+      @line = grep !/^(?:Signed-off-by:[ ].*>$
+                       |Co-authored-by:[ ]
+                       |Copyright-paperwork-exempt:[ ]
+                       )/x, @line;
+
+      # Remove leading and trailing blank lines.
+      if (@line)
+        {
+          while ($line[0] =~ /^\s*$/) { shift @line; }
+          while ($line[$#line] =~ /^\s*$/) { pop @line; }
+        }
+
+      # Record whether there are two or more paragraphs.
+      my $multi_paragraph = grep /^\s*$/, @line;
+
+      # Format 'Co-authored-by: A U Thor <email@example.com>' lines in
+      # standard multi-author ChangeLog format.
+      for (@coauthors)
+        {
+          s/^Co-authored-by:\s*/\t    /;
+          s/\s*</  </;
+
+          /<.*?@.*\..*>/
+            or warn "$ME: warning: missing email address for "
+              . substr ($_, 5) . "\n";
+        }
+
+      # If clustering of commit messages has been disabled, if this header
+      # would be different from the previous date/name/email/coauthors header,
+      # or if this or the previous entry consists of two or more paragraphs,
+      # then print the header.
+      if ( ! $cluster
+          || $date_line ne $prev_date_line
+          || "@coauthors" ne "@prev_coauthors"
+          || $multi_paragraph
+          || $prev_multi_paragraph)
+        {
+          $prev_date_line eq ''
+            or print "\n";
+          print $date_line;
+          @coauthors
+            and print join ("\n", @coauthors), "\n";
+        }
+      $prev_date_line = $date_line;
+      @prev_coauthors = @coauthors;
+      $prev_multi_paragraph = $multi_paragraph;
+
+      # If there were any lines
+      if (@line == 0)
+        {
+          warn "$ME: warning: empty commit message:\n  $date_line\n";
+        }
+      else
+        {
+          if ($append_dot)
+            {
+              # If the first line of the message has enough room, then
+              if (length $line[0] < 72)
+                {
+                  # append a dot if there is no other punctuation or blank
+                  # at the end.
+                  $line[0] =~ /[[:punct:]\s]$/
+                    or $line[0] .= '.';
+                }
+            }
+
+          # Prefix each non-empty line with a TAB.
+          @line = map { length $_ ? "\t$_" : '' } @line;
+
+          print "\n", join ("\n", @line), "\n";
+        }
+
+      defined ($in = <PIPE>)
+        or last;
+      $in ne "\n"
+        and die "$ME:$.: unexpected line:\n$in";
+    }
+
+  close PIPE
+    or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
+  # FIXME-someday: include $PROCESS_STATUS in the diagnostic
+
+  # Complain about any unused entry in the --amend=F specified file.
+  my $fail = 0;
+  foreach my $sha (keys %$amend_code)
+    {
+      warn "$ME:$amend_file: unused entry: $sha\n";
+      $fail = 1;
+    }
+
+  exit $fail;
+}
+
+# Local Variables:
+# mode: perl
+# indent-tabs-mode: nil
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "my $VERSION = '"
+# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "'; # UTC"
+# End:
diff --git a/lib/gnupload b/lib/gnupload
new file mode 100755 (executable)
index 0000000..b71ddfd
--- /dev/null
@@ -0,0 +1,416 @@
+#!/bin/sh
+# Sign files and upload them.
+
+scriptversion=2012-01-15.15; # UTC
+
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Originally written by Alexandre Duret-Lutz <adl@gnu.org>.
+# The master copy of this file is maintained in the gnulib Git repository.
+# Please send bug reports and feature requests to bug-gnulib@gnu.org.
+
+set -e
+
+GPG='gpg --batch --no-tty'
+conffile=.gnuploadrc
+to=
+dry_run=false
+symlink_files=
+delete_files=
+delete_symlinks=
+collect_var=
+dbg=
+nl='
+'
+
+usage="Usage: $0 [OPTION]... [CMD] FILE... [[CMD] FILE...]
+
+Sign all FILES, and process them at selected destinations according to CMD.
+<http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html>
+explains further.
+
+Commands:
+  --delete                 delete FILES from destination
+  --symlink                create symbolic links
+  --rmsymlink              remove symbolic links
+  --                       treat the remaining arguments as files to upload
+
+Options:
+  --help                   print this help text and exit
+  --to DEST                specify one destination for FILES
+                           (multiple --to options are allowed)
+  --user NAME              sign with key NAME
+  --symlink-regex[=EXPR]   use sed script EXPR to compute symbolic link names
+  --dry-run                do nothing, show what would have been done
+  --version                output version information and exit
+
+If --symlink-regex is given without EXPR, then the link target name
+is created by replacing the version information with '-latest', e.g.:
+
+  foo-1.3.4.tar.gz -> foo-latest.tar.gz
+
+Recognized destinations are:
+  alpha.gnu.org:DIRECTORY
+  savannah.gnu.org:DIRECTORY
+  savannah.nongnu.org:DIRECTORY
+  ftp.gnu.org:DIRECTORY
+                           build directive files and upload files by FTP
+  download.gnu.org.ua:{alpha|ftp}/DIRECTORY
+                           build directive files and upload files by SFTP
+  [user@]host:DIRECTORY    upload files with scp
+
+Options and commands are applied in order.  If the file $conffile exists
+in the current working directory, its contents are prepended to the
+actual command line options.  Use this to keep your defaults.  Comments
+(#) and empty lines in $conffile are allowed.
+
+Examples:
+1. Upload foobar-1.0.tar.gz to ftp.gnu.org:
+  gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz
+
+2. Upload foobar-1.0.tar.gz and foobar-1.0.tar.xz to ftp.gnu.org:
+  gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz foobar-1.0.tar.xz
+
+3. Same as above, and also create symbolic links to foobar-latest.tar.*:
+  gnupload --to ftp.gnu.org:foobar \\
+           --symlink-regex \\
+           foobar-1.0.tar.gz foobar-1.0.tar.xz
+
+4. Upload foobar-0.9.90.tar.gz to two sites:
+  gnupload --to alpha.gnu.org:foobar \\
+           --to sources.redhat.com:~ftp/pub/foobar \\
+           foobar-0.9.90.tar.gz
+
+5. Delete oopsbar-0.9.91.tar.gz and upload foobar-0.9.91.tar.gz
+   (the -- terminates the list of files to delete):
+  gnupload --to alpha.gnu.org:foobar \\
+           --to sources.redhat.com:~ftp/pub/foobar \\
+           --delete oopsbar-0.9.91.tar.gz \\
+           -- foobar-0.9.91.tar.gz
+
+gnupload uses the ncftpput program to do the transfers; if you don't
+happen to have an ncftp package installed, the ncftpput-ftp script in
+the build-aux/ directory of the gnulib package
+(http://savannah.gnu.org/projects/gnulib) may serve as a replacement.
+
+Send patches and bug reports to <bug-gnulib@gnu.org>."
+
+# Read local configuration file
+if test -r "$conffile"; then
+  echo "$0: Reading configuration file $conffile"
+  conf=`sed 's/#.*$//;/^$/d' "$conffile" | tr "\015$nl" '  '`
+  eval set x "$conf \"\$@\""
+  shift
+fi
+
+while test -n "$1"; do
+  case $1 in
+  -*)
+    collect_var=
+    case $1 in
+    --help)
+      echo "$usage"
+      exit $?
+      ;;
+    --to)
+      if test -z "$2"; then
+        echo "$0: Missing argument for --to" 1>&2
+        exit 1
+      else
+        to="$to $2"
+        shift
+      fi
+      ;;
+    --user)
+      if test -z "$2"; then
+        echo "$0: Missing argument for --user" 1>&2
+        exit 1
+      else
+        GPG="$GPG --local-user $2"
+        shift
+      fi
+      ;;
+    --delete)
+      collect_var=delete_files
+      ;;
+    --rmsymlink)
+      collect_var=delete_symlinks
+      ;;
+    --symlink-regex=*)
+      symlink_expr=`expr "$1" : '[^=]*=\(.*\)'`
+      ;;
+    --symlink-regex)
+      symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|'
+      ;;
+    --symlink)
+      collect_var=symlink_files
+      ;;
+    --dry-run|-n)
+      dry_run=:
+      ;;
+    --version)
+      echo "gnupload $scriptversion"
+      exit $?
+      ;;
+    --)
+      shift
+      break
+      ;;
+    -*)
+      echo "$0: Unknown option '$1', try '$0 --help'" 1>&2
+      exit 1
+      ;;
+    esac
+    ;;
+  *)
+    if test -z "$collect_var"; then
+      break
+    else
+      eval "$collect_var=\"\$$collect_var $1\""
+    fi
+    ;;
+  esac
+  shift
+done
+
+dprint()
+{
+  echo "Running $* ..."
+}
+
+if $dry_run; then
+  dbg=dprint
+fi
+
+if test -z "$to"; then
+  echo "$0: Missing destination sites" >&2
+  exit 1
+fi
+
+if test -n "$symlink_files"; then
+  x=`echo "$symlink_files" | sed 's/[^ ]//g;s/  //g'`
+  if test -n "$x"; then
+    echo "$0: Odd number of symlink arguments" >&2
+    exit 1
+  fi
+fi
+
+if test $# = 0; then
+  if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then
+    echo "$0: No file to upload" 1>&2
+    exit 1
+  fi
+else
+  # Make sure all files exist.  We don't want to ask
+  # for the passphrase if the script will fail.
+  for file
+  do
+    if test ! -f $file; then
+      echo "$0: Cannot find '$file'" 1>&2
+      exit 1
+    elif test -n "$symlink_expr"; then
+      linkname=`echo $file | sed "$symlink_expr"`
+      if test -z "$linkname"; then
+        echo "$0: symlink expression produces empty results" >&2
+        exit 1
+      elif test "$linkname" = $file; then
+        echo "$0: symlink expression does not alter file name" >&2
+        exit 1
+      fi
+    fi
+  done
+fi
+
+# Make sure passphrase is not exported in the environment.
+unset passphrase
+
+# Reset PATH to be sure that echo is a built-in.  We will later use
+# 'echo $passphrase' to output the passphrase, so it is important that
+# it is a built-in (third-party programs tend to appear in 'ps'
+# listings with their arguments...).
+# Remember this script runs with 'set -e', so if echo is not built-in
+# it will exit now.
+PATH=/empty echo -n "Enter GPG passphrase: "
+stty -echo
+read -r passphrase
+stty echo
+echo
+
+if test $# -ne 0; then
+  for file
+  do
+    echo "Signing $file ..."
+    rm -f $file.sig
+    echo "$passphrase" | $dbg $GPG --passphrase-fd 0 -ba -o $file.sig $file
+  done
+fi
+
+
+# mkdirective DESTDIR BASE FILE STMT
+# Arguments: See upload, below
+mkdirective ()
+{
+  stmt="$4"
+  if test -n "$3"; then
+    stmt="
+filename: $3$stmt"
+  fi
+
+  cat >${2}.directive<<EOF
+version: 1.1
+directory: $1
+comment: gnupload v. $scriptversion$stmt
+EOF
+  if $dry_run; then
+    echo "File ${2}.directive:"
+    cat ${2}.directive
+    echo "File ${2}.directive:" | sed 's/./-/g'
+  fi
+}
+
+mksymlink ()
+{
+  while test $# -ne 0
+  do
+    echo "symlink: $1 $2"
+    shift
+    shift
+  done
+}
+
+# upload DEST DESTDIR BASE FILE STMT FILES
+# Arguments:
+#  DEST     Destination site;
+#  DESTDIR  Destination directory;
+#  BASE     Base name for the directive file;
+#  FILE     Name of the file to distribute (may be empty);
+#  STMT     Additional statements for the directive file;
+#  FILES    List of files to upload.
+upload ()
+{
+  dest=$1
+  destdir=$2
+  base=$3
+  file=$4
+  stmt=$5
+  files=$6
+
+  rm -f $base.directive $base.directive.asc
+  case $dest in
+    alpha.gnu.org:*)
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg ncftpput ftp-upload.gnu.org /incoming/alpha $files $base.directive.asc
+      ;;
+    ftp.gnu.org:*)
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg ncftpput ftp-upload.gnu.org /incoming/ftp $files $base.directive.asc
+      ;;
+    savannah.gnu.org:*)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files
+      ;;
+    savannah.nongnu.org:*)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files
+      ;;
+    download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*)
+      destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'`
+      destdir_topdir=`echo "$destdir" | sed 's,/.*,,'`
+      mkdirective "$destdir_p1" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      for f in $files $base.directive.asc
+      do
+        echo put $f
+      done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir
+      ;;
+    /*)
+      dest_host=`echo "$dest" | sed 's,:.*,,'`
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg cp $files $base.directive.asc $dest_host
+      ;;
+    *)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg scp $files $dest
+      ;;
+  esac
+  rm -f $base.directive $base.directive.asc
+}
+
+#####
+# Process any standalone directives
+stmt=
+if test -n "$symlink_files"; then
+  stmt="$stmt
+`mksymlink $symlink_files`"
+fi
+
+for file in $delete_files
+do
+  stmt="$stmt
+archive: $file"
+done
+
+for file in $delete_symlinks
+do
+  stmt="$stmt
+rmsymlink: $file"
+done
+
+if test -n "$stmt"; then
+  for dest in $to
+  do
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt"
+  done
+fi
+
+# Process actual uploads
+for dest in $to
+do
+  for file
+  do
+    echo "Uploading $file to $dest ..."
+    stmt=
+    files="$file $file.sig"
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    if test -n "$symlink_expr"; then
+      linkname=`echo $file | sed "$symlink_expr"`
+      stmt="$stmt
+symlink: $file $linkname
+symlink: $file.sig $linkname.sig"
+    fi
+    upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files"
+  done
+done
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/install-sh b/lib/install-sh
new file mode 100755 (executable)
index 0000000..377bb86
--- /dev/null
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-11-20.07; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""       $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+       shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
+
+    -o) chowncmd="$chownprog $2"
+       shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+       # Protect names problematic for 'test' and other utilities.
+       case $dst_arg in
+         -* | [=\(\)!]) dst_arg=./$dst_arg;;
+       esac
+       shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)        shift
+       break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call 'install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for 'test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dst_arg: Is a directory" >&2
+       exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+       /*) prefix='/';;
+       [-=\(\)!]*) prefix='./';;
+       *)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+       test X"$d" = X && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+       # Now remove or move aside any old file at destination location.
+       # We try this two ways since rm can't unlink itself on some
+       # systems and the destination file might be busy for other
+       # reasons.  In this case, the final cleanup might fail but the new
+       # file should still install successfully.
+       {
+         test ! -f "$dst" ||
+         $doit $rmcmd -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+         } ||
+         { echo "$0: cannot unlink or rename $dst" >&2
+           (exit 1); exit 1
+         }
+       } &&
+
+       # Now rename the file to the real destination.
+       $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/mdate-sh b/lib/mdate-sh
new file mode 100755 (executable)
index 0000000..4614441
--- /dev/null
@@ -0,0 +1,224 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2010-08-21.06; # UTC
+
+# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+fi
+
+case $1 in
+  '')
+     echo "$0: No file.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification day of FILE, in the format:
+1 January 1970
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "mdate-sh $scriptversion"
+    exit $?
+    ;;
+esac
+
+error ()
+{
+  echo "$0: $1" >&2
+  exit 1
+}
+
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable.  Since we cannot assume 'unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+  TIME_STYLE=posix-long-iso
+  export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+  ls_command='ls -L -l -d'
+else
+  ls_command='ls -l -d'
+fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+  ls_command="$ls_command -n"
+fi
+
+# A 'ls -l' line looks as follows on OS/2.
+#  drwxrwx---        0 Aug 11  2001 foo
+# This differs from Unix, which adds ownership information.
+#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month.  This cannot work with files whose owner is a
+# user named "Jan", or "Feb", etc.  However, it's unlikely that '/'
+# will be owned by a user whose name is a month.  So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`$ls_command /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+  test $# -gt 0 || error "failed parsing '$ls_command /' output"
+  shift
+  # Add another shift to the command.
+  command="$command shift;"
+  case $1 in
+    Jan) month=January; nummonth=1;;
+    Feb) month=February; nummonth=2;;
+    Mar) month=March; nummonth=3;;
+    Apr) month=April; nummonth=4;;
+    May) month=May; nummonth=5;;
+    Jun) month=June; nummonth=6;;
+    Jul) month=July; nummonth=7;;
+    Aug) month=August; nummonth=8;;
+    Sep) month=September; nummonth=9;;
+    Oct) month=October; nummonth=10;;
+    Nov) month=November; nummonth=11;;
+    Dec) month=December; nummonth=12;;
+  esac
+done
+
+test -n "$month" || error "failed parsing '$ls_command /' output"
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\\\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+  Jan) month=January; nummonth=1;;
+  Feb) month=February; nummonth=2;;
+  Mar) month=March; nummonth=3;;
+  Apr) month=April; nummonth=4;;
+  May) month=May; nummonth=5;;
+  Jun) month=June; nummonth=6;;
+  Jul) month=July; nummonth=7;;
+  Aug) month=August; nummonth=8;;
+  Sep) month=September; nummonth=9;;
+  Oct) month=October; nummonth=10;;
+  Nov) month=November; nummonth=11;;
+  Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+  ???*) day=$1;;
+  *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+  *:*) set `date`; eval year=\$$#
+       case $2 in
+        Jan) nummonthtod=1;;
+        Feb) nummonthtod=2;;
+        Mar) nummonthtod=3;;
+        Apr) nummonthtod=4;;
+        May) nummonthtod=5;;
+        Jun) nummonthtod=6;;
+        Jul) nummonthtod=7;;
+        Aug) nummonthtod=8;;
+        Sep) nummonthtod=9;;
+        Oct) nummonthtod=10;;
+        Nov) nummonthtod=11;;
+        Dec) nummonthtod=12;;
+       esac
+       # For the first six month of the year the time notation can also
+       # be used for files modified in the last year.
+       if (expr $nummonth \> $nummonthtod) > /dev/null;
+       then
+        year=`expr $year - 1`
+       fi;;
+  *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/missing b/lib/missing
new file mode 100755 (executable)
index 0000000..9a55648
--- /dev/null
@@ -0,0 +1,330 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2012-01-06.18; # UTC
+
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try '$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, 'missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file 'aclocal.m4'
+  autoconf     touch file 'configure'
+  autoheader   touch file 'config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all 'Makefile.in' files
+  bison        create 'y.tab.[ch]', if possible, from existing .[ch]
+  flex         create 'lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create 'lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  yacc         create 'y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running '$TOOL --version' or '$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: '$1' is $msg.  You should only need it if
+         you modified 'acinclude.m4' or '${configure_ac}'.  You might want
+         to install the Automake and Perl packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: '$1' is $msg.  You should only need it if
+         you modified '${configure_ac}'.  You might want to install the
+         Autoconf and GNU m4 packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: '$1' is $msg.  You should only need it if
+         you modified 'acconfig.h' or '${configure_ac}'.  You might want
+         to install the Autoconf and GNU m4 packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: '$1' is $msg.  You should only need it if
+         you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
+         You might want to install the Automake and Perl packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+          sed 's/\.am$/.in/' |
+          while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: '$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get '$1' as part of Autoconf from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo "#! /bin/sh"
+       echo "# Created by GNU Automake missing as a replacement of"
+       echo "#  $ $@"
+       echo "exit 0"
+       chmod +x $file
+       exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: '$1' $msg.  You should only need it if
+         you modified a '.y' file.  You may need the Bison package
+         in order for those modifications to take effect.  You can get
+         Bison from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+       case $LASTARG in
+       *.y)
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.c
+           fi
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.h
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f y.tab.h; then
+       echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+       echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: '$1' is $msg.  You should only need it if
+         you modified a '.l' file.  You may need the Flex package
+         in order for those modifications to take effect.  You can get
+         Flex from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+       case $LASTARG in
+       *.l)
+           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" lex.yy.c
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f lex.yy.c; then
+       echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: '$1' is $msg.  You should only need it if
+        you modified a dependency of a manual page.  You may need the
+        Help2man package in order for those modifications to take
+        effect.  You can get Help2man from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo ".ab help2man is required to generate this page"
+       exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: '$1' is $msg.  You should only need it if
+         you modified a '.texi' or '.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy 'make' (AIX,
+         DU, IRIX).  You might want to install the Texinfo package or
+         the GNU make package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: '$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the 'README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing '$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/mkinstalldirs b/lib/mkinstalldirs
new file mode 100755 (executable)
index 0000000..55d537f
--- /dev/null
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" ""       $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit $?
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+  '')
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the 'mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because '.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
+
+for file
+do
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
+  shift
+  IFS=$oIFS
+
+  for d
+  do
+    test "x$d" = x && continue
+
+    pathcomp=$pathcomp$d
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+       errstatus=$lasterr
+      else
+       if test ! -z "$dirmode"; then
+         echo "chmod $dirmode $pathcomp"
+         lasterr=
+         chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+         if test ! -z "$lasterr"; then
+           errstatus=$lasterr
+         fi
+       fi
+      fi
+    fi
+
+    pathcomp=$pathcomp/
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/py-compile b/lib/py-compile
new file mode 100755 (executable)
index 0000000..699e28f
--- /dev/null
@@ -0,0 +1,160 @@
+#!/bin/sh
+# py-compile - Compile a Python program
+
+scriptversion=2011-06-08.12; # UTC
+
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+if [ -z "$PYTHON" ]; then
+  PYTHON=python
+fi
+
+me=py-compile
+
+usage_error ()
+{
+  echo "$me: $*" >&2
+  echo "Try \`$me --help' for more information." >&2
+  exit 1
+}
+
+basedir=
+destdir=
+while test $# -ne 0; do
+  case "$1" in
+    --basedir)
+      if test $# -lt 2; then
+        usage_error "option '--basedir' requires an argument"
+      else
+        basedir=$2
+      fi
+      shift
+      ;;
+    --destdir)
+      if test $# -lt 2; then
+        usage_error "option '--destdir' requires an argument"
+      else
+        destdir=$2
+      fi
+      shift
+      ;;
+    -h|--help)
+      cat <<\EOF
+Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..."
+
+Byte compile some python scripts FILES.  Use --destdir to specify any
+leading directory path to the FILES that you don't want to include in the
+byte compiled file.  Specify --basedir for any additional path information you
+do want to be shown in the byte compiled file.
+
+Example:
+  py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+      exit $?
+      ;;
+    -v|--version)
+      echo "$me $scriptversion"
+      exit $?
+      ;;
+    --)
+      shift
+      break
+      ;;
+    -*)
+      usage_error "unrecognized option '$1'"
+      ;;
+    *)
+      break
+      ;;
+  esac
+  shift
+done
+
+files=$*
+if test -z "$files"; then
+    usage_error "no files given"
+fi
+
+# if basedir was given, then it should be prepended to filenames before
+# byte compilation.
+if [ -z "$basedir" ]; then
+    pathtrans="path = file"
+else
+    pathtrans="path = os.path.join('$basedir', file)"
+fi
+
+# if destdir was given, then it needs to be prepended to the filename to
+# byte compile but not go into the compiled file.
+if [ -z "$destdir" ]; then
+    filetrans="filepath = path"
+else
+    filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)"
+fi
+
+$PYTHON -c "
+import sys, os, py_compile
+
+files = '''$files'''
+
+sys.stdout.write('Byte-compiling python modules...\n')
+for file in files.split():
+    $pathtrans
+    $filetrans
+    if not os.path.exists(filepath) or not (len(filepath) >= 3
+                                            and filepath[-3:] == '.py'):
+           continue
+    sys.stdout.write(file)
+    sys.stdout.flush()
+    py_compile.compile(filepath, filepath + 'c', path)
+sys.stdout.write('\n')" || exit $?
+
+# this will fail for python < 1.5, but that doesn't matter ...
+$PYTHON -O -c "
+import sys, os, py_compile
+
+files = '''$files'''
+sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n')
+for file in files.split():
+    $pathtrans
+    $filetrans
+    if not os.path.exists(filepath) or not (len(filepath) >= 3
+                                            and filepath[-3:] == '.py'):
+           continue
+    sys.stdout.write(file)
+    sys.stdout.flush()
+    py_compile.compile(filepath, filepath + 'o', path)
+sys.stdout.write('\n')" 2>/dev/null || :
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/tap-driver.pl b/lib/tap-driver.pl
new file mode 100755 (executable)
index 0000000..7f420af
--- /dev/null
@@ -0,0 +1,564 @@
+#! /usr/bin/env perl
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# ---------------------------------- #
+#  Imports, static data, and setup.  #
+# ---------------------------------- #
+
+use warnings FATAL => 'all';
+use strict;
+use Getopt::Long ();
+use TAP::Parser;
+
+my $VERSION = '2012-02-01.19'; # UTC
+
+my $ME = "tap-driver.pl";
+
+my $USAGE = <<'END';
+Usage:
+  tap-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+             [--expect-failure={yes|no}] [--color-tests={yes|no}]
+             [--enable-hard-errors={yes|no}] [--ignore-exit]
+             [--diagnostic-string=STRING] [--merge|--no-merge]
+             [--comments|--no-comments] [--] TEST-COMMAND
+The `--test-name', `--log-file' and `--trs-file' options are mandatory.
+END
+
+my $HELP = "$ME: TAP-aware test driver for Automake testsuite harness." .
+           "\n" . $USAGE;
+
+# Keep this in sync with `lib/am/check.am:$(am__tty_colors)'.
+my %COLOR = (
+  red => "\e[0;31m",
+  grn => "\e[0;32m",
+  lgn => "\e[1;32m",
+  blu => "\e[1;34m",
+  mgn => "\e[0;35m",
+  brg => "\e[1m",
+  std => "\e[m",
+);
+
+# It's important that NO_PLAN evaluates "false" as a boolean.
+use constant NO_PLAN => 0;
+use constant EARLY_PLAN => 1;
+use constant LATE_PLAN => 2;
+
+# ------------------- #
+#  Global variables.  #
+# ------------------- #
+
+my $testno = 0;     # Number of test results seen so far.
+my $bailed_out = 0; # Whether a "Bail out!" directive has been seen.
+my $parser;         # TAP parser object (will be initialized later).
+
+# Whether the TAP plan has been seen or not, and if yes, which kind
+# it is ("early" is seen before any test result, "late" otherwise).
+my $plan_seen = NO_PLAN;
+
+# ----------------- #
+#  Option parsing.  #
+# ----------------- #
+
+my %cfg = (
+  "color-tests" => 0,
+  "expect-failure" => 0,
+  "merge" => 0,
+  "comments" => 0,
+  "ignore-exit" => 0,
+);
+
+my $test_script_name = undef;
+my $log_file = undef;
+my $trs_file = undef;
+my $diag_string = "#";
+
+Getopt::Long::GetOptions
+  (
+    'help' => sub { print $HELP; exit 0; },
+    'version' => sub { print "$ME $VERSION\n"; exit 0; },
+    'test-name=s' => \$test_script_name,
+    'log-file=s' => \$log_file,
+    'trs-file=s' => \$trs_file,
+    'color-tests=s'  => \&bool_opt,
+    'expect-failure=s'  => \&bool_opt,
+    'enable-hard-errors=s' => sub {}, # No-op.
+    'diagnostic-string=s' => \$diag_string,
+    'comments' => sub { $cfg{"comments"} = 1; },
+    'no-comments' => sub { $cfg{"comments"} = 0; },
+    'merge' => sub { $cfg{"merge"} = 1; },
+    'no-merge' => sub { $cfg{"merge"} = 0; },
+    'ignore-exit' => sub { $cfg{"ignore-exit"} = 1; },
+  ) or exit 1;
+
+# ------------- #
+#  Prototypes.  #
+# ------------- #
+
+sub add_test_result ($);
+sub bool_opt ($$);
+sub colored ($$);
+sub copy_in_global_log ();
+sub decorate_result ($);
+sub extract_tap_comment ($);
+sub finish ();
+sub get_global_test_result ();
+sub get_test_exit_message ();
+sub get_test_results ();
+sub handle_tap_bailout ($);
+sub handle_tap_plan ($);
+sub handle_tap_result ($);
+sub is_null_string ($);
+sub main (@);
+sub must_recheck ();
+sub report ($;$);
+sub setup_io ();
+sub setup_parser (@);
+sub stringify_result_obj ($);
+sub testsuite_error ($);
+sub trap_perl_warnings_and_errors ();
+sub write_test_results ();
+sub yn ($);
+
+# -------------- #
+#  Subroutines.  #
+# -------------- #
+
+sub bool_opt ($$)
+{
+  my ($opt, $val) = @_;
+  if ($val =~ /^(?:y|yes)\z/i)
+    {
+      $cfg{$opt} = 1;
+    }
+  elsif ($val =~ /^(?:n|no)\z/i)
+    {
+      $cfg{$opt} = 0;
+    }
+  else
+    {
+      die "$ME: invalid argument '$val' for option '$opt'\n";
+    }
+}
+
+# If the given string is undefined or empty, return true, otherwise
+# return false.  This function is useful to avoid pitfalls like:
+#   if ($message) { print "$message\n"; }
+# which wouldn't print anything if $message is the literal "0".
+sub is_null_string ($)
+{
+  my $str = shift;
+  return ! (defined $str and length $str);
+}
+
+# Convert a boolean to a "yes"/"no" string.
+sub yn ($)
+{
+  my $bool = shift;
+  return $bool ? "yes" : "no";
+}
+
+TEST_RESULTS :
+{
+  my (@test_results_list, %test_results_seen);
+
+  sub add_test_result ($)
+  {
+    my $res = shift;
+    push @test_results_list, $res;
+    $test_results_seen{$res} = 1;
+  }
+
+  sub get_test_results ()
+  {
+    return @test_results_list;
+  }
+
+  # Whether the test script should be re-run by "make recheck".
+  sub must_recheck ()
+  {
+    return grep { !/^(?:XFAIL|PASS|SKIP)$/ } (keys %test_results_seen);
+  }
+
+  # Whether the content of the log file associated to this test should
+  # be copied into the "global" test-suite.log.
+  sub copy_in_global_log ()
+  {
+    return grep { not $_ eq "PASS" } (keys %test_results_seen);
+  }
+
+  # FIXME: this can certainly be improved ...
+  sub get_global_test_result ()
+  {
+    return "ERROR"
+      if $test_results_seen{"ERROR"};
+    return "FAIL"
+      if $test_results_seen{"FAIL"} || $test_results_seen{"XPASS"};
+    return "SKIP"
+      if scalar keys %test_results_seen == 1 && $test_results_seen{"SKIP"};
+    return "PASS";
+  }
+
+}
+
+sub write_test_results ()
+{
+  open RES, ">", $trs_file or die "$ME: opening $trs_file: $!\n";
+  print RES ":global-test-result: " . get_global_test_result . "\n";
+  print RES ":recheck: " . yn (must_recheck) . "\n";
+  print RES ":copy-in-global-log: " . yn (copy_in_global_log) . "\n";
+  foreach my $result (get_test_results)
+    {
+      print RES ":test-result: $result\n";
+    }
+  close RES or die "$ME: closing $trs_file: $!\n";
+}
+
+sub trap_perl_warnings_and_errors ()
+{
+  $SIG{__WARN__} = $SIG{__DIE__} = sub
+    {
+      # Be sure to send the warning/error message to the original stderr
+      # (presumably the console), not into the log file.
+      open STDERR, ">&OLDERR";
+      die @_;
+    }
+}
+
+sub setup_io ()
+{
+  # Redirect stderr and stdout to a temporary log file.  Save the
+  # original stdout stream, since we need it to print testsuite
+  # progress output. Save original stderr stream, so that we can
+  # redirect warning and error messages from perl there.
+  open LOG, ">", $log_file or die "$ME: opening $log_file: $!\n";
+  open OLDOUT, ">&STDOUT" or die "$ME: duplicating stdout: $!\n";
+  open OLDERR, ">&STDERR" or die "$ME: duplicating stdout: $!\n";
+  *OLDERR = *OLDERR; # To pacify a "used only once" warning.
+  trap_perl_warnings_and_errors;
+  open STDOUT, ">&LOG" or die "$ME: redirecting stdout: $!\n";
+  open STDERR, ">&LOG" or die "$ME: redirecting stderr: $!\n";
+}
+
+sub setup_parser (@)
+{
+  local $@ = '';
+  eval { $parser = TAP::Parser->new ({exec => \@_, merge => $cfg{merge}}) };
+  if ($@ ne '')
+    {
+      # Don't use the error message in $@ as set by TAP::Parser, since
+      # currently it's both too generic (at the point of being basically
+      # useless) and quite long.
+      report "ERROR", "- couldn't execute test script";
+      finish;
+    }
+}
+
+sub get_test_exit_message ()
+{
+  my $wstatus = $parser->wait;
+  # Watch out for possible internal errors.
+  die "$ME: couldn't get the exit status of the TAP producer"
+    unless defined $wstatus;
+  # Return an undefined value if the producer exited with success.
+  return unless $wstatus;
+  # Otherwise, determine whether it exited with error or was terminated
+  # by a signal.
+  use POSIX qw (WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG);
+  if (WIFEXITED ($wstatus))
+  {
+    return sprintf "exited with status %d", WEXITSTATUS ($wstatus);
+  }
+  elsif (WIFSIGNALED ($wstatus))
+    {
+      return sprintf "terminated by signal %d", WTERMSIG ($wstatus);
+    }
+  else
+    {
+      return "terminated abnormally";
+    }
+}
+
+sub stringify_result_obj ($)
+{
+  my $result_obj = shift;
+  my $COOKED_PASS = $cfg{"expect-failure"} ? "XPASS": "PASS";
+  my $COOKED_FAIL = $cfg{"expect-failure"} ? "XFAIL": "FAIL";
+  if ($result_obj->is_unplanned || $result_obj->number != $testno)
+    {
+      return "ERROR";
+    }
+  elsif ($plan_seen == LATE_PLAN)
+    {
+      return "ERROR";
+    }
+  elsif (!$result_obj->directive)
+    {
+      return $result_obj->is_ok ? $COOKED_PASS: $COOKED_FAIL;
+    }
+  elsif ($result_obj->has_todo)
+    {
+      return $result_obj->is_actual_ok ? "XPASS" : "XFAIL";
+    }
+  elsif ($result_obj->has_skip)
+    {
+      return $result_obj->is_ok ? "SKIP" : $COOKED_FAIL;
+    }
+  die "$ME: INTERNAL ERROR"; # NOTREACHED
+}
+
+sub colored ($$)
+{
+  my ($color_name, $text) = @_;
+  return $COLOR{$color_name} . $text . $COLOR{'std'};
+}
+
+sub decorate_result ($)
+{
+  my $result = shift;
+  return $result unless $cfg{"color-tests"};
+  my %color_for_result =
+    (
+      "ERROR" => 'mgn',
+      "PASS"  => 'grn',
+      "XPASS" => 'red',
+      "FAIL"  => 'red',
+      "XFAIL" => 'lgn',
+      "SKIP"  => 'blu',
+    );
+  if (my $color = $color_for_result{$result})
+    {
+      return colored ($color, $result);
+    }
+  else
+    {
+      return $result; # Don't colorize unknown stuff.
+    }
+}
+
+sub report ($;$)
+{
+  my ($msg, $result, $explanation) = (undef, @_);
+  if ($result =~ /^(?:X?(?:PASS|FAIL)|SKIP|ERROR)/)
+    {
+      $msg = ": $test_script_name";
+      add_test_result $result;
+    }
+  elsif ($result eq "#")
+    {
+      $msg = " $test_script_name:";
+    }
+  else
+    {
+      die "$ME: INTERNAL ERROR"; # NOTREACHED
+    }
+  $msg .= " $explanation" if defined $explanation;
+  $msg .= "\n";
+  # Output on console might be colorized.
+  print OLDOUT decorate_result ($result) . $msg;
+  # Log the result in the log file too, to help debugging (this is
+  # especially true when said result is a TAP error or "Bail out!").
+  print $result . $msg;
+}
+
+sub testsuite_error ($)
+{
+  report "ERROR", "- $_[0]";
+}
+
+sub handle_tap_result ($)
+{
+  $testno++;
+  my $result_obj = shift;
+
+  my $test_result = stringify_result_obj $result_obj;
+  my $string = $result_obj->number;
+
+  my $description = $result_obj->description;
+  $string .= " $description"
+    unless is_null_string $description;
+
+  if ($plan_seen == LATE_PLAN)
+    {
+      $string .= " # AFTER LATE PLAN";
+    }
+  elsif ($result_obj->is_unplanned)
+    {
+      $string .= " # UNPLANNED";
+    }
+  elsif ($result_obj->number != $testno)
+    {
+      $string .= " # OUT-OF-ORDER (expecting $testno)";
+    }
+  elsif (my $directive = $result_obj->directive)
+    {
+      $string .= " # $directive";
+      my $explanation = $result_obj->explanation;
+      $string .= " $explanation"
+        unless is_null_string $explanation;
+    }
+
+  report $test_result, $string;
+}
+
+sub handle_tap_plan ($)
+{
+  my $plan = shift;
+  if ($plan_seen)
+    {
+      # Error, only one plan per stream is acceptable.
+      testsuite_error "multiple test plans";
+      return;
+    }
+  # The TAP plan can come before or after *all* the TAP results; we speak
+  # respectively of an "early" or a "late" plan.  If we see the plan line
+  # after at least one TAP result has been seen, assume we have a late
+  # plan; in this case, any further test result seen after the plan will
+  # be flagged as an error.
+  $plan_seen = ($testno >= 1 ? LATE_PLAN : EARLY_PLAN);
+  # If $testno > 0, we have an error ("too many tests run") that will be
+  # automatically dealt with later, so don't worry about it here.  If
+  # $plan_seen is true, we have an error due to a repeated plan, and that
+  # has already been dealt with above.  Otherwise, we have a valid "plan
+  # with SKIP" specification, and should report it as a particular kind
+  # of SKIP result.
+  if ($plan->directive && $testno == 0)
+    {
+      my $explanation = is_null_string ($plan->explanation) ?
+                        undef : "- " . $plan->explanation;
+      report "SKIP", $explanation;
+    }
+}
+
+sub handle_tap_bailout ($)
+{
+  my ($bailout, $msg) = ($_[0], "Bail out!");
+  $bailed_out = 1;
+  $msg .= " " . $bailout->explanation
+    unless is_null_string $bailout->explanation;
+  testsuite_error $msg;
+}
+
+sub extract_tap_comment ($)
+{
+  my $line = shift;
+  if (index ($line, $diag_string) == 0)
+    {
+      # Strip leading `$diag_string' from `$line'.
+      $line = substr ($line, length ($diag_string));
+      # And strip any leading and trailing whitespace left.
+      $line =~ s/(?:^\s*|\s*$)//g;
+      # Return what is left (if any).
+      return $line;
+    }
+  return "";
+}
+
+sub finish ()
+{
+  write_test_results;
+  close LOG or die "$ME: closing $log_file: $!\n";
+  exit 0;
+}
+
+sub main (@)
+{
+  setup_io;
+  setup_parser @_;
+
+  while (defined (my $cur = $parser->next))
+    {
+      # Verbatim copy any input line into the log file.
+      print $cur->raw . "\n";
+      # Parsing of TAP input should stop after a "Bail out!" directive.
+      next if $bailed_out;
+
+      if ($cur->is_plan)
+        {
+          handle_tap_plan ($cur);
+        }
+      elsif ($cur->is_test)
+        {
+          handle_tap_result ($cur);
+        }
+      elsif ($cur->is_bailout)
+        {
+          handle_tap_bailout ($cur);
+        }
+      elsif ($cfg{comments})
+        {
+          my $comment = extract_tap_comment ($cur->raw);
+          report "#", "$comment" if length $comment;
+       }
+    }
+  # A "Bail out!" directive should cause us to ignore any following TAP
+  # error, as well as a non-zero exit status from the TAP producer.
+  if (!$bailed_out)
+    {
+      if (!$plan_seen)
+        {
+          testsuite_error "missing test plan";
+        }
+      elsif ($parser->tests_planned != $parser->tests_run)
+        {
+          my ($planned, $run) = ($parser->tests_planned, $parser->tests_run);
+          my $bad_amount = $run > $planned ? "many" : "few";
+          testsuite_error (sprintf "too %s tests run (expected %d, got %d)",
+                                   $bad_amount, $planned, $run);
+        }
+      if (!$cfg{"ignore-exit"})
+        {
+          my $msg = get_test_exit_message ();
+          testsuite_error $msg if $msg;
+        }
+    }
+  finish;
+}
+
+# ----------- #
+#  Main code. #
+# ----------- #
+
+main @ARGV;
+
+# Local Variables:
+# perl-indent-level: 2
+# perl-continued-statement-offset: 2
+# perl-continued-brace-offset: 0
+# perl-brace-offset: 0
+# perl-brace-imaginary-offset: 0
+# perl-label-offset: -2
+# cperl-indent-level: 2
+# cperl-brace-offset: 0
+# cperl-continued-brace-offset: 0
+# cperl-label-offset: -2
+# cperl-extra-newline-before-brace: t
+# cperl-merge-trailing-else: nil
+# cperl-continued-statement-offset: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "my $VERSION = "
+# time-stamp-format: "'%:y-%02m-%02d.%02H'"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/tap-driver.sh b/lib/tap-driver.sh
new file mode 100755 (executable)
index 0000000..259ca0d
--- /dev/null
@@ -0,0 +1,652 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+scriptversion=2011-12-27.17; # UTC
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+me=tap-driver.sh
+
+fatal ()
+{
+  echo "$me: fatal: $*" >&2
+  exit 1
+}
+
+usage_error ()
+{
+  echo "$me: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  tap-driver.sh --test-name=NAME --log-file=PATH --trs-file=PATH
+                [--expect-failure={yes|no}] [--color-tests={yes|no}]
+                [--enable-hard-errors={yes|no}] [--ignore-exit]
+                [--diagnostic-string=STRING] [--merge|--no-merge]
+                [--comments|--no-comments] [--] TEST-COMMAND
+The \`--test-name', \`--log-file' and \`--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the result and output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=0
+color_tests=0
+merge=0
+ignore_exit=0
+comments=0
+diag_string='#'
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "$me $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) shift;; # No-op.
+  --merge) merge=1;;
+  --no-merge) merge=0;;
+  --ignore-exit) ignore_exit=1;;
+  --comments) comments=1;;
+  --no-comments) comments=0;;
+  --diagnostic-string) diag_string=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+test $# -gt 0 || usage_error "missing test command"
+
+case $expect_failure in
+  yes) expect_failure=1;;
+    *) expect_failure=0;;
+esac
+
+if test $color_tests = yes; then
+  init_colors='
+    color_map["red"]="\e[0;31m" # Red.
+    color_map["grn"]="\e[0;32m" # Green.
+    color_map["lgn"]="\e[1;32m" # Light green.
+    color_map["blu"]="\e[1;34m" # Blue.
+    color_map["mgn"]="\e[0;35m" # Magenta.
+    color_map["std"]="\e[m"     # No color.
+    color_for_result["ERROR"] = "mgn"
+    color_for_result["PASS"]  = "grn"
+    color_for_result["XPASS"] = "red"
+    color_for_result["FAIL"]  = "red"
+    color_for_result["XFAIL"] = "lgn"
+    color_for_result["SKIP"]  = "blu"'
+else
+  init_colors=''
+fi
+
+# :; is there to work around a bug in bash 3.2 (and earlier) which
+# does not always set '$?' properly on redirection failure.
+# See the Autoconf manual for more details.
+:;{
+  (
+    # Ignore common signals (in this subshell only!), to avoid potential
+    # problems with Korn shells.  Some Korn shells are known to propagate
+    # to themselves signals that have killed a child process they were
+    # waiting for; this is done at least for SIGINT (and usually only for
+    # it, in truth).  Without the `trap' below, such a behaviour could
+    # cause a premature exit in the current subshell, e.g., in case the
+    # test command it runs gets terminated by a SIGINT.  Thus, the awk
+    # script we are piping into would never seen the exit status it
+    # expects on its last input line (which is displayed below by the
+    # last `echo $?' statement), and would thus die reporting an internal
+    # error.
+    # For more information, see the Autoconf manual and the threads:
+    # <http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html>
+    # <http://mail.opensolaris.org/pipermail/ksh93-integration-discuss/2009-February/004121.html>
+    trap : 1 3 2 13 15
+    if test $merge -gt 0; then
+      exec 2>&1
+    else
+      exec 2>&3
+    fi
+    "$@"
+    echo $?
+  ) | LC_ALL=C ${AM_TAP_AWK-awk} \
+        -v me="$me" \
+        -v test_script_name="$test_name" \
+        -v log_file="$log_file" \
+        -v trs_file="$trs_file" \
+        -v expect_failure="$expect_failure" \
+        -v merge="$merge" \
+        -v ignore_exit="$ignore_exit" \
+        -v comments="$comments" \
+        -v diag_string="$diag_string" \
+'
+# FIXME: the usages of "cat >&3" below could be optimized when using
+# FIXME: GNU awk, and/on on systems that supports /dev/fd/.
+
+# Implementation note: in what follows, `result_obj` will be an
+# associative array that (partly) simulates a TAP result object
+# from the `TAP::Parser` perl module.
+
+## ----------- ##
+##  FUNCTIONS  ##
+## ----------- ##
+
+function fatal(msg)
+{
+  print me ": " msg | "cat >&2"
+  exit 1
+}
+
+function abort(where)
+{
+  fatal("internal error " where)
+}
+
+# Convert a boolean to a "yes"/"no" string.
+function yn(bool)
+{
+  return bool ? "yes" : "no";
+}
+
+function add_test_result(result)
+{
+  if (!test_results_index)
+    test_results_index = 0
+  test_results_list[test_results_index] = result
+  test_results_index += 1
+  test_results_seen[result] = 1;
+}
+
+# Whether the test script should be re-run by "make recheck".
+function must_recheck()
+{
+  for (k in test_results_seen)
+    if (k != "XFAIL" && k != "PASS" && k != "SKIP")
+      return 1
+  return 0
+}
+
+# Whether the content of the log file associated to this test should
+# be copied into the "global" test-suite.log.
+function copy_in_global_log()
+{
+  for (k in test_results_seen)
+    if (k != "PASS")
+      return 1
+  return 0
+}
+
+# FIXME: this can certainly be improved ...
+function get_global_test_result()
+{
+    if ("ERROR" in test_results_seen)
+      return "ERROR"
+    if ("FAIL" in test_results_seen || "XPASS" in test_results_seen)
+      return "FAIL"
+    all_skipped = 1
+    for (k in test_results_seen)
+      if (k != "SKIP")
+        all_skipped = 0
+    if (all_skipped)
+      return "SKIP"
+    return "PASS";
+}
+
+function stringify_result_obj(result_obj)
+{
+  if (result_obj["is_unplanned"] || result_obj["number"] != testno)
+    return "ERROR"
+
+  if (plan_seen == LATE_PLAN)
+    return "ERROR"
+
+  if (result_obj["directive"] == "TODO")
+    return result_obj["is_ok"] ? "XPASS" : "XFAIL"
+
+  if (result_obj["directive"] == "SKIP")
+    return result_obj["is_ok"] ? "SKIP" : COOKED_FAIL;
+
+  if (length(result_obj["directive"]))
+      abort("in function stringify_result_obj()")
+
+  return result_obj["is_ok"] ? COOKED_PASS : COOKED_FAIL
+}
+
+function decorate_result(result)
+{
+  color_name = color_for_result[result]
+  if (color_name)
+    return color_map[color_name] "" result "" color_map["std"]
+  # If we are not using colorized output, or if we do not know how
+  # to colorize the given result, we should return it unchanged.
+  return result
+}
+
+function report(result, details)
+{
+  if (result ~ /^(X?(PASS|FAIL)|SKIP|ERROR)/)
+    {
+      msg = ": " test_script_name
+      add_test_result(result)
+    }
+  else if (result == "#")
+    {
+      msg = " " test_script_name ":"
+    }
+  else
+    {
+      abort("in function report()")
+    }
+  if (length(details))
+    msg = msg " " details
+  # Output on console might be colorized.
+  print decorate_result(result) msg
+  # Log the result in the log file too, to help debugging (this is
+  # especially true when said result is a TAP error or "Bail out!").
+  print result msg | "cat >&3";
+}
+
+function testsuite_error(error_message)
+{
+  report("ERROR", "- " error_message)
+}
+
+function handle_tap_result()
+{
+  details = result_obj["number"];
+  if (length(result_obj["description"]))
+    details = details " " result_obj["description"]
+
+  if (plan_seen == LATE_PLAN)
+    {
+      details = details " # AFTER LATE PLAN";
+    }
+  else if (result_obj["is_unplanned"])
+    {
+       details = details " # UNPLANNED";
+    }
+  else if (result_obj["number"] != testno)
+    {
+       details = sprintf("%s # OUT-OF-ORDER (expecting %d)",
+                         details, testno);
+    }
+  else if (result_obj["directive"])
+    {
+      details = details " # " result_obj["directive"];
+      if (length(result_obj["explanation"]))
+        details = details " " result_obj["explanation"]
+    }
+
+  report(stringify_result_obj(result_obj), details)
+}
+
+# `skip_reason` should be empty whenever planned > 0.
+function handle_tap_plan(planned, skip_reason)
+{
+  planned += 0 # Avoid getting confused if, say, `planned` is "00"
+  if (length(skip_reason) && planned > 0)
+    abort("in function handle_tap_plan()")
+  if (plan_seen)
+    {
+      # Error, only one plan per stream is acceptable.
+      testsuite_error("multiple test plans")
+      return;
+    }
+  planned_tests = planned
+  # The TAP plan can come before or after *all* the TAP results; we speak
+  # respectively of an "early" or a "late" plan.  If we see the plan line
+  # after at least one TAP result has been seen, assume we have a late
+  # plan; in this case, any further test result seen after the plan will
+  # be flagged as an error.
+  plan_seen = (testno >= 1 ? LATE_PLAN : EARLY_PLAN)
+  # If testno > 0, we have an error ("too many tests run") that will be
+  # automatically dealt with later, so do not worry about it here.  If
+  # $plan_seen is true, we have an error due to a repeated plan, and that
+  # has already been dealt with above.  Otherwise, we have a valid "plan
+  # with SKIP" specification, and should report it as a particular kind
+  # of SKIP result.
+  if (planned == 0 && testno == 0)
+    {
+      if (length(skip_reason))
+        skip_reason = "- "  skip_reason;
+      report("SKIP", skip_reason);
+    }
+}
+
+function extract_tap_comment(line)
+{
+  if (index(line, diag_string) == 1)
+    {
+      # Strip leading `diag_string` from `line`.
+      line = substr(line, length(diag_string) + 1)
+      # And strip any leading and trailing whitespace left.
+      sub("^[ \t]*", "", line)
+      sub("[ \t]*$", "", line)
+      # Return what is left (if any).
+      return line;
+    }
+  return "";
+}
+
+# When this function is called, we know that line is a TAP result line,
+# so that it matches the (perl) RE "^(not )?ok\b".
+function setup_result_obj(line)
+{
+  # Get the result, and remove it from the line.
+  result_obj["is_ok"] = (substr(line, 1, 2) == "ok" ? 1 : 0)
+  sub("^(not )?ok[ \t]*", "", line)
+
+  # If the result has an explicit number, get it and strip it; otherwise,
+  # automatically assing the next progresive number to it.
+  if (line ~ /^[0-9]+$/ || line ~ /^[0-9]+[^a-zA-Z0-9_]/)
+    {
+      match(line, "^[0-9]+")
+      # The final `+ 0` is to normalize numbers with leading zeros.
+      result_obj["number"] = substr(line, 1, RLENGTH) + 0
+      line = substr(line, RLENGTH + 1)
+    }
+  else
+    {
+      result_obj["number"] = testno
+    }
+
+  if (plan_seen == LATE_PLAN)
+    # No further test results are acceptable after a "late" TAP plan
+    # has been seen.
+    result_obj["is_unplanned"] = 1
+  else if (plan_seen && testno > planned_tests)
+    result_obj["is_unplanned"] = 1
+  else
+    result_obj["is_unplanned"] = 0
+
+  # Strip trailing and leading whitespace.
+  sub("^[ \t]*", "", line)
+  sub("[ \t]*$", "", line)
+
+  # This will have to be corrected if we have a "TODO"/"SKIP" directive.
+  result_obj["description"] = line
+  result_obj["directive"] = ""
+  result_obj["explanation"] = ""
+
+  if (index(line, "#") == 0)
+    return # No possible directive, nothing more to do.
+
+  # Directives are case-insensitive.
+  rx = "[ \t]*#[ \t]*([tT][oO][dD][oO]|[sS][kK][iI][pP])[ \t]*"
+
+  # See whether we have the directive, and if yes, where.
+  pos = match(line, rx "$")
+  if (!pos)
+    pos = match(line, rx "[^a-zA-Z0-9_]")
+
+  # If there was no TAP directive, we have nothing more to do.
+  if (!pos)
+    return
+
+  # Let`s now see if the TAP directive has been escaped.  For example:
+  #  escaped:     ok \# SKIP
+  #  not escaped: ok \\# SKIP
+  #  escaped:     ok \\\\\# SKIP
+  #  not escaped: ok \ # SKIP
+  if (substr(line, pos, 1) == "#")
+    {
+      bslash_count = 0
+      for (i = pos; i > 1 && substr(line, i - 1, 1) == "\\"; i--)
+        bslash_count += 1
+      if (bslash_count % 2)
+        return # Directive was escaped.
+    }
+
+  # Strip the directive and its explanation (if any) from the test
+  # description.
+  result_obj["description"] = substr(line, 1, pos - 1)
+  # Now remove the test description from the line, that has been dealt
+  # with already.
+  line = substr(line, pos)
+  # Strip the directive, and save its value (normalized to upper case).
+  sub("^[ \t]*#[ \t]*", "", line)
+  result_obj["directive"] = toupper(substr(line, 1, 4))
+  line = substr(line, 5)
+  # Now get the explanation for the directive (if any), with leading
+  # and trailing whitespace removed.
+  sub("^[ \t]*", "", line)
+  sub("[ \t]*$", "", line)
+  result_obj["explanation"] = line
+}
+
+function get_test_exit_message(status)
+{
+  if (status == 0)
+    return ""
+  if (status !~ /^[1-9][0-9]*$/)
+    abort("getting exit status")
+  if (status < 127)
+    exit_details = ""
+  else if (status == 127)
+    exit_details = " (command not found?)"
+  else if (status >= 128 && status <= 255)
+    exit_details = sprintf(" (terminated by signal %d?)", status - 128)
+  else if (status > 256 && status <= 384)
+    # We used to report an "abnormal termination" here, but some Korn
+    # shells, when a child process die due to signal number n, can leave
+    # in $? an exit status of 256+n instead of the more standard 128+n.
+    # Apparently, both behaviours are allowed by POSIX (2008), so be
+    # prepared to handle them both.  See also Austing Group report ID
+    # 0000051 <http://www.austingroupbugs.net/view.php?id=51>
+    exit_details = sprintf(" (terminated by signal %d?)", status - 256)
+  else
+    # Never seen in practice.
+    exit_details = " (abnormal termination)"
+  return sprintf("exited with status %d%s", status, exit_details)
+}
+
+function write_test_results()
+{
+  print ":global-test-result: " get_global_test_result() > trs_file
+  print ":recheck: "  yn(must_recheck()) > trs_file
+  print ":copy-in-global-log: " yn(copy_in_global_log()) > trs_file
+  for (i = 0; i < test_results_index; i += 1)
+    print ":test-result: " test_results_list[i] > trs_file
+  close(trs_file);
+}
+
+BEGIN {
+
+## ------- ##
+##  SETUP  ##
+## ------- ##
+
+'"$init_colors"'
+
+# Properly initialized once the TAP plan is seen.
+planned_tests = 0
+
+COOKED_PASS = expect_failure ? "XPASS": "PASS";
+COOKED_FAIL = expect_failure ? "XFAIL": "FAIL";
+
+# Enumeration-like constants to remember which kind of plan (if any)
+# has been seen.  It is important that NO_PLAN evaluates "false" as
+# a boolean.
+NO_PLAN = 0
+EARLY_PLAN = 1
+LATE_PLAN = 2
+
+testno = 0     # Number of test results seen so far.
+bailed_out = 0 # Whether a "Bail out!" directive has been seen.
+
+# Whether the TAP plan has been seen or not, and if yes, which kind
+# it is ("early" is seen before any test result, "late" otherwise).
+plan_seen = NO_PLAN
+
+## --------- ##
+##  PARSING  ##
+## --------- ##
+
+is_first_read = 1
+
+while (1)
+  {
+    # Involutions required so that we are able to read the exit status
+    # from the last input line.
+    st = getline
+    if (st < 0) # I/O error.
+      fatal("I/O error while reading from input stream")
+    else if (st == 0) # End-of-input
+      {
+        if (is_first_read)
+          abort("in input loop: only one input line")
+        break
+      }
+    if (is_first_read)
+      {
+        is_first_read = 0
+        nextline = $0
+        continue
+      }
+    else
+      {
+        curline = nextline
+        nextline = $0
+        $0 = curline
+      }
+    # Copy any input line verbatim into the log file.
+    print | "cat >&3"
+    # Parsing of TAP input should stop after a "Bail out!" directive.
+    if (bailed_out)
+      continue
+
+    # TAP test result.
+    if ($0 ~ /^(not )?ok$/ || $0 ~ /^(not )?ok[^a-zA-Z0-9_]/)
+      {
+        testno += 1
+        setup_result_obj($0)
+        handle_tap_result()
+      }
+    # TAP plan (normal or "SKIP" without explanation).
+    else if ($0 ~ /^1\.\.[0-9]+[ \t]*$/)
+      {
+        # The next two lines will put the number of planned tests in $0.
+        sub("^1\\.\\.", "")
+        sub("[^0-9]*$", "")
+        handle_tap_plan($0, "")
+        continue
+      }
+    # TAP "SKIP" plan, with an explanation.
+    else if ($0 ~ /^1\.\.0+[ \t]*#/)
+      {
+        # The next lines will put the skip explanation in $0, stripping
+        # any leading and trailing whitespace.  This is a little more
+        # tricky in truth, since we want to also strip a potential leading
+        # "SKIP" string from the message.
+        sub("^[^#]*#[ \t]*(SKIP[: \t][ \t]*)?", "")
+        sub("[ \t]*$", "");
+        handle_tap_plan(0, $0)
+      }
+    # "Bail out!" magic.
+    # Older versions of prove and TAP::Harness (e.g., 3.17) did not
+    # recognize a "Bail out!" directive when preceded by leading
+    # whitespace, but more modern versions (e.g., 3.23) do.  So we
+    # emulate the latter, "more modern" behaviour.
+    else if ($0 ~ /^[ \t]*Bail out!/)
+      {
+        bailed_out = 1
+        # Get the bailout message (if any), with leading and trailing
+        # whitespace stripped.  The message remains stored in `$0`.
+        sub("^[ \t]*Bail out![ \t]*", "");
+        sub("[ \t]*$", "");
+        # Format the error message for the
+        bailout_message = "Bail out!"
+        if (length($0))
+          bailout_message = bailout_message " " $0
+        testsuite_error(bailout_message)
+      }
+    # Maybe we have too look for dianogtic comments too.
+    else if (comments != 0)
+      {
+        comment = extract_tap_comment($0);
+        if (length(comment))
+          report("#", comment);
+      }
+  }
+
+## -------- ##
+##  FINISH  ##
+## -------- ##
+
+# A "Bail out!" directive should cause us to ignore any following TAP
+# error, as well as a non-zero exit status from the TAP producer.
+if (!bailed_out)
+  {
+    if (!plan_seen)
+      {
+        testsuite_error("missing test plan")
+      }
+    else if (planned_tests != testno)
+      {
+        bad_amount = testno > planned_tests ? "many" : "few"
+        testsuite_error(sprintf("too %s tests run (expected %d, got %d)",
+                                bad_amount, planned_tests, testno))
+      }
+    if (!ignore_exit)
+      {
+        # Fetch exit status from the last line.
+        exit_message = get_test_exit_message(nextline)
+        if (exit_message)
+          testsuite_error(exit_message)
+      }
+  }
+
+write_test_results()
+
+exit 0
+
+} # End of "BEGIN" block.
+'
+
+# TODO: document that we consume the file descriptor 3 :-(
+} 3>"$log_file"
+
+test $? -eq 0 || fatal "I/O or internal error"
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/test-driver b/lib/test-driver
new file mode 100755 (executable)
index 0000000..2398a06
--- /dev/null
@@ -0,0 +1,127 @@
+#! /bin/sh
+# test-driver - basic driver script for the `parallel-tests' mode.
+
+scriptversion=2011-08-17.14; # UTC
+
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The \`--test-name', \`--log-file' and \`--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+if test $color_tests = yes; then
+  # Keep this in sync with `lib/am/check.am:$(am__tty_colors)'.
+  red='\e[0;31m' # Red.
+  grn='\e[0;32m' # Green.
+  lgn='\e[1;32m' # Light green.
+  blu='\e[1;34m' # Blue.
+  mgn='\e[0;35m' # Magenta.
+  std='\e[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/lib/texinfo.tex b/lib/texinfo.tex
new file mode 100644 (file)
index 0000000..e4dca02
--- /dev/null
@@ -0,0 +1,10011 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+% 
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2012-04-06.11}
+%
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+%
+% This texinfo.tex file 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 of the
+% License, or (at your option) any later version.
+%
+% This texinfo.tex file 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/>.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction.  (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+%   ftp://tug.org/tex/texinfo.tex
+%     (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org.  Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem.  Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution.  For a simple
+% manual foo.texi, however, you can get away with this:
+%   tex foo.texi
+%   texindex foo.??
+%   tex foo.texi
+%   tex foo.texi
+%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent.  You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+  \catcode`+=\active \catcode`\_=\active}
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexraggedright=\raggedright
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
+\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\ampChar   = `\&
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\hashChar  = `\#
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\slashChar = `\/
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt }
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal.  We don't just call \tracingall here,
+% since that produces some useless output on the terminal.  We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+  \tracingstats2
+  \tracingpages1
+  \tracinglostchars2  % 2 gives us more in etex
+  \tracingparagraphs1
+  \tracingoutput1
+  \tracingmacros2
+  \tracingrestores1
+  \showboxbreadth\maxdimen \showboxdepth\maxdimen
+  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
+    \tracingscantokens1
+    \tracingifs1
+    \tracinggroups1
+    \tracingnesting2
+    \tracingassigns1
+  \fi
+  \tracingcommands3  % 3 gives us more in etex
+  \errorcontextlines16
+}%
+
+% @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+% 
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
+% add check for \lastpenalty to plain's definitions.  If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+  \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+  \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+  \removelastskip\penalty-200\bigskip\fi\fi}
+
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong  \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page.  The solution is
+% described on page 260 of The TeXbook.  It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after.  I won't pretend I can describe this better than DEK...
+\def\domark{%
+  \toks0=\expandafter{\lastchapterdefs}%
+  \toks2=\expandafter{\lastsectiondefs}%
+  \toks4=\expandafter{\prevchapterdefs}%
+  \toks6=\expandafter{\prevsectiondefs}%
+  \toks8=\expandafter{\lastcolordefs}%
+  \mark{%
+                   \the\toks0 \the\toks2
+      \noexpand\or \the\toks4 \the\toks6
+    \noexpand\else \the\toks8
+  }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+  \ifcase0\topmark\fi
+  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument.  Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+  %
+  \ifodd\pageno  \advance\hoffset by \bindingoffset
+  \else \advance\hoffset by -\bindingoffset\fi
+  %
+  % Do this outside of the \shipout so @code etc. will be expanded in
+  % the headline as they should be, not taken literally (outputting ''code).
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  %
+  {%
+    % Have to do this stuff outside the \shipout because we want it to
+    % take effect in \write's, yet the group defined by the \vbox ends
+    % before the \shipout runs.
+    %
+    \indexdummies         % don't expand commands in the output.
+    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
+               % the page break happens to be in the middle of an example.
+               % We don't want .vr (or whatever) entries like this:
+               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % "\acronym" won't work when it's read back in;
+               % it needs to be
+               % {\code {{\tt \backslashcurfont }acronym}
+    \shipout\vbox{%
+      % Do this early so pdf references go to the beginning of the page.
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+      %
+      \ifcropmarks \vbox to \outervsize\bgroup
+        \hsize = \outerhsize
+        \vskip-\topandbottommargin
+        \vtop to0pt{%
+          \line{\ewtop\hfil\ewtop}%
+          \nointerlineskip
+          \line{%
+            \vbox{\moveleft\cornerthick\nstop}%
+            \hfill
+            \vbox{\moveright\cornerthick\nstop}%
+          }%
+          \vss}%
+        \vskip\topandbottommargin
+        \line\bgroup
+          \hfil % center the page within the outer (page) hsize.
+          \ifodd\pageno\hskip\bindingoffset\fi
+          \vbox\bgroup
+      \fi
+      %
+      \unvbox\headlinebox
+      \pagebody{#1}%
+      \ifdim\ht\footlinebox > 0pt
+        % Only leave this space if the footline is nonempty.
+        % (We lessened \vsize for it in \oddfootingyyy.)
+        % The \baselineskip=24pt in plain's \makefootline has no effect.
+        \vskip 24pt
+        \unvbox\footlinebox
+      \fi
+      %
+      \ifcropmarks
+          \egroup % end of \vbox\bgroup
+        \hfil\egroup % end of (centering) \line\bgroup
+        \vskip\topandbottommargin plus1fill minus1fill
+        \boxmaxdepth = \cornerthick
+        \vbox to0pt{\vss
+          \line{%
+            \vbox{\moveleft\cornerthick\nsbot}%
+            \hfill
+            \vbox{\moveright\cornerthick\nsbot}%
+          }%
+          \nointerlineskip
+          \line{\ewbot\hfil\ewbot}%
+        }%
+      \egroup % \vbox from first cropmarks clause
+      \fi
+    }% end of \shipout\vbox
+  }% end of group with \indexdummies
+  \advancepageno
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1\relax \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks.  Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.  The argument is the rest of
+% the input line (except we remove a trailing comment).  #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\argtorun{#2}%
+  \begingroup
+    \obeylines
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+  \gdef\parseargline#1^^M{%
+    \endgroup % End of the group started in \parsearg.
+    \argremovecomment #1\comment\ArgTerm%
+  }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+%    @end itemize  @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%      is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+  \obeyspaces
+  \gdef\obeyedspace{ }
+
+  % Make each space character in the input produce a normal interword
+  % space in the output.  Don't allow a line break at this space, as this
+  % is used only in environments like @example, where each line of input
+  % should produce a line of output anyway.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % If an index command is used in an @example environment, any spaces
+  % therein should become regular spaces in the raw index file, not the
+  % expansion of \tie (\leavevmode \penalty \@M \ ).
+  \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as environments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At run-time, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
+  \else
+    \badenverr
+  \fi
+}
+
+% Environment mismatch, #1 expected:
+\def\badenverr{%
+  \errhelp = \EMsimple
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    outside of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal.
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
+  \fi\fi
+}
+
+% @w prevents a word break.  Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line.  According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0).  If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large.  This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material.  In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom.  The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
+    \errhelp = \groupinvalidhelp
+    \errmessage{@group invalid in context where filling is enabled}%
+  \fi
+  \startsavinginserts
+  %
+  \setbox\groupbox = \vtop\bgroup
+    % Do @comment since we are called inside an environment such as
+    % @example, where each end-of-line in the input causes an
+    % end-of-line in the output.  We don't want the end-of-line after
+    % the `@group' to put extra space in the output.  Since @group
+    % should appear on a line by itself (according to the Texinfo
+    % manual), we don't worry about eating any user text.
+    \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil  \mil=0.001in
+
+\parseargdef\need{%
+  % Ensure vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % If the @need value is less than one line space, it's useless.
+  \dimen0 = #1\mil
+  \dimen2 = \ht\strutbox
+  \advance\dimen2 by \dp\strutbox
+  \ifdim\dimen0 > \dimen2
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\vfil}%
+    %
+    % TeX does not even consider page breaks if a penalty added to the
+    % main vertical list is 10000 or more.  But in order to see if the
+    % empty box we just added fits on the page, we must make it consider
+    % page breaks.  On the other hand, we don't want to actually break the
+    % page after the empty box.  So we use a penalty of 9999.
+    %
+    % There is an extremely small chance that TeX will actually break the
+    % page at this \penalty, if there are no other feasible breakpoints in
+    % sight.  (If the user is using lots of big @group commands, which
+    % almost-but-not-quite fill up a page, TeX will have a hard time doing
+    % good page breaking, for example.)  However, I could not construct an
+    % example where a page broke at this \penalty; if it happens in a real
+    % document, then we can reconsider our strategy.
+    \penalty9999
+    %
+    % Back up by the size of the box, whether we did a page break or not.
+    \kern -#1\mil
+    %
+    % Do not allow a page break right after this kern.
+    \nobreak
+  \fi
+}
+
+% @br   forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph.  For more general purposes, use the \margin insertion
+% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+  \nobreak
+  \kern-\strutdepth
+  \vtop to \strutdepth{%
+    \baselineskip=\strutdepth
+    \vss
+    % if you have multiple lines of stuff to put here, you'll need to
+    % make the vbox yourself of the appropriate size.
+    \ifx#1l%
+      \llap{\ignorespaces #2\hskip\inmarginspacing}%
+    \else
+      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+    \fi
+    \null
+  }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+  \setbox0 = \hbox{\ignorespaces #2}%
+  \ifdim\wd0 > 0pt
+    \def\lefttext{#1}%  have both texts
+    \def\righttext{#2}%
+  \else
+    \def\lefttext{#1}%  have only one text
+    \def\righttext{#1}%
+  \fi
+  %
+  \ifodd\pageno
+    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+  \else
+    \def\temp{\inleftmargin\lefttext}%
+  \fi
+  \temp
+}
+
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).  This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
+% @include FILE -- \input text of FILE.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable  % we want to expand any @value in FILE.
+    \turnoffactive        % and allow special characters in the expansion
+    \indexnofonts         % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @include of #1^^J}%
+    \edef\temp{\noexpand\input #1 }%
+    %
+    % This trickery is to read FILE outside of a group, in case it makes
+    % definitions, etc.
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
+  \catcode`\\=\other
+  \catcode`~=\other
+  \catcode`^=\other
+  \catcode`_=\other
+  \catcode`|=\other
+  \catcode`<=\other
+  \catcode`>=\other
+  \catcode`+=\other
+  \catcode`-=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
+%
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+  \ifhmode
+    \let\centersub\centerH
+  \else
+    \let\centersub\centerV
+  \fi
+  \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+  \let\centersub\relax % don't let the definition persist, just in case
+}
+\def\centerH#1{{%
+  \hfil\break
+  \advance\hsize by -\leftskip
+  \advance\hsize by -\rightskip
+  \line{#1}%
+  \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+  % The idea here is the same as in \startdefun, \cartouche, etc.: if
+  % @center is the first thing after a section heading, we need to wipe
+  % out the negative parskip inserted by \sectionheading, but still
+  % prevent a page break here.
+  \centerpenalty = \lastpenalty
+  \ifnum\centerpenalty>10000 \vskip\parskip \fi
+  \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+  \line{\kern\leftskip #1\kern\rightskip}%
+}
+
+% @sp n   outputs n lines of vertical space
+%
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore  is another way to write a comment
+%
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+%
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \defaultparindent = 0pt
+    \else
+      \defaultparindent = #1em
+    \fi
+  \fi
+  \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \lispnarrowing = 0pt
+    \else
+      \lispnarrowing = #1em
+    \fi
+  \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading.  If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\noneword
+    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+  \else\ifx\temp\insertword
+    \let\suppressfirstparagraphindent = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @firstparagraphindent option `\temp'}%
+  \fi\fi
+}
+
+% Here is how we actually suppress indentation.  Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+  \gdef\indent{%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
+  }%
+  \global\everypar = {%
+    \kern -\parindent
+    \restorefirstparagraphindent
+  }%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
+
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \iflinks
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
+   \fi % \openindices needs to do some work in any case.
+   \openindices
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
+   %
+   % If texinfo.cnf is present on the system, read it.
+   % Useful for site-wide @afourpaper, etc.
+   \openin 1 texinfo.cnf
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
+   %
+   \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+  \newindex{cp}%
+  \newcodeindex{fn}%
+  \newcodeindex{vr}%
+  \newcodeindex{tp}%
+  \newcodeindex{ky}%
+  \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
+\else
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% 
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages.  The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do.  pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+  \ifx\pdfescapestring\relax
+    % No primitive available; should we give a warning or log?
+    % Many times it won't matter.
+  \else
+    % The expandable \pdfescapestring primitive escapes parentheses,
+    % backslashes, and other special chars.
+    \xdef#1{\pdfescapestring{#1}}%
+  \fi
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found.  (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+  %
+  % Color manipulation macros based on pdfcolor.tex,
+  % except using rgb instead of cmyk; the latter is said to render as a
+  % very dark gray on-screen and a very dark halftone in print, instead
+  % of actual black.
+  \def\rgbDarkRed{0.50 0.09 0.12}
+  \def\rgbBlack{0 0 0}
+  %
+  % k sets the color for filling (usual text, etc.);
+  % K sets the color for stroking (thin rules, e.g., normal _'s).
+  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
+  %
+  % Set color, and create a mark which defines \thiscolor accordingly,
+  % so that \makeheadline knows which color to restore.
+  \def\setcolor#1{%
+    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+    \domark
+    \pdfsetcolor{#1}%
+  }
+  %
+  \def\maincolor{\rgbBlack}
+  \pdfsetcolor{\maincolor}
+  \edef\thiscolor{\maincolor}
+  \def\lastcolordefs{}
+  %
+  \def\makefootline{%
+    \baselineskip24pt
+    \line{\pdfsetcolor{\maincolor}\the\footline}%
+  }
+  %
+  \def\makeheadline{%
+    \vbox to 0pt{%
+      \vskip-22.5pt
+      \line{%
+        \vbox to8.5pt{}%
+        % Extract \thiscolor definition from the marks.
+        \getcolormarks
+        % Typeset the headline with \maincolor, then restore the color.
+        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+      }%
+      \vss
+    }%
+    \nointerlineskip
+  }
+  %
+  %
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+  \def\dopdfimage#1#2#3{%
+    \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    %
+    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+    % others).  Let's try in that order, PDF first since if
+    % someone has a scalable image, presumably better to use that than a
+    % bitmap.
+    \let\pdfimgext=\empty
+    \begingroup
+      \openin 1 #1.pdf \ifeof 1
+        \openin 1 #1.PDF \ifeof 1
+          \openin 1 #1.png \ifeof 1
+            \openin 1 #1.jpg \ifeof 1
+              \openin 1 #1.jpeg \ifeof 1
+                \openin 1 #1.JPG \ifeof 1
+                  \errhelp = \nopdfimagehelp
+                  \errmessage{Could not find image file #1 for pdf}%
+                \else \gdef\pdfimgext{JPG}%
+                \fi
+              \else \gdef\pdfimgext{jpeg}%
+              \fi
+            \else \gdef\pdfimgext{jpg}%
+            \fi
+          \else \gdef\pdfimgext{png}%
+          \fi
+        \else \gdef\pdfimgext{PDF}%
+        \fi
+      \else \gdef\pdfimgext{pdf}%
+      \fi
+      \closein 1
+    \endgroup
+    %
+    % without \immediate, ancient pdftex seg faults when the same image is
+    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+    \ifnum\pdftexversion < 14
+      \immediate\pdfimage
+    \else
+      \immediate\pdfximage
+    \fi
+      \ifdim \wd0 >0pt width \pdfimagewidth \fi
+      \ifdim \wd2 >0pt height \pdfimageheight \fi
+      \ifnum\pdftexversion<13
+         #1.\pdfimgext
+       \else
+         {#1.\pdfimgext}%
+       \fi
+    \ifnum\pdftexversion < 14 \else
+      \pdfrefximage \pdflastximage
+    \fi}
+  %
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
+    \indexnofonts
+    \turnoffactive
+    \makevalueexpandable
+    \def\pdfdestname{#1}%
+    \txiescapepdf\pdfdestname
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}
+  %
+  % by default, use a color that is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.
+  \def\urlcolor{\rgbDarkRed}
+  \def\linkcolor{\rgbDarkRed}
+  \def\endlink{\setcolor{\maincolor}\pdfendlink}
+  %
+  % Adding outlines to PDF; macros for calculating structure of outlines
+  % come from Petr Olsak
+  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+    \else \csname#1\endcsname \fi}
+  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+    \advance\tempnum by 1
+    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+  %
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worth the trouble, since most documents are normally structured.
+    \edef\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      \txiescapepdf\pdfoutlinedest
+    \fi
+    %
+    % Also escape PDF chars in the display string.
+    \edef\pdfoutlinetext{#1}%
+    \txiescapepdf\pdfoutlinetext
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\partentry##1##2##3##4{}% ignore parts in the outlines
+      \def\numchapentry##1##2##3##4{%
+       \def\thischapnum{##2}%
+       \def\thissecnum{0}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+       \advancenumber{chap\thischapnum}%
+       \def\thissecnum{##2}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+       \advancenumber{sec\thissecnum}%
+       \def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+       \advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
+      \readdatafile{toc}%
+      %
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
+      %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % TODO this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Too
+      % much work for too little return.  Just use the ASCII equivalents
+      % we use for the index sort strings.
+      % 
+      \indexnofonts
+      \setupdatafile
+      % We can have normal brace characters in the PDF outlines, unlike
+      % Texinfo index files.  So set that up.
+      \def\{{\lbracecharliteral}%
+      \def\}{\rbracecharliteral}%
+      \catcode`\\=\active \otherbackslash
+      \input \tocreadfilename
+    \endgroup
+  }
+  {\catcode`[=1 \catcode`]=2
+   \catcode`{=\other \catcode`}=\other
+   \gdef\lbracecharliteral[{]%
+   \gdef\rbracecharliteral[}]%
+  ]
+  %
+  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+    \ifx\PP\D\let\nextsp\relax
+    \else\let\nextsp\skipspaces
+      \ifx\p\space\else\addtokens{\filename}{\PP}%
+        \advance\filenamelength by 1
+      \fi
+    \fi
+    \nextsp}
+  \def\getfilename#1{%
+    \filenamelength=0
+    % If we don't expand the argument now, \skipspaces will get
+    % snagged on things like "@value{foo}".
+    \edef\temp{#1}%
+    \expandafter\skipspaces\temp|\relax
+  }
+  \ifnum\pdftexversion < 14
+    \let \startlink \pdfannotlink
+  \else
+    \let \startlink \pdfstartlink
+  \fi
+  % make a live url in pdf output.
+  \def\pdfurl#1{%
+    \begingroup
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      %
+      \normalturnoffactive
+      \def\@{@}%
+      \let\/=\empty
+      \makevalueexpandable
+      % do we want to go so far as to use \indexnofonts instead of just
+      % special-casing \var here?
+      \def\var##1{##1}%
+      %
+      \leavevmode\setcolor{\urlcolor}%
+      \startlink attr{/Border [0 0 0]}%
+        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+    \endgroup}
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdflink#1{%
+    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+    \setcolor{\linkcolor}#1\endlink}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+  % non-pdf mode
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\setcolor = \gobble
+  \let\pdfsetcolor = \gobble
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold.  Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading  \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly.  There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\def\setleading#1{%
+  \dimen0 = #1\relax
+  \normalbaselineskip = \baselinefactor\dimen0
+  \normallineskip = \lineskipfactor\normalbaselineskip
+  \normalbaselines
+  \setbox\strutbox =\hbox{%
+    \vrule width0pt height\strutheightpercent\baselineskip
+                    depth \strutdepthpercent \baselineskip
+  }%
+}
+
+% PDF CMaps.  See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\thisisundefined \else
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1IT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1TT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+  \font#1=\fontprefix#2#3 scaled #4
+  \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\thisisundefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx}               %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt.  This is the default in
+% Texinfo.
+%
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts            % reset the current fonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit.  This is for the GNU
+% Press printing of the Emacs 22 manual.  Maybe other manuals in the
+% future.  Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+\divide\parskip by 2  % reduce space between paragraphs
+\textleading = 12pt   % line spacing for 10pt CM
+\textfonts            % reset the current fonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+%   @fonttextsize 10
+% (or 11) to redefine the text font size.  pt is assumed.
+%
+\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
+%
+\parseargdef\fonttextsize{%
+  \def\textsizearg{#1}%
+  %\wlog{doing @fonttextsize \textsizearg}%
+  %
+  % Set \globaldefs so that documents can use this inside @tex, since
+  % makeinfo 4.8 does not support it, but we need it nonetheless.
+  %
+ \begingroup \globaldefs=1
+  \ifx\textsizearg\xword \definetextfontsizex
+  \else \ifx\textsizearg\xiword \definetextfontsizexi
+  \else
+    \errhelp=\EMsimple
+    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+  \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+  \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE.  We do this because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+  \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
+  \resetmathfonts \setleading{27pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
+\def\chapfonts{%
+  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
+  \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
+  \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+  \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+  \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{9.5pt}}
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+%   8.5x11=86   smallbook=72  a4=90  a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+%   8.5x11=90+  smallbook=80  a4=90+  a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt.  So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+%   8.5x11=71  smallbook=60  a4=75  a5=58
+% --karl, 24jan03.
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+  \csname markup#1true\endcsname
+  \def\currentmarkupstyle{#1}%
+  \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+  \expandafter\def\expandafter\markupstylesetup
+    \expandafter{\markupstylesetup #1}%
+  \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+  \expandafter\let\expandafter \temp
+    \csname markupsetuplq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+  \expandafter\let\expandafter \temp
+    \csname markupsetuprq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+
+\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+%
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+%
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
+
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report.  xpdf does work with the regular 0x27.
+%
+\def\codequoteright{%
+  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+      '%
+    \else \char'15 \fi
+  \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+      % [Knuth] pp. 380,381,391
+      % \relax disables Spanish ligatures ?` and !` of \tt font.
+      \relax`%
+    \else \char'22 \fi
+  \else \char'22 \fi
+}
+
+% Commands to set the quote options.
+% 
+\parseargdef\codequoteundirected{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+  \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+  \fi\fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Font commands.
+
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+  \ifusingtt 
+    {{\ttsl #2}\let\next=\relax}%
+    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+  \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
+
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+  \ifx\next,%
+  \else\ifx\next-%
+  \else\ifx\next.%
+  \else\ptexslash
+  \fi\fi\fi
+  \aftersmartic
+}
+
+% like \smartslanted except unconditionally uses \ttsl, and no ic.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}}
+
+% @cite is like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+
+\def\aftersmartic{}
+\def\var#1{%
+  \let\saveaftersmartic = \aftersmartic
+  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  \smartslanted{#1}%
+}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @b, explicit bold.  Also @strong.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph.  Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+  \def\plainfrenchspacing{%
+    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
+  }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+% @t, explicit typewriter.
+\def\t#1{%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
+  \null
+}
+
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+
+% definition of @key that produces a lozenge.  Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+%    \vbox{\hrule\kern-0.4pt
+%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+%    \kern-0.4pt\hrule}%
+%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge.  If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle.  But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+  \nohyphenation
+  \ifmonospace\else\tt\fi
+  #1}\null}
+
+% ctrl is no longer a Texinfo command.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+  {%
+    % Change normal interword space to be same as for the current font.
+    \spaceskip = \fontdimen2\font
+    %
+    % Switch to typewriter.
+    \tt
+    %
+    % But `\ ' produces the large typewriter interword space.
+    \def\ {{\spaceskip = 0pt{} }}%
+    %
+    % Turn off hyphenation.
+    \nohyphenation
+    %
+    \rawbackslash
+    \plainfrenchspacing
+    #1%
+  }%
+  \null % reset spacefactor to 1000
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+%  -- rms.
+{
+  \catcode`\-=\active \catcode`\_=\active
+  \catcode`\'=\active \catcode`\`=\active
+  \global\let'=\rq \global\let`=\lq  % default definitions
+  %
+  \global\def\code{\begingroup
+    \setupmarkupstyle{code}%
+    % The following should really be moved into \setupmarkupstyle handlers.
+    \catcode\dashChar=\active  \catcode\underChar=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\realdash
+     \let_\realunder
+    \fi
+    \codex
+  }
+}
+
+\def\codex #1{\tclose{#1}\endgroup}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
+  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+  % will therefore expand the active definition of _, which is us
+  % (inside @code that is), therefore an endless loop.
+  \ifusingtt{\ifmmode
+               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+             \else\normalunderscore \fi
+             \discretionary{}{}{}}%
+            {\_}%
+}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general.  @allowcodebreaks provides a way to control this.
+%
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
+  \fi\fi
+}
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself.  First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \code{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \urefcode{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+  \catcode\ampChar=\active   \catcode\dotChar=\active
+  \catcode\hashChar=\active  \catcode\questChar=\active
+  \catcode\slashChar=\active
+}
+{
+  \urefcatcodes
+  %
+  \global\def\urefcode{\begingroup
+    \setupmarkupstyle{code}%
+    \urefcatcodes
+    \let&\urefcodeamp
+    \let.\urefcodedot
+    \let#\urefcodehash
+    \let?\urefcodequest
+    \let/\urefcodeslash
+    \codex
+  }
+  %
+  % By default, they are just regular characters.
+  \global\def&{\normalamp}
+  \global\def.{\normaldot}
+  \global\def#{\normalhash}
+  \global\def?{\normalquest}
+  \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's.  The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+  \catcode`\/=\active
+  \global\def\urefcodeslashfinish{%
+    \urefprestretch \slashChar
+    % Allow line break only after the final / in a sequence of
+    % slashes, to avoid line break between the slashes in http://.
+    \ifx\next/\else \urefpoststretch \fi
+  }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that.  Also allow no breaking at all, for manual control.
+% 
+\parseargdef\urefbreakstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\wordnone
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordbefore
+    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordafter
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+  \def\email#1{\doemail#1,,\finish}
+  \def\doemail#1,#2,#3\finish{\begingroup
+    \unsepspaces
+    \pdfurl{mailto:#1}%
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+    \endlink
+  \endgroup}
+\else
+  \let\email=\uref
+\fi
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
+% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find.  We need it for
+% Polish suppressed-l.  --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+  \null % reset \spacefactor=1000
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+  \null % reset \spacefactor=1000
+}
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  % make the texinfo accent commands work in math mode
+  \let\"=\ddot
+  \let\'=\acute
+  \let\==\bar
+  \let\^=\hat
+  \let\`=\grave
+  \let\u=\breve
+  \let\v=\check
+  \let\~=\tilde
+  \let\dotaccent=\dot
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \catcode`' = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+    \let' = \ptexquoteright
+  }
+}
+
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+% 
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+  \def\inlinefmtname{#1}%
+  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely.  Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored.  But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too.  We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+% 
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+  \def\inlinerawname{#1}%
+  \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+  \endgroup % close group opened by \tex.
+}
+
+
+\message{glyphs,}
+% and logos.
+
+% @@ prints an @, as does @atchar{}.
+\def\@{\char64 }
+\let\atchar=\@
+
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% Unless we're in typewriter, use \ecfont because the CM text fonts do
+% not have braces, and we don't want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{%
+     \ifx\textnominalsize\xwordpt
+       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+       % Revert to plain's \scriptsize, which is 7pt.
+       \count255=\the\fam $\fam\count255 \scriptstyle A$%
+     \else
+       % For 11pt, we can use our lllsize.
+       \selectfonts\lllsize A%
+     \fi
+     }%
+     \vss
+  }}%
+  \kern-.15em
+  \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{%
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  %
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  %
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  %
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% Glyphs from the EC fonts.  We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases.  We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+  \def\temp{#1}%
+  \ifx\temp\macrocharA\Aogonek
+  \else\ifx\temp\macrochara\aogonek
+  \else\ifx\temp\macrocharE\Eogonek
+  \else\ifx\temp\macrochare\eogonek
+  \else
+    \ecfont \setbox0=\hbox{#1}%
+    \ifdim\ht0=1ex\accent"0C #1%
+    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+    \fi
+  \fi\fi\fi\fi
+  }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
+\def\ecfont{%
+  % We can't distinguish serif/sans and italic/slanted, but this
+  % is used for crude hacks anyway (like adding French and German
+  % quotes to documents typeset with CM, where we lose kerning), so
+  % hopefully nobody will notice/care.
+  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+  \else
+    % regular:
+    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+  \fi
+  \thisecfont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
+    }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+%
+\ifx\Orb\thisisundefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page.  Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{%
+  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+  \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % Most title ``pages'' are actually two pages long, with space
+    % at the top of the second.  We don't want the ragged left on the second.
+    \let\oldpage = \page
+    \def\page{%
+      \iffinishedtitlepage\else
+        \finishtitlepage
+      \fi
+      \let\page = \oldpage
+      \page
+      \null
+    }%
+}
+
+\def\Etitlepage{%
+    \iffinishedtitlepage\else
+       \finishtitlepage
+    \fi
+    % It is important to do the page break before ending the group,
+    % because the headline and footline are only empty inside the group.
+    % If we use the new definition of \page, we always get a blank page
+    % after the title page, which we certainly don't want.
+    \oldpage
+  \endgroup
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
+}
+
+\def\finishtitlepage{%
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \leftline{\titlefonts\rmisbold #1}
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\secfonts\rmisbold \leftline{#1}}%
+  \fi
+}
+
+
+% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline    % headline on even pages
+\newtoks\oddheadline     % headline on odd pages
+\newtoks\evenfootline    % footline on even pages
+\newtoks\oddfootline     % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+                            \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what  @headings on  does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+  %
+  % Leave some space for the footline.  Hopefully ok to assume
+  % @evenfooting will not be used by itself.
+  \global\advance\pageheight by -12pt
+  \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top     \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+                          \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+                          \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+  \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double      turns headings on for double-sided printing.
+% @headings single      turns headings on for single-sided printing.
+% @headings off         turns them off.
+% @headings on          same as @headings double, retained for compatibility.
+% @headings after       turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\headingsoff{% non-global headings elimination
+  \evenheadline={\hfil}\evenfootline={\hfil}%
+   \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff  % it's the default
+
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\thisisundefined
+\def\today{%
+  \number\day\space
+  \ifcase\month
+  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+  \fi
+  \space\number\year}
+\fi
+
+% @settitle line...  specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent  \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin  \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemindicate{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % If the item text does not fit in the space we have, put it on a line
+  % by itself, and do not allow a page break either before or after that
+  % line.  We do not start a paragraph here because then if the next
+  % command is, e.g., @kindex, the whatsit would get put into the
+  % horizontal list on a line by itself, resulting in extra blank space.
+  \ifdim \wd0>\itemmax
+    %
+    % Make this a paragraph so we get the \parskip glue and wrapping,
+    % but leave it ragged-right.
+    \begingroup
+      \advance\leftskip by-\tableindent
+      \advance\hsize by\tableindent
+      \advance\rightskip by0pt plus1fil\relax
+      \leavevmode\unhbox0\par
+    \endgroup
+    %
+    % We're going to be starting a paragraph, but we don't want the
+    % \parskip glue -- logically it's part of the @item we just started.
+    \nobreak \vskip-\parskip
+    %
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    %
+    \penalty 10001
+    \endgroup
+    \itemxneedsnegativevskipfalse
+  \else
+    % The item text fits into the space.  Start a paragraph, so that the
+    % following text (if any) will end up on the same line.
+    \noindent
+    % Do this with kerns and \unhbox so that if there is a footnote in
+    % the item text, it can migrate to the main vertical list and
+    % eventually be printed.
+    \nobreak\kern-\tableindent
+    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+    \unhbox0
+    \nobreak\kern\dimen0
+    \endgroup
+    \itemxneedsnegativevskiptrue
+  \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+  \aboveenvbreak
+  \itemmax=\itemindent
+  \advance\itemmax by -\itemmargin
+  \advance\leftskip by \itemindent
+  \exdentamount=\itemindent
+  \parindent=0pt
+  \parskip=\smallskipamount
+  \ifdim\parskip=0pt \parskip=2pt \fi
+  %
+  % Try typesetting the item mark that if the document erroneously says
+  % something like @itemize @samp (intending @table), there's an error
+  % right away at the @itemize.  It's not the best error message in the
+  % world, but it's better than leaving it to the @item.  This means if
+  % the user wants an empty mark, they have to say @w{} not just @w.
+  \def\itemcontents{#1}%
+  \setbox0 = \hbox{\itemcontents}%
+  %
+  % @itemize with no arg is equivalent to @itemize @bullet.
+  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  %
+  \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   %
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list.  No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  % If we were given no argument, pretend we were given `1'.
+  \def\thearg{#1}%
+  \ifx\thearg\empty \def\thearg{1}\fi
+  %
+  % Detect if the argument is a single token.  If so, it might be a
+  % letter.  Otherwise, the only valid thing it can be is a number.
+  % (We will always have one token, because of the test we just made.
+  % This is a good thing, since \splitoff doesn't work given nothing at
+  % all -- the first parameter is undelimited.)
+  \expandafter\splitoff\thearg\endmark
+  \ifx\rest\empty
+    % Only one token in the argument.  It could still be anything.
+    % A ``lowercase letter'' is one whose \lccode is nonzero.
+    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+    %   not equal to itself.
+    % Otherwise, we assume it's a number.
+    %
+    % We need the \relax at the end of the \ifnum lines to stop TeX from
+    % continuing to look for a <number>.
+    %
+    \ifnum\lccode\expandafter`\thearg=0\relax
+      \numericenumerate % a number (we hope)
+    \else
+      % It's a letter.
+      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+        \lowercaseenumerate % lowercase letter
+      \else
+        \uppercaseenumerate % uppercase letter
+      \fi
+    \fi
+  \else
+    % Multiple tokens in the argument.  We hope it's a number.
+    \numericenumerate
+  \fi
+}
+
+% An @enumerate whose labels are integers.  The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+  \itemno = \thearg
+  \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more lowercase letters in @enumerate; get a bigger
+                  alphabet}%
+    \fi
+    \char\lccode\itemno
+  }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more uppercase letters in @enumerate; get a bigger
+                  alphabet}
+    \fi
+    \char\uccode\itemno
+  }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments.  Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+  \advance\itemno by -1
+  \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble.  Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+%   @multitable @columnfractions .25 .3 .45
+%   @item ...
+%
+%   Numbers following @columnfractions are the percent of the total
+%   current hsize to be used for each column. You may use as many
+%   columns as desired.
+
+
+% Or use a template:
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item ...
+%   using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item first col stuff @tab second col stuff @tab third col
+%   @item
+%   first col stuff
+%   @tab
+%   second col stuff
+%   @tab
+%   third col
+%   @item first col stuff @tab second col stuff
+%   @tab Many paragraphs of text may be used in any column.
+%
+%         They will wrap at the width determined by the template.
+%   @item@tab@tab This will be in third column.
+%   @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+%                                                            to baseline.
+%   0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+  \global\advance\colcount by 1
+  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+  \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+  \def\firstarg{#1}%
+  \ifx\firstarg\xendsetuptable
+    \let\go = \relax
+  \else
+    \ifx\firstarg\xcolumnfractions
+      \global\setpercenttrue
+    \else
+      \ifsetpercent
+         \let\go\pickupwholefraction
+      \else
+         \global\advance\colcount by 1
+         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+                   % separator; typically that is always in the input, anyway.
+         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+      \fi
+    \fi
+    \ifx\go\pickupwholefraction
+      % Put the argument back for the \pickupwholefraction call, so
+      % we'll always have a period there to be parsed.
+      \def\go{\pickupwholefraction#1}%
+    \else
+      \let\go = \setuptable
+    \fi%
+  \fi
+  \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  \everycr resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+  \checkenv\multitable
+  \crcr
+  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+  \the\everytab % for the first item
+}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we again encounter the problem the 1sp was intended to solve.
+%                                      --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
+  \vskip\parskip
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+       % Maybe so, but it also creates really weird page breaks when the
+       % table breaks over pages. Wouldn't \vfil be better?  Wait until the
+       % problem manifests itself, so it can be fixed for real --karl.
+    }%
+  }%
+  %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % This preamble sets up a generic column definition, which will
+  % be used as many times as user calls for columns.
+  % \vtop will set a single line and will also let text wrap and
+  % continue for many paragraphs if desired.
+  \halign\bgroup &%
+    \global\advance\colcount by 1
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \hsize=\expandafter\csname col\the\colcount\endcsname
+      %
+      % In order to keep entries from bumping into each other
+      % we will add a \leftskip of \multitablecolspace to all columns after
+      % the first one.
+      %
+      % If a template has been used, we will add \multitablecolspace
+      % to the width of each template entry.
+      %
+      % If the user has set preamble in terms of percent of \hsize we will
+      % use that dimension as the width of the column, and the \leftskip
+      % will keep entries from bumping into each other.  Table will start at
+      % left margin and final column will justify at right margin.
+      %
+      % Make sure we don't inherit \rightskip from the outer environment.
+      \rightskip=0pt
+      \ifnum\colcount=1
+       % The first column will be indented with the surrounding text.
+       \advance\hsize by\leftskip
+      \else
+       \ifsetpercent \else
+         % If user has not set preamble in terms of percent of \hsize
+         % we will advance \hsize by \multitablecolspace.
+         \advance\hsize by \multitablecolspace
+       \fi
+       % In either case we will make \leftskip=\multitablecolspace:
+      \leftskip=\multitablecolspace
+      \fi
+      % Ignoring space at the beginning and end avoids an occasional spurious
+      % blank line, when TeX decides to break the line at the space before the
+      % box from the multistrut, so the strut ends up on a line by itself.
+      % For example:
+      % @multitable @columnfractions .11 .89
+      % @item @code{#}
+      % @tab Legal holiday which is valid in major parts of the whole country.
+      % Is automatically provided with highlighting sequences respectively
+      % marking characters.
+      \noindent\ignorespaces##\unskip\multistrut
+    }\cr
+}
+\def\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+%        If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+                                      % than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+                                      % than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+  % Scan in ``verbatim'' mode:
+  \obeylines
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
+  %
+  % Make sure that spaces turn into tokens that match what \doignoretext wants.
+  \spaceisspace
+  %
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
+  %
+  % Swallow text until we reach the matching `@end #1'.
+  \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
+  %
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
+    %
+    % Define a command to find the next `@end #1'.
+    \long\def\doignoretext##1^^M@end #1{%
+      \doignoretextyyy##1^^M@#1\_STOP_}%
+    %
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line `@c @ifset', for
+    % example, to count as an @ifset for nesting.)
+    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+    %
+    % And now expand that command.
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty                      % Nothing found.
+    \let\next\doignoretextzzz
+  \else                                        % Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy          % ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0     % We have just found the outermost @end.
+    \let\next\enddoignore
+  \else                                % Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+  % Ignore anything after the last `@end #1'; this matters in verbatim
+  % environments, where otherwise the newline after an ignored conditional
+  % would result in a blank line in the output.
+  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+  \catcode`\- = \active \catcode`\_ = \active
+  %
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
+    \catcode`\-=\other \catcode`\_=\other
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @code{@value{foo-bar_}}, though.
+    % So \let them to their normal equivalents.
+    \let-\realdash \let_\normalunderscore
+  }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+  \expandafter\ifx\csname SET#1\endcsname\relax
+    {[No value for ``#1'']}%
+    \message{Variable `#1', used in @value, is not set.}%
+  \else
+    \csname SET#1\endcsname
+  \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar    makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+  % Only do \closeout if we haven't already done it, else we'll end up
+  % closing the target index.
+  \expandafter \ifx\csname donesynindex#2\endcsname \relax
+    % The \closeout helps reduce unnecessary open files; the limit on the
+    % Acorn RISC OS is a mere 16 files.
+    \expandafter\closeout\csname#2indfile\endcsname
+    \expandafter\let\csname donesynindex#2\endcsname = 1
+  \fi
+  % redefine \fooindfile:
+  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+  \expandafter\let\csname#2indfile\endcsname=\temp
+  % redefine \fooindex:
+  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+%  and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
+  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+  \def\ {\realbackslash\space }%
+  %
+  % Need these unexpandable (because we define \tt as a dummy)
+  % definitions when @{ or @} appear in index entry text.  Also, more
+  % complicated, when \tex is in effect and \{ is a \delimiter again.
+  % We can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.  Perhaps we
+  % should define @lbrace and @rbrace commands a la @comma.
+  \def\{{{\tt\char123}}%
+  \def\}{{\tt\char125}}%
+  %
+  % I don't entirely understand this, but when an index entry is
+  % generated from a macro call, the \endinput which \scanmacro inserts
+  % causes processing to be prematurely terminated.  This is,
+  % apparently, because \indexsorttmp is fully expanded, and \endinput
+  % is an expandable command.  The redefinition below makes \endinput
+  % disappear altogether for that purpose -- although logging shows that
+  % processing continues to some further point.  On the other hand, it
+  % seems \endinput does not hurt in the printed index arg, since that
+  % is still getting written without apparent harm.
+  %
+  % Sample source (mac-idx3.tex, reported by Graham Percival to
+  % help-texinfo, 22may06):
+  % @macro funindex {WORD}
+  % @findex xyz
+  % @end macro
+  % ...
+  % @funindex commtest
+  %
+  % The above is not enough to reproduce the bug, but it gives the flavor.
+  %
+  % Sample whatsit resulting:
+  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+  %
+  % So:
+  \let\endinput = \empty
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+  \def\@{@@}%
+  \def\ {@ }%
+  \let\{ = \lbraceatcmd
+  \let\} = \rbraceatcmd
+  %
+  % Do the redefinitions.
+  \commondummies
+  \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+  %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  \definedummyletter\-%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\DH
+  \definedummyword\L
+  \definedummyword\O
+  \definedummyword\OE
+  \definedummyword\TH
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\dh
+  \definedummyword\exclamdown
+  \definedummyword\l
+  \definedummyword\o
+  \definedummyword\oe
+  \definedummyword\ordf
+  \definedummyword\ordm
+  \definedummyword\questiondown
+  \definedummyword\ss
+  \definedummyword\th
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\arrow
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\entrybreak
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\geq
+  \definedummyword\guillemetleft
+  \definedummyword\guillemetright
+  \definedummyword\guilsinglleft
+  \definedummyword\guilsinglright
+  \definedummyword\lbracechar
+  \definedummyword\leq
+  \definedummyword\minus
+  \definedummyword\ogonek
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\quotedblbase
+  \definedummyword\quotedblleft
+  \definedummyword\quotedblright
+  \definedummyword\quoteleft
+  \definedummyword\quoteright
+  \definedummyword\quotesinglbase
+  \definedummyword\rbracechar
+  \definedummyword\result
+  \definedummyword\textdegree
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
+  \normalturnoffactive
+  %
+  % Handle some cases of @value -- where it does not contain any
+  % (non-fully-expandable) commands.
+  \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+  % Control letters and accents.
+  \definedummyletter\!%
+  \definedummyaccent\"%
+  \definedummyaccent\'%
+  \definedummyletter\*%
+  \definedummyaccent\,%
+  \definedummyletter\.%
+  \definedummyletter\/%
+  \definedummyletter\:%
+  \definedummyaccent\=%
+  \definedummyletter\?%
+  \definedummyaccent\^%
+  \definedummyaccent\`%
+  \definedummyaccent\~%
+  \definedummyword\u
+  \definedummyword\v
+  \definedummyword\H
+  \definedummyword\dotaccent
+  \definedummyword\ogonek
+  \definedummyword\ringaccent
+  \definedummyword\tieaccent
+  \definedummyword\ubaraccent
+  \definedummyword\udotaccent
+  \definedummyword\dotless
+  %
+  % Texinfo font commands.
+  \definedummyword\b
+  \definedummyword\i
+  \definedummyword\r
+  \definedummyword\sansserif
+  \definedummyword\sc
+  \definedummyword\slanted
+  \definedummyword\t
+  %
+  % Commands that take arguments.
+  \definedummyword\abbr
+  \definedummyword\acronym
+  \definedummyword\anchor
+  \definedummyword\cite
+  \definedummyword\code
+  \definedummyword\command
+  \definedummyword\dfn
+  \definedummyword\dmn
+  \definedummyword\email
+  \definedummyword\emph
+  \definedummyword\env
+  \definedummyword\file
+  \definedummyword\image
+  \definedummyword\indicateurl
+  \definedummyword\inforef
+  \definedummyword\kbd
+  \definedummyword\key
+  \definedummyword\math
+  \definedummyword\option
+  \definedummyword\pxref
+  \definedummyword\ref
+  \definedummyword\samp
+  \definedummyword\strong
+  \definedummyword\tie
+  \definedummyword\uref
+  \definedummyword\url
+  \definedummyword\var
+  \definedummyword\verb
+  \definedummyword\w
+  \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names.  It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % All control words become @asis by default; overrides below.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
+  \def\ { }%
+  \def\@{@}%
+  \def\_{\normalunderscore}%
+  \def\-{}% @- shouldn't affect sorting
+  %
+  % Unfortunately, texindex is not prepared to handle braces in the
+  % content at all.  So for index sorting, we map @{ and @} to strings
+  % starting with |, since that ASCII character is between ASCII { and }.
+  \def\{{|a}%
+  \def\lbracechar{|a}%
+  %
+  \def\}{|b}%
+  \def\rbracechar{|b}%
+  %
+  % Non-English letters.
+  \def\AA{AA}%
+  \def\AE{AE}%
+  \def\DH{DZZ}%
+  \def\L{L}%
+  \def\OE{OE}%
+  \def\O{O}%
+  \def\TH{ZZZ}%
+  \def\aa{aa}%
+  \def\ae{ae}%
+  \def\dh{dzz}%
+  \def\exclamdown{!}%
+  \def\l{l}%
+  \def\oe{oe}%
+  \def\ordf{a}%
+  \def\ordm{o}%
+  \def\o{o}%
+  \def\questiondown{?}%
+  \def\ss{ss}%
+  \def\th{zzz}%
+  %
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
+  %
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\arrow{->}%
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\expansion{==>}%
+  \def\geq{>=}%
+  \def\guillemetleft{<<}%
+  \def\guillemetright{>>}%
+  \def\guilsinglleft{<}%
+  \def\guilsinglright{>}%
+  \def\leq{<=}%
+  \def\minus{-}%
+  \def\point{.}%
+  \def\pounds{pounds}%
+  \def\print{-|}%
+  \def\quotedblbase{"}%
+  \def\quotedblleft{"}%
+  \def\quotedblright{"}%
+  \def\quoteleft{`}%
+  \def\quoteright{'}%
+  \def\quotesinglbase{,}%
+  \def\registeredsymbol{R}%
+  \def\result{=>}%
+  \def\textdegree{o}%
+  %
+  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+  \else \indexlquoteignore \fi
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  %
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  %
+  \macrolist
+}
+
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
+\let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \safewhatsit\dosubindwrite
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+  \fi
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+  }%
+  \temp
+}
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{\ifhmode
+  #1%
+ \else
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \whatsitskip = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \whatsitpenalty = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\whatsitskip glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\whatsitskip
+  \fi
+  %
+  #1%
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\whatsitskip
+  \fi
+\fi}
+
+% The index entry written in the file actually looks like
+%  \entry {sortstring}{page}{topic}
+% or
+%  \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+%  \initial {c}
+%     before the first topic whose initial is c
+%  \entry {topic}{pagelist}
+%     for a topic that is used without subtopics
+%  \primary {topic}
+%     for the beginning of a topic that is used with subtopics
+%  \secondary {subtopic}{pagelist}
+%     for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+  \dobreak \chapheadingskip{10000}%
+  %
+  \smallfonts \rm
+  \tolerance = 9500
+  \plainfrenchspacing
+  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+  %
+  % See if the index file exists and is nonempty.
+  % Change catcode of @ here so that if the index file contains
+  % \initial {@}
+  % as its first line, TeX doesn't complain about mismatched braces
+  % (because it thinks @} is a control sequence).
+  \catcode`\@ = 11
+  \openin 1 \jobname.#1s
+  \ifeof 1
+    % \enddoublecolumns gets confused if there is no text in the index,
+    % and it loses the chapter title and the aux file entries for the
+    % index.  The easiest way to prevent this problem is to make sure
+    % there is some text.
+    \putwordIndexNonexistent
+  \else
+    %
+    % If the index file exists but is empty, then \openin leaves \ifeof
+    % false.  We have to make TeX try to read something from the file, so
+    % it can discover if there is anything in it.
+    \read 1 to \temp
+    \ifeof 1
+      \putwordIndexIsEmpty
+    \else
+      % Index files are almost Texinfo source, but we use \ as the escape
+      % character.  It would be better to use @, but that's too big a change
+      % to make right now.
+      \def\indexbackslash{\backslashcurfont}%
+      \catcode`\\ = 0
+      \escapechar = `\\
+      \begindoublecolumns
+      \input \jobname.#1s
+      \enddoublecolumns
+    \fi
+  \fi
+  \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+  % Some minor font changes for the special characters.
+  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+  %
+  % Remove any glue we may have, we'll be inserting our own.
+  \removelastskip
+  %
+  % We like breaks before the index initials, so insert a bonus.
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
+  %
+  % Typeset the initial.  Making this add up to a whole number of
+  % baselineskips increases the chance of the dots lining up from column
+  % to column.  It still won't often be perfect, because of the stretch
+  % we need before each entry, but it's better.
+  %
+  % No shrink because it confuses \balancecolumns.
+  \vskip 1.67\baselineskip plus .5\baselineskip
+  \leftline{\secbf #1}%
+  % Do our best not to break after the initial.
+  \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+%      \def\entry#1#2{...
+% But this freezes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \begingroup
+    %
+    % Start a new paragraph if necessary, so our assignments below can't
+    % affect previous text.
+    \par
+    %
+    % Do not fill out the last line with white space.
+    \parfillskip = 0in
+    %
+    % No extra space above this paragraph.
+    \parskip = 0in
+    %
+    % Do not prefer a separate line ending with a hyphen to fewer lines.
+    \finalhyphendemerits = 0
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    % \hangafter is reset to 1 (which is the value we want) at the start
+    % of each paragraph, so we need not do anything with that.
+    \hangindent = 2em
+    %
+    % When the entry text needs to be broken, just fill out the first line
+    % with blank space.
+    \rightskip = 0pt plus1fil
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % When reading the text of entry, convert explicit line breaks
+    % from @* into spaces.  The user might give these in long section
+    % titles, for instance.
+    \def\*{\unskip\space\ignorespaces}%
+    \def\entrybreak{\hfil\break}%
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\entrybreak{\unskip\space\ignorespaces}%
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % The following is kludged to not output a line of dots in the index if
+    % there are no page numbers.  The next person who breaks this will be
+    % cursed by a Unix daemon.
+    \setbox\boxA = \hbox{#1}%
+    \ifdim\wd\boxA = 0pt
+      \ %
+    \else
+      %
+      % If we must, put the page number on a line of its own, and fill out
+      % this line with blank space.  (The \hfil is overwhelmed with the
+      % fill leaders glue in \indexdotfill if the page number does fit.)
+      \hfil\penalty50
+      \null\nobreak\indexdotfill % Have leaders before the page number.
+      %
+      % The `\ ' here is removed by the implicit \unskip that TeX does as
+      % part of (the primitive) \par.  Without it, a spurious underfull
+      % \hbox ensues.
+      \ifpdf
+       \pdfgettoks#1.%
+       \ \the\toksA
+      \else
+       \ #1%
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+  \parfillskip=0in
+  \parskip=0in
+  \hangindent=1in
+  \hangafter=1
+  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+  \ifpdf
+    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+  \else
+    #2
+  \fi
+  \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+  % Grab any single-column material above us.
+  \output = {%
+    %
+    % Here is a possibility not foreseen in manmac: if we accumulate a
+    % whole lot of material, we might end up calling this \output
+    % routine twice in a row (see the doublecol-lose test, which is
+    % essentially a couple of indexes with @setchapternewpage off).  In
+    % that case we just ship out what is in \partialpage with the normal
+    % output routine.  Generally, \partialpage will be empty when this
+    % runs and this will be a no-op.  See the indexspread.tex test case.
+    \ifvoid\partialpage \else
+      \onepageout{\pagecontents\partialpage}%
+    \fi
+    %
+    \global\setbox\partialpage = \vbox{%
+      % Unvbox the main output page.
+      \unvbox\PAGE
+      \kern-\topskip \kern\baselineskip
+    }%
+  }%
+  \eject % run that output routine to set \partialpage
+  %
+  % Use the double-column output routine for subsequent pages.
+  \output = {\doublecolumnout}%
+  %
+  % Change the page size parameters.  We could do this once outside this
+  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+  % format, but then we repeat the same computation.  Repeating a couple
+  % of assignments once per index is clearly meaningless for the
+  % execution time, so we may as well do it in one place.
+  %
+  % First we halve the line length, less a little for the gutter between
+  % the columns.  We compute the gutter based on the line length, so it
+  % changes automatically with the paper format.  The magic constant
+  % below is chosen so that the gutter has the same value (well, +-<1pt)
+  % as it did when we hard-coded it.
+  %
+  % We put the result in a separate register, \doublecolumhsize, so we
+  % can restore it in \pagesofar, after \hsize itself has (potentially)
+  % been clobbered.
+  %
+  \doublecolumnhsize = \hsize
+    \advance\doublecolumnhsize by -.04154\hsize
+    \divide\doublecolumnhsize by 2
+  \hsize = \doublecolumnhsize
+  %
+  % Double the \vsize as well.  (We don't need a separate register here,
+  % since nobody clobbers \vsize.)
+  \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+  \splittopskip=\topskip \splitmaxdepth=\maxdepth
+  % Get the available space for the double columns -- the normal
+  % (undoubled) page height minus any material left over from the
+  % previous page.
+  \dimen@ = \vsize
+  \divide\dimen@ by 2
+  \advance\dimen@ by -\ht\partialpage
+  %
+  % box0 will be the left-hand column, box2 the right.
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar
+  \unvbox255
+  \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+  \unvbox\partialpage
+  %
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize
+  \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
+  \output = {%
+    % Split the last of the double-column material.  Leave it on the
+    % current page, no automatic page break.
+    \balancecolumns
+    %
+    % If we end up splitting too much material for the current page,
+    % though, there will be another page break right after this \output
+    % invocation ends.  Having called \balancecolumns once, we do not
+    % want to call it again.  Therefore, reset \output to its normal
+    % definition right away.  (We hope \balancecolumns will never be
+    % called on to balance too much material, but if it is, this makes
+    % the output somewhat more palatable.)
+    \global\output = {\onepageout{\pagecontents\PAGE}}%
+  }%
+  \eject
+  \endgroup % started in \begindoublecolumns
+  %
+  % \pagegoal was set to the doubled \vsize above, since we restarted
+  % the current page.  We're now back to normal single-column
+  % typesetting, so reset \pagegoal to the normal \vsize (after the
+  % \endgroup where \vsize got restored).
+  \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2 % target to split to
+  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
+  \splittopskip = \topskip
+  % Loop until we get a decent breakpoint.
+  {%
+    \vbadness = 10000
+    \loop
+      \global\setbox3 = \copy0
+      \global\setbox1 = \vsplit3 to \dimen@
+    \ifdim\ht3>\dimen@
+      \global\advance\dimen@ by 1pt
+    \repeat
+  }%
+  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+  \setbox0=\vbox to\dimen@{\unvbox1}%
+  \setbox2=\vbox to\dimen@{\unvbox3}%
+  %
+  \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+  \chapoddpage
+  \null
+  \vskip.3\vsize  % move it down on the page a bit
+  \begingroup
+    \noindent \titlefonts\rmisbold #1\par % the text
+    \let\lastnode=\empty      % no node to associate with
+    \writetocentry{part}{#1}{}% but put it in the toc
+    \headingsoff              % no headline or footline on the part page
+    \chapoddpage
+  \endgroup
+}
+
+% \unnumberedno is an oxymoron.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno        \secno=0
+\newcount\subsecno     \subsecno=0
+\newcount\subsubsecno  \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno  \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+  \ifnum\appendixno=`A A%
+  \else\ifnum\appendixno=`B B%
+  \else\ifnum\appendixno=`C C%
+  \else\ifnum\appendixno=`D D%
+  \else\ifnum\appendixno=`E E%
+  \else\ifnum\appendixno=`F F%
+  \else\ifnum\appendixno=`G G%
+  \else\ifnum\appendixno=`H H%
+  \else\ifnum\appendixno=`I I%
+  \else\ifnum\appendixno=`J J%
+  \else\ifnum\appendixno=`K K%
+  \else\ifnum\appendixno=`L L%
+  \else\ifnum\appendixno=`M M%
+  \else\ifnum\appendixno=`N N%
+  \else\ifnum\appendixno=`O O%
+  \else\ifnum\appendixno=`P P%
+  \else\ifnum\appendixno=`Q Q%
+  \else\ifnum\appendixno=`R R%
+  \else\ifnum\appendixno=`S S%
+  \else\ifnum\appendixno=`T T%
+  \else\ifnum\appendixno=`U U%
+  \else\ifnum\appendixno=`V V%
+  \else\ifnum\appendixno=`W W%
+  \else\ifnum\appendixno=`X X%
+  \else\ifnum\appendixno=`Y Y%
+  \else\ifnum\appendixno=`Z Z%
+  % The \the is necessary, despite appearances, because \appendixletter is
+  % expanded while writing the .toc file.  \char\appendixno is not
+  % expandable, thus it is written literally, thus all appendixes come out
+  % with the same letter (or @) in the toc without it.
+  \else\char\the\appendixno
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter.  Page headings and footings can use
+% these.  @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
+  \else
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
+  \fi
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unnlevel
+      \chardef\unnlevel = \absseclevel
+    \fi
+  \else
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+       \errmessage{@appendix... within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unnlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unnlevel = 3
+    \fi
+  \fi
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+       \unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
+  \else
+    \if \headtype A%
+      \ifcase\absseclevel
+         \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+         \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
+  \fi
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  % \putwordChapter can contain complex things in translations.
+  \toks0=\expandafter{\putwordChapter}%
+  \message{\the\toks0 \space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
+  \global\let\section = \numberedsec
+  \global\let\subsection = \numberedsubsec
+  \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  % \putwordAppendix can contain complex things in translations.
+  \toks0=\expandafter{\putwordAppendix}%
+  \message{\the\toks0 \space \appendixletter}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
+  \global\let\section = \appendixsec
+  \global\let\subsection = \appendixsubsec
+  \global\let\subsubsection = \appendixsubsubsec
+}
+
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
+  %
+  % This used to be simply \message{#1}, but TeX fully expands the
+  % argument to \message.  Therefore, if #1 contained @-commands, TeX
+  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
+  % expanded @cite (which turns out to cause errors because \cite is meant
+  % to be executed, not expanded).
+  %
+  % Anyway, we don't want the fully-expanded definition of @cite to appear
+  % as a result of the \message, we just want `@cite' itself.  We use
+  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+  % simply yielding the contents of <toks register>.  (We also do this for
+  % the toc entries.)
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+  %
+  \global\let\section = \unnumberedsec
+  \global\let\subsection = \unnumberedsubsec
+  \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:                --kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+% 
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+% 
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+% 
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+%       1) We use \vbox rather than the earlier \line to permit
+%          overlong headings to fold.
+%       2) \hyphenpenalty is set to 10000 because hyphenation in a
+%          heading is obnoxious; this forbids it.
+%       3) Likewise, headings look best if no \parindent is used, and
+%          if justification is not attempted.  Hence \raggedright.
+
+\def\majorheading{%
+  {\advance\chapheadingskip by 10pt \chapbreak }%
+  \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                    \parindent=0pt\ptexraggedright
+                    \rmisbold #1\hfill}}%
+  \bigskip \par\penalty 200\relax
+  \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+% Parameter controlling skip before chapter headings (if needed)
+\newskip\chapheadingskip
+
+% Define plain chapter starts, and page on/off switching for it.
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong.  But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+  \chappager
+  \ifodd\pageno \else
+    \begingroup
+      \headingsoff
+      \null
+      \chappager
+    \endgroup
+  \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+  % Insert the first mark before the heading break (see notes for \domark).
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+                        \gdef\thissection{}}%
+  %
+  \def\temptype{#2}%
+  \ifx\temptype\Ynothingkeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{\thischaptername}}%
+  \else\ifx\temptype\Yomitfromtockeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{}}%
+  \else\ifx\temptype\Yappendixkeyword
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\appendixletter}%
+      % \noexpand\putwordAppendix avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \else
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\the\chapno}%
+      % \noexpand\putwordChapter avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \fi\fi\fi
+  %
+  % Output the mark.  Pass it through \safewhatsit, to take care of
+  % the preceding space.
+  \safewhatsit\domark
+  %
+  % Insert the chapter heading break.
+  \pchapsepmacro
+  %
+  % Now the second mark, after the heading break.  No break points
+  % between here and the heading.
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \domark
+  %
+  {%
+    \chapfonts \rmisbold
+    %
+    % Have to define \lastsection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\lastsection{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
+    \nobreak % Avoid page breaks at the interline glue.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+          \hangindent=\wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
+  }%
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\ptexraggedright
+                       \rmisbold #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt
+                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+  {%
+    \checkenv{}% should not be in an environment.
+    %
+    % Switch to the right set of fonts.
+    \csname #2fonts\endcsname \rmisbold
+    %
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    % Insert first mark before the heading break (see notes for \domark).
+    \let\prevsectiondefs=\lastsectiondefs
+    \ifx\temptype\Ynothingkeyword
+      \ifx\sectionlevel\seckeyword
+        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+                              \gdef\thissection{\thissectionname}}%
+      \fi
+    \else\ifx\temptype\Yomitfromtockeyword
+      % Don't redefine \thissection.
+    \else\ifx\temptype\Yappendixkeyword
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \else
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \fi\fi\fi
+    %
+    % Go into vertical mode.  Usually we'll already be there, but we
+    % don't want the following whatsit to end up in a preceding paragraph
+    % if the document didn't happen to have a blank line.
+    \par
+    %
+    % Output the mark.  Pass it through \safewhatsit, to take care of
+    % the preceding space.
+    \safewhatsit\domark
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Now the second mark, after the heading break.  No break points
+    % between here and the heading.
+    \let\prevsectiondefs=\lastsectiondefs
+    \domark
+    %
+    % Only insert the space after the number if we have a section number.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\lastsection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \lastsection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\lastsection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\lastsection{#1}%
+    \fi\fi\fi
+    %
+    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+    %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chapmacro.
+    \donoderef{#3}%
+    %
+    % Interline glue will be inserted when the vbox is completed.
+    % That glue will be a valid breakpoint for the page, since it'll be
+    % preceded by a whatsit (usually from the \donoderef, or from the
+    % \writetocentry if there was no node).  We don't want to allow that
+    % break, since then the whatsits could end up on page n while the
+    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
+    \nobreak
+    %
+    % Output the actual section heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
+  }%
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
+  \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)  However, when a paragraph is not started next
+  % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+  % or the negative glue will cause weirdly wrong output, typically
+  % obscuring the section heading with something else.
+  \vskip-\parskip
+  %
+  % This is so the last item on the main vertical list is a known
+  % \penalty > 10000, so \startdefun, etc., can recognize the situation
+  % and do the needful.
+  \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      {\atdummies
+       \edef\temp{%
+         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+       \temp
+      }%
+    \fi
+  \fi
+  %
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+  % If @setchapternewpage on, and @headings double, the contents should
+  % start on an odd page, unlike chapters.  Thus, we maintain
+  % \contentsalignmacro in parallel with \pagealignmacro.
+  % From: Torbjorn Granlund <tege@matematik.su.se>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref.  We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+  \startcontents{\putwordTOC}%
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\partentry = \shortpartentry
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Parts, in the main contents.  Replace the part number, which doesn't
+% exist, with an empty box.  Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+  \penalty-300
+  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+   \begingroup
+     \chapentryfonts
+     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+   \endgroup
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+  \secentryfonts \leftskip=\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+  \subsecentryfonts \leftskip=2\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+  \subsubsecentryfonts \leftskip=3\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @tex ... @end tex    escapes into raw TeX temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain @ character.
+
+\envdef\tex{%
+  \setupmarkupstyle{tex}%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+  \catcode `\%=14
+  \catcode `\+=\other
+  \catcode `\"=\other
+  \catcode `\|=\other
+  \catcode `\<=\other
+  \catcode `\>=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+  \escapechar=`\\
+  %
+  % ' is active in math mode (mathcode"8000).  So reset it, and all our
+  % other math active characters (just in case), to plain's definitions.
+  \mathactive
+  %
+  \let\b=\ptexb
+  \let\bullet=\ptexbullet
+  \let\c=\ptexc
+  \let\,=\ptexcomma
+  \let\.=\ptexdot
+  \let\dots=\ptexdots
+  \let\equiv=\ptexequiv
+  \let\!=\ptexexclam
+  \let\i=\ptexi
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \let\{=\ptexlbrace
+  \let\+=\tabalign
+  \let\}=\ptexrbrace
+  \let\/=\ptexslash
+  \let\*=\ptexstar
+  \let\t=\ptext
+  \expandafter \let\csname top\endcsname=\ptextop  % outer
+  \let\frenchspacing=\plainfrenchspacing
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments.  \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical.  We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      % it's not a good place to break if the last penalty was \nobreak
+      % or better ...
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+        \ctl\leaders\hrule height\circthick\hfil\ctr
+        \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+        \cbl\leaders\hrule height\circthick\hfil\cbr
+        \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \lskip=\leftskip \rskip=\rightskip
+  \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  \cartinner=\hsize \advance\cartinner by-\lskip
+  \advance\cartinner by-\rskip
+  \cartouter=\hsize
+  \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+                               % side, and for 6pt waste from
+                               % each corner char, and rule thickness
+  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+  % Flag to tell @lisp, etc., not to narrow margin.
+  \let\nonarrowing = t%
+  %
+  % If this cartouche directly follows a sectioning command, we need the
+  % \parskip glue (backspaced over by default) or the cartouche can
+  % collide with the section heading.
+  \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+  %
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+         \hskip\lskip
+         \vrule\kern3pt
+         \vbox\bgroup
+             \kern3pt
+             \hsize=\cartinner
+             \baselineskip=\normbskip
+             \lineskip=\normlskip
+             \parskip=\normpskip
+             \vskip -\parskip
+             \comment % For explanation, see the end of def\group.
+}
+\def\Ecartouche{%
+              \ifhmode\par\fi
+             \kern3pt
+         \egroup
+         \kern3pt\vrule
+         \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\newdimen\nonfillparindent
+\def\nonfillstart{%
+  \aboveenvbreak
+  \hfuzz = 12pt % Don't be fussy
+  \sepspaces % Make spaces be word-separators rather than space tokens.
+  \let\par = \lisppar % don't ignore blank lines
+  \obeylines % each line of input is a line of output
+  \parskip = 0pt
+  % Turn off paragraph indentation but redefine \indent to emulate
+  % the normal \indent.
+  \nonfillparindent=\parindent
+  \parindent = 0pt
+  \let\indent\nonfillindent
+  %
+  \emergencystretch = 0pt % don't try to avoid overfull boxes
+  \ifx\nonarrowing\relax
+    \advance \leftskip by \lispnarrowing
+    \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \let\exdent=\nofillexdent
+}
+
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it in one command.  #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+  \makedispenvdef{#1}{#3}%
+  \makedispenvdef{#2}{#3}%
+}
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvdef{lisp}{example}{%
+  \nonfillstart
+  \tt\setupmarkupstyle{example}%
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenvdef{display}{%
+  \nonfillstart
+  \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenvdef{format}{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \advance\leftskip by 0pt plus 1fill\relax
+  \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @raggedright does more-or-less normal line breaking but no right
+% justification.  From plain.tex.
+\envdef\raggedright{%
+  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+  \parindent=0pt \leftskip0pt plus2em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\makedispenvdef{quotation}{\quotationstart}
+%
+\def\quotationstart{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \advance\rightskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\thisisundefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallquotation{\Equotation}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
+}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too.  Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+  \do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+  \do\<\do\>\do\|\do\@\do+\do\"%
+  % Don't do the quotes -- if we do, @set txicodequoteundirected and
+  % @set txicodequotebacktick will not have effect on @verb and
+  % @verbatim, and ?` and !` ligatures won't get disabled.
+  %\do\`\do\'%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+  \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+  \tt  % easiest (and conventionally used) font for verbatim
+  \def\par{\leavevmode\endgraf}%
+  \setupmarkupstyle{verb}%
+  \tabeightspaces
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion.
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs.  The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group.  Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset.  Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
+%
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabexpand{%
+    \catcode`\^^I=\active
+    \def^^I{\leavevmode\egroup
+      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+      \divide\dimen\verbbox by\tabw
+      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
+      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
+    }%
+  }
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \tt % easiest (and conventionally used) font for verbatim
+  % The \leavevmode here is for blank lines.  Otherwise, we would
+  % never \starttabox and the \egroup would end verbatim mode.
+  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
+  \tabexpand
+  \setupmarkupstyle{verbatim}%
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count.
+  % Must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+  \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters.  Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+%    \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+%     \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+  \catcode`\ =\active
+  \obeylines %
+  % ignore everything up to the first ^^M, that's the newline at the end
+  % of the @verbatim input line itself.  Otherwise we get an extra blank
+  % line in the output.
+  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \indexnofonts       % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
+    \input #1
+    \afterenvbreak
+  }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
+  \else
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \printdefunline, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    %
+    % As a further refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
+  \fi
+  %
+  \parindent=0in
+  \advance\leftskip by \defbodyindent
+  \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
+  %
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil\relax
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
+%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \doingtypefnfalse    % distinguish typed functions from all else
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
+}
+
+\newif\ifdoingtypefn       % doing typed function?
+\newif\ifrettypeownline    % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line.  This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+% 
+\parseargdef\deftypefnnewline{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @txideftypefnnl value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \doingtypefntrue
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+% Types:
+
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+  \par
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % Determine if we are typesetting the return type of a typed function
+  % on a line by itself.
+  \rettypeownlinefalse
+  \ifdoingtypefn  % doing a typed function specifically?
+    % then check user option for putting return type on its own line:
+    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+      \rettypeownlinetrue
+    \fi
+  \fi
+  %
+  % How we'll format the category name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.  We'll always have at
+  % least two.
+  \tempnum = 2
+  %
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  %
+  % If doing a return type on its own line, we'll have another line.
+  \ifrettypeownline
+    \advance\tempnum by 1
+    \def\maybeshapeline{0in \hsize}%
+  \else
+    \def\maybeshapeline{}%
+  \fi
+  %
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  %
+  % The final paragraph shape:
+  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
+  %
+  % Put the category name at the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% text of the return type
+    \ifx\temp\empty\else
+      \tclose{\temp}% typeset the return type
+      \ifrettypeownline
+        % put return type on its own line; prohibit line break following:
+        \hfil\vadjust{\nobreak}\break  
+      \else
+        \space  % type on same line, so just followed by a space
+      \fi
+    \fi           % no return type
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  Let's try @var for that.
+  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
+  #1%
+  \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+  \catcode`\(=\active \catcode`\)=\active
+  \catcode`\[=\active \catcode`\]=\active
+  \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc.  For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
+
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
+}
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
+}
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+  \message{Warning: unbalanced parentheses in @def...}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \message{Warning: unbalanced square brackets in @def...}%
+  \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\thisisundefined
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
+\fi
+
+\def\scanmacro#1{\begingroup
+  \newlinechar`\^^M
+  \let\xeatspaces\eatspaces
+  %
+  % Undo catcode changes of \startcontents and \doprintindex
+  % When called from @insertcopying or (short)caption, we need active
+  % backslash to get it printed correctly.  Previously, we had
+  % \catcode`\\=\other instead.  We'll see whether a problem appears
+  % with macro expansion.                              --kasal, 19aug04
+  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+  %
+  % ... and for \example:
+  \spaceisspace
+  %
+  % The \empty here causes a following catcode 5 newline to be eaten as
+  % part of reading whitespace after a control sequence.  It does not
+  % eat a catcode 13 newline.  There's no good way to handle the two
+  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+  % would then have different behavior).  See the Macro Details node in
+  % the manual for the workaround we recommend for macros and
+  % line-oriented commands.
+  % 
+  \scantokens{#1\empty}%
+\endgroup}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
+\newcount\paramno   % Count of parameters
+\newtoks\macname    % Macro name
+\newif\ifrecursive  % Is it recursive?
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
+\def\cslet#1#2{%
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion.  Must do this non-globally, to
+% confine the change to the current group.
+%
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+%
+\def\scanctxt{% used as subroutine
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
+  \catcode`\^=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\~=\other
+  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{% used for copying and captions, not macros.
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{% used for @macro definitions
+  \scanctxt
+  \catcode`\{=\other
+  \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
+}
+
+\def\macroargctxt{% used when scanning invocations
+  \scanctxt
+  \catcode`\\=0
+}
+% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }.  Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+% 
+% We already have @{ and @}.  For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+% 
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent.  Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+%
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\margbackslash#1{\char`\#1 }
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+  \getargs{#1}% now \macname is the macname and \argl the arglist
+  \ifx\argl\empty       % no arguments
+     \paramno=0\relax
+  \else
+     \expandafter\parsemargdef \argl;%
+     \if\paramno>256\relax
+       \ifx\eTeXversion\thisisundefined
+         \errhelp = \EMsimple
+         \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+       \fi
+     \fi
+  \fi
+  \if1\csname ismacro.\the\macname\endcsname
+     \message{Warning: redefining \the\macname}%
+  \else
+     \expandafter\ifx\csname \the\macname\endcsname \relax
+     \else \errmessage{Macro name \the\macname\space already defined}\fi
+     \global\cslet{macsave.\the\macname}{\the\macname}%
+     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+     \addtomacrolist{\the\macname}%
+  \fi
+  \begingroup \macrobodyctxt
+  \ifrecursive \expandafter\parsermacbody
+  \else \expandafter\parsemacbody
+  \fi}
+
+\parseargdef\unmacro{%
+  \if1\csname ismacro.#1\endcsname
+    \global\cslet{#1}{macsave.#1}%
+    \global\expandafter\let \csname ismacro.#1\endcsname=0%
+    % Remove the macro name from \macrolist:
+    \begingroup
+      \expandafter\let\csname#1\endcsname \relax
+      \let\definedummyword\unmacrodo
+      \xdef\macrolist{\macrolist}%
+    \endgroup
+  \else
+    \errmessage{Macro #1 not defined}%
+  \fi
+}
+
+% Called by \do from \dounmacro on each macro.  The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+  \ifx #1\relax
+    % remove this
+  \else
+    \noexpand\definedummyword \noexpand#1%
+  \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname#1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% For macro processing make @ a letter so that we can make Texinfo private macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
+% Parse the optional {params} list.  Set up \paramno and \paramlist
+% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded.  If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.  
+%
+% That gets used by \mbodybackslash (above).
+%
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX: let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef  the body (nothing else will expand because of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
+\def\parsemargdef#1;{%
+  \paramno=0\def\paramlist{}%
+  \let\hash\relax
+  \let\xeatspaces\relax
+  \parsemargdefxxx#1,;,%
+  % In case that there are 10 or more arguments we parse again the arguments
+  % list to set new definitions for the \macarg.BLAH macros corresponding to
+  % each BLAH argument. It was anyhow needed to parse already once this list
+  % in order to count the arguments, and as macros with at most 9 arguments
+  % are by far more frequent than macro with 10 or more arguments, defining
+  % twice the \macarg.BLAH macros does not cost too much processing power.
+  \ifnum\paramno<10\relax\else
+    \paramno0\relax
+    \parsemmanyargdef@@#1,;,% 10 or more arguments
+  \fi
+}
+\def\parsemargdefxxx#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\parsemargdefxxx
+    \advance\paramno by 1
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\xeatspaces{\hash\the\paramno}}%
+    \edef\paramlist{\paramlist\hash\the\paramno,}%
+  \fi\next}
+
+\def\parsemmanyargdef@@#1,{%
+  \if#1;\let\next=\relax
+  \else 
+    \let\next=\parsemmanyargdef@@
+    \edef\tempb{\eatspaces{#1}}%
+    \expandafter\def\expandafter\tempa
+       \expandafter{\csname macarg.\tempb\endcsname}%
+    % Note that we need some extra \noexpand\noexpand, this is because we
+    % don't want \the  to be expanded in the \parsermacbody  as it uses an
+    % \xdef .
+    \expandafter\edef\tempa
+      {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+    \advance\paramno by 1\relax
+  \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+%
+
+\catcode `\@\texiatcatcode
+\long\def\parsemacbody#1@end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1@end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode `\@=11\relax
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition.  It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+  \def\macargdeflist@{}%
+  \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+  \def\paramlist{#2,\nil@}%
+  \def\macroname{#1}%
+  \begingroup
+  \macroargctxt
+  \def\argvaluelist{#3,\nil@}%
+  \def\@tempa{#3}%
+  \ifx\@tempa\empty
+    \setemptyargvalues@
+  \else
+    \getargvals@@
+  \fi
+}
+
+% 
+\def\getargvals@@{%
+  \ifx\paramlist\nilm@
+      % Some sanity check needed here that \argvaluelist is also empty.
+      \ifx\argvaluelist\nillm@
+      \else
+        \errhelp = \EMsimple
+        \errmessage{Too many arguments in macro `\macroname'!}%
+      \fi
+      \let\next\macargexpandinbody@
+  \else
+    \ifx\argvaluelist\nillm@
+       % No more arguments values passed to macro.  Set remaining named-arg
+       % macros to empty.
+       \let\next\setemptyargvalues@
+    \else
+      % pop current arg name into \@tempb
+      \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+      \expandafter\@tempa\expandafter{\paramlist}%
+       % pop current argument value into \@tempc
+      \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+      \expandafter\@tempa\expandafter{\argvaluelist}%
+       % Here \@tempb is the current arg name and \@tempc is the current arg value.
+       % First place the new argument macro definition into \@tempd
+       \expandafter\macname\expandafter{\@tempc}%
+       \expandafter\let\csname macarg.\@tempb\endcsname\relax
+       \expandafter\def\expandafter\@tempe\expandafter{%
+         \csname macarg.\@tempb\endcsname}%
+       \edef\@tempd{\long\def\@tempe{\the\macname}}%
+       \push@\@tempd\macargdeflist@
+       \let\next\getargvals@@
+    \fi
+  \fi
+  \next
+}
+
+\def\push@#1#2{%
+  \expandafter\expandafter\expandafter\def
+  \expandafter\expandafter\expandafter#2%
+  \expandafter\expandafter\expandafter{%
+  \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa
+\def\macvalstoargs@{%
+  %  To do this we use the property that token registers that are \the'ed
+  % within an \edef  expand only once. So we are going to place all argument
+  % values into respective token registers.
+  %
+  % First we save the token context, and initialize argument numbering.
+  \begingroup
+    \paramno0\relax
+    % Then, for each argument number #N, we place the corresponding argument
+    % value into a new token list register \toks#N
+    \expandafter\putargsintokens@\saveparamlist@,;,%
+    % Then, we expand the body so that argument are replaced by their
+    % values. The trick for values not to be expanded themselves is that they
+    % are within tokens and that tokens expand only once in an \edef .
+    \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+    % Now we restore the token stack pointer to free the token list registers
+    % which we have used, but we make sure that expanded body is saved after
+    % group.
+    \expandafter
+  \endgroup
+  \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+  }
+
+\def\macargexpandinbody@{% 
+  %% Define the named-macro outside of this group and then close this group. 
+  \expandafter
+  \endgroup
+  \macargdeflist@
+  % First the replace in body the macro arguments by their values, the result
+  % is in \@tempa .
+  \macvalstoargs@
+  % Then we point at the \norecurse or \gobble (for recursive) macro value
+  % with \@tempb .
+  \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+  % Depending on whether it is recursive or not, we need some tailing
+  % \egroup .
+  \ifx\@tempb\gobble
+     \let\@tempc\relax
+  \else
+     \let\@tempc\egroup
+  \fi
+  % And now we do the real job:
+  \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+  \@tempd
+}
+
+\def\putargsintokens@#1,{%
+  \if#1;\let\next\relax
+  \else
+    \let\next\putargsintokens@
+    % First we allocate the new token list register, and give it a temporary
+    % alias \@tempb .
+    \toksdef\@tempb\the\paramno
+    % Then we place the argument value into that token list register.
+    \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+    \expandafter\@tempb\expandafter{\@tempa}%
+    \advance\paramno by 1\relax
+  \fi
+  \next
+}
+
+% Save the token stack pointer into macro #1
+\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
+% Restore the token stack pointer from number in macro #1
+\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
+
+% Tailing missing arguments are set to empty
+\def\setemptyargvalues@{%
+  \ifx\paramlist\nilm@
+    \let\next\macargexpandinbody@
+  \else
+    \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+    \let\next\setemptyargvalues@
+  \fi
+  \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+  \expandafter\def\expandafter\@tempa\expandafter{%
+    \expandafter\def\csname macarg.#1\endcsname{}}%
+  \push@\@tempa\macargdeflist@
+  \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+   \def#1{#3}%
+   \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+   \long\def#1{#3}%
+   \long\def#2{#4}%
+}
+
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+%
+\def\defmacro{%
+  \let\hash=##% convert placeholders to macro parameter chars
+  \ifrecursive
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\scanmacro{\temp}}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \egroup\noexpand\scanmacro{\temp}}%
+    \else
+      \ifnum\paramno<10\relax % at most 9
+        \expandafter\xdef\csname\the\macname\endcsname{%
+           \bgroup\noexpand\macroargctxt
+           \noexpand\csname\the\macname xx\endcsname}%
+        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+        \expandafter\expandafter
+        \expandafter\xdef
+        \expandafter\expandafter
+          \csname\the\macname xxx\endcsname
+            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+      \else % 10 or more
+        \expandafter\xdef\csname\the\macname\endcsname{%
+          \noexpand\getargvals@{\the\macname}{\argl}%
+        }%    
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+      \fi
+    \fi
+  \else
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+        \egroup
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \else % at most 9
+      \ifnum\paramno<10\relax
+        \expandafter\xdef\csname\the\macname\endcsname{%
+           \bgroup\noexpand\macroargctxt
+           \expandafter\noexpand\csname\the\macname xx\endcsname}%
+        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+        \expandafter\expandafter
+        \expandafter\xdef
+        \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+        \paramlist{%
+            \egroup
+            \noexpand\norecurse{\the\macname}%
+            \noexpand\scanmacro{\temp}\egroup}%
+      \else % 10 or more:
+        \expandafter\xdef\csname\the\macname\endcsname{%
+          \noexpand\getargvals@{\the\macname}{\argl}%
+        }%
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+      \fi
+    \fi
+  \fi}
+
+\catcode `\@\texiatcatcode\relax
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg).
+% 
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+  \ifx\nchar\bgroup\else
+    \expandafter\parsearg
+  \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign.  Make them active and then expand them all to nothing.
+%
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs    % True if xref values are known.
+\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{%
+  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+  node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
+  \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+  \pdfmkdest{#1}%
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \edef\writexrdef##1##2{%
+       \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+         ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\lastsection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
+    }%
+  \fi
+}
+
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+% 
+\parseargdef\xrefautomaticsectiontitle{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% \f
+% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual.  All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+  \unsepspaces
+  %
+  % Get args without leading/trailing spaces.
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+  %
+  \def\infofilename{\ignorespaces #4}%
+  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+  %
+  \def\printedmanual{\ignorespaces #5}%
+  \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
+  %
+  % If the printed reference name (arg #3) was not explicitly given in
+  % the @xref, figure out what we want to use.
+  \ifdim \wd\printedrefnamebox = 0pt
+    % No printed node name was explicitly given.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+      % Not auto section-title: use node name inside the square brackets.
+      \def\printedrefname{\ignorespaces #1}%
+    \else
+      % Auto section-title: use chapter/section title inside
+      % the square brackets if we have it.
+      \ifdim \wd\printedmanualbox > 0pt
+        % It is in another manual, so we don't have it; use node name.
+        \def\printedrefname{\ignorespaces #1}%
+      \else
+        \ifhavexrefs
+          % We (should) know the real title if we have the xref values.
+          \def\printedrefname{\refx{#1-title}{}}%
+        \else
+          % Otherwise just copy the Info node name.
+          \def\printedrefname{\ignorespaces #1}%
+        \fi%
+      \fi
+    \fi
+  \fi
+  %
+  % Make link in pdf output.
+  \ifpdf
+    {\indexnofonts
+     \turnoffactive
+     \makevalueexpandable
+     % This expands tokens, so do it after making catcode changes, so _
+     % etc. don't get their TeX definitions.  This ignores all spaces in
+     % #4, including (wrongly) those in the middle of the filename.
+     \getfilename{#4}%
+     %
+     % This (wrongly) does not take account of leading or trailing
+     % spaces in #1, which should be ignored.
+     \edef\pdfxrefdest{#1}%
+     \ifx\pdfxrefdest\empty
+       \def\pdfxrefdest{Top}% no empty targets
+     \else
+       \txiescapepdf\pdfxrefdest  % escape PDF special chars
+     \fi
+     %
+     \leavevmode
+     \startlink attr{/Border [0 0 0]}%
+     \ifnum\filenamelength>0
+       goto file{\the\filename.pdf} name{\pdfxrefdest}%
+     \else
+       goto name{\pdfmkpgn{\pdfxrefdest}}%
+     \fi
+    }%
+    \setcolor{\linkcolor}%
+  \fi
+  %
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd\printedrefnamebox = 0pt
+      \refx{#1-snt}{}%
+    \else
+      \printedrefname
+    \fi
+    %
+    % If the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd\printedmanualbox > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
+    % 
+    % If we use \unhbox to print the node names, TeX does not insert
+    % empty discretionaries after hyphens, which means that it will not
+    % find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens,
+    % this is a loss.  Therefore, we give the text of the node name
+    % again, so it is as if TeX is seeing it for the first time.
+    % 
+    \ifdim \wd\printedmanualbox > 0pt
+      % Cross-manual reference with a printed manual name.
+      % 
+      \crossmanualxref{\cite{\printedmanual\unskip}}%
+    %
+    \else\ifdim \wd\infofilenamebox > 0pt
+      % Cross-manual reference with only an info filename (arg 4), no
+      % printed manual name (arg 5).  This is essentially the same as
+      % the case above; we output the filename, since we have nothing else.
+      % 
+      \crossmanualxref{\code{\infofilename\unskip}}%
+    %
+    \else
+      % Reference within this manual.
+      %
+      % _ (for example) has to be the character _ for the purposes of the
+      % control sequence corresponding to the node, but it has to expand
+      % into the usual \leavevmode...\vrule stuff for purposes of
+      % printing. So we \turnoffactive for the \refx-snt, back on for the
+      % printing, back off for the \refx-pg.
+      {\turnoffactive
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via the macro below so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+    \fi\fi
+  \fi
+  \endlink
+\endgroup}
+
+% Output a cross-manual xref to #1.  Used just above (twice).
+% 
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+% 
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input.  By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font).  Hopefully it will never happen in practice.
+% 
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+% 
+\def\crossmanualxref#1{%
+  \setbox\toprefbox = \hbox{Top\kern7sp}%
+  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+  \ifdim \wd2 > 7sp  % nonempty?
+    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
+      \putwordSection{} ``\printedrefname'' \putwordin{}\space
+    \fi
+  \fi
+  #1%
+}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output.  It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents.  Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+  \ifnum\secno=0
+    \putwordChapter@tie \the\chapno
+  \else \ifnum\subsecno=0
+    \putwordSection@tie \the\chapno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+\def\Yappendix{%
+  \ifnum\secno=0
+     \putwordAppendix@tie @char\the\appendixno{}%
+  \else \ifnum\subsecno=0
+     \putwordSection@tie @char\the\appendixno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie
+      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+  {%
+    \indexnofonts
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\thisrefX
+      \csname XR#1\endcsname
+  }%
+  \ifx\thisrefX\relax
+    % If not defined, say something at least.
+    \angleleft un\-de\-fined\angleright
+    \iflinks
+      \ifhavexrefs
+        {\toks0 = {#1}% avoid expansion of possibly-complex value
+         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \thisrefX
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
+  \fi
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readdatafile{aux}%
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
+\def\setupdatafile{%
+  \catcode`\^^@=\other
+  \catcode`\^^A=\other
+  \catcode`\^^B=\other
+  \catcode`\^^C=\other
+  \catcode`\^^D=\other
+  \catcode`\^^E=\other
+  \catcode`\^^F=\other
+  \catcode`\^^G=\other
+  \catcode`\^^H=\other
+  \catcode`\^^K=\other
+  \catcode`\^^L=\other
+  \catcode`\^^N=\other
+  \catcode`\^^P=\other
+  \catcode`\^^Q=\other
+  \catcode`\^^R=\other
+  \catcode`\^^S=\other
+  \catcode`\^^T=\other
+  \catcode`\^^U=\other
+  \catcode`\^^V=\other
+  \catcode`\^^W=\other
+  \catcode`\^^X=\other
+  \catcode`\^^Z=\other
+  \catcode`\^^[=\other
+  \catcode`\^^\=\other
+  \catcode`\^^]=\other
+  \catcode`\^^^=\other
+  \catcode`\^^_=\other
+  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
+  % supported in the main text, it doesn't seem desirable.  Furthermore,
+  % that is not enough: for node names that actually contain a ^
+  % character, we would end up writing a line like this: 'xrdef {'hat
+  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+  % argument, and \hat is not an expandable control sequence.  It could
+  % all be worked out, but why?  Either we support ^^ or we don't.
+  %
+  % The other change necessary for this was to define \auxhat:
+  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+  % and then to call \auxhat in \setq.
+  %
+  \catcode`\^=\other
+  %
+  % Special characters.  Should be turned off anyway, but...
+  \catcode`\~=\other
+  \catcode`\[=\other
+  \catcode`\]=\other
+  \catcode`\"=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\$=\other
+  \catcode`\#=\other
+  \catcode`\&=\other
+  \catcode`\%=\other
+  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+  %
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
+  {%
+    \count1=128
+    \def\loop{%
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
+    }%
+  }%
+  %
+  % @ is our escape character in .aux files, and we need braces.
+  \catcode`\{=1
+  \catcode`\}=2
+  \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for Info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes.  Otherwise like plain.
+\gdef\footnote{%
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \global\advance\footnoteno by \@ne
+  \edef\thisfootno{$^{\the\footnoteno}$}%
+  %
+  % In case the footnote comes at the end of a sentence, preserve the
+  % extra spacing after we do the footnote number.
+  \let\@sf\empty
+  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+  %
+  % Remove inadvertent blank space before typesetting the footnote number.
+  \unskip
+  \thisfootno\@sf
+  \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter.  Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read.  --karl, 16nov96.
+%
+\gdef\dofootnote{%
+  \insert\footins\bgroup
+  % We want to typeset this text as a normal paragraph, even if the
+  % footnote reference occurs in (for example) a display environment.
+  % So reset some parameters.
+  \hsize=\pagewidth
+  \interlinepenalty\interfootnotelinepenalty
+  \splittopskip\ht\strutbox % top baseline for broken footnotes
+  \splitmaxdepth\dp\strutbox
+  \floatingpenalty\@MM
+  \leftskip\z@skip
+  \rightskip\z@skip
+  \spaceskip\z@skip
+  \xspaceskip\z@skip
+  \parindent\defaultparindent
+  %
+  \smallfonts \rm
+  %
+  % Because we use hanging indentation in footnotes, a @noindent appears
+  % to exdent this text, so make it be a no-op.  makeinfo does not use
+  % hanging indentation so @noindent can still be needed within footnote
+  % text after an @example or the like (not that this is good style).
+  \let\noindent = \relax
+  %
+  % Hang the footnote text off the number.  Use \everypar in case the
+  % footnote extends for more than one paragraph.
+  \everypar = {\hang}%
+  \textindent{\thisfootno}%
+  %
+  % Don't crash into the line above the footnote text.  Since this
+  % expands into a box, it must come within the paragraph, lest it
+  % provide a place where TeX can split the footnote.
+  \footstrut
+  %
+  % Invoke rest of plain TeX footnote routine.
+  \futurelet\next\fo@t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarly, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image.  We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front.  If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+  % Do not bother showing banner with epsf.tex v2.7k (available in
+  % doc/epsf.tex and on ctan).
+  \def\epsfannounce{\toks0 = }%
+  \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+  work.  It is also included in the Texinfo distribution, or you can get
+  it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+  \ifx\epsfbox\thisisundefined
+    \ifwarnednoepsf \else
+      \errhelp = \noepsfhelp
+      \errmessage{epsf.tex not found, images will be ignored}%
+      \global\warnednoepsftrue
+    \fi
+  \else
+    \imagexxx #1,,,,,\finish
+  \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+  \catcode`\^^M = 5     % in case we're inside an example
+  \normalturnoffactive  % allow _ et al. in names
+  % If the image is by itself, center it.
+  \ifvmode
+    \imagevmodetrue
+  \else \ifx\centersub\centerV
+    % for @center @image, we need a vbox so we can have our vertical space
+    \imagevmodetrue
+    \vbox\bgroup % vbox has better behavior than vtop herev
+  \fi\fi
+  %
+  \ifimagevmode
+    \nobreak\medskip
+    % Usually we'll have text after the image which will insert
+    % \parskip glue, so insert it here too to equalize the space
+    % above and below.
+    \nobreak\vskip\parskip
+    \nobreak
+  \fi
+  %
+  % Leave vertical mode so that indentation from an enclosing
+  %  environment such as @quotation is respected.
+  % However, if we're at the top level, we don't want the
+  %  normal paragraph indentation.
+  % On the other hand, if we are in the case of @center @image, we don't
+  %  want to start a paragraph, which will create a hsize-width box and
+  %  eradicate the centering.
+  \ifx\centersub\centerV\else \noindent \fi
+  %
+  % Output the image.
+  \ifpdf
+    \dopdfimage{#1}{#2}{#3}%
+  \else
+    % \epsfbox itself resets \epsf?size at each figure.
+    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+    \epsfbox{#1.eps}%
+  \fi
+  %
+  \ifimagevmode
+    \medskip  % space after a standalone image
+  \fi  
+  \ifx\centersub\centerV \egroup \fi
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \lastsection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\lastsection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+       \appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies
+        %
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+       \scanexp{%
+         \xdef\noexpand\gtemp{%
+           \ifx\thisshortcaption\empty
+             \thiscaption
+           \else
+             \thisshortcaption
+           \fi
+         }%
+       }%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+         \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start floating, we have to issue warning
+  % whenever an insert appears inside a float which could possibly
+  % float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
+
+\message{localization,}
+
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding.  Single argument is the language
+% (de) or locale (de_DE) abbreviation.
+%
+{
+  \catcode`\_ = \active
+  \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+  \let_=\normalunderscore  % normal _ character for filenames
+  \tex % read txi-??.tex file in plain TeX.
+    % Read the file by the name they passed if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \documentlanguagetrywithoutunderscore{#1_\finish}%
+    \else
+      \globaldefs = 1  % everything in the txi-LL files needs to persist
+      \input txi-#1.tex
+    \fi
+    \closein 1
+  \endgroup % end raw TeX
+\endgroup}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
+  \openin 1 txi-#1.tex
+  \ifeof 1
+    \errhelp = \nolanghelp
+    \errmessage{Cannot read language file txi-#1.tex}%
+  \else
+    \globaldefs = 1  % everything in the txi-LL files needs to persist
+    \input txi-#1.tex
+  \fi
+  \closein 1
+}
+}% end of special _ catcode
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty.  Maybe you need to install it?  Putting it in the current
+directory should work if nowhere else does.}
+
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages.  This means we can support hyphenation in
+% Texinfo, at least to some extent.  (This still doesn't solve the
+% accented characters problem.)
+%
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+  % do not set the language if the name is undefined in the current TeX.
+  \expandafter\ifx\csname lang@#1\endcsname \relax
+    \message{no patterns for #1}%
+  \else
+    \global\language = \csname lang@#1\endcsname
+  \fi
+  % but there is no harm in adjusting the hyphenmin values regardless.
+  \global\lefthyphenmin = #2\relax
+  \global\righthyphenmin = #3\relax
+}
+
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{\tie}
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}}
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\copyright}
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\guillemetleft}
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-}
+  \gdef^^ae{\registeredsymbol}
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\guillemetright}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A}
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\TH}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\th}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{\tie}
+  \gdef^^a1{\ogonek{A}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\ogonek{a}}
+  \gdef^^b2{\ogonek{ }}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\ogonek{E}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U}
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\ogonek{e}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'{\dotless{i}}}
+  \gdef^^ee{\^{\dotless{i}}}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BB}{\guillemetright}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D0}{\DH}
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DE}{\TH}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F0}{\dh}
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FE}{\th}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2018}{\quoteleft}
+  \DeclareUnicodeCharacter{2019}{\quoteright}
+  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+  \DeclareUnicodeCharacter{201C}{\quotedblleft}
+  \DeclareUnicodeCharacter{201D}{\quotedblright}
+  \DeclareUnicodeCharacter{201E}{\quotedblbase}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+  \DeclareUnicodeCharacter{203A}{\guilsinglright}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything.  We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize.  We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+  \ifx\emergencystretch\thisisundefined
+    % Allow us to assign to \emergencystretch anyway.
+    \def\emergencystretch{\dimen0}%
+  \else
+    \emergencystretch = .15\hsize
+  \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading.  The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+  \voffset = #3\relax
+  \topskip = #6\relax
+  \splittopskip = \topskip
+  %
+  \vsize = #1\relax
+  \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
+  \pageheight = \vsize
+  %
+  \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
+  \pagewidth = \hsize
+  %
+  \normaloffset = #4\relax
+  \bindingoffset = #5\relax
+  %
+  \ifpdf
+    \pdfpageheight #7\relax
+    \pdfpagewidth #8\relax
+    % if we don't reset these, they will remain at "1 true in" of
+    % whatever layout pdftex was dumped with.
+    \pdfhorigin = 1 true in
+    \pdfvorigin = 1 true in
+  \fi
+  %
+  \setleading{\textleading}
+  %
+  \parindent = \defaultparindent
+  \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % If page is nothing but text, make it come out even.
+  \internalpagesizes{607.2pt}{6in}% that's 46 lines
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{36pt}%
+                    {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+  \parskip = 2pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.5in}{5in}%
+                    {-.2in}{0in}%
+                    {\bindingoffset}{16pt}%
+                    {9.25in}{7in}%
+  %
+  \lispnarrowing = 0.3in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % Double-side printing via postscript on Laserjet 4050
+  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+  % To change the settings for a different printer or situation, adjust
+  % \normaloffset until the front-side and back-side texts align.  Then
+  % do the same for \bindingoffset.  You can set these for testing in
+  % your texinfo source file like this:
+  % @tex
+  % \global\normaloffset = -6mm
+  % \global\bindingoffset = 10mm
+  % @end tex
+  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{44pt}%
+                    {297mm}{210mm}%
+  %
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+  \parskip = 2pt plus 1pt minus 0.1pt
+  \textleading = 12.5pt
+  %
+  \internalpagesizes{160mm}{120mm}%
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{8pt}%
+                    {210mm}{148mm}%
+  %
+  \lispnarrowing = 0.2in
+  \tolerance = 800
+  \hfuzz = 1.2pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 2mm
+  \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{237mm}{150mm}%
+                    {\voffset}{4.6mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  %
+  % Must explicitly reset to 0 because we call \afourpaper.
+  \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{241mm}{165mm}%
+                    {\voffset}{-2.95mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+  \globaldefs = 1
+  %
+  \parskip = 3pt plus 2pt minus 1pt
+  \setleading{\textleading}%
+  %
+  \dimen0 = #1\relax
+  \advance\dimen0 by \voffset
+  %
+  \dimen2 = \hsize
+  \advance\dimen2 by \normaloffset
+  %
+  \internalpagesizes{#1}{\hsize}%
+                    {\voffset}{\normaloffset}%
+                    {\bindingoffset}{44pt}%
+                    {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise.  Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+  \normalturnoffactive
+  \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active  % @ for escape char from now on.
+
+% The story here is that in math mode, the \char of \backslashcurfont
+% ends up printing the roman \ from the math symbol font (because \char
+% in math mode uses the \mathcode, and plain.tex sets
+% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
+% print a typewriter backslash, hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C).  We can't use " for the
+% usual hex value because it has already been made active.
+@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
+
+% On startup, @fixbackslash assigns:
+%  @let \ = @normalbackslash
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.  We switch back and forth between these.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+@def@normalturnoffactive{%
+  @let"=@normaldoublequote
+  @let$=@normaldollar %$ font-lock fix
+  @let+=@normalplus
+  @let<=@normalless
+  @let>=@normalgreater
+  @let\=@normalbackslash
+  @let^=@normalcaret
+  @let_=@normalunderscore
+  @let|=@normalverticalbar
+  @let~=@normaltilde
+  @markupsetuplqdefault
+  @markupsetuprqdefault
+  @unsepspaces
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+@otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+@gdef@eatinput input texinfo{@fixbackslash}
+@global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+@gdef@fixbackslash{%
+  @ifx\@eatinput @let\ = @normalbackslash @fi
+  @catcode`+=@active
+  @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+
+% These look ok in all fonts, so just make them not special.
+% @hashchar{} gets its own user-level command, because of #line.
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
+
+@let @hashchar = @normalhash
+
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
+
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
diff --git a/lib/update-copyright b/lib/update-copyright
new file mode 100755 (executable)
index 0000000..082b749
--- /dev/null
@@ -0,0 +1,274 @@
+eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
+  & eval 'exec perl -wS -0777 -pi "$0" $argv:q'
+    if 0;
+# Update an FSF copyright year list to include the current year.
+
+my $VERSION = '2012-02-05.21:39'; # UTC
+
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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/>.
+
+# Written by Jim Meyering and Joel E. Denny
+
+# The arguments to this script should be names of files that contain
+# copyright statements to be updated.  The copyright holder's name
+# defaults to "Free Software Foundation, Inc." but may be changed to
+# any other name by using the "UPDATE_COPYRIGHT_HOLDER" environment
+# variable.
+#
+# For example, you might wish to use the update-copyright target rule
+# in maint.mk from gnulib's maintainer-makefile module.
+#
+# Iff a copyright statement is recognized in a file and the final
+# year is not the current year, then the statement is updated for the
+# new year and it is reformatted to:
+#
+#   1. Fit within 72 columns.
+#   2. Convert 2-digit years to 4-digit years by prepending "19".
+#   3. Expand copyright year intervals.  (See "Environment variables"
+#      below.)
+#
+# A warning is printed for every file for which no copyright
+# statement is recognized.
+#
+# Each file's copyright statement must be formatted correctly in
+# order to be recognized.  For example, each of these is fine:
+#
+#   Copyright @copyright{} 1990-2005, 2007-2009 Free Software
+#   Foundation, Inc.
+#
+#   # Copyright (C) 1990-2005, 2007-2009 Free Software
+#   # Foundation, Inc.
+#
+#   /*
+#    * Copyright &copy; 90,2005,2007-2009
+#    * Free Software Foundation, Inc.
+#    */
+#
+# However, the following format is not recognized because the line
+# prefix changes after the first line:
+#
+#   ## Copyright (C) 1990-2005, 2007-2009 Free Software
+#   #  Foundation, Inc.
+#
+# However, any correctly formatted copyright statement following
+# a non-matching copyright statements would be recognized.
+#
+# The exact conditions that a file's copyright statement must meet
+# to be recognized are:
+#
+#   1. It is the first copyright statement that meets all of the
+#      following conditions.  Subsequent copyright statements are
+#      ignored.
+#   2. Its format is "Copyright (C)", then a list of copyright years,
+#      and then the name of the copyright holder.
+#   3. The "(C)" takes one of the following forms or is omitted
+#      entirely:
+#
+#        A. (C)
+#        B. (c)
+#        C. @copyright{}
+#        D. &copy;
+#
+#   4. The "Copyright" appears at the beginning of a line, except that it
+#      may be prefixed by any sequence (e.g., a comment) of no more than
+#      5 characters -- including white space.
+#   5. Iff such a prefix is present, the same prefix appears at the
+#      beginning of each remaining line within the FSF copyright
+#      statement.  There is one exception in order to support C-style
+#      comments: if the first line's prefix contains nothing but
+#      whitespace surrounding a "/*", then the prefix for all subsequent
+#      lines is the same as the first line's prefix except with each of
+#      "/" and possibly "*" replaced by a " ".  The replacement of "*"
+#      by " " is consistent throughout all subsequent lines.
+#   6. Blank lines, even if preceded by the prefix, do not appear
+#      within the FSF copyright statement.
+#   7. Each copyright year is 2 or 4 digits, and years are separated by
+#      commas or dashes.  Whitespace may appear after commas.
+#
+# Environment variables:
+#
+#   1. If UPDATE_COPYRIGHT_FORCE=1, a recognized FSF copyright statement
+#      is reformatted even if it does not need updating for the new
+#      year.  If unset or set to 0, only updated FSF copyright
+#      statements are reformatted.
+#   2. If UPDATE_COPYRIGHT_USE_INTERVALS=1, every series of consecutive
+#      copyright years (such as 90, 1991, 1992-2007, 2008) in a
+#      reformatted FSF copyright statement is collapsed to a single
+#      interval (such as 1990-2008).  If unset or set to 0, all existing
+#      copyright year intervals in a reformatted FSF copyright statement
+#      are expanded instead.
+#      If UPDATE_COPYRIGHT_USE_INTERVALS=2, convert a sequence with gaps
+#      to the minimal containing range.  For example, convert
+#      2000, 2004-2007, 2009 to 2000-2009.
+#   3. For testing purposes, you can set the assumed current year in
+#      UPDATE_COPYRIGHT_YEAR.
+#   4. The default maximum line length for a copyright line is 72.
+#      Set UPDATE_COPYRIGHT_MAX_LINE_LENGTH to use a different length.
+#   5. Set UPDATE_COPYRIGHT_HOLDER if the copyright holder is other
+#      than "Free Software Foundation, Inc.".
+
+use strict;
+use warnings;
+
+my $copyright_re = 'Copyright';
+my $circle_c_re = '(?:\([cC]\)|@copyright{}|&copy;)';
+my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER};
+$holder ||= 'Free Software Foundation, Inc.';
+my $prefix_max = 5;
+my $margin = $ENV{UPDATE_COPYRIGHT_MAX_LINE_LENGTH};
+!$margin || $margin !~ m/^\d+$/
+  and $margin = 72;
+
+my $tab_width = 8;
+
+my $this_year = $ENV{UPDATE_COPYRIGHT_YEAR};
+if (!$this_year || $this_year !~ m/^\d{4}$/)
+  {
+    my ($sec, $min, $hour, $mday, $month, $year) = localtime (time ());
+    $this_year = $year + 1900;
+  }
+
+# Unless the file consistently uses "\r\n" as the EOL, use "\n" instead.
+my $eol = /(?:^|[^\r])\n/ ? "\n" : "\r\n";
+
+my $leading;
+my $prefix;
+my $ws_re;
+my $stmt_re;
+while (/(^|\n)(.{0,$prefix_max})$copyright_re/g)
+  {
+    $leading = "$1$2";
+    $prefix = $2;
+    if ($prefix =~ /^(\s*\/)\*(\s*)$/)
+      {
+        $prefix =~ s,/, ,;
+        my $prefix_ws = $prefix;
+        $prefix_ws =~ s/\*/ /; # Only whitespace.
+        if (/\G(?:[^*\n]|\*[^\/\n])*\*?\n$prefix_ws/)
+          {
+            $prefix = $prefix_ws;
+          }
+      }
+    $ws_re = '[ \t\r\f]'; # \s without \n
+    $ws_re =
+      "(?:$ws_re*(?:$ws_re|\\n" . quotemeta($prefix) . ")$ws_re*)";
+    my $holder_re = $holder;
+    $holder_re =~ s/\s/$ws_re/g;
+    my $stmt_remainder_re =
+      "(?:$ws_re$circle_c_re)?"
+      . "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|-))*"
+      . "((?:\\d\\d)?\\d\\d)$ws_re$holder_re";
+    if (/\G$stmt_remainder_re/)
+      {
+        $stmt_re =
+          quotemeta($leading) . "($copyright_re$stmt_remainder_re)";
+        last;
+      }
+  }
+if (defined $stmt_re)
+  {
+    /$stmt_re/ or die; # Should never die.
+    my $stmt = $1;
+    my $final_year_orig = $2;
+
+    # Handle two-digit year numbers like "98" and "99".
+    my $final_year = $final_year_orig;
+    $final_year <= 99
+      and $final_year += 1900;
+
+    if ($final_year != $this_year)
+      {
+        # Update the year.
+        $stmt =~ s/$final_year_orig/$final_year, $this_year/;
+      }
+    if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'})
+      {
+        # Normalize all whitespace including newline-prefix sequences.
+        $stmt =~ s/$ws_re/ /g;
+
+        # Put spaces after commas.
+        $stmt =~ s/, ?/, /g;
+
+        # Convert 2-digit to 4-digit years.
+        $stmt =~ s/(\b\d\d\b)/19$1/g;
+
+        # Make the use of intervals consistent.
+        if (!$ENV{UPDATE_COPYRIGHT_USE_INTERVALS})
+          {
+            $stmt =~ s/(\d{4})-(\d{4})/join(', ', $1..$2)/eg;
+          }
+        else
+          {
+            $stmt =~
+              s/
+                (\d{4})
+                (?:
+                  (,\ |-)
+                  ((??{
+                    if    ($2 eq '-') { '\d{4}'; }
+                    elsif (!$3)       { $1 + 1;  }
+                    else              { $3 + 1;  }
+                  }))
+                )+
+              /$1-$3/gx;
+
+            # When it's 2, emit a single range encompassing all year numbers.
+            $ENV{UPDATE_COPYRIGHT_USE_INTERVALS} == 2
+              and $stmt =~ s/\b(\d{4})\b.*\b(\d{4})\b/$1-$2/;
+          }
+
+        # Format within margin.
+        my $stmt_wrapped;
+        my $text_margin = $margin - length($prefix);
+        if ($prefix =~ /^(\t+)/)
+          {
+            $text_margin -= length($1) * ($tab_width - 1);
+          }
+        while (length $stmt)
+          {
+            if (($stmt =~ s/^(.{1,$text_margin})(?: |$)//)
+                || ($stmt =~ s/^([\S]+)(?: |$)//))
+              {
+                my $line = $1;
+                $stmt_wrapped .= $stmt_wrapped ? "$eol$prefix" : $leading;
+                $stmt_wrapped .= $line;
+              }
+            else
+              {
+                # Should be unreachable, but we don't want an infinite
+                # loop if it can be reached.
+                die;
+              }
+          }
+
+        # Replace the old copyright statement.
+        s/$stmt_re/$stmt_wrapped/;
+      }
+  }
+else
+  {
+    print STDERR "$ARGV: warning: copyright statement not found\n";
+  }
+
+# Local variables:
+# mode: perl
+# indent-tabs-mode: nil
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "my $VERSION = '"
+# time-stamp-format: "%:y-%02m-%02d.%02H:%02M"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "'; # UTC"
+# End:
diff --git a/lib/ylwrap b/lib/ylwrap
new file mode 100755 (executable)
index 0000000..6879d8d
--- /dev/null
@@ -0,0 +1,232 @@
+#! /bin/sh
+# ylwrap - wrapper for lex/yacc invocations.
+
+scriptversion=2011-08-25.18; # UTC
+
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case "$1" in
+  '')
+    echo "$0: No files given.  Try '$0 --help' for more information." 1>&2
+    exit 1
+    ;;
+  --basedir)
+    basedir=$2
+    shift 2
+    ;;
+  -h|--h*)
+    cat <<\EOF
+Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
+
+Wrapper for lex/yacc invocations, renaming files as desired.
+
+  INPUT is the input file
+  OUTPUT is one file PROG generates
+  DESIRED is the file we actually want instead of OUTPUT
+  PROGRAM is program to run
+  ARGS are passed to PROG
+
+Any number of OUTPUT,DESIRED pairs may be used.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v|--v*)
+    echo "ylwrap $scriptversion"
+    exit $?
+    ;;
+esac
+
+get_dirname ()
+{
+  case $1 in
+    */*|*\\*) printf '%s\n' "$1" | sed -e 's,\([\\/]\)[^\\/]*$,\1,';;
+    # Otherwise,  we want the empty string (not ".").
+  esac
+}
+
+quote_for_sed ()
+{
+  # FIXME: really we should care about more than '.' and '\'.
+  sed -e 's,[\\.],\\&,g'
+}
+
+# The input.
+input="$1"
+shift
+# We'll later need for a correct munging of "#line" directives.
+input_sub_rx=`get_dirname "$input" | quote_for_sed`
+case "$input" in
+  [\\/]* | ?:[\\/]*)
+    # Absolute path; do nothing.
+    ;;
+  *)
+    # Relative path.  Make it absolute.
+    input="`pwd`/$input"
+    ;;
+esac
+
+pairlist=
+while test "$#" -ne 0; do
+  if test "$1" = "--"; then
+    shift
+    break
+  fi
+  pairlist="$pairlist $1"
+  shift
+done
+
+# The program to run.
+prog="$1"
+shift
+# Make any relative path in $prog absolute.
+case "$prog" in
+  [\\/]* | ?:[\\/]*) ;;
+  *[\\/]*) prog="`pwd`/$prog" ;;
+esac
+
+# FIXME: add hostname here for parallel makes that run commands on
+# other machines.  But that might take us over the 14-char limit.
+dirname=ylwrap$$
+do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret'
+trap "ret=129; $do_exit" 1
+trap "ret=130; $do_exit" 2
+trap "ret=141; $do_exit" 13
+trap "ret=143; $do_exit" 15
+mkdir $dirname || exit 1
+
+cd $dirname
+
+case $# in
+  0) "$prog" "$input" ;;
+  *) "$prog" "$@" "$input" ;;
+esac
+ret=$?
+
+if test $ret -eq 0; then
+  set X $pairlist
+  shift
+  first=yes
+  # Since DOS filename conventions don't allow two dots,
+  # the DOS version of Bison writes out y_tab.c instead of y.tab.c
+  # and y_tab.h instead of y.tab.h. Test to see if this is the case.
+  y_tab_nodot="no"
+  if test -f y_tab.c || test -f y_tab.h; then
+    y_tab_nodot="yes"
+  fi
+
+  input_rx=`get_dirname "$input" | quote_for_sed`
+
+  while test "$#" -ne 0; do
+    from="$1"
+    # Handle y_tab.c and y_tab.h output by DOS
+    if test $y_tab_nodot = "yes"; then
+      if test $from = "y.tab.c"; then
+        from="y_tab.c"
+      else
+        if test $from = "y.tab.h"; then
+          from="y_tab.h"
+        fi
+      fi
+    fi
+    if test -f "$from"; then
+      # If $2 is an absolute path name, then just use that,
+      # otherwise prepend '../'.
+      case "$2" in
+        [\\/]* | ?:[\\/]*) target="$2";;
+        *) target="../$2";;
+      esac
+
+      # We do not want to overwrite a header file if it hasn't
+      # changed.  This avoid useless recompilations.  However the
+      # parser itself (the first file) should always be updated,
+      # because it is the destination of the .y.c rule in the
+      # Makefile.  Divert the output of all other files to a temporary
+      # file so we can compare them to existing versions.
+      if test $first = no; then
+        realtarget="$target"
+        target="tmp-`echo $target | sed s/.*[\\/]//g`"
+      fi
+      # Munge "#line" or "#" directives.
+      # We don't want the resulting debug information to point at
+      # an absolute srcdir.
+      # We want to use the real output file name, not yy.lex.c for
+      # instance.
+      # We want the include guards to be adjusted too.
+      FROM=`echo "$from" | sed \
+            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+      TARGET=`echo "$2" | sed \
+            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+
+      sed -e "/^#/!b" -e "s,$input_rx,$input_sub_rx," -e "s,$from,$2," \
+          -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
+
+      # Check whether header files must be updated.
+      if test $first = no; then
+        if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+          echo "$2" is unchanged
+          rm -f "$target"
+        else
+          echo updating "$2"
+          mv -f "$target" "$realtarget"
+        fi
+      fi
+    else
+      # A missing file is only an error for the first file.  This
+      # is a blatant hack to let us support using "yacc -d".  If -d
+      # is not specified, we don't want an error when the header
+      # file is "missing".
+      if test $first = yes; then
+        ret=1
+      fi
+    fi
+    shift
+    shift
+    first=no
+  done
+else
+  ret=$?
+fi
+
+# Remove the directory.
+cd ..
+rm -rf $dirname
+
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/m4/acdir/README b/m4/acdir/README
new file mode 100644 (file)
index 0000000..7c6f487
--- /dev/null
@@ -0,0 +1,9 @@
+This directory is where .m4 files providing third-party autoconf
+macros can be placed to be automatically found by the aclocal(1)
+program.
+
+The .m4 files placed here could be shared among different versions
+of aclocal, so be careful.
+
+Even if no actual .m4 files are present, this directory is required
+in order for aclocal to work properly.  Please do not remove it.
diff --git a/m4/amversion.in b/m4/amversion.in
new file mode 100644 (file)
index 0000000..e44ace1
--- /dev/null
@@ -0,0 +1,39 @@
+##                                                          -*- Autoconf -*-
+## @configure_input@
+# Copyright (C) 2002-2012 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 8
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# 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='@APIVERSION@'
+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], [@VERSION@], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_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([@VERSION@])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/amversion.m4 b/m4/amversion.m4
new file mode 100644 (file)
index 0000000..660ea89
--- /dev/null
@@ -0,0 +1,39 @@
+##                                                          -*- Autoconf -*-
+## Generated from amversion.in; do not edit by hand.
+# Copyright (C) 2002-2012 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 8
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# 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.12'
+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.12.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_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.12.1])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/ar-lib.m4 b/m4/ar-lib.m4
new file mode 100644 (file)
index 0000000..470def4
--- /dev/null
@@ -0,0 +1,61 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2011-2012 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_PROG_AR([ACT-IF-FAIL])
+# -------------------------
+# Try to determine the archiver interface, and trigger the ar-lib wrapper
+# if it is needed.  If the detection of archiver interface fails, run
+# ACT-IF-FAIL (default is to abort configure with a proper error message).
+AC_DEFUN([AM_PROG_AR],
+[AC_BEFORE([$0], [LT_INIT])dnl
+AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([ar-lib])dnl
+AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
+: ${AR=ar}
+
+AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
+  [am_cv_ar_interface=ar
+   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
+     [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([am_ar_try])
+      if test "$ac_status" -eq 0; then
+        am_cv_ar_interface=ar
+      else
+        am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+        AC_TRY_EVAL([am_ar_try])
+        if test "$ac_status" -eq 0; then
+          am_cv_ar_interface=lib
+        else
+          am_cv_ar_interface=unknown
+        fi
+      fi
+      rm -f conftest.lib libconftest.a
+     ])
+   ])
+
+case $am_cv_ar_interface in
+ar)
+  ;;
+lib)
+  # Microsoft lib, so override with the ar-lib wrapper script.
+  # FIXME: It is wrong to rewrite AR.
+  # But if we don't then we get into trouble of one sort or another.
+  # A longer-term fix would be to have automake use am__AR in this case,
+  # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+  # similar.
+  AR="$am_aux_dir/ar-lib $AR"
+  ;;
+unknown)
+  m4_default([$1],
+             [AC_MSG_ERROR([could not determine $AR interface])])
+  ;;
+esac
+AC_SUBST([AR])dnl
+])
diff --git a/m4/as.m4 b/m4/as.m4
new file mode 100644 (file)
index 0000000..fa6d3c8
--- /dev/null
+++ b/m4/as.m4
@@ -0,0 +1,21 @@
+# Figure out how to run the assembler.                      -*- Autoconf -*-
+
+# Copyright (C) 2001-2012 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 5
+
+# AM_PROG_AS
+# ----------
+AC_DEFUN([AM_PROG_AS],
+[# By default we simply use the C compiler to build assembly code.
+AC_REQUIRE([AC_PROG_CC])
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
+AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
+])
diff --git a/m4/auxdir.m4 b/m4/auxdir.m4
new file mode 100644 (file)
index 0000000..3dda02b
--- /dev/null
@@ -0,0 +1,54 @@
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2012 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 2
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
diff --git a/m4/ccstdc.m4 b/m4/ccstdc.m4
new file mode 100644 (file)
index 0000000..d57f055
--- /dev/null
@@ -0,0 +1,25 @@
+## ----------------------------------------- ##             -*- Autoconf -*-
+## ANSIfy the C compiler whenever possible.  ##
+## From Franc,ois Pinard                     ##
+## ----------------------------------------- ##
+
+# Copyright (C) 1996-2012 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 5
+
+# This was merged into AC_PROG_CC in Autoconf.
+
+AU_DEFUN([AM_PROG_CC_STDC],
+[AC_PROG_CC
+AC_DIAGNOSE([obsolete], [$0:
+       your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon
+       'ac_cv_prog_cc_stdc'.  Remove this warning and the assignment when
+       you adjust the code.  You can also remove the above call to
+       AC_PROG_CC if you already called it elsewhere.])
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
+])
+AU_DEFUN([fp_PROG_CC_STDC])
diff --git a/m4/cond-if.m4 b/m4/cond-if.m4
new file mode 100644 (file)
index 0000000..80e687b
--- /dev/null
@@ -0,0 +1,39 @@
+# AM_COND_IF                                            -*- Autoconf -*-
+
+# Copyright (C) 2008-2012 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
+
+# _AM_COND_IF
+# _AM_COND_ELSE
+# _AM_COND_ENDIF
+# --------------
+# These macros are only used for tracing.
+m4_define([_AM_COND_IF])
+m4_define([_AM_COND_ELSE])
+m4_define([_AM_COND_ENDIF])
+
+
+# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
+# ---------------------------------------
+# If the shell condition COND is true, execute IF-TRUE, otherwise execute
+# IF-FALSE.  Allow automake to learn about conditional instantiating macros
+# (the AC_CONFIG_FOOS).
+AC_DEFUN([AM_COND_IF],
+[m4_ifndef([_AM_COND_VALUE_$1],
+          [m4_fatal([$0: no such condition "$1"])])dnl
+_AM_COND_IF([$1])dnl
+if test -z "$$1_TRUE"; then :
+  m4_n([$2])[]dnl
+m4_ifval([$3],
+[_AM_COND_ELSE([$1])dnl
+else
+  $3
+])dnl
+_AM_COND_ENDIF([$1])dnl
+fi[]dnl
+])
diff --git a/m4/cond.m4 b/m4/cond.m4
new file mode 100644 (file)
index 0000000..03644ab
--- /dev/null
@@ -0,0 +1,34 @@
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2012 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 10
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
diff --git a/m4/depend.m4 b/m4/depend.m4
new file mode 100644 (file)
index 0000000..cee3199
--- /dev/null
@@ -0,0 +1,190 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 1999-2012 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 17
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
diff --git a/m4/depout.m4 b/m4/depout.m4
new file mode 100644 (file)
index 0000000..749e592
--- /dev/null
@@ -0,0 +1,76 @@
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2012 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 6
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
diff --git a/m4/dmalloc.m4 b/m4/dmalloc.m4
new file mode 100644 (file)
index 0000000..be1a5b3
--- /dev/null
@@ -0,0 +1,30 @@
+## ----------------------------------- ##                   -*- Autoconf -*-
+## Check if --with-dmalloc was given.  ##
+## From Franc,ois Pinard               ##
+## ----------------------------------- ##
+
+# Copyright (C) 1996-2012 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 6
+
+AC_DEFUN([AM_WITH_DMALLOC],
+[AC_MSG_CHECKING([if malloc debugging is wanted])
+AC_ARG_WITH([dmalloc],
+[AS_HELP_STRING([--with-dmalloc],
+                [use dmalloc, as in http://www.dmalloc.com])],
+[if test "$withval" = yes; then
+  AC_MSG_RESULT([yes])
+  AC_DEFINE([WITH_DMALLOC], [1],
+           [Define if using the dmalloc debugging malloc package])
+  LIBS="$LIBS -ldmalloc"
+  LDFLAGS="$LDFLAGS -g"
+else
+  AC_MSG_RESULT([no])
+fi], [AC_MSG_RESULT([no])])
+])
+
+AU_DEFUN([fp_WITH_DMALLOC], [AM_WITH_DMALLOC])
diff --git a/m4/gcj.m4 b/m4/gcj.m4
new file mode 100644 (file)
index 0000000..e7cdd69
--- /dev/null
+++ b/m4/gcj.m4
@@ -0,0 +1,20 @@
+# Check for Java compiler.                                  -*- Autoconf -*-
+# For now we only handle the GNU compiler.
+
+# Copyright (C) 1999-2012 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 8
+
+AC_DEFUN([AM_PROG_GCJ],
+[AC_CHECK_TOOLS([GCJ], [gcj], [gcj])
+test -z "$GCJ" && AC_MSG_ERROR([no acceptable gcj found in \$PATH])
+if test "x${GCJFLAGS-unset}" = xunset; then
+   GCJFLAGS="-g -O2"
+fi
+AC_SUBST([GCJFLAGS])
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(GCJ)])
+])
diff --git a/m4/header.m4 b/m4/header.m4
new file mode 100644 (file)
index 0000000..2555b96
--- /dev/null
@@ -0,0 +1,11 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 1996-2012 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 8
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
diff --git a/m4/init.m4 b/m4/init.m4
new file mode 100644 (file)
index 0000000..85228ba
--- /dev/null
@@ -0,0 +1,149 @@
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2012 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 19
+
+# 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.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+[$0: two- and three-arguments forms are deprecated.  For more info, see:
+http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                 [_AM_DEPENDENCIES([CC])],
+                 [m4_define([AC_PROG_CC],
+                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                 [_AM_DEPENDENCIES([CXX])],
+                 [m4_define([AC_PROG_CXX],
+                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES([OBJC])],
+                 [m4_define([AC_PROG_OBJC],
+                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+dnl Support for Objective C++ was only introduced in Autoconf 2.65,
+dnl but we still cater to Autoconf 2.62.
+m4_ifdef([AC_PROG_OBJCXX],
+[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+                 [_AM_DEPENDENCIES([OBJCXX])],
+                 [m4_define([AC_PROG_OBJCXX],
+                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])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
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
diff --git a/m4/install-sh.m4 b/m4/install-sh.m4
new file mode 100644 (file)
index 0000000..8061e7e
--- /dev/null
@@ -0,0 +1,23 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2001-2012 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 8
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
diff --git a/m4/lead-dot.m4 b/m4/lead-dot.m4
new file mode 100644 (file)
index 0000000..8a86805
--- /dev/null
@@ -0,0 +1,21 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2003-2012 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 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
diff --git a/m4/lex.m4 b/m4/lex.m4
new file mode 100644 (file)
index 0000000..4cda8a9
--- /dev/null
+++ b/m4/lex.m4
@@ -0,0 +1,21 @@
+## Replacement for AC_PROG_LEX.                            -*-  Autoconf -*-
+## by Alexandre Oliva <oliva@dcc.unicamp.br>
+# Copyright (C) 1998-2012 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 6
+
+# AM_PROG_LEX
+# -----------
+# Autoconf leaves LEX=: if lex or flex can't be found.  Change that to a
+# "missing" invocation, for better error output.
+AC_DEFUN([AM_PROG_LEX],
+[AC_PREREQ([2.50])dnl
+AC_REQUIRE([AM_MISSING_HAS_RUN])dnl
+AC_REQUIRE([AC_PROG_LEX])dnl
+if test "$LEX" = :; then
+  LEX=${am_missing_run}flex
+fi])
diff --git a/m4/lispdir.m4 b/m4/lispdir.m4
new file mode 100644 (file)
index 0000000..2dd6a0f
--- /dev/null
@@ -0,0 +1,55 @@
+## ------------------------                                 -*- Autoconf -*-
+## Emacs LISP file handling
+## From Ulrich Drepper
+## Almost entirely rewritten by Alexandre Oliva
+## ------------------------
+# Copyright (C) 1996-2012 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 11
+
+# AM_PATH_LISPDIR
+# ---------------
+AC_DEFUN([AM_PATH_LISPDIR],
+[AC_PREREQ([2.60])dnl
+ # If set to t, that means we are running in a shell under Emacs.
+ # If you have an Emacs named "t", then use the full path.
+ test x"$EMACS" = xt && EMACS=
+ AC_CHECK_PROGS([EMACS], [emacs xemacs], [no])
+ AC_ARG_VAR([EMACS], [the Emacs editor command])
+ AC_ARG_VAR([EMACSLOADPATH], [the Emacs library search path])
+ AC_ARG_WITH([lispdir],
+ [AS_HELP_STRING([--with-lispdir],
+                 [override the default lisp directory])],
+ [ lispdir="$withval"
+   AC_MSG_CHECKING([where .elc files should go])
+   AC_MSG_RESULT([$lispdir])],
+ [
+ AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [
+   if test $EMACS != "no"; then
+     if test x${lispdir+set} != xset; then
+  # If $EMACS isn't GNU Emacs or XEmacs, this can blow up pretty badly
+  # Some emacsen will start up in interactive mode, requiring C-x C-c to exit,
+  #  which is non-obvious for non-emacs users.
+  # Redirecting /dev/null should help a bit; pity we can't detect "broken"
+  #  emacsen earlier and avoid running this altogether.
+  AC_RUN_LOG([$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' </dev/null >conftest.out])
+       am_cv_lispdir=`sed -n \
+       -e 's,/$,,' \
+       -e '/.*\/lib\/x*emacs\/site-lisp$/{s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;}' \
+       -e '/.*\/share\/x*emacs\/site-lisp$/{s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;}' \
+       conftest.out`
+       rm conftest.out
+     fi
+   fi
+   test -z "$am_cv_lispdir" && am_cv_lispdir='${datadir}/emacs/site-lisp'
+  ])
+  lispdir="$am_cv_lispdir"
+])
+AC_SUBST([lispdir])
+])# AM_PATH_LISPDIR
+
+AU_DEFUN([ud_PATH_LISPDIR], [AM_PATH_LISPDIR])
diff --git a/m4/maintainer.m4 b/m4/maintainer.m4
new file mode 100644 (file)
index 0000000..a8f39a3
--- /dev/null
@@ -0,0 +1,39 @@
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2012 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 7
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
diff --git a/m4/make.m4 b/m4/make.m4
new file mode 100644 (file)
index 0000000..c4ba1a6
--- /dev/null
@@ -0,0 +1,51 @@
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001-2012 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 5
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
diff --git a/m4/minuso.m4 b/m4/minuso.m4
new file mode 100644 (file)
index 0000000..7787ddf
--- /dev/null
@@ -0,0 +1,34 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 1999-2012 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 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
diff --git a/m4/missing.m4 b/m4/missing.m4
new file mode 100644 (file)
index 0000000..e124803
--- /dev/null
@@ -0,0 +1,41 @@
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2012 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 7
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
diff --git a/m4/mkdirp.m4 b/m4/mkdirp.m4
new file mode 100644 (file)
index 0000000..d362b0b
--- /dev/null
@@ -0,0 +1,33 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2003-2012 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
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for 'mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl FIXME to be removed in Automake 1.13.
+AC_DIAGNOSE([obsolete],
+[$0: this macro is deprecated, and will soon be removed.
+You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
+and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.])
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
diff --git a/m4/obsol-gt.m4 b/m4/obsol-gt.m4
new file mode 100644 (file)
index 0000000..bd2400d
--- /dev/null
@@ -0,0 +1,12 @@
+# Support for obsolete Gettext macro.                       -*- Autoconf -*-
+
+# Copyright (C) 2002-2012 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 2
+
+# See comment in obsolete.m4.
+AU_DEFUN([ud_GNU_GETTEXT], [AM_GNU_GETTEXT])
diff --git a/m4/obsol-lt.m4 b/m4/obsol-lt.m4
new file mode 100644 (file)
index 0000000..af8fb1b
--- /dev/null
@@ -0,0 +1,12 @@
+# Support for obsolete Libtool macro.                       -*- Autoconf -*-
+
+# Copyright (C) 2002-2012 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 2
+
+# See comment in obsolete.m4.
+AU_DEFUN([gm_PROG_LIBTOOL], [AM_PROG_LIBTOOL])
diff --git a/m4/obsolete.m4 b/m4/obsolete.m4
new file mode 100644 (file)
index 0000000..9a26cac
--- /dev/null
@@ -0,0 +1,37 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2002-2012 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 2
+
+# Obsolete Automake macros.
+
+# We put here only the macros whose substitution is not an Automake
+# macro; otherwise including this file would trigger dependencies for
+# all the substitutions.  Generally, obsolete Automake macros are
+# better AU_DEFUNed in the same file as their replacement, or alone in
+# a separate file (see obsol-gt.m4 or obsol-lt.m4 for instance).
+
+AU_DEFUN([AC_FEATURE_CTYPE],     [AC_HEADER_STDC])
+AU_DEFUN([AC_FEATURE_ERRNO],     [AC_REPLACE_FUNCS([strerror])])
+AU_DEFUN([AM_CYGWIN32],                 [AC_CYGWIN])
+AU_DEFUN([AM_EXEEXT],            [AC_EXEEXT])
+AU_DEFUN([AM_FUNC_MKTIME],       [AC_FUNC_MKTIME])
+AU_DEFUN([AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL],
+                                [AC_HEADER_TIOCGWINSZ])
+AU_DEFUN([AM_MINGW32],           [AC_MINGW32])
+AU_DEFUN([AM_PROG_INSTALL],      [AC_PROG_INSTALL])
+AU_DEFUN([AM_SANITY_CHECK_CC],   [AC_PROG_CC])
+AU_DEFUN([AM_SYS_POSIX_TERMIOS], [AC_SYS_POSIX_TERMIOS])
+AU_DEFUN([fp_FUNC_FNMATCH],      [AC_FUNC_FNMATCH])
+AU_DEFUN([fp_PROG_INSTALL],      [AC_PROG_INSTALL])
+AU_DEFUN([md_TYPE_PTRDIFF_T],    [AC_CHECK_TYPES([ptrdiff_t])])
+
+# Don't know how to translate these.
+# If used, Autoconf will complain that they are possibly unexpended;
+# this seems a good enough error message.
+# AC_FEATURE_EXIT
+# AC_SYSTEM_HEADER
diff --git a/m4/options.m4 b/m4/options.m4
new file mode 100644 (file)
index 0000000..76ad642
--- /dev/null
@@ -0,0 +1,32 @@
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2012 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 6
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
diff --git a/m4/protos.m4 b/m4/protos.m4
new file mode 100644 (file)
index 0000000..942154b
--- /dev/null
@@ -0,0 +1,15 @@
+#  -*- Autoconf -*-
+# Obsolete (and now removed) automatic de-ANSI-fiction support.
+#
+# Copyright (C) 1996-2012 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 6
+
+AC_DEFUN([AM_C_PROTOTYPES],
+         [AC_FATAL([automatic de-ANSI-fication support has been removed])])
+
+AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
diff --git a/m4/python.m4 b/m4/python.m4
new file mode 100644 (file)
index 0000000..3548886
--- /dev/null
@@ -0,0 +1,207 @@
+## ------------------------                                 -*- Autoconf -*-
+## Python file handling
+## From Andrew Dalke
+## Updated by James Henstridge
+## ------------------------
+# Copyright (C) 1999-2012 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 9
+
+# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# ---------------------------------------------------------------------------
+# Adds support for distributing Python modules and packages.  To
+# install modules, copy them to $(pythondir), using the python_PYTHON
+# automake variable.  To install a package with the same name as the
+# automake package, install to $(pkgpythondir), or use the
+# pkgpython_PYTHON automake variable.
+#
+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
+# locations to install python extension modules (shared libraries).
+# Another macro is required to find the appropriate flags to compile
+# extension modules.
+#
+# If your package is configured with a different prefix to python,
+# users will have to add the install directory to the PYTHONPATH
+# environment variable, or create a .pth file (see the python
+# documentation for details).
+#
+# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
+# cause an error if the version of python installed on the system
+# doesn't meet the requirement.  MINIMUM-VERSION should consist of
+# numbers and dots only.
+AC_DEFUN([AM_PATH_PYTHON],
+ [
+  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
+  dnl supported. (2.0 was released on October 16, 2000).
+  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
+[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl
+ python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
+
+  AC_ARG_VAR([PYTHON], [the Python interpreter])
+
+  m4_if([$1],[],[
+    dnl No version check is needed.
+    # Find any Python interpreter.
+    if test -z "$PYTHON"; then
+      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
+    fi
+    am_display_PYTHON=python
+  ], [
+    dnl A version check is needed.
+    if test -n "$PYTHON"; then
+      # If the user set $PYTHON, use it and don't search something else.
+      AC_MSG_CHECKING([whether $PYTHON version is >= $1])
+      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
+                             [AC_MSG_RESULT([yes])],
+                             [AC_MSG_RESULT([no])
+                              AC_MSG_ERROR([Python interpreter is too old])])
+      am_display_PYTHON=$PYTHON
+    else
+      # Otherwise, try each interpreter until we find one that satisfies
+      # VERSION.
+      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
+       [am_cv_pathless_PYTHON],[
+       for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
+         test "$am_cv_pathless_PYTHON" = none && break
+         AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+       done])
+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+      if test "$am_cv_pathless_PYTHON" = none; then
+       PYTHON=:
+      else
+        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
+      fi
+      am_display_PYTHON=$am_cv_pathless_PYTHON
+    fi
+  ])
+
+  if test "$PYTHON" = :; then
+  dnl Run any user-specified action, or abort.
+    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
+  else
+
+  dnl Query Python for its version number.  Getting [:3] seems to be
+  dnl the best way to do this; it's what "site.py" does in the standard
+  dnl library.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
+    [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
+  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
+  dnl Use the values of $prefix and $exec_prefix for the corresponding
+  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
+  dnl distinct variables so they can be overridden if need be.  However,
+  dnl general consensus is that you shouldn't need this ability.
+
+  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+
+  dnl At times (like when building shared libraries) you may want
+  dnl to know which OS platform Python thinks this is.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
+  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+
+
+  dnl Set up 4 directories:
+
+  dnl pythondir -- where to install python scripts.  This is the
+  dnl   site-packages directory, not the python standard library
+  dnl   directory like in previous automake betas.  This behavior
+  dnl   is more consistent with lispdir.m4 for example.
+  dnl Query distutils for this directory.
+  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
+    [am_cv_python_pythondir],
+    [if test "x$prefix" = xNONE
+     then
+       am_py_prefix=$ac_default_prefix
+     else
+       am_py_prefix=$prefix
+     fi
+     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
+     case $am_cv_python_pythondir in
+     $am_py_prefix*)
+       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+       ;;
+     *)
+       case $am_py_prefix in
+         /usr|/System*) ;;
+         *)
+         am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+         ;;
+       esac
+       ;;
+     esac
+    ])
+  AC_SUBST([pythondir], [$am_cv_python_pythondir])
+
+  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
+  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
+  dnl   more consistent with the rest of automake.
+
+  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+
+  dnl pyexecdir -- directory for installing python extension modules
+  dnl   (shared libraries)
+  dnl Query distutils for this directory.
+  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
+    [am_cv_python_pyexecdir],
+    [if test "x$exec_prefix" = xNONE
+     then
+       am_py_exec_prefix=$am_py_prefix
+     else
+       am_py_exec_prefix=$exec_prefix
+     fi
+     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
+     case $am_cv_python_pyexecdir in
+     $am_py_exec_prefix*)
+       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+       ;;
+     *)
+       case $am_py_exec_prefix in
+         /usr|/System*) ;;
+         *)
+          am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+          ;;
+       esac
+       ;;
+     esac
+    ])
+  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+
+  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+
+  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+
+  dnl Run any user-specified action.
+  $2
+  fi
+
+])
+
+
+# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ---------------------------------------------------------------------------
+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
+# Run ACTION-IF-FALSE otherwise.
+# This test uses sys.hexversion instead of the string equivalent (first
+# word of sys.version), in order to cope with versions such as 2.2c1.
+# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
+AC_DEFUN([AM_PYTHON_CHECK_VERSION],
+ [prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
+sys.exit(sys.hexversion < minverhex)"
+  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
diff --git a/m4/runlog.m4 b/m4/runlog.m4
new file mode 100644 (file)
index 0000000..6d127a8
--- /dev/null
@@ -0,0 +1,19 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2001-2012 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_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
diff --git a/m4/sanity.m4 b/m4/sanity.m4
new file mode 100644 (file)
index 0000000..c90bc98
--- /dev/null
@@ -0,0 +1,84 @@
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2012 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 9
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+       && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
diff --git a/m4/silent.m4 b/m4/silent.m4
new file mode 100644 (file)
index 0000000..d499ecb
--- /dev/null
@@ -0,0 +1,62 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2009-2012 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
+
+# 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], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+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
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
diff --git a/m4/strip.m4 b/m4/strip.m4
new file mode 100644 (file)
index 0000000..42833ca
--- /dev/null
@@ -0,0 +1,30 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2001-2012 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 2
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
diff --git a/m4/substnot.m4 b/m4/substnot.m4
new file mode 100644 (file)
index 0000000..64d91ff
--- /dev/null
@@ -0,0 +1,19 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2006-2012 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
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
diff --git a/m4/tar.m4 b/m4/tar.m4
new file mode 100644 (file)
index 0000000..244c729
--- /dev/null
+++ b/m4/tar.m4
@@ -0,0 +1,96 @@
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2012 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
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4_if([$1], [v7],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of '-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
diff --git a/m4/upc.m4 b/m4/upc.m4
new file mode 100644 (file)
index 0000000..9ba1025
--- /dev/null
+++ b/m4/upc.m4
@@ -0,0 +1,22 @@
+# Find a compiler for Unified Parallel C.                  -*- Autoconf -*-
+
+# Copyright (C) 2006-2012 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
+
+AC_DEFUN([AM_PROG_UPC],
+[dnl We need OBJEXT and EXEEXT, but Autoconf doesn't offer any public
+dnl macro to compute them.  Use AC_PROG_CC instead.
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_ARG_VAR([UPC], [Unified Parallel C compiler command])dnl
+AC_ARG_VAR([UPCFLAGS], [Unified Parallel C compiler flags])dnl
+AC_CHECK_TOOLS([UPC], [m4_default([$1], [upcc upc])], [:])
+if test "$UPC" = :; then
+  AC_MSG_ERROR([no Unified Parallel C compiler was found], [77])
+fi
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([UPC])])dnl
+])
diff --git a/m4/vala.m4 b/m4/vala.m4
new file mode 100644 (file)
index 0000000..cc6ba53
--- /dev/null
@@ -0,0 +1,29 @@
+# Autoconf support for the Vala compiler
+
+# Copyright (C) 2008-2012 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 6
+
+# 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 | sed 's/Vala  *//'`
+       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.], [77])])])])
+])
diff --git a/old/ChangeLog-tests b/old/ChangeLog-tests
new file mode 100644 (file)
index 0000000..8464944
--- /dev/null
@@ -0,0 +1,1448 @@
+2001-02-07  Tom Tromey  <tromey@redhat.com>
+
+       * Makefile.am (XFAIL_TESTS): Removed remake3.test,
+       distcommon.test.
+
+       * Makefile.am (XFAIL_TESTS): Added new files.
+
+       * remake3.test: New file.
+       * Makefile.am (TESTS): Added new file.
+
+       * distcommon.test: New file.
+       * Makefile.am (TESTS): Added new file.
+
+2001-02-04  Tom Tromey  <tromey@redhat.com>
+
+       * exsource.test: Updated for new include code.
+
+2001-02-03  Tom Tromey  <tromey@redhat.com>
+
+       * Makefile.am (XFAIL_TESTS): Removed colon7.test.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * check.test: New.
+
+2001-01-28  Tom Tromey  <tromey@redhat.com>
+
+       * listval.test: New file.
+       * Makefile.am (TESTS): Added listval.test.
+
+2001-01-26  Tom Tromey  <tromey@redhat.com>
+
+       * makevars.test: Fail if automake fails.
+
+2001-01-26  Pavel Roskin  <proski@gnu.org>
+
+       * Makefile.am (XFAIL_TESTS): Added colon7.test.
+
+2001-01-26  Akim Demaille  <akim@epita.fr>
+
+       * vtexi.test (info_TEXINFOS): Check that the path to mdate-sh is
+       already correct.
+
+       * defs (AUTOCONF, has_autoconf, needs_autoconf): New.
+       * ansi3.test, cond9.test, depacl2.test, install2.test, pr19.test,
+       * pr87.test, pr9.test, subobj3.test, target-cflags.test: Use them.
+
+2001-01-25  Pavel Roskin  <proski@gnu.org>
+
+       * makevars.test: Disable shell tracing.
+
+2001-01-25  Akim Demaille  <akim@epita.fr>
+
+       * makevars.test: New.
+
+2001-01-24  Akim Demaille  <akim@epita.fr>
+
+       * vtexi.test (info_TEXINFOS): Escape a $ in egrep pattern.
+
+2001-01-23  Akim Demaille  <akim@epita.fr>
+
+       * vtexi.test: Also check that stamp-vti properly depends upon
+       configure.in and the Texinfo source file.
+
+2001-01-21  Kevin Ryde <user42@zip.com.au>
+
+       * colon7.test: Grep for a couple of AC_OUTPUT problems.
+
+2001-01-15  Tom Tromey  <tromey@redhat.com>
+
+       * subdir3.test: Allow any number of dependencies.
+
+       * subobj4.test: Fixed test case.
+
+       * amassign.test: New file.
+       * Makefile.am (TESTS): Added new file.
+
+2001-01-12  Tom Tromey  <tromey@redhat.com>
+
+       * subobj4.test: New file.
+       * Makefile.am (TESTS): Added subobj4.test.
+
+       * cxxansi.test: New file.
+       * Makefile.am (TESTS): Added cxxansi.test.
+
+2000-12-21  Tom Tromey  <tromey@redhat.com>
+
+       * vtexi.test: Fixed to reflect new rules.
+
+2000-12-17  Tom Tromey  <tromey@redhat.com>
+
+       * Makefile.am (XFAIL_TESTS): Don't mention ldflags.test.
+
+2000-11-25  Tom Tromey  <tromey@cygnus.com>
+
+       * space.test: New file.
+       * Makefile.am (TESTS): Added space.test.
+
+2000-11-23  Pavel Roskin  <proski@gnu.org>
+
+       * pr87.test: Prevent automake from looking into .. and ../..
+       by using AC_CONFIG_AUX_DIR(.) in configure.in.
+
+2000-11-23  Tom Tromey  <tromey@cygnus.com>
+
+       * pr87.test: New file.  From PR automake/87.
+       * Makefile.am (TESTS): Added pr87.test.
+
+2000-10-17  Pavel Roskin  <proski@gnu.org>
+
+       * Makefile.am (TESTS): Added aclocali1.test.
+       * aclocali1.test: New file.
+
+2000-08-30  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (XFAIL_TESTS): Removed pr72.test.
+
+       For PR automake/72:
+       * Makefile.am (TESTS): Added pr72.test.
+       (XFAIL_TESTS): Likewise.
+       * pr72.test: New file.
+
+2000-08-28  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (XFAIL_TESTS): Added ldflags.test.
+
+2000-08-27  Tom Tromey  <tromey@cygnus.com>
+
+       For PR automake/75:
+       * Makefile.am (TESTS): Added fortdep.test.
+       * fortdep.test: New file.
+
+       For PR automake/68:
+       * Makefile.am (TESTS): Added header.test.
+       * header.test: New file.
+
+2000-08-26  Tom Tromey  <tromey@cygnus.com>
+
+       For PR automake/73:
+       * Makefile.am (TESTS): Added instman2.test.
+       * instman2.test: New file.
+
+       For PR automake/77:
+       * Makefile.am (TESTS): Added ldflags.test.
+       * ldflags.test: New file.
+
+2000-08-06  Jim Meyering  <meyering@lucent.com>
+
+       * Makefile.am (TESTS): Add subdir4.test.
+       * subdir4.test: New test for the just-fixed depcomp failure.
+
+2000-08-02  Akim Demaille  <akim@epita.fr>
+
+       * depacl.test: Weaken the regexp looking for AM_PROG_CC_C_STDC in
+       aclocal.m4.
+
+2000-05-01  Pavel Roskin  <pavel_roskin@geocities.com>
+
+       * install2.test: Prevent automake from looking into .. and ../..
+       by using AC_CONFIG_AUX_DIR(.) in configure.in
+       * pr19.test: Likewise
+       * subobj3.test: Likewise
+
+2000-03-19  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj2.test: Put depcomp into subdir.
+       * confsub.test: Put depcomp into subdir.
+       * defs: Always copy `depcomp'.
+
+       * defs: Correctly create `depcomp'.
+       * nodepcomp.test: Remove depcomp.
+
+       More for PR automake/38:
+       * symlink3.test: New file.
+       * Makefile.am (TESTS): Added symlink3.test.
+
+       For PR automake/38:
+       * symlink2.test: New file.
+       * Makefile.am (TESTS): Added symlink2.test.
+
+       For PR automake/45:
+       * defs, acoutnoq.test, texinfo8.test, tagsub.test, subdir2.test,
+       subdir.test, scripts.test, remake2.test, remake.test, pr2.test,
+       parse.test, output4.test, output3.test, output2.test, output.test,
+       libobj10.test, libobj9.test, libobj8.test, libobj7.test,
+       libobj6.test, libobj2.test, libobj.test, fpinstall.test,
+       fpinst2.test, depend3.test, confsub.test, config.test,
+       confh4.test, confh3.test, confh2.test, confh.test, conf2.test,
+       colon7.test, colon6.test, colon5.test, colon4.test, colon3.test,
+       colon2.test, colon.test, acouttbs.test, acoutqnl.test,
+       acoutput.test: Put AM_INIT_AUTOMAKE into configure.in.
+
+       * install2.test: Expect a `dist' failure.
+
+2000-03-19  Tom Tromey  <tromey@cygnus.com>
+
+       * nodepcomp.test: New file.
+       * Makefile.am (TESTS): Added nodepcomp.test.
+
+2000-02-02  Assar Westerlund  <assar@sics.se>
+
+       * target-cflags.test: new test case to target-specific CFLAGS
+
+2000-01-08  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi.test, texinfo.test, empty.test, insh2.test, texinfo8.test:
+       Remove @SET_MAKE@ before using Makefile.
+       * backsl2.test: Don't add AC_PROG_MAKE_SET in configure.in;
+       already done.
+       * defs: Put AC_PROG_MAKE_SET in configure.in.
+       * acoutnoq.test, acoutput.test, acoutqnl.test, acouttbs.test,
+       acouttbs2.test, colon.test, colon2.test, colon3.test, colon4.test,
+       colon5.test, colon6.test, colon7.test, conf2.test, confh.test,
+       confh2.test, confh3.test, confh4.test, config.test, depend3.test,
+       discover.test, fpinst2.test, gnits.test, ldadd.test, libobj.test,
+       libobj10.test, libobj2.test, libobj6.test, libobj7.test,
+       libobj8.test, libobj9.test, output.test, output2.test,
+       output3.test, output4.test, output5.test, package.test,
+       parse.test, pr2.test, remake.test, remake2.test, scripts.test,
+       stamph.test, texinfo8.test: Likewise.
+
+1999-12-26  Tom Tromey  <tromey@cygnus.com>
+
+       * subobj3.test: Remove depcomp.
+       * pr9.test: Remove depcomp.
+       Remove opportunistic check.
+       * pr19.test: Remove depcomp.
+
+1999-12-25  Tom Tromey  <tromey@cygnus.com>
+
+       * suffix2.test: Create config.guess and config.sub so user doesn't
+       need libtoolize.  From Klaus Reichl.
+
+1999-12-19  Tom Tromey  <tromey@cygnus.com>
+
+       Test for PR automake/9:
+       * pr9.test: New file.
+       * Makefile.am (TESTS): Added pr9.test.
+
+       * pr19.test: Fail gracefully if gzip missing.
+       * install2.test: Fail gracefully if gzip missing.
+
+1999-12-19  Pavel Roskin  <pavel_roskin@geocities.com>
+
+       * tests/defs: add all permissions to testSubDir before
+       removing it.
+
+1999-12-19  Tom Tromey  <tromey@cygnus.com>
+
+       * pr2.test: Use egrep, not grep.
+
+       Test for PR automake/2:
+       * pr2.test: New file.
+       * Makefile.am (TESTS): Added pr2.test.
+
+1999-12-15  Tom Tromey  <tromey@cygnus.com>
+
+       * dup3.test: New file.
+       * Makefile.am (TESTS): Added dup3.test.
+
+1999-12-13  Tom Tromey  <tromey@cygnus.com>
+
+       * pr19.test: New file.  For PR automake/19.
+       * Makefile.am (TESTS): Added pr19.test.
+
+       * lex4.test: New file.  For PR automake/6.
+       * Makefile.am (TESTS): Added lex4.test.
+
+       * suffix3.test: New file.
+       * Makefile.am (TESTS): Added suffix3.test.
+
+       * suffix2.test: Added `no-dependencies' to options in
+       Makefile.am.  Removed trailing `exit 1'.
+
+       * nostdinc.test: New file.
+       * Makefile.am (TESTS): Added nostdinc.test.
+
+       * condincl2.test: New file.
+       * condincl.test: New file.
+       * Makefile.am (TESTS): Added condincl.test, condincl2.test.
+
+       * suffix2.test: New file.
+       * Makefile.am (TESTS): Added suffix2.test.
+
+       * subobj.test: Remove final test.
+
+1999-12-12  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (XFAIL_TESTS): Removed subobj3.test.
+
+1999-12-10  Tom Tromey  <tromey@cygnus.com>
+
+       * install2.test: New file.
+       * Makefile.am (TESTS): Added install2.test.
+
+       * specflags5.test: New file.
+       * Makefile.am (TESTS): Added specflags5.test.
+
+1999-12-06  Tom Tromey  <tromey@cygnus.com>
+
+       * confh4.test: Corrected final test.
+
+       * confh4.test: New file.  PR automake/34.
+       * Makefile.am (TESTS): Mention confh4.test.
+
+1999-11-22  Tom Tromey  <tromey@cygnus.com>
+
+       * defs: Never hard link `depcomp'.  From Pavel Roskin
+
+       * exsource.test: Don't use configure substitution in _SOURCES.
+       * depend.test: Don't use configure substitution in _SOURCES.
+       * cygwin32.test: Don't use configure substitution in _SOURCES.
+
+       * subobj.test: Check for another bug.
+
+       * Makefile.am (XFAIL_TESTS): Removed sourcesub.test,
+       ltlibobjs.test.
+
+1999-11-21  Tom Tromey  <tromey@cygnus.com>
+
+       * specflags3.test: Updated test for new dependency
+       implementation.
+
+1999-10-02  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * defs: Set CDPATH to avoid verbose cd.
+
+1999-09-14  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * defs: Avoid printing the full pathname of testSubDir.
+
+       * exsource.test: Update.
+
+1999-06-01  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * exsource.test: sed @AMDEP@ away from `include' line.
+
+       * compile_f_c_cxx.test: depcomp is no longer in the same line.
+
+1999-04-25  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * compile_f_c_cxx.test: Look for $(depcomp) for C and C++.
+       * suffix.test: We no longer emit % rules.
+
+1999-04-10  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * defs: Create link or copy of depcomp.
+       * depend2.test: Removed, no more disted dependencies.
+       * Makefile.am (TESTS): Likewise.
+       * exsource.test: Adjust dependency filenames.
+       * mdate3.test: Adjust for depcomp.
+
+1999-11-07  Tom Tromey  <tromey@cygnus.com>
+
+       * dash.test: New file.
+       * Makefile.am (TESTS): Added dash.test.
+
+1999-08-26  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfo8.test: Use directory named `sub'.
+
+       * symlink.test: Use directory named `sub' (just in case; for
+       Windows).
+
+1999-08-15  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi4.test: New file.
+       * Makefile.am (TESTS): Added ansi4.test.
+
+1999-07-30  Tom Tromey  <tromey@cygnus.com>
+
+       * double.test (bin_PROGRAMS): New file.
+       * Makefile.am (TESTS): Added double.test.
+
+1999-07-27  Tom Tromey  <tromey@cygnus.com>
+
+       * empty4.test: New file.
+       * Makefile.am (TESTS): Added empty4.test.
+
+1999-07-13  Tom Tromey  <tromey@cygnus.com>
+
+       * empty3.test: New file.
+       * Makefile.am (TESTS): Added empty3.test.
+
+       * empty2.test: Also look for `pavel.o'.
+
+       * empty2.test: New file.
+       * Makefile.am (TESTS): Added empty2.test.
+
+1999-05-27  Tom Tromey  <tromey@cygnus.com>
+
+       * subobj3.test: New file.
+       * Makefile.am (TESTS): Added subobj3.test.
+       (XFAIL_TESTS): Likewise.
+
+       * ltlibobjs.test: New file.
+       * Makefile.am (TESTS): Added ltlibobjs.test.
+       (XFAIL_TESTS): Added ltlibobjs.test.
+
+       * Makefile.am (XFAIL_TESTS): Added sourcesub.test.
+
+1999-05-19  Tom Tromey  <tromey@cygnus.com>
+
+       * specflags4.test: Typo fix.
+
+       * specflags4.test: New file.  From Pavel Roskin.
+       * Makefile.am (TESTS): Added specflags4.test.
+
+       * specflags.test: Added regression test for missing space.
+
+1999-05-13  Tom Tromey  <tromey@cygnus.com>
+
+       * sourcesub.test: New file.
+       * Makefile.am (TESTS): Added sourcesub.test.
+
+1999-05-01  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj2.test: Reverted previous change; it is incorrect.
+
+       * libobj2.test: Error if libtu.a.P is mentioned.
+
+1999-04-27  Tom Tromey  <tromey@cygnus.com>
+
+       * cond9.test: New file.  From Raja R Harinath.
+       * Makefile.am (TESTS): Added cond9.test.
+
+       * pluseq8.test: New file.
+       * Makefile.am (TESTS): Added pluseq8.test.
+
+       * canon5.test: Updated to reflect change to MACRO_PATTERN.
+
+       * specflags3.test: New file.
+       * Makefile.am (TESTS): Added specflags3.test.
+       (TESTS): Now lists one file per line, for simpler maintenance.
+
+       * specflags2.test: New file.
+       * specflags.test: New file.
+       * Makefile.am (TESTS): Added specflags.test, specflags2.test.
+
+1999-04-27  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * canon5.test (bin_PROGRAMS): New file.
+       * Makefile.am (TESTS): Added canon5.test.
+
+1999-04-20  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * libobj10.test: New file.
+       * Makefile.am (TESTS): Added libobj10.test.
+
+1999-04-11  Tom Tromey  <tromey@cygnus.com>
+
+       * subobj2.test: New file.
+       * Makefile.am (TESTS): Added subobj2.test.
+
+       * subobj.test: New file.
+       * Makefile.am (TESTS): Added subobj.test.
+
+       * confh.test: Use `sed' to extract full definition of
+       DIST_COMMON.  Look for stamp-h.in rule in include/Makefile.in.
+       * Makefile.am (XFAIL_TESTS): Removed confh.test.
+
+1999-04-10  Tom Tromey  <tromey@cygnus.com>
+
+       * defs: Ensure srcdir is always absolute.
+
+       * Makefile.am (XFAIL_TESTS): Removed cond8.test.
+
+       * gcj2.test: New file.
+       * Makefile.am (TESTS): Added gcj2.test.
+
+1999-04-10  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * suffix.test: New file.
+       * Makefile.am: Added suffix.test.
+
+       * Makefile.am (XFAIL_TESTS): Added cond8.test.
+
+       * cond3.test: Refer to am_targ_OBJECTS.
+
+       * yacc2.test, yacc3.test: New files.
+       * Makefile.am (TESTS): Added yacc2.test and yacc3.test.
+
+1999-04-09  Tom Tromey  <tromey@cygnus.com>
+
+       * nodist.test: New file.
+       * Makefile.am (TESTS): Added nodist.test.
+
+       * gcj.test: New file.
+       * Makefile.am (TESTS): Added gcj.test.
+
+1999-04-08  Tom Tromey  <tromey@cygnus.com>
+
+       * cond8.test: New file.
+       * Makefile.am (TESTS): Added cond8.test.
+
+1999-04-07  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * backsl2.test: New file.
+       * Makefile.am (TESTS): Added backsl2.test.
+
+       * texinfo8.test: texinfo.tex is only disted by aux/Makefile.
+
+       * texinfo8.test: New file.
+       * Makefile.am (TESTS): Added texinfo8.test.
+
+1999-03-31  Tom Tromey  <tromey@cygnus.com>
+
+       * pluseq2.test, pluseq3.test: Updated for recent \-preservation
+       change.
+
+1999-03-31  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * Makefile.am (XFAIL_TESTS): add confh.test
+
+1999-03-30  Tom Tromey  <tromey@cygnus.com>
+
+       * mclean.test: Fixed typo.
+
+       * mclean.test: New file.
+       * Makefile.am (TESTS): Added mclean.test.
+
+1999-03-30  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * confh.test: if include/Makefile.am is created, the test fails
+
+1999-03-27  Tom Tromey  <tromey@cygnus.com>
+
+       * extra4.test: Allow EXTRA_DATA to be specified.
+
+1999-03-22  Tom Tromey  <tromey@cygnus.com>
+
+       * ldadd.test: Use AC_PROG_LIBTOOL, not AM_PROG_LIBTOOL.
+
+       * pluseq7.test: New file.
+       * Makefile.am (TESTS): Added pluseq7.test.
+       * pluseq6.test: New file.
+       * Makefile.am (TESTS): Added pluseq6.test.
+
+1999-03-21  Tom Tromey  <tromey@cygnus.com>
+
+       * nodep.test: New file.
+       * Makefile.am (TESTS): Added nodep.test.
+
+       * subdir3.test: Correctly mention _SOURCES in Makefile.am.
+
+       * subdir3.test: New file.
+       * Makefile.am (TESTS): Added subdir3.test.
+       * xsource.test: Changed to check whether multiple source files
+       with same object name cause failure.
+
+1999-03-11  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj9.test: New file.
+       * Makefile.am (TESTS): Added libobj9.test.
+
+       * insthook.test: Don't require GNU grep.  From John Pierce.
+
+       * lex3.test: New file.
+       * Makefile.am (TESTS): Added lex3.test.
+
+1999-03-01  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi3.test: Use no-dependencies option to avoid GNU make
+       requirement.  From Jerome Lovy.
+
+1999-02-27  Tom Tromey  <tromey@cygnus.com>
+
+       * ext.test (foo_SOURCES): New file.
+       * Makefile.am (TESTS): Added ext.test.
+
+1999-02-11  Tom Tromey  <tromey@cygnus.com>
+
+       * cygwin32.test: Use AC_EXEEXT, not AM_EXEEXT.
+
+       * obsolete2.test: New file.
+       * Makefile.am (TESTS): Added obsolete2.test.
+
+1999-02-01  Tom Tromey  <tromey@cygnus.com>
+
+       * installsh.test (AUTOMAKE): Use $PERL.  From Pavel Roskin.
+
+       * cond5.test: Sleep 15 seconds, not 5.  Some people still run the
+       test on slow machines.
+
+1999-01-22  Tom Tromey  <tromey@cygnus.com>
+
+       * copy.test: New file.
+       * Makefile.am (TESTS): Added copy.test.
+
+       * ppf77.test: New file.
+       * Makefile.am (TESTS): Added ppf77.test.
+
+1999-01-14  Tom Tromey  <tromey@cygnus.com>
+
+       * confh3.test: New file.
+       * Makefile.am (TESTS): Added confh3.test.
+
+       * confh2.test: New file.
+       * Makefile.am (TESTS): Added confh2.test.
+
+       * confh.test: Run automake differently the second time.
+
+       * mdate3.test: New file.
+       * Makefile.am (TESTS): Added mdate3.test.
+
+1999-01-11  Tom Tromey  <tromey@cygnus.com>
+
+       * confh.test: New file.
+       * Makefile.am (TESTS): Added confh.test.
+
+1999-01-10  Tom Tromey  <tromey@cygnus.com>
+
+       * objc.test: Updated to account for new ObjC support.
+
+       * pluseq5.test: New file.
+       * Makefile.am (TESTS): Added pluseq5.test.
+
+       * all.test: Test all *-local targets, not just all-local.
+
+       * all.test: New file.
+       * Makefile.am (TESTS): Added all.test.
+
+1999-01-07  Tom Tromey  <tromey@cygnus.com>
+
+       * include.test: New file.
+       * Makefile.am (TESTS): Added include.test.
+
+1998-12-21  Tom Tromey  <tromey@cygnus.com>
+
+       * insthook.test: Updated to fail when it should.
+
+1998-12-11  Tom Tromey  <tromey@cygnus.com>
+
+       * insthook.test: New file.
+       * Makefile.am (TESTS): Added insthook.test.
+
+1998-11-27  Tom Tromey  <tromey@cygnus.com>
+
+       * cond7.test: New file.  From Pavel Roskin.
+       * Makefile.am (TESTS): New file.
+
+1998-11-10  Tom Tromey  <tromey@cygnus.com>
+
+       * pluseq4.test: New file.
+       * Makefile.am (TESTS): Added pluseq4.test.
+
+1998-11-09  Tom Tromey  <tromey@cygnus.com>
+
+       * pluseq3.test: New file.
+       * Makefile.am (TESTS): Added pluseq3.test.
+
+       * pluseq2.test: New file.
+       * Makefile.am (TESTS): Added pluseq2.test.
+
+1998-10-30  Tom Tromey  <tromey@cygnus.com>
+
+       * pluseq.test: New file.
+       * Makefile.am (TESTS): Added pluseq.test.
+
+1998-10-28  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (distclean-local): Typo fix.
+
+1998-10-20  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (TESTS): Sorted tests.  From Jeff Garzik.
+
+1998-10-13  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj7.test: Updated to reflect minor change in automake (test
+       wasn't resilient enough).
+       * instman.test: Updated to reflect fact that mkinstalldirs will be
+       in distribution.
+
+       * cxxonly.test: Removed.
+
+Mon Aug 31 09:46:59 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * Makefile.am (TESTS): Added compile_f_c_cxx.test.
+       * compile_f_c_cxx.test: New file.
+
+Sat Aug 29 18:17:58 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * Makefile.am (TESTS): Added flink.test link_c_cxx.test
+       link_f_c.test link_f_c_cxx.test link_f_cxx.test link_f_only.test.
+       Removed flink.test.
+       * flibs.test: New File.
+       * link_c_cxx.test: New file.
+       * link_f_c.test: New file.
+       * link_f_c_cxx.test: New file.
+       * link_f_cxx.test: New file.
+       * link_f_only.test: New file.
+
+Tue Aug 11 10:46:36 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * Makefile.am (TESTS): Add cxxonly.test, fonly.test, flink.test,
+       fnoc.test and fo.test.
+       * cxxonly.test: New file.
+       * fonly.test: New file.
+       * flink.test: New file.
+       * fnoc.test: New file.
+       * fo.test: New file.
+
+1998-10-08  Tom Tromey  <tromey@cygnus.com>
+
+       * confdist.test: New file.
+       * Makefile.am (TESTS): Added confdist.test.
+
+1998-10-07  Tom Tromey  <tromey@cygnus.com>
+
+       * extra4.test: New file.
+       * extra3.test: New file.
+       * Makefile.am (TESTS): Added extra3.test, extra4.test.
+
+Mon Oct  5 12:47:32 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * badline.test: New file.
+       * Makefile.am (TESTS): Added badline.test.
+
+Thu Oct  1 00:03:39 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * seenc.test: Updated test to account for removed line numbers.
+
+       * xsource.test: Correctly fail if source in subdir.
+
+Wed Sep 30 12:17:34 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * colon7.test: New file.
+       * Makefile.am (TESTS): Added colon7.test.
+
+Tue Sep 29 02:09:11 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * config.test: New file.
+       * Makefile.am (TESTS): Added config.test.
+
+       * Makefile.am (TESTS): Reference clean.test, not clean.am.
+
+Mon Sep 28 01:46:34 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * recurs2.test: New file, from Jim Meyering.
+       * Makefile.am (TESTS): Added recurs2.test.
+
+       * Makefile.am (TESTS): Added clean.am.
+       * clean.test: New file.
+       * ansi2.test: Updated test for new SUBDIRS change.
+       * noinst.test: Updated test for new SUBDIRS change.
+       * checkall.test: Added check to make sure check-local is handled.
+       Updated test for new SUBDIRS change.
+       * java.test: Updated test for new SUBDIRS change.
+
+Sun Sep 27 20:01:20 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (TESTS): Added else.test.
+       * else.test: New file.
+
+       * Makefile.am (TESTS): Added parse.test.
+       * parse.test: New file.
+
+Sat Sep 26 19:17:43 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.test: Put AM_INIT_AUTOMAKE into configure.in.
+       * library.test: Use AC_EXEEXT.
+       * texinfo5.test: Use AC_EXEEXT.
+       * Many files: use AC_PROG_INSTALL, not AM_PROG_INSTALL.
+
+       Test suite updates for the @SHELL@ change:
+       * exsource.test: Set SHELL on `make' command line.
+       * ansi.test: Set SHELL on `make' command line.
+       * texinfo.test: Set SHELL on `make' command line.
+       * insh2.test: Set SHELL on `make' command line.
+       * empty.test: Rewrite @SHELL@ to /bin/sh.
+
+Tue Sep 22 01:20:00 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi3.test: Use gcc and not gcc -traditional.
+
+Tue Sep 15 22:19:48 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfo7.test: New file.
+
+Sun Aug 16 23:17:38 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * colon6.test: New file.
+
+Fri Aug 14 11:09:03 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * cond6.test: New file.
+
+Mon Aug 10 21:05:15 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi3.test: New file.
+
+Sat Jul 18 00:27:26 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * recurs.test: New file.
+
+       * cond3.test: Changed to match recent fixes.
+
+Fri Jul 17 23:44:49 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * cond4.test, cond5.test: New files.
+
+Tue May 26 01:44:37 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * syntax.test: New file.
+
+Sun Apr  5 15:26:42 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * version3.test: Increased version number to ensure failure for a
+       long time to come.
+
+       * library.test: New file.
+
+       * lex2.test: Updated since lex error changed to warning.
+
+Fri Apr  3 13:04:50 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * colon5.test: New file.
+
+       * exdir2.test: New file.
+       * instdata.test: New file.
+
+Wed Mar 25 15:30:39 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * badopt.test: new file.
+       * version3.test: New file.
+
+Mon Mar 23 10:52:36 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj8.test: New file.
+
+Fri Mar 20 00:32:16 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * lex2.test: New file.
+
+       * aclocalii.test: New file.
+
+       * javasubst.test: New file.
+
+Thu Mar 19 14:11:45 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * javaprim.test: New file.
+
+       * sinclude.test: New file.
+
+Wed Mar 18 17:15:22 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * java.test: New file.
+
+Sun Mar  8 15:35:14 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * colon4.test: New file.
+
+Fri Mar  6 21:17:10 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * colon3.test: Refined tests.
+
+Tue Feb 24 12:29:05 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * man.test: Removed.
+
+       * condman2.test: New file.
+
+Mon Feb 23 16:20:49 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfo6.test: New file.
+
+Mon Feb 16 00:08:58 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocali.test: New file.
+
+Fri Feb 13 00:36:38 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfo5.test (info_TEXINFOS): New file.
+
+       * condman.test: New file.
+
+       * Makefile.am (distclean-local): Ignore rm return value.
+
+Thu Feb 12 21:00:34 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * unused.test: New file.
+
+       * whoami.test: New file.
+
+       * alpha.test: New file.
+
+Wed Feb 11 17:28:30 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.test: New file.
+
+Thu Feb  5 13:22:17 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * cxxcpp.test: New file.
+
+Mon Dec  1 15:48:16 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * cond3.test: New file.
+
+Sat Nov 29 22:09:27 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * objc.test: New file.
+
+Sat Oct 25 00:04:04 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj7.test: New file.
+
+Tue Oct 21 00:46:24 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * lex2.test: Removed; @LEXLIB@ no longer required.
+
+       * depacl2.test: Use -I, not --acdir.
+
+       * install.test: New file.
+       * ammissing.test: New file.
+
+Sun Sep 28 17:19:52 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * cxxnoc.test: Changed to reflect MKDEP change.
+
+Wed Sep 24 16:01:59 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * output5.test: New file.
+
+       * depend3.test: New file.
+
+Mon Aug 25 17:24:42 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * cygwin32.test: Use AM_EXEEXT, not AM_CYGWIN32.
+
+Tue Aug  5 20:33:33 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj6.test: New file.
+
+Mon May 26 22:47:36 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * depend.test: Fixed test.
+
+Sat May 10 18:28:14 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * depend2.test: Fixed test; added another check.
+
+Sun May  4 15:47:24 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * xsource.test: New file.
+
+Tue Apr 29 19:08:47 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * cond.test, cond2.test: New files from Ian Taylor.
+
+Sun Apr 27 21:07:49 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * confsub.test: Fixed bug.
+
+Fri Apr 25 12:30:22 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * conf2.test: New file.
+
+Tue Apr  8 19:26:07 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi.test, empty.test, exsource.test, insh2.test, man.test,
+       mkinst2.test, texinfo.test, texinfo2.test: Use $MAKE.
+
+       * defs (MAKE): Define.
+
+Mon Apr  7 17:35:49 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * version2.test: New file.
+
+Wed Apr  2 00:12:26 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * ldadd.test: New file.
+
+Fri Mar 28 23:36:04 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * stamph.test: New file.
+
+Thu Mar 27 18:10:47 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * lisp.test: New file.
+
+Sat Mar 22 01:14:03 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * cygwin32.test: New file.
+
+Thu Mar 20 00:34:33 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * exsource.test: Exit if not using GNU make.
+
+Tue Mar 18 22:36:34 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * remake2.test: Changed for `missing' support.
+
+Sun Mar 16 14:29:45 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * seenc.test: New file.
+
+       * checkall.test, noinst.test: Don't use bogus construct when
+       checking.
+
+       * libobj3.test, canon.test, target.test, spell2.test,
+       primary2.test, discover.test, lex2.test: Fixed to test what it
+       claims to test.
+
+Mon Mar 10 23:21:03 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj.test, libobj2.test: Use AC_PROG_CC.
+
+       * confsub.test: Modified for definition of CONFIG_HEADER_FULL.
+
+       * cxxlibobj.test: New file.
+
+Wed Feb 26 13:05:42 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * tagsub.test: New file.
+
+Sun Feb 23 11:58:00 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfo.test, texinfo2.test, texinfo3.test, info.test,
+       mdate.test, vtexi.test, canon2.test, mdate2.test, vtexi2.test:
+       Updated for new texinfo handling.
+
+       * texinfo4.test: New file.
+       * texinfo3.test: New file.
+
+Sat Feb 22 09:48:44 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * yaccpp.test: New file.
+
+Tue Feb 11 09:51:47 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfo2.test: Fixed quoting bug.  From Michael Brantley.
+
+Tue Feb  4 18:41:32 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * confsub.test: Check subdir/Makefile.in to make sure dependency
+       is correct.
+
+       * ansi2.test: ANSI2KNR dependency of all.
+
+Tue Dec 10 00:43:14 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * defun2.test: New file.
+       * subst.test: New file.
+
+Sun Dec  8 12:25:22 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * colneq2.test: New file.
+
+Sat Dec  7 12:52:45 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * output4.test: New file.
+       * output3.test: New file.
+       * remake2.test: New file.
+       * output2.test: New file.
+
+Fri Dec  6 19:00:31 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * output.test: New file.
+
+Thu Dec  5 18:23:17 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * remake.test: New file.
+       * colon3.test: New file.
+       * colon2.test: New file.
+       * cxxo.test: New file.
+
+Wed Dec  4 00:41:44 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * defs: Allow user to set interpreter via PERL environment
+       variable.
+
+       * Makefile.am (distclean-local): New target.
+
+Tue Dec  3 11:55:18 1996  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * dup.test, dup2.test: Modified, now that aclocal allows
+       acinclude.m4 to override any installed macro file.
+
+Mon Dec  2 22:44:16 1996  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * alllib.test: Removed from distribution, since LIBFILES are no
+       longer computed.
+
+Sun Nov 24 14:36:00 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * extra2.test: New file.
+
+Fri Nov 22 00:10:04 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * stdlib.test: New file.
+
+Thu Nov 21 22:51:35 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * confsub.test: Use AM_CONFIG_HEADER.
+
+Tue Nov 19 23:37:32 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * confvar2.test: New file.
+
+Fri Nov 15 00:09:18 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi2.test: New file.
+
+       * libfiles.test: Removed (obsolete).
+
+       * libobj.test, canon4.test, libobj2.test, alllib.test,
+       ranlib.test: Fixed for Gord's changes to library handling.
+
+       * Many files: Use AC_PROG_CC to avoid error.
+
+Thu Oct 24 15:22:53 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * confvar.test: New file.
+       * ranlib.test: New file.
+
+Mon Oct 21 22:57:51 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * version.test: New file.
+
+Fri Oct 11 00:51:04 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * libobj5.test: New file.
+       * libobj4.test: New file.
+       * distdir.test: New file.
+       * lex2.test: New file.
+
+Sun Oct  6 11:00:44 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * acsilent.test: New file.
+       * req.test: New file.
+       * acinclude.test: New file.
+
+Sat Oct  5 11:31:38 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * discover.test: New file.
+
+       * mkinst2.test: Renamed from mkinstall2.test.
+
+       * symlink.test: New file.
+
+Thu Oct  3 19:55:23 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * vpath.test: New file.
+
+Mon Sep 30 08:34:07 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * comment2.test: New file.
+
+Mon Sep 23 00:23:34 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * spell3.test: New file.
+
+Sun Sep 22 14:42:09 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * depend2.test: New file.
+
+Sat Sep 21 14:01:10 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * primary2.test: New file.
+       * primary.test: New file.
+
+Fri Sep 20 09:39:27 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * confsub.test: New file.
+
+Mon Sep 16 00:05:52 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * spell2.test: New file.
+
+       * spell.test: New file.
+
+Thu Sep 12 14:57:49 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * implicit.test: New file.
+
+Wed Sep 11 13:57:10 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * colneq.test: New file.
+
+       * interp2.test: New file.
+
+Sun Sep  8 10:47:07 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * gnits.test: New file.
+
+Thu Sep  5 22:54:26 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * libobj3.test: New file.
+
+Tue Sep  3 20:57:38 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * block.test: New file.
+
+Mon Aug 26 23:04:01 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * alllib.test: New file.
+
+       * interp.test: New file.
+
+Mon Aug 12 13:58:55 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * libobj2.test: New file.
+
+       * order.test: New file.
+
+Sun Aug 11 00:10:42 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * cxxnoc.test: New file.
+
+       * cxxlink.test: Use AC_PROG_CXX.
+
+       * lex.test: Use AC_PROG_LEX, AC_DECL_YYTEXT.
+
+       * yacc.test: Use AC_PROG_YACC in configure.in.
+
+       * cxxlink.test: New file.
+
+       * yacc.test: Fixed test for new yacc code.
+
+Sat Aug 10 10:09:45 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * defun.test: New file.
+
+       * dup.test: New file.
+
+Fri Aug  9 09:18:07 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * canon4.test: New file.
+
+Thu Aug  8 10:47:45 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * exsource.test: New file.
+
+       * subdir2.test: New file.
+
+       * scripts.test: New file.
+
+Tue Aug  6 12:30:41 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * lex.test: New file.
+
+Mon Aug  5 01:03:03 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * obsolete.test: New file.
+
+       * Many files: Use AM_ macros, not fp_ macros.
+
+       * info.test: New file.
+
+Sun Aug  4 12:47:34 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * man.test: New file.
+
+       * acouttbs2.test: New file.
+
+       * libfiles.test: New file.
+
+       * comment.test: New file.
+
+       * tags.test: New file.
+
+       * vtexi2.test: New file.
+
+       * colon.test: New file.
+
+Sun Jul 28 11:43:00 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * defs (ACLOCAL): Added definition.
+
+       * depacl.test, depacl2.test, error.test: New tests for aclocal.
+
+Fri Jul 19 10:09:56 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * ansi.test: New file.
+
+Sun Jun  9 23:20:03 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * texinfo2.test: New file.
+
+Sat Jun  8 10:00:42 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * mkinstall2.test: New file.
+
+Fri Jun  7 18:17:11 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * yacc.test: New file.
+
+Sun Jun  2 09:04:52 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * dejagnu.test: New file.
+
+       * texinfo.test: New file.
+
+Thu May 23 09:58:48 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * fpinst2.test: New file.
+
+       * fpinstall.test: New file.
+
+Wed May 22 09:45:52 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * outdir.test: New file.
+
+Sat May 18 10:51:37 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * insh2.test: New file.
+
+Fri May 17 17:32:35 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * number.test: New file.
+
+       * defs, many .test files: Define PACKAGE and VERSION in
+       configure.in.
+
+       * package.test: New file.
+
+       * backsl.test: New file.
+
+Thu May 16 09:15:57 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * subdir.test: New file.
+
+Tue May 14 10:17:17 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * mdate2.test: New file, from report by Jim Meyering.
+
+       * canon3.test: New file.
+
+       * auxdir.test: New file.
+
+       * mkinstall.test: New file.
+
+       * extra.test: Reversed sense of test.
+
+Fri Apr 26 15:15:01 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * instman.test: New file.
+
+Thu Apr 25 17:12:30 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * noinst.test: New file
+
+       * exdir.test: Quoting change from Gord Matzigkeit.
+
+       * extra.test (EXTRA_PROGRAMS): New file.
+
+Tue Apr  9 22:55:07 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * target.test: New file.
+
+Wed Apr  3 15:10:54 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * canon2.test: New file
+
+       * insh.test: New file.
+
+Wed Mar 27 23:31:51 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * rulepat.test: New file.
+
+Sat Mar 16 08:37:36 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * empty.test: New file.
+
+Fri Mar 15 17:55:13 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * installsh.test: New file.
+
+Tue Mar  5 16:22:46 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * badprog.test: Rewrote.
+
+       * canon.test: New file.
+
+Mon Mar  4 21:08:37 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * exdir.test: New file.
+
+Fri Mar  1 17:23:53 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * depend.test: New file.
+
+       * badprog.test: New file.
+
+       * defs (AUTOMAKE): Pass --foreign.
+
+Thu Feb 29 20:23:42 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       More tests:
+       * prefix.test: New file.
+       * spelling.test: New file
+       * confincl.test: New file.
+       * Makefile.am (TESTS): Updated.
+
+Wed Feb 28 11:57:02 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * acoutqnl.test: New file.
+       * Makefile.am (TESTS): Include it.
+
+Tue Feb 27 10:52:58 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * Makefile.am (DIST_OTHER): Include "defs".
+
+       * defs (AUTOMAKE): Never relative to $srcdir.
+
+Mon Feb 26 23:14:08 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * libobj.test: Put AC_PROG_RANLIB in configure.in
+
+Mon Feb 19 08:22:22 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * proginst.test: New file.
+
+Tue Feb 13 18:54:39 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * libobj.test: New file.
+
+Mon Feb 12 17:05:48 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * acouttbs.test: New file.
+
+       * Makefile.am (DIST_OTHER): New variable.
+
+       * acoutnoq.test: New file.
+
+Sun Feb 11 16:39:14 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * checkall.test: Delay a little.
+
+       * Makefile.am (check-local): Print name of failing test.
+
+Sat Feb 10 17:08:39 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * checkall.test: New file.
+
+       * instexec.test: New file.
+
+       * mdate.test, vtexi.test, acoutput.test: New files.
+
+       * Started.
+
+-----
+
+Copyright 2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
diff --git a/old/ChangeLog.00 b/old/ChangeLog.00
new file mode 100644 (file)
index 0000000..c50c4eb
--- /dev/null
@@ -0,0 +1,2211 @@
+2000-12-29  Derek Price  <derek.price@openavenue.com>
+
+       * automake.in (handle_dependencies): Switched the DEP_FILES
+       definition to be conditional on @AMDEP@.
+
+2001-02-03  Ville Laurikari  <vlaurika@hutcs.cs.hut.fi>
+
+       * depcomp (aix): New side-effect dependency tracking mode, for
+       the C for AIX compiler.
+       * m4/depend.m4 (AM_DEPENDENCIES): Recreate `conftest.c' and
+       `conftest.h' for each test.
+
+2001-02-03  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Dist): Updated to mention caveat of putting
+       directory in EXTRA_DIST and also providing a nice example of
+       removing the CVS dir.
+       From Ganesan Rajagopal.
+
+       * m4/depend.m4 (depcpp): Run tests in a subdir.  Fixes report from
+       Bob Proulx.
+
+       * automake.in (scan_one_autoconf_file): Disable warning about
+       AM_PROG_LIBTOOL.
+
+       * automake.in (handle_configure): Don't modify variable which
+       aliases list element.  Don't push @inputs onto the dist list.
+       Fixes colon7.test.
+       (initialize_per_input) [dist_dirs]: New variable.
+       (handle_dist_worker): Use global dist_dirs.
+       (handle_configure): Set dist_dirs entries at toplevel.
+
+2001-02-02  Gordon Sadler  <gbsadler1@lcisp.com>
+
+       * automake.texi (Java Support): Added index, @section.
+
+2001-02-02  Pavel Roskin  <proski@gnu.org>
+
+       * automake.in (scan_autoconf_traces): Restore trace messages.
+
+       * automake.in (handle_aclocal_m4): Fix stripping of the initial
+       "./" from the dependencies of aclocal.m4.
+       Reported by Ralf Corsepius.
+
+2001-02-01  Pavel Roskin  <proski@gnu.org>
+
+       * aclocal.in: Rename "verbosity" to "verbose". Always prepend
+       "aclocal: " to the verbose output.
+
+       * automake.in: Remove all debugging messages.
+
+2001-01-31  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (add_depend2): Quote properly $obj and $source.
+
+2001-01-31  Akim Demaille  <akim@epita.fr>
+
+       * depend2.am: Instead of replacing @PFX@ in $(@PFX@COMPILE), and
+       then replacing `$(@PFX@COMPILE)' for the files that need some
+       special flags, use only @COMPILE@.  Similarly for @LTCOMPILE@.
+       Try to document this file.
+       * automake.in (add_depend2): Adjust to these changes.
+
+2001-01-31  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%factored_dependencies): New.
+       (file_contents): Use it.
+       (handle_phony): Rename as...
+       (handle_factored_dependencies): this.
+       * subdirs.am: No need for convolved syntax to declare .PHONY.
+
+2001-01-31  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: maintainer-check fixes.
+
+2001-01-31  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (file_contents): Rewrite: instead of trying to parse
+       it line by line, first swallow it completely into $CONTENTS,
+       *then*, parse it *paragraph* by paragraph.
+
+2001-01-30  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (file_contents): Remove.
+       (file_contents_with_transform): Swap the order of the arguments,
+       and rename as...
+       (file_contents): this.
+       Adjust all uses.
+
+2001-01-30  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (scan_one_autoconf_file): Don't mention
+       omit_dependencies.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_autoconf_config_files): Extract from
+       &scan_one_autoconf_file.
+       (&scan_one_autoconf_file): Use it.
+       (&scan_autoconf_traces): New.
+       ($scan_autoconf_files): Use it.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * texinfos.am, tags.am, subdirs.am, multilib.am, mans.am: Add a
+       .PHONY target.
+       * automake.in (handle_texinfo, handle_man_pages, handle_multilib)
+       (handle_etags, handle_subdirs): Don't push into @phony.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (scan_one_autoconf_file): Correctly recognize
+       configure.ac.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_tests_dejagnu): New, extracted from...
+       (handle_tests): here.  Use `.PHONY:'.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_phony): Sort.
+       (file_contents_with_transform): Catch `.PHONY:'.
+       (handle_tests): Instead dumping the hard coded target check-TESTS
+       and registering its .PHONYsm, get them from...
+       * check.am: here, new file.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (add_depend2): Use &transform.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_tags): Use &transform.
+       (am_error, am_line_error, am_conf_error, read_am_file): Use
+       directly arrays in strings, no need for &join.
+       Require Perl 5.
+       * Makefile.am (maintainer-check): Use grep -w when looking for
+       words.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (prog_error): New.
+       Spread its use.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_single_transform_list): if (@list) { foreach
+       (@list) ...} can be written as a simple `foreach' loop.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (define_standard_variables): Use &transform instead
+       of build_rx.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_texinfo): Use the new $texinfodir instead of
+       the removed $texinfo_tex.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_libraries, handle_ltlibraries): Use
+       &transform.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_programs) <xexe>: Remove, replaced by
+       `exeext'.
+       Use it, and &transform.
+
+2001-01-29  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (get_object_extension) <$default_includes>: New.
+       Use it and &transform.
+
+2001-01-28  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (variable_value_as_list_worker): Handle entries in
+       %am_var_defs.  Fixes listval.test.
+
+2001-01-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_texinfo): Don't use $conf_pat, just
+       $conf_dir to transform MDDIR since now &transform handles the
+       escaping of RE special characters by itself.
+
+2001-01-24  Akim Demaille  <akim@epita.fr>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Don't leave `AC_PROG_CC' etc. in
+       clear.
+       * m4/init.m4: Likewise.
+       * m4/sanity.m4: s/conftestfile/conftest.file/.
+
+2001-01-24  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (handle_libraries): Use $configure_ac; typo fix.
+
+       * automake.in (transform): Quote substitution.
+
+2001-01-21  Alexandre Duret-Lutz  <duret_g@epita.fr>
+           Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (obsolete_rx): Match whole macro names, not
+       substrings.
+       * aclocal.in (obsolete_rx): Likewise.
+
+2001-01-21  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi: Changed dir category.
+
+2001-01-18  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_texinfo): Use &transform, and transform
+       CONFIGURE_AC.
+       Reported by Lars Hecking, and diagnosed by Raja R Harinath.
+
+2001-01-16  Akim Demaille  <akim@epita.fr>
+
+       Let Automake support `configure.ac'.
+
+       * automake.in: In the comments, prefer `configure.ac' to
+       `configure.in'.
+       When using &am_conf_error, don't repeat `in configure.in', since
+       the function already reports it.
+       When referring to `configure.in' use `$configure_ac' instead.
+       (configure_ac): New global variable.
+       (scan_configure, scan_one_configure_file): Rename as...
+       (scan_autoconf_files, scan_one_autoconf_file): this.
+       (scan_autoconf_files): Compute $configure_ac.
+       (transform): New function.
+       (handle_configure): Use it to transform CONFIGURE_AC in
+       `remake.am' and in `remake-hdr.am'.
+       (common_files): Also consider `configure.ac'.
+       Use consistently single quotes.
+       * aclocal.in (configure_ac): New variable.
+       Use it.
+       * texi-vers.am: Depend on CONFIGURE_AC not configure.in.
+       * remake.am: Likewise.
+       * remake-hdr.am: Likewise.
+
+2001-01-16  Akim Demaille  <akim@epita.fr>
+
+       * m4/multi.m4: Remove the hairy useless quotation of `$'.
+       Simplify `ifelse([$2],,,[$2])' into... `$2'!
+       * m4/minuso.m4: Don't use changequote!
+       * m4/cond.m4: Fix quotation.
+       * m4/sanity.m4: Follow the Autoconf coding style.
+       * m4/missing.m4 (AM_MISSING_INSTALL_SH): Use a for loop.
+       * m4/depend.m4 (AM_DEPENDENCIES): Fix quotation issues.
+       Use AC_CACHE_CHECK.
+
+2001-01-15  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (handle_single_transform_list): Don't print rule
+       here when source is in subdir and object is not.  Fixes
+       subobj4.test.
+
+       * automake.in (handle_single_transform_list): Correctly compute
+       $nonansi_obj.  Fixes cxxansi.test.
+
+       * automake.texi (Man pages): Updated to account for man1_MANS,
+       etc.
+
+2001-01-13  Steve Robbins  <smr@debian.org>
+           Tom Tromey  <tromey@redhat.com>
+
+       * aclocal.in (scan_configure): Don't recognize macro assignments
+       or AC_SUBSTs.
+       (add_file): Likewise.
+
+2001-01-13  Kevin Ryde  <user42@zip.com.au>
+
+       * automake.in (handle_ltlibraries): Omit -rpath from
+       check_LTLIBRARIES, as per noinst_LTLIBRARIES.
+
+2001-01-11  Tom Tromey  <tromey@redhat.com>
+
+       * depcomp (case gcc3): Use -MD, not -M.
+
+2001-01-10  Tom Tromey  <tromey@redhat.com>
+
+       * depcomp: Handle gcc 3.
+
+2000-12-23  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in: Updated to 1.4c for cvs.
+
+       * configure.in: Updated to 1.4b and released.
+
+       * config.guess, config.sub, texinfo.tex: New versions.
+
+       * automake.in (handle_dist_worker): Always define DIST_SUBDIRS.
+       Re-fixes pr87.test.
+
+       * subdirs.am (maintainer-clean-recursive): Use DIST_SUBDIRS for
+       distclean and maintainer-clean.
+       * automake.texi (Top level): Document use of DIST_SUBDIRS.
+
+       From Rusty Ballinger:
+       * automake.in (handle_java): Don't skip `noinst' prefix.
+
+       * automake.texi (Invoking aclocal): Mention ## comments.
+
+2000-12-22  Tom Tromey  <tromey@redhat.com>
+
+       From Raja R Harinath:
+       * automake.in (libtoolize_sometimes): New global.
+       (initialize_global_constants): Added libtoolize_sometimes to
+       common_files.
+
+       * m4/depend.m4 (AM_SET_DEPDIR): Ignore errors when running rmdir.
+
+       * m4/depend.m4 (AM_SET_DEPDIR): Remove .deps directory when done.
+
+2000-12-21  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Tags): Document GTAGS target.
+       * tags.am (GTAGS): New target.
+
+       * automake.in (libtoolize_files): Removed ltconfig.
+       (initialize_global_constants): Added ltconfig to common_files.
+
+2000-12-21  Kevin Ryde  <user42@zip.com.au>
+
+       * automake.in (handle_footer): Generate .SUFFIXES target when user
+       defines suffixes but automake does not.
+
+2000-12-20  Marc Espie  <espie@openbsd.org>
+
+       * automake.in (handle_texinfo): Make path of $vtexi explicit in
+       dependency.
+       * texi-vers.am: Likewise.
+
+2000-12-20  Tom Tromey  <tromey@redhat.com>
+
+       From Kevin Ryde:
+       * automake.in (handle_footer): Always push user suffixes at the
+       start of .SUFFIXES:.
+       * automake.texi (Suffixes): Updated to reflect new suffix
+       handling.
+
+2000-12-18  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (handle_built_sources): Removed.
+       (handle_merge_targets): Handle BUILT_SOURCES.
+       * automake.texi (Sources): Updated documentation of
+       BUILT_SOURCES.
+
+2000-12-17  Tom Tromey  <tromey@redhat.com>
+
+       * m4/protos.m4: Always do header checks.
+
+       * automake.in (handle_ltlibraries): Check for LDFLAGS variables
+       before using values.
+
+       * automake.in (handle_ltlibraries): Allow _LDFLAGS to be
+       conditionally defined.  Fixes PR automake/77 and ldflags.test.
+
+2000-11-25  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (file_contents_with_transform): Added file name and
+       line number to error report.
+       (MACRO_PATTERN, BOGUS_MACRO_PATTERN): Leading spaces are ok.
+
+2000-11-23  Pavel Roskin  <proski@gnu.org>
+
+       * m4/regex.m4 (AM_WITH_REGEX): This macro was broken because
+       of M4 underquoting.
+       * m4/ccstdc.m4 (AC_PROG_CC_STDC): Added some M4 quotes.
+       * m4/dmalloc.m4 (AM_WITH_DMALLOC): Likewise.
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Likewise.
+       * m4/maintainer.m4 (AM_MAINTAINER_MODE): Likewise.
+       * m4/multi.m4 (AM_WITH_DMALLOC): Likewise.
+       * m4/python.m4 (AM_PATH_PYTHON): Likewise.
+       * m4/strtod.m4 (AM_FUNC_STRTOD): Likewise.
+
+2000-11-23  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (require_file_internal): Pass $file as second
+       argument to maybe_push_required_file.  Fixes PR automake/87.
+
+2000-11-18  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Redirect `$am_depcomp' stdout to
+       /dev/null.  From Paul Martinolich.
+
+2000-11-16  Morten Eriksen  <mortene@sim.no>
+
+       * aclocal.in (write_aclocal): Set ``binmode'' after file has been
+       opened, otherwise it has no effect.
+
+2000-10-23  Morten Eriksen  <mortene@sim.no>
+
+       * aclocal.in (write_aclocal): Don't write aclocal.m4 with
+       CRLFs. This circumvents a bug in Cygwin bash.
+
+       * automake.in (generate_makefile): Don't write Makefile.in
+       files with CRLFs, as it causes problems for the dependency-file
+       extraction in AM_OUTPUT_DEPENDENCY_COMMANDS.
+
+2000-10-19  Alex Hornby  <alex@anvil.co.uk>
+
+       * automake.in (handle_merge_targets): Allow parallel install
+       with forced relink.
+
+2000-10-19  Akim Demaille  <akim@epita.fr>
+
+       * subdir4.test (depcomp): Don't create it, defs does.
+
+2000-10-17  Pavel Roskin  <proski@gnu.org>
+
+       * automake.in (handle_aclocal_m4): exclude aclocal.m4 and
+       acinclude.m4 from the dependencies of aclocal.m4 to avoid
+       circular and duplicated dependencies. Strip "./" from the
+       dependencies.
+
+2000-10-17  Lars J. Aas  <larsa@sim.no>
+
+       * aclocal.in (write_aclocal): Set up aclocal.m4 header with
+       normal comments (#) instead of m4 dnl-type comments.
+
+2000-10-17  Alex Hornby  <alex@anvil.com>
+
+       * depcomp: Altered sed clause to strip of inclusion depth
+       numbers generated by cpp. Also output in gcc style.
+
+2000-10-16  Morten Eriksen  <mortene@sim.no>
+
+       * depcomp (msvisualcpp): New dependency tracking mode, for
+       Microsoft Visual C++.
+
+2000-10-16  Morten Eriksen  <mortene@sim.no>
+
+       * depcomp: Fix a bug in SGI dependency tracking mode with source
+       files which do not dependend on any other source files.
+
+2000-10-16  Rodney Brown  <RodneyBrown@mynd.com>
+
+       * aclocal.in, aclocal.m4: Standardize FSF Copyright statements.
+       * automake.in, automake.texi: Likewise.
+       * clean-kr.am, clean.am: Likewise.
+       * comp-vars.am: Likewise.
+       * compile, compile.am: Likewise.
+       * data-clean.am: Likewise.
+       * data.am: Likewise.
+       * dejagnu.am: Likewise.
+       * depcomp: Likewise.
+       * depend.am, depend2.am: Likewise.
+       * dist-vars.am, dist.am: Likewise.
+       * elisp-comp: Likewise.
+       * footer.am: Likewise.
+       * header-vars.am, header.am: Likewise.
+       * java-clean.am java.am: Likewise.
+       * kr-extra.am: Likewise.
+       * library.am: Likewise.
+       * libs-clean.am, libs.am: Likewise.
+       * libtool.am: Likewise.
+       * lisp-clean.am lisp.am: Likewise.
+       * ltlib-clean.am ltlib.am: Likewise.
+       * ltlibrary.am: Likewise.
+       * m4/Makefile.in: Likewise.
+       * m4/strtod.m4: Likewise.
+       * mans-vars.am, mans.am: Likewise.
+       * mdate-sh: Likewise.
+       * missing: Likewise.
+       * multilib.am: Likewise.
+       * program.am: Likewise.
+       * progs-clean.am, progs.am: Likewise.
+       * python-clean.am, python.am: Likewise.
+       * remake-hdr.am, remake.am: Likewise.
+       * scripts.am: Likewise.
+       * subdirs.am: Likewise.
+       * tags-clean.am, tags.am: Likewise.
+       * texi-vers.am: Likewise.
+       * texinfos.am: Likewise.
+       * ylwrap: Likewise.
+
+2000-10-09  Pavel Roskin  <proski@gnu.org>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Don't rely on variable
+       assignments changing $? - it's broken in ash-0.2.
+       * m4/missing.m4 (AM_MISSING_HAS_RUN): Likewise.
+
+       * automake.in (handle_aclocal_m4): If ACLOCAL_M4_SOURCES is
+       defined use it as the list of M4 files aclocal.m4 depends on.
+
+2000-10-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * aclocal.in (add_file): Strip comments while scanning for
+       macro dependencies.
+
+2000-09-15  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (initialize_global_constants): End the
+       result of dist-bzip2 with tar.bz2, not bz2.
+
+2000-08-30  Tom Tromey  <tromey@cygnus.com>
+
+       Fix for PR automake/72:
+       * automake.in (initialize_per_input): Define `need_link'.
+       (finish_languages): Use need_link.
+       (handle_source_transform): Set need_link if required.
+
+2000-08-28  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (yacc, yaccxx, lex, lexxx): Set `derived-autodep'
+       key.
+       (register_language): Default the `derived-autodep' option.
+       (handle_single_transform_list): Add to %dep_files if language has
+       `derived-autodep' set.  Re-fixes lex4.test.
+
+2000-08-27  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_single_transform_list): Only add to
+       %dep_files if language is found and supports automatic dependency
+       tracking.  Fixes PR automake/75.
+
+       * automake.in (am_primary_prefixes): Don't set `valid' for
+       configure variables that don't satisfy the other constraints.
+       Fixes PR automake/68.
+
+2000-04-14  Victor V. Vengerov  <vvv@oktet.ru>
+
+       Fix for PR automake/67.
+       * automake.in (handle_multilib): remove .am suffix in fragment
+       name passed to file_contents.
+       * m4/multi.m4: Add missing ')' in AC_ARG_ENABLE invocation.
+       Remove external quotes in first arg of AC_OUTPUT_COMMANDS.
+       Remove unnecessary "rel-to-top-srcdir" before config-ml.in.
+
+2000-08-26  Tom Tromey  <tromey@cygnus.com>
+
+       * subdirs.am (maintainer-clean-recursive): Always run clean rules
+       in `.' after all subdirs.  Fixes PR automake/3 and PR automake/24.
+
+       * automake.in (handle_man_pages): Generate install targets for man
+       even if man_MANS not defined.  From `danpb'.  Fixes PR automake/73.
+
+       * m4/depend.m4 (depcpp): Use `-o conftest.o'.
+       Fix for PR automake/74.  From js pendry.
+
+2000-08-20  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * depcomp (gcc): Support DOS-style absolute file names with drive
+       letters.
+
+2000-08-06  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in (handle_dependencies): Set $require_file_found{'depcomp'}
+       if the depcomp file exists, before calling require_config_file on
+       `depcomp'.  This makes require_file_internal skip its buggy existence
+       test that would make automake fail (with `required file `lib/depcomp'
+       not found') when AC_CONFIG_AUX_DIR is not set.
+
+       This change change does not fix the existing bug where, if `depcomp'
+       is not present in the build directory (at the top level), automake
+       still gives the inaccurate diagnostic about *lib*/depcomp rather
+       than ./depcomp.
+
+2000-08-05  Jim Meyering  <meyering@lucent.com>
+
+       * m4/header.m4 (AM_CONFIG_HEADER): Fix typo in last change:
+       add missing closing bracket and closing parenthesis.
+       Don't quote the first argument to AC_OUTPUT_COMMANDS.
+       Backslash-escape the backquotes and `$' in `am_indx'-incrementing stmt.
+
+2000-08-04  Tom Tromey  <tromey@cygnus.com>
+
+       Idea from Nicolas Thiery:
+       * automake.texi (Tests): Document DEJATOOL as a list.
+       * dejagnu.am (RUNTESTDEFAULTFLAGS): Use $$tool, not $(DEJATOOL).
+       (check-DEJAGNU): Run runtest in a loop.
+
+2000-08-02  Akim Demaille  <akim@epita.fr>
+
+       * m4: Quote properly the name of the macros being defined.
+       Use `#' instead of `dnl' where appropriate.
+       * m4/header.m4 (AM_CONFIG_HEADER): Get rid of changequote, just
+       quote.
+       Don't quote passive characters.
+       Pull the AC_PREREQ outside the macro.
+       * m4/init.m4: Pull the AC_PREREQ outside the macro.
+
+2000-07-28  Tom Tromey  <tromey@cygnus.com>
+
+       * lisp.am (uninstall-@DIR@LISP): Prefix file with $(DESTDIR).
+       From Bruno Haible.
+
+2000-07-13  Kevin Ryde  <user42@zip.com.au>
+
+       * automake.in (am_install_var): Apply the $(EXEEXT) hack to
+       EXTRA_PROGRAMS as well as other _PROGRAMS.
+
+2000-07-02  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in (scan_one_configure_file): Recognize AC_LIBOBJ.
+
+2000-06-19  Paolo Bonzini    <bonzini@gnu.org>
+
+       * texi-vers.am: define UPDATED-MONTH variable (for an example, see
+       GNU make's manual)
+
+2000-06-02  Morten Eriksen  <mortene@sim.no>
+
+       * depcomp: workaround for problem with SGI IRIX sed (it can only
+       handle lines of up to 8192 characters, the rest of the line will
+       be mangled).
+
+2000-05-31  Morten Eriksen  <mortene@sim.no>
+
+       * depcomp: tell SGI MIPSpro compilers to generate dependencies
+       through the pre-processor (only CVS libtool has the -Wc option
+       yet).
+
+2000-05-15  Brendan O'Dea  <bod@compusol.com.au>
+
+       * missing: Add support for `help2man'.
+
+2000-05-11  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_tests): Work correctly if TESTS is empty;
+       print nothing if it is.  From Kevin Ryde.
+
+2000-05-08  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.texi (Texinfo): Mention vers*.texi.
+
+2000-05-04  Akim Demaille  <akim@epita.fr>
+
+       AM_INIT_AUTOMAKE is no longer optional, so don't look for
+       `VERSION=' and `PACKAGE='.
+       * automake.in (seen_package, seen_version): Remove initializations of
+       unnecessary variables.
+       (scan_one_configure_file): Don't set them.
+       (scan_configure): Don't use them.
+
+2000-05-01  Akim Demaille  <akim@epita.fr>
+
+       * m4/init.m4 (AC_PROVIDE_IFELSE): If it is not defined, do it.
+       (AM_INIT_AUTOMAKE): Update the writing conventions.
+       Quote the arguments properly.
+       Add a few missing `dnl'.
+       Use AC_PROVIDE_IFELSE.
+
+2000-04-26  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in (scan_one_configure_file): Handle the AC_CONFIG_FILES
+       macro.  Based on a patch from Harlan Stenn.
+
+2000-04-13  Akim Demaille  <akim@epita.fr>
+
+       * compile: Remove unnecessary double quotes in assignments.
+
+2000-04-13  Akim Demaille  <demaille@epita.fr>
+
+       * automake.in (scan_one_configure_file): Also recognize
+       AC_CONFIG_HEADERS.
+       Remove trailing blanks.
+
+2000-04-05  Tom Tromey  <tromey@cygnus.com>
+
+       * header-vars.am (DESTDIR): Commented out definition.
+
+       * automake.in (require_file_internal): Pass --copy to libtoolize
+       if automake was run with `--copy'.
+
+2000-03-22  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.texi (Uniform): Fix definition of pkglibdir.
+       From thi <ttn@revel.glug.org>.
+
+2000-03-19  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (parse_arguments): Copyright 2000.
+       (write_aclocal): Likewise.
+       * automake.in (parse_arguments): Copyright 2000.
+       (initialize_global_constants): Likewise.
+
+       * automake.in (generate_makefile): Call handle_dist after
+       handle_dependencies and handle_tests.  Fixes subobj3.test and
+       pr19.test regressions.
+
+2000-03-19  Gordon Matzigkeit  <gord@fig.org>
+
+       * depend2.am (@EXT@.o): Look for the source file in srcdir as well
+       as the current directory.
+       (@EXT@.lo): Likewise.
+
+2000-03-19  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp>
+
+       * automake.in (handle_data): Pass -candist instead of
+       -defaultdist, for the compatibility.
+
+2000-03-19  Tom Tromey  <tromey@cygnus.com>
+
+       Fix for test nodepcomp.test:
+       * automake.in (require_file_internal): Use readlink on symlinks.
+       Only unlink file if we are going to try to add it again.
+       (handle_dependencies): Require `depcomp' here.
+       (scan_configure): Don't require `depcomp'.
+
+2000-03-16  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp>
+
+       * automake.in (handle_configure): Remove $(BUILT_SOURCES) from
+       the rule to remake Makefile, whether $use_dependencies is true
+       or not. This was a historical one and doesn't make sense any
+       longer.
+
+2000-03-19  Tom Tromey  <tromey@cygnus.com>
+
+       More for PR automake/38:
+       * automake.texi (Invoking Automake): Document --force-missing.
+       * automake.in (force_missing): New global.
+       (parse_arguments): Recognize --force-missing.
+       (initialize_global_constants): Document --force-missing.
+       (require_file_internal): Handle --force-missing.
+
+       Fix for PR automake/38:
+       * automake.in (require_file_internal): Check for and handle
+       dangling symlinks.  Fixes symlink2.test.
+
+       Fix for PR automake/45:
+       * automake.texi (configure): Mention requirement to run
+       AM_INIT_AUTOMAKE.
+       (Requirements): Removed most text.
+       * automake.in (seen_init_automake): New global.
+       (scan_configure): Error if AM_INIT_AUTOMAKE not seen.
+       (scan_one_configure_file): Don't support AM_INIT_GUILE_MODULE.
+       Set seen_init_automake if needed.
+
+       Fix for PR automake/41:
+       * automake.in (require_file_found): New global.
+       (require_file_internal): Set require_file_found entry.
+       (handle_texinfo): Require file any number of times.
+
+       * automake.in (handle_dist_worker): Exit if `cp' fails.  Fixes
+       install2.test.
+
+       * tags.am: Don't reference $$here.  Report from Sven Verdoolaege.
+
+2000-03-13  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * m4/missing.m4: Print the backtick in a way that won't cause
+       autoconf CVS to emit any warnings.
+
+2000-03-01  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in (handle_dist_worker) [generating rules for distdir]:
+       Don't use `ln' (which was just a space optimization anyway) to
+       populate $(distdir).  Otherwise, the dist rules that change
+       permissions would end up affecting the master sources.
+       * texinfos.am (dist-info): Likewise.
+
+2000-02-13  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in (generate_makefile): Detect write/close failure.
+
+2000-02-02  Assar Westerlund  <assar@sics.se>
+
+       * automake.in (handle_single_transform_list): do not use $< which
+       is not handled by all non-GNU makes.  Instead do explicit sh code
+       testing for the file in this directory and srcdir.  Based on a
+       suggestion by Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+
+2000-01-12  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/lispdir.m4: Added --with-lispdir argument processing.
+       From Kevin Dalley.
+
+2000-01-06  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Don't check for
+       AC_PROG_MAKE_SET.
+       (scan_configure): Check for AC_PROG_MAKE_SET.
+
+       * header-vars.am (@SET_MAKE@): Added.
+       * subdirs.am (@SET_MAKE@): Removed.  Report from Motoyuki
+       Kasahara.
+
+1999-12-19  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist_worker): Expand DIST_COMMON under all
+       conditions.
+       (require_file_internal): Corrected arguments to second invocation
+       of maybe_push_required_file.
+
+       Fix for PR automake/9:
+       * automake.in (make_dirs, make_dirs_set): New globals.
+       (is_make_dir): New function.
+       (handle_configure): Use it.
+       (require_file_internal): Push file if there is no Makefile in its
+       directory.
+       (initialize_per_input): Initialize handle_dist_run.
+       (push_dist_common): Inspect handle_dist_run.
+       (handle_dist): Set handle_dist_run.  Push items from
+       configure_dist_common onto dist_common if appropriate.
+       (configure_dist_common): New global.
+       (scan_configure): Set it.
+       (maybe_push_required_file): New function.
+       (require_file_internal): Use it.
+
+       * automake.in (handle_dist_worker): Scan DIST_COMMON to see if
+       more subdirs are defined.  From Axel Belinfante.  Fixes
+       PR automake/2.
+
+1999-12-18  Tom Tromey  <tromey@cygnus.com>
+
+       Partial fix for PR automake/40:
+       * lisp.am (install-@DIR@LISP): Handle nobase_ case.
+       (uninstall-@DIR@LISP): Likewise.
+       * header.am (install-@DIR@HEADERS): Handle nobase_ case.
+       (uninstall-@DIR@HEADERS): Likewise.
+       * data.am (install-@DIR@DATA): Handle nobase_ case.
+       (uninstall-@DIR@DATA): Likewise.
+       * automake.in (am_primary_prefixes): Recognize `nobase_' prefix.
+       (am_install_var): Recognize and handle `nobase_' prefix.
+
+1999-12-17  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (get_object_extension): Added space before `-I.'.
+       Report from Ralf Corsepius.
+
+1999-12-15  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in: Don't pass $acdir to scan_m4_files.
+       (parse_arguments): Push $acdir on end of dirlist.
+       (scan_file): Don't warn if duplicate macro seen.
+
+1999-12-13  Tom Tromey  <tromey@cygnus.com>
+
+       Fix for PR automake/30 and PR automake/23.  Fixes test
+       suffix3.test.
+       * automake.in (initialize_per_input): Initialize
+       source_suffix_pattern.
+       (derive_suffix): New function.
+       (handle_single_transform_list): Call it.
+
+       * automake.in (add_depend2): Handle the no-dependency-tracking
+       case.  Fixes test suffix2.test.
+
+       * depcomp (tmpdepfile): [case sgi] Added missing `fi'.
+
+       * automake.in (get_object_extension): Fixed quoting on
+       -I$(srcdir).
+
+       * depend2.am: Removed erroneous comment.
+
+       * automake.texi (Program variables): Document nostdinc.
+       (Options): Likewise.
+       * automake.in (get_object_extension): Respect nostdinc option.
+       (handle_options): Recognize nostdinc.
+       * comp-vars.am (DEFS): Use @DEFAULT_INCLUDES@ as sole
+       substitution.
+
+       * automake.in (read_am_file): Allow conditional includes.  Fixes
+       test condincl.test.
+
+       * depcomp: Handle case on SGI when libtool is `yes'.
+       * depend2.am (@EXT@.o): Set libtool.
+       (@EXT@.lo): Likewise.
+       (@EXT@.obj): Likewise.
+
+       * depcomp: Unify dashmstdout and dashXmstdout cases.  Move hp case
+       after gcc case.
+
+1999-12-13  Pavel Roskin  <pavel_roskin@geocities.com>
+
+       * automake.in (add_depend2): substitute $rule in the rules
+       for individual files.  Fixes test specflags5.test.
+
+1999-12-12  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Run mkinstalldirs
+       to create directories.  Fixes test subobj3.test.
+
+1999-12-10  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Don't print
+       message when creating .deps files.
+
+       * automake.in (initialize_global_constants): If unreadable by
+       owner, make it readable by owner regardless of number of links.
+       Fixes more of install2.test.
+
+       * missing: Try to see if gnutar or gtar exist before invoking
+       them.
+
+       * m4/missing.m4 (AM_MISSING_INSTALL_SH): Remove ${SHELL} from
+       install_sh value.  Look for install-sh and install.sh in a
+       somewhat more sensible way.  Fixes test install2.test.  Partially
+       from Jim Meyering.
+
+1999-12-09  Pavel Roskin  <pavel_roskin@geocities.com>
+
+       * m4/missing.m4: remove redundant backquote
+
+1999-11-23  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (initialize_global_constants): Use `bzip2 -9', not
+       `bzip --best'  Report from Jim Meyering.
+
+1999-11-22  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/missing.m4 (AM_MISSING_INSTALL_SH): Don't take argument.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Don't pass argument to
+       AM_MISSING_INSTALL_SH.
+       * automake.in (scan_one_configure_file): Reverted previous
+       change.
+
+       * automake.in (scan_one_configure_file): Define `install_sh'
+       configure variable when AM_INIT_AUTOMAKE seen.  Report from Jim
+       Meyering.
+
+       * automake.in (handle_single_transform_list): Generate explicit
+       rule for subdir objects.  Fixes new addition to subobj.test.
+
+       * automake.in (handle_lib_objects_cond): Allow LIBOBJS to be
+       defined by AC_SUBST.  Fixes ltlibobjs.test.
+
+       Fix for sourcesub.test:
+       * automake.in (handle_single_transform_list): Added `var'
+       argument.  If config sub found, give error.
+       (handle_source_transform): Updated for new
+       handle_source_transform.
+
+       * py-compile: New file.
+       * m4/Makefile.am (m4data_DATA): Added python.m4.
+       * m4/python.m4: New file.
+       * automake.texi (Uniform): Mention PYTHON.
+       (Python): New node.
+       * Makefile.am (amfiles): Added python.am, python-clean.am.
+       (dist_script_DATA): Added py-compile.
+       * python.am: New file.
+       * python-clean.am: New file.
+       * automake.in (seen_pythondir): New global.
+       (generate_makefile): Call handle_python.
+       (handle_python): New function.
+       (scan_one_configure_file): Set seen_pythondir if AM_PATH_PYTHON
+       seen.
+       (am_install_var): Special-case PYTHON like JAVA.
+       (scan_configure): Check for py-compile.
+       (initialize_global_constants): Added py-compile to @common_files.
+
+       * ltlib.am (install-@DIR@LTLIBRARIES): Added missing space.
+
+1999-11-21  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (finish_languages): Only generate suffix rule when
+       not doing dependency tracking.
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Use AM_MISSING_INSTALL_SH.
+       * m4/missing.m4 (AM_MISSING_INSTALL_SH): New macro.
+
+       * depend2.am: Use @SOURCE@, @OBJ@, @LTOBJ@, @OBJOBJ@, and @BASE@.
+       Always use `-o'.
+
+1999-11-19  Tom Tromey  <tromey@cygnus.com>
+
+       * dist.am: Set `CDPATH=:' to avoid problems.  Merged from
+       Alexandre's change on branch.
+
+1999-10-02  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * Makefile.am (maintainer-check): Look for occurrences of ``cd'
+       without `CDPATH'.
+       * dejagnu.am: Set CDPATH before cd.
+       * Makefile.in: Rebuilt.
+
+       * automake.in (handle_single_transform_list): Change `\1' for `$1'
+       in `s///' replacement.
+
+       * automake.in (handle_dist): Set CDPATH before cd.
+       * dejagnu.am (check-DEJAGNU): Likewise.
+       * texinfos.am (install-info-am, dist-info): Likewise.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Likewise.
+       * m4/missing.m4 (AM_MISSING_HAS_RUN): Likewise.
+       * aclocal.m4, configure, Makefile.in: Rebuilt.
+
+       * AUTHORS: Added myself.
+
+1999-09-14  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * m4/missing.m4: Support relative srcdir and ac_aux_dir.
+       Reported by Tim Wilkinson <tim@transvirtual.com>
+       * aclocal.m4, configure: Rebuilt.
+
+1999-08-17  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * m4/lex.m4 (AM_PROG_LEX): Require AM_MISSING_HAS_RUN and, if no
+       LEX program is found, use `${am_missing_run}flex'.
+
+1999-08-16  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_single_transform_list): Replace `$(OBJEXT)'
+       with `o' in depfile.
+
+       * automake.in (handle_lib_objects_cond): Remove second dot from
+       dependency file names.
+
+       * depend2.am (OBJEXT@EXT@.obj): Dependency file should be .Po,
+       regardless of OBJEXT.
+
+       * automake.in (handle_dependencies): Add blank line after depend2.
+       (handle_dependencies): Start DEP_FILES with `@AMDEP@'.  Output
+       blank line before `include's, not after them.
+       (scan_one_configure_file): Do not special-case `DEP_' any more.
+
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Run for loop only
+       if AMDEP is empty.
+       * aclocal.m4, configure: Rebuilt.
+
+       * m4/depend.m4 (AMDEPBACKSLASH): Define.
+       * depend2.am (@EXT@.o, @EXT@.lo, @EXT@.obj): Use AMDEPBACKSLASH.
+
+       * automake.in (handle_dependencies): Generate `include's for
+       dependency files after `@AMDEP@'.
+
+       * m4/missing.m4: Use eval, instead of a sub-shell, to test for
+       --run support in the missing script, since SHELL is not exported.
+       Reported by job bogan <job@piquin.uchicago.edu>
+       * aclocal.m4, configure: Rebuilt.
+
+1999-08-15  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * aclocal.m4, configure: Rebuilt with itself.
+       * Makefile.in, m4/Makefile.in, tests/Makefile.in: Likewise.
+
+       * m4/missing.m4 (AM_MISSING_PROG): Remove DIRECTORY argument.
+       Require AM_MISSING_HAS_RUN.  Use am_missing_run, defined by...
+       (AM_MISSING_HAS_RUN): New macro.
+       * m4/init.m4: Remove missing_dir from calls to AM_MISSING_PROG.
+       * automake.texi (Requirements): Likewise.
+       * version.texi, stamp-vti: Rebuilt.
+
+1999-07-28  Tom Tromey  <tromey@cygnus.com>
+
+       * depcomp: Handle the `hp' mode.
+
+1999-07-06  Tom Tromey  <tromey@cygnus.com>
+
+       * depcomp: Work around HP-UX 10.20 sed bug.
+
+1999-07-05  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dependencies): Generate a separate include
+       for each dep file.  Report from Alexandre Oliva.
+       * depend.am: Don't include DEP_FILES.
+
+1999-06-01  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * depend.am: Add @AMDEP@ before `include', so that dependency
+       tracking can be disabled.
+       * depend2.am: Ditto, before all lines related with dependency
+       tracking.
+       * m4/depend.m4 (AM_DEP_TRACK): New macro, that documents
+       --enable/disable-dependency-tracking and sets AMDEP accordingly.
+       It is implicitly disabled if depcomp is missing.
+       (AM_DEPENDENCIES): Disable dependency tracking unless it can be
+       generated by side-effect.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require AM_DEP_TRACK.
+       * automake.in (handle_dependencies): Add @AMDEP@ before the value
+       of DEP_FILES.
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Handle DEP_FILES
+       starting with `#'.
+
+       * depcomp: Support -xM for dependency generation, for Sun CC.
+       Reported by Alex Hornby <alex@anvil.co.uk>
+       * m4/depend.m4: Extract the list of supported dependency-tracking
+       mechanisms from the depcomp script and use it to test each one.
+       * THANKS: Added Alex Hornby.
+
+       * depend2.am: Move $(depcomp) to the line of $(...DEPMODE), so as
+       to leave $(...COMPILE) in a line by itself.
+
+       * THANKS: Added Miles Bader.
+
+1999-06-01  Miles Bader  <miles@ccs.mt.nec.co.jp>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Add check for `makedepend'.
+       Fix `dashmstdout' to ignore non-dependency-generating uses of the
+       -M flag.
+       * depcomp (makedepend): New dependency-generating method.
+
+1999-06-01  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * missing: If given `--run' as first argument, try to run the
+       given program before falling back to the ``emulated'' behavior.
+       Add support for `tar'.
+       * automake.in: Use new `tar' support for `dist'.
+       * m4/missing.m4 (AM_MISSING_PROG): Instead of checking for the
+       program, prepend `missing --run' to the given program name.
+       * m4/init.m4: Remove AMTAR-related stuff.
+       * NEWS: Updated.
+
+       * m4/depout.m4: Instead of `find'ing Makefiles, just iterate on
+       CONFIG_FILES.  Do not use temporary variable for list of
+       dependency files, it breaks Cygwin.
+
+1999-04-27  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * depcomp (gcc): Imported comments removed from depend2.am, so
+       that we don't lose them.
+
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Avoid sed s/$U//
+       when not using ansi2knr.
+
+1999-04-26  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Test for depcc -E support.
+       * depcomp (cpp): Extract dependencies from `# nnn "..."' lines.
+
+1999-04-25  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Add a definition to conftest.h,
+       so as not to compile an empty source; some compilers fail on this.
+       Redirect stderr of depcc to /dev/null.  Test for -M with -o,
+       because some compilers will output the rules to the output file.
+       * depcomp (dashmstdout): Add --silent before --mode=compile, so
+       that we don't get libtool output mixed up with make rules.
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require AM_SET_DEPDIR.
+       * depend2.am: Set tmpdepfile too, to speed up depcomp.  Always use
+       -o for libtool, otherwise it may try to deduce the object name
+       from the dependency-generation flag.
+       * depcomp: Assume depdir exists.  Preserve depfile on unsuccessful
+       compilations.
+
+       * libtool.am: Do not emit .c.lo here...
+       * depend2.am: ... emit .*.lo here, only when using libtool.
+       * automake.in (get_object_extension): No more @MINUSO@ here.
+       (handle_single_transform_list): Set $depfile from $object.
+       (handle_dependencies): Emit depend2.am for all used languages,
+       regardless of $use_dependencies; the setting of depcomp makes the
+       difference.
+       (lang_cxx_finish): Do not emit compilation rules.
+       (lang_objc_finish): Likewise.
+       (lang_java_finish): Likewise.
+
+1999-04-21  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Correctly
+       interpolate DEPDIR in DEP_FILES expansion.
+
+1999-04-20  Lee Iverson  <leei@Canada.AI.SRI.COM>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Fix up test for SGI-style
+       dependency updating.
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Fix sed script to
+       handle multi-line dependency lists.
+
+1999-11-12  Tom Tromey  <tromey@cygnus.com>
+
+       Fix for PR automake/14:
+       * aclocal.in: Added `ud_GNU_GETTEXT'.  Updated to mention
+       AC_CYGWIN.
+       * automake.in: Mention AC_CYGWIN, not AC_CYGWIN32.
+
+       * m4/multi.m4: Added missing `]'.  From Akim Demaille.
+
+       * Makefile.am (path-check): Make sure distdir is writeable before
+       removing it.
+       * automake.in (handle_texinfo): Added `cm' and `ov' extensions.
+       (handle_dist_worker): Make sure distdir is writeable before
+       removing it.
+       (initialize_global_constants [$dist_trailer]): Make sure distdir
+       is writeable before removing it.
+       * dist.am (distcheck): Make the new source tree read-only before
+       compiling.  Idea from Karl Berry.
+
+       * automake.texi (Gnits): Allow COPYING.LIB again.
+       * automake.in (check_gnits_standards): Allow COPYING.LIB again.
+
+1999-11-11  Jim Meyering  <meyering@ascend.com>
+
+       * dist.am (distcheck): Remove $(distdir).tar.gz before counting
+       files.
+
+1999-11-09  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist): Typo fix.  From Jim Meyering.
+
+1999-11-09  Jim Meyering  <meyering@ascend.com>
+
+       * automake.in (handle_dist): Remove the DISTHOOK and GETTEXT
+       markers, no matter what.
+
+1999-11-08  Tom Tromey  <tromey@cygnus.com>
+
+       * dist.am (distcheck): Put `&&' at the start of the distcheck-hook
+       line.
+
+       * automake.in (handle_dist_worker): Use `cp -R', not `cp -r'.
+       From Jim Meyering.  Also, don't mention file name in `cp'
+       destination.  From Olly Betts.
+
+1999-10-27  Miodrag Vallat  <miodrag@ifrance.com>
+
+       * texinfos.am (uninstall-info): Use installed info file, not one
+       from srcdir or builddir.
+
+1999-11-07  Tom Tromey  <tromey@cygnus.com>
+
+       * clean.am (maintainer-clean-generic): Remove Makefile.in.  From
+       Jeff Bailey
+
+       Fix for PR automake/18:
+       * automake.in (handle_dist): Add contents of dist.am to the output
+       rules.
+       * Makefile.am (amfiles): Added dist.am.
+       * dist.am: New file.
+       (distcheck): Added uninstall and distclean checks.
+
+       * automake.in (PATH_PATTERN): Added `-' as allowable character.
+       Fixes PR automake/20.  From Matthew D. Langston.
+
+       * automake.in (SUFFIX_RULE_PATTERN): Add `0-9' as characters
+       allowed in suffixes.  Fixes PR 22.  From Matthias Clasen.
+
+1999-10-03  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * m4/lispdir.m4: -batch must come before -q.
+       * elisp-comp: Likewise.
+       Reported by Lars Hecking <lhecking@nmrc.ucc.ie>
+       * THANKS: Added Lars.
+
+1999-08-15  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (get_object_extension): Fixed quoting bug.  Fixes
+       ansi4.test.
+
+1999-07-27  Tom Tromey  <tromey@cygnus.com>
+
+       * config.guess, config.sub: New versions from autoconf.
+
+1999-07-13  Tom Tromey  <tromey@cygnus.com>
+
+       Work around losing `awk'.  Report from Harlan Stenn.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require AC_PROG_AWK.
+       * tags.am (ID, TAGS): Use $(AWK), not `awk'.
+
+       * automake.in (handle_source_transform): Mark prefix as seen if
+       corresponding _SOURCES variable exists.  Fixes empty2.test.
+
+1999-06-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp>
+
+       * configure.in (ACLOCAL): Do not prepend the variable SRCDIR to
+       m4.
+       (AUTOMAKE): Set --amdir to current directory.
+
+1999-06-20  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (TAGS_FILES): New macro.
+       (ETAGS_ARGS): Moved files into TAGS_FILES.
+       (TAGS_DEPENDENCIES): Likewise.
+       (ETAGS_ARGS): Removed.
+       (TAGS_DEPENDENCIES): Removed duplicate definition.
+
+       * tags.am (ID): Handle VPATH correctly.  Use TAGS_FILES.  Report
+       from Ganesan Rajagopal.
+       (TAGS): Likewise.
+
+1999-06-18  Thomas Tanner  <tanner@ffii.org>
+
+       * automake.in (handle_ltlibraries): Check for -module in LDFLAGS,
+       too.
+
+1999-06-20 Mark Elbrecht <snowball3@bigfoot.com>
+
+       * ylwrap: Handle filenames output by the DOS version of Bison.
+
+1999-06-20  Tom Tromey  <tromey@cygnus.com>
+
+       * ylwrap: Be less strict when recognizing DOS paths.  From Mark
+       Elbrecht.
+
+1999-06-19  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist_worker): Remove redundant entries from
+       DIST_SUBDIRS.
+
+       * automake.in (handle_lib_objects_cond): Better error message when
+       unrecognized option passed in LDADD.
+
+1999-06-08  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * configure.in (ACLOCAL, AUTOMAKE): Use our own scripts, with
+       appropriate --acdir and --amdir arguments.
+
+1999-06-07  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (dist_header): Avoid changing permissions of files
+       in the source tree, trying a complex `find/chmod' command before
+       falling back to plain chmod.
+       (handle_dist_worker): Do not create directories with mode 777, the
+       find above will take care of that.
+       * m4/init.m4: Set install_sh for find/chmod above.
+
+       * THANKS: Added Shuhei Amakawa.
+
+1999-06-07  Shuhei Amakawa <sa264@cam.ac.uk>
+
+       * mans.am: Strip dirname from given filename.
+
+1999-06-07  Jim Meyering  <meyering@ascend.com>
+
+       * automake.in (handle_dist): Change emitted rules so that a failure
+       in `$(MAKE) distcheck-hook' propagates to the outer make.
+
+1999-05-27  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_single_transform_list): Replace AM_FLAG and
+       not FLAG in compilation rule.
+       (add_depend2): Likewise.
+
+       * ltlib.am (install-@DIR@LTLIBRARIES): Pass INSTALL_STRIP_FLAG to
+       libtool.
+
+       * m4/dmalloc.m4: Updated dmalloc site information.
+
+1999-05-19  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_single_transform_list): Push object name
+       without extension onto lang_specific_files.  Fixes
+       specflags4.test.
+
+       * automake.in (handle_single_transform_list): Added missing
+       space.  Fixes specflags.test.
+
+1999-05-05  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in: Disabled dependency tracking for Java.
+
+1999-05-04  Tom Tromey  <tromey@cygnus.com>
+
+       * library.am (@LIBRARY@): Use $(@XLIBRARY@_AR).
+       * automake.in (handle_libraries): Recognize _AR variable.
+
+1999-04-30  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (finish_languages): Always use `-o $@' with
+       libtool.  Define ltcompile and ltlink at outermost scope in
+       function.
+       * libtool.am (.c.lo): Removed.
+
+       * automake.in (finish_languages): Put `.' before extension in
+       suffix list, `.obj' rule, and `.lo' rule.  Look at `-flags', not
+       `-flag'.  From Pavel Roskin.
+
+1999-04-28  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (finish_languages): Fixed scoping of ltcompile and
+       ltlink.  From Pavel Roskin.
+
+1999-04-27  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (read_main_am_file): Don't start macro definition
+       with backslash-newline.  Instead, append newline at the end if
+       required.
+
+       * automake.in (read_am_file): Insert a backslash before a trailing
+       newline.  Fixes pluseq8.test.
+
+       * automake.in (MACRO_PATTERN): Allow digits and `_' to start a
+       macro name.
+       (check_canonical_spelling): Don't insert `AM' before macro name
+       (reverts Alexandre's 1999-04-27 patch).
+       * automake.texi: Reverted documentation change for `AM' patch.
+
+       * automake.in (handle_lib_objects_cond): Prefer `$1' over `\1'.
+       Minor rewrite for clarity.
+       (check_canonical_spelling): Prefer `$1' over `\1'.
+
+       * depend2.am (@OBJ@): Renamed.  Use @SOURCE@, @COMPILE@.  Always
+       use `-o $@'.
+       (@LTOBJ@): Likewise.
+       * automake.in (handle_single_transform_list): Don't print rule if
+       doing dependency tracking and the file's language supports it.
+       (initialize_per_input): Initialize lang_specific_files.
+       (add_depend2): New function.
+       (handle_dependencies): Use it.
+
+       * automake.in (lang_ppf77_finish): Use lang_f77_finish.
+       ratfor compiler name is `RCOMPILE'.  ppf77 compiler name changed
+       to `PPF77COMPILE' to allow use of f77 and ppf77 in the same
+       directory.
+       (lang_ratfor_finish): Use lang_f77_finish.
+
+       * compile.am (NOTDEPEND.c.o): Removed.
+       (OBJEXT.c.obj): Likewise.
+       * automake.in: Added `flags' attribute to all relevant languages.
+       (handle_single_transform_list): Handle per-derived-object flags.
+       Changed interface and all callers.
+       (handle_built_sources): Don't call handle_single_transform_list.
+       Added `compile' and `compiler-name' attribute to all relevant
+       languages.
+       (finish_languages): Define compiler variables here.
+       (lang_cxx_finish): Don't call define_compiler_variable.  Don't
+       define flag variable or .o rules.  Don't add to @suffixes.
+       (lang_f77_finish): Likewise.
+       (lang_ppf77_finish): Likewise.
+       (lang_objc_finish): Likewise.
+       (lang_java_finish): Likewise.
+       (finish_languages): Define flag variable here.
+       Added `output-arg' attribute to all relevant languages.
+       (finish_languages): Define `.o' rules here.
+       (finish_languages): Put extension on @suffixes.
+       (get_object_extension): Don't transform NOTDEPEND or MINUSO.
+
+1999-04-27  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (initialize_global_constants): Invoke gzip for
+       dist-shar just like in plain dist, i.e., pass it GZIP_ENV and -c.
+
+       * automake.in (initialize_global_constants): Remove zip file
+       before re-creating it.
+       Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+       * texinfos.am (uninstall-info): Look for info file in srcdir, just
+       like in install-info-am.
+       Reported by Tudor Hulubei <tudor@cs.unh.edu>
+
+       * automake.in (handle_lib_objects_cond): \Q doesn't work either.
+       Let's use the good ol' substitution, then.
+       Reported by Russ Allbery <rra@stanford.edu>
+
+       * automake.in (check_canonical_spelling): Insert AM before names
+       starting with non-letters.
+
+       * automake.texi: Document it.
+
+1999-04-26  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_lib_objects_cond): Do not use quotemeta, it
+       doesn't work on perl4.  Maybe \Q and \E do.
+
+1999-04-24  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in: Treat `.zip' and `.jar' files as Java.
+
+       * automake.in (generate_makefile): Define `subdir' after reading
+       .am file.
+       (read_main_am_file): Give programming error if variable defined
+       before invocation.
+
+1999-04-22  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (generate_makefile): Define `subdir' variable.
+       (handle_dist): Don't define `subdir'.
+
+       * automake.in (handle_texinfo): Change numbering scheme for
+       stamp-vti files, to avoid problems with DOS.
+       From Michel de Ruiter.
+
+       * automake.texi: Don't mention AM_FUNC_MKTIME.
+       * aclocal.in (obsolete_macros): Mention AM_FUNC_MKTIME.
+       * automake.in (scan_one_configure_file): Recognize
+       AC_FUNC_MKTIME, not AM_FUNC_MKTIME.
+       (obsolete_macros): Mention AM_FUNC_MKTIME.
+       * m4/Makefile.am (m4data_DATA): Removed mktime.m4.
+       * m4/mktime.m4: Removed.
+
+1999-04-20  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.texi (Top level): Don't recommend substing SUBDIRS.
+
+1999-04-20  Brian Ford <ford@vss.fsi.com>
+
+       * scripts.am: Change else if's to elif.
+
+1999-04-20  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_lib_objects_cond): Only require the source
+       of a LIBOBJ if it's not in BUILT_SOURCES.
+       Reported by Erez Zadok.
+
+1999-04-19  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in: Treat `.class' files as Java source.
+       (lang_java_finish): Handle `.class' files.
+
+1999-04-18  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * m4/lispdir.m4: Match only `/(share|lib)/x?emacs/site-lisp/*$'.
+
+       * m4/lispdir.m4: Do not override lispdir if it's already defined.
+       Run some emacs-lisp to find out the site-lisp directory, but
+       relocate it into prefix.
+
+1999-04-17  Paul Eggert  <eggert@twinsun.com>
+
+       * m4/mktime.m4 (bigtime_test, main): Move alarm from
+       bigtime_test to main, since Solaris 7 (64-bit) mktime loops
+       even outside of bigtime_test.  Use a time limit of 60 seconds
+       for the whole test, not 10 seconds per iteration.
+
+1999-04-17  Erez Zadok  <ezk@cs.columbia.edu>
+
+       * automake.in: Create stamps for headers in appropriate
+       directories, even if the input file lives in a different place.
+       * remake-hdr.am: Likewise.
+
+1999-04-16  Tom Tromey  <tromey@cygnus.com>
+
+       From Brian Ford:
+       * progs.am (install-@DIR@PROGRAMS, uninstall-@DIR@PROGRAMS):
+       Invoke `sed' only once per program.
+       * scripts.am (install-@DIR@SCRIPTS, uninstall-@DIR@SCRIPTS):
+       Invoke `sed' only once per program.
+
+1999-04-13  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_subdirs): Make `install-recursive' phony.
+       From Michel de Ruiter.
+
+       * automake.in (handle_ltlibraries): Added missing `check'.
+
+1999-04-12  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi2knr.c: New version from Pavel Roskin (via ansi2knr.c
+       maintainer).
+
+1999-04-11  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist): Use AMTAR.
+       (initialize_global_constants): Likewise.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Use AMTAR, not TAR.
+
+       * automake.in (lang_sub_obj): New function.
+       (lang_cxx_rewrite): Use it.
+       (lang_asm_rewrite): Likewise.
+       (lang_objc_rewrite): Likewise.
+       (lang_cxx_finish): Add `-o $@' to all C++ rules.
+       (lang_asm_finish): Add `-o' to suffix rules when appropriate.
+       (lang_objc_finish): Add `-o $@' to all ObjC rules.
+       (lang_java_finish): Likewise.
+
+       * automake.in: Only register `asm' once.
+       (lang_asm_finish): Put assembly suffixes on @suffixes.
+
+       * libtool.am (.s.lo): Removed.
+       (.S.lo): Likewise.
+       * automake.in (lang_asm_finish): Handle libtool.
+
+       * libtool.am (.c.o): Always pass -c to libtool.
+
+       * automake.in (lang_yacc_rewrite): Handle sources in subdirs.
+       (lang_yaccxx_rewrite): Likewise.
+       (lang_lex_rewrite): Likewise.
+       (lang_lexxx_rewrite): Likewise.
+
+       Assembly code no longer included by default:
+       * compile.am (.s.o): Removed.
+       (.S.o): Likewise.
+       * automake.in: Register `asm' language.
+       (lang_asm_finish): Generate suffix rules for assembly.
+       (get_object_extension): Don't add `.s' or `.S' to suffix list.
+
+       * automake.in (get_object_extension): Substitute @MINUSO@ when
+       including compile.am.
+       * compile.am (.c.o): Added @MINUSO@.
+       (.c.obj): Likewise.
+
+       First cut at allowing objects in subdirectories:
+       * m4/Makefile.am (m4data_DATA): Added minuso.m4.
+       * Makefile.am (dist_script_DATA): Added compile.
+       * m4/minuso.m4: New file.
+       * automake.in (initialize_global_constants): Added compile to
+       common_files.
+       (seen_cc_c_o): New global.
+       (scan_one_configure_file): Set it when AM_PROG_CC_C_O seen.
+       (handle_options): Recognize `subdir-objects' option.
+       (lang_c_rewrite): Added directory argument.
+       (lang_yacc_rewrite): Likewise.
+       (lang_yaccxx_rewrite): Likewise.
+       (lang_lex_rewrite): Likewise.
+       (lang_lexxx_rewrite): Likewise.
+       (handle_single_transform_list): Pass directory to _rewrite
+       function.  Generate dependencies for dirstamp files for each .o;
+       it is just the rules we want to create once.
+       (lang_c_rewrite): Handle `subdir-objects' option.
+       (lang_c_rewrite): Require `compile' program.
+       * compile: New file.
+
+       * automake.in (initialize_per_input): Initialize %directory_map.
+       (handle_single_transform_list): Only create .dirstamp rules once
+       per directory.
+
+       * m4/gcj.m4 (AM_PROG_GCJ): Use AC_CHECK_PROGS, not AC_CHECK_PROG.
+
+       Fix for confh.test:
+       * automake.in (configure_input_files): New global.
+       (scan_configure): Set it.
+       (handle_configure): Use configure_input_files when determining
+       which subdirs have a Makefile.am.  Fixes confh.test.
+       (handle_configure): Only recognize acconfig.h in top srcdir.
+
+1999-04-10  Tom Tromey  <tromey@cygnus.com>
+
+       * depend2.am (%.o): Use `$(*D)/$(*F)', not just `$(*F)'.
+       (%.lo): Likewise.
+
+       * automake.in (am_install_var): Remove redundancies from the
+       result.  Fixes test cond8.test.
+
+       * automake.in (handle_single_transform_list): Handle dependency
+       tracking when files are created in subdirs.  Error if object in
+       subdir has `..' component.
+
+       * automake.in (initialize_global_constants): Use $(TAR), not tar.
+
+       * automake.in (handle_ltlibraries): Allow check_LTLIBRARIES.
+
+       * automake.in (lang_yacc_finish): Added missing `&'.
+
+1999-04-10  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_configure): Replace multiple occurrences of
+       @STAMP@ in the same line; completes the patch for remake-hdr.am
+       below.
+
+       * automake.in (handle_dependencies): Fix test for `autodep'
+       support.
+
+       * automake.in (handle_source_transform): Add a pfx to used_pfx
+       only if it's conditional or non-empty, to reduce the number of
+       empty variables.  Emit _OBJECS variable based on program name if
+       no SOURCES were explicitly specified.
+
+       * remake-hdr.am: Create the stamp file before the header file,
+       and just rename it after, so that the timestamps will be correct.
+       Reported by Marc Horowitz <marc@mit.edu>
+
+       * automake.in (lang_yacc_finish): Generate and dist a `.h' for a
+       `.y' iff YFLAGS or AM_YFLAGS contain `-d'.
+       Reported by Jim Meyering <meyering@ascend.com>
+
+       * automake.in (lang_yacc_finish): $hname must not contain a `.'.
+
+1999-04-10  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (EXTRA_DIST): New macro.
+       * ChangeLog.1996, ChangeLog.1998: New files.
+
+1999-04-09  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_source_transform): Handle dist and nodist
+       prefixes.
+       (initialize_per_input): Initialize dist_sources.
+       (check_libobjs_sources): Handle dist and nodist prefixes.
+       (generate_makefile): Define DIST_SOURCES.
+       * dist-vars.am (DISTFILES): Reference DIST_SOURCES, not SOURCES.
+
+       * automake.texi (Macros): Mention AM_PROG_GCJ.
+       (Java Support): New node.
+       (Dist): Documented dist_ and nodist_ prefixes.
+
+       * m4/gcj.m4 (AM_PROG_GCJ): Renamed from AC_PROG_GCJ.
+
+       * automake.in (lang_java_finish): Generate .lo rule for `.java'
+       files, not `.gcj' files.
+
+       * m4/gcj.m4: New file.
+       * m4/Makefile.am (m4data_DATA): Added gcj.m4.
+
+       * automake.in: Register the `java' language.
+       (resolve_linker): Handle GCJLINK.
+       (lang_java_rewrite): New function.
+       (LANG_IGNORE, LANG_PROCESS, LANG_SUBDIR): New constants.
+       (lang_c_rewrite): Use new constants.
+       (lang_cxx_rewrite): Likewise.
+       (lang_header_rewrite): Likewise.
+       (lang_yacc_rewrite): Likewise.
+       (lang_yaccxx_rewrite): Likewise.
+       (lang_lex_rewrite): Likewise.
+       (lang_lexxx_rewrite): Likewise.
+       (lang_asm_rewrite): Likewise.
+       (lang_f77_rewrite): Likewise.
+       (lang_ppf77_rewrite): Likewise.
+       (lang_ratfor_rewrite): Likewise.
+       (lang_objc_rewrite): Likewise.
+       (handle_single_transform_list): Likewise.  Handle LANG_SUBDIR
+       return from rewrite function.
+       (lang_java_finish): New function.
+       (register_language): Changed interface and all calls.  Added
+       `autodep' settings to various languages.
+       (handle_dependencies): Use `autodep' property of language when
+       including dependency-tracking code.
+
+1999-04-07  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_texinfo): Indentation fixes.
+
+1999-04-07  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (value_to_list): Skip *only* trailing backslashes.
+
+1999-04-07  Pavel Roskin  <pavel_roskin@geocities.com>
+
+       * automake.in (value_to_list): Skip trailing backslashes.
+
+1999-04-07  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_texinfo): Add texinfo.tex to config_aux_dir
+       when appropriate.
+       Reported by Per Cederqvist <ceder@lysator.liu.se>
+       (handle_texinfo): Do not define texinfo_tex='.', use
+       '$(srcdir)/texinfo.tex' instead; the directory name will be
+       properly extracted.
+       (require_conf_file_with_line): Fixed typo.
+
+1999-04-03  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * automake.in (handle_tests): Test `dir=./' before `dir=', so that
+       we do not depend on PATH starting with `.'.
+
+1999-03-31  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (quote_cond_val): Quote \n.
+       (unquote_cond_val): Unquote \n.
+       (read_am_file): If line ends with `\', preserve it and add a
+       newline.
+       (read_main_am_file): In conditional case, put conditional text at
+       beginning of each generated line.
+
+1999-03-31  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_tests): support XFAIL_TEST
+       * automake.texi: document it
+
+1999-04-12  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * End of merge from trunk.
+
+1999-04-12  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (cmdline_use_dependencies): Reintroduce it.
+       (--ignore-deps): Set cmdline_use_dependencies again.
+       (handle_dependencies): If use_dependencies is not set, define
+       depcomp as empty.
+       (handle_configure): Pass --ignore-deps to generated Makefile.ins.
+       (scan_configure): Do not require depcomp when ignoring
+       dependencies.
+       (initialize_global_constants): Reintroduce --ignore-deps.
+
+1999-04-10  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * depcomp: New file.
+       * Makefile.am (dist_script_DATA): Added depcomp.
+       * automake.in (cmdline_use_dependencies, omit_dependencies,
+       dependency_macros): Removed.
+       (--ignore-deps): Just ignore.
+       (handle_single_transform_list, dep_files): Named dependency files
+       as \$(DEPDIR)/$base.P$obj
+       (handle_lib_objects_cond): Likewise.
+       (generate_dependency_code): Do not check for AM_*_DEPENDENCIES.
+       (scan_one_configure_file): Likewise.
+       (handle_dependencies): Always enable auto-dep.  Define `depcomp'.
+       Ignore OMIT_DEPENDENCIES.
+       (handle_configure): Do not pass --ignore-deps.
+       (scan_configure): Require `depcomp'.
+       (initialize_global_constants): Make `depcomp' common.  Remove
+       `--ignore-deps' from usage.
+       (get_object_extension): No more NOTDEPEND in compile nor libtool.
+       * compile.am: Remove rules for .c.o and .c.obj
+       * depend.am (distclean-depend): Wipe out $(DEPDIR)
+       * depend2.am (@FPFX@DEPMODE): Define from config.status.
+       Use it and depcomp in suffix rules.
+       * libtool.m4: Likewise.
+       * m4/ccdepend.m4, m4/cxxdepend.m4: Removed.
+       * m4/depvars.m4, m4/objcdepend.m4: Likewise.
+       * m4/Makefile.am (dist_m4data_DATA): Likewise.
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Extract DEPDIR
+       from the Makefile and subst it in deps.  Report creation of deps
+       files (for now).  Replace $U with `_' and the empty string.  Write
+       a comment to each created file.
+       * m4/depend.m4 (AM_SET_DEPDIR): Select a valid deps dir name.
+       (AM_DEPENDENCIES): Accept CC, CXX and OBJC.  Just determine the
+       dependency mode and AC_SUBST [$1]DEPMODE.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Automatically call
+       AM_DEPENDENCIES for CC and CXX, if the corresponding AC_PROG
+       appears in configure.in, before or after AM_INIT_AUTOMAKE.
+
+1999-04-02  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * depout.m4: Fix sed expression for extracting `dirpart'.
+
+1999-03-29  Tom Tromey  <tromey@cygnus.com>
+
+       * depend2.am (DEP_@FPFX@COMPILE): Use `!=' and not `-ne'.
+
+       * compile.am (.c.obj): Also disabled when dependency tracking
+       enabled.
+       * depend2.am (@EXT@.obj): New target.
+       * automake.in (get_object_extension): Added explanatory comment.
+       (generate_dependency_code): Handle $seen_objext.
+
+       * depend.am: Removed obsolete comment.
+       * depend2.am: Minor formatting fix.
+
+1999-03-28  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/Makefile.am (dist_m4data_DATA): Renamed, and added new
+       files.
+       (EXTRA_DIST): Removed.
+       * automake.in (dependency_macros): New global.
+       (scan_one_configure_file): Recognize new dependency tracking
+       macros, and define new resulting configure variables.
+       (generate_dependency_code): New sub.
+       (handle_dependencies): Use it.
+       * depend2.am (DEP_@FPFX@COMPILE): New macro.
+       (@EXT@.o): Use it.
+       (@EXT@.lo): Likewise.
+       * m4/depvars.m4: New file.
+       * m4/objcdepend.m4: New file.
+       * m4/cxxdepend.m4: New file.
+       * m4/init.m4: Moved dependency handling code into depout.m4.
+       * m4/depout.m4: New file.
+       * m4/ccdepend.m4: New file.
+       * m4/depend.m4: New file.
+
+       * depend2.am (@EXT@.o): Renamed to be old-style suffix pattern.
+       (@EXT@.lo): Likewise.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Don't create `.deps/.P'; it is no
+       longer needed.
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Add code to config.status which
+       will create the required .P files for dependency tracking.
+       * automake.in (scan_dependency_file): Removed.
+       (handle_dependencies): Never call scan_dependency_file.
+       (generate_deps): Removed.
+       (parse_arguments): Don't recognize --generate-deps, --build-dir,
+       --srcdir-name, or --include-deps.  Do recognize --ignore-deps.
+       (srcdir_name): Removed.
+       (build_directory): Removed.
+       (initialize_global_constants): Changed $USAGE to reflect argument
+       parsing changes.
+       (handle_dist_worker): Never run automake in `dist' rule.
+       (handle_configure): Use --ignore-deps, not --include-deps.
+       * depend.am (DEPS_MAGIC): Removed.
+       (DEP_FILES): Unconditionally include.
+
+1999-03-27  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (saw_sources_p): Correctly count header extensions
+       seen.
+       (handle_headers): Fixed order of arguments to am_install_var.
+
+       * automake.in (am_install_var): Don't error if EXTRA_foo is
+       defined uselessly.
+
+       * scripts.am (install-@DIR@SCRIPTS): Use NDIR when appropriate.
+       (uninstall-@DIR@SCRIPTS): Likewise.
+       * progs.am (install-@DIR@PROGRAMS): Use NDIR when appropriate.
+       (uninstall-@DIR@PROGRAMS): Likewise.
+       * ltlib.am (install-@DIR@LTLIBRARIES): Use NDIR when appropriate.
+       (uninstall-@DIR@LTLIBRARIES): Likewise.
+       * lisp.am (install-@DIR@LISP): Use NDIR when appropriate.
+       (uninstall-@DIR@LISP): Likewise.
+       * libs.am (install-@DIR@LIBRARIES): Use NDIR when appropriate.
+       (uninstall-@DIR@LIBRARIES): Likewise.
+       * java.am (install-@DIR@JAVA): Use NDIR when appropriate.
+       (uninstall-@DIR@JAVA): Likewise.
+       * header.am (install-@DIR@HEADERS): Use NDIR when appropriate.
+       (uninstall-@DIR@HEADERS): Likewise.
+       * data.am (install-@DIR@DATA): Use NDIR when appropriate.
+       (uninstall-@DIR@DATA): Likewise.
+       * Makefile.in: Rebuilt.
+       * Makefile.am (dist_pkgdata_DATA): Renamed.
+       (EXTRA_DIST): Removed.
+       (install-data-hook): Added POST_INSTALL; print commands as they
+       are run; respect DESTDIR.
+       * dist-vars.am (DISTFILES): Removed $(HEADERS).
+       * automake.in (am_install_var): Accept `-candist' and
+       `-defaultdist' options.  Handle `dist_' and `nodist_' prefixes.
+       (am_primary_prefixes): Added can_dist argument.  Recognize `dist_'
+       and `nodist_' prefixes.
+       (handle_scripts): Pass -candist to am_install_var.
+       (handle_data): Pass -defaultdist to am_install_var.
+       (handle_headers): Likewise.
+       (handle_emacs_lisp): Pass -candist to am_install_var.
+       (handle_java): Pass -candist to am_install_var.
+
+1999-03-26  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/init.m4: Fixed typo when invoking SHELL.
+
+       * automake.in (lang_yacc_finish): Always use `.h' as suffix for
+       yacc header file.  From Ralf Corsepius.
+
+       * Makefile.in: Rebuilt.
+       * Makefile.am: Updated to reflect removal of TAR subst.
+       * automake.texi (Options): Document dist-bzip2.
+       * automake.in (TAR): Removed global.
+       (initialize_global_constants): Changed `dist' to use pipe with
+       gzip; work with non-GNU tar.
+       (handle_dist): Handle non-GNU tar.  Don't define TAR.
+       (initialize_global_constants): Added `dist-bzip2' entry.
+       (handle_options): Recognize dist-bzip2 option.
+       (handle_dist): Likewise.
+       * configure: Rebuilt.
+       * configure.in: Don't check for tar.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Check for `tar'.  Substitute
+       AMTARFLAGS.
+
+       * automake.in (am_install_var): Removed obsolete comment.
+
+       * texinfos.am (uninstall-info): Don't print loop but instead print
+       commands.  Simplified pre-uninstall loop.
+       * scripts.am (uninstall-@DIR@SCRIPTS): Don't print loop but
+       instead print commands.
+       * progs.am (uninstall-@DIR@PROGRAMS): Don't print loop but instead
+       print commands.
+       * ltlib.am (uninstall-@DIR@LTLIBRARIES): Don't print loop but
+       instead print commands.
+       * lisp.am (install-@DIR@LISP): Strip subdir from file name.
+       (uninstall-@DIR@LISP): Likewise.  Also, don't print loop but
+       instead print commands.
+       * libs.am (uninstall-@DIR@LIBRARIES): Don't print loop but instead
+       print commands.
+       * java.am (uninstall-@DIR@JAVA): Don't print loop but instead
+       print commands.
+       * header.am (install-@DIR@HEADERS): Strip subdir from file name.
+       (uninstall-@DIR@HEADERS): Likewise.  Also, don't print loop but
+       instead print commands.
+       * data.am (install-@DIR@DATA): Strip subdir from file name.
+       (uninstall-@DIR@DATA): Likewise.  Also, don't print loop but
+       instead print commands.
+
+       * automake.in (handle_merge_targets): `install-strip' is a phony
+       target.  From Michel de Ruiter.
+
+1999-03-25  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (define_compiler_variable): Don't define variable
+       with trailing `_'.
+
+1999-03-25  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (LDADD): accept -dlopen and -dlpreopen here
+       * automake.texi: ditto
+
+1999-03-25  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (TESTS): make from Solaris 7/x86 loses if srcdir
+       is absolute and != objdir.  dir="" or "$(srcdir)/" fixes it
+
+1999-03-24  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (define_compiler_variable): New sub.
+       (finish_languages): Use it.
+       (lang_cxx_finish): Likewise.
+       (lang_f77_finish): Likewise.
+       (lang_ppf77_finish): Likewise.
+       (lang_ratfor_finish): Likewise.
+       (lang_objc_finish): Likewise.
+
+1999-03-23  Tom Tromey  <tromey@cygnus.com>
+
+       * progs.am (install-@DIR@PROGRAMS): Use `-e' instead of multiple
+       sed invocations.  From Elrond.
+       (uninstall-@DIR@PROGRAMS): Likewise.
+
+       * automake.in (lang_lex_finish): Rewrite `l', not `y', to `c'.
+       From Ralf Corsepius.
+
+1999-02-01  Thomas Tanner  <tanner@gmx.de>
+
+       * automake.in: accept both A(C|M)_PROG_LIBTOOL, print a
+       warning when AM_PROG_LIBTOOL was found
+       * automake.texi: renamed AM_PROG_LIBTOOL to AC_PROG_LIBTOOL
+
+1999-03-22  Tom Tromey  <tromey@cygnus.com>
+
+       Made `+=' more robust.  Fixes pluseq6.test and pluseq7.test.
+       * automake.in (define_standard_variables): New sub.
+       (read_main_am_file): Use two passes to scan standard variables.
+       (read_am_file): Don't special-case configure variables with `+='.
+       (initialize_per_input): Initialize %var_was_plus_eq.
+       (read_am_file): Set var_was_plus_eq element correctly.
+       (define_variable): Give error if variable assigned with `+=' is
+       internally defined.
+       (initialize_per_input): Initialize %am_var_defs.
+       (file_contents_with_transform): Set element in %am_var_defs.
+       (read_am_file): Use %am_var_defs.
+
+1999-03-21  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (initialize_per_input): Initialize %object_map.
+       (handle_single_transform_list): Allow source files in
+       subdirectories.
+
+1999-03-21  Jim Meyering  <meyering@na-net.ornl.gov>
+
+       * automake.in (handle_dist): Add missing newline after the first
+       semicolon.
+
+1999-03-11  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/error.m4, m4/mktime.m4, m4/obstack.m4, m4/regex.m4,
+       m4/strtod.m4: Use $ac_objext, not `.o'.  From Jim Meyering.
+
+       From Jim Meyering:
+       * automake.in (handle_dist): Add `;\' to end of distcheck-hook
+       line.
+       (scan_one_configure_file): In LIBOBJS, recognize `$ac_objext' as
+       legitimate ending.  Fixes libobj9.test.
+
+       From Ralf Corsepius.  Fixes lex3.test.
+       * automake.in (lang_yacc_finish): Include `.' in name pushed onto
+       maintainer-clean list.
+       (lang_lex_finish): Likewise.
+
+1999-03-02  Tom Tromey  <tromey@cygnus.com>
+
+       * subdirs.am (maintainer-clean-recursive): Changed "&&" into "if"
+       construct to work around FreeBSD make/sh problem.  From Rich Wales.
+
+1999-03-01  Tom Tromey  <tromey@cygnus.com>
+
+       Fixes from Pavel Roskin:
+       * automake.in (variable_conditions_sub): Sort list passed to
+       variable_conditions_permutations.
+       (variable_conditions): Sort list before returning.
+
+1999-02-27  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (lang_extensions): New sub.
+       (handle_dependencies): Use it.
+       (cxx_extensions): Removed.
+       (lang_cxx_finish): Use lang_extensions.
+       (f77_extensions): Removed.
+       (lang_f77_finish): Use lang_extensions.
+       (objc_extensions): Removed.
+       (lang_ppf77_finish): Put `.' before extension.  Fixes ext.test.
+       Report from Dave Morrison.
+       (lang_ratfor_finish): Likewise.
+
+1999-02-26  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (finish_languages): Added AM_LDFLAGS.
+       (lang_cxx_finish): Likewise.
+       (lang_f77_finish): Likewise.
+       (lang_ppf77_finish): Likewise.
+       (lang_ratfor_finish): Likewise.
+       (lang_objc_finish): Likewise.
+
+1999-02-11  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (obsolete_macros): Copied from automake.in.
+       (obsolete_rx): Use only keys of obsolete_macros.
+       (scan_configure): Report replacement macro for an obsolete macro.
+       * automake.in (obsolete_macros): Added ud_GNU_GETTEXT.
+
+       * automake.in (obsolete_macros): Corrected typo in AM_EXEEXT
+       entry.  Fixes obsolete2.test.
+
+       * automake.in (obsolete_macros): Use empty string to indicate no
+       substitution.
+       (scan_one_configure_file): Likewise.
+
+1999-02-07  Paul Eggert  <eggert@twinsun.com>
+
+       * m4/ccstdc.m4 (AM_PROG_CC_STDC): Prefer -Ae to -Aa
+       -D_HPUX_SOURCE, since -Ae allows `long long' and this is
+       needed by some programs.
+
+1999-02-10  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_texinfo): Added `pgs' to list of
+       extensions.  From NISHIDA Keisuke.
+
+1999-02-04  Akim Demaille  <demaille@inf.enst.fr>
+
+       * automake.in (handle_texinfo): remove texinfo.tex from
+       TEXINFODIR.
+
+1999-02-02  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_merge_targets): Use INSTALL_STRIP_FLAG.
+       * progs.am (install-@DIR@PROGRAMS): Added INSTALL_STRIP_FLAG.
+       * header-vars.am (INSTALL_PROGRAM): Removed
+       AM_INSTALL_PROGRAM_FLAGS.
+       (INSTALL_STRIP_FLAG): New macro.
+
+       * automake.in: Handle `ypp' as C++ yacc source and `lpp' as C++
+       lex source.
+       (lang_yacc_finish): Likewise.
+       (lang_lex_finish): Likewise.
+
+1999-02-01  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist_worker): Correctly find find in $$d,
+       not $$.  From Bill Davidson.
+
+       * automake.in (finish_languages): Use "&", not "do".  From Pavel
+       Roskin.
+       (handle_single_transform_list): Likewise.
+
+1999-01-29  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Removed unused variable.  From
+       Pavel Roskin.
+
+       * ansi2knr.c: New version from L. Peter Deutsch.
+
+1999-01-22  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (require_file_internal): Correctly examine return
+       value of `system'.  From Andris Pavenis.  Fixes copy.test.
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require autoconf 2.13.
+
+       * automake.in (lang_ppf77_rewrite): New function.  From Jochen
+       Kuepper.  Fixes ppf77.test.
+       (lang_ratfor_rewrite): New function
+
+       * automake.in (handle_configure): Use `&' before sub calls (Perl 4
+       fix).  From Erez Zadok.
+
+1999-01-15  Tom Tromey  <tromey@cygnus.com>
+
+       * configure.in: Version 1.4a (oops).
+
+       * configure.in: Updated version to 1.5a.
+
+1999-01-14  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Compute $header_dir based on
+       $one_name, not $one_hdr.  Reported by Erez Zadok.  Fixes
+       confh2.test.
+       (handle_configure): Compute relative path to input header
+       correctly in all cases.
+
+       * automake.in (handle_tests): Avoid error messages from dejagnu
+       test rules.  From Karl Heuer.
+
+       * automake.in (handle_texinfo): Add `/' to end of $conf_dir.
+
+       * Makefile.am (AUTOMAKE_OPTIONS): Added `1.4'.
+
+       * texi-vers.am ($(srcdir)/stamp-@VTI@): Find @TEXI@ in srcdir.
+       From Alexandre Oliva and Erez Zadok.
+
+       * automake.in (create): Renamed from touch.
+       (handle_configure): Use create, not touch.
+
+       * config.sub, config.guess: New versions from autoconf.
+
+       * mkinstalldirs: New version from autoconf.
+
+1999-01-12  Tom Tromey  <tromey@cygnus.com>
+
+       * config.sub, config.guess, COPYING, texinfo.tex: New versions
+       from FSF.
+
+1999-01-11  Marcus G. Daniels  <mgd@chama.santafe.edu>
+
+       * automake.in (PATH_PATTERN): New variable:
+       (INCLUDE_PATTERN): Use it.  Ignore all include commands using
+       symbols besides $(top_srcdir) and $(srcdir).
+
+1999-01-11  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_dist_worker): avoid failure in `make dist'
+       if last file is a builddir-only file
+
+1999-01-11  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * missing (autoheader): `s' was missing from sed script; grr
+
+1999-01-11  Tom Tromey  <tromey@cygnus.com>
+
+       * remake-hdr.am (@STAMP@): Reverted timestamp change.
+       ($(srcdir)/@STAMP@.in): Likewise.
+
+1999-01-10  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (scriptdir): New macro.
+       (script_DATA): Likewise.
+       (install-data-hook): Use them.
+       (EXTRA_DIST): Added script_DATA.
+       (installcheck-local): Use script_DATA.
+
+       * Makefile.am (pkgdata_DATA): Removed duplicate definition.
+
+1999-01-10  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * missing (autoheader): accept multiple header files
+       (automake): simplify sed processing
+
+1999-01-10  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_configure, stamp_dir): create only one stamp
+       file per header, instead of one in the top-level directory and one
+       in the directory that contains the header.
+
+1999-01-10  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (lang_objc_finish): Formatting fix.
+
+       * automake.in (objc_extensions): New sub.
+       (handle_dependencies): Only generate dependency-tracking code for
+       ObjC when ObjC source seen.
+
+-----
+
+Copyright 1999-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
diff --git a/old/ChangeLog.01 b/old/ChangeLog.01
new file mode 100644 (file)
index 0000000..cb7b37a
--- /dev/null
@@ -0,0 +1,4937 @@
+2001-12-31  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Extending): Document installcheck-local.  Added
+       installdirs-local index entry.
+       (Tests): Document installcheck-local.
+
+       * automake.in (handle_single_transform_list): Indentation fix.
+
+2001-12-31  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (common_files): Add COPYING.DOC.
+       Suggested by Karl Berry.
+
+2001-12-30  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (define_configure_variable): Define a user macro,
+       not an automake macro.
+       * tests/Makefile.am (TESTS): Added ar.test.
+       * tests/ar.test: New file.
+
+       For PR automake/211:
+       * automake.in (object_compilation_map): New global.
+       (initialize_per_input): Initialize it.
+       (COMPILE_LIBTOOL): New constant.
+       (COMPILE_ORDINARY): Likewise.
+       * tests/Makefile.am (TESTS): Added pr211.test.
+       * tests/pr211.test: New file.
+
+       For PR automake/215:
+       * configure.in: Use AM_AUTOMAKE_OPTIONS.
+       * Makefile.am (AUTOMAKE_OPTIONS): Removed.
+       * automake.texi (Macros): Document AM_AUTOMAKE_OPTIONS.
+       (Options): Mention AM_AUTOMAKE_OPTIONS.
+       * automake.in (global_options): New global.
+       (global_options_line): Likewise.
+       (scan_autoconf_traces): Trace AM_AUTOMAKE_OPTIONS.
+       (scan_one_autoconf_file): Likewise.
+       (process_option_list): New function.
+       (handle_options): Use it.  Also, handle global options.
+       * m4/Makefile.am (m4data_DATA): Added options.m4.
+       * m4/options.m4: New file.
+
+       * lib/am/install.am (?SUBDIRS?installdirs-am): Handle
+       installdirs-local.
+       (?!SUBDIRS?installdirs): Likewise.
+       * automake.in (handle_installdirs): Handle installdirs-local.
+       * automake.texi (Extending): Mention installdirs.
+       * tests/Makefile.am (TESTS): Added installdir.test.
+       * tests/installdir.test: New file.
+
+2001-12-30  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/yacc.am: Also rename the possible y.output file.
+       Remove the trailing y.tab.h.
+
+2001-12-30  Paolo Bonzini  <bonzini@gnu.org>
+
+       * automake.texi (Install): Remove mention of nonexistent
+       uninstall-hook.
+
+2001-12-30  Alan Modra  <amodra@bigpond.net.au>
+
+       * automake.in (generate_makefile): Unlink output file before
+       opening so that any hard links are not changed.
+
+2001-12-30  Tom Tromey  <tromey@redhat.com>
+
+       * tests/pr220.test: Use `required' to pick up gcc.
+
+       For PR automake/243:
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Strip everything
+       after `:'.
+       * tests/Makefile.am (TESTS): Added pr243.test.
+       * tests/pr243.test: New file.
+
+       For PR automake/220:
+       * tests/Makefile.am (TESTS): Added pr220.test.
+       * tests/pr220.test: New file.
+       * m4/cond.m4 (AM_CONDITIONAL): Cause creation of config.status to
+       fail if conditional was never run.
+
+       For PR automake/260:
+       * lib/depcomp (tru64): Correctly handle libtool case.
+       From doreille@smr.ch.
+
+2001-12-30  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/distdir.am (distcleancheck_listfiles): Unquote.
+       Reported by Yann Droneaud.
+
+2001-12-29  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/266:
+       * tests/Makefile.am (TESTS): Added pr266.test.
+       * tests/pr266.test: New file.
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Handle
+       non-standard name for makefile.
+
+       For PR automake/279:
+       * automake.in (conditional_ambiguous_p): New sub.
+       (handle_lib_objects_cond): Use it.
+       (check_ambiguous_conditional): Use it.
+       * tests/Makefile.am (TESTS): Added pr279.test, pr279-2.test.
+       * tests/pr279.test: New file.
+       * tests/pr279-2.test: New file.
+
+2001-12-26  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/249:
+       * tests/Makefile.am (TESTS): Added nodist2.test.
+       * tests/nodist2.test: New file
+
+2001-12-26  Ralf Corsepius <corsepiu@faw.uni-ulm.de>
+
+       * m4/multi.m4: Fix quoting in AC_OUTPUT_COMMANDS.
+
+2001-12-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Test for Autoconf >= 2.52.
+       * tests/defs (needs_autoconf, has_autoconf): Delete definition.
+       * tests/ansi3.test, tests/ansi5.test, tests/ccnoco.test,
+       tests/cond4.test, tests/cond9.test, tests/cond16.test,
+       tests/cond18.test, tests/cond19.test, tests/cond20.test,
+       tests/confsub.test, tests/depcomp2.test, tests/depdist.test,
+       tests/depend2.test, tests/dirname.test, tests/distname.test,
+       tests/extra5.test, tests/install2.test, tests/lex3.test,
+       tests/make.test, tests/nobase.test, tests/pr9.test,
+       tests/pr87.test, tests/stamph2.test, tests/subdir5.test,
+       tests/subdirbuiltsources.test, tests/subobj3.test,
+       tests/subobj5.test, tests/subobj6.test, tests/substref.test,
+       tests/target-cflags.test, tests/yacc4.test, tests/yacc7.test,
+       tests/yaccvpath.test: Do not use $needs_autoconf.
+
+2001-12-14  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Bump version to 1.5c.
+
+2001-12-14  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Bump version to 1.5b.
+
+       * lib/config.sub, lib/config.guess: New versions from FSF.
+
+       * lib/am/lex.am, lib/am/yacc.am: Use `rm -f', not `rm'.
+
+2001-12-12  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (check_gnu_standards, check_gnits_standards): Pass
+       "$am_file.am" as WHERE argument to require_file.
+
+2001-12-12  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/python.m4 (AM_PATH_PYTHON): Check all known Python interpreters
+       in loop until we find one the satisfies the user supplied version.
+       Add python2 to the list of known interpreters.  Don't use
+       changequote.  Cache the calculation of PYTHON_VERSION and
+       PYTHON_PLATFORM.
+       (AM_PYTHON_CHECK_VERSION): New function, extracted from
+       AM_PATH_PYTHON and modernized.
+       * m4/runlog.m4: New file.
+       * m4/Makefile.am (m4data_DATA): Add it.
+
+2001-12-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/confsub.test, tests/depdist.test, tests/extra5.test,
+       tests/nobase.test, tests/stamph2.test,
+       tests/subdirbuiltsources.test: Require Autoconf.
+
+2001-12-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Dist): Document $(DISTCHECK_CONFIGURE_FLAGS).
+       * lib/am/distdir.am (distcheck): Honnor $(DISTCHECK_CONFIGURE_FLAGS).
+       Suggested by Merijn de Jonge.
+
+2001-12-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/tags.am (ID): Search $(LISP) files in $(srcdir),
+       like other ID dependencies.
+       Suggested by Christian Cornelssen.
+
+2001-12-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_dist): Distribute common files which
+       do not exist but are target of a Makefile rule.
+       * automake.texi (Dist): Update.
+       * test/builtcommon3.test: New file.
+       * test/Makefile.am (TESTS): Add distcommon3.test.
+
+2001-12-04  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (macro_define): Fix misuse of chomp introduced on
+       2001-11-28.
+
+2001-11-28  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (append_comments): New.  Extracted from
+       read_am_file.  Match '\n' with a regexp, don't use substr (the
+       perlport man page says '\n' is not always one byte wide).
+       (read_am_file):  Use it.  Always chomp $_.
+       (file_contents_internal):  Use append_comments.
+       (macro_define): Don't treat the trailing '\n' with substr, use
+       a regexp or chomp.
+
+2001-11-28  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs: Turn on shell traces when VERBOSE=x.
+
+2001-11-26  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Assembly Support): Mention .s and .S as only
+       suffixes.
+
+2001-11-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/subdirbuiltsources.test: Set -e after sourcing defs, not
+       before.
+
+2001-11-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/lex3.test: Require GNU Make.
+
+2001-11-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (ACLOCAL): Add -I $srcdir/../m4 before any other
+       directory.
+
+2001-11-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/tags.am (TAGS): Search %CONFIG% and $(LISP) files
+       in $(srcdir), like other TAGS dependencies.
+       Suggested by Christian Cornelssen.
+
+2001-11-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&macro_define): Use $where when reporting an error,
+       not the place where the macro was first defined since (i) if this
+       is the first definition, then obviously it was not defined before,
+       and (ii) anyway, the error is with the new definition, not the
+       first.
+
+2001-11-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/distdir.am (distcheck): Call distcleancheck.
+       (distcleancheck_listfiles, distcleancheck): New, extracted from
+       distcheck.
+       * automake.texi (Checking the distribution): Document
+       distcleancheck_listfiles and distcleancheck.
+
+2001-11-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (scan_one_autoconf_file): Parenthesize qw// in
+       foreach invocation, otherwise Perl5.005_03 complains about a
+       syntax error.  Reported by Yann Droneaud.
+
+2001-11-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (scan_texinfo_file): Suppress FIXME about strange
+       map behavior.
+
+2001-11-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (aclocaldir): Check for existence of libtool.m4 and
+       gettext.m4 if required.
+
+2001-11-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (define_objects_from_sources,
+       handle_lib_objects_cond, value_to_list): Use quotemeta instead of
+       the equivalant substitution.
+
+2001-11-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (SUFFIX_RULE_PATTERN): Add '_(){}$@' to the
+       set of accepted characters in extensions.
+       (rule_define): Convert '.o' and '.obj' into '$(OBJEXT)' for
+       internall use.
+       * tests/suffix6.test: Ensure that `.o' is handled like `.$(OBJEXT)'.
+
+2001-11-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Suffixes): Don't require SUFFIXES, but document
+       its use for the "extreme" cases.
+
+2001-11-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (rule_define): Use $KNOWN_EXTENSIONS_PATTERN
+       to match suffix rules for known extensions, or call
+       accept_extensions on suffixe rules for unknown extensions.
+       (var_SUFFIXES_trigger): New function.
+       (macro_define): Call var_VAR_trigger when $VAR is updated.
+       * tests/suffix6.test, tests/suffix7.test: New files.
+       * tests/Makefile.am (TESTS): Add suffix6.test and suffix7.test.
+
+2001-11-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (KNOWN_EXTENSIONS_PATTERN, known_extensions_list):
+       New variables.
+       (handle_single_transform_list, lang_yacc_target_hook): Use
+       KNOWN_EXTENSIONS_PATTERN.
+       (accept_extension): New function.
+       (register_language): Call it.
+
+2001-11-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       At every place where an "$extension" is used, include the leading
+       dot in the extension, don't hardcode it when building the filename.
+       That will make any support for a dot-less extension easier to add.
+
+       * automake.in (SUFFIX_RULE_PATTERN): Include extension dots in
+       backref groups.
+       ("main"): Prepend a '.' to the supported extensions of all
+       languages (e.g. 'c' becomes '.c').
+       (handle_languages, handle_single_transform_list,
+       handle_lib_objects_cond, handle_headers, derive_suffix,
+       rule_define): Do not add a dot
+       before extensions, and include dots in matching groups.
+       * lib/am/depend2.am (.%EXT%.o, .%EXT%.obj, .%EXT%.lo): Rename as ...
+       (%EXT%.o, %EXT%.obj, %EXT%.lo): ... these.
+       * lib/am/lex.am (.%EXT%.%DERIVED-EXT%): Rename as ...
+       (%EXT%%DERIVED-EXT%): ... this.
+       * lib/am/yacc.am: Likewise.
+
+2001-11-12  Akim Demaille  <akim@epita.fr>
+
+       * m4/make.m4 (AM_MAKE_INCLUDE): Serial 2.
+       Use `"#"' and `"\""', which
+       Autoconf mode prefers over `'#'' and `'"''.
+       * m4/missing.m4 (AM_MISSING_HAS_RUN): Serial 3.
+       Rely on AC_MSG 2.50's quotation.
+
+2001-11-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (scan_texinfo_file): Typo from 2001-11-05.
+
+2001-11-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/distdir.am (distdir): Also look for directory in build
+       directory first. (See 2001-05-14.)
+       * tests/Makefile.am (TESTS): Add extra5.test.
+       * tests/extra5.test: New file.
+       From Dean Povey.
+
+2001-11-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for distcommon2.test:
+       * automake.in (automake_needs_to_reprocess_all_files): New
+       variable.
+       ("main"): Process all Makefiles a second time if
+       $automake_needs_to_reprocess_all_files is set.
+       (maybe_push_required_file): Return 1 or 0 whether the file is
+       pushed or not.
+       (require_file_internal): Set $automake_needs_to_reprocess_all_files
+       if an added file can't be pushed.
+
+       * test/distcommon2.test: New file.
+       * test/Makefile.am (TESTS): Add distcommon2.test.
+       From Pavel Roskin.
+
+2001-11-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (exec_dir_p): Remove.  Replace by...
+       (EXEC_DIR_PATTERN):... this.
+       (am_install_var): Adjust to use EXEC_DIR_PATTERN.
+
+2001-11-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for nobase.test:
+       * lib/am/header-vars.am (install_sh_DATA): New.
+       * lib/am/data.am (install-%DIR%%PRIMARY%): Declare and use
+       %DIR%%PRIMARY%_INSTALL, and set it to $(install_sh_DATA) instead
+       of $(INSTALL_DATA) for nobase_ targets.
+       * lib/am/lisp.am (install-%DIR%LISP): Likewise.
+       * lib/am/python.am (install-%DIR%PYTHON): Likewise.
+       * tests/nobase.test (configure.in): Append AC_OUTPUT.
+       * tests/Makefile.am (XFAIL_TESTS): Remove nobase.test.
+
+2001-11-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.texi: Remove references to stamp-h.in, which no longer
+       exists.
+       * tests/stamph2.test: Formatting change.
+
+2001-11-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/suffix3.test: Check for foo.$(OBJEXT) in Makefile.in.
+       Don't use -Wno-error.
+
+2001-11-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/suffix4.test ($AUTOMAKE): Don't use -Wno-error.
+       * tests/suffix5.test ($AUTOMAKE): Likewise.
+
+2001-11-07  Akim Demaille  <akim@epita.fr>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Don't escape quotes in
+       AC_MSG_ERROR.
+       Reported by Jim Meyering.
+
+2001-11-07  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/distdir.am (am__remove_distdir): Define in topdir only.
+
+2001-11-05  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/am/distdir.am (am__remove_distdir):
+       New macro.  Do not change permission of non-directories.
+       Change only user permission, as there's no point to changing group
+       or other permission.
+       (distdir, dist, dist-bzip2, dist-tarZ, dist-shar, dist-zip, dist-all,
+        distcheck): Use it.
+
+2001-11-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/python.am: Cleanup the cleaning section.
+       * automake.texi (Python): Remove documentation for PYCFILES
+       and PYOFILES.  Update the first paragraphes.
+
+2001-11-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (FOREIGN, GNU, GNITS, AC_CANONICAL_HOST,
+       AC_CANONICAL_SYSTEM, MOSTLY_CLEAN, DIST_CLEAN): Define as constants.
+       Adjust usage everywhere.
+
+2001-11-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (libtool_files, libtool_sometimes, common_files,
+       common_sometimes, config_aux_path): Use qw to simplify definition.
+       (scan_texinfo_file) <clean_suffixes, predefined_index,
+       hidden_index>: Likewise.
+       (scan_autoconf_traces) <traced>: Likewise.
+       (scan_one_autoconf_file, check_gnu_standards, resolve_linker):
+       Likewise.
+
+2001-11-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_single_transform_list): Pass $nonansi_obj to
+       derive_suffix.  Don't use an hardcoded 'o' for object extensions.
+       (derive_suffix): Accept $OBJ as a second argument, don't
+       hardcode 'o'.
+       * tests/suffix5.test: New test.
+       * tests/Makefile.am (TESTS): Add suffix5.test.
+       Reported by Arkadiusz Miskiewicz <misiek@pld.ORG.PL>.
+
+2001-11-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_single_transform_list): Don't call
+       $lang->target_hook for undefinied langages.
+       * tests/suffix4.test: New test.
+       * tests/Makefile.am (TESTS): Add suffix4.test.
+       Reported by Dmitry Mikhin <dmitrym@acres.com.au>.
+
+2001-11-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (@common_sometimes, &handle_configure): No longer
+       use stamp-hin.
+       * lib/am/remake-hdr.am: Adjust.
+       * tests/confh.test: There is no stamp.hin.
+
+2001-11-01  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/lex.am, lib/am/yacc.am: Use the output file name in
+       `#line' and multiple inclusion guards.
+       * lib/ylwrap: Remove debugging code.
+       (input_dir, input_rx): Move where used.
+       Use the output file name in `#line'.
+
+2001-10-31  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (transform): Update documentation.
+
+2001-10-31  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/gcj.m4 (AM_PROG_GCJ): Define GCJFLAGS if unset.
+       Reported by Olivier Louchart-Fletcher <olivier@zipworld.com.au>.
+
+2001-10-30  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&create): Reinstall.
+
+2001-10-30  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&append_exeext): Use macro_delete.
+
+2001-10-30  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($verbose): Remove, inherited from
+       Automake::General.
+       (&variable_delete): Rename as...
+       (&macro_delete): this, for consistency.
+       (&variable_assert): New.
+       (&variable_value_as_list, &variable_value_as_list_recursive_worker):
+       Use it.
+
+2001-10-29  Akim Demaille  <akim@epita.fr>
+
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Use AC_RUN_LOG to avoid
+       cluttering configure's stdout.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Various formatting changes.
+       (create): Remove, unused.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&append_exeext): New.
+       (&am_primary_prefixes): Use it.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (am_primary_prefixes): Now, in accordance with its
+       comment, return the list of prefixes actually used, not all the
+       possible prefixes for a primary.
+       (&handle_libraries, &handle_ltlibraries, &handle_java)
+       (&am_install_var): Adjust.
+       * Makefile.am (maintainer-check): Allow `local $_;'.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Various formatting changes.
+       (&variable_defined): Second argument is optional.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_primary_prefixes): Now returns a list, not a
+       hash.
+       (&handle_libraries, &handle_ltlibraries, &handle_java)
+       (&am_install_var): Adjust.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (@libtoolize_files, @libtoolize_sometimes): Rename
+       as...
+       (@libtool_files, @libtool_sometimes): these.
+       ($libtool_location): Remove, completely replaced by $seen_libtool.
+       (&require_file_internal): Do not run libtoolize, that's
+       autoreconf's job.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * tests/acoutnoq.test, tests/acoutput.test, tests/acoutqnl.test,
+       * tests/acouttbs.test, tests/auxdir.test, tests/colon.test,
+       * tests/colon2.test, tests/colon3.test, tests/colon4.test,
+       * tests/colon5.test, tests/colon6.test, tests/colon7.test,
+       * tests/conf2.test, tests/config.test, tests/depcomp.test,
+       * tests/depcomp2.test, tests/discover.test, tests/fpinst2.test,
+       * tests/fpinstall.test, tests/ldadd.test, tests/libobj7.test,
+       * tests/libobj8.test, tests/output.test, tests/output2.test,
+       * tests/output3.test, tests/output4.test, tests/output5.test,
+       * tests/pr2.test, tests/remake.test, tests/remake2.test,
+       * tests/remake3.test, tests/scripts.test, tests/stamph.test,
+       * tests/subdir.test, tests/subdir2.test, tests/subdir4.test,
+       * tests/tagsub.test, tests/texinfo8.test: Remove PACKAGE and VERSION
+       assignments.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_autoconf_traces): Use eq for equality.
+       Anchor regexps.
+       Remove dead comment.
+       (&initialize_per_input): Don't initialize several times the same
+       vars.
+
+2001-10-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (scan_one_autoconf_file): When using %generalize, be
+       sure to replace only words.  AC_FUNC_OBSTACK was matching
+       M4_AC_FUNC_OBSTACK.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
+       * tests/stamph2.test: Strengthen.
+       * tests/confh2.test, tests/confh3.test: Remove.
+       These are bad tests: they don't check the effects, but some
+       internal details in Makefile.
+       And they are covered by stamph2.test.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
+       Now that stamp-h's are created by config.status, we don't need to
+       handle them in Makefile's.
+
+       * lib/am/remake-hdr.am (%STAMP%): Just run config.status.
+       * m4/header.m4 (_AM_STAMP): New.
+       (_AM_CONFIG_HEADER): Use it.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&generate_makefile, &handle_texinfo_helper)
+       (&handle_man_pages, &handle_dist, &handle_configure, &handle_all)
+       (&define_pretty_variable, &read_am_file, &file_contents_internal)
+       (&am_install_var, &push_dist_common, &unquote_m4_arg): Simplify
+       `join (' ', @list)' into `"@list"'.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (@config_fullnames, @config_names): Remove.
+       (@config_headers): Now contains the actual spec used in
+       AC_CONFIG_HEADERS.
+       (&split_config_file_spec): New.
+       (&handle_tags, &handle_configure, &handle_all, &scan_autoconf_traces)
+       (&scan_one_autoconf_file): Adjust.
+       (&scan_one_autoconf_file): Pff, don't think _AM_CONFIG_HEADER is
+       AM_CONFIG_HEADER.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
+       * m4/header.m4 (_AM_CONFIG_HEADER): New.
+       (AM_CONFIG_HEADER): Use it.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_configure): Use the config.status 2.50
+       invocation syntax for config files and headers.
+       autoheader needs the name of the file to create, not from what it
+       must be created, hence CONFIG_HEADER_FULL is $one_name, not
+       $one_fullname.
+       * lib/am/configure.am, lib/am/remake-hdr.am: Likewise.
+       * tests/confsub.test (SUBDIRS): Adjust to the new config.status
+       invocation.
+       Strengthen: Use the non-default config.hin source.
+       Strengthen: Make sure config.h is properly updated when config.hin
+       is changed.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_configure): Seeing Automake files in
+       @other_input_files is a programming error, not merely something to
+       ignore.
+       Factor slightly the code.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($canonical_location): New.
+       Use it.
+       (&require_config_file, $line_error): Remove.
+
+2001-10-24  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Use &verbose.
+       (&generate_makefile, &scan_texinfo_file, &scan_aclocal_m4): Use
+       Automake::XFile.
+
+2001-10-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/python.am (install-%DIR%PYTHON, uninstall-%DIR%PYTHON):
+       Have the basename step optional and use %NDIR% instead of %DIR% in
+       filenames in order to support 'nobase_'.
+
+2001-10-24  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_languages, handle_single_transform_list,
+       lang_c_rewrite): Use require_conf_file instead of
+       require_config_file to require depcomp or compile from
+       Makefile.am.  (This is a part of my patch of 2001-10-15 which got
+       mistakenly reverted.)
+
+2001-10-24  Akim Demaille  <akim@epita.fr>
+
+       * tests/confh.test: Since 2001-10-20 Kevin Ryde, stamp-h is
+       stamp-h1.
+
+2001-10-24  Akim Demaille  <akim@epita.fr>
+
+       Since the ansi2knr patch from 2001-10-20 Kevin Ryde, `$U' can
+       appear in Makefile.in in the clean rule.
+
+       * tests/cxxansi.test: Adjust.
+
+2001-10-24  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_print_error, &am_file_error, &am_macro_error)
+       (&am_target_error, &am_line_error, &am_conf_error, &am_file_warning):
+       Rename as...
+       (&print_error, &file_error, &macro_error, &target_error, &line_error)
+       (&conf_error, &file_warning): these.
+       (&file_warning): Fix the prototype and argument handling.
+       (&am_line_warning): Remove, unused.
+
+       Also, repair the misapplication of previous patches.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($ac_output_location): Replace with...
+       ($ac_config_files_location): this.
+       (&scan_autoconf_traces): We don't need $file and $line, $here is
+       enough.
+       (&scan_one_autoconf_file): Use `$in_ac_output' to store the macro
+       name (AC_OUTPUT or AC_CONFIG_FILES) for error messages.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&require_file_with_macro): Use &require_file.
+       (&read_am_file): Move the definition of $here at its proper place.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($libtool_line, $seen_pythondir): Replace with...
+       ($libtool_location, $pythondir_location): these.
+       (&require_conf_file_with_line, &require_conf_file_with_line):
+       Remove, unused.
+       (&require_file): Don't forget $where.
+       (&require_conf_file): Ahem...  Fix the name.
+       (&require_config_file): Invoke &require_conf_file, not yourself.
+       (&am_line_error): Fix the default am_file_error invocation.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($seen_lispdir): Replace with...
+       ($am_lispdir_location): this.
+       (&require_conf_file): New.
+       (&require_config_file, &require_conf_file_with_line,
+       (&require_conf_file_with_conf_line): Use it.
+       (&require_conf_file_with_macro): New.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($config_header_line, $ac_output_line)
+       ($ac_gettext_line, $package_version_line): Replace with...
+       ($config_header_location, $ac_output_location)
+       ($ac_gettext_location, $package_version_location): these.
+       (&require_file_with_conf_line, &require_file_with_line): Remove,
+       no longer used.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&require_file_internal): Instead of $file and $line,
+       take $where as first argument.
+       Adjust all callers.
+       (&require_file_with_macro): New.
+       Use it where internal black magic was used to recover the location
+       of a macro definition.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&read_am_file): Define and use `$here'.
+       Avoid using am_line_error.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_target_error): New.
+       Use it where appropriate instead of...
+       (&am_line_error): this.
+       Using it for a target is a croak error.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_macro_error): New.
+       Use it where appropriate instead of...
+       (&am_line_error): this.
+       Using it for a macro is a croak error.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * tests/asm.test: s/AC_PROG_AS/AM_PROG_AS/.
+       AC_OUTPUT a Makefile.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%var_line): Rename as...
+       (%var_location): this.
+       Use it consistently as the location where the macro is defined,
+       file and line when possible, otherwise just file.
+       (&read_am_file): Rules have their own location tracking, don't
+       pollute %var_location.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (am_line_error): Clarify.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_print_error): Set $exit_status since all your
+       users do.
+       (&am_error, &am_file_error, &am_line_error, &am_conf_error):
+       Don't.
+       (&am_conf_line_error, &am_conf_line_warning): Remove.
+       Adjust callers to use &am_file_error and...
+       (&am_file_warning): new.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * m4/regex.m4: Use AC_LIBOBJ.
+       Require 2.50, and use AC_LIBSOURCES freely.
+       * tests/asm.tests: Formatting changes.
+       Exercise AM_PROG_AS.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * tests/install.test: This test is an empty shell, do not run
+       automake.
+       * tests/Makefile.am (TESTS): Don't run it.
+       * tests/defs (ACLOCAL): When using gettext, pass in the installed
+       aclocaldir.
+       * tests/subdircond.test (SUBDIRS): AM_GNU_GETTEXT needs automake
+       --add--missing.
+       * tests/obsolete2.test: Remove, merged into...
+       * tests/obsolete.test: here.
+       Both aclocal and automake should complain.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (scan_autoconf_traces): Don't recognize AC_SUBSTs
+       for symbols which cannot be Make macro names.
+       (scan_one_autoconf_file): `$here' is new.
+       Use it consistently instead of `1' to remember a token was seen.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * tests/subdircond.test: Requires gettext.
+       * tests/libobj.test, tests/libobj10.test, tests/libobj2.test,
+       * tests/libobj6.test, tests/libobj9.test, tests/libtool.test,
+       * tests/libtool2.test, tests/ltdeps.test, tests/ltlibobjs.test,
+       * tests/nolink.test, tests/obsolete.test, tests/pr72.test,
+       * tests/sinclude.test, tests/subdircond.test, tests/subobj4.test:
+       Produce valid configure.in, use aclocal appropriately, declare
+       when libtool is required.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * m4/lex.m4: Don't run AC_DECL_YYTEXT, Autoconf does.
+       * automake.texi (Macros, Yacc and Lex): Adjust.
+       * automake.in ($seen_decl_yytext): Rename as...
+       ($seen_prog_lex): this.
+       (&scan_autoconf_traces): Add AC_PROG_LEX support.
+       (&scan_one_autoconf_file, &lang_lex_finish): Adjust.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_autoconf_traces): Add support for
+       AM_PATH_LISPDIR and AM_PATH_PYTHON.
+
+2001-10-21  Akim Demaille  <akim@epita.fr>
+
+       * tests/defs (ACLOCAL): Point to the installed aclocaldir if
+       libtool is required.
+       * tests/lex.test: Run AC_INIT once.
+       * tests/ldflags.test, tests/listval.test, tests/suffix2.test:
+       Libtool is required.
+       * tests/header.test: Build a correct configure.in.
+       * tests/defun2.test (configure.in): Be a bit respectful with
+       Autoconf, close the macro invocations.
+       * tests/confdeps.test: Even when not using aclocal, aclocal.m4
+       must be correct.
+
+       * automake.in (scan_autoconf_traces): Add support for
+       AC_CANONICAL_HOST, AC_CANONICAL_SYSTEM, A[CM]_PROG_LIBTOOL,
+       AM_CONFIG_HEADER, AM_MAINTAINER_MODE.
+       * tests/condincl.test (target): Better pattern, to avoid matching
+       the definition of `target_alias' which is now properly discovered
+       as an AC_SUBST by traces.
+       * cond4.test: Better grep pattern: After all, why shouldn't
+       TWO_FALSE be AC_SUBST properly.
+       * tests/installsh.test (AUTOMAKE, ACLOCAL): Adjust.
+
+2001-10-20  Kevin Ryde <user42@zip.com.au>
+
+       * lib/am/ansi2knr.am (mostlyclean-kr): Only rm *_.c when
+       actually using ansi2knr.
+
+       * automake.in (handle_configure): Always put a number on $stamp_name,
+       to match AM_CONFIG_HEADER.
+
+2001-10-20  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (TESTS): Added condd.test.
+       (XFAIL_TESTS): Added condd.test.
+       * tests/condd.test: New file.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_autoconf_traces): Add support for
+       AM_C_PROTOTYPES, AM_GNU_GETTEXT, AM_PROG_CC_C_O, and
+       AC_CONFIG_AUX_DIR.
+       * tests/alpha.test (configure.in): Automake wants a Makefile.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (scan_autoconf_traces): Use an unlikely to be used
+       separator between trace arguments, in particular not `:' as it is
+       within AC_CONFIG_FILES's $1.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * tests/alpha.test (configure.in): Create, don't append.  A single
+       AC_INIT is enough.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * tests/acoutnoq.test, tests/acoutput.test, tests/acoutput2.test,
+       * tests/acoutqnl.test, tests/acouttbs.test, tests/all.test,
+       * tests/alpha.test, tests/ansi.test, tests/asm.test,
+       * tests/auxdir.test, tests/auxdir2.test, tests/backsl2.test,
+       * tests/badline.test, tests/block.test, tests/canon2.test,
+       * tests/check.test, tests/checkall.test, tests/clean.test,
+       * tests/colneq.test, tests/colneq2.test, tests/colon.test,
+       * tests/colon2.test, tests/colon3.test, tests/colon4.test,
+       * tests/colon5.test, tests/colon6.test, tests/colon7.test,
+       * tests/comment.test, tests/comment3.test, tests/cond.test,
+       * tests/cond2.test, tests/cond6.test, tests/cond7.test,
+       * tests/condincl.test, tests/condincl2.test, tests/condman.test,
+       * tests/condman2.test, tests/confdist.test, tests/confh.test,
+       * tests/confh2.test, tests/confh3.test, tests/confvar.test,
+       * tests/confvar2.test, tests/copy.test, tests/ctarget1.test,
+       * tests/cxxcpp.test, tests/dash.test, tests/dejagnu.test,
+       * tests/dejagnu2.test, tests/distcommon.test, tests/distdir.test,
+       * tests/else.test, tests/empty.test, tests/exdir.test,
+       * tests/exdir2.test, tests/extra3.test, tests/extra4.test,
+       * tests/flibs.test, tests/fnoc.test, tests/fo.test,
+       * tests/fonly.test, tests/fortdep.test, tests/fpinst2.test,
+       * tests/fpinstall.test, tests/gcj2.test, tests/gnits.test,
+       * tests/include.test, tests/info.test, tests/insh.test,
+       * tests/insh2.test, tests/install.test, tests/installsh.test,
+       * tests/instdata.test, tests/instdata2.test, tests/instexec.test,
+       * tests/insthook.test, tests/instman.test, tests/instman2.test,
+       * tests/java.test, tests/javaprim.test, tests/javasubst.test,
+       * tests/libobj3.test, tests/link_f_only.test, tests/lisp.test,
+       * tests/man.test, tests/mclean.test, tests/mdate.test,
+       * tests/mdate2.test, tests/mdate3.test, tests/mdate4.test,
+       * tests/mkinst2.test, tests/mkinstall.test, tests/nodepcomp.test,
+       * tests/noinst.test, tests/obsolete.test, tests/obsolete2.test,
+       * tests/outdir.test, tests/output.test, tests/output2.test,
+       * tests/output3.test, tests/output4.test, tests/output5.test,
+       * tests/package.test, tests/pluseq.test, tests/pluseq2.test,
+       * tests/pluseq3.test, tests/pluseq5.test, tests/pluseq6.test,
+       * tests/pluseq8.test, tests/ppf77.test, tests/pr2.test,
+       * tests/primary.test, tests/proginst.test, tests/python.test,
+       * tests/remake.test, tests/remake2.test, tests/remake3.test,
+       * tests/rulepat.test, tests/scripts.test, tests/seenc.test,
+       * tests/sinclude.test, tests/spell.test, tests/spell3.test,
+       * tests/spelling.test, tests/stamph.test, tests/subdir.test,
+       * tests/subdir2.test, tests/subdircond.test, tests/subst.test,
+       * tests/symlink.test, tests/symlink2.test, tests/symlink3.test,
+       * tests/syntax.test, tests/tags.test, tests/tagsub.test,
+       * tests/texinfo.test, tests/texinfo10.test, tests/texinfo2.test,
+       * tests/texinfo3.test, tests/texinfo4.test, tests/texinfo5.test,
+       * tests/texinfo6.test, tests/texinfo7.test, tests/texinfo8.test,
+       * tests/texinfo9.test, tests/vars.test, tests/vartar.test,
+       * tests/version.test, tests/version2.test, tests/version3.test,
+       * tests/version4.test, tests/vpath.test, tests/vtexi.test,
+       * tests/vtexi2.test, tests/werror.test: Run aclocal before automake.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * tests/acoutnoq.test, tests/acoutput.test, tests/acoutqnl.test,
+       * tests/acouttbs.test, tests/asm.test, tests/colon.test,
+       * tests/colon2.test, tests/colon3.test, tests/colon4.test,
+       * tests/colon5.test, tests/colon6.test, tests/colon7.test,
+       * tests/conf2.test, tests/confh.test, tests/confh2.test,
+       * tests/confh3.test, tests/confh4.test, tests/config.test,
+       * tests/confsub.test, tests/depend3.test, tests/discover.test,
+       * tests/fpinst2.test, tests/fpinstall.test, tests/gnits.test,
+       * tests/header.test, tests/ldadd.test, tests/ldflags.test,
+       * tests/libobj.test, tests/libobj10.test, tests/libobj2.test,
+       * tests/libobj6.test, tests/libobj7.test, tests/libobj8.test,
+       * tests/libobj9.test, tests/mdate4.test, tests/obsolete.test,
+       * tests/output.test, tests/output2.test, tests/output3.test,
+       * tests/output4.test, tests/output5.test, tests/package.test,
+       * tests/parse.test, tests/pr2.test, tests/remake.test,
+       * tests/remake2.test, tests/remake3.test, tests/scripts.test,
+       * tests/stamph.test, tests/subdir.test, tests/subdir2.test,
+       * tests/subdir4.test, tests/subdirbuiltsources.test,
+       * tests/subobj4.test, tests/tagsub.test, tests/texinfo8.test,
+       * tests/yacc5.test, tests/yacc6.test, tests/yacc7.test: Remove
+       AC_ARG_PROGRAM, AC_PROG_INSTALL and AC_PROG_MAKE_SET invocation
+       since AM_INIT_AUTOMAKE requires them.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * tests/defs (configure.in): Use credible AM_INIT_AUTOMAKE
+       arguments.
+       Don't run AC_ARG_PROGRAM another time, it is required by
+       AM_INIT_AUTOMAKE.
+       * tests/aclocal.test: Work on the default configure.in
+       * tests/config.test (configure.in): Don't AC_ARG_PROGRAM.
+       First AM_INIT_AUTOMAKE, then AM_CONFIG_HEADER.
+
+       Be realistic in testing: AC_INIT is required for Autoconf.
+       Broken so called optimized tests break trace handling.
+
+       * tests/aclibobj.test, tests/aclocal.test, tests/acoutnoq.test,
+       * tests/acoutput.test, tests/acoutput2.test, tests/acoutqnl.test,
+       * tests/acouttbs.test, tests/acsilent.test, tests/alpha.test,
+       * tests/colon.test, tests/colon2.test, tests/colon3.test,
+       * tests/colon4.test, tests/colon5.test, tests/colon6.test,
+       * tests/colon7.test, tests/cond.test, tests/cond2.test,
+       * tests/cond3.test, tests/cond5.test, tests/conf2.test,
+       * tests/confh.test, tests/confh2.test, tests/confh3.test,
+       * tests/confh4.test, tests/config.test, tests/confsub.test,
+       * tests/ctarget1.test, tests/depcomp.test, tests/depend3.test,
+       * tests/distcommon.test, tests/dup3.test, tests/fpinst2.test,
+       * tests/fpinstall.test, tests/header.test, tests/ldflags.test,
+       * tests/libobj.test, tests/libobj10.test, tests/libobj2.test,
+       * tests/libobj6.test, tests/libobj7.test, tests/libobj8.test,
+       * tests/libobj9.test, tests/output.test, tests/output2.test,
+       * tests/output3.test, tests/output4.test, tests/parse.test,
+       * tests/pr2.test, tests/recurs.test, tests/recurs2.test,
+       * tests/remake.test, tests/remake2.test, tests/remake3.test,
+       * tests/req.test, tests/scripts.test, tests/subdir.test,
+       * tests/subdir2.test, tests/subdir4.test, tests/subobj4.test,
+       * tests/tagsub.test, tests/texinfo8.test, tests/version.test,
+       * tests/version2.test: Add AC_INIT in `configure.in'.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_autoconf_traces): Add support for
+       AM_INIT_AUTOMAKE, AM_CONDITIONAL.
+       Let @args have a more natural M4 correspondence: $1 is args[1], no
+       args[0] etc.
+       (&scan_autoconf_files): Using autoconf traces is no longer a
+       complement of the previous ad hoc scheme: use either.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_one_autoconf_file): `%generalize' is new, and
+       factors dedicated $libsources assignments.
+
+2001-10-20  Akim Demaille  <akim@epita.fr>
+
+       * m4/error.m4, m4/obstack.m4, m4/ptrdiff.m4, m4/strtod.m4:
+       Remove, since Autoconf 2.52 has them.
+       * automake.in, aclocal.in, automake.texi: Adjust.
+
+2001-10-19  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&read_main_am_file): s/generated automatically/
+       generated/.
+       Insert @configure_input@, since 2.50 no longer output this
+       automatically for Makefiles.
+
+2001-10-19  Kevin Ryde <user42@zip.com.au>
+
+       * lib/am/check.am (check-TESTS): Add an "else true" to work with
+       Ultrix 4.5 /bin/sh when $(TESTS) is empty.
+
+2001-10-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Add nobase.test.
+       * tests/nobase.test: New file.  Based on a bug report
+       from Martin Frydl <martin@idoox.com>.
+
+2001-10-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (am_install_var): Don't strip nobase_ from $X, do
+       this with $nodir_name only.  Use $nodir_name where appropriate.
+
+2001-10-15  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_languages, handle_single_transform_list,
+       lang_c_rewrite): Use require_conf_file instead of
+       require_config_file to require depcomp or compile from Makefile.am.
+       (require_aux_file_with_line): New function, adapted from
+       require_conf_gile_with_line.
+       (require_conf_file_with_line, require_conf_file_with_conf_line):
+       Simplify using require_aux_file_with_line.
+       (require_config_file): Simplify using require_conf_file_with_conf_line.
+       (require_conf_file): New function.
+
+2001-10-15  Akim Demaille  <akim@epita.fr>
+
+       * m4/depend.m4 (AM_DEP_TRACK): Use AC_SUBST([AMDEPBACKSLASH])
+       normally, what is wrong is that automake outputs a variable
+       definition for it, hence...
+       * automake.in (scan_one_autoconf_file): don't.
+
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): New, extracted
+       from...
+       (AM_OUTPUT_DEPENDENCY_COMMANDS): here.  Adjust.
+       Use AC_CONFIG_COMMANDS.
+       (_AM_OUTPUT_DEPENDENCY_COMMANDS): Use AS_DIRNAME and AS_MKDIR_P.
+
+2001-10-15  Akim Demaille  <akim@epita.fr>
+
+       * m4/header.m4 (AM_CONFIG_HEADER): Don't use m4_patsubst.
+
+2001-10-15  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_conditions): Be deterministic and Perl
+       version independent: sort the result.
+       (&variable_output, &variable_pretty_output): Sort all the @conds,
+       not only when defaulted.
+       * tests/cond3.test: Adjust.
+
+2001-10-15  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Formatting changes.
+
+2001-10-15  Akim Demaille  <akim@epita.fr>
+
+       * aclocal.in: Use Automake::General and Automake::XFile.
+       Use find_configure_ac.
+       Output the Emacs tags for Autoconf mode selection.
+
+2001-10-10  Akim Demaille  <akim@epita.fr>
+
+       * lib/COPYING, COPYING, lib/config.guess, lib/config.sub: Update
+       from master copies.
+
+2001-10-09  Akim Demaille  <akim@epita.fr>
+
+       Do not use Autoconf internals.
+
+       * tests/dirname.test: Don't use AC_PLAIN_SCRIPT.
+       * m4/header.m4 (_AM_DIRNAME): Use regexp and patsubst, not
+       m4_regexp and m4_patsubst, since the latter are reserved for ERE
+       macro in GNU M4 1.5.
+
+2001-10-08  Akim Demaille  <akim@epita.fr>
+
+       * m4/cond.m4 (AM_CONDITIONAL): Don't use m4_match as Autoconf
+       changed its name.
+
+2001-10-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (scan_autoconf_files): Use find_configure_ac from
+       General.
+
+2001-10-02  Akim Demaille  <akim@epita.fr>
+
+       * lib/Automake/Struct.pm: Update from Autoconf.
+       * lib/Automake/General.pm, lib/Automake/XFile.pm: New, from CVS
+       Autoconf.
+       * automake.in: Use them.
+       (&uniq, $me): Remove, as they are provided by Automake::General.
+
+2001-10-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (maintainer-check): Don't check for 'cd' calls in m4.
+       * lib/am/tags.am (GTAGS): Use $(am__cd) instead of 'CDPATH=: && cd'.
+       * lib/am/dejagnu.am (check-DEJAGNU): Likewise.
+       * lib/am/distdir.am (distcheck): Likewise.
+       * lib/am/texinfos.am (install-info-am, dist-info): Rewrite without
+       using cd so we don't have to fiddle with CDPATH.
+       * lib/am/header-vars.am (am__cd): Define so as to support Zsh and
+       DOSish path separator.
+
+2001-10-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/python.am (install-%DIR%PYTHON,
+       uninstall-%DIR%PYTHON): Strip path of source file.
+       (clean-python): Comment out.
+
+2001-10-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_python): Use require_conf_file_with_conf_line
+       instead of require_file_with_conf_line, so that elisp-comp and
+       py-compile are installed in the aux-directory.
+       (handle_emacs_lisp): Likewise.  Define elisp_comp.
+       * lib/am/lisp.am (.el.elc): Use elisp_comp.
+
+2001-10-01  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/distdir.am (distcheck): Report the trailing files.
+       Run `dist-gzip', not `dist', as it may leave other distribution
+       flavors.
+
+2001-09-29  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/mkinstalldirs: Use "mkdir -p" if it works, as that fixes
+       bugs when making file names with unusual characters.  Quote chmod
+       arg "$dirmode", in case it contains white space.
+
+       Incorporate the following change from autoconf mkinstalldirs:
+
+       1999-04-10  Ben Elliston  <bje@cygnus.com>
+
+       Add `-m' flag to specify the mode of a newly created
+       directory.  Add command line usage and `-h', `--help' options.
+       Contributed by Jeff Garzik.
+
+2001-09-27  Akim Demaille  <akim@epita.fr>
+
+       * m4/cond.m4, m4/init.m4, m4/header.m4: Remove Autoconf 2.13 code.
+
+2001-09-27  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/distdir.am (dist): Rename as...
+       (dist-gzip): this.
+       (dist): Additional name for dist-all.
+       * automake.texi (Options, Dist): Adjust.
+
+2001-09-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * aclocal.in (obsolete_macros): Update AM_EXEEXT message.
+       * automake.in (obsolete_macros): Likewise.
+       (seen_objext): Remove (unused).
+       (scan_one_autoconf_file): Don't handle AC_OBJEXT.
+       * lib/am/header-vars.am (EXEEXT, OBJEXT,
+       PATH_SEPARATOR): New variables.
+       * tests/obsolete2.test: Use AM_FUNC_FNMATCH instead of AM_EXEEXT.
+
+2001-09-23  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * m4/auxdir.m4, m4/init.m4: Require autoconf 2.50 and rely on it to
+       neutralize CDPATH for us.
+       * m4/init.m4: Don't substitute EXEEXT or OBJEXT anymore.
+       * lib/am/texibuild.am: Use $(PATH_SEPARATOR), not ':' to build
+       TEXINPUTS.
+
+2001-09-22  Akim Demaille  <akim@epita.fr>
+
+       * configure.in, NEWS: Bump to 1.5a.
+       Require 2.52.
+
+2001-09-22   Paul Eggert  <eggert@twinsun.com>
+
+       * ChangeLog, ChangeLog.1996, ChangeLog.1998, ChangeLog.2000,
+       Makefile.am, NEWS, README, TODO, configure.in, lib/Makefile.am,
+       lib/acinstall, lib/am/Makefile.am, m4/Makefile.am, m4/as.m4,
+       m4/auxdir.m4, m4/ccstdc.m4, m4/cond.m4, m4/depend.m4,
+       m4/depout.m4, m4/dmalloc.m4, m4/error.m4, m4/gcj.m4, m4/header.m4,
+       m4/init.m4, m4/install-sh.m4, m4/lex.m4, m4/lispdir.m4,
+       m4/maintainer.m4, m4/make.m4, m4/minuso.m4, m4/missing.m4,
+       m4/multi.m4, m4/obstack.m4, m4/protos.m4, m4/ptrdiff.m4,
+       m4/python.m4, m4/regex.m4, m4/sanity.m4, m4/strip.m4,
+       m4/termios.m4, m4/winsz.m4: Add copyright notice.
+
+       * INSTALL, lib/INSTALL: Upgrade to latest autoconf version,
+       which has a copyright notice.
+
+       * m4/strtod.m4: Correct the dates on the copyright notice.
+
+2001-09-17  Akim Demaille  <akim@epita.fr>
+
+       * lib/missing (autom4te): New.
+       (aclocal, autoconf, automake, autoheader, help2man): Propagate
+       actual failures.
+
+2001-08-27  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (A Shared Library): Clarify installation
+       requirement.
+       (Install): Typo.  From Adrian Bunk.
+
+2001-08-27  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Macros): Typo fix.
+       From Christian Cornelssen
+
+2001-08-27  Tom Tromey  <tromey@redhat.com>
+
+       * tests/ansi3.test, tests/ansi5.test, tests/ccnoco.test,
+       tests/cond4.test, tests/cond16.test, tests/cond18.test,
+       tests/cond19.test, tests/depcomp2.test, tests/depend2.test,
+       tests/lex3.test, tests/pr87.test, tests/subobj3.test,
+       tests/substref.test: Clear CFLAGS.
+
+       * automake.texi (Yacc and Lex): Mention lex, not yacc.
+       From Alexey Mahotkin.
+
+2001-08-27  Tom Tromey  <tromey@redhat.com>
+
+       * tests/yacc7.test: Use test -f, not test -e.
+
+2001-08-27  Adrian Bunk  <bunk@fs.tum.de>
+
+       * automake.texi (etags): Typo fix.
+
+2001-08-27  Guido Draheim <guidod@gmx.de>
+
+       * automake.in : restrict ansi2knr option to be a filepath
+
+2001-08-23  Richard Boulton <richard@tartarus.org>
+
+       * tests/yacc7.test: Actually add this file: was accidentally omitted.
+
+2001-08-22  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Conditionals): Mention that conditionals must
+       always be invoked.  For PR automake/220.
+
+2001-08-22  Richard Boulton <richard@tartarus.org>
+           Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (lang_yacc_target_hook): Make header file depend on
+       .c file, not .y file.
+       * lib/am/yacc.am: Non-generic rule changed to depend on %OBJ% (the
+       .c file) rather than %SOURCE% (the .y file)  Removed `.y.h' rule.
+       * tests/yacc7.test: New file.
+       * tests/Makefile.am (TESTS): Added yacc7.test.
+
+2001-08-22  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * m4/missing.m4: Require AM_AUX_DIR_EXPAND and use $am_aux_dir.
+
+2001-08-18  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Dist): Mention dist-all.
+
+2001-08-18  Tom Tromey  <tromey@redhat.com>
+
+       * tests/cond3.test: Use portable sed expression.
+       From Richard Boulton.
+
+2001-08-13  Richard Boulton <richard@tartarus.org>
+
+       * automake.in (handle_source_transform): Call
+       define_objects_from_sources() instead of calling
+       variable_value_as_list(), handle_single_transform_list() and
+       define_pretty_variable() directly.
+       (handle_single_transform_list): Add $topparent parameter, used for
+       error messages.  Improved error message.
+       (define_objects_from_sources): New function.
+       (subobjname): New function.
+       (variable_conditions_recursive): New name for variable conditions.
+       (variable_value_as_list_recursive): New name for variable_value_as_list.
+       (variable_value_as_list_worker): Renamed to ...
+       (variable_value_as_list_recursive_worker): ... this.
+       (variable_conditions_sub): Renamed to ...
+       (variable_conditions_recursive_sub): ... this.
+       (variable_conditions): Rewritten: now doesn't recurse subvariables.
+       (variable_value_as_list): Rewritten: now doesn't recurse subvariables.
+       (substfroms): New global.
+       (substtos): New global.
+       (substnums): New global.
+       * tests/cond3.test: Update to work with new method of defining _OBJECTS.
+       * tests/cond4.test: Update to work with new method of defining _OBJECTS.
+       * tests/sourcesub2.test: New test.
+       * tests/Makefile.am (TEST): Added sourcesub2.test.
+
+2001-08-11  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in: Upped to 1.4s.
+
+2001-08-09  Richard Boulton <richard@tartarus.org>
+
+       * automake.in (handle_single_transform_list): Use new global,
+       `%linkers_used', to store the linkers used, rather than an internal
+       variable.  Enables correct linker to be calculated across a group
+       of calls to &handle_single_transform_list.  Return only list of
+       objects, since linker to be used is now externally determined.
+       (handle_source_transform): adapted for new calling conventions of
+       handle_single_transform_list.  Calls resolve_linker() on a set of
+       all the linkers used for any prefix, rather than for each prefix in
+       turn.
+       (linkers_used): New global.
+       * tests/link_dist.test: New test.
+       * tests/Makefile.am (TESTS): Added link_dist.test.
+
+2001-08-08  Raja R Harinath  <harinath@cs.umn.edu>
+
+       Dissociate testsuite 'make' invocations from outer 'make'.
+       * tests/defs: Unset the MFLAGS, MAKEFLAGS and MAKELEVEL
+       environment variables.
+       * tests/cond16.test: Use '$MAKE -s', and avoid GNU make
+       dependency.
+       * tests/substref.test: Likewise.
+
+2001-08-08  Richard Boulton <richard@tartarus.org>
+
+       * tests/cond18.test: New file.
+       * tests/cond19.test: New file.
+       * tests/cond20.test: New file.
+       * tests/cond4.test: Updated to check the generated _OBJECTS more
+       thoroughly.
+       * tests/Makefile.am (TESTS): Added cond18.test, cond19.test and
+       cond20.test
+
+2001-08-08  Richard Boulton <richard@tartarus.org>
+
+       * automake.in (file_contents_internal): if a rule is conditionally
+       defined, define the standard automake definition for it for those
+       conditions which are not conditionally defined.
+       (invert_conditions): New function: invert a list of conditionals.
+
+       * tests/cond14.test: New file.
+       * tests/cond15.test: New file.
+       * tests/Makefile.am (TESTS): Added cond14.test and cond15.test.
+
+2001-08-05  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (TESTS): Added dejagnu2.test.
+       * tests/dejagnu2.test: New file.
+       * lib/am/dejagnu.am (site.exp): Don't conditionalize.
+       * automake.in (handle_scripts): Removed dead code.
+       (handle_tests_dejagnu): Don't handle site.exp generation
+       specially.
+
+2001-08-04  Richard Boulton <richard@tartarus.org>
+
+       * tests/cond17.test: New file: test for being able to define an
+       object to be generated in different ways according to a
+       conditional.
+       * tests/Makefile.am (XFAIL_TESTS): Add cond17.test.
+       (TESTS): Added cond17.test.
+
+2001-08-02  Richard Boulton <richard@tartarus.org>
+
+       * automake.in (variable_conditions_sub): Handle variable
+       substitution refs when computing conditions based on subvariable
+       conditions.  Fixes substitution refs of system variables when sub
+       variable is conditional.
+       (SUBST_REF_PATTERN): New global.
+       * tests/cond16.test: New file: regression test for variable
+       substitution refs.
+       * test/Makefile.am (TESTS): Added cond16.test.
+
+2001-08-03  Tom Tromey  <tromey@redhat.com>
+
+       * tests/substref.test: Require GNU make; backed out previous
+       change.
+
+       * tests/substref.test: Handle entering/leaving directory
+       messages.
+
+2001-08-03  Richard Boulton <richard@tartarus.org>
+
+       * automake.in (value_to_list): Check for whether $from is defined,
+       rather than whether it is true, so that empty $froms are allowed in
+       substitution reference patterns.
+
+       * tests/substref.test: New file: test behavior of substitution
+       references when the $from side of the substitution is empty.
+       * tests/Makefile.am (TESTS): Added substref.test.
+
+2001-08-03  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/install-sh.m4: New file.
+       * m4/Makefile.am (m4data_DATA): Add install-sh.m4.
+       * m4/missing.m4 (AM_MISSING_INSTALL_SH): Move ...
+       * m4/install-sh.m4 (AM_PROG_INSTALL_SH): ... here.  Don't check
+       for install.sh any longer, always use install-sh, don't even
+       fall back to missing.  Use $am_aux_dir, making $install_sh absolute.
+       * m4/strip.m4 (AM_PROG_INSTALL_STRIP): Simplify, since $install_sh
+       is absolute.
+       * m4/init.m4: Adjust call to AM_PROG_INSTALL_SH.
+
+2001-08-02  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * automake.texi (EXEEXT): Clarify.
+
+2001-08-01  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/missing.m4 (AM_MISSING_HAS_RUN): Typo.
+
+       * m4/auxdir.m4: More comments.
+
+2001-07-31  Richard Boulton <richard@tartarus.org>
+           Raja R Harinath <harinath@cs.umn.edu>
+
+       * automake.in (variable_conditions_sub): Remove @parent_conds
+       argument.  This was old logic - duplicate or impossible
+       conditionals are removed later by &variable_conditions_reduce().
+       Fixes tests/cond13.test.
+       (conditionals_true_when): Removed.
+       * tests/Makefile.am (XFAIL_TESTS): Removed cond13.test.
+
+2001-07-31  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (TESTS): Added cond13.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/cond13.test: New file.
+
+       * configure.in: Upped to version 1.4k.
+
+       * configure.in: Released 1.4j.
+
+       * lib/config.guess: Updated from master sources.
+       * lib/config.sub: Likewise.
+
+2001-07-30  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (A Program): Typo.  Added subsections and more
+       text about conditional compilation.
+       (A Shared Library): Moved earlier.
+       (Program variables): Updated LINK text.  Added AM_CFLAGS.
+       (C++ Support): Added AM_CXXFLAGS.
+       (Fortran 77 Support): Added AM_FFLAGS and AM_RFLAGS.
+       (EXEEXT): New node.
+
+       * tests/Makefile.am (TESTS): Added aclibobj.test.
+       * tests/aclibobj.test: New file.
+       * automake.in (handle_lib_objects_cond): Avoid undefined variable
+       error.
+       (scan_one_autoconf_file): Handle AC_LIBSOURCE and AC_LIBSOURCES.
+
+       * automake.texi (Dist): Mention other distribution types.
+       (Install): Updates.
+
+2001-07-29  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Program and Library Variables): Texinfo fix.
+       From Alexey Mahotkin.
+
+2001-07-28  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Strictness): Mention Cygnus mode.
+       (Cygnus): Updated.
+       (Uniform): Likewise.
+       (Canonicalization): Likewise.
+       (Install): Add `nobase_' to example; typo fix.
+       (Clean): Typo.
+       (Dist): Expand on putting a directory into EXTRA_DIST.  Insert
+       section markers.
+       (Options): Texinfo fixes; some text updates.
+       (Tags): Update.
+
+2001-07-27  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Invoking Automake): Document --Werror and
+       --Wno-error.
+
+2001-07-26  Tom Tromey  <tromey@redhat.com>
+
+       * tests/nolink.test: Added no-exeext.
+
+       * automake.in (check_variable_defined_unconditionally): Don't call
+       macro_dump.
+
+       * automake.texi (Optional): Don't mention ALL_LINGUAS.
+       (gettext): Likewise.
+       * automake.in (seen_linguas, all_linguas, all_linguas_line):
+       Removed.
+       (handle_gettext): Don't do any checking of the languages.
+       (scan_one_autoconf_file): Don't look for ALL_LINGUAS.
+
+       * automake.in (am_print_error): New function.
+       (am_error): Use it.
+       (am_file_error): Likewise.
+       (am_line_error): Likewise.
+       (am_conf_error): Likewise.
+       (am_conf_line_error): Likewise.
+
+       * automake.texi (Options): Document no-exeext.
+       * automake.in (handle_options): Recognize no-exeext.
+       (rule_define): Handle no-exeext.
+       * tests/Makefile.am (TESTS): Added new file.
+       * tests/exeext2.test: New file.
+
+       * automake.in (make_input_list): Removed.
+       (scan_autoconf_config_files): Don't add to make_input_list.
+       (scan_one_autoconf_file): Don't use make_input_list.
+       (scan_autoconf_files): Use make_list, not make_input_list.
+       (scan_autoconf_files): Likewise.
+
+       * automake.in (seen_exeext): Removed.
+       (generate_makefile): Don't define EXEEXT or OBJEXT.
+       (scan_one_autoconf_file): Don't check for AC_EXEEXT.
+       (am_install_var): Don't check $seen_exeext.
+       (handle_programs): Likewise.
+       (rule_define): Allow x to override x$(EXEEXT), for now.
+       (file_contents_internal): Only define rule if rule_define allows
+       us to.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Define EXEEXT and OBJEXT.
+
+2001-07-25  Tom Tromey  <tromey@redhat.com>
+
+       From Nicolas Joly:
+       * tests/pr9.test: Require GNU make.
+       * tests/dirname.test: Don't use `-u'.
+
+2001-07-22  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (TESTS): Added auxdir2.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/auxdir2.test: New file.
+
+       * tests/Makefile.am (XFAIL_TESTS): Removed substtarg.test.
+       * automake.in (TARGET_PATTERN): Add `@' as allowable character.
+
+       * tests/Makefile.am (XFAIL_TESTS): Removed exeext.test.
+       * automake.in (am_install_var): Add $(EXEEXT) even if program name
+       holds `.'.  Don't add $(EXEEXT) if program name already has it.
+       (handle_programs): Don't add $(EXEEXT) if user already did.
+       (make_paragraphs): Don't compute EXEEXT.
+
+       * tests/Makefile.am (TESTS): Added exeext.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/exeext.test: New file.
+
+2001-07-22  Tom Tromey  <tromey@redhat.com>
+
+       * lib/am/progs.am (install-%DIR%PROGRAMS): Test for `prog', not
+       `prog.exe' on Cygwin with libtool.  From Robert Collins.
+
+2001-07-21  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * tests/dirname.test: Explicitly use $SHELL to run the
+       script; this avoids failures on DJGPP.
+       * tests/install2.test: Skip if 'chmod 000' doesn't make
+       a file unreadable.
+
+2001-07-21  Tom Tromey  <tromey@redhat.com>
+
+       * tests/libtool2.test: Check for libtoolize.
+
+       * tests/Makefile.am (TESTS): Added substtarg.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/substtarg.test: New file.
+
+       * automake.in (handle_dist): Handle case where aux dir doesn't
+       have a Makefile.  Fixes depdist.test.
+       * tests/Makefile.am (XFAIL_TESTS): Removed depdist.test.
+       * tests/depdist.test: Look for config/depcomp.
+
+       * tests/Makefile.am (TESTS): Added depdist.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/depdist.test: New file.  From Eric Magnien.
+
+       * tests/ccnoco.test: Removed `configure.2' test; in autoconf 2.50
+       AC_PROG_CC_C_O does require AC_PROG_CC.
+
+       From Erik Lindahl:
+       * lib/depcomp (tru64): Some Tru64 compilers use `foo.d' and not
+       `foo.o.d'.
+       * m4/depend.m4 (_AM_DEPENDENCIES): Check to make sure compilation
+       output is suitable for make.
+
+       * automake.texi (Macros): Document AM_PROG_AS.
+       (Assembly Support): New node.
+       * m4/Makefile.am (m4data_DATA): Added as.m4.
+       * m4/as.m4: New file.
+
+       * automake.texi (Tags): Added uref to global tags.
+
+2001-07-21  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * automake.in (handle_single_transform_list): Use $(DEPDIR)
+       instead of hardcoding '.deps'.
+       * m4/depend.m4 (AM_SET_DEPDIR): Sync with libtool's libdir check.
+
+2001-07-20  Derek Price  <dprice@collab.net>
+
+       * m4/header.m4 (AM_CONFIG_HEADER): Create stamp-h files in the correct
+       locations.
+       * tests/dirname.test: New test.
+       * tests/stamph2.test: New test.
+       * tests/Makefile.am: Add new tests.
+       * tests/Makefile.in: Regenerated.
+
+2001-07-19  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Tags): Document GTAGS_ARGS.
+       * lib/am/tags.am (GTAGS): Added GTAGS_ARGS.  From Shigio Yamaguchi.
+
+2001-07-19  Tom Tromey  <tromey@redhat.com>
+           Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for ccnoco.test, subobj8.test:
+       * m4/Makefile.am (m4data_DATA): Added auxdir.m4.
+       * tests/Makefile.am (XFAIL_TESTS): Removed ccnoco.test,
+       subobj8.test.
+       * m4/minuso.m4 (AM_PROG_CC_C_O): Use absolute path to compile.
+       Use AM_AUX_DIR_EXPAND.
+       * lib/compile: Handle case where `-o' argument is the name of an
+       executable, not an object file.
+       * m4/auxdir.m4: New file, from...
+       * m4/missing.m4: ... here.  Moved AM_AUX_DIR_EXPAND.
+       * automake.in (handle_single_transform_list, lang_c_rewrite):
+       Require compile using `require_config_file'.
+
+2001-07-19  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Program and Library Variables): Added X example
+       for _LDADD.
+
+2001-07-19  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Distributing): Updated to reflect new license.
+
+2001-07-18  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (require_build_directory): New function, extracted
+       from ...
+       (handle_single_transform_list): ... here.
+       (require_build_directory_maybe): New function.
+       (handle_prograns, handle_libraries, handle_ltlibraries): Call
+       require_build_directory_maybe() to ensure the subdirectory
+       in which a target may lie will exist when the target is created.
+       (handle_libraries, handle_ltlibraries): Use basename before
+       checking library name.
+       * lib/am/library.am (%LIBRARY%): Depend on %DIRSTAMP%.
+       * lib/am/ltlibrary.am (%LTLIBRARY%): Likewise.
+       * lib/am/program.am (%PROGRAM%): Likewise.
+
+2001-07-18  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * m4/missing.m4: Reword comment.
+
+2001-07-18  Pavel Roskin  <proski@gnu.org>
+
+       * automake.texi: Rename AM_DEPENDENCIES to _AM_DEPENDENCIES.
+       * tests/gcj.test: Likewise.
+       * tests/gcj2.test: Likewise.
+       * tests/gcj3.test: Likewise.
+
+2001-07-18  Tom Tromey  <tromey@redhat.com>
+
+       * lib/compile: Change how lockdir is computed.  If linking or
+       compiling without `-o', just run the compiler.
+
+       * tests/Makefile.am (TESTS): Added ccnoco.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/ccnoco.test: New file.
+
+2001-07-17  Tom Tromey  <tromey@redhat.com>
+
+       * lib/ylwrap: Added special exception.
+       * lib/py-compile: Added license.
+       * lib/mdate-sh: Added special exception.
+       * lib/elisp-comp: Added special exception.
+       * lib/compile: Added special exception.
+       * lib/depcomp: Added special exception.
+
+       Report from Motoyuki Kasahara:
+       * tests/make.test: Use am__include.
+       * tests/exsource.test: Use am__include.
+       * m4/make.m4 (AM_MAKE_INCLUDE): Use am__include and am__quote.
+       * automake.in (handle_languages): Use am__include and am__quote.
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Renamed to _AM_DEPENDENCIES.
+       * m4/init.m4: Updated callers.
+
+2001-06-10  Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
+
+       * aclocal.in (parse_arguments, write_aclocal): Update Copyrights.
+       * aclocal.in (scan_configure, add_file): Handle the full macro
+       name even if it contains numbers, such as I18N.
+
+2001-07-16  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Dependencies): Link to dependency tracking page.
+       (Data): Mention dist_.
+       (Clean): Mention clean heuristics.
+       (Install): Mention nobase_.
+
+       * automake.texi (Program and Library Variables): Document _LINK.
+
+2001-07-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_libraries): Allow libraries to lie in
+       a subdirectory by constraining only the basename to start
+       with 'lib', not the whole path.
+
+2001-07-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/subobj8.test: New file.
+       * tests/Makefile.am (XFAIL_TESTS, TESTS): Add subobj8.test.
+
+2001-07-16  Tom Tromey  <tromey@redhat.com>
+
+       Fix for PR automake/212:
+       * lib/am/lisp.am (install-%DIR%LISP): Added missing `\'.
+       (uninstall-%DIR%LISP): Likewise.
+
+2001-07-15  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (usage): Rewrote code to handle columnization.
+       From Alexey Mahotkin and Maxim Sinev.
+
+       Report from Ralf Corsepius:
+       * automake.in (TARGET_PATTERN): Add `+' as valid character.
+       (SUFFIX_RULE_PATTERN): Likewise.
+       * tests/Makefile.am (TESTS): Added cxx.test.
+       * tests/cxx.test: New file.
+
+       * lib/am/tags.am (distclean-tags): Remove files for gtags.
+       From Shigio Yamaguchi.
+
+2001-07-14  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * lib/am/distdir.am (distcheck): Emit diagnostic when files
+       remain after "make uninstall".
+
+2001-07-14  Tom Tromey  <tromey@redhat.com>
+
+       * lib/am/tags.am (.PHONY): Depend on GTAGS.  From Shigio Yamaguchi.
+
+       * lib/missing (makeinfo): Redirect stdout and stderr outside
+       subshell.  From Alexandre Oliva.
+
+2001-07-14  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($obsolete_rx): No need for `\b(foo\b|\bbar)\b',
+       `\b(foo|bar)\b' is what we want.
+       * aclocal.in: Likewise.
+
+2001-07-14  Akim Demaille  <akim@epita.fr>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Don't define `depcpp' which is
+       not used.
+       Do not require the corresponding AC_PROG_CC as AC_PROG_CC is
+       actually modified to require AM_DEPENDENCIES.
+       Rename `confdir' as `conftest.dir' so that the configure trap
+       remove it.
+
+2001-07-04  Tom Tromey  <tromey@redhat.com>
+
+       Fix for nolink.test:
+       * tests/Makefile.am (XFAIL_TESTS): Removed nolink.test.
+       * lib/am/program.am (%PROGRAM%%EXEEXT%): Use %EXEEXT%.
+       * automake.in (am_install_var): Only rewrite PROGRAMS if
+       $seen_exeext.
+       (make_paragraphs): Always define %EXEEXT%.
+
+2001-07-04  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/nolink.test: New file.
+       * tests/Makefile.am (TEST, XFAIL_TESTS): Add nolink.test.
+
+2001-07-04  OKUJI Yoshinori  <okuji@gnu.org>
+
+       * automake.in (scan_texinfo_file): Add the second argument to
+       `@syncodeindex' into @CLEAN_SUFFIXES, because the combined index
+       itself may not be used directly.
+
+2001-07-04  Tom Tromey  <tromey@redhat.com>
+
+       * missing: Updated.
+       * lib/missing (makeinfo): Use subshell, not explicit sh
+       invocation.
+
+       * automake.texi (Headers): Mention that we prefer uninstalled
+       headers in _SOURCES.
+       (ANSI): Mention cross-compilation limitation.
+
+2001-07-03  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in: Upped to 1.4i.
+
+       * configure.in: Released 1.4h.
+
+       * lib/config.guess, lib/config.sub: Updated.
+
+2001-07-02  Tom Tromey  <tromey@redhat.com>
+
+       Fix for libtool2.test:
+       * tests/libtool2.test: Use `rm -f' to placate maintainer-check.
+       * lib/am/libtool.am (distclean-libtool): Conditional on TOPDIR.
+       * automake.in (generate_makefile): Call handle_libtool
+       unconditionally.
+       * tests/Makefile.am (XFAIL_TESTS): Removed libtool2.test.
+
+       * tests/libtool2.test: Look for `.lo' files to be removed.
+
+       * tests/Makefile.am (XFAIL_TESTS): Added libtool2.test.
+
+       * tests/Makefile.am (TESTS): Removed dup.test.
+       * tests/dup.test: Removed.
+       * aclocal.in (scan_file): Don't give error for duplicate macro.
+
+2001-07-01  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Program and Library Variables): Document
+       subdir-objects.  Document fact that per-object flags override AM_
+       flags.
+       (Options): Likewise.
+       (Yacc and Lex): Document YFLAGS, AM_YFLAGS, LFLAGS, AM_LFLAGS.
+       (Multilibs): New node.
+       (Macros): Documented missing macros.
+       (Auxiliary Programs): New node.
+
+       * lib/missing (makeinfo): If makeinfo exists, and we're in --run
+       mode, then simply fail.
+
+2001-07-01  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * lib/ylwrap: Improve support for DOS paths (and paths
+       containing backslashes in general).
+
+2001-07-01  Tom Tromey  <tromey@redhat.com>
+
+       * lib/missing: Added special exception to license.
+
+       * missing: Updated.
+       * lib/missing: Updated.  Added comment explaining configure.ac
+       oddity.
+
+       * lib/depcomp: Reorder arguments to gcc3.
+       From Per Oyvind Hvidsten.
+
+       * tests/Makefile.am (TESTS): Added libtool2.test.
+       * tests/libtool2.test: New file.
+
+       * automake.texi (Program and Library Variables): Added example for
+       _AR.
+
+2001-06-29  Tom Tromey  <tromey@redhat.com>
+
+       * tests/cond11.test: Use `=', not `=='.
+       * tests/cond12.test: Look for automake in build directory, not
+       source directory.
+
+2001-06-29  Richard Boulton  <richard@tartarus.org>
+
+       * automake.in (conditionals_true_when): Pass first parameters by
+       reference, avoiding bug which put all parameters in @CONDS instead
+       of @WHENS.  Report by Kalle Olavi Niemitalo.
+       Take a single WHEN instead of an array of WHENS.
+       Remove FIXME; can't now have an empty @WHENS.
+       (conditional_is_redundant): New sub.
+       (variable_conditions_reduce): Check whether each condition is
+       implied by any of the other conditions (other those already
+       discarded), rather than checking only against those already
+       considered (and kept).  Also, fix sense of check: was keeping
+       tautologous terms instead of discarding them.  Use
+       conditional_is_redundant instead of conditionals_true_when.
+       * tests/Makefile.am (TESTS): Added cond11.test and cond12.test.
+       * tests/cond11.test: New file.
+       * tests/cond12.test: New file.
+
+2001-06-29  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * automake.in (saw_sources_p): Work even if there are more
+       than one header files, and more than of one type of header.
+       * tests/Makefile.am (TESTS): Added new file.
+       * tests/depend4.test: New file.
+
+2001-06-28  Tom Tromey  <tromey@redhat.com>
+
+       * lib/am/libs.am (RANLIB): Don't define.
+
+2001-06-28  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (am_install_var): Assign 1 to $first on
+       first interation.
+
+2001-06-23  Tom Tromey  <tromey@redhat.com>
+
+       Fix for yacc5.test:
+       * lib/ylwrap: Changed usage.
+       * lib/am/yacc.am: Rewrote to use new substitutions.
+       * lib/am/lex.am: Likewise.
+       * automake.in (handle_languages): Skip files whose language
+       doesn't have a compiler.  Handle `define_flag' attribute.
+       Changed '$' to "\$" to aid Emacs fontification.
+       (struct): Added `rule_file'.  Removed `derived_autodep'.  Added
+       `_target_hook' and `define_flag'.
+       (yacc, yaccxx, lex, lexxx): Set `rule_file', `flags', `compile',
+       and `compiler' attributes.  Removed `linker', `derived_autodep',
+       and `ansi' attributes.  Added `define_flag'.
+       (yacc, yaccxx): Added `_target_hook'.
+       (saw_extension): Count number of times extension seen.
+       (count_files_for_language): New sub.
+       (saw_sources_p): Use it.
+       (handle_single_transform_list): Allow language rewrite function
+       to return a new source extension.  Call target_hook.
+       (yacc_sources, lex_sources): Removed.
+       (initialize_per_input): Don't initialize yacc_sources or
+       lex_sources.
+       (lang_yacc_rewrite): Rewrote.
+       (lang_yaccxx_rewrite): Likewise.
+       (lang_lex_rewrite): Likewise.
+       (lang_lexxx_rewrite): Likewise.
+       (output_yacc_build_rule): Removed.
+       (output_lex_build_rule): Removed.
+       (lang_yacc_finish): Removed build rule generation.
+       (lang_lex_finish): Likewise.
+       (DASH_D_PATTERN): New global.
+       (lang_yacc_target_hook): New function.
+       (_target_hook): New function.
+       (register_language): Default `define_flag'.
+       * tests/yacc5.test: Updated test.
+       * tests/yacc4.test: Exit with status 77 if bison doesn't work.
+       * tests/yacc3.test: Remove bogus `make' invocation.  Added test
+       for all YFLAGS variables.
+
+2001-06-20  Tom Tromey  <tromey@redhat.com>
+
+       * tests/yacc5.test: Check for per-executable YFLAGS.
+
+2001-06-19  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (TESTS): Added yacc5.test.
+       * tests/yacc5.test: New file.
+
+2001-06-17  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (require_file_internal): Check for already-required
+       file after searching for it, and only if it is not found.  Don't
+       use `readlink' when checking for dangling symlink.  Work if
+       --force-missing specified.
+       * tests/acoutput2.test: Also test --force-missing.
+
+       Fix for libtool.test:
+       * automake.in (generate_makefile): Call handle_libtool.
+       (handle_libtool): New sub.
+       (handle_compile): Don't read `libtool' file.
+
+       * tests/acoutput2.test: New file.
+       * tests/Makefile.am (TESTS): Added acoutput2.test.
+
+2001-06-15  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (TESTS): Added libtool.test.
+       * tests/libtool.test: New file.
+
+2001-06-14  Tom Tromey  <tromey@redhat.com>
+
+       Fix some lisp bugs reported by Bruno Haible:
+       * lib/am/lisp.am (uninstall-%DIR%LISP): Added DESTDIR to the
+       echo.
+       (install-%DIR%LISP): Handle case where lispdir is not defined.
+       (uninstall-%DIR%LISP): Likewise.
+       (.el.elc): Added `else' clause.
+
+       Fix for bug reported by Steve M. Robbins:
+       * automake.in (handle_single_transform_list): When building a file
+       from a subdirectory, continue to use `AM_' prefix.
+       * tests/Makefile.am (TESTS): Added subobj7.test.
+       * tests/subobj7.test: New file.
+
+       * lib/am/configure.am ($(top_builddir)/config.status): Added
+       $(top_builddir) prefix to work around problems with some vendor
+       makes.  From Nicolas Joly.
+
+       * automake.in (yacc_lex_finish_helper): Find ylwrap in
+       top_srcdir.  From Tim Van Holder.
+       * tests/Makefile.am (TESTS): Added yacc6.test.
+       * tests/yacc6.test: New file.
+
+2001-06-14  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * tests/defs, tests/installsh.test: Properly support
+       DOS-style paths.
+
+2001-06-14  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (TESTS): Added mdate4.test.
+       * tests/mdate4.test: New file.
+
+       * aclocal.in (scan_m4_files): Removed unused variable.
+
+2001-06-14  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * aclocal.in (scan_m4_files): Tweak the building of &search so
+       that multiple macro names can be found on the same line.  Ensure
+       we match whole macro name, not only substrings.
+
+2001-06-12  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (ANSI): Minor clarification.
+       (Other GNU Tools): Don't mention Guile.
+       (Guile): Removed.
+       (Java Support): Mention file extensions.
+       (Man pages): Mention dist_.  Don't mention info pages.
+
+2001-06-11  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Program variables): Document AM_CPPFLAGS.
+       Deprecate INCLUDES.
+       (Java Support): Document AM_GCJFLAGS.
+       (Support for Other Languages): Removed `fixme'; added link to
+       suffix rule handling.
+
+       * automake.texi (Program and Library Variables): Document _LIBADD,
+       _LDADD, _LDFLAGS, _AR, and _DEPENDENCIES.
+
+2001-06-11  Kevin Dalley  <kevind@rahul.net>
+
+       * missing: Support configure.ac.
+
+2001-06-08  Tom Tromey  <tromey@redhat.com>
+
+       * tests/version4.test: New file.
+       * automake.in (version_check): New sub.
+       (handle_options): Use it.
+       * tests/Makefile.am (AUTOMAKE_OPTIONS): Removed.
+       (TESTS): Added version4.test.
+       * m4/Makefile.am (AUTOMAKE_OPTIONS): Removed.
+       * Makefile.am (AUTOMAKE_OPTIONS): Remove `gnits'.
+
+2001-06-04  Kevin Dalley  <kevind@rahul.net>
+
+       * lib/am/dejagnu.am (site.exp): Fix typo.
+
+2001-06-02  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (variable_conditions_sub): Move parent-only code
+       from here...
+       (variable_conditions): ... to here.
+       (variable_conditions_sub): Include this variable's conditions in
+       the resulting condition list.
+       * tests/Makefile.am (XFAIL_TESTS): Removed ltdeps.test.
+
+2001-06-01  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (XFAIL_TESTS): Added ltdeps.test.
+       (TESTS): Likewise.
+       * tests/ltdeps.test: New file.  Report from Lars J. Aas.
+
+2001-05-31  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Alternative): New node.
+       (Macros): Use new name for gcc.
+       (Java Support): Likewise.
+       (Dependencies): Rewrote.
+       (Invoking Automake): (Re-)document -i, --ignore-deps, and
+       --include-deps.
+
+       * automake.texi (Top level): Removed erroneous spaces.  Documented
+       MAKE and MAKEFLAGS.
+
+2001-05-29  Tom Tromey  <tromey@redhat.com>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Allow any AM_*FLAGS variable.
+
+       * automake.texi (Include): Rewrote.
+       (Suffixes): Remove Java example.
+       (Java): Added more explanation.  Document variables.
+       (Uniform): Mention JAVA as a primary.
+       (Python): Updated for new Python support.
+       (Sources): Added a weak example.
+
+       * lib/am/java.am (class%DIR%.stamp): Use AM_JAVACFLAGS.
+
+       * automake.texi (A Program): Mention `check' prefix.
+       (Program and Library Variables): New node.
+       (Texinfo): Document UPDATED-MONTH, MAKEINFOFLAGS, and
+       AM_MAKEINFOFLAGS.
+       (etags): Mention per-program flags.
+       (Tests): Document AM_RUNTESTFLAGS; added sectioning; more
+       updates.
+
+       * lib/am/texinfos.am (.PHONY): Always list uninstall-info-am and
+       install-info-am.
+
+2001-05-28  Tom Tromey  <tromey@redhat.com>
+
+       * m4/Makefile.am (MAINT_CHARSET): Removed.
+       * Makefile.am (MAINT_CHARSET): Removed.
+       * automake.in (maint_charset, dist_charset): Removed.
+       (local_maint_charset): Removed.
+       (initialize_per_input): Don't use maint_charset.
+       (handle_dist): Don't compute maint_charset or check DIST_CHARSET.
+
+       * lib/am/texibuild.am (.%SUFFIX%.info): Use MAKEINFOFLAGS and
+       AM_MAKEINFOFLAGS.
+       (.%SUFFIX%.dvi): Likewise.
+       (.%SUFFIX%): Likewise.
+
+2001-05-27  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (handle_multilib): Only add multilib support code at
+       top level.
+       * lib/am/multilib.am: Handle invocation of *-multi targets
+       differently for SUBDIRS and non-SUBDIRS Makefiles.
+       * m4/multi.m4 (AM_ENABLE_MULTILIB): Removed erroneous comment.
+       Only add multilib code when the Makefile in question is actually
+       rebuilt.
+
+       * lib/am/dejagnu.am (check-DEJAGNU): Added AM_RUNTESTFLAGS.
+
+2001-05-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_single_transform_list): Skip unknown
+       extensions.
+
+2001-05-25  Tom Tromey  <tromey@redhat.com>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Ignore AM_RUNTESTFLAGS.
+
+2001-05-24  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (handle_texinfo_helper): Find mdate-sh in current
+       directory in some situations.
+
+       * automake.in (generate_makefile): Better explanation for ansi2knr
+       fix.
+
+2001-05-23  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_languages): Skip unknown extensions.
+       (derive_suffix): Check whether $extension_map{$source_ext}
+       is undefined, not empty.
+
+2001-05-23  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (read_am_file): Ignore trailing backslash on
+       comment lines.
+
+2001-05-22  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (ASSIGNMENT_PATTERN): Forbid : and + in variable names.
+
+2001-05-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.texi (Macros): Explain the ``AC_PROG_LEX invoked
+       multiple times'' warning.
+
+2001-05-20  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in: Updated to 1.4g.
+
+       * configure.in: Updated to 1.4f.
+
+       * Makefile.am (EXTRA_DIST): Added ChangeLog.2000.
+
+       * lib/ansi2knr.c: New version.
+
+       * Makefile.am (FETCHFILES): Added ansi2knr.c.
+       (fetch): Likewise.
+
+2001-05-19  Tom Tromey  <tromey@redhat.com>
+
+       * config.guess, config.sub: New versions from FSF.
+
+       * Makefile.am (fetch): Compare against files in srcdir.
+
+       For for ansi2knr report from Harlan Stenn:
+       * automake.in (generate_makefile): Run handle_compile before
+       handle_languages.
+
+2001-05-18  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in: Reverted erroneous checkin.
+
+2001-05-18  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/texinfos.am (install-info-am, uninstall-info-am): Be robust
+       to missing `install-info'.
+
+2001-05-17  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (lang_c_finish): Use `rm -f'.
+
+       * automake.in (lang_c_finish): Remove _.c file if ansi2knr fails.
+       * tests/Makefile.am (TESTS): Added new file.
+       * tests/ansi5.test: New file.
+
+2001-05-17  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/install.am (install-strip): Set INSTALL_PROGRAM_ENV if
+       STRIP is not empty.
+       * m4/strip.m4 (AM_PROG_INSTALL_STRIP): Set INSTALL_STRIP_PROGRAM
+       to install-sh unconditionally.  Don't set INSTALL_STRIP_PROGRAM_ENV.
+       * automake.texi (Requirements): Document the use of the STRIP
+       variable in cross-compilation environments.
+
+2001-05-17  Tom Tromey  <tromey@redhat.com>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): If depcomp doesn't exist, revert
+       to no dependency tracking.
+       * tests/Makefile.am (TESTS): Added depcomp2.test.
+       * tests/depcomp2.test: New file.  From Pavel Roskin.
+
+       * lib/depcomp (aix): Bug fix and simplification from Larry Jones.
+
+       * lib/depcomp (tru64): New dependency tracking mode.
+
+       Fix for PR automake/159:
+       * lib/depcomp (aix): Rewrote.
+       (sgi): Likewise.
+
+       Fix for PR automake/174:
+       * tests/Makefile.am (XFAIL_TESTS): Removed comment3.test.
+       * automake.in (read_am_file): Warn if `#' is at start of rule.
+
+2001-05-16  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/174:
+       * tests/Makefile.am (TESTS): Added comment3.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/comment3.test: New file.
+
+       Fix for PR automake/175:
+       * tests/Makefile.am (XFAIL_TESTS): Removed make.test.
+       * m4/make.m4 (AM_MAKE_INCLUDE): Omit `Entering directory' and
+       `Leaving directory' messages.
+
+       For PR automake/175:
+       * tests/Makefile.am (XFAIL_TESTS): Added make.test.
+       * tests/make.test: Run test with `make -w'.
+
+       * tests/Makefile.am (TESTS): Removed maintclean.test.
+       * lib/am/clean.am (maintainer-clean-generic): Don't remove
+       Makefile.in.
+       * lib/am/configure.am (maintainer-clean-am): Removed.
+       (maintainer-clean-conf): Removed.
+       * tests/maintclean.test: Removed.
+
+2001-05-15  Tom Tromey  <tromey@redhat.com>
+
+       Fix for PR automake/177:
+       * Makefile.am (maintainer-clean): Set perllibdir before invoking
+       automake or aclocal.
+
+       Fix for maintclean.test:
+       * tests/Makefile.am (XFAIL_TESTS): Removed maintclean.test.
+       * lib/am/clean.am (distclean-generic): Don't remove config.cache
+       or config.log.
+       (distclean, maintainer-clean): Moved to...
+       * lib/am/configure.am: ... here.
+       (distclean): Remove config.cache and config.log.
+       (maintainer-clean): Removed.
+       (maintainer-clean-conf): New target.
+       (maintainer-clean-am): New target.
+
+       * tests/Makefile.am (TESTS): Added maintclean.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/maintclean.test: New file.
+
+       Fixes PR automake/175:
+       * tests/target-cflags.test: Use $needs_gnu_make.
+       * tests/exsource.test: Use $needs_gnu_make.
+       * tests/make.test: Require GNU make.
+       * tests/defs (needs_gnu_make): Compute.
+
+2001-05-14  Tom Tromey  <tromey@redhat.com>
+
+       * lib/ylwrap: Fixed quoting on regular expression.  Fixes
+       yacc4.test.
+
+       Fix for texinfo10.test.
+       * tests/Makefile.am (XFAIL_TESTS): Remove texinfo10.test.
+       * lib/am/texinfos.am: Use LOCAL-TEXIS liberally.
+       * automake.in (handle_texinfo_helper): New sub.
+       (handle_texinfo): Rewrote.  Now defines LOCAL-TEXIS.
+       * tests/texinfo10.test: Added more cases.
+
+       Fix for yaccvpath.test:
+       * tests/Makefile.am (XFAIL_TESTS): Removed yaccvpath.test.
+       * lib/am/distdir.am (distdir): Always look for file in build
+       directory first.
+       * lib/ylwrap: Quote the `#line' regular expression.
+       * lib/am/yacc.am (%YACC_SUFFIX%%C_SUFFIX%): Reverted earlier
+       change; don't run sed on the generated file.
+       * tests/yaccvpath.test: Create new parser in srcdir.  Added test
+       to make sure parser will be rebuilt at dist time.
+
+2001-05-13  Pavel Roskin  <proski@gnu.org>
+
+       * automake.in ($IGNORE_PATTERN): Allow spaces before comments
+       beginning with `##'.
+       * automake.texi (General Operation): Document it.
+
+2001-05-13  Tom Tromey  <tromey@redhat.com>
+
+       Reported by Rainer Orth:
+       * lib/am/distdir.am (?DISTDIR?distdir): Define conditional on
+       TOPDIR_P.
+       * tests/Makefile.am (TESTS): Added distname.test.
+       * tests/distname.test: New file.
+
+       * Makefile.am (dist_pkgdata_DATA): Removed.
+
+       * tests/defs: Find files to copy in lib/.
+       * automake.in (perllibdir): Set to Automake directory.
+       * ansi2knr.c, ansi2knr.1: Removed.
+       * Makefile.am (dist_am_DATA): Removed.
+       (amdir): Removed.
+       (maintainer-check): Look for lib/am/*.am.  Expect 28 lines of
+       diffs.
+       (scriptdir): Removed.
+       (dist_script_DATA): Likewise.
+       (install-data-hook): Likewise.
+       (installcheck-local): Likewise.
+       (TAGS_FILES): Removed amfiles.
+       (dist_pkgdata_DATA): Removed ansi2knr.c and ansi2knr.1.
+       * tests/installsh.test (AUTOMAKE): Use --libdir, not --amdir, and
+       point it to the right directory.
+       * ansi2knr.am, check.am, clean-hdr.am, clean.am, comp-vars.am,
+       compile.am, configure.am, data.am, dejagnu.am, depend.am,
+       depend2.am, distdir.am, footer.am, header-vars.am, header.am,
+       install.am, java.am, lang-compile.am, lex.am, library.am, libs.am,
+       libtool.am, lisp.am, ltlib.am, ltlibrary.am, mans-vars.am,
+       mans.am, multilib.am, program.am, progs.am, python.am,
+       remake-hdr.am, scripts.am, subdirs.am, tags.am, texi-vers.am,
+       texibuild.am, texinfos.am, yacc.am: Moved to lib/am/.
+       * configure.in (AC_OUTPUT): Added lib/am/Makefile.
+       (AUTOMAKE): Use --libdir, not --amdir.
+       Ues AC_CONFIG_AUX_DIR.
+       * lib/Makefile.am (SUBDIRS): Added `am'.
+       (scriptdir): New macro.
+       (dist_script_DATA): Likewise.
+       (dist_pkgdata_DATA): Likewise.
+       (install-data-hook): New target.
+       (installcheck-local): Likewise.
+       * lib/am/Makefile.in: New file.
+       * lib/am/Makefile.am: Removed everything except amdir and
+       dist_am_DATA.
+
+2001-05-13  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($pkgdata_dir): Rename as...
+       ($libdir): this.
+       ($am_dir): Remove, replace its uses with $libdir.
+       (&parse_arguments): Replace --amdir with --libdir.
+       * automake.texi (Invoking Automake): Document --libdir, not
+       --amdir.
+       * tests/defs (AUTOMAKE): Use --libdir, not --amdir.
+
+2001-05-13  Tom Tromey  <tromey@redhat.com>
+
+       * m4/depout.m4 (AM_OUTPUT_DEPENDENCY_COMMANDS): Use AMDEP_TRUE,
+       not AMDEP.
+       * m4/depend.m4 (AM_DEPENDENCIES): Require AM_DEP_TRACK.
+       Correctly look at AMDEP_TRUE, not AMDEP.
+
+       Report from Robert Boehne:
+       * tests/Makefile.am (TESTS): Added depend2.test.
+       * tests/depend2.test: New file.
+
+2001-05-13  James Henstridge  <james@daa.com.au>
+
+       * m4/python.m4 (AM_PATH_PYTHON): Added more names for python.
+       Point pythondir at site-packages directory.  Rename
+       PYTHON_SITE_PACKAGE to pkgpythondir.  Rename PYTHON_SITE_EXEC to
+       pyexecdir.  Removed package/module argument.  Removed
+       PYTHON_SITE_INSTALL.  Added version checking.
+
+2001-05-14  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in (macro_define): Change one remaining use of
+       `variable_dump' to `macro_dump'.
+
+2001-05-13  Tom Tromey  <tromey@redhat.com>
+
+       * m4/depend.m4 (AM_DEPENDENCIES): Prefer gcc3 over gcc for objc
+       and gcj.
+
+2001-05-13  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_texinfo_file, &handle_dist, &handle_gettext)
+       (&handle_footer, &handle_factored_dependencies, &handle_emacs_lisp)
+       (&am_primary_prefixes): Use `map' rather than `grep'.
+
+2001-05-13  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Set config_vars for yacc, yaccxx, lex,
+       lexxx, asm.
+       (&lang_c_finish, &lang_yacc_finish, &lang_lex_finish): Simplify.
+       (&lang_asm_finish): Remove, set asm's finisher to C's one.
+
+2001-05-13  Akim Demaille  <akim@epita.fr>
+
+       * lang-compile.am: New file, loaded once per language.
+       * depend2.am: Move definitions loaded once per language in the
+       aforementioned file.
+       * automake.in (&handle_languages): Load it.
+       (&lang_ppf77_finish, &lang_ratfor_finish): Remove as it's now
+       handled by lang-compile.am.
+
+2001-05-13  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (TESTS): Added python.test.
+       * tests/python.test: New file.
+       * automake.in (handle_languages): Use
+       config_aux_dir_set_in_configure_in.
+       (handle_python): Correctly mention AM_PATH_PYTHON.  Use
+       py-compile, not py_comp.  Define py_compile macro.
+
+2001-05-13  Derek Price  <dprice@openavenue.com>
+
+       * automake.in (require_file_with_conf_line,
+       require_file_with_line, require_file): Pass a @require_file_path
+       of $relative_dir instead of '.' to require_file_internal so that
+       all the special casing of '.' can be removed elsewhere.
+       (require_config_file, require_conf_file_with_line,
+       require_conf_file_with_conf_line): Remove special casing for '.'
+       and make sure $config_aux_dir is maintained properly.
+       (require_file_internal): Remove special casing of '.' and set
+       @require_file_path when missing files are added.
+       (maybe_push_required_file): Remove special casing of '.'
+       (handle_dependencies): Remove a workaround for a bug now fixed
+       and remove $config_aux_dir special casing.
+       (handle_configure): Remove special casing for $config_aux_dir
+       (handle_python): Ditto.
+       (yacc_lex_finish_helper): Change $config_aux_dir switch to
+       switch on the value of $config_aux_dir_set_in_configure_in.
+       (handle_texinfo): Ditto.
+       (scan_one_configure_file): Set $config_aux_dir and
+       $config_aux_dir_set_in_configure_in properly so special casing
+       on the value of $config_aux_dir can be removed elsewhere.
+       * tests/depcomp.test: New file.
+       * tests/confsub.test: Look for depcomp in $(top_srcdir) instead of the
+       first subdir containing a C file.
+       * tests/libobj2.test: Ditto.
+       * tests/Makefile.am (TESTS): Added 'depcomp.test'.
+
+2001-05-12  Tom Tromey  <tromey@redhat.com>
+
+       * tests/gcj.test: Updated for gcj dependency tracking.
+       * tests/gcj2.test: Likewise.
+
+       Fixes PR automake/169.
+       * m4/depend.m4 (AM_DEPENDENCIES): Handle GCJ.  Don't assume gcc
+       style for OBJC.
+       * automake.in (java): Added autodep entry.
+       * tests/Makefile.am (TESTS): Added gcj3.test.
+       * tests/gcj3.test: New file.
+
+2001-05-12  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * automake.in (ASSIGNMENT_PATTERN): Make variable-name pattern
+       stop at the first '='.
+       * tests/Makefile.am (TESTS): Added vars.test.
+       * tests/vars.test: New file.
+
+2001-05-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_single_transform_list): Simplify
+       computation of $object and $this_obj_ext.
+       * tests/lex3.test: Merge into...
+       * tests/lex.test: here.
+       * tests/pr19.test: Improve and rename as...
+       * tests/lex3.test: this.
+
+2001-05-09  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (read_am_file): Correctly compute $saw_bk.
+       (scan_autoconf_files): Ensure configure_dist_common is always
+       set.
+       * tests/defs (AUTOMAKE): Added --Werror.
+
+2001-05-09  Pavel Roskin  <proski@gnu.org>
+
+       * automake.in (define_compiler_variable): Escape $(LIBTOOL) in
+       double quotes.
+
+2001-05-09  Tom Tromey  <tromey@redhat.com>
+
+       * tests/werror.test: Use `rm -f'.
+
+2001-05-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_line_warning): Invoke `am_line_error', not itself.
+
+2001-05-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Remove some code left from bad patches.
+       (&handle_dependency): Remove, for the same reason.
+
+2001-05-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&make_paragraphs): Transform BUILD, HOST and TARGET.
+       (&handle_tests_dejagnu, &define_standard_variables): Don't.
+       (&define_standard_variables): Don't transform %top_builddir% since...
+       * header-vars.am: Use %TOPDIR% instead.
+
+2001-05-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (@objects): Remove, unused.
+       Remove all the code related to it, and to former `$(OBJECTS)'.
+
+2001-05-08  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/29:
+       * ylwrap: Handle arguments to program.  Remove old code that tried
+       to avoid absolute paths and add new code to do it in all cases.
+       Removed ancient logic that tried to deal with relative path.
+       * tests/Makefile.am (TESTS): Added yacc4.test.
+       * tests/yacc4.test: New file.
+
+       Fix for PR automake/149 and werror.test:
+       * automake.in (require_file_internal): Use am_line_warning or
+       am_conf_line_warning when suppressing error.
+       (am_line_warning): New sub.
+       (am_conf_line_warning): Save and restore warning signal.
+       * tests/Makefile.am (XFAIL_TESTS): Removed werror.test.
+
+       Fix for PR automake/36:
+       * tests/Makefile.am (TESTS): Added asm.test.
+       * tests/asm.test: New file.
+       * automake.in (asm): Use ASFLAGS and AS.
+       (lang_asm_finish): New sub.
+
+       * automake.in (read_am_file): Removed debugging code.
+
+       For PR automake/149:
+       * tests/Makefile.am (TESTS): Added werror.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/werror.test: New file.
+
+       * automake.in (conditional_true_when): Don't return if we see
+       `TRUE'.
+
+       * tests/objc.test: Removed.
+       * tests/Makefile.am (XFAIL_TESTS): Removed objc.test.
+       (TESTS): Likewise.
+
+       * automake.in (subst): New sub.
+       (handle_languages): Use it.
+       (output_lex_build_rule): Likewise; also use _am_quote.
+       (check_libobjs_sources): Likewise.
+       (make_paragraphs): Use subst.
+
+       * automake.in (check_libobjs_sources): Re-fixed AMDEP_TRUE
+       problem.
+
+       * automake.in (file_contents_internal): Prototype now `$$%'.
+       (register_language): Prototype now `%'.
+
+       Fixes test subobj6.test and PR automake/160:
+       * tests/Makefile.am (XFAIL_TESTS): Removed subobj6.test.
+       * compile.am (mostlyclean-compile): Added MOSTLYRMS.
+       (distclean-compile): Added DISTRMS.
+       * tests/subobj6.test (wish_SOURCES): Updated to reflect
+       `mostlyclean' use; added test for non-subdir case.
+       * automake.in (compile_clean_files): New global.
+       (MOSTLY_CLEAN, DIST_CLEAN): New constants.
+       (initialize_per_input): Initialize compile_clean_files.
+       (handle_single_transform_list): Set compile_clean_files entries.
+       (handle_compile): Handle compilation cleanups.
+
+2001-05-08  Lars J. Aas  <larsa@sim.no>
+
+       * automake.texi (Canonicalizing Automake macros): Document not
+       canonicalizing strudels (@) anymore.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * distdir.am (dist-all): Build all the flavors using a single
+       distdir.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents_internal): Apply the @cond_stack to
+       the rules and assignments.
+       Don't rely on `$.' as it's biased by &make_paragraphs.
+       Don't remove backslashes in variable values.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($IGNORE_PATTERN): Improve for multi-line matches.
+       ($RULE_PATTERN): Use that from `&make_paragraphs'.
+       ($MACRO_PATTERN): Just catch the name of a macro.
+       ($BOGUS_MACRO_PATTERN): Remove.
+       ($ASSIGNMENT_PATTERN): New.
+       (&file_contents_internal, &make_paragraphs): Adjust.
+       (&macro_define): Catch bad macro names.
+       (&cond_stack_endif): Better error message.
+       (&file_contents_internal): Don't remove backslashes in variable
+       values.
+       (&macro_define): Do it for `+=' user variables.
+       (&define_standard_variables): Use `undef' instead of a dummy
+       variable.
+       (&make_paragraph): Be sure not to chop the trail of hash only
+       lines: adjust the `##' regexp.
+       (&rule_define): Fix a bug: don't read $1 but $target.
+       * tests/condincl.test: Strengthen.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Add attributes `Name' and `config_vars'.
+       (&finish): Work properly if there is no _finish.
+       (Automake): Register language Names and AC_SUBST dependencies.
+       Register Fortran 77 variables upon which ratfor and ppf77 depend.
+       (&handle_languages): Once per language, invoke
+       `define_linker_variables', and check its config_vars.
+       (&lang_cxx_finish, &lang_f77_finish, &lang_objc_finish)
+       (&lang_java_finish): Remove.
+       (&lang_ppf77_finish, &lang_ratfor_finish): Adjust.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents_internal): Accept $IS_AM.
+       (&handle_compile, &define_standard_variables, &file_contents): Adjust.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (am_install_var): Use `next' instead of `if' on the
+       body of $X loop.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Add attributes `lder' and `ld'.
+       (&register_language): Specify for cxx, objc, f77, gcj.
+       (&define_linker_variable): New.
+       (&lang_cxx_finish, &lang_f77_finish, &lang_objc_finish)
+       (&lang_java_finish): Adjust.
+       (&libtool_compiler): Remove.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_lib_objects_cond): Don't take $LEX_SEEN as
+       argument, as you don't use it.
+       Hence...
+       (&handle_lib_objects): Don't take $LEX_SEEN as argument, as you
+       don't use it.
+       Hence...
+       (&handle_programs): Don't mess with %lex_sources, as you don't use
+       it.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Add attribute `link'.
+       (&register_language): Specify for cxx, objc, f77, gcj.
+       (&lang_cxx_finish, &lang_f77_finish, &lang_objc_finish)
+       (&lang_java_finish): Adjust.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&define_compiler_variables): Use only $LANG as
+       argument.
+       (&handle_languages): Adjust.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&define_program_variable): Remove.
+       (&scan_one_autoconf_file): Skip MAKEINFO when found in an
+       AM_MISSING_PROG.
+       (&handle_texinfo): Don't define MAKEINFO and TEXI2DVI.
+       * texinfos.am: Do it.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_tests_dejagnu): Don't define EXPECT and
+       RUNTEST.
+       * dejagnu.am: Do it.
+       (site.exp): Use `if'.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Formatting changes.
+       (variable_dump, variables_dump): Rename as...
+       (macro_dump, macros_dump): these.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       Support `if !COND', `else COND', `end COND'.
+
+       * automake.texi (Conditionals): Document it.
+       * automake.in ($WHITE_PATTERN, $MACRO_PATTERN, $BOGUS_MACRO_PATTERN)
+       ($GNITS_VERSION_PATTERN, $INCLUDE_PATTERN): Use `\d' and `\s'.
+       ($IF_PATTERN, $ELSE_PATTERN, $ENDIF_PATTERN): Likewise, and accept
+       a leading `!' before the condition.
+       (&handle_options): Use `\d'.
+       (&cond_stack_if, &cond_stack_else, &&cond_stack_endif): New.
+       (&read_am_file, &file_contents_internal): Use them.
+       (&transform): No longer substitute `%!COND%', forcing the use of
+       `! %?COND%'.
+       * ansi2knr.am, lex.am, tags.am, texinfos.am, yacc.am: Adjust.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       Uniform handling of per-object compilation rules.
+       Note: Automake is repaired.
+
+       * automake.in (&handle_languages): Output per object rules for all
+       the objects, not only for those which language supports dependency
+       tracking.
+       Fix Automake: when outputting per-object rules, use `-o' if the
+       language has no `output_flag', as it's really needed.
+       (&handle_single_transform_list): Instead of special casing files
+       which need per object rules but which language don't support
+       dependency tracking, keep them in the queue for processing by
+       `&handle_languages'.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_languages): `ext-compile.am' and
+       `depend2.am' are now equivalent for generic rules: output only the
+       latter.
+       * ext-compile.am: Remove.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       Note: This patch breaks Automake.  Repaired within two patches.
+
+       * automake.in (Language): Replace the attribute `output_arg' with
+       `compile_flag' and `output_flag'.
+       (Automake): Adjust language registrations.
+       (&handle_languages): Transform `-c' and `-o' for both suffix and
+       per object rules, instead of `OUTARG' and `LTOUTARG' only for
+       generic rules.
+       (&handle_single_transform_list): Adjust to `compile_flag' and
+       `output_flag'.
+       * depend2.am, ext-compile.am: Use `%-c%' and `%-o%'.
+
+2001-05-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_languages): Don't transform %COMPILER%.
+       Use `$lang->compiler' instead of `$pfx' to transform generic
+       %COMPILE% and %LTCOMPILE%.
+       * ext-compile.am: Use %COMPILE%, %LTCOMPILE% and %SOURCE% instead
+       of %COMPILER% and $<.
+
+2001-05-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_languages): Use the same `%transform' for
+       both `depend2.am' and `ext-compile.am'.
+       Delay the definition of `$flag' so it is right before the first use,
+       and rename as `$flags'.
+
+2001-05-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_languages): Compute `$ltoutarg' and
+       `$outarg' independently of dependency code.
+       There is no use looping on a language's possible extensions since
+       we loop over used extensions.
+       Therefore, there is no use for a local `%transform'.
+
+2001-05-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_languages): Don't use $comp.
+
+2001-05-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_languages): Merge the two loops over
+       %extension_seen/%languages into one and group code to be run once
+       per language together.
+
+2001-05-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_languages): Move the `if
+       ($use_dependencies)' block so that loops over extensions and
+       languages are next to each other.
+
+2001-05-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&depend2): Remove, merged into...
+       (&handle_languages): here.
+
+2001-05-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&finish_languages): Rename as...
+       (&handle_languages): this.
+       Include the body of...
+       (&handle_dependency): this.
+       Remove.
+
+2001-05-06  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/46:
+       * tests/Makefile.am (TESTS): Add subdir5.test.
+       (XFAIL_TESTS): Likewise.
+       * tests/subdir5.test: New file.
+
+       * tests/subobj6.test (wish_SOURCES): Use $MAKE.
+       * tests/subobj5.test (wish_SOURCES): Use $MAKE.
+
+       * automake.in (GNITS_VERSION_PATTERN): Document.  Add `fork
+       identifier'.
+       (handle_options): Handle fork identifier in version number.
+
+       * automake.texi (Dist): Document distcheck-hook.
+
+       * tests/confh4.test: Update to reflect DEFS change.
+       For PR automake/132.
+
+       Fix for PR automake/132:
+       * automake.in (c, c++, objc, asm, ppf77): Add DEFAULT_INCLUDES to
+       compilation.
+       (java): Remove INCLUDES and DEFS from compilation.
+       (lang_c_finish): Add DEFAULT_INCLUDES to compilation.
+       * compile.am (DEFS): Don't include %DEFAULT_INCLUDES%.
+       (DEFAULT_INCLUDES): New macro.
+
+       * automake.in (usage): Re-align explanatory text.
+       Fixes PR automake/148.
+
+       * automake.texi (Uniform): Don't use @PROGRAMS@.
+       Fixes PR automake/154.
+
+       For PR automake/160:
+       * tests/Makefile.am (TESTS): Add subobj5.test and subobj6.test.
+       (XFAIL_TESTS): Add subobj6.test.
+       * tests/subobj6.test: New file.
+
+       * automake.texi (Uniform): Mention dist_, nodist_, and nobase_.
+       (Top level): Don't mention `flat'.
+       (Extending): Likewise.
+       (User Variables): New node.
+
+       * distdir.am (distdir): Make subdirectory for each file.
+       Fixes test subobj5.test.
+
+       * tests/Makefile.am (TESTS): Add new file.
+       (XFAIL_TESTS): Likewise.
+       * tests/texinfo10.test: New file.
+
+2001-05-05  Pavel Roskin <proski@gnu.org>
+
+       * automake.in (scan_texinfo_file): Treat @defindex and @synindex
+       in the same way as @defcodeindex and @syncodeindex respectively.
+
+2001-05-05  Tom Tromey  <tromey@redhat.com>
+
+       * mans.am (install-man%SECTION%): Minor cleanup.
+       (uninstall-man%SECTION%): Likewise.
+
+       * tests/Makefile.am (XFAIL_TESTS): Removed man.test.
+       * mans.am (install-man%SECTION%): Handle dist_ and nodist_
+       prefixes.
+       (uninstall-man%SECTION%): Likewise.
+       * automake.in (handle_man_pages): Handle dist_ and nodist_
+       prefixes.
+
+       * automake.texi (Future): Removed.
+       (Depth): Removed.
+       (Hello): Don't mention `deep'.
+       (Top level): Likewise.
+
+       * automake.in (conditional_true_when): Use a hash, not index().
+       Also, a TRUE component always results in a true return.
+       Fixes test cond10.test.  For PR automake/164.
+       * tests/Makefile.am (XFAIL_TESTS): Removed cond10.test.
+
+2001-05-05  Raja R Harinath  <harinath@cs.umn.edu>
+
+       For PR automake/164:
+       * tests/Makefile.am (TESTS): Added new file.
+       (XFAIL_TESTS): Likewise.
+       * tests/cond10.test: New file.
+
+2001-05-05  Tom Tromey  <tromey@redhat.com>
+
+       * texinfos.am (uninstall-info-am): Debian install-info v1.8.3
+       prints to stderr.
+       (install-info-am): Likewise.
+
+2001-05-05  Pavel Roskin <proski@gnu.org>
+
+       * automake.in (scan_texinfo_file): Don't push undefined values
+       to @clean_suffixes.
+
+2001-05-05  Richard Boulton  <richard@tartarus.org>
+
+       * automake.in (handle_dist): Check for existence of DIST_SUBDIRS
+       first.
+
+2001-05-05  Robert Collins  <robert.collins@itdomain.com.au>
+
+       * automake.in (required_targets): Added uninstall-am.
+
+2001-05-05  Tom Tromey  <tromey@redhat.com>
+
+       Fix bug reported by Robert Boehne:
+       * automake.in (output_lex_build_rule): Don't let AMDEP_TRUE be
+       substituted.
+       (handle_dependencies): Likewise.
+       * Makefile.am (maintainer-check): Look for AMDEP_TRUE
+       substitution.  Correct diff now has 30 lines.  Look for space
+       after losing `undef'.
+
+2001-05-04  Peter Eisentraut  <peter_e@gmx.net>
+
+       * m4/sanity.m4: Remove the temp file before possible error exits.
+
+2001-05-04  Akim Demaille  <akim@epita.fr>
+
+       * configure.in: Set perllibdir.
+       From Dave Morrison.
+
+2001-05-04  Ralf Corsepius  <corsepiu@faw.uni-ulm.de>
+
+       * automake.in ($pkgdata_dir): New.
+       (&require_file_internal): Use it.
+
+2001-05-03  Akim Demaille  <akim@epita.fr>
+
+       Case insensitive FS choke on Automake/ vs automake.
+       Reported by Tim Van Holder.
+
+       * Automake/: Move into...
+       * lib/: this new directory.
+
+2001-05-03  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * data.am (install-%DIR%%PRIMARY%): Execute the same command as
+       echoed.
+
+2001-04-30  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in: Remove `/lib' from include directory.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       AM_INIT_AUTOMAKE is no longer optional.
+
+       * automake.in ($seen_make_set, $seen_prog_install)
+       ($seen_arg_prog): Remove.
+       (&handle_programs, &handle_scripts, &scan_one_autoconf_file):
+       Remove related code.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * tests/specflags4.test, tests/specflags5.test: Remove, merged
+       into...
+       * tests/specflags3.test: here.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($seen_path_xtra): Remove.
+       (&handle_compile): Don't handle `AC_PATH_XTRA' AC_SUBST variables.
+       (&scan_one_autoconf_file): Do it, instead of setting $seen_path_xtra.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents_internal): Declare it.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&read_am_file, &file_contents_internal): Don't
+       define macros when `FALSE', to avoid errors on doubly defined
+       variables but under condition `FALSE'.  In order to allow...
+       (&am_install_var): When reading the associated file for the first
+       time, enable `%?FIRST%'.
+       (&handle_libraries): Let libs.am define $(AR) and $(RANLIB).
+       * libs.am: Do it when `%?FIRST%'.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_compile): Let ansi2knr.am define $(ANSI2KNR).
+       * ansi2knr.am: Do it.
+       Prefer `if %?FOO%' to `if %!FOO%'.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&register_language, &finish_languages): Use `pure'
+       as a Boolean.
+       (&register_language): Use %done properly with objects, not names.
+       (&finish_languages): Replace `$non_c' with `$needs_c'.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       Unify LISP, PYTHON and JAVA primaries.
+
+       * automake.in (&handle_emacs_lisp): Be like &handle_python, i.e.,
+       return if there are no files, hook elisp-comp on the Autoconf
+       macro, rely on lisp.am to define variables.
+       (&handle_python, &handle_java): Likewise.
+       (&scan_one_autoconf_file): Pseudo AC_SUBST of `pythondir' and
+       `PYTHON' must be handled here, not in `&handle_python'.
+       * java.am: Define needed variables and rules.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_install_var): Transform `ONE_PRIMARY'.
+       * data.am: Use it.
+       * header.am: Include data.am.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_install_var): Transform `PRIMARY'.
+       * data.am: Equip with %PRIMARY%.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (@conditional_stack): Rename as...
+       (@cond_stack): this.
+       (&file_contents_internal): Support inclusion of files.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&lang_extensions): Remove.
+       (&add_depend2, &saw_sources_p): Adjust.
+       * depend2.am: `%EXT%' no longer includes the dot.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&finish_languages, &handle_single_transform_list)
+       (&add_depend2, &handle_dependencies): No longer use the language
+       name in `$lang'.  Rename `$lang_obj' as `$lang'.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&register_language): Use `new Language' with a hash.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&register_language): Rename `output-arg' and
+       `derived-autodep' as `output_arg' and `derived_autodep' to match
+       the Language attribute.
+       Set the defaults in %option instead of $lang.
+
+2001-04-27  Akim Demaille  <akim@epita.fr>
+
+       * Automake/: New directory.
+       * Automake/Struct.pm: New file, based on Perl 5.6's Class::Struct.
+       * automake.in (Language): Use Automake::Struct.
+       * tests/defs: Adjust to find Struct.
+
+2001-04-23  Pavel Roskin <proski@gnu.org>
+
+       * automake.in: Add forward declaration for register_language().
+       * tests/Makefile.am (XFAIL_TESTS): Remove installsh.test - it
+       passes now.
+
+2001-04-20  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%required_targets): Add `uninstall'.
+       From Robert Collins.
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Add attribute `name'.
+       (&register_language): The name of the language is now given in the
+       hash.
+       No longer use `$lang' as the name of the language.
+       Rename `$lang_obj' as `$lang'.
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Add attribute `_finish'.
+       (&finish): New.
+       (Automake): Adjust.
+       (&lang_header_finish, &lang_yaccxx_finish, &lang_lexxx_finish)
+       (&lang_asm_finish): Remove.
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Add attribute `extensions'.
+       (Automake): Pass a hash to `&register_language' instead of a
+       list of pseudo assignments.
+       (&register_language): Adjust.
+       (&finish_languages): Initialize `$ltoutarg'.
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Add attribute `output_arg'.
+       (%language_map): Remove.
+       (&register_language): Build only the object, and store in
+       %languages only.
+       (&finish_languages, &handle_single_transform_list): Adjust.
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): Add attributes `flags', `compile' and
+       `compiler'.
+       (&finish_languages, &handle_single_transform_list, &handle_dist)
+       (&add_depend2, &register_language): Use them and the `linker' and
+       `pure' attributes.
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_single_transform_list, &finish_languages)
+       (&handle_dist, &handle_dependencies): Use the language object for
+       autodep and derived-autodep too.
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&macro_define): Ignore Automake definition for
+       ($var, $cond) if there is already a user definition for ($var, $cond).
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_texinfo_file): Catch @cindex and the like,
+       but also @deffn and so on which push data in indexes.
+       Reported by Derek R. Price.
+
+2001-04-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (Language): New package, temporarily in this file.
+       Use Class::Struct.
+       (Automake): New package.
+       (%languages): New.
+       (&handle_single_transform_list): Use the language object's `ansi'
+       attribute instead of `$language_map{"$lang-ansi-p"}'.
+       (&register_language): Build and register the language too.
+
+2001-04-11  Tom Tromey  <tromey@redhat.com>
+
+       Fixes report from Larry Jones:
+       * automake.in (handle_dependencies): Add `@_am_quote@' where
+       appropriate.
+       * m4/make.m4 (AM_MAKE_INCLUDE): Handle BSD-style make.
+
+2001-04-11  Akim Demaille  <akim@epita.fr>
+
+       * depend2.am: Fix the `if' condition for Libtool.
+       Reported by Robert Boehne.
+
+2001-04-10  Robert Collins  <robert.collins@itdomain.com.au>
+
+       * tests/subobj5.test: New file.
+
+2001-04-10  Ralf Corsepius  <corsepiu@faw.uni-ulm.de>
+
+       * m4/make.m4 (AM_MAKE_INCLUDE): Pass `-s' to make.
+       * tests/Makefile.am (TESTS): Added make.test.
+       * tests/make.test: New file.
+
+2001-04-10  Tom Tromey  <tromey@redhat.com>
+
+       * tests/defs: Changed how ACLOCAL and AUTOMAKE are set.
+
+2001-04-10  Derek R. Price  <dprice@collab.net>
+
+       * tests/defs: Allow user to override AUTOMAKE and ACLOCAL.
+
+2001-04-10  Akim Demaille  <akim@epita.fr>
+
+       * distdir.am: Add a missing backslash.
+
+2001-04-10  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_aclocal_m4): Handle $relative_dir and special
+       variables.
+       Specify to the caller whether $regen_aclocal_m4.
+       (&handle_configure): Adjust.
+       Transform `REGEN-ACLOCAL-M4'.
+       Reported by Tom.
+       * configure.am: Use it.
+       * tests/defs (me): New.
+       * tests/confdeps.test: New.
+
+2001-04-09  Tom Tromey  <tromey@redhat.com>
+
+       * m4/missing.m4 (AM_MISSING_HAS_RUN): Use `true', not `:'.
+       Fixes report from Jim Meyering.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_configure): Don't bother with optimizing
+       macro uses.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * tests/cond3.test (expected): Adjust.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_single_transform_list): Remove $xbase,
+       unused.
+       (&handle_source_transform): All the variables have conditions now,
+       simplify.
+       (&variable_delete): Admit an argument @conds.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($source_suffix_pattern): Remove, unused.
+       %extension_map seems to have replaced it.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * ext-compile.am: New file.
+       * automake.in (&finish_languages): Output it.
+       Require a C linker if there are several registered source suffixes.
+       (&handle_compile): No longer push the `.c', `.o', `.obj', `.lo'
+       extensions, which are discovered in ext-compile.am.
+       With the help from Robert Boehne.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_compile): Extract from...
+       (&get_object_extension): here.
+       (&read_am_file): Call it.
+       ($included_generic_compile, $included_knr_compile)
+       ($included_libtool_compile): Remove.
+       ($get_object_extension_was_run): New.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       Use AM_CONDITIONAL and if/endif for AMDEP.
+
+       * m4/depend.m4 (AM_DEP_TRACK): Use AM_CONDITIONAL to define AMDEP.
+       * automake.in (&add_depend2): Transform %AMDEP% into `AMDEP' (leading
+       to a configure time if/endif), or to `FALSE' (static removal of
+       the code).
+       (&handle_dependencies): Adjust to use `AMDEP_TRUE'.
+       * depend2.am: Use if/endif.
+
+       Adjust the 101 tests that use dependencies so that they
+       properly invoke aclocal before automake.  They need to `see'
+       `AM_CONDITIONAL([AMDEP], ...)'.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * tags.am: Fix missing leading tabs.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Use simple quotes to define the _PATTERN variables
+       to unobfuscate the regexps.
+       ($AM_CONDITIONAL_PATTERN): Let the user quote the variable.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&rule_define): When you discover a suffix rules,
+       register the extensions for .SUFFIXES.
+       (&handle_texinfo): Don't register the suffixes.
+       (&get_object_extension): Don't register suffixes, let them be
+       discovered in depend2.am.
+       (&handle_emacs_lisp): Depend on your lisp.am.
+       * lisp.am: Include the rule &handle_emacs_lisp used to output.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * subdirs.am: Don't define info related recursive targets.
+       * texinfos.am: Do.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * subdirs.am (RECURSIVE_TARGETS): New variable.
+       Use it.
+       * automake.in (&handle_subdirs): Output it.
+       (&file_contents_internal): Support value spread on several lines.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_man_pages): Rely on mans.am to define
+       man%SECTION%dir and MANS.
+       * mans.am: Do it.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_dump): Use %var_type properly.
+       (&macro_define): Enforce better overriding rules.
+       Handle the special case that used to handle...
+       (&define_pretty_variable): this.
+       Hence, don't.
+       The variables you define are owned by Automake.
+       (&generate_makefile): PRE_INSTALL and co must not be defined *by
+       the user*.
+       (&variable_defined): Now independent of the owner.
+       (&variable_output, &variable_pretty_output): Adjust to %var_type.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%var_was_plus_eq): Rename as...
+       (%var_type): this.
+       (%def_type): Remove.
+       (&macro_define): %var_type may now hold `', `+', or `:'.
+       (%conditional, %am_vars, %content_lines): Rename as...
+       (%var_value, %var_comment, %var_line): these.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_output): Admit a list of @CONDS.
+       (&variable_pretty_output): New.
+       (&define_pretty_variable): Use it.
+       (&read_am_file, &file_contents_internal): Prepend a separator to
+       $am_vars only if there is none yet.
+       (&file_contents_internal): Rename $separator as $spacing to
+       harmonize with &read_am_file.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_install_var): Transform DIST, and let the *.am
+       files handle DIST_COMMON.
+       * data.am, header.am, java.am, list.am, python.am, script.am: Set
+       DIST_COMMON.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%dist_common): Remove.
+       (%configure_dist_common): Replace with...
+       ($configure_dist_common): this.
+       (&generate_makefile): Read the user file before using
+       push_dist_common, as it sets DIST_COMMON, and read_am_file checks
+       that no variable is defined before it is run.
+       (&handle_texinfo): Don't handle DIST_COMMON, let your file do it.
+       (&dist_cmp): Rename as...
+       (&for_dist_common): this.
+       (&handle_dist): Don't handle DIST_COMMON, let `configure.am' do
+       it.
+       Adjust to $configure_dist_common.
+       * configure.am, texi-vers.am: Set DIST_COMMON.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_aclocal_m4): Rename as...
+       (&scan_aclocal_m4): this.
+       Return the list of aclocal.m4 dependencies.
+       (&handle_configure): Invoke it, and use it when loading...
+       * configure.am: Template the rules to recreate aclocal.m4.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&get_object_extension): Use ansi2knr.am.
+       * clean-kr.am, kr-extra.am: Remove, merged into...
+       * ansi2knr.am: this new file.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&transform): Fix an incredible bug which was
+       breaking the if/endif system.
+       ($ELSE_PATTERN): Admit an optional argument.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * comp-vars.am: Remove, merged into...
+       * compile.am: here.
+       * automake.in (&get_object_extension): Adjust.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * remake.am: Merge into...
+       * configure.am: ... here.
+       * automake.in (&handle_configure): Adjust.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&output_lex_build_rule): Output this...
+       * lex.am: New file.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&condition_negate): New.
+       (&variable_conditions_permutations): Use it.
+       (&read_am_file, &file_contents): Use it on `else' clauses to
+       support `if FALSE'.
+       (&output_yacc_build_rule): Output this...
+       * yacc.am: New file.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&make_paragraphs): Transform TOPDIR_P and TOPDIR.
+       (&handle_dist): Don't.
+       (&handle_clean): Don't handle config.status here, let...
+       * clean.am: ... do it.
+       * distdir.am: Adjust.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Use strict vars and subs.
+       Declare `%require_file_found'.
+       (&handle_source_transform, &make_paragraphs): Declare my variables.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * data.am, header.am, java.am, libs.am, lisp.am, ltlib.am,
+       * progs.am, python.am: Use if/endif instead of ?INSTALL?.
+       * java.am (_am_installdirs): Be sure to set it.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&make_condition): Return '#' when FALSE.
+       (&conditional_string): Return FALSE, not '#' in the corresponding
+       cases.
+       (&file_contents_internal): Adjust.
+       (&check_variable_defined_unconditional): Dump the guilty variable.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * distdir.am: Use and abuse of if/endif.
+       * scripts.am: Using if/endif with variables is fine.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&make_paragraphs):  Extract from &file_contents.
+       Make it more robust than the previous RE based scheme.
+       (&file_contents): Use it.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&make_paragraphs):  Extract from &file_contents.
+       Make it more robust than the previous RE based scheme.
+       (&file_contents): Use it.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * tests/yacc2.test: Don't define several times a variable, as
+       automake complains.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_source_transform): Fix pr72: don't define
+       $linker if there are no @files.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       Avoid reading twice header-vars.am as now macro_define
+       complains.
+
+       * automake.in (&define_standard_variables): Don't output the
+       variables.
+       (&read_main_am_file): Output first user variables, then Automake
+       variables.
+       Don't call twice &define_standard_variables.
+       Save variable comments in $am_vars.
+       (&variable_output): New.
+       (&file_contents_internal): New.
+       Save variable comments in $am_vars.
+       (&file_contents): Use it.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&macro_define): The user is allowed to override
+       a value if it was set by Automake, or if it was found in AC_SUBST.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_source_transform): Better locality of the
+       variables.
+       Use `next' to skip nonexistent variables.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_dump): If a variable is undefined, say
+       it.
+       (&check_ambiguous_conditional): Give finer error messages.
+       (&macro_define): Check that a `+=' variable is not set with `='.
+       Check for ambiguous definitions each time you _set_ (even with `+=')
+       a variable.
+       (&read_main_am_file): Perform a deep copy of %conditional.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_defined): Some callers, e.g.,
+       &am_primary_prefixes, really want to know if the variable is
+       defined for any condition, not `TRUE' by default.
+       (&am_primary_prefixes): Give a more precise error message.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       (&variable_conditions): Don't include `FALSE' in the result.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_conditions_reduce): FALSE is absorbent.
+       (&variable_conditions): Don't include `FALSE' in the result.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * tests/defs, tests/depend3.test: Remove useless code.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_source_transform):  Use
+       &variable_conditions, don't read $conditional{$var}.
+       (&variable_conditions_sub): When the call is the top level call,
+       generate all the permutations of the conditions.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * depend2.am (@AMDEP@%FPFX%DEPMODE): Define it when GENERIC so
+       that it does not get noticed twice by automake, which now
+       complains for multiple definitions.
+       * tests/vartar.test: s/INSTALL/install/g, automake now complains
+       because we defined INSTALL.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&generate_makefile) Use macro_define to define
+       SOURCES and OBJECTS.
+       (&variable_defined): Don't check for $conditional{VAR}{COND} as
+       this would make perl create $condition{VAR}, which we don't want.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_defined, &define_pretty_variable):
+       Simplify code which used to handle the cases where not all
+       variables were in %conditional.
+       (&define_variable): Use &define_pretty_variable.
+       (&variable_conditions_sub, &variable_value_as_list_worker)
+       (&variable_value_as_list, &rule_define): Simplify syntax.
+       (&read_main_am_file): Dump the guilty predefined variables.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_conditions_sub)
+       (&variable_value_as_list_worker): Remove dead code which used to
+       handle the cases where not all variables were in %conditional.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_source_transform, &read_main_am_file):
+       Simplify loops which were split in two parts, conditional vs
+       unconditional variables.
+
+2001-04-09  Akim Demaille  <akim@epita.fr>
+
+       Handle unconditional values of variables as conditioned by
+       `TRUE'.
+
+       * automake.in (%contents): Remove.
+       (&generate_makefile, &handle_ltlibraries, &macro_define)
+       (&read_am_file, &variable_defined, &variable_conditions_sub)
+       (&variable_value, &variable_value_as_list_worker)
+       (&variable_value_as_list, &define_pretty_variable)
+       (&read_main_am_file): Use
+       $conditional, not %contents.
+       (&variable_conditions_permutations): Don't return TRUE and FALSE.
+       (&variable_conditionally_defined): New.
+       (&handle_dist): Use it.
+       (&check_ambiguous_conditional): When multiply defined, specify
+       under which condition.
+       (&macro_define): Use it.
+       (&variable_delete): New.
+       (&read_am_file): Use it.
+       (&am_install_var): Simplify, as all the variables are in
+       %conditional now.
+
+2001-04-07  Tom Tromey  <tromey@redhat.com>
+
+       * tests/Makefile.am (XFAIL_TESTS): Added man.test.
+       (TESTS): Likewise.
+       * tests/man.test: New file.
+
+2001-04-07  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * depcomp (gcc3): Invert test condition.
+
+2001-04-07  Tom Tromey  <tromey@redhat.com>
+
+       * depcomp (gcc3, gcc): Don't assume $? will be set in `if'
+       statement.  Report from Larry Jones.
+
+2001-04-07  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * depcomp (sgi): Fix sed expression.  Report from Robert Boehne.
+
+2001-04-01  Tom Tromey  <tromey@redhat.com>
+
+       * java.am (.PHONY clean-am): Removed trailing ":".
+       From Per Bothner.  Fixes PR automake/139.
+
+2001-03-28  Akim Demaille  <akim@epita.fr>
+
+       * program.am: Fix a stupid typo: now *all* (not none) the programs
+       use `$(EXEEXT)'.
+       Reported by Robert Boehne.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&read_am_file, &file_contents): Avoid name clashes
+       on $cond.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_conditionally_defined): Rename as...
+       (&check_variable_unconditionally_defined): this.
+       (&variable_dump): Fix the output.
+       (&variable_defined, &macro_define): Since conditions are
+       canonicalized, don't use a loop to look for a condition: read the
+       hash.
+       (&macro_define, &rule_define, &read_am_file, &file_contents):
+       Rename $cond_string as $cond.
+       * distdir.am (PACKAGE, VERSION): Remove; since they are already
+       discovered via AC_SUBST, they now trigger a `defined twice' error.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_footer, &handle_installdirs)
+       (&read_main_am_file): Don't read %contents directly, use
+       &variable_value.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&read_am_file): Define the variables in a single
+       shot.
+       Factor the $saw_bk code.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&read_am_file): Keep $cond_string up to date.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&define_variable): Use &macro_define.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&macro_define): Don't lose the location if we
+       redefine a variable.
+       Don't push all the variables in @var_list, let...
+       (&read_am_file, &file_contents): ... do it.
+       (&define_pretty_variable): Use macro_define.
+       (&am_install_var): Delete the value of variables being redefined
+       to pacify &macro_define which checks that variables are not
+       doubly defined.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&conditional_dump): Rename as...
+       (&variables_dump): this.  Use...
+       (&variable_dump): this new sub.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents): Maintain $cond_string sync with
+       @cond_stack.
+       Output rules only if not under `FALSE'.
+       Define variables under $cond_string.
+       * scripts.am: For the time being if/endif does not work properly
+       with macros.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (IF_PATTERN): Unobfuscate the parens.
+       (ENDIF_PATTERN): Allow a condition to be specified.
+       (&file_contents): Use a @cond_stack.
+       (&transform): At least for an easy transition, also transform
+       %?FOO% and %!FOO%, as suggested by Lars.
+       * scripts.am: First test bed for static if/endif use.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents): Use rule_define.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&macro_define): Don't rely on $1.
+       Initialize the variable.
+       Set its Automakism only if not defined or if given to the user.
+       When concatenating values, insert a separator only if the value
+       was not empty.
+       (&read_am_file): When dumping the @var_list, skip Automake
+       variables.
+       (&file_contents): Use macro_define.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&rule_define): Extract from...
+       (&read_am_file): here.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&macro_define, &read_am_file): More work for the
+       former from the latter.  Reorganize the latter.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&macro_define): Extract from...
+       (&read_am_file): here.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%am_var_defs): Replace with...
+       (%var_is_am): this.
+       (&handle_installdirs, &variable_value_as_list_worker, &read_am_file)
+       (&file_contents, am_primary_&prefixes): Adjust.
+       (&variable_defined, &define_variable): The actual semantics is
+       `user defined'.
+       (&read_main_am_file): Assert the var is user defined when
+       outputting @var_list.
+
+2001-03-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (read_am_file): TRUE and FALSE are predefined
+       conditionals.
+       (&by_condition): Adjust.
+       (&conditional_string): Recognize `TRUE' and `FALSE'.
+       (&make_condition): Use it.
+       * m4/cond.m4: Reject TRUE and FALSE as conditionals.
+       * automake.texi (Conditionals): Adjust.
+       * tests/cond9.test: s/FALSE/WRONG/.
+
+2001-03-12  Pavel Roskin  <proski@gnu.org>
+
+       * tests/Makefile.am (XFAIL_TESTS): Remove cond3.test, it passes
+       now.
+
+2001-03-12  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_conditions_permutations): Separate the
+       conditions.
+       * tests/cond3.test: Improve the sed expression.
+
+2001-03-09  Pavel Roskin  <proski@gnu.org>
+
+       * Makefile.am (maintainer-check): Scan all *.am files and tests
+       for invocations of `rm' without `-f'.
+       * tests/mclean.test: Adjusted to prevent triggering the above
+       test.
+
+2001-03-09  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (scan_one_autoconf_file): Fixed comment to avoid
+       maintainer-check failure.
+
+2001-03-09  Akim Demaille  <akim@epita.fr>
+
+       * tests/cond3.test: Strengthen.
+
+2001-03-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&conditional_string): Produce a unique string
+       characterizing a condition stack.
+       (&conditional_same): Remove, comparing two strings is now enough.
+       (&variable_defined): Adjust.
+       (&read_am_file): Use conditional_string.
+
+2001-03-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Use -w.
+       Normalize all use of `$lang . '-foo'' into `"$lang-foo"'.
+       (&parse_arguments): Support --Werror and --Wno-error as a
+       temporary hack until --warning/-W is properly implemented.
+       (&handle_single_transform_list): Prototype.
+       Be sure to define $directory.
+       Use `exists' instead of testing the value of a maybe undefined
+       hash value.
+       (&add_depend2, &handle_configure, &handle_footer, &file_contents)
+       (&handle_factored_dependencies): Use defined values.
+       (&scan_one_autoconf_file): Save $_.
+       * tests/lex2.test, tests/sinclude.test, tests/suffix3.test:
+       Run automake with --Wno-error.
+
+2001-03-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_all): Use an array instead of a scalar for
+       local_headers.
+       Get rid of all-redirect: let `all' be that target.
+
+2001-03-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_merge_targets): Ventilate its non `all'
+       related content into...
+       (&generate_makefile): here.
+       (&handle_merge_targets): Rename as...
+       (&handle_all): this.
+       Remove a useless `if': `@all' is obviously not empty, since it
+       contains at least the `basename ($makefile)' which has just been
+       unshifted.
+
+2001-03-07  Akim Demaille  <akim@epita.fr>
+
+       * automake.in, aclocal.in: Backquote is inert in double quotes.
+
+2001-03-06  Akim Demaille  <akim@epita.fr>
+
+       * Makefile.am (maintainer-check): Simplify `grep -v ... | grep .'
+       into `grep -v ...'.
+
+2001-03-06  Pavel Roskin  <proski@gnu.org>
+
+       * java.am: Use `rm -f' instead of `rm'.
+
+2001-03-06  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&push_dist_common): Simplify.
+
+2001-03-06  Jens Krüger <jens_krueger@physik.tu-muenchen.de>
+
+       * ltlib.am: Replaced spaces with tab.
+
+2001-03-06  Pavel Roskin  <proski@gnu.org>
+
+       * tests/Makefile.am (XFAIL_TESTS): noinstdir.test removed, it's
+       fixed now.
+
+2001-03-05  Pavel Roskin  <proski@gnu.org>
+
+       * header.am, scripts.am: Use ?INSTALL? in the install and
+       uninstall rules.
+
+2001-03-05  Pavel Roskin  <proski@gnu.org>
+
+       * tests/copy.test: Never use `rm' without `-f' - it may ask
+       questions, notably for read-only files during `make distcheck'.
+       * tests/insh.test: Likewise.
+       * tests/installsh.test: Likewise.
+       * tests/symlink.test: Likewise.
+       * tests/symlink2.test: Likewise.
+       * tests/symlink3.test: Likewise.
+
+2001-03-05  Pavel Roskin  <proski@gnu.org>
+
+       * noinstdir.test: New test.
+       * tests/Makefile.am (TESTS): Add noinstdir.test.
+       (XFAIL_TESTS): Likewise.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_options): Change the RE so that the third
+       part of the versions always exist.
+       (&file_contents): Don't pass uninitialized values to &transform.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents): Require a hash as second argument.
+       Adjust callers.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       Always use hashes with &file_contents.
+
+       * automake.in (&handle_texinfo): texibuild.am does not need
+       TEXINFODIR.
+       texinfos.am wants only TEXICLEANS.
+       (&handle_dist, &add_depend2, &handle_clean): Replace $xform with
+       %transform.
+       * texinfos.am: Adjust.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_programs, &handle_libraries, &handle_tags)
+       (&handle_ltlibraries, &handle_emacs_lisp, &handle_python): Adjust.
+       (&am_install_var): Forget about `-clean'.
+       Transform ?INSTALL?.
+       Always output the *.am file.
+       * data-clean.am, java-clean.am, libs-clean.am, lisp-clean.am,
+       * ltlib-clean.am, progs-clean.am, python-clean.am, tags-clean.am:
+       Remove, merged into the corresponding *.am file.
+       * data.am, libs.am, ltlib.am, progs.am, python.am: Equip with
+       ?INSTALL?.
+
+2001-03-05  Pavel Roskin  <proski@gnu.org>
+
+       * Makefile.am (amfiles): Add configure.am. Sort alphabetically.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       If OBJEXT and EXEEXT are not set, provide a default value, and use
+       them unconditionally.
+
+       * automake.in (&generate_makefile): Provide default values for
+       EXEEXT and OBJEXT.
+       (&get_object_extension, &finish_languages)
+       (&handle_single_transform_list, &handle_programs, &add_depend2)
+       (&check_cygnus, &lang_c_finish, am_install_var): Don't bother with
+       them, they are defined.
+       * compile.am, depend2.am, program.am, progs.am: Likewise.
+       * remake-hdr.am: Fix a typo.
+       * tests/cxxo.test, tests/fo.test, tests/implicit.test,
+       * tests/interp.test, tests/subobj.test, tests/subobj2.test,
+       * tests/suffix2.test: Adjust.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents): Map MAINTAINER-MODE to
+       @MAINTAINER_MODE_TRUE@ or nothing.
+       * configure.am, remake-hdr.am, remake.am, texi-vers.am: Adjust.
+       Suggested by Tom.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&do_one_merge_target): Remove, was only called from...
+       (&handle_merge_targets): here for `all'.
+       Adjust.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       Make the installation/uninstallation of Info pages follow the
+       regular am/recursive scheme.
+
+       * automake.in (%required_targets, %dependencies): Add
+       install-info.
+       (%dependencies): Add install-info, install-info-am, and
+       unstall-info.
+       (&handle_subdirs): Don't transform INSTALLINFO, which mapping was
+       reversed BTW.  Does anybody use the option `no-installinfo'?
+       (&handle_merge_targets): Let the handling of info related targets
+       to...
+       (&handle_factored_dependencies): this.
+       * subdirs.am: Use ?INSTALL-INFO?.
+       * texinfos.am: Define the install-info, uninstall-info and
+       uninstall-info-am targets.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%required_targets, %dependencies): Add dvi, info,
+       dvi-am, info-am.
+       (@info, @dvi): Remove.
+       (&handle_texinfo, &handle_merge_targets): Adjust.
+       (&handle_factored_dependencies): Required targets are phony.
+       * texinfos.am: Build info, dvi, and the corresponding -am or
+       -recursive targets.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_install_var): Remove $cygxform, unused.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents): Transform LIBTOOL.
+       (&am_install_var): Remove $ltxform.
+       * ltlib.am, progs.am: Adjust.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Require AC_PROG_INSTALL in...
+       (&scan_autoconf_files): here.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * configure.am: New file.
+       * automake.in (&file_contents): Transform CONFIGURE-AC.
+       (&handle_texinfo, &handle_configure): Don't transform
+       CONFIGURE_AM.
+       (&handle_configure): Use `configure.am'.
+       * remake-hdr.am, remake.am, texi-vers.am: Adjust to
+       MAINTAINER-MODE and CONFIGURE-AC.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&pretty_print_internal): Don't output useless
+       spaces.
+       (define_pretty_variable): Don't issue the space after the `=' sign
+       to avoid trailing spaces in Makefile.ins.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&generate_makefile): Invoke &initialize_per_input
+       *before* setting $am_file_name and $in_file_name.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($in_file_name, $am_file_name, $relative_dirs):
+       Globals, initialized...
+       (&initialize_per_input): here.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($am_relative_dir): Global.
+       (&initialize_per_input): Init it.
+       (%make_list, @make_input_list): My them from
+       (&scan_autoconf_files): here.
+       (&require_file_internal): Mying changes.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%am_vars, @var_list, %def_type): Globals.
+       (&initialize_per_input): Initialize them.
+       (&read_main_am_file): Don't local them.
+       (&get_object_extension): $objext is private.
+       (&handle_single_transform_list): $lang is.
+       (&handle_ltlibraries): $libname_rx is.
+       (&scan_autoconf_config_files): How about actually paying attention
+       to your arguments, instead of working on $_? (this is no Perl
+       variable, it's a Perl variable followed by a question mark).
+       (&file_contents): $contents and $separator are private.
+       (&am_install_var): Declare @condvals, not $condvals.
+       (%make_dirs): My.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&initialize_per_input): Move to the top.
+       Precede with the `my' list of its variables.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($am_file): Use vars.
+       ($am_file_name, $in_file_name): Private to &generate_makefile.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Preparation for `use strict': Move the
+       initialization of the constants to the top, from...
+       (&initialize_global_constants): here.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_single_transform_list, &add_depend2): Let
+       $lang_specific_files{$lang} be a list instead of a string.
+
+2001-03-05  Akim Demaille  <akim@epita.fr>
+
+       Let's make it run ten times faster...
+
+       * automake.in (&transform): Be sure to remove the `\n' with ?FOO?
+       transformations.
+       (&file_contents): Let `$command' remove the Automake commands, and
+       normalize the series of `\n'.
+       Slurp the file and apply $command in a single step.
+       No longer apply the `@MAINTAINER_MODE_TRUE@' transformation which
+       is already normalized to be handled by &transform.
+
+2001-03-05  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (register_language): Add entry for `-pure'.
+       Added `pure=yes' entries for cxx, objc, f77, ppf77, ratfor, java.
+       (finish_languages): Use `-pure' field of language map.
+
+2001-03-03  Tom Tromey  <tromey@redhat.com>
+
+       * tests/yaccvpath.test: No need to remove dummy files.
+       * tests/subobj3.test: No need to remove dummy files.
+       * tests/pr9.test: No need to remove dummy files.
+       * tests/pr87.test: No need to remove dummy files.
+       * tests/pr19.test: No need to remove dummy files.
+       * tests/install2.test: No need to remove dummy files.
+       * tests/defs: Actually copy in install-sh, mkinstalldirs, missing,
+       and depcomp.
+
+2001-02-27  Pavel Roskin  <proski@gnu.org>
+
+       * tests/yaccvpath.test: Add a delay to make parse.c really out
+       of date. Detect the problem earlier, after `make distdir'. Drop
+       dependency on flex. Always use the `-y' flag for bison. Comment
+       changes.
+       * tests/Makefile.am: Add yaccvpath.test to XFAIL_TESTS.
+
+2001-03-02  Jens Krüger <jens_krueger@physik.tu-muenchen.de>
+
+       * depend2.am (?!GENERIC??LIBTOOL?%LTOBJ%): Add `%' to fix typo.
+
+2001-02-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&add_depend2): Transform `GENERIC'.
+       Get rid of the ad hoc transformation of `@EXT@.o:' which in
+       addition was broken by the `@ -> %' patch.
+       * depend2.am: Adjust to use ?GENERIC?.
+
+2001-02-28  Akim Demaille  <akim@epita.fr>
+
+       * Makefile.am (maintainer-check): `undef $/' is OK.
+
+2001-02-28  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_configure): Fortunately, $top_reldir,
+       the definition of which was highly suspicious, was unused.
+
+2001-02-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%exec_dir_p): Move to the top so that it is visible
+       to all routines.
+
+2001-02-27  Pavel Roskin  <proski@gnu.org>
+
+       * tests/yaccvpath.test: Prevent automake from looking into ..
+       and ../.. by using AC_CONFIG_AUX_DIR in configure.in.
+
+2001-02-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%exec_dir_p): Pulled out from...
+       (&am_primary_prefixes): here.
+
+2001-02-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&usage): Display $0, not $me.
+
+2001-02-27  Akim Demaille  <akim@epita.fr>
+
+       * mans.am: s/INSTALL_MAN/INSTALL-MAN/.
+       * automake.in (&handle_clean): Don't escape what's given to
+       &transform.
+
+2001-02-27  Akim Demaille  <akim@epita.fr>
+
+       Distinguish automake substitutions from config.status
+       substitutions.
+
+       * automake.in (&add_depend2): Transform AMDEP.
+       (&handle_clean): Transform MCFILES and MFILES.
+       (&file_contents): Transform MAINTAINER_MODE.
+       (&transform, &am_install_var): Use `%', not `@'.
+       Adjust all the *.am files.
+       * clean.am: Use ?MFILES? instead of ad hoc MAINTAINERCLEAN.
+       * depend2.am: Display the double dependency on both ?AMDEP? and
+       @AMDEP@.
+
+2001-02-27  Tom Tromey  <tromey@redhat.com>
+
+       * distdir.am (distcheck): Fixed new code.
+
+       * tests/yaccvpath.test: Fail gracefully if bison/flex not found.
+       Only configure once.
+
+       * distdir.am (distcheck): Print error message if distclean failed
+       to fully clean.
+
+2001-02-27  Pavel Roskin  <proski@gnu.org>
+
+       * tests/Makefile.am (TESTS): s/yaccpvath/yaccvpath/.
+
+2001-02-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/Makefile.am (TESTS): Added yaccvpath.test.
+       * tests/yaccvpath.test: New file.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_install_var): Recognize whether predefined
+       directories are `data' or `exec'.
+       * libs.am, ltlib.am, progs.am, python.am, scripts.am: Install
+       ?EXEC?.
+       * tests/instdata2.test: Update.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * texinfos.am: No ?EXEC? hook as currently installing TEXINFOS is
+       necessarily in infodir.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($am_file): Be `local', as my'd variables used in
+       `foreach' loops are always private to the loop.
+
+2001-02-26  Pavel Roskin  <proski@gnu.org>
+
+       * Makefile.am: Add install.am.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&target_cmp, &dist_cmp): Do not prototype comparing
+       routines, otherwise the elements to compare are passed in @_
+       instead of $a and $b.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%required_targets): `installcheck-am' is needed.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&transform_cond): Merge into...
+       (&transform): this.
+       Adjust all uses.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_dist): Use &transform instead of dedicated
+       magic for DISTDIRS.
+       But be sure to always do it.
+       * distdir.am: Adjust.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Use File::Basename.
+       (&dirname, &basename): Remove.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($me): New.
+       Use it.
+       (&usage): Display your full name.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.texi (Invoking Automake): Remove dead options.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_texinfo_file): Also compute the list of files
+       to clean.
+       Handle local errors.
+       (&handle_texinfo): Use it.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Don't pass arguments to...
+       (&parse_arguments): Work on @ARGV.
+       Use Getopt.
+       Add support for `-f'.
+       (&version): New.
+       (&usage): Update.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_merge_targets, &do_one_merge_target): Don't
+       handle installcheck and installcheck-am.
+       * install.am: Do it.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_merge_targets, &do_one_merge_target): Don't
+       handle install and install-am.
+       * install.am: Do it.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_merge_targets, &do_one_merge_target): Don't
+       work on targets handled by %dependencies.
+       (&handle_factored_dependencies): Do it.
+       * install.am: Install install-exec, install-data and uninstall's
+       suites.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_merge_targets): Move `install-strip' from
+       here...
+       * install.am: to here.
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (@installdirs): Remove.
+       (&file_contents): Be able to grow Automake macros with `+='.
+       (&handle_texinfo, &handle_man_pages, &am_install_var): Let your
+       files define _am_installdirs.
+       (&handle_installdirs): Remove the code, just output `install.am'.
+       * install.am: New.
+       * data.am, header.am, libs.am, lisp.am, ltlib.am, mans.am, progs.am,
+       * python.am, scripts.am, texinfos.am: Extend $(_am_installdirs).
+
+2001-02-26  Akim Demaille  <akim@epita.fr>
+
+       * tests/instdata2.test (libexec_DATA): Exercise more
+       possibilities.
+
+2001-02-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * header-vars.am (INSTALL_STRIP_FLAG): Remove (obsolete).
+
+2001-02-25  Tom Tromey  <tromey@redhat.com>
+
+       * tests/instdata2.test: Added `sbin_DATA' check.
+
+       * tests/Makefile.am (TESTS): Added subdircond.test.
+       * tests/subdircond.test: New file.
+       * automake.in (handle_gettext): Don't fail if SUBDIRS
+       conditionally defined.
+
+       * automake.in: Use IO::File.
+       (generate_makefile): Use IO::File.
+       (scan_texinfo_file): Likewise.
+       (handle_aclocal_m4): Likewise.
+       (scan_autoconf_traces): Likewise.
+       (scan_one_autoconf_file): Likewise.
+       (read_am_file): Likewise.
+       (file_contents): Likewise.
+       (create): Likewise.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_texinfo): Remove code handled by texinfos.am.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&transform): Also call &transform_cond on your
+       arguments.
+       (&handle_dist): Adjust.
+       (&handle_factored_dependencies): Uniq dependencies.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_gettext): Simplify redundant `if'.
+       Used &variable_value, don't read %contents directly.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($install_recursive): Remove, replaced with calls to
+       `&variable_defined ('SUBDIRS')'.
+       (&handle_dist, &handle_clean): Don't transform_cond SUBDIRS since...
+       (&file_contents): now does.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_man_pages): $found is dead.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       Internally just store the conditionals as space separated lists of
+       CONDITIONS (instead of @CONDITIONS@).
+
+       * automake.in (&conditional_true_when, &variable_conditions_sub):
+       Split conditions at spaces.
+       (&handle_dependencies, &variable_conditions_permutations): Don't
+       put @ around conditions.
+       (&variable_conditions_cmp): There are no @ to strip.
+       (&make_condition): New.
+       (&define_pretty_variable, &read_main_am_file, &read_am_file): Use
+       it.
+       (&read_main_am_file, &read_am_file): Stop playing with @ by hand.
+       Join @conditional_stack with spaces.
+       (&read_main_am_file): Adjust the output of variables.
+       Output `TRUE = true' under the condition `TEST' as `@TEST@TRUE =
+       true' and no longer `@TEST@TRUE = @TEST@true'.
+       (&variable_conditions_cmp): Rename as...
+       (&by_condition): this.
+       Sort in a human pleasant order.
+       Use it everywhere a human can see conditions.
+       (&variable_conditions_reduce): Don't sort conditions, that's
+       pointless.
+       * tests/cond.test, ctarget1.test, pluseq3.test: Strengthen.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: `my' the globals.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&initialize_per_input): %targets_conditionals is
+       new.
+       (&read_am_file): When slurping a rule, set the target related
+       variable, and no variable related variable.
+       (&file_contents): Likewise.
+       * tests/vartar.test, tests/ctarget1.test: New.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&variable_defined, &variable_value_as_list_worker):
+       If $VAR is effectively a variable, don't die if it's also a
+       target.
+       Plus some formatting changes.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Mying changes.
+       * Makefile.am (maintainer-check): Check the stability of the
+       number of uses of `local'.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Mying changes.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Mying changes.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Mying changes.
+       (&handle_tags): Fix a bug uncovered by the previous mying changes:
+       transform CONFIG into $config, not $xform.
+
+2001-02-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_texinfo, &handle_man_pages, &am_install_var):
+       Don't deal with install-data-am, install-exec-am and unstall-am.
+       (&initialize_per_input): Add them to %dependencies.
+       Remove %exec_dir_p since the *.am files are now in charge of it.
+       Remove @uninstall, @install_data, @install_exec.
+       (&handle_merge_targets): Adjust to these removals.
+       (&file_contents): Also &transform_cond for --no-installman and
+       --no-installinfo.
+       (&do_one_merge_target): Add some magic to install hooks on
+       %dependencies' targets.
+       (%required_targets): New.
+       (&handle_factored_dependencies): Output required targets.
+       * data.am, header.am, java.am, libs.am, lisp.am, ltlib.am,
+       * mans-vars.am, mans.am, progs.am, python.am, scripts.am,
+       * texinfos.am: Declare your dependencies on install-data-am,
+       install-exec-am and uninstall-am.
+       * tests/instdata2.test (incldata_HEADERS): New test.
+
+2001-02-24  Tom Tromey  <tromey@redhat.com>
+
+       * Makefile.am (amfiles): Added texibuild.am.
+       * texibuild.am: New file.
+       * tests/Makefile.am (TESTS): Added texinfo9.test.
+       * tests/texinfo9.test: New file.
+       * automake.in (handle_texinfo): Keep track of suffixes used.  Give
+       error if suffix unrecognized.  Removed extraneous newline.
+
+2001-02-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&am_install_var): Don't hook on the clean targets
+       and .PHONY.
+       * data-clean.am, java-clean.am, libs-clean.am, lisp-clean.am,
+       * ltlib-clean.am, progs-clean.am, python-clean.am, tags-clean.am:
+       Do it.
+
+2001-02-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Promote local `my' over `local'.
+
+2001-02-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Formatting and mying changes.
+
+2001-02-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Formatting and mying changes.
+
+2001-02-23  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_man_pages): Let install-man and
+       uninstall-man be handled by the dependency tracker.
+       (&initialize_per_input): Let %dependencies track them.
+       * mans.am: Add the needed hooks with the proper dependencies.
+
+2001-02-22  Pavel Roskin  <proski@gnu.org>
+
+       * tests/target-cflags.test: Don't use subshell to configure in
+       subdirectory. Typo fix - run `./foo', not `/foo'.
+
+2001-02-22  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Formatting and mying changes.
+
+2001-02-21  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (handle_dist): Introduce new variable to avoid extra
+       keys in %dist_dirs.  Fixes distdir.test.
+
+       * automake.in (handle_texinfo): Only remove suffixes we can
+       handle.
+
+       * tests/distdir.test: Check to make sure directory isn't made in
+       build directory.
+
+       * automake.in (handle_dist): Do nothing in Cygnus mode.
+
+2001-02-21  Pavel Roskin  <proski@gnu.org>
+
+       * header-vars.am: Remove tabs before variable definitions.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * tests/distdir.test (EXTRA_DIST): Use a finer pattern to avoid
+       false diagnostics.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&dist_cmp, &target_cmp): Be sure to return a
+       numeric value as required by Perl 5.6.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * dist-vars.am: Remove, merge into...
+       * distdir.am: this.
+       * automake.in (dirname, basename, backname): Move to the top of
+       the file so that prototypes are checked,
+       Use them without `&'.
+       (&handle_dist): Adjust.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&check_ambiguous_conditional, &read_main_am_file):
+       Use a uniform naming scheme.
+       (&quote_cond_val, &unquote_cond_val): Delete, dead code.
+       (&read_am_file): Fix conditional definition of backslash continued
+       items.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       Change the handling of conditionals: instead of using an ad-hoc
+       encoding to store a hash in a string, use hashes.
+
+       * automake.in (&conditional_dump): New.
+       (&check_ambiguous_conditional, &variable_defined)
+       (&variable_conditions_sub, &variable_value_as_list_worker)
+       (&define_variable, read_am_file, &read_main_am_file): Be sure to
+       handle `$conditional{$vars}' as a hash instead of a plain string.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&conditional_true_when): Modernize, simplify.
+       Warning: `$comp' is now private (my), while it used to be
+       `inherited' from a `local' elsewhere in the code.  AFAICT it was
+       wrong, but some dirty side effect might show up.
+       (&conditionals_true_when): New.
+       (&variable_conditions_sub, &variable_conditions_reduce): Use it.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($top_builddir): Remove, used in one place.
+       (&define_standard_variables): Adjust.
+       Move the definition of triplet variables into...
+       * header-vars.am: here.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&initialize_global_constants): Don't define $USAGE.
+       (&usage): Handle the former content of $USAGE.
+       Don't pretend autoconf cares about Makefile.in.
+       Classify the options.
+       (&handle_tests): Formatting and mying changes.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&handle_tests_dejagnu): Move the definition of a
+       default `site.exp' into...
+       * dejagnu.am (site.exp): here.
+       Use DOS compliant file names.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&dist_cmp): New.
+       (&handle_dist): Use it.
+       Promote `my' over `local'.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * dist.am: Remove, merge into...
+       * distdir.am: here.  Use the neat sed snippet for banners.
+       BTW, distcheck is phony.
+       * automake.in (&handle_dist_worker): Remove, merge into...
+       (&handle_dist): this.
+       (&file_contents): Strip leading new lines.
+       Be sure to end comments with new lines.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * distdir.am (GZIP_ENV): Define.
+       * automake.in (&handle_dist): Don't.
+       (&uniq): New.
+       (&handle_dist_worker, &am_install_var): Use it.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * distdir.am (distdir): Handle the DIST-TARGETS.
+       * automake.in (&handle_dist_worker): Don't.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents): Transform the global options (such
+       as CYGNUS).
+       (&handle_texinfo, &handle_dist_worker, &handle_tests_dejagnu): Don't.
+
+2001-02-21  Akim Demaille  <akim@epita.fr>
+
+       * distdir.am (distdir): Be sure to have permissive rights on its
+       contents.
+       (dist-all, dist-bzip2, dist-zip, dist-tarZ): New conditional
+       targets.
+       And BTW, all these guys are phony.
+       * automake.in (&handle_dist_worker): As its name doesn't indicate,
+       output distributions.
+       (&handle_dist): As its name doesn't indicate, don't.
+       (&initialize_global_constants): Don't define variables which
+       content is now handled by distdir.am.
+       But register `dist-all' as a factored target.
+       (&handle_factored_dependencies): Don't output empty targets.
+
+2001-02-20  Tom Tromey  <tromey@redhat.com>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Simplify m4_pattern_allow
+       invocation.
+
+2001-02-18  Tom Tromey  <tromey@redhat.com>
+
+       * m4/strip.m4 (AM_PROG_INSTALL_STRIP): Don't call AM_PROG_STRIP.
+       Set INSTALL_STRIP_PROGRAM_ENV to `$(STRIP)', not `$STRIP'.
+       (AM_PROG_STRIP): Commented out.
+
+2001-02-17  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * depcomp (gcc3): Protect against the compiler deleting
+       the dependency output file.
+
+2001-02-17  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (handle_merge_targets): Use double quotes around
+       setting of INSTALL_STRIP_PROGRAM.
+       * m4/strip.m4 (AM_PROG_INSTALL_STRIP): Set INSTALL_STRIP_PROGRAM
+       to absolute path at runtime.
+       (AM_PROG_STRIP): Don't explicitly test $STRIP.
+
+2001-01-28  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/strip.m4: New file.
+       * m4/Makefile.am (m4data_DATA): Add strip.m4.
+       * m4/init.m4: Call AM_PROG_INSTALL_STRIP.
+       * m4/missing.m4 (AM_AUX_DIR_EXPAND): New function.
+       * automake.in (handle_merge_targets): In the install-strip rule,
+       set INSTALL_PROGRAM to INSTALL_STRIP_PROGRAM, and INSTALL_PROGRAM_ENV
+       to INSTALL_STRIP_PROGRAM_ENV; don't use INSTALL_STRIP_FLAG.
+       * progs.am (install-@DIR@PROGRAMS): Adapt to use INSTALL_PROGRAM_ENV,
+       don't use INSTALL_STRIP_FLAG any longer.
+
+2001-02-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (scan_one_configure_file): Unquote AC_CONFIG_AUX_DIR's
+       argument.
+
+2001-02-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (unquote_m4_arg): New function.
+       (scan_one_configure_file): Call unquote_m4_arg on
+       AM_CONFIG_HEADER argument, so that AM_CONFIG_HEADER([foobar.h])
+       works.
+
+2001-02-15  Tom Tromey  <tromey@redhat.com>
+
+       * config.guess, config.sub: New versions from FSF.
+
+       * Makefile.am (WGET): New macro.
+       (FETCHFILES): New macro.
+       (fetch): New target.
+
+       * tests/subobj3.test: Exit with status 77 if gcc not found.
+       * tests/pr9.test: Exit with status 77 if gzip not found.
+       * tests/pr87.test: Exit with status 77 if gcc not found.
+       * tests/pr19.test: Exit with status 77 if gzip or gcc not found.
+       * tests/install2.test: Exit with status 77 if gzip not found.
+       * tests/exsource.test: Exit with status 77 if GNU make not found.
+       * tests/ansi3.test: Exit with status 77 if gcc not found.
+
+       * tests/target-cflags.test: Require GNU make.  Exit with status 77
+       if gcc or make not found.  Fixes PR automake/121.
+
+       * configure.in: Require Perl 5.005.
+       * automake.in: Require 5.005.
+
+       * automake.texi (Top): Conditionalize on `nottex', not `info'.
+       Fixes PR automake/122.
+
+2001-02-14  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (add_depend2): Only emit a given object rule once.
+       Fixes specflags6.test.
+
+2001-02-14  Richard Boulton  <richard@tartarus.org>
+
+       * tests/specflags6.test: New file.
+
+2001-02-14  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (A Shared Library): Mention -module.
+
+2001-02-13  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (do_one_merge_target): Always register $name and
+       $name-am as phony.
+
+       * automake.in (do_one_merge_target): Register `all' as phony
+       target.
+
+       * configure.in: Updated to 1.4e for cvs.
+
+2001-02-12  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in: Updated to 1.4d and released.
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Explicitly allow various AM_*
+       names through autoconf.
+
+       Fix for subdirbuiltsources.test:
+       * automake.in (initialize_per_input): [all_target] Initialize to
+       empty string.
+       (handle_merge_targets): Use all-redirect target to handle built
+       sources.
+       (do_one_merge_target): Don't generate all-redirect rule.
+
+2001-02-11  Peter Muir  <iyhi@yahoo.com>
+
+       * tests/subdirbuiltsources.test: New file.
+       * tests/Makefile.am (TESTS): Added new file.
+
+2001-02-10  Tom Tromey  <tromey@redhat.com>
+
+       * tests/condlib.test: New file.
+       * tests/Makefile.am (TESTS): Added new file.
+
+2001-02-10  Lars J. Aas  <larsa@sim.no>
+
+       * automake.in ($MACRO_PATTERN): Include '@' in name regex.
+       (&canonicalize): New. Includes '@' in canonical range.
+       (&check_canonical_spelling, &handle_programs, &handle_libraries,
+       &handle_ltlibraries, &handle_texinfo): Use &canonicalize.
+
+2001-02-10  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * automake.in (handle_configure): Revert part of
+       '2001-02-04  Kevin Ryde <user42@zip.com.au>'.  Don't
+       set CONFIG_COMMANDS explicitly.
+
+2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * depcomp (gcc3): Propagate exit code.
+
+2001-02-09  Lars J. Aas  <larsa@sim.no>
+
+       * header.am (install-@DIR@HEADERS): s,?!NOBASE?,?!BASE?, (typo)
+
+2001-02-09  Tom Tromey  <tromey@redhat.com>
+
+       Clean up maintainer-check warnings:
+       * Makefile.am (maintainer-check): Ignore comment lines in CDPATH
+       check.
+       * automake.in (handle_dist_worker): Removed redundant `my $xform'.
+
+2001-02-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&file_contents): Remove a dead branch.
+
+2001-02-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&transform): Use `my', not `local'.
+       (&transform_cond): New.
+       (&get_object_extension, &handle_texinfo, &handle_tags)
+       (&handle_dist_worker, &handle_dist, &add_depend2, &handle_clean)
+       (&handle_tests_dejagnu): Use it.
+       * texinfos.am, lisp.am, header.am, dist.am, distdir.am, depend2.am
+       * dejagnu.am, data.am, clean.am: Adjust to the new syntax.
+
+2001-02-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.in: Various formatting changes, and modernization of
+       Perl constructs.
+       (&backname): New.
+       (&handle_configure, define_standard_variables): Use it.
+
+2001-02-08  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (file_contents): Only add $actions if any are
+       found.  Fixes new failure in pr87.test.
+
+2001-02-08  Pavel Roskin  <proski@gnu.org>
+
+       * tests/pr87.test: Check foo/Makfile.in after it is created.
+
+2001-02-08  Tom Tromey  <tromey@redhat.com>
+
+       * tests/pr87.test: Added check for blank line after `.c.o' rule.
+       Report from Lars J. Aas.
+
+2001-02-07  Lars J. Aas  <larsa@sim.no>
+
+       * lisp.am (install-@DIR@LISP): Removed extra space.
+       * header.am (install-@DIR@HEADERS): Removed extra space.
+       * data.am (install-@DIR@DATA): Removed extra space.
+
+2001-02-07  Tom Tromey  <tromey@redhat.com>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Use \", not ".
+
+       * automake.in (handle_dependencies): Use _am_include, not
+       AMINCLUDE.
+       * tests/exsource.test: Use _am_include, not AMINCLUDE.
+       * m4/make.m4 (AM_MAKE_INCLUDE): Use _am_include, not AMINCLUDE.
+
+       * tests/Makefile.am (XFAIL_TESTS): Removed distcommon.test.
+
+       * tests/Makefile.am (EXTRA_DIST): Added ChangeLog-old.
+
+       * automake.in (handle_configure): Handle case where output file is
+       in subdir with no Makefile of its own.  Fixes remake3.test,
+       distcommon.test.
+
+2001-02-06  Pavel Roskin  <proski@gnu.org>
+
+       * automake.in (handle_dependencies): Rename AM_INCLUDE to
+       AMINCLUDE.
+       * m4/make.m4 (AM_MAKE_INCLUDE): Likewise.
+       * tests/exsource.test: Likewise.
+
+2001-02-06  Derek Price  <derek.price@openavenue.com>
+
+       * automake.in (handle_configure): Fix syntax error.
+
+2001-02-06  Akim Demaille  <akim@epita.fr>
+
+       * subdirs.am: This file is the exception: clean recursive targets
+       are called by the clean targets, not the clean-am targets.
+       Otherwise we have a circular dependency: clean -> clean-am ->
+       clean-recursive -> clean.
+       * automake.in (handle_clean): Bind `-local' targets to `-am'
+       targets, not top targets.
+       Don't declare -recursive dependencies of the clean targets:
+       `subdirs.am' did it.  Less hard coded knowledge, transfered
+       into...
+       * clean.am: here.
+
+2001-02-06  Akim Demaille  <akim@epita.fr>
+
+       Monstro unsplitable patch.
+
+       The aim is to remove hard coded knowledge about clean targets from
+       automake.in, leaving them in the *.am files.
+       In addition to the mechanic needed to factor some dependencies, it
+       appears some rules (most notably distclean and maintainer-clean)
+       need factored actions.  So first, be ready to catch factored
+       rules.
+
+       * automake.in (&file_contents): For the time being, use an extended
+       $RULE_PATTERN which is able to match any kind of rules, with or
+       without dependency, with or without actions.
+       Handle all the rules uniformly, storing in %actions the factored
+       actions.
+       (&flatten, &target_cmp): New.
+       (&handle_factored_dependencies): Output the %actions.
+       No longer special case `clean'.
+       Output the rules in alphabetical order, but keeping `.PHONY' last.
+
+       Now we must not use &push_phony_cleaners, which is doing all sort
+       of magic to push a bit of everything in all the clean targets.
+       The biggest problem being that, making a Cartesian product, it
+       requires many useless targets.  The `*.am' file know better.
+       But first, register the new factored rules.
+
+       * automake.in (&initialize_per_input): Include clean, mostlyclean,
+       maintainer-clean, distclean and their `*-am' counterpart in
+       %dependencies.
+       Initialize %actions.
+       (get_object_extension, handle_texinfo, handle_tags, handle_multilib)
+       handle_dependencies, handle_subdirs, handle_configure, handle_clean)
+       (handle_emacs_lisp, handle_python): Don't play with
+       &push_phony_cleaners nor &depend and `clean'.
+       * texinfos.am, texi-vers.am, tags-clean.am:
+       * subdirs.am,python-clean.am, multilib.am, lisp-clean.am:
+       * libtool.am, kr-extra.am, depend.am, compile.am, clean.am:
+       * clean-kr.am, clean-hdr.am: Do it.
+       Whenever a target is empty, just remove it, it will no longer be
+       called.
+
+       There is still some magic about clean to hard code.  But really,
+       that's the end of &do_one_clean_target.
+
+       * automake.in (&do_one_clean_target): Kaboom out.
+       (&handle_clean): Rewrite the magic code.
+       (&am_install_var): No longer use &push_phony_cleaners, nor depend
+       on `clean'.
+       (&push_phony_cleaners): Kaboom too.
+
+2001-02-06  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (do_one_clean_target): Don't hard code knowledge
+       about libtool, and maintainer-clean.
+       * clean.am, libtool.am: Handle these.
+
+2001-02-05  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (handle_texinfo): No longer hard code the clean
+       targets.
+       (texinfos.am): Include them.
+
+2001-02-05  Akim Demaille  <akim@epita.fr>
+
+       * Makefile.am (perl4-check): Remove, we now require Perl 5.
+       (maintainer-check): Don't be silent when you find a problem, and
+       actually, even specify the locations.
+       Also check that @_ is assigned to arrays.
+
+2001-02-05  Akim Demaille  <akim@epita.fr>
+
+       * m4/regex.m4: Use AC_LIBSOURCES.
+       * automake.in (scan_autoconf_traces): Trace AC_LIBSOURCE, not
+       _AC_LIBOBJ_DECL.
+
+2001-02-04  Tom Tromey  <tromey@redhat.com>
+
+       * m4/Makefile.am (m4data_DATA): Added make.m4.
+       * automake.in (handle_dependencies): Use @AM_INCLUDE@ to include
+       dependency files.
+       * m4/depend.m4 (AM_DEPNDENCIES): Require AM_MAKE_INCLUDE.
+       Copy depcomp to subdir.
+       * m4/make.m4: New file.
+
+2001-02-04  Pavel Roskin  <proski@gnu.org>
+
+       * automake.in (handle_dist_worker): Remove a line that is now
+       in distdir.am.
+
+2001-02-04  Kevin Ryde  <user42@zip.com.au>
+
+       * automake.in (handle_configure): Call config.status with empty
+       CONFIG_LINKS and CONFIG_COMMANDS when regenerating a file.
+
+2001-02-04  Tom Tromey  <tromey@redhat.com>
+
+       * depcomp (ddashmd): Removed case.
+       (sgi): Handle failure exit correctly
+       (aix): Likewise.  Also, add dummy `.h' targets.
+
+2001-02-04  Akim Demaille  <akim@epita.fr>
+
+       * distdir.am (distdir): New file, extracted from...
+       * automake.in (handle_dist_worker): here.
+       Adjust.
+
+2001-02-04  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (@clean): Remove, replaced by...
+       ($dependencies{'clean'}): this.
+       Use `&depend' instead of push'ing into @clean.
+       (handle_factored_dependencies): For the time being, skip 'clean'.
+       (do_one_clean_target): Don't ask for argument 1 and 4 as they are
+       always `clean', and `@clean'.
+
+2001-02-04  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (%dependencies): Don't be initialize globally for
+       all the files, but in...
+       (&initialize_per_input): here.
+       (&depend): New.
+       (@phony): Replace all occurrences with the corresponding &depend
+       invocation.
+
+2001-02-03  Tom Tromey  <tromey@redhat.com>
+
+       * header.am (install-@DIR@HEADERS): Use INSTALL_HEADER.
+       * header-vars.am (INSTALL_HEADER): New macro.
+
+       * automake.texi (Rebuilding): New node.
+
+-----
+
+Copyright (C) 2001-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
diff --git a/old/ChangeLog.02 b/old/ChangeLog.02
new file mode 100644 (file)
index 0000000..b99f757
--- /dev/null
@@ -0,0 +1,3225 @@
+2002-12-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/ChannelDefs.pm: New file.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add ChannelDefs.pm.
+       * automake.in: Move all "register_channel" calls to ChannelDefs.pm.
+       (prog_error, error, fatal, verb, switch_warning, parse_WARNINGS,
+       parse_warnings): Move to ChannelDefs.pm.
+       (usage): Move the warning list to Automake::ChannelDefs::usage
+       and call it.
+       (set_strictness): Move channel setings to
+       Automake::ChannelDefs::set_strictness and call it.
+
+       * automake.in (err): Rename as ...
+       (error): ... this.  Adjust all callers.
+       Suggested by H.Merijn Brand.
+
+2002-12-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/version7.test: Require GNU make.
+       Reported by Patrick Welche.
+
+2002-12-11  Brian Ford  <ford@vss.fsi.com>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Properly quote AC_PACKAGE_TARNAME
+       and AC_PACKAGE_VERSION.
+
+2002-12-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (ANSI): Since Autoconf 2.54, LIBOBJ and LTLIBOBJ
+       no longer have to be rewritten in order to support deansification.
+       (Tests): Link to the DejaGnu manual.
+       (Optional): Comment out FIXME.
+       (Complete, A Library, LIBOBJS): Use $(LIBOBJ) and $(ALLOCA)
+       instead of @LIBOBJ@ and @ALLOCA@.
+       (Sources): Typo.
+
+2002-12-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/texinfos.am (install-info-am, uninstall-info-am): Strip
+       directories from info filenames.
+       * tests/texinfo13.test: Make sure main.info gets installed
+       as $(infodir)/main.info.
+
+       * automake.in (handle_dist): Do not define %GETTEXT% if the user
+       is using $seen_gettext_external, this distcheck won't run
+       `./configure' with a meaningless `--with-included-gettext'.
+       * tests/gettext.test: Make sure distcheck uses --with-included-gettext.
+       * tests/gettext2.test: Make sure distcheck does not use
+       --with-included-gettext.
+
+       * m4/ccstdc.m4: Define am_cv_prog_cc_stdc for backward
+       compatibility and diagnose the use of AM_PROG_CC_STDC.
+       * automake.texi (Public macros) <AM_PROG_CC_STDC>: Remove
+       documentation, this macro is no longer supported.
+       Reported by Kevin Ryde.
+
+2002-12-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_languages): Test $objdir, not $srcdir, to
+       decide whether a _.c file is in a subdirectory and has to be
+       cleaned separately.
+       Reported by Kevin Ryde.
+
+       * tests/ansi10.test (liblib_a_LIBADD): Set ac_cv_prog_cc_stdc
+       not am_cv_prog_cc_stdc.
+
+       * automake.texi (Options): Some English nits from Eric Siegerman.
+       (Sources): Rewrite the introduction and move the example to ...
+       (Built sources example): ... this separate node.
+
+       * automake.in (variable_pretty_output): Strip trailing
+       backslashes in $val after $val is defined...
+       Reported by Kevin Ryde.
+
+       * tests/depcomp2.test: Pass CC='gcc' as an argument to ./configure
+       not in the environment.  Otherwise the test will fail when
+       run with ksh and VERBOSE=x.
+       Reported by Paul Jarc.
+
+       * tests/man2.test: Exercize `make uninstall', to test
+       the previous change.
+
+2002-12-03  Nicolas Joly  <njoly@pasteur.fr>
+
+       * lib/am/mans.am (uninstall-man%SECTION%): Change the extension of
+       the man pages being uninstalled, if needed.
+
+2002-12-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (macro_define): Do not strip escaped new lines
+       in Automake's +='ed variables.  We don't know whether it will
+       be pretty printed or not at this point.
+       (variable_pretty_output): Do this here.
+       * tests/pluseq10.test: New file.
+       * tests/Makefile.am (TESTS): Add pluseq10.test.
+       Reported by Ralf Corsepius.
+
+2002-12-02  Charles Wilson  <cwilson@ece.gatech.edu>
+
+       * tests/gnits3.test (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT):
+       Append $(EXEEXT) again.
+
+2002-12-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (Sources): Illustrate $(BUILT_SOURCES) with an
+       example.
+
+       * automake.texi (Options): Programs listed in
+       AM_INSTALLCHECK_STD_OPTIONS_EXEMPT should have $(EXEEXT) appended.
+       * tests/gnits3.test (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT):
+       Append $(EXEEXT).
+       Reported by Charles Wilson.
+
+2002-12-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (lang_c_finish): Do not fill de_ansi_files with
+       subdirectory informations for %libsources files.  A LIBOBJS source
+       is always in the current directory.  This reverts part of a change
+       from 2002-01-13.
+       * tests/ansi10.test: New file.
+       * tests/Makefile.am (TESTS): Add ansi10.test.
+
+       * automake.in (do_check_merge_target): Add missing space.
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: New upstream
+       versions.
+
+       * configure.in: Do not use missing while checking for Autoconf's
+       version, otherwise we won't notice that Autoconf isn't installed.
+       Augment the error message with a few questions to help users.
+
+2002-11-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/gnits2.test, tests/gnits3.test: Move the greps inside the
+       Makefile, so we can honor $(EXEEXT).  Otherwise these tests
+       fail under Cygwin.
+       Reported by Charles Wilson.
+
+       For PR automake/375 (Debian Bug #168671):
+       * automake.in (scan_texinfo_file): Erase all known index files, no
+       matter whether they are used at the top-level or not, because we
+       can never know if they are used in included files.  The remaining
+       macros we recognize at the top-level of a Texi document are
+       @defindex, @defcodeindex, @synindex, and @syncodeindex.
+       * tests/texinfo18.test: New file.
+       * tests/Makefile.am (TESTS): Add texinfo18.test.
+       Reported by Simon Richter.
+
+       * automake.in (scan_texinfo_file): Honor only the first @setfilename.
+       * tests/texinfo17.test: New file.
+       * tests/Makefile.am (TESTS): Add texinfo17.test.
+       Reported by Karl Berry.
+
+       For PR automake/357:
+       * automake.in (require_file_internal): Don't complain a file is "not
+       found" when it is a target.  Make sure "not found" files are otherwise
+       reported as error (they were reported as 'note').
+       * tests/distcommon3.test: Augment to test the above.
+       * tests/libobj12b.test: Touch ltmain.sh.
+       * tests/required2.test: Make sure Automake fails because ltmain.sh
+       has been removed.
+       Reported by Ronald Landheer.
+
+       * tests/texinfo3.test: Make sure we don't output single suffix
+       inference rules when building `.info'-less Info files (this
+       confuses Solaris make).  Run distcheck to make sure the rules
+       work.
+       * automake.in (output_texinfo_build_rules): Define GENERIC_INFO
+       and SOURCE_INFO.
+       * lib/am/texibuild.am (%SOURCE_SUFFIX%%DEST_SUFFIX%,
+       %DEST_PREFIX%%DEST_SUFFIX%): Honor GENERIC_INFO and SOURCE_INFO.
+
+2002-11-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/359:
+       * automake.in (do_check_merge_target): Make `check' dependent on
+       $(BUILT_SOURCES) if the variable is defined.  Run `check-am' or
+       `check-recursive' in a submake in this case.
+       * tests/check2.test, tests/check3.test: New files.
+       * tests/check.test: Make sure `check' depends on `check-am'.
+       * tests/Makefile.am (TESTS): Add check2.test and check3.test.
+
+       For PR automake/371 and PR automake/372:
+       * automake.in (rule_define): Honor inference rules with multiple
+       targets, and warn when they are used.
+       * tests/suffix11.test: New file.
+       * tests/Makefile.am (TESTS): Add suffix11.test.
+       Reported by Duncan Gibson.
+
+2002-11-28  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/370:
+       * automake.in (handle_languages): Don't prepend $U to $myext
+       since handle_single_transform_list now appends it to $obj.
+       Process the rule twice to handle deansified files in subdirectories.
+       Mark _.c files in subdirectories for cleaning.
+       (handle_single_transform_list): Append $U to $obj_sans_ext if
+       needed: before this dependencies were output foo.Po instead
+       of foo$U.Po.  Don't output explicit dependencies for renamed
+       objects or sources in sub-directories: we already output
+       a full compile rule for them.
+       (lang_c_finish): Don't always use the full filename in the
+       .c -> _.c rule.  This reverts part of my change of 2002-11-21.
+       * tests/ansi6.test, tests/ansi7.test: Make sure deansified
+       files are created in the right directory, and cleaned.
+       Reported by Kevin Ryde.
+
+2002-11-25  Jim Meyering  <jim@meyering.net>
+
+       * lib/install-sh: Put `$0:' at the beginning of each diagnostic,
+       not `install:'.
+
+2002-11-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (make_condition_string): New function.
+       (cond_stack_if, cond_stack_else, cond_stack_endif): Use it.
+       Suggested by Raja R Harinath.
+
+       * tests/texinfo13.test: Require texi2dvi-o.
+       * tests/defs.in: Handle required=texi2dvi-o.
+
+       * automake.in (lang_c_finish): Use $@ in the .c -> _.c rule.
+
+       * automake.in (handle_single_transform_list): Don't strip the
+       directory from $full_ansi.  This reverts my patch of 2002-10-16.
+       (lang_c_finish): Use the full filename, including the directory,
+       in the .c -> _.c rule.  These two files must reside in the same
+       directory.
+       * tests/ansi6.test: Also try to compile without ansi2knr.
+       Reported by Andreas Schwab
+
+2002-11-20  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Conditional.pm (strip): New function.
+       * lib/Automake/ConditionalSet.pm (sub_conditions): Use it.
+       Suggested by Raja R Harinath.
+
+       * automake.in (conditional_ambiguous_p, macro_define, rule_define,
+       require_variables): Use ->human instead of ->string.
+       * lib/Automake/Conditional.pm (string): Don't sort conditions, they
+       are already sorted.
+       (_to_human, human): New functions.
+       * lib/Automake/ConditionalSet.pm (human): New function.
+       * tests/cond27.test, tests/library3.test, tests/pluseq5.test,
+       tests/pluseq9.test: Adjust.
+
+       * lib/Automake/Conditional.pm [SYNOPSIS]: Fix not's description.
+       * lib/Automake/ConditionalSet.pm (sub_conditions): New function.
+       (multiply): Also accept an Automake::Conditional as argument.
+       * automake.in (variable_not_always_defined_in_cond): Simplify,
+       using only Automake::ConditionalSet methods.
+       Suggested by Raja R Harinath.
+
+       * lib/Automake/ConditionalSet.pm (conds): Use value() to simplify.
+       (invert): Rewrite as a product-of-sums to sum-of-products converter.
+       (_multiply, multiply): New functions.
+       * lib/Automake/Conditional.pm (not): New function.
+       * lib/Automake/tests/ConditionalSet.pl (test_invert): Update.
+       * automake.in (condition_negate): Move ...
+       * lib/Automake/Conditional.pm (negate_condition): ... here.
+       Suggested by Raja R Harinath.
+
+2002-11-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/ConditionalSet.pm (_simplify, simplify): New methods.
+       (true): Cache return value, so _simplify can use it.
+       * lib/Automake/tests/ConditionalSet.pl (test_simplify): New function.
+       * automake.in (variable_not_always_defined_in_cond): Return
+       a simplified ConditionalSet.
+       (macro_define, require_variables): Adjust.
+       * tests/Makefile.am (TEST): Add library3.test.
+       * tests/library3.test: New file.
+       * tests/pluseq9.test: Adjust.
+       Thanks to Raja R Harinath.
+
+2002-11-18  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/tests/Makefile.am, lib/Automake/tests/Conditional.pl,
+       lib/Automake/tests/ConditionalSet.pl: New files.
+       * lib/Automake/Makefile.am (SUBDIRS): New variable.
+       * configure.in: Output lib/Automake/tests/Makefile.
+       * lib/Automake/ConditionalSet.pm (by_conditions): Delete.
+       (conds): Don't use by_conditions, sort alphabetically, and
+       return sorted conds.
+       (string): Call ->string on each Conditional.
+       * tests/Makefile.am (TESTS): Remove cond12.test.
+       * tests/cond12.test: Remove, moved to
+       lib/Automake/tests/ConditionalSet.pl.
+       * tests/cond3.test: Adjust conditional ordering.
+
+2002-11-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/ConditionalSet.pm (_permutations_worker): Ignore TRUE
+       conditions.
+       (permutations): Treat empty permutations as TRUE.
+       (invert): Simplify.
+       Suggested by Raja R Harinath.
+
+2002-11-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (variable_defined): Thinko.
+       * lib/Automake/ConditionalSet.pm (true): Simplify.
+       (permutations): Fix documentation.
+       (new): Don't simplify conditional sets that contain TRUE.
+       Reported by Raja R Harinath.
+
+2002-11-14  Eric Blake  <ebb9@email.byu.edu>
+
+       * lib/am/depend2.am: Add missing fi in c.obj rules.
+
+2002-11-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_installdirs): Reindent to workaround a
+       parsing bug in Perl 5.6.0.
+       Reported by Patrick Welche.
+
+       * lib/Automake/Conditional.pm: Add reference to ConditionalSet.pm.
+       * lib/Automake/ConditionalSet.pm: New file.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add ConditionalSet.pm.
+       * automake.in: Use ConditionalSet.
+       (by_condition, invert_conditions, variable_conditions_permutations):
+       Remove, now defined as Automake::ConditionalSet::by_condition,
+       Automake::ConditionalSet::invert, and
+       Automake::ConditionalSet::permutations.
+       (variable_sorted_conditions): Remove.
+       (msg_var, msg_target handle_source_transform, handle_lib_objects,
+       conditional_ambiguous_p, variable_not_always_defined_in_cond,
+       macro_define, macro_dump, variable_defined,
+       variable_conditions_recursive, variable_conditions,
+       target_conditions, variable_conditionally_defined,
+       variable_conditions_recursive_sub,
+       check_variable_defined_unconditionally, variable_value_as_list,
+       variable_value_as_list_recursive_worker, variable_output,
+       variable_pretty_output, rule_define, append_exeext,
+       am_install_var, require_variables_for_macro): Adjust to
+       use ConditionalSet.
+
+2002-11-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (variable_conditions): Split into ...
+       (variable_conditions, variable_sorted_conditions): ... these
+       functions, where variable_sorted_conditions has the semantic of
+       the old variable_condition.
+       (target_conditions): New function.
+       (msg_var, handle_lib_objects_cond, check_ambiguous_conditional,
+       variable_not_always_defined_in_cond, macro_define,
+       variable_defined, check_variable_defined_unconditionally,
+       variable_conditions_recursive_sub,
+       variable_conditions_permutations, variable_value_as_list,
+       variable_value_as_list_recursive_worker, append_exeext,
+       am_install_var, require_variables_for_macro): Use variable_conditions.
+       (msg_target, rule_define): Use target_conditions.
+       (define_objects_from_sources, macro_define, macro_dump,
+       variable_pretty_output): Use variable_sorted_conditions.
+
+       * automake.texi (Conditional Sources): Fix the `+=' example.
+       Reported by Mike Castle.
+
+       * automake.in: Don't declare TRUE and FALSE, import them from
+       Automake::Conditional.
+       * lib/Automake/Conditional.pm (TRUE, FALSE): New constants.
+       (new): Simplify using FALSE.
+       (reduce): New function, moved from ...
+       * automake.in (variable_conditions_reduce): ... here.
+       (variable_conditions_recursive_sub, invert_conditions):
+       Adjust calls to Automake::Conditional::reduce.
+       * tests/cond12.test: Adjust to use Automake::Conditional.
+
+2002-11-09  Jim Meyering  <jim@meyering.net>
+
+       Make install-sh work even when names contain spaces or
+       certain (but not all) shell metachars.
+
+       * lib/install-sh: Remove lots of unnecessary quoting.
+       Add double quotes where necessary.
+       Write diagnostics to stderr, not stdout.
+       Normalize spacing in diagnostics: use one space (not two,
+       and not a TAB) after the leading `install:'.
+       Remove trailing white space.
+       Remove unnecessary curly braces.
+       If removing the destination fails, also try to move it aside.
+       Use `trap' more portably.
+       * tests/installsh2.test: New file, to test for the above fix.
+       * tests/Makefile.am (TESTS): Add installsh2.test.
+
+       * automake.texi: Fix some typos and a grammar nit.
+
+2002-11-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (switch_warning): Subject Perl warnings to -Werror.
+
+       * automake.texi (Extending): Complete unterminated sentence.
+       Reported by Mike Castle.
+
+2002-11-06  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&conditional_ambiguous_p): Don't forget to ->string
+       the Conditionals.
+
+2002-10-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (Dist): Fix the distcleancheck_listfiles example.
+       Reported by Karl Berry.
+
+2002-10-31  Akim Demaille  <akim@epita.fr>
+
+       * tests/location.test (Makefile.am): Strengthen.
+       * lib/Automake/Channels.pm (_print_message): Be sure to flush
+       $partial when the message is output.
+       Thanks to Alexandre Duret-Lutz.
+
+2002-10-31  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&read_am_file): Use $last_where to register the
+       _first_ line of a variable definition as location instead of the
+       last one.
+       (&conditional_ambiguous_p): Don't forget to ->string the
+       Conditionals.
+       (&rule_define): Likewise.
+       * tests/location.test: Adjust to exercise this.
+
+2002-10-25  Charles Wilson  <cwilson@ece.gatech.edu>
+
+       * tests/defs.in: Add explicit stanza for python -V.
+
+2002-10-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/ansi6.test, tests/ansi7.test: Set ac_cv_prog_cc_stdc instead
+       of am_cv_prog_cc_stdc.  This follows Akim's patch of 2002-10-09,
+       and reveals a bug in my patch of 2002-10-15.
+       * automake.in (handle_single_transform_list): Strip directory name
+       from $full_ansi if subdir-objects is not set.
+
+       * lib/texinfo.tex: New version from Texinfo 4.2b.
+
+2002-10-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_single_transform_list) <full_ansi>: New variable.
+       Use this to record correct dependencies about deansifiable files which
+       are using per-program flags or are in a subdirectory.
+       * tests/ansi9.test: New file.
+       * tests/Makefile.am (TESTS): Add ansi9.test.
+       Reported by Paul D. Smith
+
+2002-10-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (ac_defun_rx, ac_require_rx): If the macro name is
+       quoted, accept any character but `]'.  This makes it possible
+       to define macros such as `AC_LANG_PREPROC(Fortran 90)'.
+       (scan_m4_files): Quote $key in the regex.  Don't define $expr, it's
+       not used.
+       (add_file, scan_file): Adjust to the new definitions of $ac_defun_rx
+       and $ac_require_rx.
+       * tests/aclocal2.test: New file.
+       * tests/Makefile.am (TESTS): Add aclocal2.test.
+       Reported by Tamara L. Dahlgren and Tom Epperly.
+
+2002-10-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For Debian Bug#153697:
+       * lib/am/dejagnu.am (distclean-DEJAGNU): Remove $tool.sum and
+       $tool.log.
+       Suggested by Andrew Suffield.
+
+2002-10-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/369:
+       * lib/am/python.am: Lookup python files in build directory or
+       source directory.
+       From Mathias Doreille.
+       * tests/python3.test: New file.
+       * tests/Makefile.am (TESTS): Add python3.test.
+       * tests/defs: Handle `required=python'.
+
+       For PR automake/358:
+       * lib/am/texi-vers.am (%STAMPVTI%): Depend on configure instead of
+       configure.ac.
+       Suggested by Thien-Thi Nguyen.
+       * lib/am/configure.am ($(srcdir)/configure): Depends on
+       %CONFIGURE_DEPS%
+       * automake.in (@configure_deps): New array.
+       (scan_autoconf_traces): Scan for m4_include and m4_sinclude,
+       and fill @configure_deps.
+       (handle_configure): Substitute %CONFIGURE_DEPS%.
+       Distribute @configure_deps.
+       * tests/version7.texi: New file.
+       * tests/vtexi.test: Adjust.
+       * tests/Makefile.am (TESTS): Add version7.test.
+       * automake.texi (Dist): Mention that m4_include'd files
+       are distributed.
+
+2002-10-09  Akim Demaille  <akim@epita.fr>
+
+       * m4/ccstdc.m4 (AM_PROG_CC_STDC): Its definition is now empty:
+       the content of this macro was merged in AC_PROG_CC.
+       * m4/protos.m4 (AM_C_PROTOTYPES): Adjust to AC_C_PROTOTYPES.
+       * tests/depacl.test: Remove, it exercizes aclocal in a way that was
+       exercized by all the other tests since the test suite really uses
+       aclocal.
+       * tests/Makefile.am (TESTS): Remove depacl.test.
+
+2002-10-08  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/am/texibuild.am (%DEST_PREFIX%%DEST_SUFFIX%,
+       %DEST_PREFIX%.dvi, %DEST_PREFIX%.pdf): Use "makeinfo -o output
+       input", not "makeinfo input -o output", as the latter fails if
+       POSIXLY_CORRECT=1.
+       * lib/am/texinfos.am (.dvi.ps): Likewise for dvips.
+       * m4/depend.m4 (_AM_DEPENDENCIES): Likewise for $depcc.
+
+2002-10-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (file_contents_internal): Fix the relationship
+       regex flags, don't use `m'.
+
+       For Debian Bug#162583:
+       * automake.in (file_contents_internal): Simplify regex to
+       separate relationship from actions in rules.
+       Reported by Sam Hocevar.
+
+       * lib/Automake/Conditional.pm (has): Simplify.
+
+2002-10-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Conditional.pm: New file.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add Conditional.pm.
+       * automake.in: Use Automake::Conditional.
+       (TRUE, FALSE): New constants.
+       (%var_value, %var_location, %var_comment, %var_type, %var_owner,
+       %targets, %target_source, %target_name, %target_owner): Tie to
+       Tie::RefHash::Nestable.
+       (generate_makefile, process_option_list, handle_options,
+       handle_languages, handle_source_transform, handle_compile,
+       handle_libtool, handle_texinfo_helper, handle_dist, handle_subdirs,
+       scan_aclocal_m4, handle_emacs_lisp, handle_python,
+       scan_autoconf_files, variable_assert, define_variable,
+       define_pretty_variable, define_configure_variable, am_install_var,
+       push_dist_common): Use TRUE.
+       (define_objects_from_sources): Fix return value on
+       "recursively-defined" errors.
+       (conditional_string, conditional_true_when, conditional_is_redundant,
+       conditional_implies_any, make_conditions): Remove these functions,
+       obsoleted by Conditional.pm.
+       (cond_stack_if, cond_stack_else, cond_stack_endif): Return
+       an Automake::Conditional instance.
+       (by_condition, conditional_ambiguous_p,
+       variable_not_always_defined_in_cond, macro_define,
+       variable_conditions_recursive, variable_conditions_recursive_sub,
+       variable_conditions_reduce, invert_conditions,
+       variable_conditions_permutations,
+       check_variable_defined_unconditionally, variable_value_as_list,
+       variable_output, variable_pretty_output, rule_define,
+       read_am_file, file_contents_internal, require_variables): Adjust
+       to use Automake::Conditional objects.
+       (handle_footer): Get $(SUFFIXES) in 'all' conditions.
+       * tests/cond12.test: Adjust to use Automake::Conditional objects.
+
+2002-10-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_source_transform): If foo_SOURCES is defined
+       conditionally, create and use am__foo_SOURCES_DIST for distribution.
+       * tests/condd.test: Extend to check distributed files.
+       * tests/substref.test: Make sure we don't use such a variable when
+       it's not needed.
+       Reported by Marcus Brinkmann.
+
+2002-09-30  Ezra Peisach  <epeisach@MED-XTAL.BU.EDU>
+
+       * tests/defs.in: Run $MAKE --version -v.
+       * tests/dollar.test: Abort on ./defs failure.
+       * tests/lex5.test: Require GNUmake, not make.
+
+2002-09-30  Kevin Ryde  <user42@zip.com.au>
+
+       * m4/as.m4 (AM_PROG_AS): Let CCAS and CCASFLAGS default to the actual
+       values of $CC and $CFLAGS (as opposed to $(CC) and $(CFLAGS)), so
+       configure tests can use them.  Use AC_ARG_VAR instead of AC_SUBST.
+
+2002-09-30  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (require_variables): The fix introduced in 2002-09-19
+       is imcomplete.  Rewrite the conditional variable definition check
+       using &variable_not_always_defined_in_cond.
+       * tests/cond26.test, tests/cond27.test, tests/cond28.test: New file.
+       * tests/Makefile.am (TESTS): Add cond26.test, cond27.test, and
+       cond28.test.
+       Reported by Juergen Keil.
+
+       * automake.in (INTERNAL): Redefine as an empty location,
+       so that internal locations get displayed as `automake:'.
+
+       * lib/am/distdir.am (distdir): Create $dc_destdir right before
+       its use.
+       Reported by Akim Demaille.
+
+       Fix for PR automake/366:
+       * automake.in (handle_dist): Strip $(srcdir) and replace
+       $(top_srcdir) when computing DIST_COMMON directories.
+       * tests/include2.test: Use an obsolute $(srcdir), and check
+       for spurious directories in $(distdir)/sub.
+       * lib/am/distdir.am: Rewrite $(top_srcdir) as $(top_builddir).
+       Reported by Kevin Ryde.
+
+2002-09-29  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/Automake/Channels.pm (%_default_options): Add 'partial'.
+       (_format_message): Rename as ...
+       (_format_sub_message): ... this.
+       (_format_message): New function, extracted from ...
+       (_print_message): ... here.  Honor the 'partial' option.
+       ($partial): New variable.
+       * automake.in (handle_ltlibraries, check_ambiguous_conditional,
+       rule_define): Mark partial messages.
+
+       * automake.in (handle_ltlibraries): Record library locations in
+       %liblocations, and print the previous declaration on error.
+       * tests/libtool6.test: Check that the locations of the two
+       definitions are shown.
+
+       For PR automake/360:  Propagate more locations.
+       * automake.in (handle_programs): Adjust usage of am_install_var's
+       return value.  Pass on locations as context to file_contents.
+       (handle_libraries, handle_ltlibraries): Likewise.  Use locations
+       in the 'not a standard library name' diagnostic.
+       (handle_emacs_lisp, handle_python): Adjust usage of am_install_var's
+       return value.  Pass on locations to require_variables and
+       require_conf_file.
+       (check_ambiguous_conditional): Strip trailing dot in message.
+       (value_to_list): Add the $WHERE and $LOC_WANTED arguments.
+       (variable_value_as_list_recursive_worker): Add the $LOC_WANTED
+       argument.  Adjust calls to value_to_list.
+       (variable_value_as_list_recursive): Call
+       variable_value_as_list_recursive_worker with $LOC_WANTED = 0.
+       (variable_loc_and_value_as_list_recursive): New function,
+       variable_value_as_list_recursive_worker with $LOC_WANTED = 1.
+       (am_install_var): Use variable_loc_and_value_as_list_recursive,
+       and return a list of [$location, $value] pairs.
+       (rule_define): Use better locations in EXEEXT diagnostic.
+       (handle_source_transform, define_objects_from_sources): Add and use
+       a $WHERE argument.  Adjust callers.
+       * tests/stdlib.test: Grep the location in error message.
+       * tests/location.test: New file.
+       * tests/Makefile.am (TESTS): Add location.test.
+
+       * tests/exeext3.test: New file.
+       * tests/Makefile.am (TESTS): Add exeext3.test.
+       * automake.in (%target_name): New hash.
+       (initialize_per_input): Reset %target_name.
+       (rule_define): Fill %target_name, and use it to detect targets
+       which have been registered with key X but really are X$(EXEEXT).
+
+2002-09-28  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/360:
+       * lib/Automake/Location.pm: New file.
+       * lib/Automake/Channels.pm (_print_message): Display contexts
+       when given an Automake::Location.
+       (msg): Clone the location.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add Location.pm.
+       * tests/comment5.test: Make sure we display `included from' stacks.
+       * automake.in: Use Automake::Location.
+       (INTERNAL): New constant.
+       (file_contents, file_contents_internal, define_variable,
+       define_pretty_variable, read_am_file): Take $WHERE as argument.
+       Adjust all callers.
+       (scan_autoconf_traces) <$where>: Define as a Location, and use
+       it instead of $here.
+       (macro_define, rule_define): Make sure $WHERE is a location.
+       Clone it before updating $var_location or $targets.
+
+2002-09-27  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/mkinstalldirs: Reindent using `sh-indentation: 2'.
+       Suggested by Bruno Haible.
+
+       * Makefile.am (fetch, FETCHFILES): Don't fetch install-sh from
+       Autoconf.  Automake now has the master copy of install-sh and
+       mkinstalldirs.
+
+2002-09-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Bump version to 1.7a.
+
+       * NEWS, configure.ac: Version 1.7.
+
+2002-09-25  Art Haas  <ahaas@neosoft.com>
+
+       * automake.texi (Optional, Options, Distributing, ANSI,
+       API versioning): Spelling fixes and Texi tweaks.
+
+2002-09-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Check for 'tex'.
+       * tests/defs.in: Handle required=tex using configure's result.
+       Reported by Patrick Welche.
+
+       * Makefile.am (mdate-sh): Remove.
+       * mdate-sh: Delete.
+       Suggested by Akim Demaille.
+
+2002-09-25  Tom Tromey  <tromey@redhat.com>
+
+       * NEWS: Mention distuninstallcheck.
+       * automake.texi (Dist): Document new macro and target.
+       * lib/am/distdir.am (distuninstallcheck_listfiles): New macro.
+       (distuninstallcheck): New target.
+       (distcheck): Use distuninstallcheck.
+
+2002-09-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * tests/specflags7.test (true_CFLAGS, false_CFLAGS, false.c): Use
+       AM_TRUE, AM_FALSE to avoid bad interaction with Tru64 UNIX
+       <sys/types.h>.
+       * tests/specflags8.test (true_CPPFLAGS, false_CPPFLAGS, false.c):
+       Likewise.
+
+2002-09-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (output_texinfo_build_rules): Define %SOURCE_REAL%.
+       * lib/am/texibuild.am (%DEST_PREFIX%%DEST_SUFFIX%,
+       %DEST_PREFIX%.dvi, %DEST_PREFIX%.pdf): Add %SOURCE_REAL% as dependency.
+
+2002-09-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * lib/am/ltlib.am (clean-%DIR%LTLIBRARIES): Use $$dir in make
+       command.
+
+2002-09-24  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_single_transform_list): Revert the change
+       from 2002-09-22.  We need to erase .libs/ in the object directory
+       in addition to the library directory.
+
+       * tests/target-cflags.test: Build in `build/', not `obj/' because
+       `obj/' is special to BSD make.
+
+       * automake.in (read_am_file): Prefix included files with
+       $(top_srcdir) or $(srcdir) in DIST_COMMON.  Fixes
+       subdircond2.test, and subdircond3.test on OSF1.
+
+       * tests/defs.in (SHELL): Set it.
+
+       * lib/am/distdir.am (distcleancheck): Mention `in build directory'
+       in error message.
+
+2002-09-23  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/350:
+       * automake.in (handle_ltlibraries): Allow a library to be installed
+       many times in the same directory.
+       * tests/libtool5.test, tests/libtool6.test: New files.
+       * tests/Makefile.am (TESTS): Add libtool5.test and libtool6.test.
+
+2002-09-22  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_ltlibraries): Fill $libtool_clean_directories
+       here, with directories where .la files are built...
+       (handle_single_transform_list): ... not here with directories
+       where .lo files are built.
+       * tests/libtool3.test: Build a library in a subdirectory to
+       check for this.
+       Reported by Peter Gavin.
+
+       * tests/cond5.test: Give more time to automake.
+       Reported by Art Haas.
+
+       * configure.in: Really check for Autoconf 2.54.
+
+       * automake.texi (Yacc and Lex): ylwrap is used only when there is
+       more than one yacc or lex source file in a directory.
+
+       * automake.in (macro_define): Update a variable's location each
+       time its owner is updated.
+       * tests/gnuwarn.test: Append to CFLAGS to check for this.
+       Reported by Harlan Stenn.
+
+2002-09-20  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Bump version to 1.6g.
+
+       * configure.in, NEWS: Bump version to 1.6f.
+
+       * Makefile.am (INSTALL): New rules.
+
+2002-09-20  Mirko Streckenbach  <strecken@infosun.fmi.uni-passau.de>
+
+       For PR automake/363:
+       * m4/cond.m4: Fix AC_MSG_ERROR quoting.
+
+2002-09-19  Pavel Roskin  <proski@gnu.org>
+
+       * tests/warnopts.test: Fix random failures by removing Autoconf
+       cache directory when configure.in changes.  Use the code and the
+       comment from tests/asm.test.
+
+2002-09-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Program and Library Variables) <maude_LIBADD>:
+       Don't mention _LDADD for Libtool libraries.
+       Reported by Schleicher Ralph.
+
+       For PR automake/361:
+       * tests/suffix8.test: More explicit dependencies.
+       Reported by Paul Eggert.
+
+       * automake.in (rule_define): Don't diagnose duplicate user rules.
+       * tests/phony.test, tests/percent2.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+       Reported by Ralf Corsepius.
+
+       * automake.in (require_variables): Search variable definitions
+       in any condition implied by $cond.
+       * tests/cond25.test: New file.
+       * tests/Makefile.am (TESTS): Add cond25.test.
+       Reported by Pavel Roskin.
+
+       * tests/subobj9.test: Skip this test on configure errors.
+       Reported by Paul Eggert.
+
+2002-09-18  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Bump version to 1.6e.
+
+       * configure.in, NEWS: Bump version to 1.6d.
+       * tests/libobj12.test, tests/libobj12b.test: Include ./defs,
+       not $srcdir/defs.
+       * tests/suffix8.test: Typo.
+
+       * automake.in (check_ambiguous_conditional, rule_define): Issue
+       syntactic warnings, not errors.
+       (macro_define): Don't adjust the owner of a variable which is being
+       appended in a condition different from its definition.
+       (variable_output, variable_pretty_output): Make sure the
+       requested condition exists.
+
+       For PR automake/353: fill %var_location, %var_comment,
+       %var_type, %var_owner for each condition.
+       * automake.in (msg_cond_var): New function.
+       (msg_var): Use it.
+       (generate_makefile, process_option_list, handle_languages,
+       handle_lib_objects_cond, handle_compile, handle_libtool,
+       handle_ltlibraries, handle_texinfo_helper, handle_tests,
+       handle_emacs_lisp, handle_python, macro_define, macro_delete,
+       macro_dump, variable_assert, variable_output,
+       variable_pretty_output, read_am_file, read_main_am_file,
+       file_contents_internal, am_primary_prefixes,
+       require_variables_for_macro): Adjust accesses to %var_location,
+       %var_comment, %var_type, %var_owner.
+       (append_comments, require_file_with_macro,
+       require_conf_file_with_macro, require_variables): Add the
+       $cond argument.
+       * tests/comment7.test: New file.
+       * tests/Makefile.am (TESTS): Add comment7.test.
+
+2002-09-17  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/353:
+       * automake.in (check_ambiguous_conditional): Display locations for
+       the two definitions of the ambiguous variable.  Show the macro_dump
+       output in --verbose only.  Accept $where as a third argument,
+       (macro_define): Pass $where.
+
+       * automake.in (handle_programs): Ooops.  Really add LDADD
+       objects into _DEPENDENCIES.
+       * tests/libobj12.test: Check for it.
+
+2002-09-17  Assar Westerlund  <assar@kth.se>
+           Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_programs, handle_libraries,
+       handle_ltlibraries): Maintain $seen_libobjs on a
+       per-program/per-library basis, instead of globally to each
+       of these functions.
+       * tests/libobj12.test, tests/libobj12b.test: New files.
+       * tests/Makefile.am (TESTS): Add libobj12.test and libobj12b.test.
+
+2002-09-17  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs.in (configure.in): Don't call AC_PROG_INSTALL and
+       AC_PROG_MAKE_SET.
+
+       * lib/config.guess, lib/config.sub, lib/INSTALL,
+       lib/Automate/Struct.pm: New upstream version.
+       * Makefile.am (mdate-sh): New rule.
+       (FETCHFILES): Add Automate/Struct.pm.
+       (fetch): Get Automate/Struct.pm.
+       (AUTOMAKESOURCES, CLEANFILES): New macros.
+       (EXTRA_DIST, TAGS_FILES): Use them.
+       * install-sh, mkinstalldirs, missing: Delete.
+
+       * automake.in: Rename the 'unused' channel to 'syntax'.
+       (variable_defined): Issue a warning instead of an error
+       for variable-is-a-target conditions.
+       * automake.texi (Invoking Automake): Rename the 'unused'
+       channel to 'syntax'.
+       * tests/warnopts.test: Likewise.
+
+       * tests/suffix8.test: Add explicit dependencies.
+       * tests/texinfo13.test, tests/texinfo16.test: Require tex.
+
+2002-09-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in, m4/init.m4, NEWS: Require Autoconf 2.54.
+
+       * automake.in (variable_defined): Thinko in $cond handling.
+
+2002-09-15  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/Automake/Channels.pm: Don't use 'our', as it isn't portable
+       to Perl 5.00503.
+
+       * Makefile.am (maintainer-check): Don't use egrep.
+
+2002-09-15  Tom Tromey  <tromey@redhat.com>
+
+       * tests/subdircond3.test: Pass flags to make in environment.
+       * tests/subdircond2.test: Pass flags to make in environment.
+       * Makefile.am (maintainer-check): Add a new check for @...@
+       substitutions.  Updated correct number of diffs between source and
+       build trees.
+
+       * configure.in (aclocal, automake): Don't create.
+       * automake.in ($prefix): Don't define.
+       * aclocal.in ($prefix): Don't define.
+       * Makefile.am (do_subst): New macro.
+       (automake): New target.
+       (aclocal): Likewise.
+
+2002-09-15  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * aclocal.in, automake.in: Requote each "@var@" as '@var@'.
+
+2002-09-14  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/Makefile.am (XFAIL_TESTS): Remove specflags7.test and
+       specflags8.test.
+
+2002-09-13  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Building ctags and etags): Rename and adjust as ...
+       (Building true and false): ... this.
+       * tests/targetclash.test: New file.
+       * tests/specflags7.test, tests/specflags8.test: Adjust to build
+       true and false.
+       * tests/Makefile.am (TESTS): Add targetclash.test.
+
+       Diagnose target clashes, for PR automake/344:
+       * automake.in (%targets): Record conditionals for definitions.
+       (%target_conditional): Remove (obsoleted by %targets).
+       (%target_source, %target_owner): New hashes.
+       (TARGET_AUTOMAKE, TARGET_USER): New constants.
+       (initialize_per_input): Adjust to reset new variables.
+       (err_cond_target, msg_cond_target): New functions.
+       (msg_target): Adjust usage of %targets.
+       (conditional_ambiguous_p): Take a list of conditional to check
+       as a third parameter, so this can be used for other things that
+       variables.
+       (handle_lib_objects_cond): Adjust conditional_ambiguous_p usage.
+       (variable_defined): Restrict the target-with-same-name check
+       to user targets.
+       (rule_define): Add the $SOURCE argument, and take $OWNER instead
+       of $IS_AM.  Diagnose target clashes (including ambugious
+       conditionals).  Return a list of conditions where the rule should
+       be defined instead of a boolean.  Fill %target_source and
+       %target_owner.
+       (target_define): Use `exists', not `defined'.
+       (read_am_file): Adjust the call to rule_define.
+       (file_contents_internal): Add more FIXMEs.  Simplify my moving
+       and documenting the "define rules in undefined conditions" to
+       rule_define.
+       * tests/Makefile.am (XFAIL_TESTS): Add specflags7.test and
+       specflags8.test.
+
+2002-09-12  Akim Demaille  <akim@epita.fr>
+
+       * aclocal.in: Prototype all the functions.
+       Add `(C)' to Copyrights.
+       (&add_file): Strip the comments before checking for `AC_REQUIRE'.
+       Remove Perl 4 hacks, since anyway we require 5.005 via General.pm.
+
+2002-09-11  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/texinfos.am (TEXI2PDF): Pass --batch to texi2dvi, since
+       it was already supported when --pdf support was added.
+
+2002-09-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/Automake/Channels.pm (_default_options): Add `backtrace'.
+       (msg): Die with backtrace if requested.
+       * automake.in: Enable `backtrace' on the `automake' channel.
+
+       * automake.in (process_option_list): Mention `Automake' in
+       version-mismatch error.
+       Suggested by Akim Demaille.
+
+       * tests/Makefile.am ($(TESTS)): Replace by ...
+       (check_SCRIPTS): ... this.
+       Suggested by Raja R Harinath.
+
+2002-09-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/Makefile.am ($(TESTS)): New, depends on defs.
+       (BUILT_SOURCES): Remove (useless because of PR/359).
+
+       * m4/init.m4: Execute cygpath in a sub-shell.
+
+2002-09-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (macro_define): Warn about `:=' assignments.
+       * tests/colneq.test: Check for this warning.
+
+       * automake.texi (Include): Fragments are always distributed.
+       * NEWS: Likewise.
+
+2002-09-08  Andreas Buening  <andreas.buening@nexgo.de>
+
+       Fix for automake/334:
+       * lib/am/depend2.am: Replaced "cygpath -w" by $(CYGPATH_W).
+       * m4/init.m4: New make variable CYGPATH_W.
+
+2002-09-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Check for EGREP and FGREP.  Create tests/defs.
+       * tests/defs: Rename as ...
+       * tests/defs.in: ... this.  Add copyright notice.  Use configure's
+       values for PERL, EGREP, and FGREP.  Be verbose if $srcdir is unset.
+       * tests/Makefile.am (EXTRA_DIST): Remove defs.
+       (BUILT_SOURCES): New.
+       * tests/acinclude.test, tests/aclibobj.test, tests/aclocal.test,
+       tests/aclocali.test, tests/aclocali1.test, tests/aclocalii.test,
+       tests/acoutnoq.test, tests/acoutput.test, tests/acoutput2.test,
+       tests/acoutqnl.test, tests/acouttbs.test, tests/acouttbs2.test,
+       tests/acsilent.test, tests/acsubst.test, tests/acsubst2.test,
+       tests/all.test, tests/alpha.test, tests/amassign.test,
+       tests/ammissing.test, tests/ansi.test, tests/ansi2.test,
+       tests/ansi3.test, tests/ansi4.test, tests/ansi5.test,
+       tests/ansi6.test, tests/ansi7.test, tests/ansi8.test,
+       tests/ar.test, tests/asm.test, tests/autoheader.test,
+       tests/autoheader2.test, tests/auxdir.test, tests/auxdir2.test,
+       tests/backsl.test, tests/backsl2.test, tests/badline.test,
+       tests/badopt.test, tests/badprog.test, tests/block.test,
+       tests/canon.test, tests/canon2.test, tests/canon3.test,
+       tests/canon4.test, tests/canon5.test, tests/ccnoco.test,
+       tests/check.test, tests/checkall.test, tests/clean.test,
+       tests/colneq.test, tests/colneq2.test, tests/colon.test,
+       tests/colon2.test, tests/colon3.test, tests/colon4.test,
+       tests/colon5.test, tests/colon6.test, tests/colon7.test,
+       tests/comment.test, tests/comment2.test, tests/comment3.test,
+       tests/comment4.test, tests/comment5.test, tests/comment6.test,
+       tests/compile_f_c_cxx.test, tests/cond.test, tests/cond10.test,
+       tests/cond11.test, tests/cond12.test, tests/cond13.test,
+       tests/cond14.test, tests/cond15.test, tests/cond16.test,
+       tests/cond17.test, tests/cond18.test, tests/cond19.test,
+       tests/cond2.test, tests/cond20.test, tests/cond21.test,
+       tests/cond22.test, tests/cond23.test, tests/cond24.test,
+       tests/cond3.test, tests/cond4.test, tests/cond5.test,
+       tests/cond6.test, tests/cond7.test, tests/cond8.test,
+       tests/cond9.test, tests/condd.test, tests/condincl.test,
+       tests/condincl2.test, tests/condlib.test, tests/condman.test,
+       tests/condman2.test, tests/conf2.test, tests/confdeps.test,
+       tests/confdist.test, tests/confh.test, tests/confh4.test,
+       tests/config.test, tests/confincl.test, tests/confsub.test,
+       tests/confvar.test, tests/confvar2.test, tests/copy.test,
+       tests/ctarget1.test, tests/cxx.test, tests/cxx2.test,
+       tests/cxxansi.test, tests/cxxcpp.test, tests/cxxlibobj.test,
+       tests/cxxlink.test, tests/cxxnoc.test, tests/cxxo.test,
+       tests/cygwin32.test, tests/dash.test, tests/defun.test,
+       tests/defun2.test, tests/dejagnu.test, tests/dejagnu2.test,
+       tests/depacl.test, tests/depacl2.test, tests/depcomp.test,
+       tests/depcomp2.test, tests/depdist.test, tests/depend.test,
+       tests/depend2.test, tests/depend3.test, tests/depend4.test,
+       tests/destdir.test, tests/dirforbid.test, tests/dirlist.test,
+       tests/discover.test, tests/distcommon.test,
+       tests/distcommon2.test, tests/distcommon3.test,
+       tests/distdir.test, tests/distname.test, tests/dollar.test,
+       tests/double.test, tests/dup2.test, tests/dup3.test,
+       tests/else.test, tests/empty.test, tests/empty2.test,
+       tests/empty3.test, tests/empty4.test, tests/error.test,
+       tests/exdir.test, tests/exdir2.test, tests/exeext.test,
+       tests/exeext2.test, tests/exsource.test, tests/ext.test,
+       tests/ext2.test, tests/extra.test, tests/extra2.test,
+       tests/extra3.test, tests/extra4.test, tests/extra5.test,
+       tests/extra6.test, tests/extra7.test, tests/flibs.test,
+       tests/fnoc.test, tests/fo.test, tests/fonly.test,
+       tests/fortdep.test, tests/fpinst2.test, tests/fpinstall.test,
+       tests/gcj.test, tests/gcj2.test, tests/gcj3.test, tests/gcj4.test,
+       tests/gcj5.test, tests/getopt.test, tests/gettext.test,
+       tests/gettext2.test, tests/gnits.test, tests/gnits2.test,
+       tests/gnits3.test, tests/gnuwarn.test, tests/header.test,
+       tests/implicit.test, tests/include.test, tests/include2.test,
+       tests/info.test, tests/insh.test, tests/insh2.test,
+       tests/install.test, tests/install2.test, tests/installdir.test,
+       tests/installsh.test, tests/instdata.test, tests/instdata2.test,
+       tests/instexec.test, tests/insthook.test, tests/instman.test,
+       tests/instman2.test, tests/interp.test, tests/interp2.test,
+       tests/java.test, tests/java2.test, tests/javaprim.test,
+       tests/javasubst.test, tests/ldadd.test, tests/ldflags.test,
+       tests/lex.test, tests/lex2.test, tests/lex3.test, tests/lex4.test,
+       tests/lex5.test, tests/libobj10.test, tests/libobj11.test,
+       tests/libobj2.test, tests/libobj3.test, tests/libobj4.test,
+       tests/libobj5.test, tests/libobj7.test, tests/libobj8.test,
+       tests/library.test, tests/library2.test, tests/libtool.test,
+       tests/libtool2.test, tests/libtool3.test, tests/libtool4.test,
+       tests/link_c_cxx.test, tests/link_dist.test, tests/link_f_c.test,
+       tests/link_f_c_cxx.test, tests/link_f_cxx.test,
+       tests/link_f_only.test, tests/lisp.test, tests/lisp2.test,
+       tests/listval.test, tests/ltdeps.test, tests/ltlibobjs.test,
+       tests/maintclean.test, tests/make.test, tests/makevars.test,
+       tests/man.test, tests/man2.test, tests/mclean.test,
+       tests/mdate.test, tests/mdate2.test, tests/mdate3.test,
+       tests/mdate4.test, tests/mkinst2.test, tests/mkinstall.test,
+       tests/nobase.test, tests/nodefine.test, tests/nodefine2.test,
+       tests/nodep.test, tests/nodepcomp.test, tests/nodist.test,
+       tests/nodist2.test, tests/noinst.test, tests/noinstdir.test,
+       tests/nolink.test, tests/nostdinc.test, tests/number.test,
+       tests/obsolete.test, tests/order.test, tests/outdir.test,
+       tests/output.test, tests/output2.test, tests/output3.test,
+       tests/output4.test, tests/output5.test, tests/package.test,
+       tests/parse.test, tests/percent.test, tests/pluseq.test,
+       tests/pluseq2.test, tests/pluseq3.test, tests/pluseq4.test,
+       tests/pluseq5.test, tests/pluseq6.test, tests/pluseq7.test,
+       tests/pluseq8.test, tests/pluseq9.test, tests/postproc.test,
+       tests/ppf77.test, tests/pr2.test, tests/pr204.test,
+       tests/pr211.test, tests/pr220.test, tests/pr224.test,
+       tests/pr229.test, tests/pr243.test, tests/pr266.test,
+       tests/pr279-2.test, tests/pr279.test, tests/pr287.test,
+       tests/pr300-lib.test, tests/pr300-ltlib.test,
+       tests/pr300-prog.test, tests/pr307.test, tests/pr72.test,
+       tests/pr87.test, tests/pr9.test, tests/prefix.test,
+       tests/primary.test, tests/primary2.test, tests/proginst.test,
+       tests/python.test, tests/python2.test, tests/ranlib.test,
+       tests/recurs.test, tests/recurs2.test, tests/remake.test,
+       tests/remake2.test, tests/remake3.test, tests/req.test,
+       tests/required.test, tests/required2.test, tests/rulepat.test,
+       tests/scripts.test, tests/seenc.test, tests/sinclude.test,
+       tests/sourcesub.test, tests/sourcesub2.test, tests/space.test,
+       tests/specflags.test, tests/specflags2.test,
+       tests/specflags3.test, tests/specflags6.test,
+       tests/specflags7.test, tests/specflags8.test,
+       tests/specflags9.test, tests/spell.test, tests/spell2.test,
+       tests/spell3.test, tests/spelling.test, tests/stamph.test,
+       tests/stamph2.test, tests/stdlib.test, tests/strip.test,
+       tests/subdir.test, tests/subdir2.test, tests/subdir3.test,
+       tests/subdir4.test, tests/subdir5.test, tests/subdir6.test,
+       tests/subdir7.test, tests/subdirbuiltsources.test,
+       tests/subdircond.test, tests/subdircond2.test,
+       tests/subdircond3.test, tests/subobj.test, tests/subobj2.test,
+       tests/subobj3.test, tests/subobj4.test, tests/subobj5.test,
+       tests/subobj6.test, tests/subobj7.test, tests/subobj8.test,
+       tests/subobj9.test, tests/subobjname.test, tests/subpkg.test,
+       tests/subst.test, tests/substref.test, tests/substtarg.test,
+       tests/suffix.test, tests/suffix10.test, tests/suffix2.test,
+       tests/suffix3.test, tests/suffix4.test, tests/suffix5.test,
+       tests/suffix6.test, tests/suffix7.test, tests/suffix8.test,
+       tests/suffix9.test, tests/symlink.test, tests/symlink2.test,
+       tests/symlink3.test, tests/syntax.test, tests/tags.test,
+       tests/tagsub.test, tests/target-cflags.test, tests/target.test,
+       tests/texinfo.test, tests/texinfo10.test, tests/texinfo13.test,
+       tests/texinfo16.test, tests/texinfo2.test, tests/texinfo3.test,
+       tests/texinfo4.test, tests/texinfo5.test, tests/texinfo6.test,
+       tests/texinfo7.test, tests/texinfo8.test, tests/texinfo9.test,
+       tests/transform.test, tests/unused.test, tests/vars.test,
+       tests/vars2.test, tests/vars3.test, tests/vartar.test,
+       tests/version.test, tests/version2.test, tests/version3.test,
+       tests/version4.test, tests/version5.test, tests/version6.test,
+       tests/vpath.test, tests/vtexi.test, tests/vtexi2.test,
+       tests/warnopts.test, tests/werror.test, tests/whoami.test,
+       tests/xsource.test, tests/yacc.test, tests/yacc2.test,
+       tests/yacc3.test, tests/yacc4.test, tests/yacc5.test,
+       tests/yacc6.test, tests/yacc7.test, tests/yacc8.test,
+       tests/yaccpp.test, tests/yaccvpath.test: Add copyright notice.
+       Source ./defs instead of $srcdir/defs.
+
+2002-09-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/distdir.am (distcheck): Strip $(srcdir) prefix on
+       distributed files, to workaround Sun make VPATH munging.
+       This fixes subdircond2.test, subdircond3.test, and subpkg.test
+       on Solaris.
+       * tests/extra6.test, tests/lex3.test, tests/pr87.test,
+       tests/pr9.test, tests/target-cflags.test, tests/texinfo13.test,
+       tests/texinfo16.test, tests/yacc7.test, tests/yaccvpath.test:
+       Don't require GNU make.
+
+       * lib/am/distdir.am (distcheck): Add missing `;'.
+
+       * lib/am/scripts.am (installcheck-%DIR%SCRIPTS): Account for
+       Sun make rewriting rules in VPATH builds.  (Fixes gnits3.test.)
+       * lib/am/progs.am (installcheck-%DIR%PROGRAMS): Likewise.
+
+2002-09-04  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For automake/354:
+       * lib/am/texibuild.am (%SOURCE_SUFFIX%.dvi, %SOURCE_SUFFIX%.pdf):
+       Don't use `-o' unless necessary.
+
+2002-08-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/343:
+       * automake.in (scan_texinfo_file) <clean_suffixes>: Remove dvi, ps,
+       and pdf.
+       (output_texinfo_build_rules): Define %DIRSTAMP% when processing
+       texibuild.am.  Return $dirstamp and a list of files to clean.
+       (handle_texinfo_helper): Process texi-vers.am after the call to
+       output_texinfo_build_rules and use $dirstamp to define %DIRSTAMP%.
+       * lib/am/texi-vers.am (%STAMPVTI%): Build %DIRSTAMP% if needed.
+       * lib/am/texibuild.am (%DEST_PREFIX%%DEST_SUFFIX%): Likewise.
+       (%DEST_PREFIX%.dvi, %DEST_PREFIX%.pdf): Depend on %DIRSTAMP%.
+       * tests/texinfo13.test: New file.
+       * tests/Makefile.am (TESTS): Add texinfo13.test.
+       * lib/am/texinfos.am (install-info-am, dist-info): Looks for
+       info files in build or source directory.
+       This completes the change from 2002-07-30 (for PR automake/168).
+
+2002-08-24  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (CLEAN, MAINTAINER_CLEAN): New constants.
+       (maintainer_clean_files): Replace by ...
+       (clean_files): ... this new variable.
+       (initialize_per_input, lang_yacc_target_hook,
+       lang_lex_target_hook): Use %clean_files instead of
+       @maintainer_clean_files.
+       (handle_clean): Rewrite, using %clean_files.
+       (require_build_directory_maybe): Use %clean_files instead
+       of %compile_clean_files.  This allows using
+       &require_build_directory_maybe for non-compiling targets.
+       * lib/am/clean.am (mostlyclean-generic, clean-generic,
+       distclean-generic, maintainer-clean-generic): Rewrite using
+       %MOSTLYCLEAN_RMS%, %CLEAN_RMS%, %DISTCLEAN_RMS%, and
+       %MAINTAINER_CLEAN_RMS%.
+
+       For Debian Bug#157778:
+       * m4/python.m4: Fix output of `python' in checking messages
+       when no version of Python is required.
+
+2002-08-23  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * lib/am/depend2.am (%EXT%.lo): Fix typo.  Rename the file that
+       was generated by gcc -MF.
+
+2002-08-23  Pavel Roskin  <proski@gnu.org>
+
+       * lib/am/progs.am: Exit in case of install failure, otherwise
+       it is ignored on Cygwin because of the surrounding "for" loop.
+
+2002-08-23  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Top level): More words about conditional
+       subdirectories.  Don't mention AC_PROG_MAKE_SET.
+       * tests/subdircond2.test, tests/subdircond3.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+
+       For PR automake/347:
+       * automake.in (MACRO_PATTERN): Allow `.' in variable names.
+       (scan_variable_expansions, check_variable_expansions): New functions.
+       (macro_define): Call check_variable_expansions.
+       (read_am_file): Likewise, when outputing rules.
+       (variable_conditions_recursive_sub): Simplify using
+       scan_variable_expansions.
+       * tests/vars3.test: New file.
+       * tests/Makefile.am (TESTS): Add vars3.test.
+       * tests/colneq.test: Use -Wno-portability.
+
+       * lib/Automake/Channels.pm (buffering, backlog): New variables.
+       (buffer_messages, flush_messages): New functions.
+       (@EXPORT): Add buffer_messages and flush_messages.
+       * automake.in (generate_makefile): Call buffer_messages and
+       flush_messages to buffer warnings until AUTOMAKE_OPTIONS has
+       been read.
+
+       * automake.in (read_am_file): Fix computation of path to
+       included file when $(top_srcdir) is not used.
+       * tests/include2.test: Augment.
+
+2002-08-22  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (set_strictness): Never enable 'portability'
+       warnings for now.
+       (usage): Adjust `-Wportability' doc.
+       * automake.texi (Invoking Automake): Likewise.
+       Suggested by Ralf Corsepius.
+
+2002-08-21  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/ltlib.am (clean-%DIR%LTLIBRARIES): Fix cleanup of
+       so_location files in current directory.
+
+       Fix for PR automake/346:
+       * automake.texi (Optional): Supress the documentation for
+       AC_PATH_XTRA, AC_FUNC_ALLOCA, AC_FUNC_ERROR_AT_LINE, AC_FUNC_FNMATCH,
+       AC_FUNC_GETLOADAVG, AC_FUNC_MEMCMP, AC_FUNC_MKTIME, AC_FUNC_OBSTACK,
+       AC_FUNC_STRTOD, AC_REPLACE_FUNCS, AC_REPLACE_GNU_GETOPT,
+       AC_STRUCT_ST_BLOCKS, AM_WITH_REGEX, AC_CHECK_TOOL, AC_CHECK_PROG,
+       AC_CHECK_PROGS, AC_PATH_PROG, and AC_PATH_PROGS.  Augment the
+       documentation of AC_LIBSOURCE and AC_SUBST to explain this
+       applies to any macro that calls them.
+
+2002-08-19  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/348:
+       * tests/Makefile.am (TESTS): Added include2.test.
+       * tests/include2.test: New file.
+       * tests/include.test: Check to make sure include file is
+       distributed.
+       * automake.in (read_am_file): Distribute included files.
+
+2002-08-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/345:
+       * tests/defs: Add support for required=non-root, stolen
+       from fileutils' test suite.
+       * tests/destdir.test: Use required=non-root.
+
+       * tests/vtexi.test: Fix spurious failure introduced on 2002-07-30.
+
+2002-08-17  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/347:
+       * automake.in (rule_define): Given portability warning if "%" seen
+       in target name.
+       (TARGET_PATTERN): Added `%'.
+       * tests/Makefile.am (TESTS): Added percent.test.
+       * tests/percent.test: New file.
+
+2002-08-15  Art Haas  <ahaas@neosoft.com>
+
+       * lib/am/depend2.am: Use correct name for dependency file in
+       libtool fastdep case.
+
+2002-08-14  Art Haas  <ahaas@neosoft.com>
+
+       * lib/am/depend2.am: Added missing `;'.
+
+2002-08-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Python): Fix wording.
+
+       * tests/ext2.test: New file.  This bug is present in Automake 1.6.3
+       and was fixed by the change on variable_conditions_permutations
+       and invert_conditions on 2002-05-16.
+       * tests/Makefile.am (TESTS): Add ext2.test.
+       Reported by Ladislav Strojil.
+
+2002-08-01  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * aclocal.in (parse_arguments): Add `dirlist' paths add the
+       very end of the search path, after aclocal-APIVERSION/ and
+       aclocal/.
+       * automake.texi (Macro search path): Adjust to reflect the
+       new ordering.
+       * tests/dirlist.test: Check for this.
+
+2002-07-31  Charles Wilson  <cwilson@ece.gatech.edu>
+
+       * aclocal.in (parse_arguments): Add support for extending
+       default macro search path, using a `dirlist' file within
+       the aclocal directory.
+       * automake.texi (Invoking aclocal): Move option descriptions into ...
+       (aclocal options): ... this new node.
+       (Macro search path): New node.
+       * tests/dirlist.test: New file.
+       * tests/Makefile.am (TESTS): Add dirlist.test.
+       * m4/dirlist: New file.
+       * m4/Makefile.am (EXTRA_DIST): Add dirlist.
+       * tests/defs: Honor any installed dirlist when searching for
+       libtool.m4 and gettext.m4.
+
+2002-07-30  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Build info files in builddir instead of srcdir (for PR automake/168),
+       and prepare support for info files in subdirecties.
+       * automake.in (output_texinfo_build_rules): New function.
+       (handle_texinfo_helper): Use output_texinfo_build_rules, and
+       prepare to support subdir texinfos.  Define am__TEXINFO_TEX_DIR.
+       * lib/am/texi-vers.am: Build version.texi and stamp-vti in the
+       current directory, not $(srcdir).  Use %STAMPVTI% to name the stamp
+       file.
+       * lib/am/texibuild.am: Rewrite to output files in the current
+       directory, not $(srcdir).  Also, support both generic and
+       non-generic output.  Pass `-o $@' to makeinfo, texinfo, and
+       texi2dvi (for PR automake/339).
+       * tests/texinfo3.test: Make sure the `.texi:' rule is output.
+       * tests/texinfo10.test: Use set -e, so the checks are not ignored.
+       * tests/texinfo16.test: New file.
+       * tests/Makefile.am (TESTS): Add texinfo16.test.
+
+2002-07-29  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * aclocal.in (write_aclocal): Don't write the filename ($output_file)
+       in the aclocal.m4 header.
+
+       * configure.in: Require Autoconf 2.53b.
+
+2002-07-28  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Bump version to 1.6c.
+
+       * configure.in: Bump version to 1.6b.
+       * lib/config.guess, lib/config.sub, lib/Automake/XFile.pm: New
+       upstream versions.
+       * automake.in: Don't write @ALLOCA@ and @LIBOBJS@ in clear text,
+       since this file is processed by config.status.
+
+2002-07-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (read_am_file): Escaped newlines in comments are not
+       portable.  If a comment line doesn't start with a `#', add it.
+       * tests/comment6.test: Ensure this is done.
+
+2002-07-24  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix failures reported by Patrick Welche on NetBSD.
+       * tests/gnits2.test, tests/gnits3.test: Don't trust the exit
+       status of `make -k'.
+       * tests/obsolete.test: Source obs.1 and obs.2 from current
+       directory.
+
+2002-07-23  Patrick Welche  <prlw1@newn.cam.ac.uk>
+
+       * lib/am/configure.am (am__CONFIG_DISTCLEAN_FILES): Add
+       configure.lineno.
+
+2002-07-23  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/required2.test: New file.
+       * tests/Makefile.am (TESTS): Add required2.test.
+       * automake.in (initialize_per_input): Remove %require_file_found
+       setting.  This reverts my change of 2002-04-19.
+       (require_file_internal): Use the full name of a file as a
+       key in %require_file_found, not only the basename.
+       Reported by Andrew Suffield.
+
+2002-07-22  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_subdirs): Warn if `obj' appears in SUBDIRS.
+       * tests/subdir7.test: New file.
+       * tests/Makefile.am (TESTS): Add subdir7.test.
+
+       * lib/mkinstalldirs: Remove Id keyword.
+
+       * lib/am/progs.am (installcheck-%DIR%PROGRAMS): Honor
+       AM_INSTALLCHECK_STD_OPTIONS_EXEMPT.
+       * lib/am/scripts.am (installcheck-%DIR%SCRIPTS): Likewise.
+       * automake.texi (Options) <std-options>: Document
+       AM_INSTALLCHECK_STD_OPTIONS_EXEMPT.
+       (Gnits): Reference std-options.
+       * tests/gnits3.test: New file.
+       * tests/Makefile.am (TESTS): Add gnits3.test.
+       Suggested by Jim Meyering.
+
+2002-07-20  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/gnits2.test: Use --program-prefix.  Test for scripts too.
+       Replace the sed script by calls to grep, easier to debug.
+       * lib/am/progs.am (installcheck-%DIR%PROGRAMS): Honor nobase
+       and $(transform).
+       * lib/am/scripts.am (installcheck-%DIR%SCRIPTS): Likewise.
+
+       * lib/am/progs.am (install-%DIR%PROGRAMS, uninstall-%DIR%PROGRAMS):
+       Always strip the directory part before applying $(transform),
+       even for nobase_ targets.
+       * lib/am/scripts.am (install-%DIR%SCRIPTS, uninstall-%DIR%SCRIPTS):
+       Likewise.
+       * tests/nobase.test: Use --program-prefix while testing nobase
+       support.
+
+2002-07-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/dirname.test: Delete.  We don't define _AM_DIRNAME anymore.
+       * tests/Makefile.am (TESTS): Remove dirname.test.
+
+       * m4/init.m4: Require Autoconf 2.53b.
+       * m4/header.m4 (AM_CONFIG_HEADER): Redefine using AU_DEFUN.
+       * m4/ccstdc.m4 (fp_PROG_CC_STDC): New AU_DEFUN.
+       * m4/dmalloc.m4 (fp_WITH_DMALLOC): Likewise.
+       * m4/lispdir.m4 (ud_PATH_LISPDIR): Likewise.
+       * m4/maintainer.m4 (jm_MAINTAINER_MODE): Likewise.
+       * m4/protos.m4 (fp_C_PROTOTYPES): Likewise.
+       * m4/regex.m4 (fp_WITH_REGEX): Likewise.
+       * m4/termios.m4: Delete.  AM_SYS_POSIX_TERMIOS is now AU_DEFUNed
+       in m4/obsolete.m4.
+       * m4/winsz.m4: Delete. AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL is now
+       AU_DEFUNed in m4/obsolete.m4.
+       * m4/obsol-gt.m4, m4/obsol-lt.m4, m4/obsolete.m4 : New files.
+       * m4/Makefile.am (dist_m4data_DATA): Add obsol-gt.m4, obsol-lt.m4,
+       and obsolete.m4. Remove termios.m4 and winsz.m4.
+       * aclocal.in (obsolete, obsolete_rx): Remove.
+       (scan_configure): Don't grep for obsolete macros.
+       * tests/defs (AUTOUPDATE): Define.
+       * Makefile.am (maintainer-check): Check for misuses of autoupdate.
+       * tests/obsolete.test: Rewrite.  Exercize the AU_DEFUN macros from
+       m4/obsolete.m4.
+
+       Fix for PR automake/338:
+       * automake.in (seen_gettext_external): New variable.
+       (handle_gettext): Conditionalize the intl/ check on
+       $seen_gettext_external.  Fix grep usage.
+       (scan_autoconf_traces): Set $seen_gettext_external if
+       `external' is passed to AM_GNU_GETTEXT.
+       * tests/gettext.test, tests/gettext2.test: New files.
+       * tests/Makefile.am (TESTS): Add gettext.test and gettext2.test.
+
+2002-07-18  Alexandre Duret-Lutz  <duret_g@epita.fr>
+           Akim Demaille  <akim@epita.fr>
+
+       * m4/header.m4 (_AM_DIRNAME, _AM_STAMP, _AM_CONFIG_HEADER,
+       _AM_CONFIG_HEADER_INSINUATE): Remove them all.  Leave just ...
+       (AM_CONFIG_HEADER): ... this new definition for compatibility.
+       * m4/init.m4: Don't call _AM_CONFIG_HEADER_INSINUATE.
+       (_AC_AM_CONFIG_HEADER_HOOK): New macro.
+       * tests/confh5.tests: Delete.
+       * tests/Makefile.am (TESTS): Remove confh5.tests.
+
+2002-07-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_single_transform_list): Typo.
+
+       * lib/Automake/Channels.pm (dup_channel_setup,
+       drop_channel_setup): New functions.
+       (@EXPORT): Add them.
+       * automake.in (generate_makefile): Call dup_channel_setup and
+       drop_channel_setup.
+       (process_option_list): Recognize --warnings and -W options.
+       * automake.texi (Options): Document them.
+       * tests/pluseq5.test: Check that -Wno-obsolete will disable the
+       warning.
+       * tests/warnopts.test: New file.
+       * tests/Makefile.am (TESTS): Add warnopts.test.
+
+2002-07-12  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in: Register warning channel `gnu'.
+       (set_strictness): Turn on `gnu' in --gnu and --gnits.
+       (usage): Mention the `gnu' category.
+       (%var_is_am): Replace by ...
+       (%var_owner): ... this, which uses ...
+       (VAR_AUTOMAKE, VAR_CONFIGURE, VAR_MAKEFILE): ... these new constants.
+       Adjust all uses of %var_is_am.
+       (handle_languages): Warn about user variables being overriden.
+       (require_variables): Also check %configure_vars for the existence
+       of a required variable.
+       * automake.texi (Invoking Automake): Document -Wgnu.
+       * tests/yacc2.test, tests/yacc3.test: Use -Wno-gnu when
+       we test YFLAGS.
+       * tests/gnuwarn.test: New file.
+       * tests/Makefile.am (TESTS): Add gnuwarn.test.
+
+2002-07-11  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/337:
+       * automake.in: Redefine the `flags' attribute of each language
+       as a list.  List CPPFLAGS in `flags' when it is used.
+       (register_language): Set the default value of 'flags'.
+       (handle_single_transform_list): Adjust to treat `flags' as a list.
+       (handle_languages): Likewise.  Don't bother defining the
+       configure variable for `c', this is always done since we trace
+       configure.ac.
+       * automake.texi (etags): Use per-executable _CPPFLAGS.
+       (Program and Library Variables): Mention maude_CPPFLAGS.
+       (Program variables): Likewise.
+       * tests/specflags8.test: Use _CPPFLAGS instead of _CFLAGS.
+       * tests/specflags9.test: New file.
+       * tests/Makefile.am (TESTS): Add specflag9.test.
+
+2002-07-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi: Use `variable' instead of `macro' everywhere it
+       designates a Makefile variable.
+       (Texinfo): `VERSION', `UPDATED', `EDITION', and `UPDATED-MONTH' are
+       `flags', not `macros'.  `Macro' means something else in Texinfo.
+       Also show how to use these flags.
+       * automake.in (file_contents_internal): s/macro/variable/ in
+       error message.
+
+       * automake.in (parse_arguments): Call Getopt twice: once to catch
+       --help or --verbose, and once to process the other arguments.
+       (usage, verbose): Always exit 0, ignoring $exit_code (which anyway
+       should always be 0 because of the change to parse_arguments).
+       * tests/Makefile.am (TESTS): Add getopt.test.
+       * tests/getopt.test: New file.
+
+2002-07-09  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/286:
+       * automake.texi (Tags): Document ctags.
+       * automake.in (handle_tags): Handle ctags.
+       * lib/am/tags.am (CTAGS): New macro.
+       (CTAGSFLAGS): Likewise.
+       (ctags): New target.
+       (distclean-tags): Remove `tags'.
+
+       * lib/am/depend2.am: Reworked syntax to avoid parsing problem.
+
+       * lib/am/depend2.am: Search in srcdir and builddir for %SOURCE%
+       before passing to cygpath.  Partial fix for PR automake/334.
+
+2002-07-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (generate_makefile): Suggest using AM_CPPFLAGS
+       instead of INCLUDES.
+       * tests/pluseq5.test: Check that AM_CPPFLAGS is suggested.
+
+2002-07-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (usage, version): Honor $exit_code.
+       (parse_arguments): Use fatal.
+
+2002-07-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Invoking Automake): Document WARNINGS.
+       * automake.in (switch_warning, parse_WARNINGS): New function.
+       (setup_warnings): Rename to ...
+       (parse_warnings): ... this.  Move most of the code to switch_warning.
+       Accept a comma separated list of categories.
+       * tests/vars2.test: Use a comma separated list of warning categories.
+
+2002-07-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * NEWS (New in 1.6): Mention that libtoolize is no longer run
+       by automake.
+
+2002-07-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/291:
+       * automake.in (macro_define): Catch variable names starting
+       with `_'.
+       (handle_installdirs): Rename _am_installdirs to am__installdirs.
+       * lib/am/data.am, lib/am/install.am, lib/am/libs.am,
+       lib/am/lisp.am, lib/am/ltlibs.am, lib/am/mans.am,
+       lib/am/progs.am, lib/am/python.am, lib/am/scripts.am,
+       lib/am/texinfos.am: Likewise.
+       * tests/canon5.test: Use -Wno-portability.
+       * tests/vars2.test: New file.
+       * tests/Makefile.am (TESTS): Add vars2.test.
+
+2002-07-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (AUTOMAKE): Add -Wall.
+       * tests/outdir.test: Use -Wno-obsolete.
+
+2002-07-07  Tom Tromey  <tromey@redhat.com>
+
+       * m4/depend.m4 (_AM_DEPENDENCIES): Compute am__fastdep<compiler>
+       conditional.
+       * automake.in (handle_languages): Compute FASTDEP.
+       * lib/am/depend2.am: Added %FASTDEP% mode.
+
+2002-07-07  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Optional): AM_MAINTAINER_MODE is ok in Gnits mode
+       now.  Fixes PR automake/332.
+
+2002-07-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/nobase.test (test-install-exec): Move all the `test -f'
+       tests in the Makefile so we can use $(EXEEXT) on programs.
+       Reported by Charles Wilson.
+
+2002-07-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/header.m4 (AM_CONFIG_HEADER): New macro.
+       * tests/confh5.test: Make sure that Autoconf complains if
+       AM_CONFIG_HEADER or AC_CONFIG_HEADERS is called before
+       AM_INIT_AUTOMAKE.
+
+2002-07-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/Automake/Channels.pm: New file.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add Channels.pm.
+       * automake.in: Use Automake::Channels and register some channels
+       for errors and warnings.
+       ($exit_status): Remove, replaced by Channels::$exit_code.
+       (%required_variables): Remove, Channels will filter-out duplicates
+       itself.
+       (initialize_per_input): Call reset_local_duplicates.
+       (prog_error): Adjust to all `msg'.
+       (setup_warnings): New functions.
+       (parse_arguments): Accept -W CATEGORY and --warnings=CATEGORY,
+       call setup_warnings.
+       (usage): Update usage text accordingly.
+       (macro_dump, macros_dump): Return the dump as a string instead
+       of printing it.
+       (am_install_var) <$warned_about_extra>: Remove, Channels will
+       filter-out duplicates itself.
+       (set_strictness): Turn on/off channels for each stricness.
+       (err, fatal, err_var, err_target, err_am, err_ac, msg_var,
+       msg_target, msg_am, msg_ac, reject_var, reject_target, verb):
+       New functions, to replace ...
+       (print_error, am_error, file_error, macro_error, target_error,
+       conf_error, file_warning): ... these functions.  Remove them.
+       Update all the code to use the new functions.  The rough
+       correspondance is
+          am_error                -> err_am
+          file_error              -> err
+          macro_error             -> err_var
+          target_error            -> err_target
+          conf_error              -> err_ac
+          die                     -> fatal
+          macro_error if defined  -> reject_var
+          target_error if defined -> reject_target
+          verbose                 -> verb
+       * automake.texi (Invoking Automake): Document -W and --warnings.
+       Remove the documentation for --Werror and --Wno-error.
+       * tests/defs: Use -Werror, not --Werror.
+       * tests/exeext2.test: Test that the error message
+       is enabled with -Wobsolete.
+       * tests/output5.test: Rewrite to test that Automake complains
+       when there is no Makefile specified. (The original test was
+       succeeding for the wrong reason.)
+       * tests/seenc.test: Don't use --Wno-error, there is no reason now
+       that -Werror doesn't stop after the first error.
+       * tests/subobj.test: Use --add-missing, and check that
+       `compile' is installed and that Automake says so.
+       * tests/subobj2.test: Don't create `compile'.
+
+2002-07-05  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Java Support): Mention --main and _LDFLAGS.
+       For PR automake/324.
+
+2002-07-04  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/asm.test: Erase Autom4te's cache between each test.
+
+2002-07-03  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (am_macro_for_var): Add LIBTOOL.
+       (ac_macro_for_var): Add RANLIB.
+       (seen_libtool): Remove.
+       (handle_libtool, lang_c_finish, define_compiler_variable,
+       make_paragraphs): Use
+       variable_defined ('LIBTOOL') instead of $seen_libtool.
+       (handle_languages) <%transform>: Don't set 'LIBTOOL', it is
+       already done in make_paragraphs.
+       (handle_libraries): Simplify by requiring RANLIB with
+       &require_variables_for_macro.
+       (handle_ltlibraries): Simplify by requiring LIBTOOL with
+       &require_variables_for_macro.
+       (scan_autoconf_traces): Don't trace for AC_PROG_LIBTOOL and
+       AM_PROG_LIBTOOL.
+       * tests/libtool4.test, tests/library2.test: New files.
+       * tests/Makefile.in (TESTS): Add libtool4.test and library2.test.
+
+2002-07-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (create, keyed_aclocal_warning): Delete, unused.
+
+2002-07-01  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (ac_macro_for_var): Add YACC.
+
+2002-07-01  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Handle multiple suffix rules with the same input extension.
+       For PR automake/37.
+
+       * automake.in (suffix_rules_default): New variable.
+       (suffix_rules): Redefine as a hash of hashes of pairs.
+       (initialize_per_input): Setup suffix_rules_default from
+       suffix_rules on first call, an override suffix_rules
+       with suffix_rules_default on following calls.
+       (struct) <output_extensions>: New attribute.
+       (register_language): Set the default for output_extensions.
+       Call register_suffix_rule for each suffix.
+       (derive_suffix, handle_languages): Adjust to the new definition
+       of $suffix.
+       (register_suffix_rule): New function.
+       (rule_define): Call register_suffix_rule.
+       * tests/suffix8.test, tests/suffix9.test, tests/suffix10.test:
+       New files.
+       * tests/Makefile.am (TESTS): Add them.
+
+2002-06-30  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (am_macro_for_var, ac_macro_for_var,
+       required_variables): New variables.
+       (am_c_prototypes, seen_prog_lex, am_lispdir_location,
+       pythondir_location): Remove.
+       (initialize_per_input): Clear %required_variables.
+       (require_variables, require_variables_for_macro): New functions.
+       (handle_languages): Call &require_variables for $lang->config_vars.
+       (handle_compile): Call &require_variables_for_macro for the
+       ANSI2KNR and U variables.
+       (handle_emacs_lisp): Call &require_variables for EMACS and libdir.
+       (handle_python): Call &require_variables for PYTHON.  Don't
+       explicitly allow `python' as a prefix for PYTHON.
+       (scan_autoconf_traces): Don't scan AC_PROG_LEX, AM_C_PROTOTYPES,
+       AM_PATH_LISPDIR, and AM_PATH_PYTHON.
+       (scan_autoconf_traces) <AC_SUBST>: Don't filter out ANSI2KNR and
+       AMDEPBACKSLASH here...
+       (define_configure_variable): ... do this here.
+       (am_primary_prefixes): Probe the existence of ${X}dir using
+       &require_variables_for_macro.  If a standard prefix is not
+       legitimate, say so.  Ignore all configure variables.
+       * tests/ansi8.test, tests/cxx2.test, tests/gcj5.test,
+       tests/lisp2.test, tests/python2.test: New files
+       * tests/Makefile.am (TESTS): Add them.
+       * tests/asm.test: Grep stderr.
+       * tests/lex2.test: Rewrite to test that Automake suggests AM_PROG_LEX.
+       * tests/python.test: Make sure py-compile is installed.
+
+2002-06-27  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (LANG_IGNORE, LANG_PROCESS, LANG_SUBDIR,
+       COMPILE_LIBTOOL, COMPILE_ORDINARY): Redefine as constants.
+       Adjust all occurrences.
+
+2002-06-27  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * aclocal.in: Add local variables so that Emacs setups GNU style
+       for perl-mode and cperl-mode.
+       * automake.in: Likewise.
+       (WHITE_PATTERN, RULE_PATTERN, SUFFIX_RULE_PATTERN, MACRO_PATTERN,
+       ASSIGNMENT_PATTERN, IF_PATTERN, ELSE_PATTERN, ENDIF_PATTERN,
+       INCLUDE_PATTERN, EXEC_DIR_PATTERN): Write $ as "\$" to please
+       perl-mode.
+
+2002-06-27  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (fetch): Fetch install-sh from Autoconf CVS.
+       * lib/config.sub, lib/install-sh: New upstream versions.
+
+2002-06-26  Paul Eggert  <eggert@twinsun.com>
+
+       * Makefile.am (maintainer-check): Don't assume that egrep exists;
+       this fixes a portability bug introduced in the 2002-06-08 fix for
+       PR automake/317.
+
+2002-06-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (required_targets): Add ps and ps-am.
+       (initialize_per_input): Reset them.
+       (handle_texinfo_helper): Fill @pss_list, and define the
+       PSS make variable.
+       * lib/am/texinfos.am (RECURSIVE_TARGETS): Add ps-recursive.
+       (ps, ps-am): New targets.
+       * automake.texi (Auxiliary Programs) <texinfo.tex>: Mention
+       `make ps' and `make pdf'.
+       (Texinfo): Document `make ps', `make pdf', and `make dvi'.
+       (Extending): The `ps' and `pdf' targets support a `-local' version.
+
+2002-06-26  Art Haas  <ahaas@neosoft.com>
+
+       * automake.texi: s/.../@dots{}/.
+
+2002-06-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Check that ln works, fall back to `cp -p'.
+       * Makefile.am (install-exec-hook): Use $(LN) instead of ln.
+       Reported by Andreas Buening.
+
+2002-06-21  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in: Register &lang_lex_target_hook for lex and lexxx.
+       (lang_lex_target_hook): New function.
+       * tests/lex3.c: Complete to check that maintainer-clean erases
+       Lex's output.
+       Reported by Flavien Astraud.  This was lost on 2001-06-23 too.
+
+2002-06-21  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (lang_yacc_target_hook): Add $output to
+       @maintainer_clean_files.  This was lost on 2001-06-23.
+       * tests/yacc7.test, tests/yacc4.test: Complete to check
+       that maintainer-clean erases YACC's output files,
+       respectively with and without `-d'.
+       Reported by Flavien Astraud.
+
+2002-06-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/lang-compile.am (%FPFX%DEPMODE): Delete.  This is now
+       traced from configure.ac.
+
+       * automake.in (macro_define): Don't accept to override an AC_SUBST
+       or Automake variable in a new condition.
+       * tests/cond23.test, tests/cond24.test: New file.
+       * tests/Makefile.am (TESTS): Add cond23.test and cond24.test.
+       Reported by Patrik Weiskirchre.
+
+2002-06-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/nobase.test, tests/pr204.test, tests/pr300-lib.test,
+       tests/pr300-ltlib.test, tests/pr300-prog.test,
+       tests/specflags7.test, tests/specflags8.test, tests/subdir5.test,
+       tests/subobj6.test, tests/subpkg.test, tests/transform.test:
+       Require gcc.
+
+2002-06-18  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/libtool2.test: Use required=libtoolize.
+       * tests/install2.test: Use required=gzip.
+
+2002-06-18  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (required): Handle bison; set YACC automatically.
+       * tests/pr204.test, tests/yacc4.test, tests/yacc8.test,
+       tests/yaccvpath.test: Require bison.  Don't set YACC.
+
+2002-06-18  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (required): Handle `gcc' and `g++'; automatically
+       export CC and CXX when they are required.
+       * tests/ansi3.test, tests/ansi5.test, tests/ccnoco.test,
+       tests/cond4.test, tests/cond16.test, tests/cond18.test,
+       tests/cond19.test, tests/depcomp2.test, tests/depend2.test,
+       tests/lex3.test, tests/pr87.test, tests/pr220.test,
+       tests/substref.test, tests/target-cflags.test, tests/yacc4.test,
+       tests/yaccvpath.test: Require gcc.  Don't pass CC=gcc to
+       configure.
+       * tests/subobj9.test: Require g++.
+
+2002-06-18  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (required): Handle `GNUmake'.
+       (needs_gnu_make): Don't define anymore.
+       * tests/cond4.test, tests/cond18.test, tests/cond19.test,
+       tests/dollar.test, tests/exsource.test, tests/extra6.test,
+       tests/lex3.test, tests/make.test, tests/pr9.test, tests/pr87.test,
+       tests/subdir5.test, tests/target-cflags.test, tests/yacc7.test,
+       tests/yaccvpath.test: Use `required=GNUmake' instead of
+       `$needs_gnu_make'.
+
+2002-06-17  Paolo Bonzini  <bonzini@gnu.org>
+
+       * automake.in (process_option_list): Recognize std-options.
+       (handle_options): Enable std-options in gnits strictness.
+       (am_install_var): If std-options, enable CK-OPTS section.
+       * lib/am/scripts.am (installcheck-am): New target.
+       * lib/am/progs.am (installcheck-am): New target.
+       * tests/gnits2.test: New file.
+       * tests/Makefile.am (TESTS): Add gnits2.test.
+       * automake.texi (Gnits, Options): Document std-options.
+
+2002-06-17  Kevin Ryde  <user42@zip.com.au>
+
+       * automake.in (scan_texinfo_file): Add tmp to @clean_suffixes,
+       as generated by recent texinfo.tex.
+
+2002-06-14  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/header.m4 (AM_CONFIG_HEADER): Rename to ...
+       (_AM_CONFIG_HEADERS): ... this.
+       (_AM_CONFIG_HEADER_INSINUATE): Define AC_CONFIG_HEADERS to
+       call _AM_CONFIG_HEADERS; and AM_CONFIG_HEADER to call
+       AC_CONFIG_HEADERS.
+       * automake.in (scan_autoconf_traces): Trace AC_CONFIG_HEADERS
+       instead of AM_CONFIG_HEADER.
+       * tests/autoheader2.test: New file.
+       * tests/Makefile.am (TESTS): Add autoheader2.test.
+       Suggested by Raja R Harinath.
+
+2002-06-13  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/header.m4 (_AM_CONFIG_HEADER_INSINUATE): Use m4_copy instead
+       of m4_rename so that AC_CONFIG_HEADER is never undefined and
+       therefore still traced after the redefinition.
+       * tests/defs (AUTOHEADER): Define.
+       * tests/autoheader.test: New file.
+       * tests/Makefile.am (TESTS): Add autoheader.test.
+       Reported by Braden McDaniel.
+
+2002-06-13  Paolo Bonzini  <bonzini@gnu.org>
+
+       * automake.in (check_gnu_standards): In --gnu mode, accept
+       one of COPTING, COPYING.LESSER, or COPYING.LIB.
+       (common_files): Add COPYING.LESSER.
+       * automake.texi (Gnits): Document this.
+
+2002-06-13  Paolo Bonzini  <bonzini@gnu.org>
+
+       * automake.in (required_targets): Add the pdf and pdf-am targets.
+       (initialize_per_input): Likewise.
+       (scan_texinfo_file): Add pdf to @clean_suffixes.
+       (handle_texinfo_helper): Output the .pdf dependencies, and define
+       the PDFS variable.
+       * lib/am/texinfos.am (TEXI2PDF): New variable.
+       (pdf, pdf-am): New targets.
+       (.PHONY): Add pdf, pdf-am, and pdf-recursive.
+       * lib/am/texibuild.am (.%SUFFIX%.pdf): New rule.
+
+2002-06-13  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix pr307.test failure with gcc 3.x.
+       * lib/depcomp (dashmstdout): Strip the call to libtool, and
+       replace `-o $object' by `-o /dev/null' before running "$@"
+       to generate dependencies.
+       (cpp): Strip the call to libtool as well as `-o $object'.
+
+2002-06-12  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/depcomp (tru64): Expect dependency files in .libs/, maybe as
+       $base.lo.d, when libtool is used.
+       Reported by Nicolas Joly.
+
+2002-06-11  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/java.am (class%DIR%.stamp): Don't run $(JAVAC) when there
+       is no file to compile.
+       * tests/java2.test: New file.
+       * tests/Makefile.am (TESTS): Add java2.test.
+       Reported by Braden N. McDaniel.
+
+2002-06-11  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/maintclean.test: Don't check for autom4te.cache if
+       it's not created by Autoconf.
+       Reported by Bernd Jendrissek.
+
+2002-06-11  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Tests): Document site.exp.  Update DejaGnu's url.
+
+2002-06-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/header-vars.am (transform): Define.
+       Was removed by mistake on 2002-04-13.
+       * tests/transform.test: New file.
+       * tests/Makefile.am (TESTS): Add transform.test.
+       Reported by Nicolas Joly.
+
+2002-06-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/dollar.test: Require GNU make.
+       * tests/maintclean.test: Don't use `export YACC=false'.  Pass
+       YACC=false to configure instead.
+
+2002-06-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex, lib/INSTALL,
+       INSTALL: New upstream versions.
+
+2002-06-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/sinclude.test: Check for m4_include too.
+
+2002-06-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/sinclude.test: Rename the package as amsinclude;
+       am__sinclude still trigers the sinclude macro once it has been
+       converted to am--sinclude.
+       Reported by Nicolas Joly.
+
+2002-06-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (API versioning): Typo.
+
+2002-06-10  Nicolas Joly  <njoly@pasteur.fr>
+
+       * THANKS (Nicolas Joly): Remove duplicate.
+
+2002-06-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (maintainer-check): Fix $MAKE -e detection.
+       * tests/yacc7.test: Use rm -f.
+
+2002-06-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (ACLOCAL, AUTOMAKE): Use absolute paths.
+       * tests/subpkg.test: New file.
+       * tests/Makefile.am (TESTS): Add subpkg.test.
+
+2002-06-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/318:
+       * tests/nobase.test: Rewrite to test _HEADERS, _DATA, _SCRIPTS,
+       _PROGRAMS, _LIBRARIES, and _LTLIBRARIES.
+       * lib/am/scripts.am (install-%DIR%SCRIPTS,
+       uninstall-%DIR%SCRIPTS): Honor nobase_; strip the directory by
+       default.
+       (?%DIR%SCRIPT_INSTALL): New variable.
+       * lib/am/header-vars.am (install_sh_SCRIPT): New variable.
+       Reported by Eric Siegerman.
+
+2002-06-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (lang_yacc_target_hook): Add rule to recover from
+       the removal of $header.
+       * lib/am/yacc.am (%BASE%.h): Remove (duplicate with the one
+       output by lang_yacc_target_hook).
+       * tests/yacc7.test: Try to recreate foo.h after its removal.
+       * tests/yacc8.test: Add `AM_YFLAGS = -d' and try to recreate
+       parse.h too.
+       Reported by Bernd Jendrissek.
+
+2002-06-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/317:
+       * Makefile.am (maintainer-check): Disallow `for f in $(FILES)',
+       suggest `list='$(FILES)'; for f in $$list' instead.
+       * lib/am/distdir.am (distdir): Adjust `for' usage.
+       * lib/am/texinfos.am (maintainer-clean-aminfo): Likewise.
+       * tests/dollar.test: New file.
+       * tests/Makefile.am (TESTS): Add dollar.test.
+       Reported by Eric Siegerman and Philip Fong.
+
+2002-06-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/47 (fixed a long time ago):
+       * tests/yacc7.test: Also check that parser sources are distributed.
+
+2002-06-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/configure.am (am__CONFIG_DISTCLEAN_FILES): New variable.
+       (distclean): Use it.
+       (maintainer-clean): Delete autom4te.cache and
+       $(am__CONFIG_DISTCLEAN_FILES).
+       * tests/maintclean.test: New file.
+       * tests/Makefile.am (TESTS): Add maintclean.test.
+
+2002-06-05  Miloslav Trmac  <trmac@popelka.ms.mff.cuni.cz>
+
+       * lib/am/dejagnu.am (site.exp): Quote build_alias, host_alias, and
+       target_alias.
+
+2002-05-31  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (maintainer-check): Check for egrep and fgrep.
+
+       * test/cond22.test: Set SHELL when calling $MAKE -e.
+
+2002-05-31  Richard Boulton <richard@tartarus.org>
+
+       Fix PR automake/326:
+       * automake.in (define_objects_from_sources): Calculate the result in
+       all conditions before passing this to subobjname to pick a name to
+       store the result in.
+       (subobjname): Expect a list of condition/value pairs as input.
+       Combine this list and use it as the key to determine the variable name.
+       * test/cond22.test: New file.
+       * tests/Makefile.am (TESTS): Add cond22.test
+
+2002-05-30  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/am/distdir.am (distdir): Don't assume that 'grep -F' works;
+       instead, use shell pattern matching.
+
+2002-05-29  Paul Eggert  <eggert@twinsun.com>
+
+       Don't assume that egrep and fgrep exist, as POSIX 1003.1-2001 no
+       longer requires them.
+
+       * Makefile.am (maintainer-check): Use grep -E and grep -F instead
+       of egrep and fgrep.  Omit unnecessary -E and -F.
+       Fix quoting typo -- "fgrep '\$${'" should have been "fgrep '$${'".
+       * lib/am/distdir.am (distdir): fgrep -> grep -F.
+       Use $(), not ${}, for Make variables.
+       * lib/am/texinfos.am (install-info-am, uninstall-info-am):
+       fgrep -> grep
+       * m4/make.m4 (AM_MAKE_INCLUDE): Likewise.
+       * tests/defs: Set FGREP and EGREP.
+
+       * tests/aclocali.test, tests/acoutput2.test, tests/all.test,
+       tests/ansi.test, tests/ansi4.test, tests/colon3.test,
+       tests/cond21.test, tests/condlib.test, tests/confh4.test,
+       tests/confsub.test, tests/cxxansi.test, tests/cxxo.test,
+       tests/depend4.test, tests/discover.test, tests/distname.test,
+       tests/dup3.test, tests/empty4.test, tests/fo.test,
+       tests/implicit.test, tests/insh2.test, tests/interp.test,
+       tests/lex.test, tests/lex3.test, tests/lex4.test,
+       tests/libobj5.test, tests/libobj7.test, tests/make.test,
+       tests/makevars.test, tests/nostdinc.test, tests/parse.test,
+       tests/pluseq.test, tests/pluseq4.test, tests/pluseq6.test,
+       tests/pr2.test, tests/pr9.test, tests/seenc.test,
+       tests/specflags.test, tests/specflags3.test,
+       tests/specflags6.test, tests/subobj.test, tests/subobj2.test,
+       tests/suffix3.test, tests/texinfo.test, tests/texinfo6.test,
+       tests/texinfo8.test, tests/vtexi.test, tests/yacc3.test,
+       tests/yacc6.test: fgrep -> $FGREP, egrep -> $EGREP
+
+2002-05-24  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/323:
+       * m4/depend.m4: Missing comma.
+       * tests/gcj4.test: New file.
+       * tests/Makefile.am (TESTS): Add gcj4.test.
+       Reported by David Pashley.
+
+2002-05-22  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (configure.in): Don't double-quote $me.
+       * tests/sinclude.test: Overwrite configure.in and use
+       `am__sinclude' instead of `sinclude' as package name.
+       Excercise `m4_sinclude' instead of `sinclude'.
+
+2002-05-20  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (conditional_implies_one_of): Rename as ...
+       (conditional_implies_any): ... this.
+       * tests/pluseq9.test: Exercise another case with the new
+       `C' variable.
+       Suggested by Raja R Harinath.
+
+2002-05-17  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs (configure.in): Quote macro arguments.
+       Reported by Nicolas Joly.
+
+2002-05-17  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/header-vars.am (build_triplet, host_triplet,
+       target_triplet): Define.  Were removed by mistake on 2002-04-13.
+
+2002-05-17  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/186:
+       * lib/am/distdir.am (distcheck): Attempt a DESTDIR install.
+       * tests/destdir.test: New file.
+       * tests/Makefile.am (TESTS): Add destdir.test.
+
+2002-05-16  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (conditional_true_when): Return false if $WHEN == FALSE.
+       (conditional_is_redundant): Simplify.
+       (conditional_implies_one_of,
+       variable_not_always_defined_in_cond): New functions
+       (macro_define): Reject appends if the variable is not defined in
+       all conditions where `+=' applies.
+       (invert_conditions): Rewrite.  Before this patch,
+       invert_conditions("A_TRUE B_TRUE", "A_TRUE B_FALSE", "A_FALSE")
+       would return ("A_FALSE B_TRUE", "A_FALSE B_TRUE"), which seems
+       wrong (these conditions implies "A_FALSE").  Now it outputs (),
+       which just means the input conditions cover all cases.
+       (variable_conditions_permutations): Never output FALSE conditions.
+       * tests/pluseq2.test, tests/pluseq3.test: Define data_DATA
+       in the CHECK_FALSE condition to fix the test.
+       * tests/pluseq5.test: Actually check the diagnostic.
+       * tests/pluseq9.test: New file.
+       * tests/Makefile.am (TESTS): Add pluseq9.test.
+
+2002-05-14  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/322:
+       * automake.in (read_am_file): Rename $was_rule as $prev_state, and
+       set it with IN_RULE_DEF, IN_VAR_DEF, or IN_COMMENT as appropriate.
+       Handle comments continued by backslashes.
+       * tests/comment6.test: New file.
+       * tests/Makefile.am (TESTS): Add comment6.test.
+       Reported by Braden N. McDaniel.
+
+2002-05-08  Charles Wilson  <cwilson@ece.gatech.edu>
+           Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/progs.am (clean-%DIR%PROGRAMS): If Libtool is used, clean
+       both `program$(EXEEXT)' and `program'; needed under Cygwin.
+       * tests/libtool3.test: New file.
+       * tests/Makefile.am (TESTS): Add libtool3.test.
+
+2002-05-07  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * TODO: Undust.
+
+2002-05-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (FETCHFILES, fetch): Get INSTALL from Autoconf CVS.
+
+2002-05-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Erase stamps from the Makefile that generates them.
+
+       * automake.in (handle_configure): Append each used stamp to
+       @distclean_config.  Don't warn about stamp-h in AC_OUTPUT, this
+       file is not used anymore.
+       * lib/am/clean.am (distclean-generic): Don't erase stamp-h and
+       stamp-h[0-9]*.
+       * tests/subdir6.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2002-05-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for condd.test (conditional `+='):
+       * automake.in (%appendvar): New.
+       (initialize_per_input): Clear it.
+       (macro_define): Handle += for variable defined in another condition.
+       * automake.texi (Conditional Sources): Use conditional += in
+       the example.
+       (General Operation, Conditionals): Remove note about broken +=.
+       * tests/cond21.test: New file.
+       * tests/condd.test: Also test conditional append to a _SOURCE
+       variable.  Create missing directories.
+       * tests/Makefile.am (TESTS): Add cond21.test.
+       (XFAILS): Remove condd.test.
+
+2002-05-05  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Program and Library Variables): Mention _LFLAGS.
+
+2002-04-30  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/ltlib.am (clean-%DIR%LTLIBRARIES): Erase so_locations
+       files.  Fix subobj9.test on OSF and IRIX.
+       Reported by Nelson H. F. Beebe.
+
+2002-04-26  Tom Tromey  <tromey@redhat.com>
+
+       * lib/am/dejagnu.am (distclean-DEJAGNU): New target.
+       For Debian bug 144221.
+
+2002-04-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/man2.test: Use `pwd`, not $PWD.  Use $MAKE -e.
+
+2002-04-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (subobjname): Use the length of %subobjvar
+       instead of $subobjnamenum.
+       (subobjnamenum): Remove.
+
+2002-04-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/307:
+       * lib/depcomp: Never compute dependencies in the background, this
+       can cause races with libtool.  Compute the dependencies after
+       the actual compilation.  Don't make libtool silent now that
+       it's run in the foreground.
+       * tests/pr307.test: New file.
+       * tests/Makefile.am (TESTS): Add pr307.test.
+       Reported by Laurent Morichetti.
+
+2002-04-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/check.am: Show skipped tests.  Display the
+       $(PACKAGE_BUGREPORT) address on failure.
+
+2002-04-24  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix PR automake/315:
+       * automake.in (subobjname): Rewrite to generate variable name
+       unique for each content.
+       (%substnums): Remove.
+       (%subobjvar): New hash.
+       (initialize_per_input): Clear %subobjvar.
+       (define_objects_from_sources): Return the name of the variable
+       defined, in addition to the linker.  Call subobjname only once
+       the content of the variable to define is known.
+       (handle_source_transform): Adjust call to define_objects_from_sources.
+       * tests/specflags8.test: Mention PR 315.
+       * tests/subobjname.test: New file.
+       * tests/Makefile.am (XFAIL_TESTS): Remove specflags8.test.
+       (TESTS): Add subobjname.test.
+
+2002-04-23  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Grep
+       the whole file for 'generated by automake', not only the
+       first line.  This accounts for post-processed Makefile.in's.
+       * tests/postproc.test: New file.
+       * tests/Makefile.am (TESTS): Add postproc.test.
+
+2002-04-22  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/151 and PR automake/314:
+       * automake.texi (A Program): Split into
+       (Program Sources, Linking, Conditional Sources, Conditional
+       Programs): ... these subsections; moving the Linking node
+       before the Conditional discussions.
+       (Conditional Sources): More details.  Notably, mention
+       hello_DEPENDENCIES.
+       (Conditionals): Adjust reference to Conditional Programs.
+
+2002-04-19  Paul Eggert  <eggert@twinsun.com>
+
+       Fix some bugs when using "$@" when there might be zero positional
+       arguments in cases where this matters.  Zsh doesn't support
+       the workaround ${1+"$@"} that has been used by Automake since
+       the Mon Dec  4 11:55:36 1995 change.
+
+       * aclocal.in: Use 'case' statement to work around problem.
+       * automake.in: Likewise.
+       * lib/ylwrap: Likewise.
+       * lib/missing: No need for workaround, as the command is never
+       invoked with zero arguments.
+       * tests/ccnoco.test: Likewise.
+       * missing: Update from lib/missing.
+
+2002-04-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (initialize_per_input): Clear %require_file_found.
+       (%require_file_found): Group the declaration with the other
+       variables initialized by initialize_per_input.
+       * tests/required.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       Reported by Marius Vollmer.
+
+2002-04-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/header.m4 (_AM_CONFIG_HEADER_INSINUATE): New function,
+       override AC_CONFIG_HEADERS with AM_CONFIG_HEADER.
+       (_AM_CONFIG_HEADER): Use _AM_AC_CONFIG_HEADERS.
+       * m4/init.m4: Call _AM_CONFIG_HEADER_INSINUATE.
+       * tests/stamph2.test: Use AC_CONFIG_HEADERS for some of the config
+       files.
+       * tests/confh5.test: New file.
+       * tests/Makefile.am (TESTS): Add confh5.test.
+       * automake.texi (Optional, Public macros): Update descriptions
+       of AC_CONFIG_HEADERS and AM_CONFIG_HEADER.
+
+2002-04-13  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/man2.test: New file.
+       * tests/Makefile.am (TESTS): Add man2.test.
+       * lib/am/mans.am (install-man%SECTION%): Change the extension
+       of the man pages being installed, as documented.
+
+2002-04-13  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Enable traces; wipe out the old configure.in parser.
+
+       * automake.in (scan_autoconf_traces): Use '$ENF{AUTOCONF}' of
+       'autoconf'.  Honnor the $filename argument.
+       (scan_autoconf_files): Don't call scan_one_autoconf_file.
+       Always call scan_autoconf_traces.
+       (scan_one_autoconf_file): Remove, with it associated regexes.
+       (obsolete, obsolete_rx): Remove.
+       (register_language, handle_languages): Remove the 'define_flag'
+       support.  Remove it from the struct and language definitions too.
+       (unquote_m4_arg): Remove.
+       * lib/am/header-vars.am, lib/am/compile.am, lib/am/lisp.am: Remove
+       the `FOO = @FOO@' definitions for all AC_SUBST'ed variables.  They
+       are now generated automatically.
+       * aclocal.in (obsolete_macros): Don't mention obsolete_macros in
+       automake.in.
+       * automake.texi (Invoking Automake): Mention the AUTOCONF envvar.
+
+2002-04-13  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/version6.test: New file.
+       * tests/Makefile.am (TESTS): Add tests/version6.test.
+       * automake.in (version_check): Return 0 on equality.
+
+2002-04-13  Andreas Schwab  <schwab@suse.de>
+
+       * THANKS: Update my mail address.
+
+2002-04-12  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/discover.test: Use a full configure.in that calls AC_INIT.
+       Use AC_LIBOBJ.  Grep the error message.
+       * test/ldadd.test: Don't use LIBOBJS.  Use a full configure.in.
+       Grep the error message.  Require libtool.
+       * tests/ldflags.test:  Don't use LIBOBJS.
+       * tests/seenc.test: Use AC_LIBOBJ, --Wno-error, and grep the
+       error messages for CC and CXX.
+
+2002-04-12  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (scan_autoconf_traces) <AC_SUBST>: Ignore ANSI2KNR
+       and AMDEPBACKSLASH.
+       * tests/distcommon2.test: Use a full configure.in that calls AC_INIT.
+       * tests/ext.test: Enable dependencies for OBJC.
+       * tests/libobj.test, tests/libobj6.test, tests/libobj9.test:
+       Delete.  They tests for different flavors of $LIBOBJS assignments
+       that wont be supported anymore.
+       * tests/libobj2.test, tests/libobj10.test: Use AC_LIBOBJ.
+       * tests/obsolete.test: Don't test Automake.
+       * tests/suffix5.test: Require libtool.
+       * tests/Makefile.am (TESTS): Remove libobj.test, libobj6.test and
+       libobj9.test.
+
+2002-04-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in (APIVERSION): Fix definition.
+
+2002-04-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * NEWS: Catch up with changes since 1.6.
+
+2002-04-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/yacc8.test: Don't assume GNU make, run config.status
+       to regenerate the Makefile.
+
+2002-04-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (maintainer-check): Make sure `$MAKE -e' is
+       always followed by a SHELL setting.
+       * tests/ansi3.test, tests/ansi5.test, tests/subobj3.test: Set
+       SHELL when calling `$MAKE -e'.
+
+2002-04-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/subobj9.test: Use configure.in, not configure.ac,
+       otherwise this fails with old libtool versions.
+
+2002-04-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: New upstream
+       versions.
+
+2002-04-10  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * ChangeLog.2001: New file, extracted from ChangeLog.
+       * Makefile.am (EXTRA_DIST): Add it.
+
+2002-04-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Canonicalization): The sources for libmumble++.a
+       go into libmumble___a_SOURCES.
+
+2002-04-07  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (maintainer-check): Check for `sleep 1' uses in the
+       test suite.  Suggest `sleep 2' instead.
+       * tests/confsub.test: Use `sleep 2'.
+
+2002-04-04  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/am/subdirs.am:
+       ($(RECURSIVE_TARGETS), maintainer-clean-recursive):
+       $(MAKEFLAGS) -> $$MAKEFLAGS, so that we don't run into problems if
+       MAKEFLAGS contains '$(...)'.
+
+2002-04-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/specflags8.test: Typo.
+
+2002-04-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/specflags6.test: Run aclocal.
+       * tests/Makefile.am (TESTS): Add specflags6.test.
+
+2002-04-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/specflags7.test, tests/specflags8.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+       (XFAIL_TESTS): Add specflags8.test.
+
+2002-03-29  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (check_typos): Examine AM_LDFLAGS.
+       Fixes PR automake/311.
+
+       For PR automake/312:
+       * lib/am/libtool.am (clean-libtool): Use LTRMS.
+       * automake.in (handle_single_transform_list): When processing a
+       libtool object, clean the ordinary object and register the
+       directory.
+       (libtool_clean_directories): New global.
+       (initialize_per_input): Initialize it.
+       (generate_makefile): Call handle_libtool later.
+       (handle_libtool): Handle libtool_clean_directories.
+       * tests/subobj9.test: New file.
+       * tests/Makefile.am (TESTS): Added subobj9.test.
+
+2002-03-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/extra6.test, tests/subdir5.test: Require GNU make.
+
+2002-03-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/dup3.test (ACLOCAL): s/srcdir/testsrcdir/.
+
+2002-03-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/extra7.test: New file.
+       * tests/Makefile.am: Add it.
+       * lib/am/distdir.an (distdir): When a distribuable directory
+       exists both in `.' and $(srcdir), merge both directories.  This
+       works around a failure of extra6.test on Tru64 reported by
+       Nicolas Joly.
+
+2002-03-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/pr87.test, tests/yaccvpath.test: Require GNU make.
+
+2002-03-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (maintainer-check): Catch occurrences of
+       `$MAKE foo=bar' in the testsuite.  Suggest using
+       `foo=bar $MAKE -e' instead.
+       * tests/ansi3.test, tests/ansi5.test, tests/subobj3.test:
+       Use $MAKE -e.  This fixes a ansi5.test failure with Solaris make.
+       * tests/defs: Unset $srcdir, and set $testsrcdir to its old value.
+       * tests/installsh.test (AUTOMAKE, ACLOCAL): Use $testsrcdir.
+
+2002-03-26  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/310:
+       * lib/am/depend2.am, lib/am/lex.am, lib/am/yacc.am: Quote %SOURCE%
+       so it never appears as a plain word.
+
+2002-03-25  Angus Leeming  <a.leeming@ic.ac.uk>
+
+       * lib/depcomp (tru64): Correctly compute `base'.
+
+2002-03-21  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/pr211.test: s/requires/required/, otherwise the test fails
+       if libtool is not installed.
+
+2002-03-21  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/dirname.test: Don't use $SHELL when calling ./configure.
+
+2002-03-21  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/dirname.test: Use --quiet to fix failure on installations
+       using a site script.
+       Reported by Nicolas Joly.
+
+2002-03-21  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (maintainer-check): Check for misuses of make,
+       autoconf, automake, aclocal, and perl in the testsuite.  Suggest
+       using $MAKE, $AUTOCONF, $AUTOMAKE, $ACLOCAL, and $PERL instead.
+       * tests/confsub.test: Use $AUTOCONF and $MAKE.
+       * tests/extra5.test, tests/extra6.test, tests/lex5.test,
+       tests/nobase.test, tests/nodist2.test, tests/pr204.test,
+       tests/pr224.test, tests/pr287.test, tests/strip.test,
+       tests/yacc8.test: Use $MAKE.
+
+2002-03-20  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Add support for two-dot versions.
+
+       * tests/version5.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       * automake.in (version_split, version_compare): New functions.
+       (version_check): Rewrite using version_split and version_compare.
+       (process_option_list): Adjust regex.
+
+2002-03-18  Richard Boulton <richard@tartarus.org>
+
+       Fix for PR automake/306:
+       * automake.texi (Generalities): Document +=.
+       (Conditionals): Document limitations of += with conditionals.
+
+2002-03-17  Tom Tromey  <tromey@redhat.com>
+
+       Fix for PR automake/295:
+       * automake.texi (Invoking Automake): Deprecate --output-dir.
+       * automake.in (usage): Don't document --output-dir.
+       (output_directory): Don't initialize.
+       (parse_arguments): Deprecate --output-dir.
+
+       * m4/init.m4 (AUTOMAKE, ACLOCAL): Removed extra quotes.
+       Fixes PR automake/304.
+
+2002-03-17  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/dirforbid.test: Workaround for NetBSD sh bug.
+       Fixes PR automake/305.
+
+2002-03-11  Richard Boulton <richard@tartarus.org>
+
+       * automake.in (check_typos): Allow variables with reserved
+       suffices (such as _LDFLAGS) and prefixes which aren't
+       recognised if the variable is defined in configure.ac.
+       Fixes acsubst.test.
+
+2002-03-11  Richard Boulton <richard@tartarus.org>
+
+       * tests/acsubst.test: New test, by Alexandre Duret-Lutz
+       * tests/acsubst2.test: New test, by Alexandre Duret-Lutz
+       * tests/Makefile.am (TEST): Added acsubst.test and acsubst2.test
+
+2002-03-11  Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       * tests/defs: Unset DESTDIR, otherwise `make DESTDIR=/foo check'
+       causes failures.
+
+2002-03-07  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/303:
+       * automake.in (version_check): Move the error message ...
+       (process_option_list): ... here, so we can distinguish between
+       global and local options.
+
+2002-03-07  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/pr300-lib.test, tests/pr300-ltlib.test,
+       tests/pr300-prog.test: Use AC_OUTPUT, not AC_OUTPUT(Makefile), so
+       Autoconf doesn't complain about Makefile being output twice.
+
+2002-03-06  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in: Upped version to 1.6a.
+
+2002-03-05  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in: Released 1.6.
+
+2002-03-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/300:
+       * tests/pr300-lib.test, tests/pr300-ltlib.test,
+       tests/pr300-prog.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+       * automake.in (handle_ltlibraries): Strip nobase_ prefix to
+       compute the directory.
+       * lib/am/header-vars.am (install_sh_PROGRAM): New variable.
+       * lib/am/libs.am (%DIR%LIBRARIES_INSTALL): New variable.
+       (install-%DIR%LIBRARIES): Use it.  Honor nobase_.
+       (uninstall-%DIR%LIBRARIES): Honor nobase_.
+       * lib/am/ltlibs.am (%DIR%LTLIBRARIES_INSTALL): New variable.
+       (install-%DIR%LTLIBRARIES): Use it.  Honor nobase_.
+       (uninstall-%DIR%LTLIBRARIES): Honor nobase_.
+       * lib/am/progs.am (%DIR%PROGRAMS_INSTALL): New variable.
+       (install-%DIR%PROGRAMS): Use it.  Honor nobase_.
+       (uninstall-%DIR%PROGRAMS): Honor nobase_.
+       See also the fix for nobase.test on 2001-11-09.
+
+2002-03-05  Tom Tromey  <tromey@redhat.com>
+
+       * lib/config.sub, lib/config.guess, lib/texinfo.tex: Updated.
+
+2002-03-05  Pavel Roskin  <proski@gnu.org>
+
+       * tests/yacc8.test: Add a command between "test" and "cd" to
+       work around a bug in bash-2.05.
+
+2002-03-05  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/294:
+       * tests/dirforbid.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       * automake.in (standard_prefix): New hash.
+       (am_primary_prefixes): Forbid standard_prefixes which are not
+       explicitely allowed.
+       * automake.texi (Uniform): Remove FIXME.
+
+2002-03-05  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in (@common_files): Add config.rpath.
+
+2002-03-05  Kevin Ryde  <user42@zip.com.au>
+
+       For PR automake/297:
+       * lex.m4 (AM_PROG_LEX): Don't set LEX=${am_missing_run}flex until
+       after AC_PROG_LEX, since it will try to run it and fail (in autoconf
+       2.52 at least).
+
+2002-02-25  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (scan_one_autoconf_file): Declare
+       LEX_OUTPUT_ROOT and LEXLIB as configure variables when
+       AM_PROG_LEX or AC_PROG_LEX are seen.  This allows to ...
+       * lib/am/lex.am: ... remove the LEX_OUTPUT_ROOT and LEXLIB
+       definitions.  Search %SOURCE% in $(srcdir).  Use s||| instead
+       of s/// in the sed invocation, to support filenames containing
+       slashes.
+       * lib/am/yacc.am: Search %SOURCE% in $(srcdir).  Use s||| too.
+       * tests/lex5.test, tests/yacc8.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+
+2002-02-23  Per Bothner  <per@bothner.com>
+
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Set `dirpart' to
+       `.' in else branch.
+
+2002-02-22  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/make.test: Revert the grep logic to work around a bug
+       in NetBSD sh (see NetBSD Problem Report #11542).
+       Reported by Patrick Welche.
+
+2002-02-20  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * m4/lispdir.m4: Redirect /dev/null to stdin when running $EMACS
+       to try and prevent a non-lisp emacs from starting in interactive
+       mode.
+       * automake.texi: Document this change.
+
+2002-02-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Macros): Split into ...
+       (Public Macros, Private Macros): ... these.
+
+2002-02-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/insthook.test: Use sed instead of "tail +X".
+
+2002-02-18  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/depcomp: Don't use "tail +3"; it's not portable to
+       POSIX 1003.1-2001 hosts.
+
+2002-02-18  Jim Meyering  <meyering@lucent.com>
+
+       * tests/cond12.test: Use sed 1q, not `head -n 1'.
+       The latter is not portable to some old systems.
+       * m4/depout.m4: Don't use `head -1'; it's no longer portable.
+       Use `sed 1q' instead.
+       * tests/insthook.test: Likewise.
+
+2002-02-17  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (handle_lib_objects_cond): Tell the user to put
+       global linker flags in AM_LDFLAGS, not LDFLAGS.
+
+       * automake.texi (General Operation): AC_SUBST'ed variables
+       override Automake's variables.
+       (Uniform): More words and @refs.
+       (Auxiliary Programs) <config.sub, config.guess>: Add URL.
+       (etags): More explanations about the first example.
+       (Invoking Automake): Mention autoreconf.  More @refs.
+       (Requirements): Mention AC_CONFIG_FILES.
+       (Optional): AC_CHECK_TOOL will no longer install config.sub and
+       config.guess.  Mention AC_LIBOBJ, AC_LIBSOURCE, and AC_LIBSOURCES.
+       (Invoking aclocal): aclocal no longer warn about duplicates.
+       (Macros) <AM_INIT_AUTOMAKE>: More explanations.
+       (Extending aclocal): Suggest using the output of
+       `aclocal --print-ac-dir` to install third-party macros.
+       (Alternative): Specify ordering of dist_, nodist_, and nobase_
+       prefixes.
+       (A Program): Mention scripts.  The global LDADD variable is not
+       meant to hold link flags, suggest using AM_LDFLAGS instead.
+       (Program and Library Variables) <maude_LIBADD, maude_LDADD>:
+       _LIBADD and _LDADD are subject to the same restriction wrt to
+       link flags.
+       (Program and Library Variables) <maude_DEPENDECIES>: Is also
+       derived from maude_LIBADD.
+       (Program variables): Define AM_LDFLAGS.
+       (Dependencies): Passing the no-dependencies option to
+       AM_INIT_AUTOMAKE is prefered.
+       (Scripts): Explain why automake is magically cleaned.
+       Mention noinst_SCRIPTS and check_SCRIPTS.
+       (Data): Use dist_ in Automake's example.
+       (Dist): Reference AM_INIT_AUTOMAKE for PACKAGE and VERSION.
+       Mention AC_CONFIG_FILES instead of AC_OUTPUT.
+
+2002-02-14  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * Makefile.am (FETCHFILES): Add Automake/XFile.pm.
+       (fetch): Fetch XFile.pm.  Update the files in $(srcdir) instead
+       of asking the maintainer to do it manually.
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex,
+       Automake/XFile.pm: New upstream versions.
+
+2002-02-02  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Macros): Warn about upgrading.
+
+2002-02-01  Tom Tromey  <tromey@redhat.com>
+
+       Change per GNU coding standards:
+       * aclocal.in (parse_arguments): Only mention most recent year in
+       copyright output.
+       * automake.in (version): Only mention most recent year.
+
+2002-01-30  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (API versioning): New Node.
+       (Extending): Use $(DESTDIR) in examples.
+
+2002-01-28  Akim Demaille  <akim@epita.fr>
+
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Serial 5.
+       Respect the --help layout.
+
+2002-01-27  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in: Bumped to 1.5e.
+
+       * lib/am/yacc.am: Use `rm -f'.
+
+       * configure.in: Released 1.5d.
+
+       * lib/config.guess: New version from FSF.
+
+       * Makefile.am (uninstall-hook): New target.
+
+2002-01-24  Akim Demaille  <akim@epita.fr>
+
+       * lib/install-sh: Update, from Autoconf.
+
+2002-01-24  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (scan_one_autoconf_file): Don't treat AC_CHECK_TOOL
+       as AC_CANONICAL_HOST (the former does not require the latter since
+       Autoconf 2.50).
+       * m4/strip.m4 (AM_PROG_INSTALL_STRIP): Check for strip.
+       * automake.texi (Requirements): Do not require STRIP to be
+       defined by the user.
+
+2002-01-23  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/depend.am (distclean-depend): Erase %DEPDIRS%, not $(DEPDIRS).
+       * automake.in (handle_languages): Compute and substitute %DEPDIRS%.
+       * tests/pr224.test: Make sure .deps subdirectories are
+       erased by distclean.
+
+2002-01-22  Tom Tromey  <tromey@redhat.com>
+
+       * m4/gcj.m4 (AM_PROG_GCJ): Don't invoke dependency code if
+       no-dependencies option is set.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Don't invoke dependency code if
+       no-dependencies option is set.  Don't call AM_DEP_TRACK or
+       AM_SET_DEPDIR.
+
+2002-01-22  Pavel Roskin  <proski@gnu.org>
+
+       * tests/asm.test: Use CCAS and CCASFLAGS instead of AS and
+       ASFLAGS.
+
+2002-01-22  Akim Demaille  <akim@epita.fr>
+
+       * Makefile.am (FETCHFILES): Remove ansi2knr.c, add texinfo.tex.
+       (fetch): Adjust.
+
+2002-01-21  Tom Tromey  <tromey@redhat.com>
+
+       * Makefile.am (fetch): Don't fetch ansi2knr.
+
+       * automake.texi (Macros): Updated for new variable names.
+       (Program and Library Variables): Likewise.
+       (Assembly Support): Likewise.
+       * m4/as.m4: Use CCAS and CCASFLAGS.
+       * automake.in (asm): Use CCAS and CCASFLAGS.
+
+2002-01-21  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&parse_arguments): Use a more GNUish error message
+       on wrong options.
+
+2002-01-20  Tom Tromey  <tromey@redhat.com>
+
+       Fix for PR automake/231:
+       * m4/gcj.m4 (AM_PROG_GCJ): Use _AM_DEPENDENCIES(GCJ).
+       * m4/depend.m4: Document `GCJ'.
+
+       For PR automake/224:
+       * tests/Makefile.am (TESTS): Added pr224.test.
+       * tests/pr224.test: New file.
+       * lib/depcomp: Fixed computation of depfile.
+       * lib/am/depend2.am: Use %DEPBASE%, not $(DEPDIR).
+       * automake.in (handle_single_transform_list): Only reject `..'
+       component for Java.  Put dependencies in directory near object.
+       (handle_languages): Set DEPBASE.  Handle de-ansi-fication.
+
+2002-01-20  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/defs: Export AUTOMAKE and ACLOCAL.
+
+2002-01-19  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/204:
+       * tests/pr204.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       * automake.in (handle_single_transform_list): Don't distribute
+       sources derived from non-distributed sources.
+
+2002-01-18  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/229:
+       * tests/pr229.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       * automake.in (scan_one_autoconf_file): Recognize AC_CYGWIN,
+       AC_EMXOS2, and AC_MINGW32.
+
+2002-01-18  Tom Tromey  <tromey@redhat.com>
+
+       * tests/cond7.test: Fix test bug exposed by copyright update.
+
+       For PR automake/288:
+       * automake.in (lang_c_rewrite): Don't prepend directory to base if
+       directory is `.'.  Also, properly compute de_ansi_files entry in
+       subdir-objects case
+       * tests/Makefile.am (TESTS): Added ansi7.test.
+       * tests/ansi7.test: New file.
+
+       * aclocal.in (parse_arguments): Added 2002.
+       (write_aclocal): Likewise.
+       (parse_arguments): Updated my email address.
+       * automake.in (gen_copyright): Added 2002.
+       (version): Likewise.  Also, changed my email address.
+
+       * configure.in (APIVERSION): Refined definition.
+
+2002-01-18  Tom Tromey  <tromey@redhat.com>
+
+       * missing: Updated.
+       * lib/missing: Accept versioned aclocal.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Look for versioned aclocal.
+
+2002-01-17  Pavel Roskin  <proski@gnu.org>
+
+       * m4/Makefile.am (m4datadir): Use APIVERSION.
+
+2002-01-16  Tom Tromey  <tromey@redhat.com>
+
+       * Makefile.am (install-exec-hook): Use APIVERSION.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Use am__api_version.
+       * m4/amversion.in (AM_AUTOMAKE_VERSION): Set am__api_version from
+       APIVERSION.
+       * automake.in (perllibdir): Use APIVERSION.
+       (libdir): Likewise.
+       * aclocal.in (perllibdir): Use APIVERSION.
+       (APIVERSION): New global.
+       (parse_arguments): Use APIVERSION.
+       * configure.in (APIVERSION): New subst.
+       (pkgvdatadir): Use APIVERSION.
+
+2002-01-15  Tom Tromey  <tromey@redhat.com>
+
+       * missing: Updated.
+       * lib/missing: Match against `automake*' to pick up versioned
+       automake.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Use versioned automake name.
+       * m4/amversion.in (AM_AUTOMAKE_VERSION): Set am__version
+       variable.
+       * lib/am/Makefile.am (amdir): Use pkgvdatadir.
+       * lib/Makefile.am (dist_pkgvdata_DATA): Renamed to use
+       pkgvdatadir.
+       (scriptdir): Use pkgvdatadir.
+       (installcheck-local): Likewise.
+       * lib/Automake/Makefile.am (perllibdir): Use pkgvdatadir.
+       * automake.in (perllibdir): Added VERSION.
+       (libdir): Likewise.
+       * aclocal.in (parse_arguments): Search versioned directory.  Don't
+       push unversioned directory unless it exists.
+       (perllibdir): Added VERSION.
+       (default_acdir): New global.
+       * m4/Makefile.am (m4datadir): Added $(VERSION).
+       * Makefile.am (install-exec-hook): New target.
+       * configure.in (ACLOCAL): Search build directory.
+       (pkgvdatadir): New subst.
+
+2002-01-15  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/config.sub, lib/config.guess: New versions from FSF.
+
+2002-01-13  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/288:
+       * automake.in (lang_c_rewrite): Set value for de_ansi_files entry
+       to directory.
+       (lang_c_finish): Likewise.  Also, use directory information from
+       de_ansi_files.
+
+2002-01-13  Kevin Ryde  <user42@zip.com.au>
+
+       For PR automake/288:
+       * tests/Makefile.am (TESTS): Added ansi6.test.
+       * tests/ansi6.test: New file.
+
+2002-01-13  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/287:
+       * lib/am/distdir.am (distdir): Use `$$list' trick when looping
+       over subdirs.
+       * tests/Makefile.am (TESTS): Added pr287.test.
+       * tests/pr287.test: New file.
+
+2002-01-13  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/distdir.am (distdir): Handle subdirectories.
+       * tests/extra6.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2002-01-13  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/extra2.test: Run $ACLOCAL.
+
+2002-01-12  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Set PACKAGE and VERSION from
+       AM_INIT_AUTOMAKE arguments when using the old-style call.
+       Use AC_PACKAGE_TARNAME and AC_PACKAGE_VERSION in the new form only.
+       Suggested by Pavel Roskin.
+
+2002-01-12  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * test/nodefine.test, test/nodefine2.test: Check that no-define
+       works, not the contrary...
+       * m4/options.m4 (_AM_IF_OPTIONS): Use m4_ifset.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): A third argument implies no-define,
+       not the contrary.
+
+2002-01-12  Jim Meyering  <meyering@lucent.com>
+
+       * automake.in (scan_one_autoconf_file): Unquote AC_LIBOBJ argument.
+       * tests/libobj11.test: New file.
+       * tests/Makefile.am (TESTS): Add libobj11.test.
+
+2002-01-09  Ryan T. Sammartino  <ryants@shaw.ca>
+
+       * lib/depcomp (msvisualcpp): Strip -Gm, -Gi, and -ZI options.
+
+2002-01-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (file_contents_internal): Introduce two variables,
+       $is_rule and $discard_rules to track rules spanning across multiple
+       paragraphs.  This fixes a very nasty bug reported by Dmitry Mikhin
+       where only the first paragraph of such a multi-paragraph rule was
+       discarded; but it leaves many similar latent bugs (see the FIXMEs).
+
+2002-01-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/dup3.test: Remove all -I from $ACLOCAL before using it.
+       * tests/error.test: Use some macro names which are not defined by
+       Automake itself.
+
+2002-01-09  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.texi (Complete, Macros, Options): Document the new style
+       AM_INIT_AUTOMAKE.  Remove AM_AUTOMAKE_OPTIONS documentaion.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Get PACKAGE and VERSION from
+       AC_INIT if they are available there.  Support a new call form
+       where the only argument is an optional space-separated list of
+       Automake options.
+       * m4/options.m4 (AM_AUTOMAKE_OPTIONS): Remove.
+       (_AM_MANGLE_OPTION, _AM_SET_OPTION, _AM_SET_OPTIONS,
+       _AM_IF_OPTION): New functions.
+       * automake.in (AC_INIT_PATTERN): New variable.
+       (global_options_line): Remove, use $seen_init_automake instead.
+       (scan_one_autoconf_file, scan_autoconf_traces): Set $package_version
+       from AC_INIT if available.  Support the new style AM_INIT_AUTOMAKE.
+       Remove the AM_AUTOMAKE_OPTIONS handling.
+       * configure.in: Modernize.
+       * tests/defs (configure.in): Modernize.  One third of the tests
+       still overwrite the default configure.in and use an old
+       AM_INIT_AUTOMAKE call,  so that makes testing for both.
+       * tests/nodefine.test, tests/nodefine2.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+
+2002-01-08  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * automake.in (define_configure_variable): Propagate line numbers.
+
+2002-01-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Add python2.2.
+
+2002-01-07  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in: Run the Autoconf test in a subdirectory, then
+       erase this directory.
+
+2002-01-07  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * configure.in (AUTOMAKE): Create m4/amversion.m4.
+       * m4/amversion.in: New file.
+       * m4/Makefile.am (m4data_DATA, EXTRA_DIST): Replace by ...
+       (dist_m4data_DATA): ... this.
+       (nodist_m4data_DATA, DISTCLEANFILES): Add amversion.m4.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require
+       AM_SET_CURRENT_AUTOMAKE_VERSION.
+       * automake.in (seen_automake_version): New variable.
+       (scan_autoconf_traces, scan_one_autoconf_file,
+       scan_autoconf_files): Scan for AM_AUTOMAKE_VERSION and complain
+       when the version used in aclocal.m4 differs from Automake's.
+       * tests/defs (ACLOCAL): Look in ../m4 too.
+       * tests/installsh.test (ACLOCAL): Likewise.
+       * tests/installdir.test (installdirs-local): Run $ACLOCAL.
+
+2002-01-06  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * automake.in (handle_languages): Emit an automake
+       internal variable 'am__depfiles_maybe'.
+       * lib/am/configure.am (%MAKEFILE%): Use am__depfiles_maybe.
+
+       * lib/am/configure.am (%MAKEFILE%): Pass `depfiles' to
+       config.status.
+
+2002-01-06  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Tags): Document new variables.
+       * lib/am/tags.am (ETAGS): New macro.
+       (ETAGSFLAGS): Likewise.
+       (TAGS): Use them.
+
+2002-01-04  Tom Tromey  <tromey@redhat.com>
+
+       * configure.in (ACLOCAL): Set perllibdir.  From Nicolas Joly.
+
+2002-01-04  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * automake.in (read_am_file): Thinko in "comment following
+       trailing backslash" detection.
+       * tests/comment5.test: Test for this too.
+
+2002-01-02  Tom Tromey  <tromey@redhat.com>
+
+       * automake.texi (Extending): Added index for uninstall-hook.
+
+2002-01-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/278:
+       * m4/python.m4 (AM_PYTHON_CHECK_VERSION): Use `sys.hexversion' to cope
+       with versions such as '2.2c1'.  Also, use `int' instead of the
+       obsoleted `string.atoi'.
+       Reported by Enrico Scholz.
+
+2002-01-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       Fix for PR automake/280:
+       * automake.in (read_am_file): Warn about trailing backslashes
+       in comments.
+       * tests/comment5.test: New file.
+       * tests/Makefile.am (TESTS): Add comment5.test.
+       Reported by Enrico Scholz.
+
+2002-01-02  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * tests/comment4.test: New file.
+       * tests/Makefile.am (TESTS): Add comment4.test.
+
+       Fix for comment4.test:
+       * automake.in (read_am_file): Output leading comments only when
+       encountering white lines.
+
+2002-01-01  Tom Tromey  <tromey@redhat.com>
+
+       For PR automake/234:
+       * tests/Makefile.am (TESTS): Added strip.test.
+       * tests/strip.test: New file.
+
+       * automake.texi (Extending): Mention uninstall-hook.
+       (Install): Likewise.
+       * automake.in (handle_factored_dependencies): Allow
+       uninstall-hook.
+
+2002-01-01  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * lib/am/install.am (install-strip): Set INSTALL_STRIP_FLAG=-s,
+       it is needed by install-%DIR%LTLIBRARIES in ltlib.am.
+       This fixes a bug introduced on 2001-01-28.
+       Reported by Jared Davis.
+
+-----
+
+Copyright (C) 2002-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
diff --git a/old/ChangeLog.03 b/old/ChangeLog.03
new file mode 100644 (file)
index 0000000..b7e8c6a
--- /dev/null
@@ -0,0 +1,2971 @@
+2003-12-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (generate_makefile): Update misleading comment.
+
+       * automake.in (handle_languages): Define %DEPBASE% conditionally
+       on subdir-objects.  Define SUBDIROBJ.  Do not clean *_.c files
+       here ...
+       (lang_c_finish): ... do it here.
+       (handle_single_transform_list): Do not output specific rules for
+       subdir-objects files which are not renamed.  This should reduce
+       the size of Makefiles with lots of subdirectory sources.
+       * lib/depcomp: Simplify computation of dependency output, and use
+       DEPDIR.
+       * lib/am/depend2.am (%EXT%.o, %EXT%.obj, %EXT%.lo): Adjust call
+       to depcomp.  Compute depbase on-the-fly in generic fastdep rules
+       for subdir-objects.
+       * tests/ansi9.test: Do not grep for an explicit rule that
+       we no longer expect.  Really run $MAKE to make sure the chain
+       of rules works.
+       * tests/yacc5.test: Do not grep for an explicit rule that
+       we no longer expect.  Adjust to use set -e.
+
+2003-12-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (@common_files): Move configure, configure.ac, and
+       configure.in ...
+       (@common_sometimes): ... here so that these files do not appear
+       twice in DIST_COMMON.
+
+       * automake.in (maybe_push_required_file): Add $(srcdir) in front
+       a required files outside the current directory or its subdirectories.
+       * lib/am/distdir.am (distdir): Update comment.
+       Report from Nicolas Joly.
+
+2003-12-26  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (@copying): Do not repeat the version.
+       (Top): Use @insertcopying.  Add a @detailmenu, this works around
+       Emacs 21's inability to lookup indices in sub-nodes (reported
+       by Kevin Ryde).
+       (C++ Support, Assembly Support, Fortran 77 Support, Java Support,
+       Support for Other Languages, Preprocessing Fortran 77, Compiling
+       Fortran 77 Files, Mixing Fortran 77 With C and C++, How the Linker
+       is Chosen): Add missing descriptions in menus.
+       (Fortran 77 and Autoconf): Remove, this node was just saying "use
+       Autoconf 2.53 or greater".
+
+2003-12-26  Santiago Vila  <sanvila@unex.es>  (tiny change)
+
+       * NEWS: s/Gettext 1.12.1/Gettext 0.12.1/
+
+2003-12-25  Nicolas Joly  <njoly@pasteur.fr>  (tiny change)
+
+       * doc/automake.texi (Conditional Sources): Typo.
+
+2003-12-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Config.in: Require Exporter.
+       Report from Kevin Ryde (failure with Perl 5.005_03).
+
+2003-12-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/aclocal6.test: Check for autom4te.cache only if it has
+       been created.
+       * tests/maintclean.test: Update comment.
+       Report from Bruno Haible.
+
+       * tests/txinfo24.test, tests/txinfo25.test, tests/txinfo28.test:
+       Require texi2dvi-o.
+       Report from Václav Haisman.
+
+2003-12-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.ac, NEWS: Bump version to 1.8a.
+
+       * configure.ac, NEWS: Bump version to 1.8.
+
+       * lib/texinfo.tex: New upstream version.
+
+       * Makefile.am (INSTALL): Copy the source from $(srcdir).
+
+2003-12-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Rule.pm (define): Remove debugging traces.
+       Report from Akim Demaille.
+
+2003-12-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * Makefile.am (do_subst): Fix the substitution of @configure_input@.
+       (automake, aclocal): Create the output atomically and make it
+       read-only, as done in the Autoconf package.
+       * lib/Automake/Makefile.am (do_subst): Fix the substitution of
+       @configure_input@.
+       (Config.pm): Create the output atomically and make it read-only.
+       * m4/Makefile.am ($(top_srcdir)/m4/amversion.m4): Substitute
+       @configure_input@ and make the output read-only.
+       * lib/Automake/Config.in, m4/amversion.in, tests/aclocal.in,
+       tests/automake.in, tests/defs.in: Add a @configure_input@ line.
+
+2003-12-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)
+
+       * doc/automake.texi (Local Macros, CVS): Typos.
+
+2003-12-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (hook): Use $$ as prototype, not $\&.
+       Perl 5.6.0 will not accept a reference sub reference for the
+       latter.
+       * automake.in (var_SUFFIXES_trigger): Adjust registration via
+       Automake::Variable::hook.
+       (handle_texinfo_helper): Make sure `inner_expand => 1' appears
+       on one line, so that Perl 5.6.0 does not complain about
+       inner_expand being a bare identifier.
+
+2003-12-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (check_acinclude, scan_file): Output `warning:' in
+       front of warnings.
+       Report from Pavel Roskin.
+
+2003-12-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * TODO: Remove some old entries.
+
+       * doc/automake.texi (Rebuilding): Document CONFIGURE_DEPENDENCIES
+       and CONFIG_STATUS_DEPENDENCIES.  Move this sections later
+       in the manual since it's pretty advanced material.
+
+       * automake.in ($config_header_location): Remove.  Use
+       %ac_config_files_location instead.
+       (rewrite_inputs_into_dependencies): Do not prepend $(top_builddir)/
+       at the top-level.
+       (handle_configure): Use rewrite_inputs_into_dependencies to
+       distribute and compute AC_CONFIG_HEADERS dependencies.
+       (scan_autoconf_traces) <AC_CONFIG_HEADERS>: Fill
+       %ac_config_files_location.
+       * lib/am/remake-hdr.am ($(srcdir)/%CONFIG_HIN%): Rename as ...
+       (%CONFIG_HIN%): ... this.  $(srcdir) is already added in
+       scan_autoconf_traces.
+       * tests/Makefile.am (TESTS): Add confh5.test.
+       * tests/confh5.test: New file.
+
+       * tests/ltlibsrc.test: Fix the zoo_d_old2_la.c rule in Makefile.am,
+       $< is not portable and the source is in $(srcdir).
+
+2003-12-03  Paolo Bonzini  <bonzini@gnu.org>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_configure): Do not require link sources if
+       they contain a dollar, or if they were built.  Likewise, do not
+       clean link destination if they contain a dollar.
+       (scan_autoconf_traces) <AC_CONFIG_LINKS>: Populate
+       %ac_config_files_location with link destinations.  Do not
+       store locations in @config_links, now that %ac_config_files_location
+       have them.
+       * tests/conflnk3.test: New file.
+       * tests/Makefile.am (TESTS): Add conflnk3.test.
+
+2003-12-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.ac, NEWS: Bump version to 1.7i.
+
+       * configure.ac, NEWS: Bump version to 1.7h.
+
+       * doc/automake.texi (Default _SOURCES): Fix reference to true.
+
+       * lib/texinfo.tex: New upstream version.
+
+2003-11-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_source_transform): If it's present, use
+       libfoo_la.c instead of libfoo.c as the default source of
+       libfoo.la, and issue an -Wobsolete diagnostic.  Do not be
+       greedy in the suffix replacement regex.
+       * doc/automake.texi (Default _SOURCES): New node.
+       (Program Sources, Libtool Modules): Refer to it.
+       * tests/ltlibsrc.test: Update to check for old default source files.
+
+2003-11-30  Gary V. Vaughan  <gary@gnu.org>
+
+       * automake.in (&handle_source_transform): Calculate a default file
+       for use in the absence of an appropriate _SOURCES declaration by
+       first stripping any suffix from the unxformed target name, and
+       appending `.c'.
+       * doc/automake.texi (Program Sources, Libtool Modules): Document this.
+       * tests/ltlibsrc.test: New file.
+       * tests/Makefile.am (TESTS): Add ltlibsrc.test.
+
+2003-11-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (loc_and_value_as_list_recursive,
+       _value_as_list_recursive_worker): Merge into ...
+       (value_as_list_recursive): ... this function.  Pass options
+       as a hash argument, and use the `location' option to trigger
+       the behavior of loc_and_value_as_list_recursive.
+       (traverse_recursively, transform_variable_recursively): Take
+       options as a %options argument.
+       (_do_recursive_traversal): Perform expansion of inner variables
+       (as in `$(FILE).ext') on request.
+       * automake.in (handle_options, check_libobjs_sources)
+       (handle_source_transform, handle_LIBOBJS, handle_ltlibraries)
+       (handle_ltlibraries, handle_man_pages, handle_dist)
+       (handle_gettext, am_install_var): Adjust usage of
+       value_as_list_recursive.
+       (handle_texinfo_helper): Pass inner_expand to
+       value_as_list_recursive.
+       * tests/txinfo28.test: New file.
+       * tests/Makefile.am (TESTS): Add txinfo28.test.
+       Report from Ralf Corsepius.
+
+       * lib/Automake/Variable.pm (_do_recursive_traversal): Do not
+       update @_substfroms and @_substfroms for undefined variables.
+       * tests/substre2.test: New file.
+       * tests/Makefile.am (TESTS): Add substre2.test.
+
+       * lib/Automake/VarDef.pm (value): Rename as ...
+       (raw_value): ... this.
+       (value): New method, strip # and \\\n.
+       (dump): Use raw_value.
+       * lib/Automake/Variable.pm (output): Use raw_value.
+       (value_as_list): Simplify, now that backslash and comments
+       are already removed.
+       * tests/txinfo22.test: Make sure Automake isn't confused
+       by comments in variables.
+
+2003-11-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi: More target vs. rule editing.  Back out some
+       of the previous changes.  It's OK to talk about targets as "entry
+       points", or as thing to build, but targets cannot be run: rules
+       are run.
+
+       * doc/automake.texi: s/target/rule/ where appropriate.  A target
+       is the destination of a target rule, not the rule itself.
+       Suggested by Bruno Haible.
+
+2003-11-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.ac, NEWS: Bump version to 1.7g.
+
+       * configure.ac, NEWS: Bump version to 1.7f.
+
+       * automake.in (prepend_srcdir): Parenthesize @inputs to remove
+       a maintainer-check warning.
+       * tests/subst2.test: Rewrite the $MAKE invocation to please
+       maintainer-check.
+
+       * lib/config.sub, lib/config.guess, lib/texinfo.tex: New upstream
+       versions.
+
+       * doc/automake.texi (Program variables): Mention per-target
+       _CPPFLAGS in the documentation of INCLUDES.
+       * automake.in (generate_makefile): Likewise in the INCLUDES diagnostic.
+       Report from Bob Friesenhahn.
+
+       * doc/automake.texi (Extending): Elaborate on overriding.
+       * NEWS: Likewise.
+       Suggested by Bruno Haible.
+
+2003-11-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (output): Add $(am__empty) to variable
+       definitions that end with a line full of @substitutions@ that
+       would confuse HP-UX Make if it were blank.
+       (transform_variable_recursively): Make sure not to erase empty
+       variables.
+       * tests/Makefile.am (TESTS): Add subst2.test.
+       * tests/subst2.test: New file.
+       Report from Harlan Stenn.
+
+       * lib/am/texibuild.am (%SOURCE_SUFFIX%.html): Work around a
+       Texinfo 4.1 bug.
+       Report from Dalibor Topic.
+
+2003-11-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix for PR automake/411:
+       * automake.in (rewrite_inputs_into_dependencies): Simplify, and rename
+       into ...
+       (prepend_srcdir): ... this.
+       (rewrite_inputs_into_dependencies): New function, extracted from ...
+       (handle_configure): ... here.  Adjust to use prepend_srcdir
+       or rewrite_inputs_into_dependencies where needed.  Especially,
+       using (the new) rewrite_inputs_into_dependencies to compute
+       Makefile dependencies will fix PR/411.
+       * lib/am/configure.am (DIST_COMMON): Remove %MAKEFILE-IN%, it's
+       already distributed by rewrite_inputs_into_dependencies.
+       * tests/Makefile.am (TESTS): Add output10.test, remove distcom.test.
+       * tests/colon3.test: Use set -e.  Don't allow any AUTOMAKE
+       invocation refer to zardoz.  Make sure two.in and three.in
+       appear as $(srcdir)/two.in and $(srcdir)/three.in dependencies.
+       * tests/distcom.test: Delete.  This is covered by tests/output9.test.
+       * tests/output10.test: New file, for PR/411.
+
+2003-11-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (append_exeext): Do not append $(EXEEXT) to
+       @substitutions@.
+       * tests/exeext4.test: New file.
+       * tests/Makefile.am (TESTS): Add exeext4.test.
+
+2003-11-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/configure.am (%MAKEFILE%): Remove %MAINTAINER-MODE%,
+       mistakenly added on 2001-03-05.
+       * tests/remake5.test: New file.
+       * tests/Makefile.am (TESTS): Add remake5.test.
+       Report from Ralf Corsepius.
+
+2003-11-18  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.ac, NEWS: Bump version to 1.7e.
+
+       * configure.ac, NEWS: Bump version to 1.7d.
+
+       * lib/config.sub, lib/config.guess, lib/texinfo.tex: New
+       upstream versions.
+
+2003-11-18  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>  (tiny change)
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/texinfos.am (install-info): Depend on
+       install-info-recursive or install-info-am even if no-installinfo.
+       * tests/txinfo27.test: New file.
+       * tests/Makefile.am (TESTS): Add txinfo26.test.
+
+2003-11-18  Paolo Bonzini  <bonzini@gnu.org>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/ylwrap: Do not overwrite headers if they haven't changed.
+       Fix the include guard substitution.
+       * tests/yacc6.test: Augment to run ylwrap, and make sure it
+       does not needlessly update headers.
+       * tests/yacc8.test: Make sure headers are not needlessly updated
+       with ylwrap is not used.  Move `test -f foo.o' into the
+       Makefile as `test -f foo.$(OBJEXT)' for portability.
+
+2003-11-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (generate_makefile): Define SUBDIRS if it is
+       not defined and DIST_SUBDIRS is.
+       * tests/subpkg2.test: New file.
+       * tests/Makefile.am (TESTS): Add subpkg2.test.
+       Report from Gary V. Vaughan.
+
+       * tests/suffix11.test: Check for suffixes containing `-'.
+       * lib/Automake/Rule.pm ($_SUFFIX_RULE_PATTERN): Accept `-' in
+       suffixes.
+
+       * lib/Automake/Rule.pm (define): Suggest using target-local instead
+       of target-am, not target-am-local.
+       * tests/overrid.test: Check the diagnostic for clean-am.
+       Report from Bruno Haible.
+
+2003-11-17  Jim Meyering  <jim@meyering.net>
+
+       * bootstrap: Require not only that `perl' have the executable
+       bit set, but also that it is not a directory.
+
+       * lib/am/configure.am: Mark %MAKEFILE% as `.PRECIOUS'.
+
+2003-11-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (ac_config_files_location): Declare as a hash.
+       (handle_configure): Rewrite the computation of AC_CONFIG_FILES
+       dependencies; make sure we don't use $(srcdir) or $(top_srcdir)
+       for inputs which are also outputs, and do not check inputs
+       relatively to the current directory.
+       (scan_autoconf_config_files): Take $where as argument, and
+       fill $ac_config_files_location.
+       * tests/output8.test, tests/output9.test: New files.
+       * tests/Makefile.am (TESTS): Add output8.test and output9.test.
+       Report from Bruno Haible.
+
+2003-11-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/aclibobj.test, tests/aclocal.test, tests/aclocal3.test,
+       tests/acoutbs.test, tests/acoutbs2.test, tests/acoutnoq.test,
+       tests/acoutpt.test, tests/acoutpt2.test, tests/acoutqnl.test,
+       tests/acsilent.test, tests/acsubst.test, tests/acsubst2.test,
+       tests/all.test, tests/alpha.test, tests/amassign.test,
+       tests/ammissing.test, tests/ansi.test, tests/ansi10.test,
+       tests/ansi2.test, tests/ansi3.test, tests/ansi3b.test,
+       tests/ansi4.test, tests/ansi5.test, tests/ansi6.test,
+       tests/ansi7.test, tests/ansi9.test, tests/ar.test,
+       tests/autohdr.test, tests/autohdr2.test, tests/auxdir.test,
+       tests/auxdir2.test, tests/backsl.test, tests/backsl2.test,
+       tests/badprog.test, tests/block.test, tests/canon2.test,
+       tests/canon3.test, tests/canon4.test, tests/canon5.test,
+       tests/ccnoco.test, tests/check.test, tests/check2.test,
+       tests/check3.test, tests/checkall.test, tests/clean.test,
+       tests/colneq2.test, tests/colon.test, tests/colon2.test,
+       tests/colon3.test, tests/colon4.test, tests/colon5.test,
+       tests/colon6.test, tests/colon7.test, tests/comment.test,
+       tests/comment2.test, tests/comment4.test, tests/comment6.test,
+       tests/comment7.test, tests/compile_f_c_cxx.test, tests/cond.test,
+       tests/cond10.test, tests/cond11.test, tests/cond13.test,
+       tests/cond14.test, tests/cond15.test, tests/cond16.test,
+       tests/cond17.test, tests/cond18.test, tests/cond19.test,
+       tests/cond21.test, tests/cond22.test, tests/cond25.test,
+       tests/cond26.test, tests/cond28.test, tests/cond3.test,
+       tests/cond4.test, tests/cond5.test, tests/cond6.test,
+       tests/cond7.test, tests/cond8.test, tests/cond9.test,
+       tests/condd.test, tests/condinc.test, tests/condlib.test,
+       tests/condman.test, tests/condman2.test, tests/conf2.test,
+       tests/confdeps.test, tests/confh.test, tests/confh4.test,
+       tests/config.test, tests/confincl.test, tests/conflnk.test,
+       tests/conflnk2.test, tests/confsub.test, tests/confvar.test,
+       tests/confvar2.test, tests/copy.test, tests/ctarget1.test,
+       tests/cxx.test, tests/cxxansi.test, tests/cxxcpp.test,
+       tests/cxxlibobj.test, tests/cxxlink.test, tests/cxxnoc.test,
+       tests/cxxo.test, tests/cygwin32.test, tests/dash.test,
+       tests/defun.test, tests/defun2.test, tests/dejagnu.test,
+       tests/dejagnu3.test, tests/dejagnu4.test, tests/dejagnu5.test,
+       tests/dejagnu6.test, tests/dejagnu7.test, tests/depacl2.test,
+       tests/depcomp.test, tests/depcomp2.test, tests/depcomp4.test,
+       tests/depdist.test, tests/depend.test, tests/depend2.test,
+       tests/depend3.test, tests/depend4.test, tests/destdir.test,
+       tests/dirlist.test, tests/discover.test, tests/distcom.test,
+       tests/distcom2.test, tests/distdir.test, tests/distname.test,
+       tests/dollar.test, tests/double.test, tests/dup2.test,
+       tests/empty.test, tests/empty2.test, tests/empty3.test,
+       tests/empty4.test, tests/error.test, tests/exdir.test,
+       tests/exeext.test, tests/exeext3.test, tests/exsource.test,
+       tests/ext.test, tests/ext2.test, tests/extra.test,
+       tests/extra2.test, tests/extra3.test, tests/extra4.test,
+       tests/extra5.test, tests/extra6.test, tests/extra7.test,
+       tests/flibs.test, tests/fnoc.test, tests/fo.test,
+       tests/fonly.test, tests/fortdep.test, tests/fpinst2.test,
+       tests/fpinstall.test, tests/gcj.test, tests/gcj3.test,
+       tests/gcj4.test, tests/gnits2.test, tests/gnits3.test,
+       tests/header.test, tests/implicit.test, tests/include.test,
+       tests/include2.test, tests/info.test, tests/insh2.test,
+       tests/install2.test, tests/installdir.test, tests/instdat.test,
+       tests/instdat2.test, tests/instexec.test, tests/insthook.test,
+       tests/instman.test, tests/instman2.test, tests/instsh.test,
+       tests/instsh2.test, tests/interp.test, tests/interp2.test,
+       tests/java.test, tests/java2.test, tests/javaprim.test,
+       tests/javasubst.test, tests/ldadd.test, tests/ldflags.test,
+       tests/lex.test, tests/lex3.test, tests/lex4.test, tests/lex5.test,
+       tests/libobj11.test, tests/libobj2.test, tests/libobj4.test,
+       tests/libobj5.test, tests/libobj7.test, tests/libobj8.test,
+       tests/library.test, tests/libtool.test, tests/libtool2.test,
+       tests/libtool3.test, tests/libtool5.test, tests/link_c_cxx.test,
+       tests/link_dist.test, tests/link_f_only.test, tests/link_fc.test,
+       tests/link_fccxx.test, tests/link_fcxx.test, tests/lisp.test,
+       tests/listval.test, tests/ltdeps.test, tests/ltlibobjs.test,
+       tests/maintclean.test, tests/make.test, tests/makej.test,
+       tests/makevars.test, tests/man.test, tests/man2.test,
+       tests/mclean.test, tests/mdate.test, tests/mdate2.test,
+       tests/mdate3.test, tests/mdate4.test, tests/mkinst2.test,
+       tests/mkinstall.test, tests/nobase.test, tests/nodef.test,
+       tests/nodef2.test, tests/nodep.test, tests/nodepcomp.test,
+       tests/nodist.test, tests/nodist2.test, tests/nodist3.test,
+       tests/noinst.test, tests/noinstdir.test, tests/nolink.test,
+       tests/nostdinc.test, tests/number.test, tests/obsolete.test,
+       tests/order.test, tests/outdir.test, tests/output.test,
+       tests/output2.test, tests/output3.test, tests/output4.test,
+       tests/parse.test, tests/phony.test, tests/pluseq.test,
+       tests/pluseq10.test, tests/pluseq2.test, tests/pluseq3.test,
+       tests/pluseq4.test, tests/pluseq6.test, tests/pluseq8.test,
+       tests/postproc.test, tests/ppf77.test, tests/pr2.test,
+       tests/pr204.test, tests/pr220.test, tests/pr224.test,
+       tests/pr229.test, tests/pr243.test, tests/pr266.test,
+       tests/pr279-2.test, tests/pr279.test, tests/pr287.test,
+       tests/pr300-lib.test, tests/pr300-ltlib.test,
+       tests/pr300-prog.test, tests/pr307.test, tests/pr72.test,
+       tests/pr87.test, tests/pr9.test, tests/prefix.test,
+       tests/proginst.test, tests/python.test, tests/python3.test,
+       tests/python4.test, tests/python5.test, tests/python6.test,
+       tests/python7.test, tests/python8.test, tests/python9.test,
+       tests/recurs2.test, tests/remake.test, tests/remake2.test,
+       tests/remake3.test, tests/req.test, tests/reqd.test,
+       tests/rulepat.test, tests/scripts.test, tests/sinclude.test,
+       tests/space.test, tests/specflg3.test, tests/specflg6.test,
+       tests/specflg7.test, tests/specflg8.test, tests/specflg9.test,
+       tests/spell3.test, tests/spelling.test, tests/spy.test,
+       tests/stamph2.test, tests/stdlib2.test, tests/strip.test,
+       tests/subcond.test, tests/subcond2.test, tests/subcond3.test,
+       tests/subdir.test, tests/subdir2.test, tests/subdir3.test,
+       tests/subdir4.test, tests/subdir5.test, tests/subdir6.test,
+       tests/subdirbuiltsources.test, tests/subobj.test,
+       tests/subobj2.test, tests/subobj3.test, tests/subobj4.test,
+       tests/subobj5.test, tests/subobj6.test, tests/subobj7.test,
+       tests/subobj8.test, tests/subobj9.test, tests/subobjname.test,
+       tests/subpkg.test, tests/subst.test, tests/substref.test,
+       tests/suffix.test, tests/suffix10.test, tests/suffix2.test,
+       tests/suffix3.test, tests/suffix4.test, tests/suffix5.test,
+       tests/suffix6.test, tests/suffix7.test, tests/suffix8.test,
+       tests/suffix9.test, tests/symlink2.test, tests/symlink3.test,
+       tests/tags.test, tests/tagsub.test, tests/target-cflags.test,
+       tests/transform.test, tests/txinfo.test, tests/txinfo10.test,
+       tests/txinfo13.test, tests/txinfo16.test, tests/txinfo17.test,
+       tests/txinfo18.test, tests/txinfo2.test, tests/txinfo23.test,
+       tests/txinfo24.test, tests/txinfo25.test, tests/txinfo26.test,
+       tests/txinfo3.test, tests/txinfo5.test, tests/txinfo6.test,
+       tests/txinfo7.test, tests/txinfo8.test, tests/txinfo9.test,
+       tests/unused.test, tests/vars.test, tests/vars3.test,
+       tests/vartar.test, tests/version.test, tests/version2.test,
+       tests/version4.test, tests/version6.test, tests/version7.test,
+       tests/vpath.test, tests/vtexi.test, tests/vtexi2.test,
+       tests/werror.test, tests/whoami.test, tests/yacc.test,
+       tests/yacc3.test, tests/yacc4.test, tests/yacc5.test,
+       tests/yacc6.test, tests/yacc7.test, tests/yacc8.test,
+       tests/yaccpp.test, tests/yaccvpath.test: Fix license to refer
+       to Automake, not autoconf.
+
+       Fix for PR automake/408:
+       * lib/am/texinfos.am (install-info-am): Strip any $(srcdir)/ prefix
+       from $file, as already done for dist-info.
+       * tests/Makefile.am (TESTS): Add txinfo26.test.
+       * tests/txinfo26.test: New file.
+       Report from Nicholas Wourms.
+
+2003-11-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): If EMACS=t, empty it before
+       running AC_CHECK_PROGS(EMACS).
+       * lib/am/lisp.am (elc-stamp): Quote $(EMACS).
+       Report from Jens Petersen.
+
+       * tests/mkinst2.test: Rewrite.
+
+       * m4/mkdirp.m4: Do not require AM_AUX_DIR_EXPAND.
+
+2003-11-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (scan_autoconf_traces): Honor sinclude.
+       * tests/sinclude.test: Check for sinclude.
+       Report from Roberto Bagnara.
+
+2003-11-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * Makefile.am: Do not rerun `make dist' after tagging, `make distcheck'
+       already build the tarballs.  Commit files right before tagging.
+       Check NEWS before running distcheck.
+
+       * m4/amversion.in (AM_AUTOMAKE_VERSION): Missing cosmetic space.
+
+       * configure.ac, NEWS: Bump version to 1.7c.
+
+       * configure.ac, NEWS: Bump version to 1.7b.
+       * Makefile.am (maintainer-check): Ignore comments while
+       scanning for rm without -f.
+
+       * Makefile.am (fetch): Get all files from savannah.  Do not
+       postprocess Struct.pm and XFiles.pm, since we now are the master
+       of these.
+       * lib/config.sub, lib/config.guess, lib/config-ml.in,
+       lib/texinfo.tex: New upstream versions.
+
+       * configure.ac: Check that autoconf is installed, that it works,
+       and that it is recent enough in three steps, not one.
+
+       * NEWS: Minor edits.
+
+       * lib/Makefile.am (dist_script_DATA): Move config-ml.in ...
+       (dist_pkgvdata_DATA): ... here.
+
+       * tests/spy.test: Document overlapping ::-rules incompatibilities,
+       and check only non-overlapping ::-rules.
+
+       * doc/automake.texi (Texinfo): Define MAKEINFO, MAKEINFOHTML,
+       MAKEINFOFLAGS, AM_MAKEINFOFLAGS, AM_MAKEINFOHTMLFLAGS, TEXI2DVI,
+       TEXI2PDF, DVIPS, and TEXINFO_TEX in a table.
+       (Uniform): Do not speak of missing HTML support, this is
+       confusing.
+       * lib/Automake/Variable.pm (_silent_variable_override): Add
+       AM_MAKEINFOHTMLFLAGS.
+       * lib/am/texibuild.am (%SOURCE_SUFFIX%.html): Use MAKEINFOHTML and
+       AM_MAKEINFOHTMLFLAGS instead of MAKEINFO and AM_MAKEINFOFLAGS.
+       * lib/am/texinfos.am (MAKEINFOHTML, AM_MAKEINFOHTMLFLAGS): Define.
+       * tests/txinfo21.test: Add a test with AM_MAKEINFOHTMLFLAGS.
+
+2003-11-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/spy.test: New file.
+       * tests/Makefile.am (TESTS): Add spy.test.
+
+       * automake.in (handle_configure): Distribute and define mkinstalldirs
+       only if it is already present in the package.
+       (scan_autoconf_files): Do not require mkinstalldirs.
+       (require_build_directory): Use $(mkdir_p), not $(mkinstalldirs).
+       * lib/am/data.am, lib/am/distdir.am, lib/am/install.am,
+       lib/am/java.am, lib/am/libs.am, lib/am/lisp.am, lib/am/mans.am,
+       lib/am/progs.am, lib/am/python.am, lib/am/scripts.am,
+       lib/am/texinfos.am: Use $(mkdir_p) instead of $(mkinstalldirs).
+       * m4/mkdirp.m4: New file.
+       * m4/Makefile.am (dist_m4data_DATA): Add mkdirp.m4.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Call AM_PROG_MKDIR_P.
+       * tests/Makefile.am (TESTS): Remove insh.test.
+       * tests/insh.test: Delete.
+       * tests/defs.in, tests/instsh.test: Do not install mkinstalldirs.
+       * tests/auxdir.test: Install mkinstalldirs.
+       * tests/distdir.test, tests/instman.test, tests/pr2.test: Use
+       $(mkdir_p), not $(mkinstalldirs).
+       * tests/empty.test: Run configure, do not substitute things by hand.
+       * doc/automake.texi (Optional) <AC_CONFIG_FILES>: Take install-sh
+       as an example, not mkinstalldirs.
+       (Auxiliary Programs) <mkinstalldirs>: Update.
+
+       * tests/defs.in: Handle required=bzip2.
+
+       * tests/defs.in: Export SHELL.
+       * tests/cond11.test: Missing quotes.
+       * tests/nogzip2.test: Require bzip2.
+
+2003-11-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * NEWS: Add news entries from 1.6.x and 1.7.x.
+
+       * automake.texi (Optional) <AC_SUBST>: Grammar fixes.
+
+       * automake.in (check_gnu_standards): Install COPYING only if
+       none of COPYING, COPYING.LIB, or COPYING.LESSER exist.  Do not
+       overwrite the license otherwise.
+       * tests/Makefile.am (TESTS): Add license.test.
+       * tests/license.test: New file.
+
+       * lib/mkinstalldirs: Mention automake-patches@gnu.org and
+       bug-automake@gnu.org.
+       * lib/compile, lib/depcomp, lib/elisp-comp, lib/mdate-sh:
+       Likewise.  Also add support for --help and --version.
+       * lib/py-compile, lib/ylwrap: Likewise, and reindent.
+
+2003-11-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/tags.am (ETAGSFLAGS, CTAGSFLAGS): Remove.
+       * lib/am/dejagnu.am (RUNTESTFLAGS): Remove.
+       * lib/am/java.am (JAVACFLAGS): Remove.
+       * tests/dejagnu3.test: Check that the environment value
+       of RUNTESTFLAGS get passed down to runtest.
+       Suggested by Mark Mitchell.
+
+       * lib/am/depend2.am (?GENERIC?%EXT%.o, ?GENERIC?%EXT%.obj)
+       (?GENERIC?%EXT%.lo): Do not echo compile command manually, this
+       breaks `make -s'.  Instead, fold the compile command on two lines,
+       so that it take less space on the display.
+       Suggested by Karl Berry and William Fulton.
+
+       * lib/am/texibuild.am (%DEST_PREFIX%%DEST_SUFFIX%): Rename as ...
+       (%DEST_INFO_PREFIX%%DEST_SUFFIX%): ... this, and honor ?INSRC?
+       to select $(srcdir) or `.' builds.
+       (INFO_DEPS): Define here.
+       * lib/am/texinfos.am (dist-info): Strip filename starting with
+       "$(srcdir)/".
+       * automake.in (output_texinfo_build_rules): Take a new argument
+       $insrc, and adjust substitutions in 'texibuild'.
+       (handle_texinfo_helper): Compute a regex of all user-cleaned
+       files, and use this to select whether to build .info files in `.'
+       or $(srcdir).  Give an account of the $(srcdir) vs `.' debacle.
+       Alway build the version.texi and stamp files in $(srcdir).  Do not
+       define INFO_DEPS.
+       * tests/Makefile.am (TESTS): Add txinfo23.test, txinfo24.test,
+       and txinfo25.test.
+       * tests/txinfo23.test, tests/txinfo24.test, tests/txinfo25.test:
+       New files.
+       * tests/txinfo13.test, tests/txinfo16.test, tests/txinfo3.test,
+       tests/vtexi.test: Adjust to new rules.
+
+2003-11-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require Autoconf 2.58.
+       * configure.ac: Require Autoconf 2.58a, and check for 2.58.
+
+2003-10-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/remake-hdr.am ($(srcdir)/%CONFIG_HIN%): Erase %STAMP%.
+       * tests/Makefile.am (TESTS): Add autohdr3.test
+       * tests/autohdr3.test: New file.
+
+       * automake.in (handle_configure): Rename am__configure_deps
+       as am__aclocal_m4_deps and include $(ACLOCAL_M4_SOURCES) and
+       $configure_ac.  Define am__configure_deps as am__aclocal_m4_deps
+       + $(CONFIGURE_DEPENDENCIES) + $(ACLOCAL_M4).  Do not define
+       ACLOCAL_M4_DEPS while processing configure.am.
+       (make_paragraphs): Do not define %CONFIGURE_AC%, now unused.
+       (scan_aclocal_m4): Do not distribute aclocal.m4, this
+       is done from lib/am/configure.am.
+       * lib/am/configure.am (%MAKEFILE-IN%, DIST_COMMON,
+       $(top_srcdir)/configure, $(ACLOCAL_M4)): Simplify using
+       $(am__configure_deps) or $(am__aclocal_m4_deps).
+       * lib/am/remake-hdr.am ($(srcdir)/%CONFIG_HIN%): Likewise.
+
+2003-10-26  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/remake-hdr.am ($(srcdir)/%CONFIG_HIN%): Depend on
+       $(am__configure_deps).
+
+       * automake.in (handle_configure): Distribute all AC_CONFIG_HEADERS
+       sources, and without using require_file.  Define %CONFIG_H_DEPS%
+       and %FIRST_CONFIG_HIN% while processing remake-hdr.am.
+       * lib/am/remake-hdr.am (%STAMP%): Use %CONFIG_H_DEPS% instead
+       of (srcdir)/%CONFIG_HIN%.  Output the $(srcdir)/%CONFIG_HIN%
+       rule only for the first header (i.e., if %FIRST_CONFIG_HIN%).
+       * tests/autohdr4.test: New file.
+       * tests/Makefile.am (TESTS): Add autohdr4.test.
+       * tests/config.test: Do not grep, run things to see if they work.
+
+2003-10-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/output7.test: Populate sub/ with a dummy file, so that it
+       is not empty.  This fixes a failure reported by Patrick Welche.
+       * lib/am/distdir.am: Add note about tar's `-o' option and empty
+       directories.
+
+2003-10-24  Didier Cassirame  <faded@free.fr>  (tiny change)
+
+       * lib/ylwrap: Typo in regex.
+
+2003-10-23  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/Automake/XFile.pm: Don't assume -j is solo.
+       Issue a more-informative diagnostic.
+       Problems reported by Eric Sunshine.
+
+2003-10-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Always check for Emacs.
+       Always define lispdir.
+       * lib/am/lisp.am (install-%DIR%LISP, uninstall-%DIR%LISP): Check
+       $(EMACS) to decide whether _LISP files must be installed,
+       not $(lispdir).
+       * doc/automake.texi (Emacs Lisp): Mention the two ways to install
+       non byte-compiled Emacs lisp files.
+       * tests/lisp4.test, tests/lisp5.test: Check "make install"
+       when EMACS=no.
+       Suggested by Simon Josefsson.
+
+       * NEWS: Clarify the entry about multiple conditional definitions
+       of _PROGRAMS, _LDADD, and _LIBADD.
+       Report from Simon Josefsson.
+
+       * lib/am/install.am (install-strip): Override install_sh_PROGRAM
+       too.
+       Report from Elmar Hoffmann.
+
+2003-10-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in ("MAIN", usage, parse_arguments): Move near
+       the end, so "MAIN" can use prototypes.
+       (scan_configure): Move later too, for the sake of prototypes.
+       (scan_configure_dep): Fix setting of $scanned_configure_dep.
+       (trace_used_macros): Do not take any argument.
+
+2003-10-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/stdlib2.test: Check AM_LDFLAGS alone.
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: New upstream
+       versions.
+
+       * automake.in (handle_ltlibraries): Also grep AM_LDFLAGS for `-module'.
+       * tests/stdlib2.test: New file.
+       * tests/Makefile.am (TESTS): Add stdlib2.test.
+       Report from Kevin P. Fleming.
+
+2003-10-03  Richard Dawe  <rich@phekda.freeserve.co.uk>  (tiny change)
+
+       * tests/defs.in: For required=runtest, check that we are using
+       a DejaGnu that supports specifying the program on the command-line.
+
+2003-10-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For Debian Bug #213524:
+       * lib/am/texinfos.am (install-info-am, uninstall-info-am): Merge
+       stderr and stdout, and grep only the first line while testing
+       install-info --version's output.  This revert part of the change
+       from 2001-05-18.
+
+2003-10-01  Akim Demaille  <akim@epita.fr>
+
+       * m4/amversion.in: Add (C) to the Copyright notice.
+
+2003-10-01  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/Automake/XFile.pm: Use Errno.
+       (lock): Ignore ENOLCK errors.  Problem reported Andreas Schwab in
+       <http://mail.gnu.org/archive/html/bug-autoconf/2003-09/msg00141.html>.
+
+2003-09-30  Tom Tromey  <tromey@redhat.com>
+
+       * lib/Automake/Options.pm (_process_option_list): Recognize
+       no-dist.
+       * NEWS: Update.
+       * doc/automake.texi (Options): Document no-dist.
+       * automake.in (check_cygnus): Set no-dist option.
+       (handle_dist): Recognize no-dist.
+       * tests/nodist3.test: New file.
+       * tests/Makefile.am (TESTS): Added nodist3.test.
+
+2003-09-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_clean): Take $makefile as argument, and
+       define %MAKEFILE% while processing clean.am.
+       (generate_makefile): Pass $makefile to handle_clean.
+       * lib/am/clean.am (distclean, maintainer-clean): Erase %MAKEFILE%,
+       not Makefile.
+       * tests/gnumake.test: New file.
+       * tests/Makefile.am (TESTS): Add gnumake.test.
+       Report from Braden N. McDaniel.
+
+2003-09-26  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Scripts): Update the example about automake.
+       Mention `dist_' for distributed scripts.
+
+       * lib/mkinstalldirs: Clean up after NextStep and OpenStep mkdir.
+       Suggested by Eric Sunshine.
+
+2003-09-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * README: More mailing lists.
+
+       * NEWS: Mention the switch to GNU FDL for the manual.
+
+2003-09-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/install-sh (src, dst): Protect names starting with `-',
+       as in mkinstalldirs.
+
+       * configure.in: Rename as ...
+       * configure.ac: ... this.
+       * README: s/configure.in/configure.ac/.
+
+       * doc/fdl.texi: New file.
+       * doc/Makefile.am (automake_TEXINFOS): New variable.
+       * doc/automake.texi (Copying This Manual): New appendix, include
+       fdl.texi.
+       (Macro and Variable Index, General Index): Move as subsections of ...
+       (Indices): This new appendix.
+
+       * doc/automake.texi: Refer to configure.ac instead of configure.in.
+
+       * automake.texi: Move ...
+       * doc/automake.texi: ... here.
+       * doc/Makefile.am: New file.
+       * configure.in: Output doc/Makefile.
+       * Makefile.am (SUBDIRS): Add doc.
+       (ETAGS_ARGS, TAGS_DEPENDENCIES): Move to doc/Makefile.am.
+
+2003-09-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (write_aclocal): Consider files with relative
+       paths as local to the project, i.e., subject to m4_include.
+       * tests/subpkg.test (ACLOCAL_AMFLAGS): Make sure m4_include
+       is also used for .m4 files in the outer project.
+
+       Support for multiple inputs in AC_CONFIG_FILES.
+       Requested long ago by Harlan Stenn.
+       * automake.in (handle_dist): Remove unused argument $makefile.
+       (handle_subdirs): Expect SUBDIRS elements in $relative_dir,
+       not $am_relative_dir.
+       (rewrite_inputs_into_dependencies): Allow $add_srcdir to
+       be a filename that must always be prefixed by $(srcdir) or
+       $(top_srcdir).
+       (handle_configure, generate_makefile): Revamp to make the
+       Makefile.am, Makefile.in, Makefile more independent.
+       (locate_am): New function.
+       (scan_configure_dep, parse_arguments): Use locate_am.
+       (MAIN): Adjust call to generate_makefile.
+       * lib/am/configure.am: Remove %MAKEFILE-IN% from the dependencies
+       of %MAKEFILE%.  %MAKEFILE-IN% is already in %MAKEFILE-DEPS%.
+       * tests/output6.test, tests/output7.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+       * automake.texi (Requirements) <AC_CONFIG_FILES>: Document how
+       multiple inputs are scanned.
+
+2003-09-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * Makefile.am (FETCHFILES, fetch): Do not fetch lib/Automake/XFile.pm
+       and lib/Automake/Struct.pm from Autoconf.
+       * lib/Automake/XFile.pm: Update comment, Automake is now
+       the master for this file.  Cosmetic changes.
+
+2003-09-09  Akim Demaille  <akim@epita.fr>
+
+       * lib/Automake/FileUtils.pm (&update_file): s/cannot not/cannot/g.
+       Reported by Gary Vaughan.
+       (&find_file): Walk the @include in forward order.
+
+2003-09-09  Akim Demaille  <akim@epita.fr>
+
+       * lib/Automake/FileUtils.pm (&update_file): Be sure not to leave
+       trailing files.
+
+2003-09-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Changes to m4_included files should also cause aclocal.m4 to change.
+       * aclocal.in (m4_include_rx): New variable.
+       (scan_configure_dep): New function.
+       (scan_configure, add_file): Simplify using scan_configure_dep.
+       * tests/Makefile.am (TESTS): Add acloca13.test.
+       * tests/aclocal13.test: New file.
+
+       * tests/instsh.test: Do not reset $ACLOCAL and $AUTOMAKE now
+       that we have fake version in the $PATH.
+
+       * aclocal.in (add_file): Remove useless filling of $output, probably
+       left a after CVS conflict.  This code is now in write_aclocal.
+
+       * aclocal.in (configure_ac): Do not call require_configure_ac
+       before parsing the options.
+       * automake.in (configure_ac): Likewise.
+       * lib/Automake/Variable.pm (configure_ac): Do not require configure.ac,
+       find it.
+       * lib/Automake/Configure_ac.pm (require_configure_ac):
+       find_configure_ac never return an undefined value, so test
+       the file's existence instead.
+       * tests/Makefile.am (TESTS): Add help.test.
+       * tests/help.test: New file.
+
+2003-09-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/XFile.pm: Update to use ChannelDefs.
+       (close): Call Automake::FileUtils::handle_exec_errors on errors.
+       * automake.in (scan_autoconf_files): Exit with $?=63 on version
+       mismatch.
+       (scan_autoconf_traces): Likewise.  Close the autoconf pipe to
+       capture abnormal exits.
+       * aclocal.in ($exit_status): Remove, and use Channels.pm's $exit_code
+       instead.
+       (trace_used_macros): Close the autom4te pipe to capture abnormal exits.
+       * lib/missing: When a tool has run and exited with $?=63, emulate
+       it.  Adjust the diagnostic and pretend the tool is tool old in this
+       case.  Use an emacs-updated "scriptversion" variable.
+       * configure.in: Output tests/aclocal-${APIVERSION} and
+       tests/automake-${APIVERSION}.
+       * tests/aclocal.in, tests/automake.in,
+       tests/missing.test, tests/missing2.test: New files.
+       * tests/defs.in (AUTOMAKE, ACLOCAL, PATH): Define
+       to use tests/aclocal-$APIVERSION and tests/automake-$APIVERSION.
+       * tests/dup3.test: Remove. alocal9.test, acloca10.test, and others are
+       already testing for this.
+       * tests/depacl2.test, tests/dup2.test, tests/order.test: Fix
+       configure.in so that aclocal works.
+       * tests/defun.test: Quote the AC_DEFUN body.
+       * tests/Makefile.am (TESTS): Add missing.test and missing2.test,
+       and remove dup3.test.
+       (check_SCRIPTS): Add aclocal and automake.
+
+       * tests/unused.test: Quote AC_DEFUN arguments.
+
+2003-09-05  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS, aclocal.in, automake.in, automake.texi, lib/ansi2knr.c,
+       lib/depcomp, lib/missing, lib/py-compile,
+       lib/Automake/Channels.pm, lib/Automake/Rule.pm,
+       lib/Automake/Variable.pm, lib/Automake/tests/Condition.pl,
+       lib/am/dejagnu.am, lib/am/depend.am, lib/am/lisp.am,
+       lib/am/remake-hdr.am, lib/am/texi-vers.am, m4/obsolete.m4,
+       m4/python.m4, tests/backsl4.test, tests/defs.in,
+       tests/dejagnu7.test, tests/depacl2.test, tests/dirlist.test,
+       tests/error.test, tests/getopt.test, tests/gnuwarn.test,
+       tests/include2.test, tests/libobj10.test, tests/libtool5.test,
+       tests/libtool6.test, tests/lisp3.test, tests/phony.test,
+       tests/pr220.test, tests/subcond2.test, tests/subcond3.test,
+       tests/vtexi.test:
+       Spelling and minor grammar fixes.
+
+2003-09-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/config.sub, lib/config.guess, lib/texinfo.tex,
+       lib/config-ml.in, lib/symlink-tree: New upstream versions.
+
+2003-08-31  Thien-Thi Nguyen  <ttn@gnu.org>  (tiny change)
+
+       * tests/yacc7.test: Require bison.
+
+2003-08-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (scan_file): Warn about underquoted AC_DEFUN.
+       ($underquoted_manual_once): New variable.
+       * automake.texi (Extending aclocal): Document this.
+
+2003-08-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (@file_order): New variable, to make sure
+       files are output in the opposite order of the -I arguments.
+       (scan_file): Fill it.
+       (trace_used_macros, write_aclocal): Use it.
+       (scan_m4_files): Reverse the directory contents, so that
+       macros from the lexicographically greatest files are preferred.
+       * tests/aclocal9.test, tests/acloca10.test, tests/acloca11.test:
+       New files.
+       * tests/Makefile.am (TESTS): Add them.
+
+2003-08-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For Debian Bug #206299:
+       * automake.in ($configure_deps_greatest_timestamp,
+       $output_deps_greatest_timestamp): New variables.
+       (initialize_per_input): Reset $output_deps_greatest_timestamp.
+       (scan_autoconf_traces, scan_autoconf_files, read_am_file):
+       Update $configure_deps_greatest_timestamp and
+       $output_deps_greatest_timestamp
+       (generate_makefile): Rewrite the logic to decide whether
+       to rewrite the output.  Move the leading dup_channel_setup
+       and trailing drop_channel_setup to MAIN, so that
+       drop_channel_setup is executed for all exit paths.
+       * tests/aclocal7.test: Update to check for $AUTOMAKE --no-force
+       * tests/distcom6.test: New file.  Report from Scott James Remnant.
+       * tests/Makefile.am (TESTS): Add distcom6.test.
+
+       * configure.in: Require Autoconf 2.57b to be sure
+       aclocal can use autom4te --language Autoconf-without-aclocal-m4.
+       * m4/init.m4: Likewise.  Move the AC_PREREQ and m4_pattern_allow
+       calls inside the AM_INIT_AUTOMAKE macro.
+       * m4/auxdir.m4, m4/cond.m4, m4/lex.m4, m4/regex.m4: Move
+       AC_PREREQ calls inside the macros.
+       * m4/header.m4: Remove AC_PREREQ.
+
+       * automake.in (file_contents_internal): Do not add newlines before
+       empty actions.
+
+       * aclocal.in (write_aclocal): Take an output file and list of
+       used macros in arguments and make up the file contents here.
+       (trace_used_macros): New function.
+       (add_file): Do not update $output.
+       ($output): Delete.
+       (MAIN): Call trace_used_macros.  Then rewrite aclocal.m4 only
+       for these traced macros.  This should shorten aclocal.m4 by
+       stripping out unused macros.
+       * automake.texi (Invoking aclocal): Document ${AUTOM4TE}.
+       * tests/aclibobj.test: Make sure configure.in exists by the time
+       aclocal runs.
+       * tests/aclocal8.test: New file.
+       * tests/Makefile.am (TESTS): Add aclocal8.test.
+       Suggested by Bruno Haible and Akim Demaille.
+
+2003-08-21  Akim Demaille  <akim@epita.fr>
+
+       * lib/Automake/Configure_ac.pm (&find_configure_ac)
+       (&require_configure_ac): Accept an optional directory argument.
+       ($configure_ac): Remove.
+       * aclocal.in, automake.in ($configure_ac): New.
+       * lib/Automake/Variable.pm: Don't use $configure_ac, just
+       configure.ac.
+
+2003-08-20  Akim Demaille  <akim@epita.fr>
+
+       * lib/Automake/FileUtils.pm: More perldoc.
+       (&up_to_date_p): New.
+
+2003-08-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix for PR automake/398:
+       * m4/python.m4: Do not call AC_PATH_PROGS if $PYTHON is already
+       set.  Display `none' instead of `:' and $PYTHON is set to `:'
+       when no suitable interpreter is found.  Honor ACTION-IF-FOUND and
+       ACTION-IF-NOT-FOUND.
+       * automake.texi (Python): Document ACTION-IF-FOUND and
+       ACTION-IF-NOT-FOUND.
+       * tests/python4.test, tests/python5.test, tests/python6.test,
+       tests/python7.test, tests/python8.test, tests/python9.test: New
+       files.
+       * tests/Makefile.am (TESTS): Add them.
+       Report from Per Cederqvist.
+
+2003-08-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix for PR automake/399:
+       * m4/python.m4: Use AC_PATH_PROGS, not AC_PATH_PROG.
+       Report from Per Cederqvist.
+
+2003-08-12  Raja R Harinath  <harinath@acm.org>
+
+       * lib/Automake/Condition.pm (strip): Replace loop with 'grep'.
+       (not): Replace loop with 'map'.
+       * lib/Automake/DisjConditions.pm (sub_conditions): Likewise.
+       * lib/Automake/Item.pm (not_alwasy_defined_in_cond):
+       Don't 'simplify' result of 'invert', since it's already in
+       canonical form.
+       * lib/Automake/Rule.pm (define): Replace loop with
+       'not_always_defined_in_cond'.
+
+       * lib/Automake/DisjConditions.pm (ambiguous_p): Typo in comment.
+       * lib/Automake/Rule.pm (accept_extensions, msg_cond_rule): Likewise.
+       (define): Reword comment slightly.
+       * Variable.pm (_var_order, msg_cond_var): Typo in comment.
+       * tests/cond20.test (var2): Use foo.c instead of foo.cc to avoid
+       spurious automake error exit.
+
+2003-08-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Item.pm, lib/Automake/ItemDef.pm: New files.
+       * lib/Automake/Rule.pm, lib/Automake/RuleDef.pm: New files.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add them.
+       * lib/Automake/VarDef.pm: Make this a subclass of Automake::ItemDef.
+       (new): Adjust to call Automake::ItemDef::new.
+       (comment, location, owner): Delete.  Now inherited from ItemDef.
+       * lib/Automake/Variable.pm: Make this a subclass of Automake::Item.
+       (_new): Adjust to call Automake::Item::new.
+       (name, def, rdef, _set, conditions, not_always_defined_in_cond):
+       Delete.  How inherited from Item, where `_set' is called `set'.
+       * automake.in (SUFFIX_RULE_PATTERN): Delete. Now in Automake::Rule.
+       (suffix_rules_default): Delete.  Now
+       Automake::Rule::_suffix_rules_default
+       (suffixes): Delete.  Now Automake::Rule::suffixes.
+       (TARGET_AUTOMAKE, TARGET_USER): Delete.  Now
+       Automake::RuleDef::RULE_AUTOMAKE and Automake::RuleDef::RULE_USER.
+       (%targets, %target_source, %target_name, %target_owner): Delete,
+       replaced by the Rule and RuleDef classes.
+       (dependencies, depend, actions): Delete.  Now in Automake::Rule.
+       (suffix_rules, register_suffix_rule): Likewise.
+       (KNOWN_EXTENSIONS_PATTERN, accept_extensions): Likewise.
+       (known_extensions_list): Delete.  Now
+       Automake::Rule::_known_extensions_list.
+       (target_conditions): Delete.  Now inherited by Automake::Rule
+       from Automake::Item::conditions.
+       (rule_define): Delete.  Now Automake::Rule::define.  Adjust all
+       callers.
+       (target_defined): Delete.  Now Automake::Rule::rule.  Adjust all
+       callers.
+       (initialize_per_input): Adjust to call Automake::Rule::reset.
+       (err_target, err_cond_target, msg_cond_target, msg_target,
+       reject_target): Delete.  Now defined in Automake::Rule as
+       err_rule, err_cond_rule, msg_cond_rule, msg_rule and reject_target.
+       Adjust all callers.
+       (handle_languages): Call suffix_rules_count.
+       * tests/location.test: Adjust expected diagnostics.  We now display
+       $(EXEEXT) accurately.
+
+2003-08-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Revert the fix for PR automake/291:
+       * lib/Automake/Variable.pm (define): Do not warn about variables
+       starting with `_' which are an issue on NEWS-OS 4.2R.  According
+       to Paul Eggert, NEWS-OS 4.2R is ten years old, the latest version
+       was released on 1996 and is not in wide use.  On the other hand,
+       variables starting with `_' are mandatory in several situations,
+       so diagnosing them is more annoying than useful.
+       * tests/canon5.test: Do not use -Wno-portability.
+       * tests/vars2.test: Delete.
+       * tests/Makefile.am (TESTS): Remove vars2.test.
+       Suggested by Jim Meyering.
+
+2003-08-09  Raja R Harinath  <harinath@acm.org>
+
+       * lib/Automake/DisjConditions.pm (ambiguous_p): Simplify slightly.
+       * lib/Automake/tests/DisjConditions.pl (test_ambig): Test
+       Automake::Disjunctions::ambiguous_p.
+
+2003-08-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (condition_ambiguous_p): Move ...
+       * lib/Automake/DisjConditions.pm (ambiguous_p): ... here.
+       * automake.in (rule_define): Adjust usage.
+       * lib/Automake/Variable.pm (_check_ambiguous_condition): Likewise.
+
+       * lib/Automake/Options.pm: New file.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add Options.pm.
+       * automake.in (FOREIGN, GNU, GNITS, $default_strictness)
+       ($default_strictness_name, $strictness, $strictness_name)
+       (%options, %global_options, process_option_list)
+       (set_strictness): Remove, now in Options.pm.
+       (initialize_per_input): Call Automake::Options::reset.
+       (handle_options, get_object_extension, get_object_extension)
+       (handle_languages, handle_single_transform_list, handle_compile)
+       (handle_texinfo_helper, handle_man_pages, handle_dist)
+       (handle_configure, do_check_merge_target)
+       (handle_factored_dependencies, handle_tests)
+       (handle_minor_options, scan_autoconf_traces, check_cygnus)
+       (lang_sub_obj, lang_c_rewrite, lang_c_finish, rule_define)
+       (make_paragraphs, am_install_var, parse_arguments): Adjust
+       to set and read options via the new interface.
+
+2003-08-07  Raja R Harinath  <harinath@acm.org>
+
+       * Makefile.am (maintainer-check): Update perllibdir.
+       * lib/Automake/Makefile.am (Config.pm): Depend on Makefile too.
+       (EXTRA_DIST): Add Config.in.
+       * Makefile.in, lib/Automake/Makefile.in: Regenerate.
+       * tests/defs.in (AUTOMAKE, ACLOCAL): Use absolute paths in
+       $perllibdir.
+
+2003-08-06  Raja R Harinath  <harinath@acm.org>
+
+       * configure.in (AUTOMAKE, ACLOCAL): Search the 'lib' directory
+       from the builddir too, to pick up Automake::Config.
+       * tests/defs.in (AUTOMAKE, ACLOCAL): Likewise.
+       * configure: Regenerate.
+       * automake.in (BEGIN): Handle multiple directories in $perllibdir.
+       * aclocal.in (BEGIN): Likewise.
+
+2003-08-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/ltcond.test: Thinko.
+
+2003-08-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Config.in: New file.
+       * lib/Automake/Makefile.am (nodist_perllib_DATA, do_subst,
+       CLEANFILES): New variables.
+       (Config.pm): New rule.
+       * Makefile.am (maintainer-check): Adjust expected differences
+       between automake.in and automake.
+       * aclocal.in, automake.in: Use Automake::Config.
+
+2003-08-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/ltconv.test: s/rm/rm -f/ to placate maintainer-check.
+
+       * automake.in (handle_texinfo_helper): Use the user definition
+       of TEXINFO_TEX before checking for cygnus or AC_CONFIG_AUX_DIR.
+       * tests/txinfo22.test: New file.
+       * tests/Makefile.am (TESTS): Add txinfo22.test.
+       Report from Tom Tromey.
+
+2003-08-03  Raja R Harinath  <harinath@acm.org>
+
+       * lib/Automake/Variable.pm (@EXPORT): Remove
+       traverse_variable_recursively and
+       require_variables_for_variable.
+       (require_variables_for_variable, traverse_variable_recursively)
+       (_traverse_variable_recursively_worker): Convert to
+       Automake::Variable methods, remove support for being
+       invoked with variable names, and rename to ...
+       (requires_variables, traverse_recursively)
+       (_do_recursive_traversal): ... these.
+       (_value_as_list_recursive_worker, transform_variable_recursively):
+       Update to reflect changes.
+       * automake.in (handle_LIBOBJS, handle_ALLOCA)
+       (handle_libraries, handle_ltlibraries, am_primary_prefixes):
+       Likewise.
+       (define_objects_from_sources): Fix typo in comment.
+
+2003-08-02  Raja R Harinath  <harinath@acm.org>
+
+       * automake.in (handle_source_transform): Replace 'grep' with 'map'.
+       (register_language): Replace 'grep' with 'foreach' modifier.
+
+2003-08-01  Raja R Harinath  <harinath@acm.org>
+
+       * lib/Automake/Variables.pm (variables): Return a list of
+       Automake::Variable instances, not a list of strings.
+       (dump): Remove support for being invoked with a string.
+       (variables_dump): Adapt to these changes.
+       * automake.in (check_typos): Likewise.
+       (am_primary_prefixes): Likewise.
+
+2003-07-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)
+
+       * lib/depcomp (aix): Support AIX Compiler version 6.
+
+2003-07-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (A Shared Library): Rewrite and split into
+       subsections.  Valuable comments from Norman Gray, Harlan Stenn,
+       Tim Van Holder, and Guido Draheim.
+       * tests/ltcond.test, tests/ltcond2.test, tests/ltconv.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+
+2003-07-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_single_transform_list): Complain about
+       foo.$(OBJEXT) being created both with libtool and without, not
+       about foo.lo.
+       Report from Tim Van Holder.
+
+2003-07-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * Makefile.am (FETCHFILES, fetch): Add config-ml.in and
+       symlink-tree.
+       * lib/config.sub, lib/config-ml.in, lib/texinfo.tex: New
+       upstream versions.
+
+2003-07-28  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_configure): Cosmetic change to avoid
+       a maintainer-check complaint.
+
+2003-07-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (@EXPORT): Remove variable_dump.
+       (variable_dump): Replace by ...
+       (dump): ... this method.
+       (rdef, _check_ambiguous_condition): Adjust to use ->dump.
+       (define, variables_dump): Adjust to use Automake::Variable::dump
+
+       * lib/am/compile.am (mostlyclean-compile): Do not erase core dumps.
+       * automake.texi (Built sources example): Adjust example.
+
+2003-07-26  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (get_object_extension, handle_languages)
+       (handle_single_transform_list, handle_compile, handle_compile)
+       (handle_texinfo_helper, handle_texinfo_helper, handle_man_pages)
+       (handle_tests, handle_minor_options, check_gnu_standards)
+       (lang_sub_obj, lang_c_rewrite, lang_c_finish, rule_define):
+       Simplify "if (defined $options{'X'})" into "if ($options{'X'})".
+
+       Complete changes from 2003-07-08.
+       * automake.in ($cmdline_use_dependencies, $use_dependencies): Remove,
+       replaced by $options{'no-dependencies'}.
+       ($global_options): Remove.
+       (%global_options): New variable.
+       (initialize_per_input): Empty %options.
+       (process_option_list): Take a location and %options ref argument,
+       process no-dependencies as other options.
+       (handle_options): Do not reparse the global options, just initialize
+       %options from %global_options and fill it with local options.
+       (handle_languages, handle_single_transform_list)
+       (handle_configure, check_cygnus): Adjust usage of
+       $options{'no-dependencies'}.
+       (make_paragraphs): Adjust usage of $options{'cygnus'}.
+       (parse_arguments): Set cygnus and no-dependencies in %global_options.
+       (scan_autoconf_traces) <AM_INIT_AUTOMAKE>: Call process_option_list
+       to fill %global_options.
+
+2003-07-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/remake4.test: Use `$MAKE distdir' instead of `$MAKE dist' to
+       avoid the use of tar.
+
+2003-07-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/gnuwarn2.test: Typo.
+
+       * tests/insthook.test: Use $MAKE, not make.
+
+       Fix missing rebuilds during `make dist' with BSD make.
+       * automake.in (generate_makefile): Do not push Makefile.in, and
+       Makefile.am into DIST_COMMON here.
+       * lib/am/configure.am (DIST_COMMON): Do it here, and use
+       %MAKEFILE-AM% and %MAKEFILE-IN% so that items in DIST_COMMON
+       actually match the targets.  Prefix `configure' with `$(srcdir)/'
+       to match the target.
+       * tests/remake4.test: New file.
+       * tests/Makefile.am (TESTS): Add remake4.test.
+       Report from Akim Demaille.
+
+2003-07-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_multilib): Register all-multi.
+       (file_contents_internal): Insert \n when concatenating actions
+       from "factored" rules.
+       * lib/config-ml.in: New file, from GCC, including a patch
+       from Ralf Corsepius (see GCC's PR 11526).
+       * lib/symlink-tree.in: New file, from GCC.
+       * lib/Makefile.am (dist_script_DATA): Add config-ml.in and
+       symlink-tree.
+       * lib/am/clean.am (distclean-generic): Do not delete Makefile here...
+       (distclean, maintainer-clean): ... do it here.
+       * lib/am/depend.am (distclean-depend): Likewise, replace by
+       (distclean, maintainer-clean): ... these.
+       * lib/am/multilib.am (all-recursive, install-recursive,
+       mostlyclean-recursive, clean-recursive, distclean-recursive,
+       maintainer-clean-recursive): Remove these rules.
+       (mostlyclean-am, clean-am, distclean-am, maintainer-clean-am): Replace
+       by ...
+       (mostlyclean, clean, distclean, maintainer-clean): ... these.
+       (all-am): Remove, done in handle_multilib.
+       (install-am): Replace by ...
+       (install-exec-am): ... this.
+       * tests/Makefile.am (TESTS): Add multlib.test.
+       * tests/multlib.test: New file, based on a test case by
+       Ralf Corsepius
+
+2003-07-23  Tom Tromey  <tromey@redhat.com>
+
+       * lib/missing (autom4te): Typo.
+
+2003-07-16  Derek Price  <derek@ximbiot.com>
+
+       * automake.in (scan_autoconf_traces): Handle AC_CONFIG_LINKS.
+       (handle_configure): Handle adding AC_CONFIG_LINKS arguments to
+       distclean targets (CONFIG_CLEAN_FILES makefile var).
+       * NEWS: Note new handling of AC_CONFIG_LINKS.
+       * automake.texi (Other things Automake recognizes): Ditto.
+       * tests/Makefile.am (TESTS): Add new tests.
+       * tests/conflnk.test: New test that links are cleaned on distclean.
+       * tests/conflnk2.test: New test that source files for links are
+       distributed.
+
+2003-07-15  Ralf Corsepius <corsepiu@faw.uni-ulm.de>  (tiny change)
+
+       * automake.in (scan_autoconf_traces): Trace AM_ENABLE_MULTILIB to
+       render $seen_multilib functional again.
+
+2003-07-10  Raja R Harinath  <harinath@cs.umn.edu>
+
+       Avoid using refs as hash keys.
+       * lib/Automake/Variable.pm ($_traversal): New.
+       (reset): Reset $_traversal.
+       (_new): New attribute 'scanned'.
+       (%_vars_scanned): Remove.
+       (traverse_variable_recursively)
+       (traverse_variable_recursively_worker):
+       Use $_traversal instead of %_vars_scanned to detect recursively
+       defined variables.
+
+       * lib/am/configure.am (am--refresh): Silence.
+
+2003-07-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (define): Make clear the diagnostic
+       about variable names starting with `_' is about *Make* variables.
+
+       For Debian Bug #193907:
+       * automake.texi (Clean): make maintainer-clean should still
+       allow ./configure && make to run.
+
+       * automake.texi (CVS): Typo.
+
+2003-07-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in: Use Automake::FileUtils.
+       (parse_arguments, scan_configure, scan_m4_files): Never call
+       "die" to print an error message.  Use print and exit.
+       * automake.in: Use Automake::FileUtils.
+       * lib/Automake/General.pm ($debug, $help, $tmp, $verbose,
+       $version, &debug, &getopt, &mktmpdir, &verbose): Remove.
+       (END): Do not massage Perl's exit code.  Do not clean any temporary
+       directory.
+       (find_file, mtime, update_file, xsystem, contents): Move to ...
+       * lib/Automake/FileUtils.pm: ... this new file.  Adjust to
+       report errors using Channels.
+       (handle_exec_errors, xqx): New functions, from Autoconf.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add FileUtils.pm.
+
+       * lib/Automake/Variable.pm (_traverse_variable_recursively_worker):
+       Return the empty list on recursively defined variable.  This
+       supersedes my change of 2003-07-02.
+
+2003-07-08  Akim Demaille  <akim@epita.fr>
+
+       * automake.in ($cygnus_mode): Replace with $options{'cygnus'}.
+       Adjust all dependencies.
+       (&depend): Move next to %dependencies and prototype.
+       (&initialize_per_input): Initialize the 'cygnus' field of
+       '%options' to spare the code from 'exists' or 'defined' when
+       testing it.
+       (&handle_configure, &do_check_merge_target, &check_cygnus): Prototype.
+       (&parse_arguments): Rename '%options' and '%options_1st_pass' as
+       '%cli_options' and '%cli_options_1st_pass' to avoid clashes and
+       inconsistencies.
+
+2003-07-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (generate_makefile): Move near the end of the
+       file, after the definition of all called functions, so that
+       prototypes can be enforced.
+
+2003-07-06  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/subdirs.am (RECURSIVE_TARGETS): Move install-recursive,
+       install-exec-recursive, install-data-recursive and
+       uninstall-recursive addition to...
+       * lib/am/install.am: here.
+       * lib/am/texinfos.am, lib/am/subdirs.am: Remove the .PHONY
+       declaration of RECURSIVE_TARGETS.
+
+2003-07-06  Akim Demaille  <akim@epita.fr>
+
+       * lib/Automake/Variable.pm, lib/Automake/VarDef.pm (VAR_SORTED):
+       New variable type.
+       Handle it.
+       * automake.in (&handle_subdirs): Prototype.
+       Adjust callers.
+       Make RECURSIVE_TARGETS a VAR_SORTED.
+
+2003-07-06  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&define_files_variable): New.
+       (&handle_texinfo_helper): Move the handling of user variables from
+       here, to...
+       (&handle_texinfo): here.
+       This is to balance the size of these functions, and to match the
+       convention of other _helper functions.
+       (&handle_texinfo_helper): Use &define_files_variable.
+       Move some code to use less variables.
+       Rename $info_cursor as $texi.
+       (&handle_texinfo): Do not call handle_texinfo_helper if there are
+       no TEXINFOS.
+       * lib/am/texinfos.am: Sort the occurrences of dvi, info, pdf, ps
+       and html.
+       Remove *-recursive targets from .PHONY, they are part of
+       $(RECURSIVE_TARGETS) anyway.
+       (install-info, mostlyclean-aminfo): Are .PHONY.
+
+2003-07-05  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/distdir.am: Use ';' as a terminator, not a separator, for
+       sed complex commands, as required by NetBSD sed.
+       Reported by Patrick Welche.
+
+2003-07-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/config.guess, lib/config.sub: New upstream version.
+
+2003-07-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (Optional, Dist): AC_CONFIG_AUX_DIR files
+       are automatically distributed.
+
+       * lib/depcomp (icc): Update to grok ICC 7.1's output.
+       * m4/depend.m4 (_AM_DEPENDENCIES): Check dependency generation
+       in a subdirectory, and with many dependencies.  This
+       catches more failures of depcomp.
+       Reports from Ralf Wildenhues and Akim Demaille.
+
+2003-07-04  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&scan_texinfo_file, &output_texinfo_build_rules,
+       (&handle_texinfo_helper, &handle_texinfo): Formatting changes.
+       Prototype properly.
+       Don't use & when calling functions.
+
+2003-07-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * NEWS: Categorize entries.
+       Suggested by Jim Meyering.
+
+       * Makefile.am (maintainer-clean): Disallow '$AUTOMAKE && exit 1'.
+       Ignore @...@ substitutions in comments.
+       * tests/defs.in: Try to make the shell more POSIX compliant.
+       (AUTOMAKE_run, AUTOMAKE_fails): New functions.
+       * tests/README: Mention AUTOMAKE_fails.
+       * tests/alloca.test, tests/alloca2.test, tests/ansi8.test,
+       * tests/asm.test, tests/backsl3.test, tests/backsl4.test,
+       * tests/badline.test, tests/badopt.test, tests/canon.test,
+       * tests/canon5.test, tests/colneq.test, tests/comment3.test,
+       * tests/comment5.test, tests/cond2.test, tests/cond20.test,
+       * tests/cond23.test, tests/cond24.test, tests/cond27.test,
+       * tests/condinc2.test, tests/conff2.test, tests/cxx2.test,
+       * tests/dejagnu2.test, tests/dirforbid.test,
+       * tests/distcom3.test, tests/else.test, tests/exdir2.test,
+       * tests/exeext2.test, tests/gcj2.test, tests/gcj5.test,
+       * tests/getopt.test, tests/gettext.test, tests/gettext2.test,
+       * tests/gnits.test, tests/gnuwarn.test, tests/gnuwarn2.test,
+       * tests/insh.test, tests/lex2.test, tests/libobj10.test,
+       * tests/libobj12.test, tests/libobj13.test,
+       * tests/libobj3.test, tests/library2.test,
+       * tests/library3.test, tests/libtool4.test,
+       * tests/libtool6.test, tests/lisp2.test, tests/location.test,
+       * tests/nogzip2.test, tests/output5.test, tests/overrid.test,
+       * tests/percent.test, tests/percent2.test,
+       * tests/pluseq5.test, tests/pluseq7.test, tests/pluseq9.test,
+       * tests/pr211.test, tests/primary.test, tests/primary2.test,
+       * tests/python2.test, tests/recurs.test, tests/reqd2.test,
+       * tests/seenc.test, tests/specflg.test, tests/specflg2.test,
+       * tests/spell.test, tests/spell2.test, tests/srcsub.test,
+       * tests/srcsub2.test, tests/stdlib.test, tests/subdir7.test,
+       * tests/substtarg.test, tests/suffix11.test,
+       * tests/symlink.test, tests/syntax.test,
+       * tests/targetclash.test, tests/txinfo4.test,
+       * tests/version3.test, tests/warnopts.test,
+       * tests/xsource.test, tests/yacc2.test: Use set -e,
+       AUTOMAKE_fails, and always grep error message.
+
+       * automake.in (handle_ltlibraries): Fix call to msg.
+
+       * tests/stamph.test: Delete.
+       * tests/Makefile.am (TESTS): Remove stamph.test.
+
+       * automake.in (handle_single_transform_list): Use $var->name
+       to print variable in the configure-substitution diagnostic.
+       Do not mention the parent when it is the variable itself.
+
+       * tests/package.test: Delete.
+       * tests/Makefile.am (TESTS): Remove package.test.
+
+       * automake.in (cond_stack_else): Return FALSE if `if' was not
+       used.
+       (cond_stack_endif): Return TRUE if `if' was not used.  Do not
+       display $negate and $cond, they are irrelevant and maybe undefined.
+
+2003-07-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (_traverse_variable_recursively_worker):
+       Do not return undef when a variable is recursively defined, this
+       causes warnings all over the place.  Return the empty string instead.
+
+       * lib/am/distdir.am (distcheck): Protect loop of DIST_ARCHIVES
+       from empty DIST_ARCHIVES.
+
+2003-07-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (scan_autoconf_traces): Check the expected
+       number of arguments of each traced macro.
+       * tests/overrid.test: Fix call to AM_CONDITIONAL.
+       * tests/conff2.test: New files.
+       * tests/Makefile.am (TESTS): Add conff2.test.
+       Report from Paolo Bonzini.
+
+2003-06-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in ($SUBST_REF_PATTERN): Do not define.
+       (%gen_varname): Move to Variable.pm, as %_gen_varname.
+       (initialize_per_input): Do not clean %gen_varname.
+       (handle_options, check_libobjs_sources, handle_source_transform,
+       handle_LIBOBJS, handle_ltlibraries, handle_texinfo_helper,
+       handle_man_pages, handle_dist, handle_subdirs, handle_gettext,
+       am_install_var): Adjust to use value_as_list_recursive,
+       loc_and_value_as_list_recursive, and has_conditional_contents.
+       (require_file_with_macro): Accept an Automake::Variable as argument.
+       (traverse_variable_recursively,
+       traverse_variable_recursively_worker, gen_varname,
+       transform_variable_recursively): Move ...
+       * lib/Automake/Variable.pm (traverse_variable_recursively,
+       _traverse_variable_recursively_worker,
+       _gen_varname, transform_variable_recursively): ... here.
+       * automake.in (variable_conditionally_defined,
+       variable_value_as_list_recursive_worker,
+       variable_value_as_list_recursive
+       variable_loc_and_value_as_list_recursive): Move ...
+       * lib/Automake/Variable.pm (has_conditional_contents,
+       _value_as_list_recursive_worker,
+       value_as_list_recursive, loc_and_value_as_list_recursive): ... here.
+       (reset): Reset %_gen_varname.
+       (require_variables_for_variable): Accept an Automake::Variable
+       as argument.
+
+2003-06-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/aclocal6.test: Test maintainer-clean in VPATH
+       builds. (For Ralf's fix.)
+
+2003-06-27  Ralf Corsepius  <corsepiu@faw.uni-ulm.de>  (tiny change)
+
+       * lib/am/configure.am (maintainer-clean): Remove
+       $(top_srcdir)/autom4te.cache, not autom4te.cache.
+
+2003-06-27  Akim Demaille  <akim@epita.fr>
+
+       * automake.texi: Use @node with a single argument.
+
+2003-06-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/Makefile.am (dist_m4data_DATA): Add $(top_srcdir)/m4/amversion.m4.
+
+       * lib/am/distdir.am (distcheck): Run $(am__remove_distdir)
+       at the end of distcheck.  This was mistakenly removed on
+       2003-06-15.
+       * tests/subpkg.test: Make sure distcheck cleans up after itself.
+
+       * m4/Makefile.am ($(srcdir)/amversion.m4): Rename as ...
+       ($(top_srcdir)/m4/amversion.m4): ... this.
+       (DISTCLEANFILES): Remove.
+       (nodist_m4data_DATA): Remove. amversion.m4 is automatically
+       distributed.
+       (EXTRA_DIST): Add amversion.in.
+
+2003-06-25  Akim Demaille  <akim@epita.fr>
+
+       * automake.texi (Top): Use @copying and @insertcopying.
+       Make Alexandre an author.
+       * automake.in ($gen_copyright): Add the "(C)" to Copyright.
+       * lib/depcomp: Likewise.
+
+2003-06-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (vardef, rvardef, set_seen): New functions.
+       (variable_defined, examine_variable): Remove.
+       (%_ac_macro_for_var): Add an entry for ALLOCA.
+       (require_variables): Use vardef instead of variable_defined.
+       Do not use _cvar.
+       * automake.in (generate_makefile): Do not push $(SOURCE) into
+       @sources.  Use define_pretty_variable to define SOURCES.
+       (handle_LIBOBJS, handle_ALLOCA): Use require_variables_for_variable
+       to require LIBOBJS, LTLIBOBJS and ALLOCA.
+       (handle_programs, handle_ltlibraries): Do not define an empty
+       _DEPENDENCIES or _LDFLAGS variable when none is defined.
+       (define_configure_variable): Do not check whether the variable
+       already exists (it's Automake::Variable::define's job).
+       (require_build_directory): Likewise, do not check
+       the existence of am__dirstamp.
+       (generate_makefile, handle_options, handle_languages)
+       (check_libobjs_sources, handle_single_transform_list)
+       (traverse_variable_recursively_worker, handle_source_transform)
+       (handle_lib_objects, handle_LIBOBJS, handle_compile)
+       (handle_libtool, handle_programs, handle_libraries)
+       (handle_ltlibraries, check_typos, handle_texinfo_helper)
+       (handle_man_pages, handle_tags, handle_dist, handle_subdirs)
+       (scan_aclocal_m4, handle_gettext, handle_footer, handle_install)
+       (handle_all, do_check_merge_target, handle_clean, lang_c_finish)
+       (handle_tests, lang_yacc_target_hook, define_pretty_variable)
+       (define_compiler_variable, define_linker_variable)
+       (make_paragraphs, am_primary_prefixes, am_install_var): Adjust to
+       call var, vardef, or set_seen, instead of variable_defined.  Use
+       set_seen only for variables which are actually checked by
+       check_typos.
+       * tests/target.test: Delete.
+       * tests/alloca.test, tests/alloca2.test: New files.
+       * tests/libobj3.test: Check error message.
+       * tests/distcom4.test: Make sure configure is in DIST_COMMON.
+       This replace confdist.test.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Remove target.test.
+       (TESTS): Add alloca.test and alloca2.test.  Remove confdist.test.
+
+2003-06-20  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_dist): Delete DIST_COMMON before redefining
+       it.  Bug report from Akim Demaille.
+       (rewrite_inputs_into_dependencies): Make sure we always return
+       something, even when $add_srcdir is 0.
+       * tests/distcom4.test, tests/distcom5.test: New files.
+       * tests/Makefile.am (TESTS): Add distcom4.test and distcom5.test.
+
+       * tests/cond29.test: Also check for _SOURCES.
+       Report from Paolo Bonzini.
+
+2003-06-20  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/configure.am: Replace leading spaces with a real tab.
+
+2003-06-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/nogzip.test, tests/nogzip2.test: New files.
+       * tests/Makefile.am (TESTS): Add nogzip.test and nogzip2.test
+
+2003-06-15  Akim Demaille  <akim@epita.fr>
+
+       * automake.in (&make_paragraphs): Define %GZIP%.
+       (&process_option_list): Accept no-dist-gzip2.
+       (&handle_dist): Complain when no archive format is enabled.
+       * lib/am/distdir.am (DIST_ARCHIVES): New variable.
+       (dist-gzip, dist-bzip2, dist-tarZ, dist-zip): No longer
+       conditioned.
+       (dist): Build $(distdir).tar.gz conditionally.
+       (distcheck): Use DIST_ARCHIVES to find an archive to unpack, and
+       to list built archives.  Run $(MAKE) dist instead of dist-gzip.
+       * automake.texi (Options, The types of distributions): Adjust.
+
+2003-06-15  Jens Elkner  <elkner@imsgroup.de>  (tiny change)
+
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Fix sed commands to work with
+       POSIXLY_CORRECT=1.
+
+2003-06-14  Karl Berry  <karl@gnu.org>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * mkinstalldirs (scriptversion): New variable.  Setup emacs hooks
+       to update it each time the file is written, as in install-sh.
+       (usage): Improve message.
+       (--version): New option.
+       (--help): Output to stdout, not stderr.
+
+2003-06-13  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/install-sh (dsttmp, rmtmp): Do not use '#' in file names;
+       it's not guaranteed by POSIX and it doesn't work on OpenVMS.
+       Bug reported by Bernard Giroud in:
+       http://mail.gnu.org/archive/html/autoconf-patches/2003-06/msg00013.html
+
+2003-06-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (check_gnu_standards): Use no-installman and
+       no-installinfo's locations.
+       (process_option_list): Fill %options with locations.
+       (check_cygnus) Fill $options{'no-installinfo'} and
+       $options{'no-dependencies'} with $cygnus_mode, so that it
+       remains a Location.
+       * tests/gnuwarn2.test: New file.
+       * tests/Makefile.am (TESTS): Add gnuwarn2.test.
+
+2003-06-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (process_option_list): Record the location
+       of ansi2knr's definition.
+       (handle_compile): Use it.
+       * tests/ansi3.test: Make sure the location appears correctly.
+       Update to use set -e.
+       * tests/ansi3b.test: New file.
+       * tests/Makefile.am (TESTS): Add ansi3b.test.
+
+       * tests/alpha.test: Really run $MAKE.  Augment to test
+       subdirectories, and check-news report.
+       * tests/alpha2.test: New file.  Bug report from Akim Demaille.
+       * tests/gnits2.test: Make sure README-alpha is not distributed.
+       * tests/Makefile.am (TESTS): Add alpha2.test.
+       * automake.in (handle_minor_options): Distribute README-alpha
+       using push_dist_common, not require_file_with_macro.
+
+2003-06-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Configure_ac.pm
+       (search_configure_ac, find_configure_ac): Rename as ...
+       (find_configure_ac, require_configure_ac): ... these.
+       * aclocal.in (scan_configure): Adjust call to require_configure_ac.
+       * automake.in (scan_autoconf_files): Likewise.
+       Suggested by Tim Van Holder.
+
+       * alocal.in: Use Automake::Configure_ac.
+       ($configure_ac): Delete.
+       (scan_configure): Adjust use of find_configure_ac;
+       * automake.in: Use Automake::Configure_ac.
+       ($configure_ac): Delete.
+       (scan_autoconf_files): Adjust use of find_configure_ac;
+       * lib/Automake/Configure_ac.pm: New file.
+       * lib/Automake/General.pm (find_configure_ac): Delete.  Now
+       replaced by Automake::Configure_ac::search_configure_ac.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add Configure_ac.pm.
+       * lib/Automake/Variable.pm: Use Automake::Configure_ac.
+       (require_variables): Adjust use of $configure_ac.
+
+2003-06-02  Akim Demaille  <akim@epita.fr>
+
+       * lib/am/texi-vers.am, lib/am/subdirs.am, lib/am/scripts.am,
+       * lib/am/remake-hdr.am, lib/am/python.am, lib/am/progs.am,
+       * lib/am/program.am, lib/am/multilib.am, lib/am/mans.am,
+       * lib/am/mans-vars.am, lib/am/ltlibrary.am, lib/am/ltlib.am,
+       * lib/am/lisp.am, lib/am/libtool.am, lib/am/library.am,
+       * lib/am/lang-compile.am, lib/am/java.am, lib/am/header.am,
+       * lib/am/header-vars.am, lib/am/footer.am, lib/am/depend.am,
+       * lib/am/dejagnu.am, lib/am/data.am, lib/am/compile.am,
+       * lib/am/clean.am, lib/am/clean-hdr.am, lib/am/check.am,
+       * lib/am/ansi2knr.am, lib/am/Makefile.am, lib/Makefile.am,
+       * m4/strip.m4, m4/sanity.m4, m4/runlog.m4, m4/regex.m4,
+       * m4/python.m4, m4/protos.m4, m4/options.m4, m4/obsolete.m4,
+       * m4/obsol-lt.m4, m4/obsol-gt.m4, m4/multi.m4, m4/missing.m4,
+       * m4/minuso.m4, m4/maintainer.m4, m4/lispdir.m4, m4/lex.m4,
+       * m4/install-sh.m4, m4/header.m4, m4/gcj.m4, m4/dmalloc.m4,
+       * m4/depout.m4, m4/cond.m4, m4/ccstdc.m4, m4/auxdir.m4, m4/as.m4,
+       * m4/Makefile.am: White space changes and Copyright updates.
+
+2003-05-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (check_defined_unconditionally): Add
+       the $parent_cond argument.
+       (output): Use $self->name in diagnostic not $self.
+       (variable_value_as_list): Rename as ...
+       (value_as_list): ... this.  Declare as a method.  Take a $parent_cond
+       argument and pass it to check_defined_unconditionally.  Do not call
+       variable_assert, now that this is a method.
+       (variable_assert): Delete (unused).
+       * automake.in (traverse_variable_recursively_worker): Adjust to
+       use check_defined_unconditionally and value_as_list as a methods.
+
+       * lib/Automake/Variable.pm (output): Declare as a method, since it
+       is only used this way.
+       (define): Fix documentation of $cond.
+       Suggested by Raja R. Harinath.
+
+2003-05-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm, lib/Automake/VarDef.pm: New files.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add Variable.pm
+       and VarDef.pm.
+       * automake.in: Use Automake::Variable and Automake::VarDef.
+       (MACRO_PATTERN): Delete. Now Automake::Variable::_MACRO_PATTERN.
+       (am_macro_for_var): Delete. Now Automake::Variable::_am_macro_for_var.
+       (ac_macro_for_var): Delete. Now Automake::Variable::_ac_macro_for_var.
+       (silent_variable_override): Delete.  Now
+       Automake::Variable::_silent_variable_override.
+       (var_value, var_location, var_comment, var_type, var_owner,
+       var_pretty, content_seen): Delete.  This functionality is now
+       offered by Automake::Variable and Automake::VarDef.
+       (VAR_AUTOMAKE, VAR_CONFIGURE, VAR_MAKEFILE, VAR_ASIS, VAR_PRETTY):
+       Delete.  Now defined in Automake::VarDef.
+       (var_order): Delete.  Now Automake::Variable::_var_order.
+       (appendvar): Delete.  Now Automake::Variable::_appendvar.
+       (var_SUFFIX_trigger): Register using Automake::Variable::hook.
+       (initialize_per_input): Call Automake::Variable::reset.
+       (err_var, msg_cond_var, msg_var, reject_var): Delete.  Now
+       defined in Automake::Variable.
+       (generate_makefile, process_option_list, handle_languages)
+       (traverse_variable_recursively_worker)
+       (transform_variable_recursively, handle_compile)
+       (handle_libraries, handle_ltlibraries)
+       (check_typos, handle_dist, handle_subdirs, scan_autoconf_files):
+       Adjust to use Automake::Variable functions.
+       (check_ambiguous_condition): Delete.  Now
+       Automake::Variable::_check_ambiguous_condition.
+       (condition_ambiguous_p): Delete.  Now
+       Automake::Variable::condition_ambiguous_p.
+       (variable_not_always_defined_in_cond): Delete.  Now
+       Automake::Variable::not_always_defined_in_cond.
+       (macro_define): Delete.  Now Automake::Variable::define.
+       (macro_delete): Delete.  Now Automake::Variable::variable_delete.
+       (macro_dump): Delete.  Now Automake::Variable::variable_dump.
+       (macros_dump): Delete.  Now Automake::Variable::variables_dump.
+       (variable_defined): Delete.  Now
+       Automake::Variable::variable_defined, with the target check
+       temporarily disabled.
+       (variable_assert): Delete.  Now Automake::Variable::variable_assert.
+       (examine_variable): Delete.  Now
+       Automake::Variable::examine_variable.
+       (variable_conditions): Delete.  Now Automake::Variable::conditions.
+       (scan_variable_expansions): Delete.  Now
+       Automake::Variable::scan_variable_expansions.
+       (check_variable_expansions): Delete.  Now
+       Automake::Variable::check_variable_expansions.
+       (check_variable_defined_unconditionally): Delete.  Now
+       Automake::Variable::check_defined_unconditionally.
+       (variable_value): Delete.  Now Automake::Variable::variable_value.
+       (variable_value_as_list): Delete.  Now
+       Automake::Variable::variable_value_as_list.
+       (variable_value_as_list_recursive_worker): Adjust to use
+       Automake::Variable functions.
+       (variable_output): Delete.  Now Automake::Variable::output.
+       (define_pretty_variable, define_configure_variable, read_am_file)
+       (define_standard_variables, read_main_am_file): Adjust to use
+       Automake::Variable functions.
+       (handle_variables): Delete.  Now Automake::Variable::output_variables.
+       (file_contents_internal, am_primary_prefixes, am_install_var)
+       (require_file_with_macro, require_conf_file_with_macro)
+       (push_dist_common): : Adjust to use
+       Automake::Variable functions.
+       (require_variables): Delete.  Now
+       Automake::Variable::require_variables.
+       (require_variables_for_macro): Delete.  Now
+       Automake::Variable::require_variables_for_variable.
+       * tests/Makefile.am (XFAIL_TESTS): Add target.test.
+
+2003-05-25  Christian Cornelssen  <ccorn@cs.tu-berlin.de>  (tiny change)
+
+       * tests/dejagnu7.test: Check if runtest supports --status.
+
+2003-05-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Location.pm (dump): Output 'INTERNAL' when position
+       is undefined.
+
+       * lib/Automake/DisjConditions.pm (human): Fix infinite loop when
+       $self contains only one Condition.
+
+       * automake.in: Use plain strict, including refs.
+       (macro_define, handle_single_transform_list): Use \&{'name'} to
+       build references to named subroutines.
+
+2003-05-22  Karl Berry  <karl@gnu.org>
+
+       * automake.texi: Update @dircategory to match the Free Software
+       Directory.  End directory entries with dots.
+
+2003-05-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (maintainer-mode): s/François/Fran@,{c}ois/.
+
+       * lib/elisp-comp: s/François/Franc,ois/.
+       Suggested by Paul Eggert.
+
+       * automake.in: Move the "main" code at the end.
+       (parse_arguments): Move near the end.
+       ($KNOWN_EXTENSIONS_PATTERN, @known_extensions_list,
+       accept_extensions, var_SUFFIXES_trigger): Move these definitions
+       before any call to register_language.
+       (am_file): Move the definition with all other global variables,
+       do not use local to define it.
+       * Makefile.am (maintainer-check): Expect no `local' in Automake.
+
+2003-05-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Wrap.pm, lib/Automake/tests/Wrap.pl: New files.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add Wrap.pm.
+       * lib/Automake/tests/Makefile.am (TESTS): Add Wrap.pl.
+       * automake.in (handle_texinfo_helper, pretty_print_rule)
+       (variable_output): Adjust to use makefile_wrap instead of
+       pretty_print_internal.
+       (pretty_print_internal): Remove.  Renamed as Automake::Wrap::wrap
+       and augmented to accept the $eol and $max_len arguments.
+
+2003-05-18  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Autom4te/XFile.pm, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: New upstream versions.
+
+2003-05-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/install.am (install, install-exec, install-data, uninstall):
+       Declare conditionally using a if/else/endif block instead of
+       using ?SUBDIRS?-style conditions.  The latter fail when
+       %maybe_BUILT_SOURCES% is replaced by several lines.
+       This fixes a bug introduced on 2003-04-06.
+       * tests/bsource.test: New file.
+       * tests/Makefile.am (TESTS): Add bsource.test.
+       Reported by Bruno Haible.
+
+2003-05-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (renamed objects): New node.
+       (Program and Library Variables): Move maude_DEPENDENCIES closer
+       to maude_LDADD.  Define and use `per-target compilation flags' in the
+       explanation for maude_CFLAGS et al.  Link to the `renamed objects'
+       node.  Illustrate maude_SHORTNAME.
+
+2003-05-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/install-sh: Update copyright notice and license to that of
+       X11R6.  This removes an advertising clause reported as Debian bug
+       #191717.
+
+2003-05-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.in (ACLOCAL): Do not use -I, --acdir is enough.
+
+       * m4/make.m4: Rename the doit target as am__doit,
+       and make it phony.
+       Reported by Philip S Tellis.
+
+2003-05-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/configure.am (%MAKEFILE-IN%): Propagate automake's exit
+       status.
+       * tests/makej.test: New file (test Autom4te's cache locking,
+       new in CVS Autoconf).
+       * tests/Makefile.am (TESTS): Add makej.test.
+
+2003-05-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/General.pm (contents): New function.
+       * aclocal.in (greatest_mtime, force_output): New globals.
+       (scan_configure, add_file): Update $greatest_mtime.
+       (parse_arguments): Parse --force.
+       (write_aclocal): Do not overwrite $output_file unless needed.
+       * automake.texi (aclocal options): Document --force.
+       * tests/aclocal7.test: New file.
+       * tests/Makefile.am (TESTS): Add aclocal7.test.
+
+2003-05-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (Optional): Document m4_include.
+       (Invoking aclocal): Shake a bit to introduce the various uses
+       of aclocal and explain that aclocal will use m4_include for
+       local files.
+       (Extending aclocal): Show how to install installable macros
+       in $(datadir)/aclocal, and make it clearer that writing installable
+       macros is not the only way to extend aclocal.
+       (Local Macros, Future of aclocal): New sections.
+
+2003-04-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (@common_files): Remove acinclude.m4 since
+       it will be m4_included by aclocal.m4 and files are always
+       distributed.
+       (scan_aclocal_m4): Do not bother about acinclude.m4 anymore.
+       We will get this dependency when tracing m4_includes.
+       * tests/aclocal6.test: Make sure acinclude.m4 is distributed
+       when used.
+       * tests/acinclude.test: Delete.
+       * tests/Makefile.am (TESTS): Remove acinclude.test.
+
+2003-04-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_configure): Don't add @configure_deps to
+       DIST_COMMON, we do this from lib/am/configure.am now.
+       Define the am__configure_deps variable instead of substituing
+       %CONFIGURE_DEPS%.
+       * lib/am/configure.am (%MAKEFILE-IN%, $(top_srcdir)/configure,
+       $(ACLOCAL_M4)): Use $(am__configure_deps) instead of %CONFIGURE_DEPS%.
+       (DIST_COMMON): Add $(am__configure_deps).
+
+       * tests/aclocal6.test: New file.
+       * lib/am/configure.am (am--refresh): New rule.
+       (%MAKEFILE-IN%, %MAKEFILE%, $(top_builddir)/config.status,
+       $(top_srcdir)/configure): Call the top-level am--refresh from
+       subdirectories.
+       ($(ACLOCAL_M4)): Depend upon %CONFIGURE_DEPS%.  Call the
+       top-level am--refresh when not in the top-level directory.
+       Fix jump directories for VPATH builds.
+       Suggested by Raja R. Harinath.
+
+2003-04-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (scan_aclocal_m4): Do not parse ACLOCAL_AMFLAGS
+       and glob for m4_files (We've got all local m4 files while
+       tracing m4_include's).  Diagnose ACLOCAL_M4_SOURCES as obsolete.
+       Distribute aclocal.m4 only at the top-level.
+       (my_glob): Remove.  This fixes PR automake/11.
+       (handle_dist): Strip leading `./' from directories.
+       * aclocal.in (add_file): Output 'm4_include([file.m4])' instead
+       of copying local files.
+       (write_aclocal, parse_arguments): Bump copyright date.
+       * configure.in: De not build m4/amversion.m4 from here ...
+       * m4/Makefile.am ($(srcdir)/amversion.m4): ... do this here.
+       (nodist_m4data_DATA): Use $(srcdir)/amversion.m4 instead
+       of amversion.m4.
+       * tests/Makefile.am (XFAIL_TESTS): Remove aclocal5.test.
+       (TESTS): Remove aclocal2.test.  Do not test aclocal.test twice.
+       * tests/aclocal2.test: Delete (pointless).
+       * tests/aclocal5.test: Make sure configure's dependencies are
+       distributed.
+       * tests/acinclude.test: Adjust to search for m4_include.
+       * tests/dirlist.test, tests/dup3.test: Run $AUTOCONF and grep
+       configure instead of aclocal.m4.
+
+       For PR automake/46:
+       * automake.in (scan_aclocal_m4): Work in all directories, not only
+       the top-level.  Prepend $(top_srcdir) in front of each aclocal.m4
+       dependency.
+       * lib/am/configure.am (config.status, configure, $(ACLOCAL_M4)):
+       Define rebuild rules in each directory.
+       * tests/subdir8.test: Augment to exercise aclocal.m4's dependencies
+       from the top-level directory.
+       * tests/aclocal5.test: New file.  Exercise aclocal.m4's dependencies
+       from a subdirectory.
+       * tests/Makefile.am (TESTS): Add aclocal5.test.
+       (XFAIL_TESTS): Replace subdir8.test by aclocal5.test.
+
+2003-04-24  Akim Demaille  <akim@epita.fr>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/46:
+       * lib/am/configure.am (%MAKEFILE-IN%): If Makefile.in is rebuilt
+       because of one of configure's dependencies, run automake without
+       argument to update the whole tree at once.  Depend upon
+       %CONFIGURE_DEPS%.
+       (%MAKEFILE%): If Makefile is rebuilt because config.status has
+       been updated, run config.status without arguments.
+       * automake.in (scan_autoconf_traces): Prepend $(top_srcdir)
+       before all files in @configure_deps.
+       * tests/subdir5.test: Modernize configure.in, make sure
+       maude/Makefile was actually created, and exercise %CONFIGURE_DEPS%.
+       * tests/subdir8.test: New file.
+       * tests/Makefile.am (TESTS): Add subdir8.test.
+       (XFAIL_TESTS): Replace subdir5.test by subdir8.test.
+
+2003-04-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (Requirements): Typo in index
+       s/AC_CONFIG_FILE/AC_CONFIG_FILES/.
+
+       * lib/texinfo.tex: New upstream version.
+
+2003-04-21  Jim Meyering  <jim@meyering.net>
+
+       * lib/mkinstalldirs: Remove each sequence of spaces before a
+       TAB character.
+       * lib/depcomp: Search for TAB-SPC, not SPC-TAB.
+
+2003-04-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix for PR automake/389:
+       * automake.in (handle_configure): Don't put $colon_infile in
+       CONFIG-MAKEFILE.
+       * tests/conff.test: New file.
+       * tests/Makefile.am (TESTS): Add conff.test.
+       Reported by Alexander Turbov.
+
+2003-04-18  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/defs.in: Handle required=etags to work around
+       Exuberant Ctags.
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: New upstream
+       versions.
+
+       * tests/dejagnu3.test, tests/dejagnu4.test, tests/dejagnu5.test:
+       Distribute dejagnu test cases, so that distcheck actually runs them.
+
+2003-04-18  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * lib/am/dejagnu.am (site.exp): Don't define tool in site.exp,
+       because we set that by invoking runtest with --tool.
+       * tests/Makefile.am (TESTS): Add dejagnu4.test, dejagnu5.test,
+       dejagnu6.test, dejagnu7.test.
+       * tests/dejagnu4.test: New test.
+       * tests/dejagnu5.test: New test.
+       * tests/dejagnu6.test: New test.
+       * tests/dejagnu7.test: New test.
+
+       * tests/dejagnu3.test: Make sure the DejaGnu test is actually run.
+
+2003-04-18  Jim Meyering  <jim@meyering.net>
+
+       * automake.in (variable_output): Fix typo in comment s/is/if/.
+
+       * lib/am/yacc.am (?!GENERIC?%OBJ% aka .y.c): Don't redirect
+       directly to $@.  Instead, redirect to $@t and rename upon success.
+       Also, move the commands that update $@ so they are last.  Otherwise,
+       this rule could leave the user with an up to date target (.c file)
+       but with a missing or corrupted corresponding .h file.
+
+2003-04-17  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * tests/defs.in: Handle required=runtest, to detect runtest
+       from DejaGnu.
+       * tests/Makefile.am (TESTS): Add dejagnu3.test.
+       * tests/dejagnu3.test: New test.
+
+2003-04-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (rule_define): If the user tries to override
+       an Automake which has a -local variant, suggest using the
+       -local variant in the -Woverride diagnostic.
+       (handle_factored_dependencies): Register factored
+       rules with rule_define, and define them only in undefined
+       conditions.
+       * tests/Makefile.am (TESTS): Add override.test.
+       * tests/overrid.test: New file.
+       * tests/phony.test: Count the number of .PHONY targets.
+
+2003-04-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/distdir.am (distuninstallcheck, distcleancheck): Silence
+       these rules, so that we don't confuse users by echoing
+       "echo ERROR:" commands which are not run.
+
+2003-03-14  Richard Dawe  <rich@phekda.freeserve.co.uk>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (output_texinfo_build_rules, handle_texinfo_helper,
+       initialize_per_input):  Add infrastructure for generating HTML
+       documentation from texinfo source.
+       * lib/am/texinfos.am: Add rules for building HTML documentation
+       from texinfo source.
+       * lib/am/texibuild.am: Likewise.
+       * automake.texi (Texinfo): Document rules for building
+       HTML documentation from texinfo source.
+       * tests/txinfo21.test: New file.
+       * tests/Makefile.am (TESTS): Add txinfo21.test.
+       * tests/defs.in: Handle required=makeinfo-html.
+
+2003-04-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (%silent_variable_override): New variable.
+       (macro_define): Warn about variable definitions overriding
+       Automake variables.
+       (rule_define): Warn about target definitions overriding
+       Automake variables.  Fix $condmsg definition.
+       * automake.texi (Invoking Automake): Document the `override'
+       category.
+       * lib/Automake/ChannelDefs.pm (usage): Likewise.
+       * lib/am/texinfos.am [!%?CYGNUS] (MAKEINFO): Do not define,
+       this is already done in m4/init.m4.
+       * tests/dejagnu2.test: Run $MAKE, don't only grep.  Use
+       -Wno-override, and make sure we get a warning without.
+       * tests/exeext2.test, tests/substtarg.test: Use -Wno-override,
+       and make sure we get a warning without.
+       * tests/exeext3.test, tests/java2.test, tests/nolink.test,
+       tests/subpkg.test, tests/vartest.test: Use -Wno-override.
+       * tests/txinfo13.test: Use installcheck-local instead of overriding
+       installcheck.
+       * tests/txinfo2.test: Run $MAKE on the real Makefile (this test
+       used to succeed thanks to a failure...)
+       * tests/location.test: Adjust expected messages.
+       * tests/Makefile.am (XFAIL_TESTS): Add txinfo5.test.
+
+2003-04-12  Raja R Harinath  <harinath@acm.org>
+
+       * lib/Automake/DisjConditions.pm (true): Don't cache answer.
+       (invert): Update comment.
+       (_simplify): Remove.
+       (simplify): Implement using invert().
+       * lib/Automake/tests/DisjConditions.pl (test_simplify):
+       Update to reflect changes.
+
+2003-04-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (scan_autoconf_files): Augment the error message
+       about AM_INIT_AUTOMAKE not found.
+       Suggested by Bruno Haible.
+
+       * lib/Automake/Version.pm: New file.
+       * lib/Automake/Makefile.am (dist_perllib_DATA): Add Version.pm.
+       * lib/Automake/tests/Version.pl: New file.
+       * lib/Automake/tests/Makefile.am (TESTS): Add Version.pl.
+       * tests/Makefile.am (TESTS): Remove version5.test.
+       * tests/version5.test: Delete.  Move the tests to Version.pl.
+       * automake.in (version_split, version_compare, version_check): Move ...
+       * lib/Automake/Version.pm (split, compare, check): ... here.
+
+2003-04-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/tests/Condition.pl (test_reduce_and)
+       (test_reduce_or): Cosmetics.
+       * lib/Automake/tests/DisjConditions.pl (test_sub_conditions):
+       Fix a comment.
+       * lib/Automake/DisjConditions.pm (sub_conditions): Add missing C<...>
+       in comment.
+       * tests/yacc8.test, configure.in: Update copyright year.
+
+2003-04-10  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * configure.in: Get the build platform name.  Define
+       MODIFICATION_DELAY as the time to wait after modifying a file,
+       to cope with timestamp granularity issues, depending
+       on the platform.
+       * tests/defs.in: Define `sleep' using MODIFICATION_DELAY.
+
+2003-04-10  Eric Siegerman  <eric_97@pobox.com>  (tiny change)
+
+       * automake.texi (Public macros): Clarify that the new
+       AM_INIT_AUTOMAKE variant is preferred, and the old one
+       deprecated.  Copy-edit the rest of the AM_INIT_AUTOMAKE item.
+       (Hello): Caution that the example uses the deprecated
+       AC_INIT/AM_INIT_AUTOMAKE syntax, and xref to the discussion.
+
+2003-04-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Retain all variable definitions until the whole Makefile.am has
+       been processed, then output all variables in one step, at the top
+       of Makefile.in.  (Older revisions used to output user variables
+       before generating Automake targets, and to mix Automake variables
+       with Automake targets, preventing redefinitions of previously
+       output variables.)
+
+       * automake.in (%var_pretty): New variable.
+       (VAR_ASIS, VAR_PRETTY): New constants.
+       (@var_list): Rename as ...
+       (@var_order): ... this.
+       (initialize_per_input): Clear %var_pretty.
+       (handle_variables): New function, extracted from ...
+       (read_main_am_file): ... here.
+       (generate_makefile): Call handle_variable after everything else.
+       (handle_dist): Use define_pretty_variable, not pretty_print.
+       (pretty_print): Delete.
+       (macro_define): Augment with $COMMENT and $PRETTY parameters.
+       Update %var_comment, %var_pretty, and @var_order.  Adjust callers.
+       (variable_pretty_output): Merge with ...
+       (variable_output): ... this, and choose the prettiness on a
+       per-condition basis.
+       (append_comments): Delete.  This work is now done by macro_define.
+       (read_am_file, file_contents_internal): Don't call append_comments
+       nor update @var_list, adjust calls to macro_define.
+       (handle_subdirs): Don't explicitly output RECURSIVE_TARGETS,
+       just mark it as VAR_PRETTY.
+       * tests/exeext.test: Make sure bin_PROGRAMS is output only once.
+       Report from Jim Meyering.
+
+2003-04-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_installdirs): Rename as ...
+       (handle_install): ... this.  Define maybe_BUILT_SOURCES.
+       (generate_makefile): Adjust call to handle_install.
+       * lib/am/install.am (install): Use %maybe_BUILT_SOURCES%.
+       * automake.texi (Sources, Built sources example): BUILT_SOURCES
+       is honored by `make install' too.
+       * tests/check3.test: Make sure that `make install' also depends
+       upon BUILT_SOURCES.
+       Report from Alexander Turbov.
+
+       * lib/am/libs.am (ARFLAGS): Define.
+       * automake.in (handle_libraries): Use `$(ARFLAGS)' instead of
+       hard-coding `cru'.
+       * automake.texi (A Library): Explain how AR, ARFLAGS and RANLIB
+       are used, and how they can be overridden.
+       (Program and Library Variables): Adjust to show `$(ARFLAGS)'
+       instead of `cru'
+       * tests/ar.test: Rewrite to test for AR, ARFLAGS, and RANLIB.
+       * tests/ranlib.test: Delete, obsoleted by ar.test.
+       * tests/Makefile.am (TESTS): Remove ranlib.test.
+       Report from Paul Thomas.
+
+2003-04-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (check_trailing_slash): New function (variation on
+       a patch by Peter Muir).  Diagnose whitespaces following trailing
+       backslash.
+       (read_am_file): Use it.
+       * tests/backsl4.test: New file.
+       * tests/Makefile.am (TESTS): Add backsl4.test.
+       Reported by Peter Muir.
+
+2003-03-29  Raja R Harinath  <harinath@acm.org>
+
+       Speedup Automake::DisjConditions::invert().
+       * lib/Automake/Condition.pm (multiply): New.
+       * lib/Automake/DisjConditions.pm (_multiply): Use it.
+       (sub_conditions): Likewise.
+
+       * lib/Automake/Condition.pm (reduce): Rename to ...
+       (reduce_and): ... this.
+       (reduce_or): New.
+       * lib/Automake/DisjConditions.pm (_multiply): Use reduce_or().
+       * lib/Automake/tests/Condition.pl (test_reduce): Rename to ...
+       (test_reduce_and): ... this.
+       (test_reduce_or): New.
+       * lib/Automake/tests/DisjConditions.pl
+       (test_invert): Update to reflect effect of reduce_or().
+       (test_simplify): Don't skip invert() on larger inputs.
+
+2003-03-29  Raja R Harinath  <harinath@cs.umn.edu>
+
+       * tests/yacc8.test: Add a $sleep before modifying Makefile.am so
+       that timestamp will change.
+
+2003-03-23  Akim Demaille  <akim@epita.fr>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/tags.am (TAGS): Use --etags-include instead of --include,
+       when supported by etags (Exuberant Ctags).
+       * tests/tagsub.test: Rewrite to _run_ the `tags' rule.
+
+2003-03-20  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For Debian Bug #185388:
+       * automake.texi (Extending): Augment the install-exec-hook
+       discussion with an example how to symlink a versioned binary.
+       * tests/insthook.test: Rewrite to test the above example.
+       Report from James R. Van Zandt.
+
+2003-03-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * Makefile.am (maintainer-check): Allow `automake:' tokens,
+       occuring in location.test.  Automake now has 5 legitimate
+       unsubstituted @strings@.
+
+       * tests/aclocal4.test: Require GNU make.
+
+2003-03-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/aclocal4.test: New file.  Test for the ACLOCAL_M4 bug below.
+       * tests/Makefile.am (TESTS): Add aclocal4.test.
+
+2003-03-14  Jim Meyering  <jim@meyering.net>
+
+       * automake.in (scan_aclocal_m4): Define ACLOCAL_M4 even in
+       subdirectories.  Makefile.in depends on that variable.
+
+2003-03-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/init.m4: Remove a leftover comment from the pre-1.7 era.
+
+       Fix for PR automake/386:
+       * m4/init.m4: Require Autoconf 2.55.
+       Reported by Owen Taylor.
+
+       * lib/am/depend2.am (?GENERIC?%EXT%.o, ?GENERIC?%EXT%.obj)
+       (?GENERIC?%EXT%.lo): Use `mv -f' instead of `mv' in FASTDEP mode.
+       Suggested by Matthias Andree.
+
+       * tests/README: Typo.
+
+2003-03-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/depend2.am (?GENERIC?%EXT%.o, ?GENERIC?%EXT%.obj)
+       (?GENERIC?%EXT%.lo): Hide the if/then/else machinery for FASTDEP.
+       Just echo the gcc command.
+       Suggested by Karl Berry.
+
+2003-03-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/depend2.am (?GENERIC?%EXT%.lo): Do not use
+       `test -f foo || echo $(srcdir)/` to emulate a VPATH search when
+       outputing suffix rules.  This follows 2003-02-25's change.
+       * lib/am/lex.am (?GENERIC?%EXT%%DERIVED-EXT%): Likewise.
+       * lib/am/yacc.am (?GENERIC?%EXT%%DERIVED-EXT%): Likewise.
+
+2003-03-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (Requirements) <AC_CONFIG_FILES>: Files listed
+       with AC_CONFIG_FILES are cleaned by `make distclean'.  Don't
+       pretend otherwise.
+       Reported by Rafael Laboissiere.
+
+2003-03-04  Andreas Buening  <andreas.buening@nexgo.de>
+
+       * lib/mdate-sh: Find out which column of the ls -l output contains
+       the month. Do not assume it is at least the fifth column.
+
+2003-02-26  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (Emacs Lisp): Mention that `dist_' can be used.
+
+       * automake.texi (Emacs Lisp): Instruct people to use lisp_DATA
+       instead of lisp_LISP when they don't want byte-compilation.
+       Don't mention ELCFILES anymore.
+       * automake.in (handle_data): Allow lisp_DATA.
+       * tests/lisp5.test: New file.
+       * tests/Makefile.am (TESTS): Add lisp5.test.
+
+       * automake.in (handle_emacs_lisp): Don't build *.elc files
+       if ELCFILES was set empty.
+       * tests/lisp4.test: New file.
+       * tests/Makefile.am (TESTS): Add lisp4.test.
+       Reported by Simon Josefsson.
+
+       * tests/lex3.test, tests/lex5.test: Require flex.
+       Reported by Leo Davis.
+
+2003-02-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/depend2.am (?GENERIC?%EXT%.o, ?GENERIC?%EXT%.obj): Do not
+       use the `test -f foo || echo $(srcdir)/` to emulate a VPATH search
+       when outputing suffix rules.
+       * lib/am/texibuild.am (?GENERIC?%SOURCE_SUFFIX%.dvi)
+       (?GENERIC?%SOURCE_SUFFIX%.pdf): Likewise.
+       Suggested by Bruno Haible.
+
+       * automake.in (read_am_file): Catch trailing backslashes on last line.
+       * tests/backsl3.test: New file.
+       * tests/Makefile.am (TESTS): Add backsl3.test.
+       Reported by Akim Demaille.
+
+2003-02-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * ChangeLog: Move 2002's entries to ...
+       * ChangeLog.02: ... this new file.
+       * Makefile.am (EXTRA_DIST): Add ChangeLog.02.
+
+2003-02-24  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * tests/version7.test: Use $sleep to sleep before updating
+       the version, to work around timestamp inconsistencies in Windows.
+
+2003-02-24  Bruno Haible  <bruno@clisp.org>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/texibuild.am: Don't remove the target info files. Instead,
+       back up and restore them if makeinfo fails.
+       * tests/txinfo20.test: New file.
+       * tests/Makefile.am (TESTS): Add txinfo20.test.
+
+2003-02-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (FAQ, CVS, maintainer-mode, wildcards)
+       (distcleancheck): Fix typos and other errors reported by Karl
+       Berry.
+
+2003-02-20  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/texibuild.am (%SOURCE_SUFFIX%%DEST_SUFFIX%): Use $(...)
+       instead of ${...}.
+
+       * tests/defs.in: Handle required=ro-dir.
+       * tests/destdir.test: Use this.
+
+2003-02-19  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * lib/am/distdir.am (distcheck): Strip any leading DOS drive
+       from dc_install_base.
+
+2003-02-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/texinfos.am (install-info-am, uninstall-info-am): Install
+       DJGPP-style *.iNN info files.
+       (maintainer-clean-aminfo): Rewrite using the same pattern
+       as in uninstall-info-am.
+       * lib/am/texibuild.am (%SOURCE_SUFFIX%%DEST_SUFFIX%): Erase
+       DJGPP-style *.iNN info files before running $(MAKEINFO).
+       * tests/txinfo19.test: New file.
+       * tests/Makefile.am (TESTS): Add txinfo19.test.
+
+2003-02-18  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * lib/depcomp (dashmstdout): Cope with DOS filenames in
+       dependencies.
+
+2003-02-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/depcomp (makedepend): Don't pass $object to makedepend.
+       Reported by Stepan Kasal.
+
+2003-02-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/defs.in: Handle required=makedepend.
+
+       * Makefile.am (maintainer-check): Update the diff check
+       to account for the recent @SHELL@ substitution.
+
+2003-02-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/depcomp: Do not put comments on the `icc)' line.
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: New upstream
+       versions.
+
+       Fix for PR automake/381:
+       * automake.in (handle_gettext): Do not print diagnostics
+       about po/ and intl/ missing from SUBDIRS if po/ does not
+       exist.  Warn if `SUBDIRS = intl' is used although libintl
+       is 'external'.
+       * tests/gettext.test: Make sure diagnostics are not output
+       when po/ does not exist.
+       * tests/gettext2.test: Test for unwanted intl/.
+       PR from Alexander Turbov, fix suggested by Bruno Haible.
+
+       * m4/depend.m4: Grep depcomp's stderr for icc warnings about
+       ignored options.
+       * lib/depcomp (icc): New mode.
+       * tests/depcomp5.test: New file.
+       * tests/defs.in: Handle required=icc.
+       * tests/Makefile.am (TESTS): Add it.
+
+       Temporary hack for PR automake/381:
+       * automake.in (handle_gettext): Turn missing po/ and intl/ errors
+       into -Wsyntax warnings.
+
+2003-02-10  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * Makefile.am: Substitute @SHELL@ in automake.in and aclocal.in.
+       This makes the setting of SHELL work for DJGPP.
+
+2003-02-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/385:
+       * lib/depcomp (makedepend): Strip any libtool call, before
+       running makedepends.
+       * tests/depcomp4.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       Reported by Jeff Squyres.
+
+       Related to PR automake/385:
+       * lib/depcomp (dashmstdout): Do not use `-o /dev/null', or gcc will
+       write dependencies to /dev/null.  `-o /dev/null' was added
+       on 2002-06-13 just because I tried to replace `-o foo.o' by something
+       else and didn't thought about removing it entirely.
+       * tests/depcomp3.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+       * automake.in (BEGIN): Override $ENV{'SHELL'} with ./configure's
+       SHELL for DJGPP.
+       Suggested by Richard Dawe.
+
+2003-02-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (FAQ, CVS, maintainer-mode, wildcards)
+       (distcleancheck): New nodes.
+
+2003-02-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (scan_autoconf_files): Don't complain that
+       AM_INIT_AUTOMAKE comes from an old version if it was not found.
+
+2003-02-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (am_install_var): Simplify filtering of
+       variable_loc_and_value_as_list_recursive's output.
+
+2003-02-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/init.m4 (_AC_AM_CONFIG_HEADER_HOOK): Recompute
+       indexes of header files so we create stamp files with
+       the right numbers when config.status is run on some headers.
+       * tests/stamph2.test: Check for this.
+       Reported by Sander Niemeijer.
+
+2003-02-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (vars_scanned): Move near traverse_variable_recursively.
+       (traverse_variable_recursively,
+       traverse_variable_recursively_worker): Accept a $COND_FILTER argument
+       to filter out conditions during recursion.  Don't recurse into
+       undefined variables.  Don't pass empty results to &FUN_COLLECT.
+       (value_to_list): Remove, was used by
+       variable_value_as_list_recursive_worker only.
+       (variable_value_as_list_recursive_worker): Rewrite using
+       traverse_variable_recursively.  Remove the $parent argument.
+       (variable_value_as_list_recursive,
+       variable_loc_and_value_as_list_recursive): Adjust calls
+       to variable_value_as_list_recursive_worker.  Don't reset
+       %vars_scanned.
+       * tests/cond3.test: Don't expect empty helper variables,
+       we don't output them anymore.
+       * tests/cond30.test: Use an undefined variable.
+
+       * automake.in (handle_programs): Strip $(EXEEXT) before
+       calling &check_canonical_spelling.
+       * tests/exeext.test: Make sure we don't use a
+       maude3__EXEEXT__OBJECTS variable.
+
+2003-02-02  Jeremy Nimmer  <jwnimmer@alum.mit.edu>  (tiny change)
+
+       For Debian Bug #39542:
+       * automake.texi (Invoking Automake, Optional): Document how
+       AC_CONFIG_AUX_DIR interacts with missing files.
+
+2003-02-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/DisjConditions.pm (_permutations_worker)
+       (permutations): Remove, so that people aren't tempted to use it.
+       * lib/Automake/tests/DisjConditions.pl (tests_permutations): Remove.
+
+       * automake.in (variable_conditions_recursive): Remove.
+       (variable_conditionally_defined): Rewrite using
+       traverse_variable_recursively.
+
+       * automake.in (traverse_variable_recursively,
+       traverse_variable_recursively_worker): Pass one merged Condition
+       instead of a stack of conditions to &FUN_STORE and &FUN_COLLECT.
+       (transform_variable_recursively, define_objects_from_sources)
+       (handle_lib_objects, variable_conditions_recursive): Adjust usage.
+
+2003-02-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_lib_objects): Compute _DEPENDENCIES variables
+       using transform_variable_recursively instead of
+       variable_conditions_recursive and variable_value_as_list_recursive
+       to avoid combinatorial explosion.
+       (handle_lib_objects_cond): Merge into handle_lib_objects.
+       * tests/cond11.test: Don't grep internal details in Makefile.in,
+       run $MAKE to make sure the resulting Makefile runs as expected.
+       * tests/cond29.test: Also exercise conditional _LDADD.
+       * tests/cond31.test, tests/cond32.test: New files.
+       * tests/Makefile.am (TESTS): Add tests/cond31.test and
+       tests/cond32.test.
+
+2003-01-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_lib_objects_cond): Ignore -dlopen and
+       -dlpreopen in _LIBADD variables too.
+       (handle_LIBOBJS, handle_ALLOCA): New functions, extracted from
+       handle_lib_objects_cond.
+       * tests/libtool7.test: New file.
+       * tests/Makefile.am (TESTS): Add libtool7.test.
+
+       * automake.texi (Program and Library Variables): Clarify that
+       _LIBADD is for libraries and _LDADD for programs.
+
+       * automake.in (handle_source_transform): Correct typo from 2003-01-23.
+
+2003-01-28  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix for PR automake/352:
+       * automake.in (transform_variable_recursively): If the destination
+       and the source variables are the same, delete the source variable
+       before defining the destination variable.
+       (handle_programs): Strip any $(EXEEXT) suffix from $one_file,
+       or this will confuse handle_source_transform.
+       (append_exeext): Rewrite using transform_variable_recursively.
+       * tests/cond29.test, tests/cond30.test: New files.
+       * tests/exeext.test: Run ./configure and make, this uncovered
+       the above handle_programs issue.
+       * tests/Makefile.am (TESTS): Add cond29.test and cond20.test.
+
+       * automake.in (%subobjvar): Replace by ...
+       (%gen_varname): ... this.
+       (subobjname): Replace by ...
+       (gen_varname): ... this.
+       (initialize_per_input): Clean gen_varname instead of subobjname.
+       (transform_variable_recursively): New function, extracted
+       from define_objects_from_sources.
+       (define_objects_from_sources): Use transform_variable_recursively.
+       Remove the unused $parent argument.
+       (handle_source_transform): Adjust call to define_objects_from_sources.
+
+2003-01-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (@substfroms, @substtos): Move near
+       traverse_variable_recursively.
+       (traverse_variable_recursively, traverse_variable_recursively_worker):
+       New functions, extracted from define_objects_from_sources.
+       (define_objects_from_sources): Rewrite using
+       traverse_variable_recursively.
+       (handle_source_transform): Use variables_conditionally_defined
+       instead of calling variable_conditions_recursive directly.
+       Adjust the call to define_objects_from_sources; there is no need
+       to reset @substtos, @substfroms, and %vars_scanned now.
+       (variable_conditions_recursive): Rewrite using
+       traverse_variable_recursively.
+       (variable_conditions_recursive_sub): Remove.
+       (variable_conditionally_defined): Fix condition comparison (the
+       consequence was that DIST_SUBDIRS was always output).
+       * lib/Automake/Condition.pm (merge): Allow merging several
+       conditions at once.
+
+2003-01-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.texi (Python): Explain that directory variables start
+       with either ${prefix} or ${exec_prefix}, and point to the
+       `Installation Directory Variables' section of the Autoconf manual.
+
+2003-01-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/distdir.am (top_distdir, distdir): Define these
+       variables only in top level Makefile.  Redefine $(top_distdir)
+       as $(distdir).
+       (distdir): Fix passing of $(top_distdir) to sub-makes.
+       * automake.in (handle_dist): Do not define the DISTDIR and
+       TOP_DISTDIR transformations.  We don't need them anymore.
+       * automake.texi (Dist): Reorder the dist-hook section, and move
+       the DIST_SUBDIRS paragraph earlier.  Document distdir and
+       top_distdir.
+       * tests/subpkg.test: Update to check for $(distdir) and
+       $(top_distdir).
+
+2003-01-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Rename more files to accomodate 8+3 file systems, and adjust the
+       vocabulary at the same time: AM_CONDITIONAL defines "conditionals",
+       and we call "condition" a conjunction of "conditionals".
+       * lib/am/Conditional.pm: Rename to lib/am/Condition.pm.
+       * lib/am/tests/Conditional.pl: Rename to lib/am/tests/Condition.pl.
+       * lib/am/ConditionalSet.pm: Rename to lib/am/DisjConditions.pm.
+       * lib/am/tests/ConditionalSet.pl: Rename to
+       lib/am/tests/DisjConditions.pl
+       * lib/am/Conditional.pm (condition_negate): Rename to ...
+       * lib/am/Condition.pm (conditional_negate): ... this.
+       * automake.in: Adjust references to Condition and DisjConditions.
+       (check_ambiguous_conditional, conditional_ambiguous_p): Rename to ...
+       (check_ambiguous_condition, condition_ambiguous_p): ... these.
+
+       * tests/README: New file.
+
+       * automake.texi (Conditional Programs): Show a sample Makefile.am.
+       Remind $(EXEEXT) must be appended to configure substitutions.
+       Show how Automake conditionals can be used instead.
+       * tests/exeext.test (check_PROGRAMS): Make sure EXEEXT is also
+       appended to conditionally defined programs.
+
+2003-01-16  Jim Meyering  <jim@meyering.net>
+
+       Accept --help and --version, and lots of syntactic clean-up.
+       * lib/install-sh: Use consistent indentation, two spaces per level.
+       (scriptversion): New variable.
+       Change initializations like `variable=""' to `variable='.
+       (usage): New variable.
+       Use `test', not `['.
+       Use `test -z "$var"', not `[ x"$var" = x ]'.
+       Use `test -n "$var"', not `[ x"$var" != x ]'.
+       Alphabetize case entries.
+       Accept --help and --version options.
+       Remove unnecessary `else :' clauses.
+       Add a `Local variables' eval block to help emacs users update
+       the time-stamp variable added above.
+       Mostly from Karl Berry.
+
+2003-01-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/python.m4 (AM_PATH_PYTHON) <_AM_PYTHON_INTERPRETER_LIST>: Add
+       python2.3.
+
+       * m4/python.m4 (AM_PATH_PYTHON): Query distutils for `pythondir'
+       or `pyexecdir', for the sake of 64-bit distributions that usually
+       use lib64/ instead of lib/.  Fall back to the default directory
+       if it doesn't work.
+       Suggested by Gwenole Beauchesne.
+
+2003-01-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/382:
+       * automake.texi (Yacc and Lex): Document `AM_YFLAGS = -d'.
+       Explain BUILT_SOURCES is usually needed in this case.
+       Reported by William S Fulton.
+
+2003-01-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Rename some files for the sake of 8+3 file systems.
+       * tests/aclocali.test:     Rename to tests/aclocal.test.
+       * tests/aclocali1.test:    Rename to tests/aclocal2.test.
+       * tests/aclocalii.test:    Rename to tests/aclocal3.test.
+       * tests/acoutput.test:     Rename to tests/acoutpt.test.
+       * tests/acoutput2.test:    Rename to tests/acoutpt2.test.
+       * tests/acouttbs.test:     Rename to tests/acoutbs.test.
+       * tests/acouttbs2.test:    Rename to tests/acoutbs2.test.
+       * tests/autoheader.test:   Rename to tests/autohdr.test.
+       * tests/autoheader2.test:  Rename to tests/autohdr2.test.
+       * tests/condincl.test:     Rename to tests/condinc.test.
+       * tests/condincl2.test:    Rename to tests/condinc2.test.
+       * tests/distcommon.test:   Rename to tests/distcom.test.
+       * tests/distcommon2.test:  Rename to tests/distcom2.test.
+       * tests/distcommon3.test:  Rename to tests/distcom3.test.
+       * tests/installsh.test:    Rename to tests/instsh.test.
+       * tests/installsh2.test:   Rename to tests/instsh2.test.
+       * tests/instdata.test:     Rename to tests/instdat.test.
+       * tests/instdata2.test:    Rename to tests/instdat2.test.
+       * tests/libobj12b.test:    Rename to tests/libobj13.test.
+       * tests/link_f_c.test:     Rename to tests/link_fc.test.
+       * tests/link_f_c_cxx.test: Rename to tests/link_fccxx.test.
+       * tests/link_f_cxx.test:   Rename to tests/link_fcxx.test.
+       * tests/nodefine.test:     Rename to tests/nodef.test.
+       * tests/nodefine2.test:    Rename to tests/nodef2.test.
+       * tests/required.test:     Rename to tests/reqd.test.
+       * tests/required2.test:    Rename to tests/reqd2.test.
+       * tests/sourcesub.test:    Rename to tests/srcsub.test.
+       * tests/sourcesub2.test:   Rename to tests/srcsub2.test.
+       * tests/specflags.test:    Rename to tests/specflg.test.
+       * tests/specflags2.test:   Rename to tests/specflg2.test.
+       * tests/specflags3.test:   Rename to tests/specflg3.test.
+       * tests/specflags6.test:   Rename to tests/specflg6.test.
+       * tests/specflags7.test:   Rename to tests/specflg7.test.
+       * tests/specflags8.test:   Rename to tests/specflg8.test.
+       * tests/specflags9.test:   Rename to tests/specflg9.test.
+       * tests/subdircond.test:   Rename to tests/subcond.test.
+       * tests/subdircond2.test:  Rename to tests/subcond2.test.
+       * tests/subdircond3.test:  Rename to tests/subcond3.test.
+       * tests/texinfo.test:      Rename to tests/txinfo.test.
+       * tests/texinfo2.test:     Rename to tests/txinfo2.test.
+       * tests/texinfo3.test:     Rename to tests/txinfo3.test.
+       * tests/texinfo4.test:     Rename to tests/txinfo4.test.
+       * tests/texinfo5.test:     Rename to tests/txinfo5.test.
+       * tests/texinfo6.test:     Rename to tests/txinfo6.test.
+       * tests/texinfo7.test:     Rename to tests/txinfo7.test.
+       * tests/texinfo8.test:     Rename to tests/txinfo8.test.
+       * tests/texinfo9.test:     Rename to tests/txinfo9.test.
+       * tests/texinfo10.test:    Rename to tests/txinfo10.test.
+       * tests/texinfo13.test:    Rename to tests/txinfo13.test.
+       * tests/texinfo16.test:    Rename to tests/txinfo16.test.
+       * tests/texinfo17.test:    Rename to tests/txinfo17.test.
+       * tests/texinfo18.test:    Rename to tests/txinfo18.test.
+       * tests/Makefile.am (TESTS): Adjust.
+       * ChangeLog.1996: Rename to ChangeLog.96.
+       * ChangeLog.1998: Rename to ChangeLog.98.
+       * ChangeLog.2000: Rename to ChangeLog.00.
+       * ChangeLog.2001: Rename to ChangeLog.01.
+       * Makefile.am (EXTRA_DIST): Adjust.
+       Reported by Richard Dawe.
+
+2003-01-13  Richard Dawe  <rich@phekda.freeserve.co.uk>  (tiny change)
+
+       * lib/am/distdir.am (distcheck): '=' is not valid in DOS filenames.
+       Use '_build' and '_inst' instead of '=build' and '=inst'.
+       * tests/man2.test: Reflect change automake: check for files in
+       '_build' and '_inst' directories instead of '=build' and '=inst'.
+
+2003-01-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Use `_dirstamp' when the file-system doesn't support `.dirstamp'.
+       * m4/lead-dot.m4: New file.
+       * m4/Makefile.am (dist_m4data_DATA): Add lead-dot.m4
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require AM_SET_LEADING_DOT.:
+       * m4/depend.m4 (AM_SET_DEPDIR): Require AM_SET_LEADING_DOT. Define
+       DEPDIR using am__leading_dot.
+       * automake.in (require_build_directory): Define am__dirstamp, a new
+       variable for the dirstamp basename, based on am__leading_dot.
+       * tests/subobj6.test: Move all `test -f' into Makefiles, so we can
+       use $(am__dirstamp).
+       Reported by Richard Dawe.
+
+       * tests/gnits2.test, tests/pr300-prog.test, tests/transform.test:
+       Move all `test -f' into Makefiles, so we can honor $(EXEEXT) when
+       testing for programs.
+       Reported by Richard Dawe.
+
+2003-01-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * Makefile.am (maintainer-check): Suggest using $sleep instead of
+       sleep 2.
+       * tests/defs.in (sleep): New variable.
+       * tests/asm.test, tests/confsub.test, tests/lisp3.test,
+       tests/texinfo16.test, tests/warnopts.test, tests/yaccvpath.test:
+       Use $sleep instead of sleep 2, to work around timestamp
+       inconsistencies in Windows.
+       Reported by Richard Dawe.
+
+       * Makefile.am (maintainer-check): Do not require SHELL=/bin/sh
+       after $MAKE -e.
+       * tests/ansi3.test, tests/ansi5.test, tests/cond22.test,
+       tests/man2.test, tests/subobj3.test, tests/suffix8.test,
+       tests/suffix11.test: Do not set SHELL=/bin/sh after $MAKE -e.
+       $SHELL is overridden by tests/defs, so it won't hurt even
+       if $MAKE -e uses the $SHELL envvar.
+       * tests/ansi.test, tests/insh2.test, tests/texinfo.test,
+       tests/texinfo8.test: Use SHELL=$SHELL, not SHELL=/bin/sh.
+       Reported by Richard Dawe.
+
+       Build elisp files all at once instead of one by one.
+       * automake.in (handle_emacs_lisp): Define am__ELFILES.  Add
+       elc-stamp to all's dependencies.
+       * lib/am/lisp.am (elc-stamp): New rule, build all *.elc files.
+       (.el.elc): Rewrite to call elc-stamp if $@ doesn't exist.
+       (clean-lisp): Clean elc-stamp.
+       * lib/elisp-comp: Reindent.  Erase the temporatry directory
+       from a trap.  Propagate Emacs's exit status.
+       * tests/lisp3.test: New file.
+       * tests/Makefile.am (TESTS): Add lisp3.test.
+       Reported by Ryan T. Sammartino.
+
+2003-01-09  Akim Demaille  <akim@epita.fr>
+
+       * automake.texi: Prefer $(FOO) to @FOO@ in the documentation.
+
+2003-01-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/lispdir.m4: Register EMACS and EMACSLOADPATH as precious
+       variables.  Suggested by Ryan T. Sammartino.
+
+2003-01-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (macro_define): Add missing `{$cond}' (typo from
+       2002-09-18).
+       ($gen_copyright): Append year 2003.
+       (version): Increase year.
+
+       * tests/defs.in: Substitute aclocaldir instead of running
+       the installed aclocal.  Otherwise Libtool and Gettext
+       tests get skipped when aclocal doesn't preexist.
+       Reported by Imacat.
+       * tests/listval.test, tests/suffix2.test: Remove pointless -I
+       argument to aclocal.
+
+-----
+
+Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
diff --git a/old/ChangeLog.04 b/old/ChangeLog.04
new file mode 100644 (file)
index 0000000..111f87b
--- /dev/null
@@ -0,0 +1,1623 @@
+2004-12-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/man2.test, tests/transform.test: Specify --mandir, in order
+       not to fail when Autoconf changes its $mandir default.
+
+2004-12-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Support for `install-dvi', `install-html', `install-ps', and
+       `install-pdf', as recently introduced into the GNU Coding
+       Standard.
+
+       * automake.in (handle_factored_dependencies): Reject
+       uninstall-dvi-local, uninstall-html-local, uninstall-info-local,
+       uninstall-ps-local, and uninstall-pdf-local.  Allow
+       install-info-local even when no-installinfo is not used.
+       (handle_data): Allow datarootdir, dvidir, htmldir, pdfdir, and psdir.
+       (%standard_prefix): Declare these new standard directory variables.
+       * doc/automake.texi (Texinfo, Third-Party Makefiles): Document
+       install-dvi, install-html, install-pdf, and install-ps.
+       (Extending): Document install-local-dvi, install-local-html,
+       install-local-info, install-local-pdf, and install-local-ps.
+       * lib/Automake/Rule.pm (%dependencies): Add new install rules,
+       and remove uninstall-info.
+       * /cvs/automake/automake/lib/am/texinfos.am (install-dvi,
+       install-dvi-am, install-dvi-recursive, install-html,
+       install-html-am, install-html-recursive, install-pdf,
+       install-pdf-am, install-pdf-recursive, install-ps, install-ps-am,
+       install-ps-recursive, uninstall-dvi-am, uninstall-html-am,
+       uninstall-pdf-am, uninstall-ps-am): New rules.
+       (uninstall-info): Delete.
+       * tests/txinfo21.test: Augment to check for these new rules.
+       * tests/exdir2.test: Do not use `htmldir' as example of
+       undefined directory.
+       * tests/overrid.test: Do not be fooled by install-ps and
+       install-html.
+       * tests/txinfo10.test: Do not grep for uninstall-info-recursive.
+
+2004-12-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (Preprocessed Fortran): Fix the definition of FCLINK.
+
+       * Makefile.am (maintainer-check): Refine check for @_ in scalar
+       context.  Check for correct use of PRE_INSTALL, NORMAL_INSTALL,
+       POST_INSTALL, PRE_UNINSTALL, NORMAL_UNINSTALL, and POST_UNINSTALL.
+       * lib/am/texinfos.am (uninstall-info-am): Hide the invocation of
+       $(PRE_UNINSTALL).
+2004-12-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/texinfos.am (uninstall-info-am): Show change of
+       directory while uninstalling DJGPP-style info files.
+
+2004-12-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Declare recursive install targets as dependencies of `.MAKE', so
+       that `make -n install' works with BSD Make too.
+
+       * lib/Automake/Rule.pm (reset) <%dependencies>: Add `.MAKE'.
+       * automake.in (target_cmp): Move all `.XYZ' target last, not
+       only `.PHONY'.
+       (handle_factored_dependencies): Add target with hooks to `.MAKE'.
+       Do not let a user definition of .MAKE override ours.
+       * lib/am/install.am (install-am, install-strip): Mark as `.MAKE'.
+       * lib/am/multilib.am (all-multi, install-multi, mostlyclean-multi,
+       clean-multi, distclean-multi, maintainer-clean-multi): Likewise.
+       * lib/am/subdirs.am (mostlyclean-recursive, clean-recursive,
+       distclean-recursive, maintainer-clean-recursive): Likewise.
+
+2004-12-18  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/config-ml.in, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: New upstream versions.
+
+       * doc/automake.texi (gettext): Move the paragraph about
+       dist_list_LISP...
+       (Emacs Lisp): ... here.
+       Report from Bruno Haible.
+
+       * doc/automake.texi: Bump GFDL version to 1.2, since that is
+       what we distribute.
+
+       * doc/automake.texi: Fix more misuses of @ref, @xref and @pxref,
+       including some of the "corrections" below.  Thanks to Karl Berry.
+
+       * doc/automake.texi: Correct several misuses of @xref and @pxref.
+
+2004-12-17  Jim Meyering  <jim@meyering.net>
+
+       * install-sh: Use `(exit N); exit N', not `(exit N); exit'.
+       Otherwise, install-sh could exit with improper exit status when
+       exiting via a trapped interrupt.  Thanks to a report from Bob Proulx.
+
+2004-12-14  Akim Demaille  <akim@epita.fr>
+
+       * doc/automake.texi (Options): Englishoes.
+       (Options): And another.
+
+2004-12-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * ChangeLog.03: New file, extracted from ChangeLog.
+       * Makefile.am (EXTRA_DIST): Add it.
+
+2004-12-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (check_user_variables): New function, extracted
+       from ...
+       (handle_languages): ... here.
+       (handle_languages, define_compiler_variable, define_link_variable):
+       Honore LIBTOOLFLAGS.
+       (handle_single_transform): Check _LIBTOOLFLAGS in
+       addition to other per-target flags for Libtool objects.
+       (handle_libtool): Warn if LIBTOOLFLAGS is defined.
+       * doc/automake.texi (Libtool Flags, Program and Library Variables,
+       Flag Variables Ordering): Document LIBTOOLFLAGS.
+       * tests/libtool7.test: Check basic support for LIBTOOLFLAGS.
+       * tests/libtool8.test: Make sure Automake warns about LIBTOOLFLAGS
+       definitions.
+       * tests/subobj9.test: Adjust.
+
+2004-12-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Per-Object Flags): New node.
+
+2004-12-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix PR automake/441:
+       * lib/am/java.am (install-%DIR%JAVA, uninstall-%DIR%JAVA): Do
+       not install *.class if "$(%DIR%_JAVA)" is empty.
+       * tests/java3.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       Report from Johannes Nicolai.
+
+       * doc/automake.texi (Java): Mention dist_ and add an example.
+       * tests/java.test: Do actually compile java files and run distcheck.
+
+2004-12-08  Peter O'Gorman  <peter@pogma.com>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/FileUtils.pm (dir_has_case_matching_file,
+       reset_dir_cache): New functions.
+       * automake.in (handle_dist, require_file_internal): Use them, so
+       that CHANGELOG is not confused with ChangeLog on case-insensitive
+       case-preserving file systems.
+       * tests/hfs.test: New file.
+       * tests/Makefile.am (TESTS): Add hfs.test.
+
+2004-12-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/mdate-sh: Don't use "set - x`$ls_command /`", as zsh mishandles
+       the spaces inside $ls_command.  Problem reported by Loulou Pouchet in
+       <http://lists.gnu.org/archive/html/autoconf/2004-12/msg00074.html>.
+       Don't use "set - x"; plain "set x" is enough, and simplifies debugging.
+
+2004-12-05  Toshio Kuratomi  <toshio@tiki-lounge.com>
+
+       * lib/py-compile: Add --destdir switch to py-compile that takes a
+       path argument that is not compiled into the file when byte compiling.
+       * lib/am/python.am: Use the new py-compile arguments to not include
+       DESTDIR in the byte compiled files.
+       * tests/python12.test: Test that DESTDIR won't be byte compiled into
+       python files.
+
+2004-12-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Clean): Typo.
+
+       * doc/automake.texi: Use @acindex for Autoconf macros, and @vindex
+       for variables (@cvindex was previously used for both).  Separate
+       these two indices in the output.  Use @code, @file, and @command
+       in @cindex lines wherever appropriate so they render nicely.
+
+2004-12-05  Stepan Kasal  <kasal@ucw.cz>
+
+       * doc/automake.texi (renamed objects, CVS): Typos.
+
+2004-12-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Flag Variables Ordering): New section.
+       (User Variables, Program and Library Variables): @xref it.
+
+2004-11-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Conditional Subdirectories): More comments
+       about non-distributed subdirectories.
+
+       * Makefile.am (maintainer-clean): Check for unescaped @ in manual.
+
+2004-11-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Built sources example): Fix typo.
+
+2004-11-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (parse_arguments): Diagnose abbreviation ambiguous with
+       --help or --version.
+       * automake.in (parse_arguments): Likewise.
+       * tests/aclocal.test, tests/automake.test: Check this.
+       Report from Eric Blake.
+
+2004-11-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (parse_arguments): Diagnose empty arguments, options
+       with missing argument, and support `--'.
+       * aclocal.in (parse_arguments): Diagnose options with missing
+       argument.
+       * tests/aclocal.test: More checks.
+       * tests/automake.test: New file.
+       * tests/postprog.test: Use `--' for fun.
+       * tests/Makefile.am (TESTS): Add automake.test.
+       Report from Eric Blake.
+
+       * lib/am/progs.am (installcheck-%DIR%PROGRAMS): Run programs with
+       /dev/null as input, so we do not hang on programs that read their
+       input without supporting --help and --version.
+       * lib/am/scripts.am (installcheck-%DIR%SCRIPTS): Likewise for scripts.
+       * tests/gnits2.test: Change scriptnok.sh to cat its input.
+       Report and fix from James Youngman.
+
+2004-11-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (%file_seen): Rename as ...
+       (%file_added): ... this, and move it close to add_file(), the only
+       function that uses it.
+
+       * aclocal.in (version): Remove initial blank line and reproduce
+       the layout of automake --version.  From Art Haas.
+
+       * aclocal.in (%file_type, FT_USER, FT_AUTOMAKE_SYSTEM): New variables.
+       (scan_m4_dirs): New function, extracted from ...
+       (scan_m4_files): ... here.  Call scan_m4_files three times, for each
+       FT_ constant.
+       (scan_file): Take a file type argument to update %file_type.
+       (write_aclocal): Do not m4_include files that are not of type FT_USER.
+       * tests/dirlist.test: Make sure m4_include is not used for --acdir
+       files.
+
+       * tests/defs.in (testaclocaldir): New variable.
+       * tests/aclocal.test: Use it to fix the test.  Report from
+       Patrick Welche.
+
+2004-11-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/python.m4 (AM_PATH_PYTHON): Fix the invocation of
+       AC_PATH_PROGS to correctly define PYTHON as `:' when no interpreter
+       is found (this worked correctly only when a minimal version was
+       passed to AM_PATH_PYTHON).  Report from Stepan Kasal.
+       (_AM_PYTHON_INTERPRETER_LIST): Define using m4_define_default,
+       so we can easily override the list from the test suite.
+       * tests/python11.test: New file.
+       * tests/Makefile.am (TESTS): Add python11.test.
+
+       * doc/automake.texi (Libtool Modules): Make clearer that -module
+       should appear explicitly in _LDFLAGS.
+
+2004-11-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (parse_arguments): Correctly recognize --print-ac-dir.
+       * tests/aclocal.test: Check --print-ac-dir and a unknown option.
+
+       * aclocal.in (parse_arguments): Fix detection of unexisting default
+       $(datadir)/aclocal.  Report from Akim.
+
+2004-11-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in ($acdir): Rename as ...
+       (@system_includes): ... this.
+       (@user_includes, @automake_includes): New variables.
+       ($default_acdir, $default_dirlist): Remove.
+       (parse_arguments): Populate @user_includes, @automake_includes, and
+       @system_includes instead of filling a unique @dirlist array.
+       ("MAIN"): Adjust to scan m4 files in @user_includes,
+       @automake_includes, and @system_includes.
+
+2004-11-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (parse_arguments): Correct comment.  From Akim.
+
+2004-11-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in: Use Automake::ChannelDefs, and adjust all output
+       to be done via `fatal', `msg', `verb', or `prog_error'.
+       (version): New function.
+       (parse_arguments): Rewrite using Getopt::Long, call &version, and
+       honor -W and --warning.
+       ($verbose): Remove.
+       (trace_used_macros): Do not trace the first arguments of macros
+       for which we do not need it.  This caused failures because of
+       unexpected newlines in the output.
+       * doc/automake.texi (aclocal options): Document -W and --warning.
+       * tests/defs.in (ACLOCAL): Always use -Werror, to catch Perl
+       warnings about uninitialized variables.
+
+2004-11-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/defs.in: Do not distinguish VERBOSE=x from
+       VERBOSE=anything_but_x, always turn on shell traces.
+
+       * aclocal.in (write_aclocal): Make sure $map_traced_defs{$m} exists
+       before using it.  Suppress a warning observable in test/acloca16.test.
+       Report from Ralf Wildenhues.
+
+2004-11-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/XFile.pm (lock): Make sure $ENV{'MAKEFLAGS'} exists
+       before inspecting it; this fixes "uninitialized value in
+       concatenation" diagnostics when flock fails.
+       Report from Gary V. Vaughan.
+
+       * aclocal.in: Use strict and -w.  Declare local variables with `my',
+       and get rid of `local'.
+       (scan_m4_files, add_macro): Reindent these functions while we are
+       at it.
+
+       * lib/config.guess, lib/texinfo.tex: New upstream versions.
+
+       * doc/automake.texi (LIBOBJS): Spelling and grammar corrections
+       from Ralf Wildenhues.
+
+2004-10-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (LIBOBJS): Augment with an example setup.
+       (LTLIBOBJ): Rename as ...
+       (LTLIBOBJS): ... this.  Link to LIBOBJS, and mention LTALLOCA.
+
+2004-10-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi: Untabify, tabs in the examples are poorly
+       rendered.
+       * Makefile.am (maintainer-check): Grep tabs in the manual.
+
+       * tests/comment8.test: Use $MAKE, not make.
+
+2004-10-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/distcom3.test: Typo.
+
+2004-10-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Libtool Convenience Libraries): Explain how
+       to force the linker selection.
+
+       * lib/install-sh: Fix the dirname emulation to ignore trailing
+       slashes, i.e., the direname of `a/b/' is `a', not `a/b/'.  This
+       caused `install-sh a/b/' to fail.
+       * tests/instsh2.test: Augment.
+       Report from Пухальский Юрий Андреевич.
+
+2004-10-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (get_object_extension): The extension to use is know
+       by the caller, and cannot be selected by looking only at the
+       target name.  Simplify this function to simply conditionally
+       prepend $U to the given extension.
+       (handle_programs, handle_libraries, handle_ltlibraries): Hard-code
+       the extension to use.  This way Automake won't mistake a program
+       named `foo.la' as a libtool library.
+       * tests/primary3.test: New file.
+       * tests/Makefile.am (TESTS): Add primary3.test.
+
+2004-10-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Install): Link to node Extending for examples.
+       (Extending): More comments about install-data-hook vs
+       install-exec-hook, and link to Install.
+
+       * configure.ac: Export @am_AUTOCONF@.
+       * tests/defs.in (AUTOCONF): Define as @am_AUTOCONF@, not @AUTOCONF@,
+       so the test suite runs `autoconf' and not `missing --run autoconf'.
+       * tests/missing.test, tests/missing2.test: Arrange for missing
+       to be used in front of autoconf even if the user has exported
+       AUTOCONF.  This fixes two spurious failures reported by
+       Mark D. Baushke.
+
+       * lib/compile: Handle output.obj in addition to output.o.
+       * tests/compile.test: Check for this.
+
+2004-10-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Sources): Typo, reported by Karl Berry.
+
+2004-10-10  Kelley Cook  <kcook@gcc.gnu.org>  (tiny change)
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in ($ac_defun_rx): Match AC_DEFUN_ONCE.
+       (trace_used_macros): Trace AC_DEFUN_ONCE.
+       * tests/aclocal5.test: Use AC_DEFUN_ONCE.
+
+2004-10-10  Stepan Kasal  <kasal@ucw.cz>  (tiny change)
+
+       * doc/automake.texi (Extending): Typo.
+
+2004-10-10  Martin Waitz  <tali@admingilde.org>  (tiny change)
+
+       * m4/as.m4 (AM_PROG_AS): Check dependency tracking mode for CCAS.
+       * automake.in (cppasm): Use the dependency tracking more for CCAS.
+       * doc/automake.texi (Assembly Support): Note that *.S are
+       preprocessed with CPPFLAGS.
+
+2004-10-10  Ralf Corsepius <corsepiu@faw.uni-ulm.de>
+
+       * automake.in (Languages): Split .s (asm) and .S (cppasm) into
+       separate languages.  Make cppasm (Preprocessed Assembler) aware
+       of CPPFLAGS, AM_CPPFLAGS.
+       (handle_languages): Fix typo.
+       (lang_cppasm_rewrite): New function.
+
+2004-09-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/subobj9.test: Adjust regexes after previous patch.
+
+2004-09-28  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_languages, define_compiler_variable): Output
+       Libtool's --tag= option before --mode=compile, because depcomp use
+       --mode=compile as end marker for libtool arguments.
+       (define_linker_variable): Likewise before --mode=link, for
+       uniformity.
+       * tests/pr307.test: Make sure dependency files are updated.  That
+       was not the case because depcomp thought `--tag=CC' was the
+       compiler to get dependencies from.
+       Report from Пухальский Юрий Андреевич.
+
+2004-09-26  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.ac: Require Perl 5.6.
+       * lib/Automake/Config.in: Require Perl 5.6 (not done in
+       lib/Automake/General.pm because it is shared with Autoconf),
+       and use `our' instead of `use vars'.
+       * aclocal.in (rel2abs): Remove.
+       (scan_configure_dep): Use File::Spec->rel2abs instead.
+
+       * tests/compile.test, tests/instsh2.test, tests/instspc.test: Use
+       two consecutive spaces in filename instead of one, to catch mistake
+       like `echo $val | ...`.
+       * tests/README: Suggest this.
+       Suggested by Ralf Wildenhues.
+
+2004-09-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Clean): Document -local targets.
+
+2004-09-25  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi: Typos.
+
+2004-09-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Timeline): Typos and other English mistakes
+       reported by Jim and Gary.
+
+       * lib/Automake/VarDef.pm (append): Strip comments from augmented
+       variables.
+       * tests/comment8.test: New file.
+       * tests/Makefile.am (TESTS): Add comment8.test.
+       Report from Stepan Kasal.
+
+2004-09-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/compile.test: Fix rm usage.
+
+       * INSTALL, lib/INSTALL, lib/config.sub, lib/config.guess,
+       lib/texinfo.tex: New upstream versions.
+
+       * doc/automake.texi (Timeline): New node.  Thanks to Karl and Tom
+       for their comments on a preliminary version of this, Akim for
+       digging out some old mails, and Jason Molenda for sending the note
+       about Automake in Alias to Tom.
+       (Releases): Rename `ac' to `acl', suggested by Akim.
+
+2004-09-19  Akim Demaille  <akim@epita.fr>
+
+       * AUTHORS, automake.in, aclocal.in: Add Alexandre Duret-Lutz as
+       author.
+
+2004-09-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Releases): New node.
+
+       * doc/automake.texi (Dependencies): Link to Dependency Tracking
+       Evolution.
+       (Dependency Tracking Evolution): Link to GNU make, Sources (for
+       BUILT_SOURCES), and update the paragraph about the "plan" to
+       inline dependency tracking with gcc3.
+
+       * doc/automake.texi (History): New node.
+       (Dependency Tracking Evolution): New node, filled with a Texinfo
+       version of Tom Tromey's ``Dependency Tracking in Automake''
+       document, initially published on the Automake homepage on
+       2001-06-29.
+
+2004-09-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/minuso.m4 (AM_PROG_CC_C_O): Make sure AC_PROG_CC is never
+       called after this macro.
+       * tests/distname.test, tests/subdir5.test, tests/subdir8.test,
+       tests/subobj.test, tests/subobj4.test, tests/subobj5.test,
+       tests/subobj6.test: Adjust.
+       Report from Ralf Wildenhues.
+
+       * lib/Automake/Channels.pm (_print_message): Handle uniq_part with
+       arbitrary string.
+       * automake.in (lang_c_rewrite): Set uniq_part so that the
+       AM_PROG_CC_C_O diagnostic is output only once for subdir objects
+       and only once for objects with per-target flags.
+
+       * automake.in (lang_c_rewrite): Print files and locations
+       for AM_PROG_CC_C_O errors.
+       (handle_single_transform): Pass $var to &$subr so it can
+       print locations.
+
+       * lib/compile, lib/elisp-comp, lib/install-sh, lib/ylwrap: Use $ret
+       instead of $status which is read-only in Zsh.
+
+2004-09-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/compile: Preserve spaces in arguments (for example
+       -DPACKAGE_STRING="foo 0.1").
+       * tests/compile.test: New file.
+       * tests/Makefile.am (TESTS): Add compile.test.
+
+2004-09-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_clean): Sort rm commands output for
+       mostlyclean-generic, clean-generic, distclean-generic, and
+       maintainer-clean-generic.
+       Report from Bob Friesenhahn.
+
+       * automake.in (lang_c_rewrite): Do not require AM_PROG_CC_C_O for
+       libtool objects.
+       (handle_single_transform): Pass nonansi_obj to &$subr so
+       lang_c_rewrite can distinguish libtool objects.
+       * tests/libtool7.test: Use subdir-objects without using AM_PROG_CC_C_O.
+       Report from Gary V. Vaughan and Patrick Welche.
+
+2004-09-07  Andreas Schwab  <schwab@suse.de>
+
+       * automake.in ($PATH_PATTERN): Add `+'.
+
+2004-09-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/missing3.test: New file (check for Paolo's change below).
+       * tests/Makefile.am (TESTS): Add missing3.test.
+
+2004-09-07  Paolo Bonzini  <bonzini@gnu.org>
+
+       * missing: Handle all command line options together.  Add a
+       separate case statement to detect failed runs, and fail
+       silently there if --help or --version is passed to the program.
+
+2004-08-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/config.guess, lib/texinfo.tex: New upstream versions.
+
+       For PR automake/433:
+       * configure.ac (pkgvdatadir): Define using "$PACKAGE", not "automake".
+
+       Fix PR automake/432:
+       * lib/am/yacc.am [!%?MORE-THAN-ONE%]: Replace `#line's in y.tab.h too.
+       * tests/yacc7.test: Check this.
+
+2004-08-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/DisjConditions.pm (new): Precompute 'string' and 'conds'
+       in place instead of as a side-effect of calling ->string and ->conds.
+       This saves method-lookup time, simplify ->string and ->conds, and
+       allows to create the object only when necessary.
+       (string, conds): Simplify, now that the result is precomputed.
+
+       * automake.in (%am_file_cache): New hash.
+       (make_paragraphs): Cache .am files with comments stripped to save
+       some useless input and substitutions.
+
+       * lib/Automake/Variable.pm (%_primary_dict): New hash.
+       (_new, variable_delete): Update %_primary_dict.
+       (variables): Accept an optional $suffix argument.
+       * automake.in (check_typos, am_primary_prefixes): Use that
+       optional argument to restrict the loops over the variables we are
+       interested in.
+
+2004-08-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Item.pm (def): Rewrite more concisely, it's faster
+       this way.
+
+2004-08-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Speed up make_paragraphs.
+       * automake.in (handle_languages): Always define SUBDIROBJ,
+       DERIVED-EXT, and DIST_SOURCE, because the new transform() will
+       abort on unknown tokens.
+       (transform): Rewrite with different semantics.
+       (make_paragraphs): Make a single pass over the paragraph to
+       transform all template tokens instead of doing as much passes as
+       possible token.
+
+       * automake.in ($libtool_new_api): New variable.
+       (handle_libtool): Do not libtool's aux files if $libtool_new_api.
+       (scan_autoconf_traces) <LT_SUPPORTED_TAG>: Set $libtool_new_api.
+       (scan_autoconf_traces) <AC_REQUIRE_AUX_FILE>: Remember only the
+       first location for required files.
+
+2004-08-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Support AC_REQUIRE_AUX_FILE, and fix requirement of AM_PROG_CC_C_O.
+       * automake.in (%required_aux_file): New hash.
+       (handle_single_transform, lang_c_rewrite): Do not explicitly
+       require 'compile', this is now an internal detail of
+       AM_PROG_CC_C_O.
+       (scan_autoconf_traces): Trace AC_REQUIRE_AUX_FILE and fill
+       %required_aux_file.
+       (scan_autoconf_files): Require all %required_aux_file instead
+       of explicitly requiring install-sh and missing.
+       (generate_makefile): Do not require config.sub and config.guess.
+       (handle_single_transform): Pass $have_per_exec_flags to
+       &lang_c_rewrite.
+       * configure.ac, m4/init.m4: Require Autoconf 2.59a.
+       * doc/automake.texi (Optional): Document AC_REQUIRE_AUX_FILE.
+       (Program and Library Variables, Options, Public macros):
+       AM_PROG_CC_C_O is required when per-target flags or subdir-objects
+       are used with C sources.
+       * m4/minuso.m4: Require `compile' using AC_REQUIRE_AUX_FILE.
+       * m4/missing.m4: Require `missing' similarly.
+       * tests/acsubst2.test, tests/distcom2.test, tests/distcom6.test,
+       tests/specflg.test, tests/specflg2.test, tests/specflg3.test,
+       tests/specflg6.test, tests/specflg7.test, tests/specflg8.test,
+       tests/specflg9.test, tests/subobj7.test, tests/target-cflags.test,
+       tests/yacc6.test: Fix to use AM_PROG_CC_C_O.
+
+2004-08-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (yacc_lex_finish_helper): Fix definition of YLWRAP
+       when ylwrap is installed in a default aux dir found in a parent
+       package.
+       * tests/subpkg.test: Augment to check that YLWRAP is installed
+       properly.
+       * doc/automake.texi (Yacc and Lex): ylwrap is not sought is the
+       current directory.
+       Report from Norman Gray.
+
+2004-08-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Optional): Update documentation for
+       AC_CANONICAL_BUILD, AC_CANONICAL_HOST, and AC_CANONICAL_TARGET.
+
+       * automake.in (AC_CANONICAL_HOST, AC_CANONICAL_SYSTEM): Replace by ...
+       (AC_CANONICAL_BUILD, AC_CANONICAL_HOST, AC_CANONICAL_TARGET): ... these.
+       (scan_autoconf_traces): Scan for the latter three macros instead of
+       the former two.
+       (make_paragraphs): Adjust definitions of %BUILD%, %HOST%, and %TARGET%.
+       * tests/hosts.test: New file.
+       * tests/Makefile.am (TESTS): Add hosts.test.
+       Report and test case from Norman Gray.
+
+2004-08-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (scan_file): Update "#Extending%20aclocal" URL, makeinfo
+       4.7 now outputs "#Extending-aclocal".
+
+2004-08-01  Alexandre Duret-Lutz  <adl@gnu.org>
+           Derek R. Price  <derek@ximbiot.com>
+
+       Disable Lex and Yacc rules whenever possible if AM_MAINTAINER_MODE
+       is used and maintainer-mode disabled.
+       * automake.in (Automake::struct): Define nodist_specific.
+       Set it in languages yacc, yaccxx, lex, and lexxx.
+       (register_language): Default nodist_specific to 0.
+       (handle_single_transform): Honor nodist_specific.
+       * lib/am/yacc.am (am__skipyacc): Define this in maintainer mode.
+       (%EXT%%DERIVED-EXT%, %OBJ%): Use $(am__skipyacc) to disable these
+       rules when needed.
+       * lib/am/lex.am (am__skiplex): Define this in maintainer mode.
+       (%EXT%%DERIVED-EXT%, %OBJ%): Use $(am__skiplex) to disable these
+       rules when needed.
+       * tests/mmodely.test: New file.
+       * tests/pr204.test: Augment to check AM_MAINTAINER_MODE and nodist_
+       parsers.
+       * tests/Makefile.am (TESTS): ADd mmodely.test.
+       * doc/automake.texi (Yacc and Lex): Note dependence on maintainer mode.
+
+2004-07-28  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.ac, NEWS: Bump version to 1.9a.
+
+       * configure.ac, NEWS: Bump version to 1.9.
+
+       * automake.in (generate_makefile): Update misleading comment about
+       libtool scripts.
+
+       * lib/texinfo.tex: New upstream version.
+
+2004-07-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/mkdirp.m4 (AM_PROG_MKDIR_P): Remove `.' from the mkdir_p
+       definition, it causes `make install' to fails for user with no
+       right to write in the source-tree.
+       * automake.in (handle_configure): Do not use mkdir_p in the
+       definition for $(mkdir_p).
+       Report from Harlan Stenn.
+
+       * lib/am/texi-vers.am (%STAMPVTI%): Typo in comment.
+
+2004-07-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Libtool Modules): Typo in example.
+       Report from Ulrich Eckhardt.
+
+2004-07-21  Andreas Schwab  <schwab@suse.de>  (tiny change)
+
+       * automake.in (check_directory): Quote $dir in regexp.
+
+2004-07-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.ac, NEWS: Bump version to 1.8e.
+
+       * configure.ac, NEWS: Bump version to 1.8d.
+
+       * lib/config-ml.in, lib/config.sub, lib/config.guess, lib/texinfo.tex:
+       New upstream versions.
+
+       * lib/am/texibuild.am (?GENERIC?%SOURCE_SUFFIX%.html,
+       ?!GENERIC?%DEST_PREFIX%.html): Use $(X), not ${X}.
+
+       * tests/installdir.test: installdirs-local should appear three times,
+       since the change from 2004-07-11 will make it PHONY.
+
+       * lib/am/distdir.am (distdir): Always use $(DIST_SUBDIRS) now
+       that it is always defined.  This is less confusing for users
+       reading the generated Makefiles.
+       * automake.in (handle_dist): Do not substitute DIST_SUBDIR_NAME.
+
+       * lib/am/texibuild.am (?GENERIC?%SOURCE_SUFFIX%.html,
+       ?!GENERIC?%DEST_PREFIX%.html): Output .htp, and then rename to .html
+       on success.  In case the target is a directory, this ensures its
+       time stamp is updated and the no files are left over inside.
+       * tests/txinfo21.test: Augment to test missing timestamp update
+       reported by Akim Demaille.
+
+       * doc/automake.texi (Top level): Rename as ...
+       (Directories): ... this, and split into ...
+       (Subdirectories, Conditional Subdirectories): ... these.
+       (Subdirectories): Illustrate the use of `.'.
+       (Conditional Subdirectories): Describe SUBDIRS and DIST_SUBDIRS
+       before the example.  Append a discussion about non-configured
+       conditional directories.
+       (Alternative): Move as a child of Directories.
+       (Subpackages): New section.
+       (Dist): Adjust links to Subdirectories, a Subpackages.
+       (Third-Party Makefiles): Link to Conditional Subdirectories.
+
+2004-07-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (target_hook): Accept %transform as last argument.
+       (handle_single_transform): Pass %transform to target_hook.
+       (handle_source_transform): Define DIST_SOURCE to tell whether
+       a the source of a file is distributed or not.
+       (lang_yacc_target_hook): Check DIST_SOURCE, and do not distribute
+       the generated header if the .y source is not distributed.
+       * tests/pr204.test: Use AM_YFLAGS = -d and make sure generated
+       headers are not distributed.
+
+2004-07-12  Simon Josefsson  <jas@extundo.com>  (tiny change)
+
+       * doc/automake.texi (Options): Improve ustar file name length
+       discussion.  Reference tar manual.
+
+2004-07-12  Ray Simard  <rhs.techlists@sylvan-glade.com>  (tiny change)
+
+       * lib/Automake/Variable.pm (define): Fix precondition check.
+
+2004-07-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/428:
+       Support for conditionally defined -hook and -local rules.
+       * automake.in (user_phony_rule): New function.
+       (handle_dist, handle_install, handle_all, do_check_merge_target,
+       handle_factored_dependencies): Use user_phony_rule before
+       adding a user -hook or -local rule as a dependency to ensure
+       it is always defined an phony.
+       * tests/cond37.test, tests/condhook.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+       Report from Simon Josefsson and Nik A. Melchior.
+
+2004-07-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/automake.texi (Install): Warn that you should create
+       /tmp/staging before installing into it, to avoid security problems.
+       * lib/install-sh: Remove support for -b= and -t= options; this
+       has been moribund for a decade.
+       Add support for -t and -T options (new in coreutils install).
+       -c option now does nothing (the default is to copy), for
+       compatibility with BSD and coreutils 'install'.
+       Fix usage message; it referred to nonexistent variables.
+       Don't assume 'lasterr' is unset in environment.
+       * tests/instsh2.test: Don't assume that install-sh without -c
+       moves (it now copies).  Add tests for new -t and -T options.
+
+2004-06-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For Debian Bug#254372:
+       * doc/automake.texi (Invoking aclocal): Rewrite the paragraph
+       explaining m4_include is used for relative files.
+
+2004-06-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For Debian Bug #251820:
+       * aclocal.in (scan_file): Keep track of the location where each
+       file is included, and display it when reporting a missing file.
+       Pass this location to scan_file as a second argument.
+       (scan_m4_files): Adjust calls to scan_file.
+       * tests/acloca14.test: Add a test for this diagnostic.
+
+2004-06-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/tar.m4 (_AM_PROG_TAR): Split the definition of $_am_tools
+       so it works with Solaris and Tru64 /bin/sh.
+       Report from Nicolas Joly.
+
+2004-06-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/tar.m4 (_AM_PROG_TAR): Introduce $_am_tools to work around a
+       bug in NetBSD /bin/sh.
+       Report from Nicolas Joly.
+
+2004-06-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/defs.in (required=icc): Use `-V -help' instead of
+       `-V -dryrun'.  icc 8.0 fails on the latter.
+       * tests/depcomp5.test: Require depmode=icc for icc 7.x, and
+       depmod=gcc otherwise.
+       Report from Ralf Wildenhues.
+
+       * lib/am/clean.am (distclean-generic): Do no
+       `rm -f $(CONFIG_CLEAN_FILES)' if `$(CONFIG_CLEAN_FILES)' is empty.
+       Report from Nicolas Joly.
+
+2004-05-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * NEWS: Make clearer that we do not output partial Makefile.ins on
+       error.
+       Suggested by Akim Demaille.
+
+       * lib/depcomp (tru64) [libtool]: Use $dir$base.o.d instead
+       of $dir.libs/$base.o.d.  Libtool 1.5 causes both to be output,
+       and we will clean the second automatically during distclean.
+       Using the latter and leaving the former as we did before cause
+       "files left in build directory" failures during distcheck.
+       Suggested by Nicolas Joly.
+
+       * doc/automake.texi (Built sources example): Explain what
+       nodist_foo_SOURCES is (not) useful to, and use it in all the
+       examples.
+       (Tags): Mention nodist_noinst_HEADERS and nodist_prog_SOURCES.
+       Suggested by Akim Demaille.
+
+2004-05-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * configure.ac, NEWS: Bump version to 1.8c.
+
+       * configure.ac, NEWS: Bump version to 1.8b.
+
+       * m4/tar.m4 (_AM_PROG_TAR) <cpio>: Specify -o and -i option first,
+       by POSIX; and use option -d in am_untar.
+
+       * tests/defs.in (PATH): Export it.
+
+       * lib/am/multilib.am: Add $(MAKE) comments to multido and
+       multiclean lines, to enable parallel make.  Based on a patch
+       by Alexandre Oliva applied to newlib on 2003-10-15.
+
+2004-05-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (scan_autoconf_traces): Trace for LT_SUPPORTED_TAG
+       instead of AC_LIBTOOL_TAGS, since that how CVS Libtool has been
+       changed.
+       * tests/libtool3.test: Do not grep for --tag=CC, since CVS
+       Libtool (unlike Libtool 1.5) does not has any CC tag.
+
+       * tests/tar2.test: Skip the test if no pax archiver were found.
+
+       * NEWS: Sync with branch-1-8, and reorganize current entry.
+
+       * automake.in (handle_libraries): Make the diagnostic about
+       non standard libraries a warning in foreign packages.  This
+       is already the case in handle_ltlibraries.
+       (handle_libraries, handle_ltlibraries): Suggest a standard
+       library name in the diagnostic, to help newcomers.
+       * tests/stdlib.test, tests/stdlib2.test: Check for these
+       suggestions.
+
+       Check directory names for unportable names.  Shaking the code
+       to check this also led to the removal of the no-"/"-in-SUBDIRS
+       restriction, and a fix to _do_recursive_traversal.
+
+       * automake.in (check_directory): New function extracted from
+       handle_subdirs, and augmented to check for reserved W32/DOS name.
+       (check_directories_in_var): New function.
+       (handle_subdirs): Call check_directories_in_var.  Doing so also
+       suppress the restriction that SUBDIRS should not contain slashes.
+       (scan_autoconf_traces) <AC_CONFIG_AUX_DIR>: Call check_directory
+       to ensure the argument exists and is safe.
+       * doc/automake.texi (Top level): Do not say that src/subdir
+       cannot be put in SUBDIRS.
+       (Dist): Mention that distdir and top_distdir can be absolute.
+       * lib/Automake/Variable.pm (_do_recursive_traversal) Support
+       undefined $fun_collect, and fix two bugs introduced with
+       skip_ac_subst on 2004-03-07.
+       * lib/am/distdir.am (distdir): Use absolute distdir and
+       top_distdir when recursing, because we can no longer prepend only
+       `..' in case of SUBDIRS with `/'.
+       * tests/auxdir4.test, tests/subdir9.test: New files.
+       * tests/Makefile.am (TESTS): Add auxdir4.test.
+       * tests/cond2.test, tests/subdir7.test: Augment to check location
+       in diagnostics.
+
+2004-05-21  Eric Blake  <ebb9@byu.net>  (tiny changes)
+
+       * tests/txinfo22.test (AC_CONFIG_AUX_DIR): Use aux1, not aux, for
+       cygwin compatibility.
+       * tests/yacc6.test (AC_CONFIG_AUX_DIR): Likewise.
+
+       * tests/conflnk3.test: Isolate checking for working `test -e' into
+       a subshell, to skip this test on broken /bin/sh of solaris.
+
+2004-05-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/cond.m4 (AM_CONDITIONAL): Double-quote diagnostic.
+       * tests/condd.test: Define a macro with the same name as a
+       conditional.
+       * tests/pr220.test: Modernize, and make sure the diagnostics
+       contains the macro name.
+       Report from Volker Boerchers.
+
+2004-05-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/texinfo.tex: New upstream version.
+
+2004-05-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_dist): Always define DIST_SUBDIRS, even when
+       the no-dist or cygnus options are used.
+       * tests/clean2.test: New file.
+       * tests/Makefile.am (TESTS): Add clean2.test.
+       Report from Daniel Jacobowitz.
+
+       * aclocal.in (add_macro): Do not error out on undefined required
+       macros.  We are not sure they are really used, and Autoconf
+       already diagnoses them.
+       (scan_configure_dep): Diagnose missing AM_ macros as warnings rather
+       than errors.
+       * tests/aclocal3.test, tests/ammissing.test: Adjust to expect a
+       warning instead of an error.
+       * tests/aclocal8.test: AC_REQUIRE an undefined macro in an unused
+       macro, and ensure aclocal works anyway.
+       * tests/acloca17.test: New file.
+       * tests/error.test: Delete, superseded by tests/acloca17.test.
+       * tests/Makefile.am (TESTS): Add acloca17.test and remove error.test.
+       Report from Jim Meyering.
+
+       * lib/am/texibuild.am (?!GENERIC_INFO?%DEST_INFO_PREFIX%%DEST_SUFFIX%):
+       Fold a few lines to reduce the output by 5 lines.
+       Suggested by Karl Berry.
+
+       * automake.in (parse_arguments, MAIN): Give more precise
+       diagnostics when no input file is found.
+       * tests/output5.test: Adjust.
+       Suggested by Jens Petersen.
+
+2004-05-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/libs.am (AR, ARFLAGS): Move these definition ...
+       * automake.in (handle_libraries): ... here, so that they are
+       output even for EXTRA_LIBRARIES.
+       * tests/ar2.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       Report from Kevin Ryde.
+
+2004-05-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (generate_makefile): Do not output Makefile.in on
+       errors.
+       * tests/werror2.test: New file.
+       * tests/Makefile.am (TESTS): Add werror2.test.
+       * tests/substtarg.test, tests/cond36.test, tests/backsl4.test:
+       Adjust to run automake with -Wno-error when the output is expected
+       in spite of the error.
+       Report from Harlan Stenn.
+
+       * doc/automake.texi (Program and Library Variables): Remove
+       doubled word in footnote.
+
+       * automake.in (handle_source_transform): Also check for a
+       $(srcdir)/old_source rule when computing the default source name.
+       Propagate this $(srcdir) prefix in Automake variables.
+       * tests/ltlibsrc.test (noinst_LTLIBRARIES): Explicitly refer to
+       $(srcdir)/zoo_d_old2_la.c.  This fixes another failure with BSD Make.
+
+2004-05-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * Makefile.am (fetch): Work even with FreeBSD "make", which
+       uses sh -e and thus errors-out if a simple-command fails.
+       * lib/am/check.am (check-TESTS): Likewise.
+       * lib/am/ltlib.am (clean-%DIR%LTLIBRARIES): Likewise.
+       * lib/am/tags.am (TAGS): Likewise.
+
+2004-05-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/lex3.test, tests/yacc6.test: Require GNU Make.
+       Fixing these for BSD Make requires invasive changes (lexers and
+       parsers must be built into $srcdir, and--most annoyingly--all
+       references to parse.h must be changed to $(srcdir)/parse.h).
+       Report from Mark D. Baushke.
+
+2004-05-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/defs.in (GNUmake): Grep for GNU to parry FreeBSD make.
+       Report from Mark D. Baushke.
+
+2004-04-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/texinfo.tex: New upstream version.
+
+       * lib/depcomp (tru64): Clarify comments.  Thanks to Nicolas Joly.
+
+       * doc/automake.texi (Headers): Revamp.
+
+2004-04-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (check_typos): Clarify the diagnostic.
+       * tests/warnopts.test: Adjust.
+
+       * lib/Automake/VarDef.pm (append): Turn VAR_ASIS variables into
+       VAR_PRETTY variables to work around make implementation with
+       limited line length, such as OSF1/Tru64 make.
+       * tests/longline.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       * tests/pluseq3.test, tests/pluseq8.test: Adjust.
+       Report from Simon Josefsson.
+
+       * lib/am/tags.am (TAGS): Pass `.' to Exuberant Ctags if
+       --etags-include is used but no other files are supplied, so it
+       creates the TAGS file anyway.
+       Report from Akim Demaille.
+
+       * lib/depcomp (tru64) [libtool]: Nicolas Joly reported on
+       2002-06-12 that dependencies were output in $dir.libs/$base.lo.d.
+       Teun Burgers reported on 2004-03-30 they were in
+       $dir.libs/$base.o.d.  Try both.
+
+2004-04-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/414:
+       Introduce option filename-length-max=99.
+       * doc/automake.texi (Options): Document it.
+       * configure.ac (AM_INIT_AUTOMAKE): Use it.
+       * lib/Automake/Options.pm (_process_option_list): Recognize it.
+       * automake.in (handle_dist): Set FILENAME_FILTER.
+       * lib/am/distdir.am (distdir) [FILENAME_FILTER]: Diagnose long
+       filenames.
+       * tests/fn99.test: New file.
+       * tests/Makefile.am (TESTS): Add fn99.test.
+
+2004-04-20  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/414:
+       Introduce options tar-v7, tar-ustar, and tar-pax to select
+       tar format.
+       * doc/automake.texi (Options): Document them.
+       * lib/Automake/Options.pm (_process_option_list): Process
+       these new options.
+       * lib/am/distdir.am (dist-gzip, dist-bzip2, dist-tarZ, dist,
+       distcheck): Adjust to use am__tar and am__untar.
+       * m4/tar.m4: New file.
+       * m4/Makefile.am (dist_m4data_DATA): Add tar.m4.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Support the new options
+       and call _AM_PROG_TAR.
+       * tests/tar.test, tests/tar2.test, tests/tar3.test: New files.
+       * tests/Makefile.am (TESTS): Add them.
+
+2004-04-18  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/distdir.am (distcheck): Typo in shar decompression.
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: New upstream
+       versions.
+
+2004-04-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix PR automake/49:
+       * automake.in (scan_autoconf_traces) <AC_CONFIG_AUX_DIR>: Diagnose
+       calls to AC_CONFIG_AUX_DIR followings calls to AM_INIT_AUTOMAKE.
+       * tests/auxdir.test, tests/auxdir2.test, tests/lex5.test,
+       tests/mdate3.test, tests/multlib.test, tests/reqd2.test,
+       tests/symlink.test, tests/txinfo8.test, tests/txinfo22.test,
+       tests/yacc6.test, tests/yacc8.test: Fix to call AC_CONFIG_AUX_DIR
+       before AM_INIT_AUTOMAKE.
+       * tests/auxdir3.test: New file (exercise this diagnostic).
+       * tests/Makefile.am (TESTS): Add auxdir3.test.
+
+2004-04-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (%map_traced_defs): New variable.
+       (scan_m4_files): Normalize filenames.
+       (trace_used_macros): Trace for AC_DEFUN and AU_DEFUN, also
+       ask for the filename and the first argument.  Populate
+       %map_traced_defs.
+       (write_aclocal): Use $map_traced_defs to filter out unused
+       definitions.
+       * tests/acloca16.test: New file.
+       * tests/Makefile.am (TESTS): Add acloca16.test.
+
+2004-04-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in ($automake_needs_to_reprocess_all_files): Remove.
+       ($automake_will_process_aux_dir): New variable.
+       (scan_autoconf_traces): Reorder @input_files so that the Makefile
+       that distributes aux files is processed last.  This way we do not
+       have to process all files twice using
+       $automake_will_process_aux_dir.
+       (require_file_internal): Suggest a full run of automake when
+       appropriate.
+       (MAIN): Remove the loop on $automake_needs_to_reprocess_all_files.
+       * tests/distcom7.test: New file.
+       * tests/reqd2.test: Do not check for the "running more than two"
+       message.
+       * tests/Makefile.am (TESTS): Add distcom7.test.
+
+       * automake.in (@config_aux_path, $config_aux_dir): Rename as ...
+       ($config_aux_dir, $am_config_aux_dir): ... these.
+       ($config_aux_dir_set_in_configure_in): Rename as ...
+       ($config_aux_dir_set_in_configure_ac): ... this.
+       (%require_file_found): Rename as ...
+       (%required_file_not_found): ... this.
+       (handle_languages, handle_texinfo_helper, handle_dist,
+       handle_configure, handle_emacs_lisp, handle_python,
+       scan_autoconf_traces, yacc_lex_finish_helper): Adjust to new names.
+       (scan_autoconf_traces): Call locate_aux_dir.
+       (locate_aux_dir): New function.
+       (@require_file_paths): Remove, not used anymore.
+       (require_file_internal): Look files in only one directory (instead
+       of @require_file_internal) passed in argument.
+       (require_file, require_conf_file): Pass the destination directory
+       to require_file_internal.
+
+       Fix for PR automake/416:
+       * m4/depend.m4 (_AM_DEPENDENCIES): Catch `not supported' ICC 8.0
+       remarks.
+       From Peter Seiderer.
+
+2004-04-10  Andreas Buening  <andreas.buening@nexgo.de>
+
+       * aclocal.in, automake.in, configure.ac, Makefile.am,
+       tests/aclocal.in, tests/automake.in, tests/defs.in:
+       Use PATH_SEPARATOR from autoconf instead of ':'.
+
+2004-04-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_lib_objects): Pass the condition of
+       the variable definition to handle_LIBOBJS and handle_ALLOCA,
+       not the aggregated conditions.
+       * tests/Makefile.am (TESTS): Add libobj14.test.
+       * tests/libobj14.test: New file.
+       Report from Bill Davidson.
+
+2004-04-02  Mike Nolta  <mike@nolta.net>
+
+       Better support for Fortran 9x.
+       * automake.in: Add "fc" and "ppfc" languages for Fortran 9x.
+       * doc/automake.texi (Fortran 9x Support): New section.
+       * lib/Automake/Variable.pm (%_ac_macro_for_var): Add AC_PROG_FC.
+       * tests/compile_f90_c_cxx.test: New file.
+       * tests/ext.test: Add AC_PROG_FC.
+       * tests/f90only.test: New file.
+       * tests/link_f90_only.test: New file.
+       * tests/Makefile.am (TESTS): Add new tests.
+
+2004-04-01  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/install-sh: If "mv -f" works, use it, and fall back to
+       the old "test -f" + "rm -f" + "mv" method only if "mv -f" does
+       not work.  This improves performance in the usual case where
+       "mv -f" works.  It also lets us install the "mv" command
+       without worrying about a small window where "mv" does not
+       exist (this problem was reported by Raul Nunez de Arenas
+       Coronado).
+
+2004-03-26  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/python.m4 (AM_PATH_PYTHON): Make sure am_display_PYTHON is
+       set when $PYTHON has been set by the user.
+       From Esben Haabendal Soerensen.
+
+2004-03-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Default _SOURCES): Typo.
+       (true): Correct _'s placement in example.
+       Report from Stepan Kasal.
+
+2004-03-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Overriding JAVAROOT is legitimate, do not warn about it.
+       * lib/Automake/Variable.pm (%_silent_variable_override): Add JAVAROOT.
+       * tests/java2.test: Run automake without -Wno-override.
+       Report from Simon Josefsson.
+
+2004-03-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_texinfo_helper): Typos in comment.
+
+2004-03-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/config.guess: New upstream version.
+
+       Fix for PR automake/285:
+       * automake.in (handle_ltlibraries): Keep track of installation
+       directories for each condition, then define a $(am_TARGET_rpath)
+       variable to hold the -rpath flags of Libtool libraries conditionally
+       installed in different directories.
+       * lib/Automake/DisjConditions.pm (merge): New function.
+       * tests/libtool6.test: Adjust.
+       * tests/libtool8.test: New file.
+       * tests/Makefile.am (TEST): Add libtool8.test.
+
+       * lib/Automake/Variable.pm (traverse_recursively,
+       _do_recursive_traversal): Honor the skip_ac_subst option.
+       * automake.in (handle_dist): Use skip_ac_subst.
+
+2004-02-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * Makefile.am (cvs-release): Upload to ~ftp/pub/automake, not
+       ~ftp/automake.
+       * lib/gnupload (Example): Update example.
+
+       * lib/config-ml.in, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: New upstream versions.
+
+       * m4/depend.m4 (_AM_DEPENDENCIES): Use `touch' rather than `: >'
+       to create numbered dependencies.  This fixes a portability issue
+       when CONFIG_SHELL is forced to /bin/sh on Solaris 8.
+       Reported by Mark Phillips.
+
+       * automake.in (lang_yacc_target_hook): Use Automake::Rule::define
+       so that rules for the same headers are not output twice.
+       * lib/Automake/Variable.pm (value_as_list_recursive): Do not
+       call `return' inside `map'.
+       * tests/cond30.test: Make sure `a.c' and `b.c' both appear
+       in the Makefile.in.
+       * tests/cond35.test, tests/cond36.test: New files.
+       * tests/Makefile.am (TESTS): Add cond35.test and cond36.test.
+       Report from Roman Fietze.
+
+       Fix for PR/413:
+       * lib/am/distdir.am (distcheck): Create $dc_destdir with `umask
+       077 && mkdir' instead of `$(mkdir_p)'.  This prevents possible
+       symlink attacks reported by Stefan Nordhausen.
+
+2004-02-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Multiple Outputs): More text, based on
+       comments from Eric Siegerman, Tim Van Holder, and Oren Ben-Kiki.
+
+2004-02-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/mkdirp.m4: Use `mkdir -p' only with GNU mkdir, because
+       Solaris 8's mkdir is not thread-safe.
+       * lib/mkinstalldirs: Likewise.
+       * lib/install-sh: Abort when mkdir fails to create a directory.
+       Report from Nathanael Nerode.
+
+2004-02-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (rel2abs): New function.
+       (scan_configure_dep): Use rel2abs instead of File::Spec->rel2abs,
+       the later does was introduced in Perl 5.6 so using it breaks with
+       Perl 5.005.
+       Report from Werner John.
+
+2004-02-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Future of aclocal): Make clearer that
+       it's ok to install macros into /usr/share/aclocal/.
+
+2004-02-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/lisp.test: Delete (pointless).
+       * tests/Makefile.am (TESTS): Remove lisp.test.
+
+       * lib/Automake/Variable.pm (transform_variable_recursively):
+       Define rewritten variables in all conditions not *covered* by user
+       definitions, not simply in conditions without a previous
+       definition.
+       * tests/cond34.test: New file.
+       * tests/Makefile.am (TESTS): Add cond34.test.
+       Report from Elena A. Vengerova
+
+       * doc/automake.texi (Multiple Outputs): Typo.
+
+       * doc/automake.texi (Emacs Lisp): Typos.
+
+       Support for conditional _LISP.
+       * automake.in (handle_emacs_lisp): Define $(ELCFILES) from LISP, not
+       from $(am__ELCFILES).
+       * lib/am/lisp.am (elc-stamp): Use $(LISP) instead of $(am__ELFILES).
+       * tests/lisp6.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+       * automake.in (handle_emacs_lisp): Define $(ELCFILES) as
+       $(am__ELCFILES), and always push it on @all.  Do not mention
+       elc-stamp.
+       * lib/am/lisp.am (.el.elc): Rewrite as ...
+       ($(am__ELCFILES)): ... this, and depend on elc-stamp.
+       (elc-stamp): Make sure elc-stamp is older that all .elc files, as
+       explained in the manual entry below.
+
+       * doc/automake.texi (Multiple Outputs): New node.
+
+2004-01-31  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/regex.m4: Do not AC_SUBST(LIBOBJS), and quote most arguments.
+       * tests/regex.test: New file.
+       * tests/Makefile.am (TESTS): Add regex.test.
+
+2004-01-28  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * Makefile.am (maintainer-check): Check for unquoted $(DESTDIR) uses.
+       * lib/am/data.am, lib/am/distdir.am, lib/am/java.am, lib/am/libs.am,
+       lib/am/lisp.am, lib/am/ltlib.am, lib/am/mans.am, lib/am/progs.am,
+       lib/am/python.am, lib/am/scripts.am, lib/am/texinfos.am: Quote
+       installation paths in install, uninstall, and installcheck rules,
+       as well as in am__installdirs variables.  This is for the sake
+       of paths containing spaces.
+       * lib/am/install.am (installdirs-am, installdirs): Do not try
+       to create "" directories.
+       * test/instspc.test: New file.
+       * test/Makefile.am (TESTS): Add instspc.test.
+       Report from James Amundson.
+
+       * doc/automake.texi (Not Enough, Third-Party Makefiles): New nodes.
+       (Extending): Make it a subsection of Not Enough.
+
+       * lib/gnupload (GPG): Use an absolute path.  Suggestion from Gary
+       V. Vaughan.
+       (passphrase): Unset it this variable before using it, in case it
+       was exported.  Report from Scott James Remnant.
+
+2004-01-25  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/gnupload (usage): Fix example.
+       * Makefile.am (cvs-release): Fix call to gnupload.
+       From Jim Meyering.
+
+2004-01-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/gnupload: New script.
+       * lib/Makefile.am (EXTRA_DIST): Distribute gnupload.
+       * Makefile.am (cvs-release): New target.
+
+2004-01-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/python.am (uninstall-%DIR%PYTHON): Remove extra `;'s.
+       Fix python10.test.
+
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Use `s/xx//p'
+       instead of `/xx/ s///p'; the latter fails when GNU sed is run with
+       POSIXLY_CORRECT.  Also strip superfluous -e.
+       Report from Miloslav Trmac.
+
+2004-01-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/lex5.test: Sleep before calling AUTOMAKE the second time,
+       this fixes a spurious failure reported by Andreas Schwab.  Also
+       make sure ylwrap is not installed unless needed, and exercise
+       --no-force.
+
+2004-01-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)
+
+       * doc/automake.texi (Dist): Document limitations of distcheck-hook
+       and DISTCHECK_CONFIGURE_FLAGS with regard to subdirs and
+       subpackages.
+
+2004-01-20  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Upgrading): New node.
+
+2004-01-20  Gary V. Vaughan  <gary@gnu.org>
+
+       * automake.in (scan_autoconf_traces): AC_LIBTOOL_TAGS can be
+       correctly called without arguments as evidenced by the libtool
+       demo directories.
+
+2004-01-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/conflnk3.test: Skip if `test -e' does not work.
+       Report from Lars Hecking.
+
+2004-01-13  Jim Meyering  <jim@meyering.net>
+
+       * lib/install-sh: Change `\n \t' to `\n\t ' in `defaultIFS'
+       assignment.  Remove spurious SPACEs before TABs.
+
+2004-01-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/py-compile: Check input files after option processing.
+       Ensure --basedir has an argument.
+       * lib/am/python.am (install-%DIR%PYTHON): Do not run py-compile
+       if nothing was installed.
+       * tests/python10.test: New file.
+       * tests/Makefile.am (TESTS): Add python10.test.
+       Suggested by Sander Niemeijer.
+
+       * tests/txinfo29.test: Remove autom4te.cache.
+       Report from Greg Schafer.
+
+       * lib/install-sh: Do not use "$@" in a context where it may be empty,
+       for the sake of OSF1/Tru64's shell.
+       Report from He Li.
+
+2004-01-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/config.sub, lib/config.guess, lib/texinfo.tex: New upstream
+       versions.
+
+       * m4/as.m4, m4/depend.m4, m4/maintainer.m4, m4/multi.m4: Update
+       copyright years and serial.
+
+       * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Add python2.4.
+
+2004-01-10  Peter Eisentraut  <peter_e@gmx.net>  (tiny change)
+
+       * m4/as.m4 (AM_PROG_AS): Format and align help string more
+       consistently.
+       * m4/depend.m4 (AM_DEP_TRACK): Likewise.
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Likewise.
+       * m4/maintainer.m4 (AM_MAINTAINER_MODE): Likewise.
+       * m4/multi.m4 (AM_ENABLE_MULTILIB): Likewise.
+
+2004-01-10  Paul Eggert  <eggert@twinsun.com>
+
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Don't use \? in sed regular
+       expressions; it doesn't conform to POSIX.
+
+2004-01-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (shadow_unconditionally): New function...
+       (handle_source_transform): ... extracted from here.
+       (am_install_var): Use shadow_unconditionally to define %DISTVAR%.
+       * lib/am/data.am, lib/am/java.am, lib/am/lisp.am, lib/am/python.am,
+       lib/am/script.am: Add %DISTVAR% to DIST_COMMON.
+       * tests/cond33.test: Make sure all conditional files are distributed.
+       Report from Ralf Corsepius.
+
+2004-01-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/mkdirp.m4 (AM_PROG_MKDIR_P): Append `.' to $(mkdir_p).
+       * lib/install-sh: Accept `install-sh -d' with 0..n arguments,
+       as well as `install-sh sources... dest' with multiple sources.
+       * tests/cond33.test: New file.
+       * tests/instsh2.test: Add more checks for install-sh.
+       * tests/transform.test: Test for installdirs.
+       * tests/Makefile.am (TESTS): Add cond33.test
+       Report from Ralf Corsepius.
+
+       * automake.in (handle_configure): Skip AC_CONFIG_LINKS items which
+       do not look like DEST:SRC.
+       * tests/conflnk3.test: Check for AC_CONFIG_LINKS($computed).
+
+2004-01-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix for PR automake/289:
+       * automake.in (Automake::Struct::libtool_tag): New attribute.  Define
+       it for the language that have a Libtool tag.
+       (%libtool_tags): New variable.
+       (handle_languages, define_compiler_variable)
+       (define_linker_variable): Pass --tag=XXX to libtool if supported.
+       (scan_autoconf_traces): Scan for _LT_AC_TAGCONFIG and AC_LIBTOOL_TAGS.
+       * tests/libtool3.test, tests/subobj9.test: Check that --tag=XXX is
+       output.
+
+2003-01-07  Eric Sunshine  <sunshine@sunshineco.com>  (tiny change)
+
+       * lib/am/configure.am (am__CONFIG_DISTCLEAN_FILES): Add
+       config.status.lineno.
+
+2004-01-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)
+
+       * doc/automake.texi (Rebuilding): Typo.
+
+2004-01-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/Makefile.am (dist_am_DATA): Really add inst-vars.am.
+
+2004-01-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * THANKS: Add Bruce Korb.
+
+2004-01-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Mimic Paul Eggert's changes to Autoconf.
+       * Makefile.am (automake, aclocal): Use `chmod a-w', not `chmod -w'.
+       * lib/Automake/Makefile.am (Config.pm): Likewise.
+       * m4/Makefile.am ($(top_srcdir)/m4/amversion.m4): Likewise.
+
+       * lib/am/inst-vars.am: New file, define am__vpath_adj_setup,
+       am__vpath_adj, and am__strip_dir.
+       * lib/am/Makefile.am (dist_am_DATA): Add inst-vars.am.
+       * lib/am/data.am, lib/am/lisp.am, lib/am/python.am,
+       lib/am/scripts.am: Include inst-vars.am, and use $(am__vpath_adj),
+       $(am__vpath_adj_setup), and $(am__strip_dir) in install and
+       uninstall rules.  This fixes installation of nobase_ files in
+       VPATH setups with Sun and OSF1/Tru64 Make.
+       * lib/am/libs.am, lib/am/ltlib.am: Include inst-vars.am, and use
+       $(am__strip_dir) to simplify install and uninstall rules.
+       * tests/nobase.test: Augment to check installation from VPATH builds.
+
+       * automake.in (%transformed_files): New variable.
+       (initialize_per_input): Reset it.
+       (make_paragraphs): Fill %transformed_files, and define %FIRST%
+       each time a file is transformed for the first time.
+       (handle_configure): Do not define %FIRST_CONFIG_HIN%.
+       (am_install_var): Do not define %FIRST%.
+       * lib/am/remake-hdr.am: Use %?FIRST% instead of %?FIRST_CONFIG_HIN%.
+
+2004-01-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/texinfo.tex: New upstream version.
+
+       * m4/mkdirp.m4: Do not use `-m 0755'.  This overrides special bits
+       and break setups where 775 directories are expected.  Just obey
+       umask as we did in the past.
+       Report from Harlan Stenn.
+
+2004-01-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (scan_texinfo_file): Do not compare $outfile to ''
+       as $outfile might not be defined at all.
+
+       * lib/Automake/Variable.pm (define): Rework the way we check
+       Automake variable definition.  Ensure consistent :=/+=/=
+       definitions only for variables that have been and are defined by
+       Automake, and make it an internal error.  Ignore Automake
+       attempts to touch a user variable, even with += assignments.
+       * tests/txinfo29.test: New file.
+       * tests/Makefile.am (TESTS): Add txinfo29.test.
+       Reported by Bruce Korb.
+
+2004-01-02  Tom Tromey  <tromey@redhat.com>
+
+       * automake.in (handle_source_transform): Don't generate dist
+       variables when no-dist is set.
+       (generate_makefile): Likewise.
+       * tests/nodist3.test: Ensure that DIST_SOURCES is not created,
+       and that dist target does not exist.
+       Reported by Tom Fitzsimmons.
+
+2004-01-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/libtool5.test, tests/ltcond.test, tests/ltcond2.test,
+       * tests/ltconv.test: Run automake with --add-missing, because
+       the CVS version of libtoolize no longer install config.sub and
+       config.guess by default.
+
+       Fix for PR automake/319:
+       * aclocal.in (scan_m4_files): Scan configure.ac.
+       (trace_used_macros, write_aclocal): Remove configure.ac from the
+       list of files to include.
+       * tests/Makefile.am (TESTS): Add acloca15.test.
+       * tests/acloca15.test: New file.
+
+       * aclocal.in (%file_includes): New variable.
+       (scan_configure_dep): Compile $m4_include_rx and $ac_require_rx once.
+       (scan_file): Scan for included files, and process these files
+       recursively.  Fill %file_includes and %file_contents.  Return the
+       list of included files, not the contents.
+       (scan_m4_files): Adjust calls to scan_files.
+       (strip_redundant_includes): New function.
+       (trace_used_macros): Call it.
+       (write_aclocal): Likewise.  Also check the mtime of included files.
+       * tests/Makefile.am (TESTS): Add acloca14.test.
+       * tests/acloca14.test: New file.
+       Report from Phil Edwards.
+
+2004-01-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_languages): Do not define DEP_FILES.
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Extract included
+       files with $(DEPDIR) in their name instead of DEP_FILES.
+       * tests/depend.test, tests/depend4.test, tests/exsource.test:
+       Adjust.
+       Suggested by Tom Tromey.
+
+       Do not output .lo rules for programs and static libraries objects,
+       and do not output .o/.obj rules for libtool libraries.  This is
+       about explicit rules only, not inference rules.
+       * automake.in (handle_single_transform_list): Rename as ...
+       (handle_single_transform): ... this.  Take a single file
+       to transform (it was only called this way) and accept a new
+       %transform argument.  Fill %lang_specific_files with list
+       references instead of strings, and append %transform to each
+       of these lists.
+       (define_objects_from_sources, handle_source_transform):
+       Take a %transform argument, and forward it to &handle_single_transform.
+       (handle_languages): Adjust to the new format of
+       %lang_specific_files, and honor its %transform part.
+       (handle_programs, handle_libraries, handle_ltlibraries): Override
+       %NONLIBTOOL% and %LIBTOOL% while calling handle_source_transform.
+       (make_paragraphs): Define %NONLIBTOOL% by default.  Make sure
+       %transform settings override global settings.
+       * lib/am/depend2.am (%OBJ%, %OBJOBJ%): Define only if %NONLIBTOOL%.
+       * tests/libtool3.test: Augment to check Makefile.ins for unneeded
+       rules.
+       Suggested by Thomas Fitzsimmons.
+
+       * automake.in, aclocal.in: Bump copyright years.
+
+-----
+
+Copyright (C) 2004-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
+
+;; Variables:
+;; coding: utf-8
+;; End:
diff --git a/old/ChangeLog.09 b/old/ChangeLog.09
new file mode 100644 (file)
index 0000000..02a1e33
--- /dev/null
@@ -0,0 +1,5767 @@
+2009-12-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix and complete copyright notices in Makefile.am files.
+       * Makefile.am: Use single-`#' comment for copyright notice, so
+       that it also appears in the generated Makefile.in file.
+       * doc/Makefile.am: Likewise.
+       * doc/amhello/Makefile.am: Likewise.
+       * doc/amhello/src/Makefile.am: Likewise.
+       * lib/Automake/Makefile.am: Likewise.
+       * lib/Automake/tests/Makefile.am: Likewise.
+       * lib/Makefile.am: Likewise.
+       * lib/am/Makefile.am: Likewise.
+       * m4/Makefile.am: Likewise.
+       * tests/Makefile.am: Add copyright notice.
+       Report of missing copyright notice by Stefano Lattarini.
+
+2009-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fixed typo in Makefile.am (extra semicolon removed)
+       * Makefile.am (sc_diff_automake_in_automake): Removed an extra
+       semicolon in target's rules, which prevented a stdout redirection
+       from working.
+
+2009-12-21  Julien Danjou  <julien@danjou.info>  (tiny change)
+
+       Add support for newer python version
+       * m4/python.m4 (AM_PATH_PYTHON): Add python3.1 to
+       _AM_PYTHON_INTERPRETER_LIST.
+
+2009-12-21  Karl Berry  <karl@freefriends.org>
+
+       mention ncftpput in gnupload --help
+       * lib/gnupload: Mention ncftpput in `--help' output.
+       Report by Bruce Korb.
+
+2009-12-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * NEWS: Update.
+
+2009-12-05  Antonio Diaz Diaz  <ant_diaz@teleline.es>
+
+       Replace unlzma, gunzip, bunzip2 with pack tool -d invocation.
+       * lib/am/distdir.am (distcheck): Use lzma -d, gzip -d, bzip2 -d,
+       instead of the respective un$tool invocation, to avoid depending
+       on another tool.
+       * THANKS: Update.
+
+2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Use $DJDIR rather than $DJGPP to detect running on DJGPP.
+       * automake.in (Language): Use $ENV{'DJDIR'} for the
+       $ENV{'SHELL'} override.
+       * bootstrap: Use $DJDIR for setting BOOTSTRAP_SHELL, to fix
+       bootstrapping under MinGW when $DJGPP has been set.
+
+       Do not rely on Perl symlink status, for MSYS perl.
+       * automake.in (require_file_internal): Ensure presence of
+       symlink target file; MSYS perl symlink doesn't return an error
+       status when the file could not be created (copied, on this
+       system).  Fixes symlink.test failure.
+
+2009-12-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid Solaris sh `set -e' bug in vala4.test.
+       * tests/vala4.test: New variable $cwd, holding the full path of the
+       current directory.  Use it instead of `pwd` command substitution,
+       to avoid Heirloom/Solaris Sh bug with `set -e'.
+
+2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix requirements of silent8.test.
+       * tests/silent8.test: Require makeinfo --html, tex, texi2dvi -o,
+       dvips.
+
+2009-12-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       File `automake.in' is not meant to be executed (only to be
+       preprocessed into `automake'), so don't leave it executable.
+       * automake.in: Remove executable bit.
+
+2009-12-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Don't make the generated Automake's Config.pm executable.
+       * lib/Automake/Makefile.am (Config.pm): Don't make the generated
+       `Config.pm' file executable.
+
+2009-11-28  Jim Meyering  <meyering@redhat.com>
+
+       do not put world-writable directories in distribution tarballs
+       * lib/am/distdir.am (distdir): Do not make all directories
+       group- or world-writable.  Instead, use 755.
+       * tests/subpkg4.test (test-distdir-is-readable): Check for new,
+       more restricted permissions.
+
+2009-11-29  Karl Berry  <karl@freefriends.org>
+
+       Rewrite `gnupload --help' examples.
+       * lib/gnupload: Use GNU style version numbers, a generic package
+       name, and more useful examples.
+
+2009-11-28  Jim Meyering  <meyering@redhat.com>
+
+       avoid a warning from perl-5.11
+       * lib/Automake/Wrap.pm (_tab_length): Remove useless use of tr's
+       "/d" modifier.
+
+2009-11-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Distribute the Automake bootstrap script.
+       * Makefile.am (EXTRA_DIST): Add bootstrap.
+       Report by Jan Engelhardt.
+
+2009-11-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Coverage for corner cases in derive_suffix.
+       Ensure unrelatex SUFFIXES entries and unrelated inference rules
+       are ignored silently.
+       * tests/ext3.test: New test.
+       * tests/Makefile.am: Update.
+
+       Coverage for user-provided _LINK variables.
+       * tests/link_override.test: New test.
+       * tests/Makefile.am: Adjust.
+
+       Coverage: warn about substitutions that need EXTRA_PRIMARY.
+       * tests/extra9.test: New test.
+       * tests/Makefile.am: Adjust.
+
+       Coverage: warn about configure substitution in EXTRA_PRIMARY.
+       * tests/subst5.test: New test.
+       * tests/Makefile.am: Update.
+
+       Coverage for syntax errors with conditionals in included fragments.
+       * tests/condinc2.test: Amend test.
+
+       Coverage: diagnose variables with forbidden dist_ prefix.
+       * tests/candist.test: New test.
+       * tests/Makefile.am: Update.
+
+       Coverage for conditional `else' and `endif' arguments.
+       * tests/cond46.test: New test.
+       * tests/Makefile.am: Update.
+
+2009-10-31  Jim Meyering  <meyering@redhat.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Don't let an envvar setting of "$fail" cause build failure.
+       Without this change, in a project using an automake-generated
+       Makefile, "make fail=anything" would fail inappropriately,
+       due to the `test -z "$$fail"' at the end of this emitted rule:
+       * lib/am/subdirs.am ($(RECURSIVE_TARGETS)): Initialize "fail=" to keep
+       an envvar setting of that variable from causing unwarranted failure.
+       ($(RECURSIVE_CLEAN_TARGETS)): Likewise.
+       * tests/subdir10.test: New test.
+       * tests/Makefile.am: Update.
+
+2009-10-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Simplify Variable::_check_ambiguous_condition.
+       * lib/Automake/Variable.pm (_check_ambiguous_condition): No need
+       to check for $def since ambiguous_p returns an empty $message if
+       there is no other condition which is ambiguous to $cond.
+
+       Coverage for DisjConditions.pm.
+       * lib/Automake/tests/DisjConditions.pl (test_basics): Increase
+       test coverage: test ->human, ->merge, ->simplify, ->multiply.
+       * lib/Automake/tests/DisjConditions-t.pl (test_basics): Likewise
+       changes, but including state copies across thread creation.
+       * lib/Automake/tests/DisjCon2.pl: New test.
+       * lib/Automake/tests/DisjCon3.pl: Likewise.
+       * lib/Automake/tests/Makefile.am (TESTS, XFAIL_TESTS): Adjust.
+
+       Coverage and fixes for Condition.pm.
+       * lib/Automake/Condition.pm (new): Catch common programming
+       errors better by checking type of passed argument before
+       munging them to all be strings through split.
+       * lib/Automake/tests/Condition.pl (test_basics): Also test
+       ->human.
+       (test_merge): New function, test ->merge, ->merge_conds,
+       ->strip.
+       * lib/Automake/tests/Condition-t.pl (test_basics, test_merge):
+       Likewise changes, but including state copies across thread
+       creation.
+       * lib/Automake/tests/Cond2.pl: New test for programming error.
+       * lib/Automake/tests/Cond3.pl: Likewise.
+       * lib/Automake/tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
+       Coverage for Wrap.pm.
+       * lib/Automake/tests/Wrap.pl (@tests): Add test for word with
+       trailing space.
+       (test_makefile_wrap, @makefile_tests): New function, new list of
+       tests, to test makefile_wrap.
+
+       Coverage for Version.pm.
+       * lib/Automake/tests/Version.pl (test_version_compare): Also
+       try Automake::Version::check for the version pairs, taking into
+       account the special-case naming of code forks.
+       (@tests): Add more test cases.
+       (test_bad_versions, @bad_versions): New function, new test cases,
+       to ensure bad version strings are rejected.
+       * lib/Automake/tests/Version2.pl: New test.
+       * lib/Automake/tests/Version3.pl: Likewise.
+       * lib/Automake/tests/Makefile.am (TESTS): Add tests here ...
+       (XFAIL_TESTS): ... and here, new.
+
+       Pod coverage for Perl modules.
+       * lib/Automake/ChannelDefs.pm (parse_warnings): Fix
+       typo in Pod documentation.
+       * lib/Automake/Condition.pm: Add a couple of missing `=back'
+       lines.
+       (_has): Renamed from ...
+       (has): ... this, as this is an internal method.
+       (strip, false, true_when): Adjust callers.
+       * lib/Automake/Configure_ac.pm: Add Pod `Functions' section with
+       documentation for find_configure_ac and require_configure_ac.
+       * lib/Automake/Location.pm: Fix typo in Pod.  Add `Methods'
+       section, document methods.
+       * lib/Automake/RuleDef.pm: New `Methods' Pod section.
+       * lib/Automake/VarDef.pm: Document `raw_value'.
+       * lib/Automake/Wrap.pm (_tab_length): Rename from ...
+       (tab_length): ... this, as this is an internal method.
+       (wrap): Adjust callers.
+       * lib/Automake/XFile.pm: Reorganize Pod a bit, add `Methods'
+       section.
+
+2009-10-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Perl coverage support using Devel::Cover.
+       This introduces makefile rules to run the testsuite with Perl
+       coverage enabled.  It skips tests that use perl ithreads, by
+       unsetting AUTOMAKE_JOBS and setting WANT_NO_THREADS to make the
+       threaded tests skip.
+       * Makefile.am (PERL_COVERAGE_DB, PERL_COVERAGE_FLAGS)
+       (PERL_COVER): New variables.
+       (check-coverage, recheck-coverage, clean-coverage): New phony
+       targets.
+       (check-coverage-run, recheck-coverage-run): New phony helper
+       targets.
+       (clean-local): New, depend on clean-coverage.
+       * lib/Automake/tests/Condition-t.pl: Skip if WANT_NO_THREADS is
+       set.
+       * lib/Automake/tests/DisjConditions-t.pl: Likewise.
+       * tests/defs.in: New required entry 'perl-threads'.
+       * tests/parallel-am.test: Use it to skip if WANT_NO_THREADS is
+       set.
+       * tests/parallel-am2.test: Likewise.
+       * tests/parallel-am3.test: Likewise.
+
+       Add convenience `recheck' target to our toplevel Makefile.am.
+       * Makefile.am (recheck): New convenience target.
+       * tests/README: Give examples for running only failed or
+       outdated or otherwise selected tests.
+
+       dist: allow running several compressors in parallel.
+       * lib/am/distdir.am (am__post_remove_distdir): New internal
+       variable.
+       (DIST_TARGETS): New variable, set to list of chosen distribution
+       formats.  Order formats by expected duration, slowest first, for
+       better parallelism.
+       (dist-gzip, dist-bzip2, dist-lzma, dist-xz, dist-tarZ)
+       (dist-shar, dist-zip): Use $(am__post_remove_distdir).
+       (dist, dist-all): Do not depend on distdir.  Instead of
+       replicating each compression command, use a recursive invocation
+       to allow running all $(DIST_TARGETS) in parallel.
+       * NEWS: Update.
+       Report by Peter Breitenlohner.
+
+       Fix license headers of cscope tests to be GPLv2+.
+       * tests/cscope.test: Revert to GPL version 2.
+       * tests/cscope2.test: Likewise.
+       * tests/cscope3.test: Likewise.
+
+       Sync auxiliary files from upstream.
+       * INSTALL, lib/INSTALL, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: Sync from upstream.
+
+       Doc and comment typos.
+       * automake.in (handle_ltlibraries): Fix typo in comment.
+       * tests/distcom7.test: Likewise.
+       * tests/lisp5.test: Likewise.
+       * doc/automake.texi (Usage of Conditionals): Fix typo.
+
+2009-10-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix race condition in werror2.test due to sanity sleep change.
+       * tests/werror2.test: Generate Makefile.in before configure so
+       that a Makefile.am update after configure has run is guaranteed
+       to be newer than Makefile.in.
+       * tests/subdir5.test: Document why this test does not need to be
+       fixed.
+       * tests/subdir8.test: Likewise.
+
+       Improve description of the various *LINK variables.
+       * doc/automake.texi (Program and Library Variables): _LINK also
+       receives libraries to link against.  _LINK may be generated.
+       (Program Variables): Document reasons when per-target _LINK is
+       used instead of LINK.
+       (How the Linker is Chosen): Document how a per-target _LINK
+       variable and per-target link flags override linker selection.
+       * THANKS: Update.
+       Report by Dave Korn against gcc/libstdc++-v3.
+
+       Allow variable override of, rather than by, silent variables.
+       When overriding variables, check the VAR_SILENT status of the
+       old condition, not the new one: we allow non-silent overrides
+       of silent variables (these do not hit ordering bugs in the
+       automake output), but there is no use case for doing so the
+       other way round.  Fixes conditional overrides of variables
+       annotated AM_SUBST_NOTMAKE in configure.ac.
+       * lib/Automake/Variable.pm (_check_ambiguous_condition): Check
+       for VAR_SILENT in $ambig_cond not $cond.
+       * tests/cond44.test, tests/cond45.test: New tests, analogous to
+       cond23.test and cond24.test.
+       * tests/Makefile.am: Update.
+       Spotted originally in binutils/bfd.
+
+       Fix `make clean check' for the Automake package.
+       * lib/Automake/Makefile.am (SUBDIRS): Add `.' before `tests',
+       so that Config.pm is built first.
+
+       Fix in-tree `recheck' after failed test that runs `check'.
+       If a test like pr401b-p.test fails for some reason, a `make
+       recheck' would cause another reason for failure because it sets
+       AM_MAKEFLAGS which gets propagated into the test and causes its
+       `make check' to fail.
+       * tests/defs.in: Also unset AM_MAKEFLAGS.
+
+2009-10-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Updated code enabling Bourne-compatibility in test scripts.
+       * tests/defs.in: updated the code enabling Bourne-compatibility
+       mode in the shell (now it's copied from autoconf 2.64).
+
+       Avoid leaking TEST_LOG_COMPILER in environment of test scripts.
+       * tests/defs.in: Unset variable `TEST_LOG_COMPILER'.
+
+2009-10-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Testsuite: do not use `chmod -R' when cleaning up.
+       * tests/Makefile.am (clean-local-check): Do not use `chmod -R' on
+       the test directories, as that may change or try to change the mode
+       of installed files: the test directory may contain symlinks to
+       ltmain.sh files from a Libtool installation, and Solaris `chmod -R'
+       touches symlink targets.  Instead, use the cleanup strategy used
+       in distdir.am (which is also employed in tests/defs.in).
+
+2009-10-06  Bruno Haible  <bruno@clisp.org>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix 'compile' script to not call mv when target equals source.
+       * lib/compile: Don't attempt to move the generated file to its
+       target destination when it is already at the target destination.
+       Avoids an mv failure with subdir-objects.
+       * tests/ccnoco3.test: New test.
+       * tests/Makefile.am: Adjust.
+
+2009-10-01  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)
+
+       Fix recommended way to run automake's test scripts with Zsh.
+       * tests/README (Supported shells): Changed the recommended way
+       to run automake's test scripts with Zsh.  Now we tell to use
+       the Zsh's command line option `-o no_function_argzero', not
+       `--no-function-argzero', since the latter does not work with
+       versions 3.x of Zsh.
+
+2009-09-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fixups and tests for cscope functionality.
+       It seems cscope is not able to take into account relative
+       file names of included cscope.files files, but it is able to
+       canonicalize file names containing '../' sequences.
+       This patch makes the cscope references relative again, and
+       fixes some corner cases.
+       * NEWS: Reword a bit.
+       * THANKS: Update.
+       * automake.in (handle_tags): Use $(am__cd).  Provide default
+       empty rule for the `cscope' target, for empty sources.
+       * lib/am/tags.am (cscopelist): Construct relative path to files
+       in $(srcdir) if $(srcdir) is relative.
+       [TOPDIR_P] (cscope): Do not depend on cscope-clean.  Only invoke
+       $(CSCOPE) if cscope.files is nonemtpy.
+       (clean-cscope): Rename from ...
+       (cscopeclean): ... this.
+       (cscope.files): Depend on clean-cscope.
+       (distclean-tags) [!TOPDIR_P]: No need to remove cscope files
+       here.
+       * tests/cscope.test, tests/cscope2.test, tests/cscope3.test: New
+       tests.
+       * tests/Makefile.am: Adjust.
+
+2009-09-25  Debarshi Ray  <rishi@gnu.org>
+
+       New target to generate cscope database.
+       * automake.in (handle_tags): Handle cscope.
+       * doc/automake.texi (Tags): Document cscope.
+       * lib/am/tags.am (CSCOPE): New macro.
+       [TOPDIR_P] (AM_RECURSIVE_TARGETS): Add cscope.
+       (cscope): New target.
+       (cscopeclean): Likewise.
+       (cscope.files): Likewise.
+       (cscopelist): Likewise.
+       (distclean-tags): Remove `cscope.out', `cscope.in.out',
+       `cscope.po.out' and `cscope.files'.
+       * NEWS: Update.
+       Based upon earlier patch from Jesse Barnes.
+
+2009-09-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Use silent-rules for building the Automake package.
+       * configure.ac (AM_INIT_AUTOMAKE): Add silent-rules option.
+       * Makefile.am (automake, aclocal, INSTALL): Add silencing
+       variables to recipe.
+       * doc/Makefile.am (update_mans, $(srcdir)/aclocal.1)
+       ($(srcdir)/automake.1, $(srcdir)/amhello-1.0.tar.gz): Likewise.
+       * lib/Automake/Makefile.am (Config.pm): Likewise.
+       * tests/Makefile.am ($(srcdir)/parallel-tests.am)
+       ($(parallel_tests), defs-p): Likewise.
+
+2009-09-25  Jack Kelly  <endgame.dos@gmail.com>
+
+       Add silent rules support for texinfo outputs.
+       * automake.in (define_verbose_texinfo): Define several new verbose
+       tagvars and verbose vars.
+       (define_verbose_tagvar): Increase spacing to 8 to accommodate
+       MAKEINFO, TEXI2DVI, TEXI2PDF.
+       (handle_texinfo): Additional substitution for silencing dvips.
+       (output_texinfo_build_rules): Additional substitutions for
+       silencing texi2dvi and texi2pdf.
+       * lib/am/texibuild.am: Add silencing to makeinfo, makeinfo --html,
+       texi2dvi and texi2pdf rules.
+       * lib/am/texinfos.am: Add silencing to .dvi.ps rule.
+       * tests/Makefile.am: Add silent8.test.
+       * tests/silent8.test: New test: tests that silent texinfo rules
+       produce quiet messages.
+       * NEWS: Update.
+
+2009-09-18  Peter Johansson  <trojkan@gmail.com>  (tiny change)
+
+       Fix link to "Recursive Make Considered Harmful" paper.
+       * doc/automake.texi (Alternative): Fix broken URL.
+
+2009-09-11  Reuben Thomas <rrt@sc3d.org>  (tiny patch)
+
+       Fix outdated reference to sh-utils in the manual.
+       * doc/automake.texi (Options): The reference to `sh-utils'
+       should be to `coreutils'.
+
+2009-09-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid sleeping for one second most of the time in sanity check.
+       * m4/sanity.m4 (AM_SANITY_CHECK): Try sanity check first without
+       sleeping for a second, and only if that failed, sleep and try
+       again, to avoid the delay in the common case of a configure
+       script that is older than a second, or a system with sub-second
+       time stamp granularity.
+       Report and different patch by Jim Meyering.
+
+2009-09-06  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)
+
+       tests/README: warn about zsh incompatibilities.
+       * tests/README (User interface, Getting details from failures):
+       Explicitly state that every test is a "shell script", not just
+       a "script", and that it's run by `/bin/sh' by default.
+       * tests/README (User interface, Supported shells): New subsection,
+       telling about expected portability of the automake test scripts,
+       describing a zsh incompatibility (w.r.t. $0), and a workaround to
+       it (with the `--no-function-argzero' option).
+
+       testsuite: fix a minor glitch.
+       * tests/defs.in (exit trap): Use `$me', not `$as_me', as the
+       name of the current test (used in error messages).
+       * THANKS: Update.
+
+2009-07-08  Jim Meyering  <meyering@redhat.com>
+
+       manual: fix a trivial grammar error.
+       * doc/automake.texi (Invoking aclocal): Fix grammar.
+
+2009-06-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       AM_PROG_GCJ: use AC_CHECK_TOOLS for gcj, for cross compilation.
+       * m4/gcj.m4 (AM_PROG_GCJ): Use AC_CHECK_TOOLS, rather than
+       AC_CHECK_PROGS, when searching for `gcj'.
+       * NEWS: Update.
+       Report by Jack Kelly.
+
+2009-05-24  Jack Kelly  <endgame.dos@gmail.com>  (tiny change)
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       AM_PROG_GCJ currently fails to define OBJEXT and EXEEXT.
+       * tests/gcj6.test: New test.
+       * tests/Makefile.am: Update; mark gcj6.test as XFAIL.
+       * THANKS: Update.
+
+2009-05-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       parallel-tests: avoid GNU make 3.80 substitution bug.
+       * lib/am/check.am [PARALLEL_TESTS] (check-TESTS): Remove any
+       `.log' entries from `$(TEST_LOGS)' even if the list is nonempty,
+       to work around GNU make 3.80 substitution reference issue with
+       trailing white space in the variable.
+       * tests/parallel-tests10.test: New test.
+       * tests/parallel-tests6.test: Update comment.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+       Report by Bob Friesenhahn.
+
+2009-05-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       testsuite: unset installation directory variables.
+       * tests/defs.in: Before test execution, be sure to unset all
+       installation directory variables, so they cannot have an effect
+       on a `make -e install' command within a test.
+       Report by Dagobert Michelsen.
+
+       testsuite: do not change the mode of installed Libtool files.
+       * tests/defs.in: Do not use `chmod -R' on the test directory, as
+       that may change or try to change the mode of installed files:
+       the test directory may contain symlinks to ltmain.sh files from
+       a Libtool installation, and Solaris `chmod -R' touches symlink
+       targets.  Instead, use the cleanup strategy used in distdir.am.
+       * NEWS: Update.
+       Report by Dagobert Michelsen.
+
+       testsuite: do not fail in cleanup code.
+       * tests/defs.in: Turn off errexit in the cleanup trap, to avoid
+       a test failure due to a nonzero command.
+       * THANKS: Update.
+       Report by Dagobert Michelsen.
+
+2009-05-23  Peter O'Gorman  <peter@pogma.com>
+
+       python: do not install in system directories on Darwin 9.
+       On Darwin 9, get_python_lib returns a path below `/Library/Python'
+       regardless of the `prefix' argument it was passed, causing `make
+       install' to target the system directories regardless of `--prefix'
+       argument used.  Work around this Darwin bug by ignoring the result
+       of get_python_lib if it points outside of the passed prefix, and
+       the prefix was not a system directory.
+       * m4/python.m4 (AM_PATH_PYTHON): If the prefix does not match the
+       initial portion of the pythondir returned by get_python_lib, then
+       ignore it unless the configured prefix is `/usr' or starts with
+       `/System'.  Fixes instmany-python.test failure on Mac OS X 10.5.7.
+       * NEWS: Update.
+
+2009-05-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Clarify how to enable `silent-rules' and other global options.
+       * doc/automake.texi (Options): When introducing options, be more
+       careful to note that not all of them can be specified in
+       AUTOMAKE_OPTIONS statements, and that some do not make sense in
+       subdirectories.  Note more prominently that `silent-rules' can
+       only be specified in configure.ac.
+       * lib/Automake/Options.pm (_process_option_list): Improve error
+       message for `silent-rules', `tar-v7', `tar-ustar', `tar-pax'
+       options specified in Makefile.am files.
+       Report by Bruno Haible.
+
+2009-05-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Skip specflg10.test without a C++ compiler.
+       * tests/specflg10.test: Require g++.
+       Report by Thien-Thi Nguyen.
+
+2009-05-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Revert last patch, IRIX has an editor named `jot'.
+       * tests/instmany-mans.test: Do not try `jot'.
+       * tests/instmany-python.test: Likewise.
+       * tests/instmany.test: Likewise.
+       Report by Peter O'Gorman.
+
+2009-05-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       testsuite: also try `jot' as `seq' replacement.
+       * tests/instmany-mans.test: Try BSD `jot' before resorting to a
+       slow but portable shell loop.
+       * tests/instmany-python.test: Likewise.
+       * tests/instmany.test: Likewise.
+       Suggestion by Peter O'Gorman.
+
+       Fix test failure when pkg.m4 is not found, only pkg-config.
+       * tests/vala5.test: Update comment, this test is not expected to
+       fail any more.  Require valac version 0.7.0.  Skip if configure
+       fails, could be due to unexpanded PKG_CHECK_MODULES or too old
+       valac.
+       Report by Simon Josefsson.
+
+2009-05-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Post-release version bump.
+       * configure.ac, NEWS: Bump version to 1.11a.
+
+2009-05-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Automake 1.11.
+       * configure.ac: Bump version to 1.11.
+       * doc/automake.texi (Releases): Add line for 1.11.  Remove line
+       for 1.10b.
+
+       Fix maintainer-check failures.
+       * automake.in (lang_vala_finish_target): Use `$(am__cd)' instead
+       of plain `cd'.
+       * tests/vala2.test: Use `rm -f' instead of `rm'.
+
+       Revert Automake license to GPLv2+.
+       Automake will move to GPLv3+ once the Exception statement has
+       been rewritten to use the new GPLv3 exception language.  This
+       change does not impact the COPYING file that may be installed
+       by `automake --add-missing'.
+       * COPYING: Revert to GPLv2.  All uses changed.
+       * NEWS: Update.
+
+       Rewrite NEWS for 1.11.
+       * NEWS: Rewrite, merging 1.10b and 1.10c entries.
+
+       Sync auxiliary files from upstream.
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: Sync from
+       upstream.
+
+       Update release statistics, improve release-stats rule.
+       * Makefile.am (release-stats): Output stderr of pstops in
+       addition to catching it, for better debugging.
+       * doc/automake.texi (Releases): Add line for 1.10.2.
+
+       Cope with parallel BSD make -jN semantics.
+       When BSD `make -jN' is used without `-B' which enables backwards
+       compatible semantics, it may reuse the same shell for several
+       commands within a rule; so ensure we do not leave it in a
+       different directory, nor `exit 0' early in a multi-command rule.
+       * lib/am/distdir.am (distcheck): After running `distcleancheck',
+       change back to original working directory.
+       * lib/am/remake-hdr.am (%CONFIG_HIN%): Run autoheader in a
+       subshell.
+       * lib/am/mans.am (uninstall-man%SECTION%): Do not `exit 0' early
+       in a rule that consists of several shell invocations.  Parallel
+       NetBSD `make -jN' without `-B' will use only one shell for all
+       commands, but won't respawn one after `exit 0'.  Fixes
+       notrans.test failure.
+       * tests/makej2.test: New test.
+       * tests/Makefile.am: Update.
+
+       Fix typo in comment.
+       * lib/am/install.am: Fix typo.
+
+2009-05-17  Matthias Klose  <doko@ubuntu.com>  (tiny change)
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Let AM_PATH_PYTHON honor python's idea about the site directory.
+       * m4/python.m4 (AM_PATH_PYTHON): When computing pythondir and
+       pyexecdir, pass the expanded prefix resp. exec_prefix as `prefix'
+       to get_python_lib, so python can determine the name of the site
+       directory depending on the install location.  Afterwards, replace
+       the directory names with the unexpanded values of $PYTHON_PREFIX
+       resp. $PYTHON_EXEC_PREFIX again, to allow override according to
+       the documentation.  Fixes site directory computation for Debian
+       and Ubuntu (`dist-packages' for a prefix of `/usr' or `/usr/local',
+       `site-packages' elsewhere).
+       * NEWS, THANKS: Update.
+
+2009-05-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Vala: for now, require GNU make.
+       * doc/automake.texi (Vala Support): GNU make is currently
+       required for Vala sources.
+       * tests/vala2.test, tests/vala3.test, tests/vala5.test: Require
+       GNU make.
+
+2009-05-17  Jürg Billeter  <j@bitron.ch>
+
+       Vala: Use $(srcdir) in rebuild rules.
+       valac is always run in srcdir as the generated files are distributed.
+       So srcdir needs to be taken into account in the rebuild rules to not
+       wrongly trigger a rebuild in the wrong directory.
+       * automake.in (lang_vala_finish_target): Rebuild files in
+       $(srcdir).
+       * tests/vala2.test: Test rebuild rules from VPATH build.
+
+       Vala: Add and test rebuild rules for generated header and vapi files.
+       valac will generate additional files when using, for example, -H in
+       VALAFLAGS. We need to recognize these options and add appropriate
+       rebuild rules to fix parallel build.
+       * automake.in (lang_vala_finish_target): Recognize -H, -h,
+       --header, --internal-header, --vapi, --internal-api, --gir flags
+       to valac and rebuild rules for generated headers; distribute
+       and maintainer-clean them.
+       * tests/vala2.test: Test rebuild rules.
+
+2009-05-17  Jürg Billeter  <j@bitron.ch>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Vala: Fix build when using per-target VALAFLAGS.
+       This does not yet implement full per-target support for VALAFLAGS,
+       however, this change at least fixes building when there is only one
+       target per source file, which is the most common situation.
+       * automake.in: Remove `VALAFLAGS' from `flags' in language struct.
+       (lang_vala_finish_target): Handle `*_VALAFLAGS rewriting' manually
+       here; check `VALAFLAGS' user variables.
+       * tests/Makefile.am (XFAIL_TESTS): Remove vala5.test.
+       * doc/automake.texi (Vala Support): Document per-target flag
+       limitations.
+
+2009-05-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       For PR automake/540:
+       Document some formatting restrictions for Makefile.am files.
+       * doc/automake.texi (General Operation, Usage of Conditionals):
+       Variable assignments should not be indented by TABs, rule commands
+       should.  Conditional keyword statements should not be indented.
+       * THANKS: Update.
+       Report by Luo Yi.
+
+2009-05-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix copyright years in *.am files.
+       * lib/am/check.am, lib/am/check2.am, lib/am/distdir.am,
+       lib/am/program.am, lib/am/tags.am: Fix copyright years.
+
+       distdir: avoid duplicate `find' traversal with subpackages.
+       * lib/am/distdir.am (distdir) [%?SUBDIRS%]: When recursing, set
+       `am__skip_mode_fix'.
+       [%?TOPDIR_P%]: When `$(am__skip_mode_fix)' is set, avoid tree
+       walk.
+       * tests/subpkg4.test: New test, to ensure that we still walk the
+       whole tree while fixing permissions.  We don't ensure it is
+       walked once only.
+       * tests/Makefile.am: Update.
+
+       Disable test cleanup trap with OSF1/Tru64 sh.
+       * configure.ac: Test whether /bin/sh has working 'set -e'
+       in conjunction with an exit trap.  Set $am_cv_sh_errexit_works
+       accordingly, substitute sh_errexit_works, and warn about
+       leftover test directories with broken shells like Tru64 /bin/sh.
+       * tests/defs.in: Do not install any traps with broken shells.
+
+2009-05-02  Bruno Haible  <bruno@clisp.org>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Recommend *-local hooks without commands, for extensibility.
+       * doc/automake.texi (Clean): Show how to write the clean-local
+       extension with separate phony target.
+       * tests/Makefile.am (clean-local-check): Practice what we preach
+       by marking this phony.  For consistency, rename from ...
+       (check-clean-local): ... this.
+
+2009-04-28  Eric Blake  <ebb9@byu.net>
+
+       scripts: normalize all timestamps to UTC
+       * lib/compile (scriptversion): Update emacs hook.
+       * lib/depcomp (scriptversion): Likewise.
+       * lib/elisp-comp (scriptversion): Likewise.
+       * lib/gnupload (scriptversion): Likewise.
+       * lib/install-sh (scriptversion): Likewise.
+       * lib/mdate-sh (scriptversion): Likewise.
+       * lib/missing (scriptversion): Likewise.
+       * lib/mkinstalldirs (scriptversion): Likewise.
+       * lib/py-compile (scriptversion): Likewise.
+       * lib/ylwrap (scriptversion): Likewise.
+
+2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       silent-rules: fix alignment of less verbose output.
+       * automake.in (define_verbose_var): Define `$silent_var' as
+       VAR_ASIS, not VAR_PRETTY, to avoid squashing of multiple
+       adjacent spaces.
+       * tests/silent.test: Amend test.
+       Report by Jan Engelhardt.
+
+2009-04-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       manual: fix trivial grammar errors.
+       * doc/automake.texi (Subpackages, Vala Support, Java)
+       (Checking the Distribution, Timeline): Fix `a' vs. `an' errors
+       and duplicate `the'.
+       Report by Eric Blake.
+
+       Indent rule commands consistently with a TAB.
+       * lib/am/check.am ($(TEST_SUITE_LOG)): Consistently use TAB, not
+       spaces, for indentation of commands, even if indentation may not
+       be needed at all.
+       * lib/am/texinfos.am (install-info-am): Likewise.
+       * THANKS: Update.
+       Prompted by report from John Calcote.
+
+       parallel-tests: fix recheck* targets for non-GNU make.
+       * lib/am/check.am (recheck recheck-html): Override AM_MAKEFLAGS
+       to portably transport the TEST_LOGS settings through the
+       recursive `make' invocations.  Fixes parallel-tests9.test
+       failure with Solaris make.
+       * tests/parallel-tests9.test: Also ensure that the test
+       summary is correct for `recheck'.
+       Suggestion by Akim Demaille.
+
+2009-04-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid racy depmodes with universal builds.
+       * m4/depend.m4 (_AM_DEPENDENCIES): If universal builds are used,
+       avoid racy depmodes.
+       * lib/depcomp: Ignore `-arch' argument for makedepend depmode.
+       Report by Bruno Haible, analysis by Bruno Haible, Peter O'Gorman,
+       and Eric Blake.
+
+2009-04-21  Fabian Alenius  <fabian.alenius@gmail.com>  (tiny change)
+
+       Fix link to autotools tutorial.
+       * doc/automake.texi (Autotools Introduction): Fix broken link.
+       * THANKS: Update.
+
+2009-04-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       testsuite: minor w32 fixes.
+       * tests/depend5.test: Don't fail if the system or file system
+       cannot handle weird characters, instead just try a few.
+       * tests/parallel-tests3.test: Really wait until the serial test
+       has finished, before letting the cleanup trap do its work.
+       Report by Bruno Haible.
+
+       Avoid nonportable `./FILE' instead of `FILE' in test.
+       * tests/libtool3.test: Do not use `$(top_builddir)/sub/libname.la'
+       in *_LDADD entry if `$(top_builddir)' is `.'.  Fixes test failure
+       with parallel NetBSD make.
+
+       Detect make `include' style also with parallel non-GNU make.
+       Parallel NetBSD make outputs `--- $target ---' messages,
+       parallel HP-UX make outputs `Making target"$target"'.  Just
+       ignore all additional output for the include test.
+       * m4/make.m4 (AM_MAKE_INCLUDE): Ignore additional output
+       produced by `make' to relax `include' style detection.
+
+       manual: add FAQ `Debugging Make Rules'.
+       * doc/automake.texi (Debugging Make Rules): New FAQ section.
+       (Top, FAQ): Adjust menus, and capitalization of the description
+       of the `Hard-Coded Install Paths' node.
+       (Multiple Outputs): Add comment to restore font-lock for vim.
+       Suggestion by Karl Berry.
+
+       Let XFile::lock warn and fail with parallel non-GNU make, too.
+       * lib/Automake/XFile.pm (lock): Also match `-j' for parallel BSD
+       make, and `-P' for parallel HP-UX make.
+
+       Fix AM_PROG_VALAC version requirement detection.
+       * m4/vala.m4 (AM_PROG_VALAC): Remove `Vala ' from valac
+       --version string before comparing versions.
+       * tests/vala2.test: Require version 0.7.0 for the test.
+       Fixes failures of vala2.test and vala3.test with older valac.
+
+       Correctly treat all assignments with bogus trailing comments.
+       Before this patch, automake would silently fail to diagnose and
+       to copy into the output those variable assignments which are
+       preceded by a comment, and end in backslash newline comment.
+       * automake.in (read_am_file): When determining whether an
+       escaped newline followed by a comment is an error, correctly use
+       the parser state, not the contents of a saved comment, which
+       could still be carried over from a comment before an assignment.
+       * NEWS: Update.
+       * tests/commen11.test: New test.
+       * tests/Makefile.am: Update.
+       Report by Karl Berry.
+
+2009-04-14  Karl Berry  <karl@freefriends.org>
+
+       manual: improve markup: itemize list in `Extending'.
+       * doc/automake.texi (Extending): Use `@item's for user override
+       semantics.
+
+2009-04-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       bin_PROGRAMS = $(EXTRA_PROGRAMS) should work.
+       * automake.in (am_install_var): For `PROGRAMS' primary, strip
+       `$(EXEEXT)' here already, so the name uniquifying works even
+       when we look at names repeatedly, with inconsistent executable
+       extension; through variable references, we might have added
+       the extension ourselves earlier.
+       (handle_programs): No need to strip `$(EXEEXT)' here any more.
+       * tests/extra8.test: New test.
+       * tests/Makefile.am: Update.
+       * THANKS: Update.
+       Report by Daniel Richard G.
+
+2009-04-10  Jim Meyering  <meyering@redhat.com>
+
+       Fix grammar in comments and documentation.
+       * doc/automake.texi (API versioning): Fix grammar.
+       * automake.in: Fix grammar in comment.
+       * lib/Automake/ChannelDefs.pm: Likewise.
+       * tests/ext2.test: Likewise.
+
+2009-04-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       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  <j@bitron.ch>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <mathias.hasselmann@gmx.de>
+
+       * 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  <mathias.hasselmann@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+           Eric Blake <ebb9@byu.net>
+
+       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 `@am__EXEEXT_TRUE@'.
+       * NEWS: Update.
+
+2009-04-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       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  <briegel@zone42.de>  (tiny change)
+           Stepan Kasal  <skasal@redhat.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <akim@lrde.epita.fr>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <schwab@linux-m68k.org>
+
+       * tests/instdir-java.test: Don't require gcj.  Skip if javac is
+       not available.
+
+2009-04-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       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  <akim@lrde.epita.fr>
+
+       Fix typo in manual.
+       * doc/automake.texi (Simple Tests using parallel-tests): Fix
+       typo.
+
+2009-03-31  Jim Meyering  <meyering@redhat.com>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       * configure.ac, NEWS: Bump version to 1.10c.
+
+2009-03-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * 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  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+           Akim Demaille  <akim@lrde.epita.fr>
+
+       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  <Ralf.Wildenhues@gmx.de>
+           Akim Demaille  <akim@lrde.epita.fr>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       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  <Ralf.Wildenhues@gmx.de>
+
+       Rewrite maintainer-check in separate tests, parallelizable.
+       * Makefile.am (sc_diff_automake_in_automake, sc_perl_syntax)
+       (sc_no_brace_variable_expansions, sc_rm_minus_f)
+       (sc_no_for_variable_in_macro, sc_mkinstalldirs)
+       (sc_pre_normal_post_install_uninstall, sc_perl_no_undef)
+       (sc_perl_no_split_regex_space, sc_cd_in_backquotes)
+       (sc_cd_relative_dir, sc_perl_at_uscore_in_scalar_context)
+       (sc_perl_local_no_parens, sc_perl_local)
+       (sc_AMDEP_TRUE_in_automake_in, sc_tests_make_without_am_makeflags)
+       (sc_tests_plain_make, sc_tests_plain_autoconf)
+       (sc_tests_plain_autoupdate, sc_tests_plain_automake)
+       (sc_tests_here_document_format, sc_tests_Exit_not_exit)
+       (sc_tests_automake_fails, sc_tests_plain_aclocal)
+       (sc_tests_plain_perl, sc_tests_required_after_defs)
+       (sc_tests_overriding_macros_on_cmdline, sc_tests_plain_sleep)
+       (sc_tests_plain_egrep_fgrep, sc_mkdir_p, sc_perl_at_substs)
+       (sc_unquoted_DESTDIR, sc_tabs_in_texi, sc_at_in_texi): New rules,
+       all phony, all listed in ...
+       (syntax_check_rules): ... this new variable and split out from ...
+       (maintainer-check): ... this rule.  Depend on $(syntax_check_rules).
+
+       * Makefile.am (maintainer-check): Do not complain if DESTDIR is
+       passed as argument to `make'.
+
+       * doc/automake.texi (Cross-Compilation): Fix underfull hbox.
+
+       Sync auxiliary files from upstream.
+       * INSTALL, lib/INSTALL, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: Sync from upstream.
+
+2009-03-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       manual: minor cleanups.
+       * doc/automake.texi (Yacc and Lex): Adjust spacing in example.
+       (Mixing Fortran 77 With C and C++): Drop unneeded @page breaks.
+
+       Sane (un)install for empty directory variables.
+       This patch fixes all install and uninstall rules to behave
+       sanely when $(wheredir) is the empty string, but $(where_HOW) is
+       nonempty, for all kinds of values of `where' and `HOW'.
+       * lib/am/data.am (install-%DIR%%PRIMARY%, uninstall-%DIR%%PRIMARY%):
+       Do not touch the install tree if the corresponding directory variable
+       $(%NDIR%dir) is empty.
+       * lib/am/java.am (install-%DIR%JAVA, uninstall-%DIR%JAVA): Likewise.
+       * lib/am/libs.am (install-%DIR%LIBRARIES, uninstall-%DIR%LIBRARIES):
+       Likewise.
+       * lib/am/lisp.am (install-%DIR%LISP, uninstall-%DIR%LISP): Likewise.
+       * lib/am/ltlib.am (install-%DIR%LTLIBRARIES, uninstall-%DIR%LTLIBRARIES):
+       Likewise.
+       * lib/am/mans.am (install-man%SECTION%, uninstall-man%SECTION%):
+       Likewise.
+       * lib/am/progs.am (install-%DIR%PROGRAMS, uninstall-%DIR%PROGRAMS):
+       Likewise.
+       * lib/am/python.am (install-%DIR%PYTHON, uninstall-%DIR%PYTHON):
+       Likewise.
+       * lib/am/scripts.am (install-%DIR%SCRIPTS, uninstall-%DIR%SCRIPTS):
+       Likewise.
+       * lib/am/texinfos.am (install-dvi-am, install-html-am, install-pdf-am)
+       (install-ps-am, uninstall-dvi-am, uninstall-html-am, uninstall-pdf-am)
+       (uninstall-ps-am): Likewise.
+       * tests/instdir2.test, tests/instdir-java.test,
+       tests/instdir-lisp.test, tests/instdir-ltlib.test,
+       tests/instdir-prog.test, tests/instdir-python.test,
+       tests/instdir-texi.test: New tests.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+       Suggestion by Akim Demaille.
+
+       Ensure that empty directory variables work with empty content variables.
+       This test ensures that, if both $(wheredir) and $(where_HOW) are
+       the empty string, then the `install' and `uninstall' rules behave
+       sanely, for several directory variables `wheredir' and several
+       primaries `HOW'.
+       * tests/instdir.test: New test.
+       * tests/Makefile.am: Update.
+
+2009-03-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Use --tag=FC with libtool also for .f90 files.
+       * automake.in: Set 'libtool_tag' for language `fc'.
+       * tests/fort5.test: Grep for the tag.
+       * THANKS: Update.
+       Report by John R. Cary.
+
+2009-03-22  Peter Breitenlohner  <peb@mppmu.mpg.de>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       For PR automake/533:
+       DISTFILES containing a directory and files in that directory.
+       When the source tree contains non-writable files or directories
+       (as happens during distcheck), and directories or entries
+       thereof are listed multiple times in variables to be
+       distributed, then the corresponding directories below $(distdir)
+       need to be made writable recursively.  Since file modes should
+       not change, they need to be copied recursively using `cp -f'.
+       * lib/am/distdir.am: Handle this situation.
+       * tests/distdir.test: Extend test to those cases.
+       * NEWS: Update.
+       Report by Peter Breitenlohner.
+
+2009-03-22  Jim Meyering  <meyering@redhat.com>
+
+       Fix a documentation typo.
+       * doc/automake.texi (Headers): Clarify the note telling when it's
+       better not to use noinst_HEADERS.
+
+2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Define AM_RECURSIVE_TARGETS, for gnulib's GNUmakefile.
+       This new macro lists all public targets which invoke `make'
+       recursively, or depend on targets which do so.  It allows to
+       prevent parallelism selectively, when multiple targets are
+       passed on the `make' command line.
+       * lib/am/distdir.am [%?SUBDIRS%] (AM_RECURSIVE_TARGETS): New
+       macro.
+       * lib/am/subdirs.am (AM_RECURSIVE_TARGETS): Likewise.
+       * lib/am/tags.am [%?SUBDIRS%] (AM_RECURSIVE_TARGETS):
+       Likewise.
+
+2009-03-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix LAZY_TEST_SUITE handling and $(TEST_SUITE_LOG) recreation.
+       * lib/am/check.am (check-TESTS): Expand `$(TEST_LOGS)' only once
+       in the rule command, for systems with low command line limits.
+       Remove $(TEST_SUITE_LOG) even in LAZY_TEST_SUITE mode.
+       ($(TEST_SUITE_LOG)): Always recreate $(TEST_SUITE_LOG).  Mention
+       lazy mode in the summary output.
+       * tests/parallel-tests.test: Test LAZY_TEST_SUITE semantics.
+
+2009-03-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix parallel-tests with empty $(TESTS) for BSD make.
+       * lib/am/check.am [PARALLEL_TESTS] ($(TEST_SUITE_LOG)): Ignore
+       empty line stemming from empty $(TEST_LOGS), to avoid counting
+       zero tests as one.
+       (check-TESTS): If `$(TESTS)' is empty, override TEST_LOGS to be
+       empty, rather than `.log', for BSD make.
+       * tests/parallel-tests6.test: New test.
+       * tests/Makefile.am: Update.
+
+       Mark check-html and check-TESTS as recursive for BSD make.
+       * lib/am/check.am [PARALLEL_TESTS] (.MAKE): Add check-TESTS
+       and check-html prerequisites.
+
+       Match XFAIL_TESTS correctly with Solaris make.
+       * lib/am/check.am [PARALLEL_TESTS]: VPATH rewriting may have
+       changed test names, so srcdir needs to be taken into account
+       explicitly when checking against the list of tests expected
+       to fail.  Fixes spurious FAILures from XFAIL_TESTS.
+
+       Use append mode to capture parallel test output.
+       * tests/lisp8.test: Use append mode for output from `make -j',
+       to avoid dropped lines.
+       * tests/parallel-tests3.test: Likewise.
+
+       parallel-tests: Fix summary output.
+       * lib/am/check.am (am__text_box): Fix unportable sed script,
+       replacing `\n' in the right hand side of an `s' command with
+       a literal newline.  Kudos to Bruno Haible for the newline idea.
+       * tests/parallel-tests.test: Update test to expose this.
+
+2009-03-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Overhaul of tests/README.
+       * tests/README: General overhaul.  Mention parallel test suite
+       execution, the test-suite.log file; document `Exit' vs. `exit',
+       `defs' vs. `defs-p', the naming of `parallel-tests' tests.
+       * README: Simplify, point to tests/README.
+
+       Documentation for the parallel-tests driver.
+       * doc/automake.texi (Tests, Options): Document the `parallel-tests'
+       option, including new features of the test driver.
+       * NEWS: Update.
+
+       New tests for `parallel-tests'.
+       * tests/parallel-tests.test: New file, to expose a bunch of
+       features of `parallel-tests': VERBOSE, clean, TEST_SUITE_LOG,
+       test dependencies, DISABLE_HARD_ERRORS.
+       * tests/parallel-tests2.test: New file, test check-html.
+       * tests/parallel-tests3.test: New file, test concurrency.
+       * tests/parallel-tests4.test: New file, test suffix rules.
+       * tests/parallel-tests5.test: New file, demonstrate compile/test
+       concurrency.
+       * tests/defs.in: Add a `required' check for rst2html.
+       * tests/Makefile.am: Update.
+
+       parallel-tests: Ensure backward-compatible semantics.
+       For each test in Automake's test suite that uses TESTS, generate
+       an identical one that uses the `parallel-tests' option, for
+       coverage of backward-compatible functionality.
+       * tests/gen-parallel-tests: New file, generates distributed
+       Makefile.am snippet tests/parallel-tests.am to list all tests
+       that use the TESTS interface but not yet the `parallel-tests'
+       option, with names mangled to use suffix `-p.test', in ...
+       (parallel_tests): ... this new make macro.
+       * tests/Makefile.am ($(srcdir)/parallel-tests.am)
+       ($(parallel_tests), defs-p): New rules.
+       (TESTS): Add check11.test and $(parallel_tests).
+       (check_SCRIPTS): Add defs-p, $(parallel_tests).
+       (check-clean-local): Remove `defs-p'.
+       (EXTRA_DIST): Distribute gen-parallel-tests.
+       (MAINTAINERCLEANFILES): New variable, remove $(parallel_tests).
+       * bootstrap: Generate parallel-tests.am.
+       * tests/check8.test: Check for circular dependencies in rules.
+       * tests/check11.test: New test, check that SKIPs are not counted
+       as passed tests.
+       * tests/defs.in: Unset DISABLE_HARD_ERRORS, LAZY_TEST_SUITE,
+       VERBOSE, so the tests are not influenced by the way our test
+       suite is invoked.
+
+2009-03-08  Akim Demaille  <akim@lrde.epita.fr>
+           Jim Meyering  <jim@meyering.net>
+           Benoit Sigoure  <tsuna@lrde.epita.fr>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Parallel test execution: new option `parallel-tests'.
+       * automake.in (handle_tests): Set new conditional PARALLEL_TESTS
+       when reading check.am.  Handle option `parallel-tests' and all
+       its new semantics.  Define macros TEST_SUFFIXES, TEST_SUITE_LOG,
+       TEST_SUITE_HTML, TEST_LOGS, TEST_LOGS_TMP, suffix rules if
+       applicable, and per-target rules for other tests.  Add all log
+       files to %clean_files at the `MOSTLY_CLEAN' level.
+       * lib/Automake/Options.pm (_process_option_list): Accept
+       `parallel-tests'.
+       * lib/am/check.am [!PARALLEL_TESTS] (check-TESTS): Move existing
+       testsuite driver under this new conditional.
+       [PARALLEL_TESTS]
+       (am__rst_title, am__rst_section, am__text_box am__sh_e_setup)
+       (am__check_pre, am__check_post): New internal macros.
+       ($(TEST_SUITE_LOG), check-TESTS, .log.html, check-html): New
+       rules.
+       * lib/am/check2.am: New file.
+       * lib/am/Makefile.am (dist_am_DATA): Add check2.am.
+       * tests/Makefile.am (AUTOMAKE_OPTIONS): Use `parallel-tests'.
+       (clean-local): Renamed from distclean-local.
+       * tests/defs.in: Drop VERBOSE handling, not needed here any more.
+
+2009-03-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Rename `silent' mode to `silent-rules' mode.
+       * automake.in (define_verbose_var, verbose_flag)
+       (define_verbose_tagvar, handle_options, handle_languages)
+       (handle_configure, parse_arguments): Rename the `silent' option
+       to `silent-rules', so it coincides with the `--silent-rules'
+       command line option; adjust all code and comments.
+       * lib/Automake/Options.pm (_process_option_list): Likewise.
+       * doc/automake.texi (Invoking Automake, Libtool Flags, Options):
+       Likewise.
+       * NEWS: Adjust.
+       * tests/dollarvar.test, tests/silent.test, tests/silent2.test,
+       tests/silent3.test, tests/silent4.test, tests/silent5.test,
+       tests/silent6.test, tests/silent7.test: Likewise.
+       Suggestion by Jan Engelhardt.
+
+2009-03-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       `silent' mode unconditionally overrides portability-recursive.
+       * automake.in (parse_arguments): Don't handle a global `silent'
+       option here; instead, ...
+       (handle_options): ... handle the "normal" `silent' option here.
+       Override `portability-recursive' here, at the last point we deal
+       with options, instead ...
+       * lib/Automake/Options.pm (_process_option_list): ... of here.
+       * tests/silent6.test: Replace unportable make snippet, remove
+       FIXME note, add more test cases of options passed in the various
+       locations.
+
+       Drop extra line from compile rules when `silent' is not used.
+       * lib/am/depend2.am [!%FASTDEP%]: Only use the `%VERBOSE%
+       @AM_BACKSLASH@' extra line if ?VERBOSE?.
+       Report by Ralf Corsepius.
+
+2009-03-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Keep `--silent-rules' across triggered automake reruns.
+       * automake.in (usage): Reformat to be a bit clearer.
+       (handle_configure): Remove substitutions %STRICTNESS% and
+       %USE-DEPS% in favor of a new substitution %AUTOMAKE-OPTIONS%
+       that carries over all needed flags.
+       * lib/am/configure.am (%MAKEFILE-IN%): Adjust rule.
+       * tests/flavor.test: New test, to ensure --$flavor (gnu,
+       gnits, foreign, cygnus), --ignore-deps, and --silent-rules are
+       preserved across automake reruns.
+       * tests/Makefile.am: Update.
+
+2009-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Provide variables for silencing of user rules.
+       * automake.in (handle_languages): Always define `AM_V_GEN' and
+       `AM_V_at'.
+       * doc/automake.texi (Options): Document these flags.
+       * tests/silent7.test: New test.
+       * tests/Makefile.am: Update.
+
+       Redo variable naming for `silent' machinery.
+       The public variables are named `AM_V_' plus the compiler
+       short-hand now, e.g.: AM_V_CC, AM_V_CXXLD, AM_V_GEN.  The
+       dispatch variables are internal details and begin with
+       `am__v_'.
+       * automake.in (verbose_var): Update comment.
+       (verbose_private_var): New function.  Order functions so that
+       ones not needed outside this section are listed first.
+       (verbose_dispatch): Remove, no need to factor this.
+       (define_verbose_var, define_verbose_libtool): Use
+       verbose_private_var.
+       (define_verbose_tagvar): Likewise; and simplify.
+       Report by Jan Engelhardt.
+
+       Let -Wportability turn on/off the portability-recursive channel.
+       * lib/Automake/ChannelDefs.pm (switch_warning): switch
+       `portability-recursive' channel as well if changing the
+       `portability' channel.
+       * tests/dollarvar2.test: New test.
+       * tests/Makefile.am: Update.
+
+2009-03-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       New automake command line option `--silent-rules'.
+       * automake.in (parse_arguments): Accept `--silent-rules; let it
+       override command line warning settings.
+       (usage): Document it.
+       * doc/automake.texi (Invoking Automake): Document it.
+       * NEWS: Update.
+       * tests/dollarvar.test: Also test `--silent-rules'.
+       * tests/pr300-ltlib.test: Use `$MAKE V=1' to enable verbose
+       output, which is matched later in the test.
+       * tests/silent6.test: New test.
+       * tests/Makefile.am: Update.
+
+       Documentation and tests for the `silent' option.
+       * NEWS: Update.
+       * doc/automake.texi (Invoking Automake): `silent' turns off some
+       portability warnings.
+       (Libtool Flags): `silent' silences libtool.
+       (Options): Document the `silent' flag.
+       * tests/dollarvar.test, tests/silent.test, tests/silent2.test,
+       tests/silent3.test, tests/silent4.test, tests/silent5.test: New
+       tests.
+       * tests/Makefile.am: Update.
+       * Makefile.am (maintainer-check): Ignore `DESTDIR' and `V' when
+       checking for make variables that should not be overridden from
+       the command line.
+
+2009-03-07  Jan Engelhardt  <jengelh@medozas.de>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Implement `silent' build rules.
+       * automake.in (ccer): New field in the language structure.
+       Initialize it for all registered languages.
+       (verbose_var, verbose_flag, verbose_dispatch)
+       (silent_flag, define_verbose_var, define_verbose_tagvar)
+       (define_verbose_libtool): New functions.
+       (handle_languages, handle_programs, handle_libraries)
+       (handle_ltlibraries, handle_configure)
+       (define_compiler_variable, define_linker_variable)
+       (define_per_target_linker_variable): Use them where appropriate
+       to define variables to implement the silent output machinery.
+       * lib/Automake/Options.pm (_process_option_list): Accept
+       `silent', turning off `portability-recursive'.
+       * lib/am/depend2.am: Add %VERBOSE% and %SILENT% prefixes where
+       appropriate.
+       * lib/am/lex.am: Likewise.
+       * lib/am/library.am: Likewise.
+       * lib/am/ltlibrary.am: Likewise.
+       * lib/am/program.am: Likewise.
+       * lib/am/yacc.am: Likewise.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Substitute, but do not define,
+       AM_BACKSLASH.
+       * tests/defs.in: Unset `V', to avoid influencing inner tests.
+
+2009-03-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       New channel `portability-recursive'.
+       Add new channel for portability warnings about recursive make
+       variable expansions `$(var1$(var2))'.  Enable it alongside
+       `-Wportability'.
+       * lib/Automake/ChannelDefs.pm (Automake::ChannelDefs): Register
+       channel `portability-recursive'.
+       * lib/Automake/Variable.pm (_VARIABLE_CHARACTERS)
+       (_VARIABLE_RECURSIVE_PATTERN): New variables.
+       (check_variable_expansions): Diagnose recursive variable
+       expansions through the new channel.
+
+2009-03-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * NEWS: Update.
+
+2009-03-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Ignore warnings from autom4te about Libtool macros.
+       * tests/ltinstloc.test: When testing for presence of warnings,
+       filter out any that are not interesting for this test, e.g.,
+       warnings about installed files or about bogusly named cache
+       variables in libtool.m4, emitted by recent Autoconf when older
+       Libtool is used.
+
+2009-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Relax depcomp test for MSVC to not require minuso.
+       * m4/depend.m4 (_AM_DEPENDENCIES): When checking the msvisualcpp
+       and msvcmsys depmodes, do not require `-c -o' to work just yet.
+       It is not needed by the depcomp script for these depmodes, and
+       works around the ordering issue between the tests.
+       Report by Peter Rosin.
+
+2009-03-09  Peter Rosin  <peda@lysator.liu.se>
+
+       * tests/compile2.test: Fix typo.
+
+2009-03-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Improve NetBSD 'make -n' output for many standard targets.
+       * automake.in (handle_tags): Let .MAKE depend on
+       `tags-recursive' and `ctags-recursive' if appropriate.
+       (handle_all): Likewise for `all'.
+       (do_check_merge_target): Likewise for `check-am' and `check'.
+       * lib/am/ansi2knr.am (.MAKE): Depend on %ANSI2KNR-DIR%/ansi2knr.
+       * lib/am/install.am [%?maybe_BUILT_SOURCES%] (.MAKE): Depend on
+       `install'.
+       * tests/maken3.test, tests/maken4.test: New tests.
+       * tests/Makefile.am: Update.
+
+       Improve `make -n dist' and `make -n distcheck' for GNU make.
+       Ensure that `make -n dist' and `make -n distcheck' do not change
+       files, due to GNU make executing rules containing `$(MAKE)'.
+       * lib/am/distdir.am (distdir): Separate the creation of
+       `$(distdir)/$$subdir' for `$(DIST_SUBDIRS)' and the recursion
+       into the `$(DIST_SUBDIRS)' in two separate rule commands.
+       (distcheck): Exit recursive rule early when run with `make -n',
+       as detected by a witness file.
+       * tests/maken.test, tests/maken2.test: New tests.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+
+2009-03-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Solaris make testsuite fixes.
+       * tests/check10.test: When a rule fails, Solaris make will
+       output the complete command that failed; in this case the test
+       suite driver.  Adjust the test to not bogusly match lines from
+       the driver, rather than its output.
+       * tests/distcleancheck.test: Avoid triggering VPATH rewriting,
+       not desirable in this test.
+       * tests/specflg10.test: Use BUILT_SOURCES to specify an
+       intermediate target, so Solaris make knows what to do.
+
+       testsuite: SKIP compile tests if configure found no compiler.
+       * tests/depend6.test: configure will exit 77 if AC_PROG_CC found
+       no working compiler.  Allow the test to be SKIPped in that case.
+       * tests/postproc.test: Likewise.
+       * tests/pr243.test: Likewise.
+       * tests/pr266.test: Likewise.
+
+       Fix maintainer-check fallout.
+       * tests/compile2.test: Use `Exit', not `exit'.
+
+2009-03-07  Peter Breitenlohner  <peb@mppmu.mpg.de>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Extract correct man section from files in man_MANS.
+       * lib/am/mans.am: Extract correct man section in the presence of
+       multiple dots in the file base name and/or directory components.
+       * tests/man5.test: New test case.
+       * tests/Makefile.am: Update.
+
+2009-03-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (maintainer-mode): Fix logic in
+       AM_MAINTAINER_MODE description.
+       * THANKS: Update.
+       Report by Daniel Kahn Gillmor.
+
+2009-03-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/gnupload: Change conffile name to `.gnuploadrc'.
+
+2009-03-04  William Pursell  <bill.pursell@gmail.com>
+
+       Replace bare `automake' with `@command{automake}' or `Automake'.
+       * doc/automake.texi: Avoid bare `automake' in the manual,
+       replacing occurrences with `@command{automake}' when the command
+       is meant, and `Automake' when speaking about the software
+       package in general.
+
+2009-03-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/depcomp: Various portability and quoting nits.
+
+       reformat gnupload script.
+       * lib/gnupload: Reformat and reindent.
+
+       gnupload touchups.
+       * lib/gnupload (conffile): New variable.  Use throughout.
+       (dry_run): Use `false' and `:' values.  Show, don't execute,
+       gpg signing commands upon --dry-run.
+       (usage): Typo and formatting fixes.  Mention that commands are
+       applied in order.
+       (argument loop): Factorize a bit, fix quoting.
+       (dprint, mkdirective, mksymlink, upload): Formatting and
+       portability fixes.
+
+2009-03-04  Sergey Poznyakoff  <gray@gnu.org>
+
+       Various gnupload improvements.
+       Add support for uploading to download.gnu.org.ua.
+       Add support for a .gnupload configuration file.
+       Support creating and removing symlinks.
+       Allow for several operations in a single invocation.
+       Add debugging features.
+       * lib/gnupload: New options --delete, --symlink, --rmsymlink,
+       --symlink-regex, --dry-run; support `--' to separate options and
+       commands from files.  New target download.gnu.org.ua.  Expand
+       `.gnupload' file contents before command line arguments.
+       (usage): Expand.
+       (dprint, mkdirective, mksymlink, upload): New functions.
+       * THANKS: Update.
+
+2009-03-03  Peter Rosin  <peda@lysator.liu.se>
+
+       Add depmode=msvcmsys for Microsoft Visual C++ on MSYS.
+       * lib/depcomp [msvisualcpp]: Fork fewer processes. Filter out
+       libtool in the preprocessor invocation (as is done in
+       depmode=cpp). Silence compiler stderr.
+       [msvcmsys]: New depmode as a derivative of depmode=msvisualcpp.
+       msvcmsys transforms any backslashes into forward slashes to
+       make the grep in depend.m4 match, instead of the "cygpath -u"
+       that is used in msvisualcpp.
+
+2009-03-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Peter Rosin  <peda@lysator.liu.se>
+
+       Fix w32 path handling in the `compile' script.
+       * lib/compile: Handle colons and backslashes in win32 paths.
+       * tests/compile2.test: New test.
+       * tests/Makefile.am: Update.
+       Report and initial patch by Peter Rosin.
+
+2009-03-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix `use constant' usage for MSYS Perl 5.6.0.
+       * automake.in (QUEUE_MESSAGE, QUEUE_CONF_FILE, QUEUE_LOCATION)
+       (QUEUE_STRING): Define using one `use constant' each; as perl
+       5.6.0 (on MSYS) does not understand `use constant { ... }'.
+       * THANKS: Update.
+       Report by Peter Rosin.
+
+2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix recursive html and install-* doc rules for BSD make.
+       * automake.in (%required_targets): Add html-am,
+       install-html-am, install-dvi-am, install-pdf-am, install-ps-am,
+       install-info-am.
+       * tests/txinfo32.test: New test.
+       * tests/Makefile.am: Update.
+
+       Fix comment typo.
+       * lib/am/distdir.am (distcheck): Fix typo in comment.
+
+       Ignore generated files below doc/amhello for git.
+       * doc/amhello/.gitignore: New file.
+
+2009-02-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Program variables): Add cross reference to
+       `Flag Variables Ordering' node.
+       Report by Karl Berry.
+
+2009-01-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix mmodely.test to work on Solaris 10.
+       * tests/mmodely.test: Define yylex, to satisfy needed symbol in
+       libfl.  Return from main instead of using exit, undeclared.
+       * THANKS: Update.
+       Report by Chris Hoogendyk.
+
+2009-01-30  Karl Berry  <karl@freefriends.org>
+
+       * lib/gnupload: Add download URL to --help output.
+
+2009-01-23  Eric Blake  <ebb9@byu.net>
+
+       Use no-arg macros via AC_REQUIRE for consistency.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require, rather than directly
+       expand, AM_PROG_INSTALL_SH and AM_PROG_INSTALL_STRIP.
+       * configure: Regenerate.
+
+2009-01-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Bump copyright years.
+       * aclocal.in (write_aclocal, version): Bump copyright years.
+       * automake.in (gen_copyright, version): Likewise.
+       * doc/automake.texi: Likewise.
+
+2008-12-29  Chris Pickett  <chris.pickett@mail.mcgill.ca>  (tiny change)
+
+       * doc/automake.texi (LIBOBJS): Clarify overriding of
+       `*_DEPENDENCIES'.
+       * THANKS: Update.
+
+2008-12-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Revamp semantics for `missing help2man' and manpage distribution.
+       Previously, `missing help2man' would create a missing man page
+       containing an error message, and exit 1.  This does not play
+       well with `make': the next run will see this particular man page
+       as being up to date, and will only error out on the next
+       generated man page, if any; repeat until all pages are done.
+       This patch changes `missing' to exit successfully in this case,
+       but `make dist' will ensure that no such man pages are packaged.
+       * lib/missing: Exit successfully even if we create a replacement
+       page due to missing help2man.
+       * automake.in (make_paragraphs): Define %HAVE-MANS% to be true
+       if this makefile deals with man pages.
+       * lib/am/distdir.am (distdir): If %INSTALL-MAN% and %HAVE-MANS%,
+       check that no man page in $(MANS) contains the replacement text
+       from `missing'.
+       * tests/man4.test: New test.
+       * tests/Makefile.am: Update.
+       * NEWS: Reorder a bit, update.
+       * THANKS: Update.
+       Report by Werner Lemberg and Karl Berry.
+
+       Do not use 'global' for makefile-wide settings.
+       * doc/automake.texi (Linking, Libtool Flags)
+       (Program and Library Variables, Flag Variables Ordering):
+       Reword instances of `global variables' that really mean
+       makefile-wide ones.
+       * THANKS: Update.
+       Report by Andreas Bergmeier.
+
+       Fix config.status depfiles failure.
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Commands are
+       again a single shell brace group, so they are correctly skipped
+       when dependencies are turned off.  The failure is noisy with
+       ksh only.
+       * tests/depend6.test: New test.
+       * tests/Makefile.am: Adjust.
+       * THANKS: Update.
+       Report and different suggested patch by Markus Duft.
+
+2008-12-21  Zoltan Rado  <z.rado@chello.hu>  (tiny change)
+
+       * doc/automake.texi (DESTDIR): Fix a couple of typos.
+       * THANKS: Update.
+
+2008-12-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix nonportable sed script in 'missing'.
+       * lib/missing: In sed script, do not use ';' after 't' commands.
+
+2008-12-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       PR automake/531:
+       * doc/automake.texi (amhello Explained)
+       (Mixing Fortran 77 With C and C++): Fix broken links to
+       Autoconf manual.
+       Report by Michael Ploujnikov.
+
+2008-12-07  Michael Ploujnikov  <ploujj@gmail.com>  (tiny change)
+
+       * doc/automake.texi (Optional, Future of aclocal): Various
+       spelling and grammar fixes.
+       * THANKS: Update.
+
+2008-12-03  William Pursell  <bill.pursell@gmail.com>
+
+       Simple typographical and grammar errors in automake.texi.
+       * doc/automake.texi: Fix object/article consistency (eg "an
+       flag" becomes "a flag"), correct minor punctuation errors, etc.
+
+       * doc/automake.texi (Auxiliary Programs, Python, Rebuilding):
+       Replace 'configure' with '@command{configure}' as appropriate.
+
+2008-11-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fixup release rules.
+       * Makefile.am (cvs-diff): Remove.
+       (git-dist): Do not use clcommit any more.  Use new-style tag
+       name.  Pass $(AM_MAKEFLAGS) to $(MAKE).
+       (git-diff): Adjust.
+       (git-release): Do not upload to sources.redhat.com.
+
+2008-11-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix portability issues in distcleancheck_listfiles doc example.
+       * doc/automake.texi (Dist): In the `distcleancheck_listfiles'
+       code example, add `.' path, for Solaris `find', also rewrite so
+       `{}' appears only once and as separate argument, for Posix.
+       * tests/distcleancheck.test: New test.
+       * tests/Makefile.am: Update.
+       * THANKS: Update.
+       Report by Jan Engelhardt and Andreas Schwab.
+
+2008-11-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Jim Meyering  <jim@meyering.net>
+
+       Cope with whitespace in $MISSING and $install_sh.
+       * configure.ac (am_AUTOHEADER): New substitution, save the value
+       of $AUTOHEADER before AM_INIT_AUTOMAKE may add $MISSING.
+       * tests/defs.in: Use am_AUTOHEADER.
+       * lib/am/install.am: Fix typo.
+       * m4/install-sh.m4 (AM_PROG_INSTALL_SH): Add suitable
+       single-quote quoting to install_sh, but only if needed.
+       * m4/missing.m4 (AM_MISSING_HAS_RUN): Add suitable double-quote
+       quoting to MISSING, but only if needed.
+       * m4/sanity.m4 (AM_SANITY_CHECK): Abort configure if `pwd` or
+       $srcdir contain shell meta-characters that cannot be handled;
+       space and tab are allowed in the former only.
+       * tests/sanity.test: New test.
+       * tests/Makefile.am: Adjust.
+       * NEWS: Update.
+       Reports by Jim Meyering and others.
+
+2008-11-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Let `missing' also work with versioned and prefixed programs.
+       * lib/missing: Ignore prefixes of `gnu-', `gnu', and `g' when
+       testing for known programs; also, ignore suffixes.
+       * tests/missing.test: Amend test.
+       * NEWS, THANKS: Update.
+       Report by Tim Rice.
+
+2008-11-23  William Pursell  <bill.pursell@gmail.com>
+
+       * doc/automake.texi (Macro search path, Extending aclocal)
+       (Local Macros, Serials, Public macros, Directories)
+       (Conditional Subdirectories, Nesting Packages)
+       (Building a program, Libtool Modules)
+       (Program and Library Variables, Default _SOURCES, LIBOBJS):
+       Correct verb/object tense agreement, swap some words,
+       and general trivial cleanup.
+
+2008-11-22  William Pursell  <bill.pursell@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (VPATH Builds, Nested Packages)
+       (Length limitations, Auxiliary Programs, Invoking Automake)
+       (Requirements, Optional): Fix typos and grammaros, correct URL
+       to 'config' source repository.  Rewrite description of AC_SUBST.
+       (true): Cross-reference to `Default _SOURCES' node.
+
+2008-11-22  William Pursell  <bill.pursell@gmail.com>
+
+       * configure.ac: Quote APIVERSION.
+
+2008-11-22  Jim Meyering  <meyering@redhat.com>
+
+       * tests/xz.test: Fix typo introduced by Ralf in last patch.
+
+       Add xz compression support.
+       * NEWS: Mention xz as well as lzma (xz will displace lzma).
+       * automake.in (handle_dist): Recognize dist-xz.
+       (make_paragraphs): Map XZ to dist-xz.
+       * doc/automake.texi (Dist): Add dist-xz.
+       (Options): Likewise.
+       * lib/Automake/Options.pm (_process_option_list): Accept
+       dist-xz.
+       * lib/am/distdir.am (dist-xz): New rule.
+       (dist dist-all): Add command to create an xz-compressed tarball.
+       (distcheck): Handle xz-compressed tarballs just like the others.
+       * tests/xz.test: New file, based on nogzip.test.
+       * tests/Makefile.am (TESTS): Add xz.test.
+
+2008-11-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       When installing COPYING, recommend adding the file to VCS.
+       * automake.in (require_file_internal): If installing `COPYING',
+       mention that we install the GPLv3 file and recommend adding the
+       file to version control.
+       * doc/automake.texi (Invoking Automake): Point to `Gnits' node
+       for `--add-missing'.
+       (Gnits): Clarify semantics: that for strictness gnu or higher,
+       INSTALL is installed, and that COPYING is installed as GPLv3
+       if no COPYING file exists.
+       * tests/license2.test: New test.
+       * tests/Makefile.am: Update.
+       * NEWS, THANKS: Update.
+       Report by Brian Cameron.
+
+2008-11-20  William Pursell  <bill.pursell@gmail.com>
+
+       * doc/automake.texi (Timeline): Fix typos and grammaros.
+
+2008-11-12  Karl Berry  <karl@freefriends.org>
+
+       New gnupload option --delete to remove archive files.
+       * lib/gnupload: Accept --delete to remove files from
+       alpha.gnu.org or ftp.gnu.org.
+
+2008-11-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Testsuite fixes for ksh.
+       * tests/check10.test: Add ':' as last command in subshell, for
+       zero exit status of the subshell.
+       * tests/parallel-am.test: Do not let failing 'unset' of
+       nonexistent variable exit the test.
+       * tests/parallel-am2.test: Likewise.
+       * tests/parallel-am3.test: Likewise.
+
+2008-11-11 Charles Wilson  <libtool@cwilson.fastmail.fm>  (tiny change)
+          Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Cleanup config.lt in case LT_OUTPUT is in use.
+       * lib/am/libtool.am [TOPDIR_P] (distclean-libtool): clean up
+       config.lt as well as libtool.
+       * tests/libtoo11.test: New test.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+
+2008-11-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * INSTALL, lib/INSTALL, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: Sync from upstream.
+
+2008-11-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Update to GFDL 1.3.
+       * doc/fdl.texi: Update to GFDL 1.3.
+       * doc/automake.texi (GNU Free Documentation License): Adjust.
+       * NEWS: Update.
+
+       * NEWS: Fix typos.
+       * automake.in: Fix typos in comments.  Remove extraneous
+       whitespace.
+
+2008-11-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Cope with absent Perl modules threads and Thread::Queue.
+       * automake.in: Instead of `use threads', use `require threads;
+       import threads' inside a BEGIN section.  Likewise for
+       Thread::Queue.
+       * lib/Automake/ChannelDefs.pm (Automake::ChannelDefs): Likewise.
+       * lib/Automake/tests/Condition-t.pl: Likewise.
+       * lib/Automake/tests/DisjConditions-t.pl: Likewise.
+       * configure.ac: Likewise, use `require' and `import'.
+       Report by Eric Blake, fix suggested by Ben Pfaff.
+
+2008-11-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Multiple 'make uninstall' should not fail even for TEXINFOS.
+       * lib/am/texinfos.am (uninstall-info-am): Do not fail due to
+       install-info if the installed file does not exist (any more).
+       * tests/txinfo26.test: Issue multiple `make uninstall'.
+       * tests/instmany-mans.test: Likewise.
+       * tests/instmany-python.test: Likewise.
+       * tests/instmany.test: Likewise.
+       * tests/txinfo26.test: Likewise.
+       * NEWS: Update.
+
+2008-11-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       New public macro AM_SUBST_NOTMAKE.
+       * m4/substnot.m4 (AM_SUBST_NOTMAKE): New public macro; invoke
+       _AM_SUBST_NOTMAKE with arguments.
+       * doc/automake.texi (Optional): Document it.
+       * NEWS: Update.
+       * tests/subst4.test: New test.
+       * tests/Makefile.am: Update.
+       Suggestion by Bruno Haible.
+
+       Fix regression introduced by AM_DEFAULT_SOURCE_EXT.
+       * automake.in (handle_source_transform): Use the right variable
+       when determining whether to apply the old rule for the libtool
+       library default source name.
+       Testsuite failure exposed by Bob Proulx' build daemon.
+
+2008-11-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       New maintainer target release-stats.
+       * Makefile.am (release-stats): New target, to help computing the
+       entries in the statistics table in automake.texi.
+       * doc/automake.texi (Releases): Reformat a bit.  Add number of
+       generated files.  Add entry for 1.10.1.
+
+       Choose default source extension: AM_DEFAULT_SOURCE_EXT.
+       * automake.in (handle_source_transform): Accept unconditional
+       literal extension in AM_DEFAULT_SOURCE_EXT as override for the
+       default source extension `.c'.  If set, ignore the old default
+       source rule for libtool libraries.
+       * doc/automake.texi (Default _SOURCES): Document this.
+       * NEWS: Update.
+       * tests/specflg10.test: New test.
+       * tests/Makefile.am: Update.
+       Suggestion by Akim Demaille.
+
+       Fix maintainer-check failure.
+       * tests/parallel-am.test: Rename variable to not match pattern
+       used in maintainer-check.
+
+2008-10-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * NEWS: Fix typo.
+       Spotted by Jim Meyering.
+
+2008-10-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Parallel automake --add-missing: serialized file installs.
+       * automake.in (QUEUE_CONF_FILE, QUEUE_LOCATION, QUEUE_STRING):
+       New serialization keys.
+       ($required_conf_file_queue): New file global.
+       (queue_required_conf_file, require_queued_conf_file): New
+       functions, to queue and dequeue requirements for aux dir files.
+       (require_conf_file): Enqueue if needed.
+       (get_number_of_threads): Can do threads with --add-missing now.
+       (handle_makefiles_threaded): Let worker threads enqueue, let
+       master attend to queued requirements at the right time.
+       * tests/parallel-am.test: Explain the purpose of the include
+       chain used here.
+       * tests/parallel-am2.test: Also cope with --add-missing.
+       * tests/parallel-am3.test: New test, test absence of races with
+       concurrent same-file installs stemming from --add-missing.
+       * tests/Makefile.am: Adjust.
+
+       Implement serialization for Locations.
+       * lib/Automake/Location.pm (serialize, deserialize): New
+       functions.  They allows to serialize a Location in an array, and
+       to restore a Location from a thread queue.  The API is
+       unsymmetric (array vs. queue) because enqueuing data needs to
+       happen atomically.
+
+       Parallel automake: ordered output messages.
+       * lib/Automake/Channels.pm (%_default_options): New options
+       `ordered' default enabled, `queue', default zero (no queue),
+       `queue_key' default undefined.
+       (_merge_options): Ensure `ordered' channels cannot have fatal
+       messages or backtrace output.
+       (_enqueue, _dequeue): New functions, to push messages onto a
+       Thread::Queue, and output messages from such a queue, suitably
+       weeded for duplicates in the same manner as _print_message.
+       (_print_message): If the channel is ordered and has an
+       associated queue, then enqueue messages instead of printing
+       them.
+       (setup_channel_queue, pop_channel_queue): New functions,
+       to set a Thread::Queue for channels, and to flush a queue.
+       * lib/Automake/ChannelDefs.pm: Unset channel option `ordered'
+       for fatal, automake, and verb channels.
+       * automake.in (QUEUE_MESSAGE): New global constant, used as
+       serialization key.
+       (handle_makefiles_threaded): Create message queues for each
+       input file; workers queue messages, and the master outputs them
+       ordered, using the new Channels.pm functions.
+       * tests/parallel-am.test: Also check for ordered output (in the
+       absence of --add-missing races).
+       * tests/parallel-am2.test: New test; check for ordered output of
+       warning and (regular) error messages.
+       * tests/Makefile.am: Adjust.
+
+       Parallel automake execution: AUTOMAKE_JOBS.
+       * lib/Automake/Config.in (perl_threads): New global.
+       * automake.in: Use it.  If the perl supports interpreter-based
+       threading, then use `threads' and `Thread::Queue'.
+       (handle_makefile, handle_makefiles_serial): New functions,
+       factored out from main.
+       (get_number_of_threads): New function, compute number of threads
+       to use, based on environment variable `AUTOMAKE_JOBS' and number
+       of independent makefiles.
+       (handle_makefiles_threaded): New function.  Spawn threads, use
+       thread queue to distribute handling the different makefiles.
+       Collect $exit_code values from threads.
+       (main): Use new functions.
+       * aclocal.in: No threads here.
+       * configure.ac: Substitute PERL_THREADS; enabled with perl >=
+       5.7.2 and when ithreads are available.
+       * bootstrap (dosubst): Likewise.
+       * Makefile.am (do_subst): Likewise.
+       * lib/Automake/Makefile.am (do_subst): Likewise.
+       * lib/Automake/ChannelDefs.pm: Use `Automake::Config' and
+       `threads'.
+       (verb): Prepend thread ID (tid) to verbose messages.
+       * lib/Automake/Channels.pm (msg): Before exiting, flush stderr,
+       needed for worker threads.
+       * lib/Automake/tests/Makefile.am (TESTS_ENVIRONMENT): Also
+       include the build tree path, so Config.pm is found.
+       * tests/parallel-am.test: New test.
+       * tests/Makefile.am: Update.
+       * doc/automake.texi (Invoking Automake): Document AUTOMAKE_JOBS.
+       * NEWS, THANKS: Update.
+       Report about long execution times by Joakim Tjernlund and others.
+
+2008-10-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Minor file checking optimization: set_dir_cache_file.
+       * lib/Automake/FileUtils.pm (set_dir_cache_file): New function.
+       * automake.in (require_file_internal): Instead of resetting the
+       cache when a file has been installed, simply correct the cache
+       using set_dir_cache_file.
+
+       No uniquifying for fatal, prog_error, and verbose messages.
+       There is no point in dropping critical messages, even if they
+       are duplicates (unlikely to happen unless they have been sent
+       as non-critical messages before), and verbose messages should
+       enable to show progress, even using duplicate statements.
+       * lib/Automake/ChannelDefs.pm (fatal, automake, verb): Set
+       `uniq_part' to `UP_NONE' when registering these channels.
+
+       Fix 'config.status --file=... depfiles' with new Autoconf.
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Eval
+       $CONFIG_STATUS contents if we detect the quoting used by
+       Autoconf 2.62 and newer for --file=.
+       * tests/depend5.test: New test.
+       * tests/Makefile.am: Update.
+       * NEWS, THANKS: Update.
+       Report by Sam Steingold against gnulib.
+
+2008-10-26  Johan Dahlin  <jdahlin@async.com.br>
+
+       Support for Python 3.0, drop support for pre-2.0.
+       * lib/py-compile: Do not import string; use sys.stdout.write
+       instead of print, files.split instead of string.split.
+       * m4/python.m4 (AM_PATH_PYTHON): Also look for python3 and
+       phython3.0; do not look for python1.5.  Use sys.stdout.write.
+       (AM_PYTHON_CHECK_VERSION): Do not use string; adjust to xrange
+       removal in Python 3.0, and changed semantics of map.
+       * doc/automake.texi (Python, Hard-Coded Install Paths): Update
+       Python versions mentioned in the manual, using 2.5 everywhere.
+       * NEWS, THANKS: Update.
+
+2008-10-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/Automake/Channels.pm (@chain): Drop unused variable.
+
+       Cleanup of per-input global variables in automake.in.
+       * automake.in ($output_vars, $output_all, $output_header)
+       ($output_rules, $output_trailer): Fix comment, and sort
+       declarations in the order they will appear in the output.
+       ($all_target): Unused variable, remove.
+       (Variables not reset by &initialize_per_input.): New section,
+       clarify that %am_file_cache is not reset.
+       (initialize_per_input): Reset $am_file_name, $am_relative_dir,
+       $in_file_name, $relative_dir, and $topsrcdir to `undef' rather
+       than the empty string; $topsrcdir was not reset at all.  Sort
+       remaining variables in the same order as in the section
+       `Variables reset by &initialize_per_input'.
+
+       Let stderr output end up on fd 2 in testsuite.
+       * tests/defs.in (AUTOMAKE_run): Output recorded stderr on file
+       descriptor 2.
+       * tests/getopt.test: Fix erroneous multiple redirection,
+       uncovered by above change.
+
+2008-10-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix DisjConditions module to be thread-safe for perl >= 5.7.2.
+       Self-hashes of blessed references are not correctly transported
+       through thread creation.  This patch fixes that by recreating
+       the hashes upon thread creation with a CLONE special subroutine,
+       which is automatically invoked by new enough Perl versions.
+       * lib/Automake/DisjConditions.pm (CLONE): New special
+       subroutine to fix self hashes upon thread creation.
+       * lib/Automake/tests/Condition-t.pl: New, sister test to
+       Condition.pl, but spawns a new threads after each creation of a
+       new condition; skip test if perl is too old or ithreads are not
+       available.
+       * lib/Automake/tests/DisjConditions-t.pl: Likewise.
+       * lib/Automake/tests/Makefile.am (TESTS): Add them.
+
+2008-10-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix comment typos.
+       * automake.in (require_file_internal): Fix typos in comments.
+       * m4/amversion.in: Likewise.
+       * lib/Automake/Variable.pm: Likewise.
+       * lib/Automake/XFile.pm: Likewise.
+
+       Diagnose unsupported uses of `backname' helper function.
+       * automake.in (backname): Error out if the path points outside
+       the directory it started in.
+
+2008-10-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Nicer 'make dist' output.
+       * lib/am/distdir.am (distdir): Hide the complex script
+       used for computing the relative subdirs; echo the sub-make
+       command.
+
+2008-10-12  William Pursell <bill.pursell@gmail.com>  (tiny patch)
+
+       * tests/defs.in: Fix comment typo.
+
+2008-10-12  William Pursell <bill.pursell@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix grammar w.r.t. plurals in test reports.
+       * lib/am/check.am: Fix singular/plural forms in test reports.
+       * tests/check10.test: New test.
+       * tests/Makefile.am: Update.
+
+2008-10-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Require texi2dvi in tests, makeinfo may not be enough.
+       * tests/txinfo16.test: RHEL 5.2 has makeinfo and texi2dvi in
+       separate packages, so also list the latter as required, as the
+       test generates DVI and/or PDF output (through distcheck).
+       * tests/txinfo18.test: Likewise.
+       * tests/txinfo21.test: Likewise.
+       * tests/txinfo22.test: Likewise.
+       * tests/txinfo3.test: Likewise.
+       * tests/version7.test: Likewise.
+       * THANKS: Update.
+       Report by Alexander Martens.
+
+       Fix bootstrap to remove read-only directories right.
+       * bootstrap: Remove automake-$APIVERSION correctly.
+
+2008-10-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Improve test coverage of current TESTS semantics.
+       * tests/check8.test: New test, for subdir tests and setting of
+       $srcdir.
+       * tests/check9.test: New test, check @substituted@ TESTS.
+       * tests/Makefile.am: Update.
+
+2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/minuso.m4 (AM_PROG_CC_C_O): Work around shell quoting issue
+       with AIX sh; fixes depcomp6.test failure.
+       * NEWS, THANKS: Update.
+       Report by Rainer Tammer.
+
+       Print captured output before failing.
+       * tests/acloca14.test, tests/acloca17.test, tests/acloca18.test,
+       tests/aclocal.test, tests/acsilent.test, tests/alpha.test,
+       tests/check4.test, tests/color.test, tests/fn99.test,
+       tests/fn99subdir.test, tests/help.test, tests/init.test,
+       tests/lisp8.test, tests/missing3.test, tests/pr220.test,
+       tests/python11.test, tests/python4.test, tests/python5.test,
+       tests/unused.test, tests/version8.test: When Exit is called
+       after a command that has stdout or stderr redirected to a file
+       for later inspection, output the file before failing the test.
+
+       Fix some comment typos.
+       * automake.in: Fix some comment typos.
+       * lib/Automake/Condition.pm: Likewise.
+       * lib/Automake/DisjConditions.pm: Likewise.
+       * lib/Automake/Variable.pm: Likewise.
+       * lib/Automake/tests/DisjConditions.pl: Likewise.
+
+2008-09-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/aclibobj.test: Fix race condition.
+
+2008-09-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix man page creation without installed files.
+       * doc/Makefile.am (update_mans): Use wrappers in tests/
+       directory.
+       ($(srcdir)/aclocal-$(APIVERSION).1): Use versioned wrapper as
+       input program to help2man.
+       ($(srcdir)/automake-$(APIVERSION).1): Likewise.
+       Report by Eric Blake.
+
+2008-09-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Remove unneeded per-rule *INSTALL variables.
+       * NEWS: Update.
+       * lib/am/data.am (%DIR%%PRIMARY%_INSTALL): Remove.
+       (install-%DIR%%PRIMARY%): Adjust.
+       * lib/am/libs.am (%DIR%LIBRARIES_INSTALL): Remove.
+       (install-%DIR%LIBRARIES): Adjust.
+       * lib/am/ltlibs.am (%DIR%LTLIBRARIES_INSTALL): Remove.
+       (install-%DIR%LTLIBRARIES): Adjust.
+       * lib/am/progs.am (%DIR%PROGRAMS_INSTALL): Remove.
+       (install-%DIR%PROGRAMS): Adjust.
+       * lib/am/python.am (%DIR%PYTHON_INSTALL): Remove.
+       (install-%DIR%PYTHON): Adjust.
+       * lib/am/scripts.am (%DIR%SCRIPT_INSTALL): Remove.
+       (install-%DIR%SCRIPTS): Adjust.
+
+       Compactify program rules using ternary operators.
+       * lib/am/progs.am (install-%DIR%PROGRAMS): Uglify^WCompactify
+       using ternary operators `%KEY?TRUE:FALSE%'.
+       (uninstall-%DIR%PROGRAMS): Likewise.
+
+       New doc section about command line length limits.
+       * doc/automake.texi (Length limitations): New node.
+       (Alternative): `nobase_' is not always equivalent to several
+       base variables.
+       (Install): Mention multi-file install.
+       * NEWS: Expand on the issue, list some more user-visible
+       consequences.
+
+       Install nobase_lib_LTLIBRARIES before bin_PROGRAMS.
+       * automake.in (generate_makefile): If nobase_lib_LTLIBRARIES are
+       used, add an ugly hack to install them before bin_PROGRAMS, just
+       like done with lib_LTLIBRARIES.
+       * tests/ltorder.test: Add program, to expose this.
+
+       Do not reorder nobase ltlib installation.
+       This patch changes back the order of installation of nobase
+       LTLIBRARIES to that in which files are listed in the variables.
+       It does not fix the issue of strict dependency ordering, as
+       implied by *_LIBADD, but as before allows to steer the order by
+       listing the libraries in nobase_*_LTLIBRARIES appropriately.
+       As an advantage over the state of 1.10, multiple consecutive
+       nobase libraries to be installed in the same directory are
+       passed to libtool in one invocation.
+       * lib/am/ltlib.am (install-%DIR%LTLIBRARIES) [!%?BASE%]: Do not
+       reorder libraries upon installation.  Remove spurious empty
+       line.
+       * tests/ltorder.test: New test.
+       * tests/Makefile.am: Update.
+
+       Fix -rpath arguments for nobase_*_LTLIBRARIES.
+       * automake.in (handle_ltlibraries): New hash %instsubdirs to
+       track the dirname of nobase ltlibraries, and tack it onto the
+       end of the -rpath argument.  Also, fix the warning about ltlibs
+       installed in multiple locations to fit a bit better.
+       * tests/pr300-ltlib.test: Expose this bug here.
+       * tests/ltinstloc.test: New test.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+
+       Man pages for automake and aclocal.
+       * configure.ac (HELP2MAN): New substitution.
+       * doc/Makefile.am (dist_man1_MANS, MAINTAINERCLEANFILES)
+       (update_mans): New macros.
+       ($(srcdir)/aclocal-$(APIVERSION).1)
+       ($(srcdir)/automake-$(APIVERSION).1): New rules, generate
+       man pages from the command line help with help2man.
+       ($(srcdir)/aclocal.1, $(srcdir)/automake.1): New rules, for
+       `.so' man page links to the versioned pages.
+       * NEWS: Update.
+
+2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Faster install for libtool outputs.
+       * lib/am/ltlib.am (install-%DIR%LTLIBRARIES): Invoke `libtool
+       --mode=install' with multiple libraries at once.
+       (%DIR%LTLIBRARIES_INSTALL): No need to use install_sh any more.
+       * lib/am/progs.am (install-%DIR%PROGRAMS): Likewise, remove much
+       of the libtool special-casing by invoking it for multiple
+       programs at once.
+
+2008-09-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fast install and uninstall for SCRIPTS.
+       * lib/am/scripts.am [%?INSTALL%]: Include inst-vars.am
+       independent of `%?BASE%'.
+       (install-%DIR%SCRIPTS): Install multiple scripts at once,
+       using awk and a number of sed scripts.
+       (uninstall-%DIR%SCRIPTS): Compute the installed names, and
+       remove them, all at once.
+       (%DIR%SCRIPT_INSTALL) [!BASE]: No need to use install-sh any
+       more.
+
+       Multi-file install for PROGRAMS.
+       * lib/am/progs.am (install-%DIR%PROGRAMS): Allow to install
+       several programs with one install invocation, when not using
+       libtool; employs some trickery to cater for nobase_, $(EXEEXT),
+       create needed directories, libtool, while only forking a
+       constant number of times in the fast path; uses awk and sed also
+       in the default path.
+       (%DIR%PROGRAMS_INSTALL) [!BASE]: No need to use install-sh any
+       more.
+
+       Enhance cleaning of programs in libtool mode.
+       * lib/am/progs.am (clean-%DIR%PROGRAMS) [?LIBTOOL?]: Fork less
+       often, avoid removing programs twice if $(EXEEXT) is empty.
+       * tests/nobase-libtool.test: Also test PROGRAMS, in order to
+       exercise the code path.
+       * THANKS: Update.
+       Report by Toralf Förster.
+
+2008-09-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Jim Meyering <jim@meyering.net>
+
+       Reliable multi-file install for man pages.
+       * lib/am/mans.am: Include inst-vars.am.
+       (install-man%SECTION%): Gather lists of man pages to install,
+       and install up to 40 of those that do not have to be renamed
+       at once.  Fail if installation of any file fails.
+       (uninstall-man%SECTION%): Rewrite to use fewer sed invocations.
+       * doc/automake.texi (Man pages): Hint the user to the fast path.
+       Indentation fix.
+       * tests/instmany-mans.test: New test.
+       * tests/Makefile.am: Update.
+
+2008-09-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Faster `make uninstall'; fast install for JAVA.
+       * lib/am/inst-vars.am (am__nobase_strip_setup)
+       (am__nobase_strip): New macros.
+       (am__nobase_list): Factorize.
+       * lib/am/data.am (uninstall-%DIR%%PRIMARY%): Use them, for a
+       constant number of forks per uninstall.
+       * lib/am/libs.am (uninstall-%DIR%LIBRARIES): Likewise.
+       * lib/am/lisp.am (uninstall-%DIR%LISP): Likewise.
+       * lib/am/progs.am (uninstall-%DIR%PROGRAMS): Fast uninstall.
+       * lib/am/python.am (uninstall-%DIR%PYTHON): Fast uninstall.
+       Echo all `rm' commands that are are executed.
+       * lib/am/java.am (install-%DIR%JAVA, uninstall-%DIR%JAVA):
+       Fast install and uninstall.
+
+       AIX ranlib dislikes spaces in the argument.
+       * lib/am/libs.am (install-%DIR%LIBRARIES): Fix instsh.test
+       failure on AIX due to ranlib and whitespace in the directory.
+       * THANKS: Update.
+       Report by John F Trudeau.
+
+       Fail upon install or ranlib failure, part two.
+       * lib/am/java.am (install-%DIR%JAVA): Fail upon install failure.
+       * lib/am/lisp.am (install-%DIR%LISP): Likewise.
+       * lib/am/ltlib.am (install-%DIR%LTLIBRARIES): Likewise.
+       * lib/am/libs.am (install-%DIR%LIBRARIES): Likewise, for
+       `install' as well as `ranlib'.
+       * lib/am/progs.am (install-%DIR%PROGRAMS): If `install' fails,
+       return its exit failure, not 1.
+       * tests/instfail.test: New test, for PROGRAMS (without libtool),
+       LIBRARIES, including nobase variants.
+       * tests/instfail-info.test: Likewise, for TEXINFOS.
+       * tests/instfail-java.test: Likewise, for JAVA.
+       * tests/instfail-libtool.test: Likewise, for PROGRAMS (with
+       libtool) and LTLIBRARIES.
+       * tests/Makefile.am: Adjust.
+
+       Exit upon `install' failure, part one.
+       * lib/am/data.am (install-%DIR%%PRIMARY%): Exit if any install
+       command fails.
+       * lib/am/python.am (install-%DIR%PYTHON): Likewise.
+       * lib/am/scripts.am (install-%DIR%SCRIPTS): Likewise.
+       * lib/am/texinfos.am (install-dvi-am, install-html-am)
+       (install-info-am:, install-pdf-am): Likewise.
+       * tests/instmany.test: New test, for SCRIPTS, DATA, and HEADERS.
+       * tests/instmany-python.test: New test, for PYTHON.
+       * tests/Makefile.am: Adjust.
+
+2008-09-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix multi-file installation for files in srcdir.
+       For files that can live in the build tree or the source tree,
+       we have to expect that prepending `$(srcdir)/' to each name
+       will let the install command line exceed length limitations.
+       Thus use a new macro, $(am__base_list), to install in chunks
+       of 40 files, similar to what we do for nobase_* files.  There,
+       lower the limit to 40, too.
+       * lib/am/inst-vars.am (am__install_max): Lower to 40.
+       (am__base_list): New macro.
+       * lib/am/data.am (install-%DIR%%PRIMARY%) [%?BASE%]: Use it.
+       * lib/am/texinfos.am (install-dvi-am, install-html-am)
+       (install-info-am, install-pdf-am, install-ps-am): Likewise.
+
+2008-09-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Use `Exit' instead of `exit' in test suite.
+       Cater to Bourne shells like Solaris sh that do not pass the
+       `exit' argument as status to the cleanup trap.
+       * Makefile.am (maintainer-check): Check that here-documents
+       use only `END' or `EOF' as delimiter in the test suite.
+       Check that, outside of here-documents, the tests do not use
+       `exit' with an argument, but use `Exit' instead.
+       * tests/defs.in (Exit): New function.  Use it throughout,
+       starting with the introduction of the exit trap.
+       * tests/aclibobj.test, tests/acloca10.test, tests/acloca11.test,
+       tests/acloca12.test, tests/acloca13.test, tests/acloca14.test,
+       tests/acloca15.test, tests/acloca16.test, tests/acloca17.test,
+       tests/acloca18.test, tests/acloca19.test, tests/acloca20.test,
+       tests/acloca21.test, tests/acloca22.test, tests/aclocal.test,
+       tests/aclocal3.test, tests/aclocal4.test, tests/aclocal5.test,
+       tests/aclocal6.test, tests/aclocal7.test, tests/aclocal8.test,
+       tests/aclocal9.test, tests/acoutbs.test, tests/acoutbs2.test,
+       tests/acoutnoq.test, tests/acoutpt.test, tests/acoutpt2.test,
+       tests/acoutqnl.test, tests/acsilent.test, tests/acsubst.test,
+       tests/acsubst2.test, tests/all.test, tests/alloca.test,
+       tests/alloca2.test, tests/alpha.test, tests/alpha2.test,
+       tests/amassign.test, tests/ammissing.test, tests/amopt.test,
+       tests/amsubst.test, tests/ansi.test, tests/ansi10.test,
+       tests/ansi2.test, tests/ansi3.test, tests/ansi3b.test,
+       tests/ansi4.test, tests/ansi5.test, tests/ansi6.test,
+       tests/ansi7.test, tests/ansi8.test, tests/ansi9.test (main),
+       tests/ar.test, tests/ar2.test, tests/asm.test, tests/asm2.test,
+       tests/asm3.test, tests/automake.test, tests/auxdir.test,
+       tests/auxdir2.test, tests/auxdir3.test, tests/auxdir4.test,
+       tests/backsl.test, tests/backsl2.test, tests/backsl3.test,
+       tests/backsl4.test, tests/badline.test, tests/badopt.test,
+       tests/badprog.test, tests/block.test, tests/bsource.test,
+       tests/canon-name.test, tests/canon.test, tests/canon2.test,
+       tests/canon3.test, tests/canon4.test, tests/canon5.test,
+       tests/ccnoco.test, tests/ccnoco2.test, tests/check.test,
+       tests/check2.test, tests/check3.test, tests/check4.test,
+       tests/check5.test, tests/check6.test, tests/check7.test,
+       tests/checkall.test, tests/clean.test, tests/clean2.test,
+       tests/colneq.test, tests/colneq2.test, tests/colon.test,
+       tests/colon2.test, tests/colon3.test, tests/colon4.test,
+       tests/colon5.test, tests/colon6.test, tests/colon7.test,
+       tests/color.test (test_no_color), tests/commen10.test,
+       tests/comment.test, tests/comment2.test, tests/comment3.test,
+       tests/comment4.test, tests/comment5.test, tests/comment6.test,
+       tests/comment7.test, tests/comment8.test, tests/comment9.test,
+       tests/compile.test, tests/compile_f90_c_cxx.test,
+       tests/compile_f_c_cxx.test, tests/cond.test, tests/cond10.test,
+       tests/cond11.test, tests/cond13.test, tests/cond14.test,
+       tests/cond15.test, tests/cond16.test, tests/cond17.test,
+       tests/cond18.test, tests/cond19.test, tests/cond2.test,
+       tests/cond20.test, tests/cond21.test, tests/cond22.test,
+       tests/cond27.test, tests/cond3.test, tests/cond37.test,
+       tests/cond39.test, tests/cond4.test, tests/cond40.test,
+       tests/cond41.test, tests/cond5.test, tests/cond6.test,
+       tests/cond7.test (AC_INIT), tests/cond8.test, tests/cond9.test,
+       tests/condd.test, tests/condhook.test, tests/condinc.test,
+       tests/condinc2.test, tests/condlib.test, tests/condman.test,
+       tests/condman2.test, tests/conf2.test, tests/confdeps.test,
+       tests/conff.test, tests/conff2.test, tests/confh.test,
+       tests/confh4.test, tests/confh5.test, tests/config.test,
+       tests/confincl.test, tests/conflnk.test, tests/conflnk2.test,
+       tests/conflnk3.test, tests/conflnk4.test, tests/confsub.test,
+       tests/confvar.test, tests/confvar2.test, tests/copy.test,
+       tests/ctarget1.test, tests/cxx.test, tests/cxx2.test,
+       tests/cxxansi.test, tests/cxxcpp.test, tests/cxxlibobj.test,
+       tests/cxxlink.test, tests/cxxnoc.test, tests/cxxo.test,
+       tests/cygwin32.test, tests/dash.test, tests/defs.in (else),
+       tests/defun.test, tests/defun2.test, tests/dejagnu.test,
+       tests/dejagnu2.test, tests/dejagnu3.test, tests/dejagnu4.test,
+       tests/dejagnu5.test, tests/dejagnu6.test, tests/dejagnu7.test,
+       tests/depacl2.test, tests/depcomp.test, tests/depcomp2.test,
+       tests/depcomp3.test, tests/depcomp4.test, tests/depcomp5.test,
+       tests/depcomp6.test, tests/depcomp7.test, tests/depdist.test,
+       tests/depend.test, tests/depend2.test, tests/depend3.test,
+       tests/depend4.test, tests/destdir.test, tests/dirforbid.test,
+       tests/dirlist.test, tests/dirlist2.test, tests/discover.test,
+       tests/distcom2.test, tests/distcom3.test, tests/distcom4.test,
+       tests/distcom5.test, tests/distcom6.test, tests/distcom7.test,
+       tests/distdir.test, tests/distname.test, tests/dollar.test,
+       tests/double.test, tests/dup2.test, tests/else.test,
+       tests/empty.test, tests/empty2.test, tests/empty3.test,
+       tests/empty4.test, tests/exdir.test, tests/exdir2.test,
+       tests/exdir3.test, tests/exeext.test, tests/exeext2.test,
+       tests/exeext3.test, tests/exeext4.test, tests/exsource.test,
+       tests/ext.test, tests/extra.test, tests/extra2.test,
+       tests/extra3.test, tests/extra4.test, tests/extra5.test,
+       tests/extra6.test, tests/extra7.test, tests/f90only.test,
+       tests/flibs.test, tests/fn99.test, tests/fn99subdir.test,
+       tests/fnoc.test, tests/fo.test, tests/fonly.test,
+       tests/fort1.test, tests/fort2.test, tests/fort4.test,
+       tests/fort5.test, tests/fortdep.test, tests/fpinst2.test,
+       tests/fpinstall.test, tests/gcj.test, tests/gcj2.test,
+       tests/gcj3.test, tests/gcj4.test, tests/gcj5.test,
+       tests/getopt.test, tests/gettext.test, tests/gettext2.test,
+       tests/gettext3.test, tests/gnits.test, tests/gnits2.test (main),
+       tests/gnits3.test, tests/gnumake.test, tests/gnuwarn.test,
+       tests/gnuwarn2.test, tests/header.test, tests/help.test,
+       tests/hosts.test, tests/implicit.test, tests/include.test,
+       tests/include2.test, tests/info.test, tests/init.test,
+       tests/insh2.test, tests/install2.test, tests/installdir.test,
+       tests/instdat.test, tests/instdat2.test, tests/instexec.test,
+       tests/insthook.test, tests/instman.test, tests/instman2.test,
+       tests/instsh.test, tests/instsh2.test, tests/instsh3.test,
+       tests/instspc.test, tests/interp.test, tests/interp2.test,
+       tests/java.test, tests/java2.test, tests/java3.test,
+       tests/javaprim.test, tests/javasubst.test, tests/ldadd.test,
+       tests/ldflags.test, tests/lex.test, tests/lex2.test,
+       tests/lex3.test, tests/lex4.test, tests/lex5.test (main),
+       tests/libexec.test, tests/libobj10.test, tests/libobj11.test,
+       tests/libobj12.test, tests/libobj13.test, tests/libobj2.test,
+       tests/libobj3.test, tests/libobj4.test, tests/libobj5.test,
+       tests/libobj7.test, tests/libobj8.test, tests/library.test,
+       tests/library2.test, tests/library3.test, tests/libtoo10.test,
+       tests/libtool.test, tests/libtool2.test, tests/libtool3.test
+       (main), tests/libtool4.test, tests/libtool5.test,
+       tests/libtool6.test, tests/libtool7.test, tests/libtool8.test,
+       tests/libtool9.test (main), tests/license.test,
+       tests/link_c_cxx.test, tests/link_dist.test,
+       tests/link_f90_only.test, tests/link_f_only.test,
+       tests/link_fc.test, tests/link_fccxx.test, tests/link_fcxx.test,
+       tests/lisp2.test, tests/lisp3.test, tests/lisp4.test,
+       tests/lisp5.test, tests/lisp6.test, tests/lisp7.test,
+       tests/lisp8.test, tests/listval.test, tests/location.test,
+       tests/longlin2.test, tests/longline.test, tests/ltcond.test,
+       tests/ltcond2.test, tests/ltconv.test, tests/ltdeps.test,
+       tests/ltlibobjs.test, tests/ltlibsrc.test, tests/lzma.test,
+       tests/maintclean.test, tests/make.test, tests/makej.test,
+       tests/makevars.test, tests/man.test, tests/man2.test,
+       tests/man3.test, tests/mclean.test, tests/mdate.test,
+       tests/mdate2.test, tests/mdate3.test, tests/mdate4.test,
+       tests/mdate5.test, tests/missing.test, tests/missing2.test,
+       tests/missing3.test, tests/missing4.test, tests/missing5.test,
+       tests/missing6.test, tests/mkinst2.test, tests/mkinst3.test,
+       tests/mkinstall.test, tests/mmode.test, tests/mmodely.test,
+       tests/multlib.test, tests/nobase-libtool.test,
+       tests/nobase-python.test, tests/nobase.test, tests/nodef.test,
+       tests/nodef2.test, tests/nodep.test, tests/nodep2.test,
+       tests/nodepcomp.test, tests/nodist.test, tests/nodist2.test,
+       tests/nodist3.test, tests/nogzip.test, tests/nogzip2.test,
+       tests/noinst.test, tests/noinstdir.test, tests/nolink.test,
+       tests/nostdinc.test, tests/notrans.test, tests/number.test,
+       tests/objc.test, tests/objc2.test, tests/obsolete.test,
+       tests/order.test, tests/outdir.test, tests/output-order.test,
+       tests/output.test, tests/output10.test, tests/output11.test,
+       tests/output12.test, tests/output13.test, tests/output2.test,
+       tests/output3.test, tests/output4.test, tests/output5.test,
+       tests/output6.test, tests/output7.test, tests/output8.test,
+       tests/output9.test, tests/overrid.test, tests/parse.test,
+       tests/pluseq.test, tests/pluseq10.test, tests/pluseq2.test,
+       tests/pluseq3.test, tests/pluseq4.test, tests/pluseq5.test,
+       tests/pluseq6.test, tests/pluseq7.test, tests/pluseq8.test,
+       tests/pluseq9.test, tests/postproc.test, tests/ppf77.test,
+       tests/pr2.test, tests/pr204.test, tests/pr211.test,
+       tests/pr220.test, tests/pr224.test, tests/pr229.test,
+       tests/pr243.test, tests/pr266.test, tests/pr279-2.test,
+       tests/pr279.test, tests/pr287.test, tests/pr300-lib.test,
+       tests/pr300-ltlib.test, tests/pr300-prog.test, tests/pr307.test,
+       tests/pr401.test, tests/pr401b.test, tests/pr401c.test,
+       tests/pr72.test, tests/pr87.test, tests/pr9.test,
+       tests/prefix.test, tests/primary.test, tests/primary2.test,
+       tests/primary3.test, tests/proginst.test, tests/python.test,
+       tests/python10.test, tests/python11.test, tests/python12.test,
+       tests/python2.test, tests/python3.test, tests/python4.test,
+       tests/python5.test, tests/python6.test, tests/python7.test,
+       tests/python8.test, tests/python9.test, tests/recurs.test,
+       tests/recurs2.test, tests/regex.test, tests/remake.test,
+       tests/remake2.test, tests/remake3.test, tests/remake4.test,
+       tests/remake5.test, tests/remake6.test, tests/remake7.test,
+       tests/req.test, tests/reqd.test, tests/reqd2.test,
+       tests/rulepat.test, tests/scripts.test, tests/seenc.test,
+       tests/sinclude.test, tests/space.test, tests/specflg.test,
+       tests/specflg2.test, tests/specflg3.test, tests/specflg6.test,
+       tests/specflg7.test, tests/specflg8.test, tests/specflg9.test,
+       tests/spell.test, tests/spell2.test, tests/spell3.test,
+       tests/spelling.test, tests/spy.test, tests/srcsub.test,
+       tests/srcsub2.test, tests/stamph2.test, tests/stdinc.test,
+       tests/stdlib.test, tests/stdlib2.test, tests/strip.test,
+       tests/subcond.test, tests/subcond2.test, tests/subcond3.test,
+       tests/subdir.test, tests/subdir2.test, tests/subdir3.test,
+       tests/subdir4.test, tests/subdir5.test, tests/subdir6.test,
+       tests/subdir7.test, tests/subdir8.test, tests/subdir9.test,
+       tests/subdirbuiltsources.test, tests/subobj.test,
+       tests/subobj10.test, tests/subobj2.test, tests/subobj3.test,
+       tests/subobj4.test, tests/subobj5.test, tests/subobj6.test,
+       tests/subobj7.test, tests/subobj8.test, tests/subobj9.test,
+       tests/subobjname.test, tests/subpkg.test, tests/subpkg2.test,
+       tests/subpkg3.test, tests/subst.test, tests/subst2.test,
+       tests/subst3.test, tests/substre2.test, tests/substref.test,
+       tests/substtarg.test, tests/suffix.test, tests/suffix10.test,
+       tests/suffix11.test, tests/suffix12.test, tests/suffix2.test,
+       tests/suffix3.test, tests/suffix4.test, tests/suffix5.test,
+       tests/suffix6.test, tests/suffix7.test, tests/suffix8.test,
+       tests/suffix9.test, tests/symlink.test, tests/symlink2.test,
+       tests/symlink3.test, tests/syntax.test, tests/tags.test,
+       tests/tagsub.test, tests/tar.test, tests/tar2.test,
+       tests/tar3.test, tests/target-cflags.test,
+       tests/targetclash.test, tests/transform.test, tests/txinfo.test,
+       tests/txinfo10.test, tests/txinfo13.test, tests/txinfo16.test,
+       tests/txinfo17.test, tests/txinfo18.test, tests/txinfo19.test,
+       tests/txinfo2.test, tests/txinfo20.test, tests/txinfo21.test,
+       tests/txinfo22.test, tests/txinfo23.test, tests/txinfo24.test,
+       tests/txinfo25.test, tests/txinfo26.test, tests/txinfo27.test,
+       tests/txinfo28.test, tests/txinfo29.test, tests/txinfo3.test,
+       tests/txinfo30.test, tests/txinfo31.test, tests/txinfo4.test,
+       tests/txinfo5.test, tests/txinfo6.test, tests/txinfo7.test,
+       tests/txinfo8.test, tests/txinfo9.test, tests/unused.test,
+       tests/upc.test, tests/upc2.test, tests/upc3.test,
+       tests/vars.test, tests/vars3.test, tests/vartar.test,
+       tests/version.test, tests/version2.test, tests/version3.test,
+       tests/version4.test, tests/version6.test, tests/version7.test,
+       tests/version8.test, tests/vpath.test, tests/vtexi.test,
+       tests/vtexi2.test, tests/warnopts.test, tests/werror.test,
+       tests/werror2.test, tests/whoami.test, tests/xsource.test,
+       tests/yacc.test, tests/yacc2.test, tests/yacc3.test,
+       tests/yacc4.test, tests/yacc5.test, tests/yacc6.test,
+       tests/yacc7.test, tests/yacc8.test, tests/yaccpp.test,
+       tests/yaccvpath.test: Use `Exit $arg' instead of `exit $arg'
+       throughout, except inside created files.
+
+2008-09-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid Heisenbug with verbose testing on HP-UX.
+       * tests/output-order.test: Remove spurious redirection line
+       from output for comparison.
+
+       For all possibly-relative subdirs, use $(am__cd).
+       Up to now, $(am__cd) was only used within backquotes, to avoid
+       extraneous output.  This patch also uses it for every `cd' to a
+       relative subdir, to prevent CDPATH from entering an unwanted
+       directory.
+       * Makefile.am (maintainer-check): Fix current check for
+       $(am__cd) within backquotes a bit.  Add new check for `cd' to a
+       relative subdir.
+       * automake.in (handle_tags, handle_configure):  Adjust rules.
+       * lib/am/ansi2knr.am: Likewise.
+       * lib/am/configure.am: Likewise.
+       * lib/am/distdir.am: Likewise.
+       * lib/am/remake-hdr.am: Likewise.
+       * lib/am/subdirs.am: Likewise.
+       * lib/am/tags.am: Likewise.
+       * lib/am/texibuild.am: Likewise.
+
+       Fix nobase-python.test for BSD make.
+       * tests/nobase-python.test: Listing a dependency to be found
+       via VPATH search explicitly, without the path, as a target,
+       will turn off VPATH search for FreeBSD make.  So move the
+       creation of the files outside of the Makefile.
+
+2008-09-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Implement AM_MAINTAINER_MODE([DEFAULT-MODE]).
+       * m4/maintainer.m4 (AM_MAINTAINER_MODE): Allow for an optional
+       first argument of `enable' or `disable', setting the default.
+       * doc/automake.texi (Optional, maintainer-mode): Document.
+       * tests/mmode.test: New test.
+       * tests/Makefile.am: Adjust.
+       * NEWS: Update.
+       Suggestion by Vincent Lefevre.
+
+2008-08-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Copyright year updates.
+       * lib/am/header-vars.am: Update copyright years.
+       * lib/am/remake-hdr.am: Likewise.
+       * lib/am/tags.am: Likewise.
+
+2008-08-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * THANKS: Use Cyrillic name instead of ASCII transcription.
+
+2008-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix rebuilding of removed subdir/Makefile.in files.
+       * lib/am/configure.am (%MAKEFILE-IN%) [?!TOPDIR_P?]: If
+       subdir/Makefile.in was removed, am--refresh would not update
+       it.  Fix up for it by running the per-directory rebuild rule.
+       * tests/remake6.test, tests/remake7.test: New tests.
+       * tests/Makefile.am: Adjust.
+       * NEWS, THANKS: Update.
+       Report and initial patch by Ilya N. Golubev.
+
+2008-08-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/notrans.test: Use multiple man files of each type.
+
+       Fix maintainer-check failures.
+       * doc/automake.texi (Conditionals): Drop TAB.
+       * tests/missing6.test: Use 'rm -f'.
+
+2008-08-19  Reuben Thomas <rrt@sc3d.org>  (tiny patch)
+
+       * doc/automake.texi (Flag Variables Ordering, Per-Object Flags):
+       Fix grammaros.
+
+2008-08-02  Karl Berry  <karl@freefriends.org>
+
+       * lib/gnupload: Provide also a simple example.
+
+2008-06-25  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       Small doc fix.
+       * doc/automake.texi (Public Macros): Close open paren.
+
+2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Introduce macro $(am__mv) to facilitate 'libtool --dry-run'.
+       * lib/am/depend.am (am__mv): New macro, set to 'mv -f'.
+       * lib/am/depend2.am: Use throughout to move the temporary
+       depfile *.Tpo to its final destination *.Po.
+
+2008-06-18  Rafael Espindola  <espindola@google.com>
+
+       * lib/config-ml.in: don't handle --enable-shared and --enable-static.
+
+2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/inst-vars.am (am__install_max): New variable.
+       (am__nobase_list): Use it.
+
+       Fix conditional rules competing with config.status rules.
+       * automake.in (handle_configure): Teach targets about the
+       conditional config.status rule.
+       * tests/cond39.test: Adjust test to expose this.
+
+       For AC_CONFIG_LINKS(X,X), do not clean X in a non-VPATH build.
+       * automake.in (rewrite_inputs_into_dependencies): Do distribute
+       inputs where input and output name are equal.  This relies on
+       the assumption that it only happens with AC_CONFIG_LINKS.
+       (handle_configure) <CONFIG_CLEAN_VPATH_FILES>: New variable, for
+       links where source and dest are equal.
+       * lib/am/clean.am (distclean-generic): Remove, if build tree not
+       equal source tree.
+       * tests/conflnk4.test: New test.
+       * tests/Makefile.am: Adjust.
+       * NEWS: Update.
+
+2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Extending): Fix ambivalent wording.
+       Report by Ben Pfaff.
+
+2008-06-04  Karl Berry  <karl@freefriends.org>
+
+       * doc/automake.texi (Install, Hard-Coded Install Paths):  Fix
+       punctuation and markup.
+       (Extending): Improve wording and clarify order semantics of
+       *-local and *-hook targets.
+
+2008-06-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Extending): Fix grammar.
+       Report by Karl Berry.
+
+2008-05-13  Stepan Kasal  <skasal@redhat.com>
+
+       Fix typos.
+       * doc/automake.texi (Timeline): Reported by Reuben Thomas.
+       * lib/am/remake-hdr.am: A few typos in comments.
+
+2008-04-10  Eric Blake  <ebb9@byu.net>
+
+       Prefer a released version of autoconf.
+       * NEWS: Bump requirement to autoconf 2.62.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Likewise.
+       * configure.ac: Likewise.
+       (AC_PREREQ): Remove check, done by AM_INIT_AUTOMAKE instead.
+
+       AC_AUTOCONF_VERSION can inadvertently expand to a macro name.
+       * m4/amversion.in (AM_SET_CURRENT_AUTOMAKE_VERSION): Use proper
+       m4 quoting.
+       * aclocal.in (write_aclocal): Likewise.
+       * tests/missing6.test: New test.
+       * tests/Makefile.am (TESTS): Run it.
+       * tests/missing4.test: Adjust.
+
+2008-04-02  Eric Blake  <ebb9@byu.net>
+
+       Make gnupload friendlier for VPATH usage.
+       * lib/gnupload: Allow uploads from separate directory.
+
+2008-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Implement conditional AC_CONFIG_FILES: AM_COND_IF.
+       * automake.in (%ac_config_files_condition): New.
+       (scan_autoconf_config_files): Record condition if any.
+       (scan_autoconf_traces): Trace _AM_COND_IF, _AM_COND_ELSE,
+       _AM_COND_ENDIF, updating @cond_stack as appropriate.
+       (handle_configure): Prefix config.status rule with condition.
+       Check that m4 quotation is done consistently.
+       * m4/cond.m4 (AM_CONDITION): Define `_AM_COND_VALUE_name'
+       with `name' being the name of the condition, to its shell
+       condition.
+       * m4/cond-if.m4: New file.
+       (_AM_COND_IF, _AM_COND_ELSE, _AM_COND_ENDIF): New trace helpers.
+       (AM_COND_IF): New macro, implements conditionals.
+       * m4/Makefile.am: Adjust.
+       * doc/automake.texi (Requirements, Optional, Conditionals):
+       Document AM_COND_IF.
+       * NEWS: Update.
+       * tests/cond39.test, tests/cond40.test, tests/cond41.test,
+       tests/cond42.test, tests/cond43.test: New tests.
+       * tests/Makefile.am: Adjust.
+
+2008-03-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (@ovar): New macro, from autoconf.texi.
+       (Python): Use it.
+       Suggestion by Eric Blake.
+
+2008-03-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/texinfo.tex: Sync from upstream.
+
+2008-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Requirements, Linking, Extending):
+       Fix underfull and overfull lines, fix wording a bit.
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: Sync from
+       upstream.
+
+       * Makefile.am (WGET_SV_GIT_CF): New.
+       (fetch): Pull config.guess and config.sub from git repo now.
+
+       * lib/Autom4te/FileUtils.pm (handle_exec_errors): New argument
+       $hint, show if the executing program does not exist.
+       (xsystem_hint): New function, like xsystem but allows to pass
+       a hint.
+
+2008-03-11  Peter Breitenlohner  <peb@mppmu.mpg.de>
+
+       Implement the `notrans_' prefix for untransformed manpages.
+       * automake.in (handle_man_pages), lib/am/mans.am: Implement
+       notrans_ prefix for MANS primary and rework dependencies for
+       install-man%SECTION%; use only vars defined in Makefile.am.
+       * doc/automake.texi (Renaming, Uniform, Man pages):
+       Document notrans_ prefix.
+       * NEWS: Update.
+       * tests/notrans.test: New test.
+       * tests/Makefile.am: Update.
+
+       * automake.in (handle_man_pages): Reindent, for next patch.
+
+2008-03-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Use `install' with multiple files at once for some primaries.
+       With nobase targets, at most 50 files are installed at once,
+       to avoid quadratic string concatenation and line length limits.
+       This isn't yet done with base targets.  One hope is that there,
+       the typical file name length is lower.  If this turns out to be
+       a problem, it should be revisited.
+
+       * lib/am/inst-vars.am (am__nobase_list): New helper macro for
+       installation of multiple nobase files at once: sorts and lists
+       files keyed by their target directory.
+       * lib/am/data.am (%DIR%%PRIMARY%_INSTALL): No need to set it to
+       $(install_sh_DATA) any more, not even for nobase targets.
+       (install-%DIR%%PRIMARY%): Split base and nobase cases.
+       Rewrite to pass lists of files which all go in the same
+       directory to `install'.  In the nobase case, make use of
+       $(am__nobase_list) and $(MKDIR_P) each directory before
+       populating it.  Take care of files in source and build trees,
+       and avoid creating directories where no files are to be
+       installed.
+       * lib/am/libs.am (%DIR%LIBRARIES_INSTALL): Likewise.
+       (install-%DIR%LIBRARIES): Likewise.
+       * lib/am/python.am (%DIR%PYTHON_INSTALL): Likewise.
+       (install-%DIR%PYTHON): Likewise.  Also take care to keep note of
+       a list for byte compilation after installation.
+       * lib/am/texinfos.am (install-dvi-am, install-html-am)
+       (install-info-am, install-pdf-am, install-ps-am): Use file lists
+       to install multiple files at once.
+       * NEWS: Update.
+       Suggested by Akim Demaille.
+
+2008-03-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Require unreleased Autoconf for fixed AC_PROG_INSTALL.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Bump AC_PREREQ to 2.61-341,
+       regenerate files.
+       * configure.ac: Also require Autoconf 2.61-341, to catch
+       failure early and provide a sensible error message.
+
+       Drop usage of obsolete macros AC_EXEEXT and AC_OBJEXT.
+       * tests/ansi4.test: Drop AC_OBJEXT and AC_EXEEXT.
+       * tests/ansi6.test: Likewise.
+       * tests/ansi7.test: Likewise.
+       * tests/condlib.test: Likewise.
+       * tests/cygwin32.test: Likewise.
+       * tests/exeext2.test: Likewise.
+       * tests/libobj11.test: Likewise.
+       * tests/library.test: Likewise.
+       * tests/txinfo5.test: Likewise.
+
+2008-03-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Skip instsh3.test if `touch -t' does not work.
+       * tests/instsh3.test: Test for `touch -t', fails with Solaris
+       /usr/ucb/touch.
+       * THANKS: Update.
+       Report by Younes Younes.
+
+2008-02-27  Reuben Thomas  <rrt@sc3d.org>
+
+       * doc/automake.texi (wildcards): Improve "Why doesn't Automake
+       support wildcards" node's English and sense.
+
+2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/check.am (check-TESTS): In the case patterns for
+       XFAILed tests, add literal bracket expression for matching
+       whitespace, as NetBSD 4.99.54 ksh does not understand a
+       bracket expression resulting from variable expansion.
+       * README: Explain how to run the Automake test suite, including
+       setting MAKE to test gmake.
+       Report by Patrick Welche.
+
+2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       PR automake/498
+       * m4/options.m4 (_AM_SET_OPTIONS): Use m4_foreach_w instead of
+       obsolete AC_FOREACH.
+       Report by NightStrike and gurganbl@rose-hulman.edu.
+
+2008-02-17  Colin Watson  <cjwatson@debian.org>  (tiny change)
+
+       * lib/am/tags.am (ID): Fix typo in workaround for old awk.
+
+2008-02-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/.gitignore: Ignore files generated by `make ps pdf html'.
+
+2008-02-05  Reuben Thomas  <rrt@sc3d.org>
+
+       * doc/automake.texi (CVS): configure.ac will appear newer, not
+       older, than configure.  Use `lexical' instead of `alphabetical'.
+
+2008-01-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/man3.test: Avoid `make VAR=value'.
+
+       * tests/subst3.test: New test.
+       * tests/Makefile.am: Update.
+
+       * tests/instsh2.test: Split off testing of `install-sh -C' ...
+       * tests/instsh3.test: ... to this new test, requiring non-root.
+       * tests/Makefile.am: Adjust.
+       * THANKS: Update.
+       Report by Theodoros V. Kalamatianos.
+
+2008-01-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/nobase.test: Extend test to generated files.
+
+       * tests/nobase-python.test: New test, nobase for python files.
+       * tests/Makefile.am: Update.
+
+       * tests/nobase.test: Split off libtool part of nobase.test for
+       increased test exposure, to ...
+       * tests/nobase-libtool.test: ... this new test.
+       * tests/Makefile.am: Update.
+
+2008-01-23  Eric Blake  <ebb9@byu.net>
+
+       Fix color.test when using BSD grep.
+       * tests/color.test: Ensure that grep can handle non-printing
+       characters.
+
+2008-01-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/lisp3.test: Fix typo.
+
+2008-01-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/mans.am (install-man%SECTION%): Prefer generated manpages
+       over distributed ones.
+       Report and patch by Peter Breitenlohner.
+       * tests/man3.test: New test.
+       * tests/Makefile.am: Update.
+
+2008-01-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/tar.test: Skip if no appropriate tar was found.
+
+2008-01-19  NightStrike  <nightstrike@gmail.com>
+
+       * doc/automake.texi (Dependency Tracking): Fix typo.
+
+2008-01-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/config-ml.in, lib/config.guess, lib/config.sub,
+       lib/symlink-tree: Sync from upstream.
+
+       * Makefile.am (WGET_SV_CVS): Renamed from WGETSGO.
+       (WGET_SV_GIT_AC, WGET_SV_GIT_GL, WGET_GCC): New.
+       (fetch): Update to match current upstream locations.
+
+2008-01-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (DESTDIR, Built sources example): Fix wording.
+       * THANKS: Update.
+       Reports and suggestions by William Pursell and nightstrike@gmail.com.
+
+2008-01-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Do not fail if `autoupdate' is not present.
+       * tests/obsolete.test: Check for presence of autoupdate.  Apparently,
+       FreeBSD may install the other Autoconf programs without a version
+       suffix but not autoupdate.
+
+       Fix Heisenbug trying to unset a sometimes-not-set variable.
+       * tests/check5.test: Do not error out upon `unset TESTS' due to
+       `set -e', in case TESTS was not set.
+       * tests/color.test: Likewise.
+
+       * doc/automake.texi (amhello Explained): Fix odd sentence.
+       Report by nightstrike@gmail.com.
+
+2008-01-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/init.m4 (_AC_AM_CONFIG_HEADER_HOOK): Rewrite to be more
+       resistant to different quoting styles of $1.
+
+       Clarify texinfo.tex and TEXINFO_TEX semantics.
+       * doc/automake.texi (Texinfo): Clarify that by default,
+       texinfo.tex is searched in the same directory as the Makefile.am
+       that needs it.  Clarify that TEXINFO_TEX has precedence over
+       AC_CONFIG_AUX_DIR, and that it requires the user to install and
+       distribute it.
+       * tests/txinfo22.test: Ensure TEXINFO_TEX is not distributed.
+       * THANKS: Update.
+       Reports by Dilyan Palauzov and Roumen Petrov.
+
+2008-01-11  Bruno Haible  <bruno@clisp.org>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/output-order.test: New test, for the stable output fix.
+       * tests/Makefile.am: Update.
+
+2008-01-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * Makefile.am (dist-hook): New, ensure world-executable tests.
+       * THANKS: Update.
+       Report by Arto C. Nirkko.
+
+       * tests/acloca20.test: Use `--force' with the second $AUTOCONF,
+       to force update on fast machines where both autoconf invocations
+       happen within the same second.
+       Report by Greg Schafer.
+
+2008-01-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (scan_autoconf_files): Sort loop over
+       %required_aux_file, for stable verbose output.
+       Report by Bruno Haible.
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: Sync from
+       upstream.
+
+       * tests/ccnoco.test (Mycomp): Use a tighter match for -c -o,
+       to avoid matching for example `LDFLAGS=-Wl,--sort-common'.
+       * THANKS: Update.
+       Report and analysis by Carsten Lohrke and Mike Frysinger.
+
+2008-01-07  Stepan Kasal  <skasal@redhat.com>
+
+       * automake.in (handle_texinfo_helper, handle_lib_objects): Fix
+       typos in comments.
+
+2008-01-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Bump copyright years.
+       * aclocal.in (write_aclocal, version): Likewise.
+       * automake.in ($gen_copyright, version): Likewise.
+       * doc/automake.texi: Likewise.
+
+2007-12-18  Jim Meyering  <meyering@redhat.com>
+
+       * lib/gnupload (GPG): Don't use an absolute path.
+       This reverts part of the 2004-01-28 change.
+
+2007-12-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/Automake/FileUtils.pm (open_quote): New function.
+       (update_file, contents): Use it.
+
+       Reword the copyright notices to match what's suggested in GPLv3.
+
+2007-12-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/defs.in: Quote $srcdir, $PATH; skip libtool and gettext
+       tests if the absolute source or build tree name contain whitespace.
+
+       Modify some tests for absolute trees containing whitespace.
+       * tests/missing.test: Use "./missing" instead of "`pwd`/missing".
+       * tests/missing2.test: Likewise.
+       * tests/mmodely.test: Add `pwd` to $PATH instead of absolute
+       references to myyacc.sh and mylex.sh.
+       * tests/multlib.test: Likewise for mycc.
+       * tests/txinfo26.test: Skip if `pwd` contains whitespace, as
+       an absolute --srcdir does not work there.
+
+       * INSTALL, lib/INSTALL, lib/config-ml.in, lib/config.guess,
+       lib/config.sub, lib/texinfo.tex: Sync from upstream.
+
+       Fix the distdir target to cope with spaces in absolute file names.
+       * lib/am/distdir.am: Quote all instances of $(distdir) and
+       $(top_distdir).  They could contain white space, coming from
+       a toplevel package bootstrapped with an older Automake version.
+       (am__relativize): New macro, taken from gnulib code, written by
+       Bruno Haible.
+       (distdir): Use it to compute relative paths to distdir and
+       top_distdir for enclosed subpackages.
+       Also, quote $(distuninstallcheck_dir).
+       * lib/am/texinfos.am: Likewise, quote $(distdir).
+
+2007-11-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Quote file names in tests that can be absolute.
+       * tests/auxdir.test, tests/check3.test, tests/check4.test,
+       tests/compile.test, tests/cond33.test, tests/condhook.test,
+       tests/distdir.test, tests/dollar.test, tests/empty.test,
+       tests/gnits2.test, tests/gnits3.test, tests/include2.test,
+       tests/insthook.test, tests/java.test, tests/libtool7.test,
+       tests/lisp4.test, tests/lisp5.test, tests/lisp6.test,
+       tests/ltcond.test, tests/ltconv.test, tests/mkinst2.test,
+       tests/multlib.test, tests/nobase.test, tests/nodist2.test,
+       tests/obsolete.test, tests/pr287.test, tests/pr300-lib.test,
+       tests/pr300-ltlib.test, tests/pr300-prog.test, tests/python10.test,
+       tests/python3.test, tests/strip.test, tests/transform.test,
+       tests/txinfo13.test, tests/txinfo19.test, tests/txinfo22.test,
+       tests/txinfo23.test, tests/txinfo26.test, tests/txinfo27.test:
+       Likewise.
+
+       Quote @abs_top_builddir@ and @abs_top_srcdir@.
+       * tests/aclocal.in: Likewise.
+       * tests/automake.in: Likewise.
+
+       Fix TAGS and GTAGS rules to cope with whitespace in `pwd`.
+       * lib/am/tags.am (TAGS): Use positional parameters to avoid
+       the need to quote absolute file names.
+       (GTAGS): Quote absolute file name.
+       (CTAGS): Simplify, dropping unused variable `$tags'.
+
+2007-11-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/ltlib.am (uninstall-%DIR%LTLIBRARIES): Fix another instance
+       of am__strip_dir.  Fixes nobase and pr300-ltlib test failures.
+
+2007-11-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       Several *-local in a rule do not work.
+       * tests/all.test: Check this case.
+       Use set -e.
+       * tests/Makefile.am (XFAIL_TESTS): Add it.
+
+2007-11-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       Fix uses of am__strip_dir.
+       * lib/am/libs.am, lib/am/ltlib.am: Catch up with the change of
+       definition of am__strip_dir.
+
+2007-11-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       Define and use register_action.
+       * lib/Automake/Rule.pm: Fix a few typos in the doc.
+       (&rule): Use || to simplify the code.
+       (&register_action): New.
+       Export it.
+       * automake.in (&handle_factored_dependencies, &file_contents_internal):
+       Use it.
+
+2007-11-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       * bootstrap: Fix typos on redirections.
+
+2007-11-24  Akim Demaille  <akim@lrde.epita.fr>
+
+       Skip comments and empty lines in dirlist in the tests.
+       * defs.in (extra_includes): Skip comments and empty lines in dirlist.
+
+2007-11-24  Akim Demaille  <akim@lrde.epita.fr>
+
+       Ternary operator in lib/am files.
+       * automake.in (&transform_token): New.
+       (&transform): Use it.
+       Support %KEY?TRUE:FALSE%.
+       (&make_paragraphs): Adjust the regexp to call %transform.
+       * lib/am/data.am, lib/am/libs.am, lib/am/lisp.am, lib/am/ltlib.am,
+       * lib/am/progs.am, lib/am/python.am, lib/am/scripts.am:
+       Use %KEY?TRUE:FALSE%.
+       * lib/am/inst-vars.am (am__strip_dir): Assign the result to f
+       to be more alike am__vpath_adj.
+       Adjust dependencies.
+
+2007-11-24  Akim Demaille  <demaille@gostai.com>
+
+       * automake.in: Normalize white spaces.
+
+2007-11-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * configure.ac (ACLOCAL, AUTOMAKE): Fix quoting for rebuilding
+       rules, if the absolute build directory name contains white space.
+
+2007-11-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * aclocal.in (trace_used_macros): Quote input files.
+
+       * lib/ylwrap: Cope with white space in `PROGRAM' and `pwd`.
+
+       * lib/am/tags.am (ID, TAGS, CTAGS): Make awk scripts portable again.
+       (CTAGS): Drop unneeded variable `here'.
+
+2007-11-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/output13.test: New test.
+       * tests/Makefile.am: Adjust.
+       Prompted by report from Bruno Haible in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-10/msg00479.html>.
+
+       Fix signal handling in aclocal.
+       * aclocal.in (unlink_tmp): If invoked by a signal, note so
+       in verbose mode.  Reinstall default signal handler and reraise,
+       to transport the interrupt information.
+
+2007-11-13  Bob Proulx  <bob@proulx.com>
+
+       Fix color test failure on dumb (and other) terminals.
+       * tests/color.test: Set TERM to `ansi'.
+
+2007-11-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid spurious test failure with `make check TESTS=check5.test'.
+       * tests/check5.test: unset TESTS.
+
+       Fix maintainer-check failure.
+       * tests/color.test: unset TESTS, use `make -e' rather than
+       `make MACRO=val'.
+
+2007-11-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * configure.ac (AM_INIT_AUTOMAKE): Require version 1.10a.
+
+       * automake.in (handle_tests): Remove debugging leftover.
+
+       Run each test in a process-private subdirectory.
+       * tests/defs.in: Employ a trap to clean up at the end of the
+       test in case the test succeeded.  This needs to be revisited
+       because we would like to keep the output of XPASSing tests.
+       Also, note when we were interrupted by a signal.  Code taken
+       from Autoconf's _AC_INIT_PREPARE.
+       If $keep_testdirs is set, keep them even for successful tests.
+       * tests/Makefile.am (check-clean-local): New target.  Remove all
+       tests subdirs, but also make them writable first.  The latter
+       was already needed without per-test subdirs.
+       (distclean-local): Depend upon check-clean-local.
+       * tests/Makefile.in: Regenerate.
+       * tests/.cvsignore, tests/.gitignore: Adjust.
+
+       Fix default includes ordering to be `-I. -I$(srcdir) ...' again.
+       * automake.in (handle_compile): Put -I$(srcdir) before include
+       paths for config headers, as was done before Automake 1.10, but
+       keep uniquified list without multiple adjacent spaces.
+       * doc/automake.texi (Program variables): List include paths
+       in order.
+       * NEWS: Mention 1.10 regression.
+       * tests/stdinc.test: New test.
+       * tests/Makefile.am: Adjust.
+       * THANKS: Update.
+       Report by Kent Boortz.
+
+2007-11-08  Akim Demaille  <akim@lrde.epita.fr>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Bob Proulx  <bob@proulx.com>
+
+       Implement colorized test output.
+       * automake.in (handle_tests): Set COLOR depending on `color-tests'.
+       * configure.ac (AM_INIT_AUTOMAKE): Use `color-tests'.
+       * doc/automake.texi (Tests, Options): Document test results,
+       document new option, document AM_COLOR_TESTS.
+       * lib/Automake/Options.pm (_process_option_list): Handle it.
+       * lib/am/check.am (am__tty_colors): New variable.  Enable colored
+       output if TERM is not dumb and depending on AM_COLOR_TESTS and
+       whether stdout is connected to a terminal.
+       (check-TESTS): Use am__tty_colors.
+       * NEWS: Mention color-tests.
+       * tests/color.test: New test.
+       * tests/Makefile.am: Adjust.
+
+2007-11-08  NightStrike  <nightstrike@gmail.com>  (tiny change)
+
+       For PR automake/526:
+       * doc/automake.texi (Basic Installation): Fix typo.
+
+2007-10-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Accommodate for new macro AC_AUTOCONF_VERSION.
+       * aclocal.in (write_aclocal): Use AC_AUTOCONF_VERSION rather
+       than m4_PACKAGE_VERSION.  Define the former if not defined.
+       * m4/amversion.in (AM_SET_CURRENT_AUTOMAKE_VERSION): Likewise.
+       * tests/missing4.test: Use AC_AUTOCONF_VERSION.
+
+2007-10-29  Bruno Haible  <bruno@clisp.org>
+
+       * doc/automake.texi (Program variables): Clarify that
+       Automake does not put DEFAULT_INCLUDES in AM_CPPFLAGS, but
+       passes it directly to compilation commands.
+
+2007-10-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Move to git as primary source repository.
+       * Makefile.am (git-dist, git-release): Renamed and adjusted from ...
+       (cvs-dist, cvs-release): ... these.
+       (git-diff): New target, taken and adjusted from cvs-diff.
+       * Makefile.in: Regenerate.
+       * bootstrap: Adjust.
+       * NEWS: Announce change.
+       * doc/automake.texi (General Operation): cvs-dist is git-dist now.
+       (Timeline): Mention change.
+
+2007-10-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in: Treat extension .sx also like preprocessed
+       assembler (.S), following GCC.
+       * NEWS: Update.
+       * doc/automake.texi (Assembly Support): Adjust.
+       * tests/asm3.test: New test.
+       * tests/Makefile.am: Update.
+
+2007-10-09  Jim Meyering  <meyering@redhat.com>
+
+       Add lzma compression support.
+       * NEWS: Mention it.
+       * automake.in (handle_dist): Recognize dist-lzma.
+       (make_paragraphs): Map LZMA to dist-lzma.
+       * doc/automake.texi (Dist): Add dist-lzma.
+       (Options): Likewise.
+       * lib/Automake/Options.pm (_process_option_list):
+       (dist dist-all): Add command to create an lzma-compressed tarball.
+       (distcheck): Handle lzma-compressed tarballs just like the others.
+       * tests/defs.in: Test for lzma, too.
+       * tests/lzma.test: New file, based on nogzip.test.
+       * tests/Makefile.am (TESTS): Add lzma.test.
+       Suggestion from Karl Berry.
+
+2007-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (TARGET_PATTERN): Allow leading digit.
+       * tests/exeext3.test: Adjust to expose this.
+       Report by Claudio Fontana and Laurence Finston.
+
+2007-08-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/defs.in (required): For gcj, check whether `gcj -v'
+       works, to avoid broken installations without libgcj.spec.
+       Export $GCJ.
+       * tests/gcj4.test: Setting GCJ not needed any more.
+       * THANKS: Update.
+       Report by Jesse Chisholm.
+
+2007-08-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/config-ml.in, lib/config.guess, lib/config.sub,
+       lib/symlink-tree, lib/texinfo.tex: New upstream versions.
+
+2007-08-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (gettext): Fix link to gettext manual.
+
+2007-08-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       In ChangeLog files, use more-permissive notice rather than GPL,
+       as per usual GNU standards these days.
+
+2007-08-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (handle_programs): Also clean .libs/_libs
+       directory for _PROGRAMS.
+       * tests/libtoo10.test: New test.
+       * tests/Makefile.am: Update.
+       * THANKS: Update.
+       Report by Guillermo Ontañón.
+
+2007-08-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * configure.ac: Actually require version 2.60 in the test for
+       Autoconf, and recommend it in the error messages.
+       * THANKS: Update.
+       Report by Robert Swafford.
+
+2007-07-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (VPATH Builds): Fix wording.
+       Report by Reuben Thomas.
+
+2007-07-22  Noah Misch  <noah@cs.caltech.edu>
+
+       * tests/subst.test: Move the AC_SUBST into a macro definition.
+       Avoids an error from CVS Autoconf.
+       * THANKS: Update.
+       Report by Benoit Sigoure.
+
+2007-07-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/configure.am (%?REGEN-ACLOCAL-M4%): New target
+       $(am__aclocal_m4_deps) without any dependencies, to avoid the
+       "deleted .m4 file" problem.
+       * tests/acloca22.test: New test.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+
+2007-07-22  Francesco Salvestrini  <salvestrini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/ltlib.am (install-%DIR%LTLIBRARIES)
+       (uninstall-%DIR%LTLIBRARIES): Use $(AM_LIBTOOLFLAGS) and
+       $(LIBTOOLFLAGS).
+       * lib/am/progs.am (install-%DIR%PROGRAMS)
+       (uninstall-%DIR%PROGRAMS): Likewise.
+       * tests/libtool7.test: Update test for `install' and
+       `uninstall' cases.
+       * NEWS, THANKS: Update.
+
+2007-07-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi: Remove Front-Cover and Back-Cover Texts,
+       this manual is not printed by the FSF.
+
+2007-07-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * NEWS: Clarify that COPYING files are not updated.
+
+2007-07-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi: New Back-Cover Text.
+       Report by Karl Berry.
+
+2007-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * aclocal.in (version): Fix output to match GCS requirements.
+       * automake.in (version): Likewise.
+       Report by Eric Blake.
+
+       * COPYING, lib/COPYING: Update to GPLv3.  All uses changed.
+       * NEWS: Update.
+
+2007-06-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/gnupload: Fix shell portability issues with for loops.
+       Report by Karl Berry.
+
+2007-06-23  Paul Eggert  <eggert@cs.ucla.edu>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * aclocal.in (write_aclocal): Warn about autoconf
+       incompatibilities instead of making them fatal.
+       * tests/missing4.test: Adjust.
+       * NEWS: Update.
+       Problem reported by Bruno Haible in
+       <http://lists.gnu.org/archive/html/bug-automake/2007-06/msg00010.html>.
+
+2007-05-03  Stepan Kasal  <kasal@ucw.cz>
+
+       * doc/automake.texi, lib/Automake/Rule.pm: Fix typos.
+       * automake.in: Likewise.
+       (am_primary_prefixes): Keep the intentional typo there.
+
+2007-04-25  Eric Blake  <ebb9@byu.net>
+
+       * doc/stamp-vti: Remove generated file from revision control.
+       * doc/version.texi: Likewise.
+
+2007-04-23  Reuben Thomas  <rrt@sc3d.org>  (tiny change)
+
+       * doc/automake.texi (Python): Fix typo.
+
+2007-03-30  Eric Blake  <ebb9@byu.net>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/mdate-sh (ls_command): Use -n when available to avoid
+       problems with spaces in user/group names.
+       * tests/mdate5.test: New test.
+       * tests/Makefile.am: Adjust.
+
+2007-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (handle_tests): Rewrite XFAIL_TESTS just like
+       TESTS, appending $(EXEEXT), so that matching continues to work
+       on w32.
+       * NEWS: Mention this.
+       * doc/automake.texi (EXEEXT, Extending): Update.
+       * tests/check7.test: New test.
+       * tests/Makefile.am: Adjust.
+       Bug report by Ed Hartnett.
+
+2007-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Again search
+       the whole file, but use sed to reduce the line length.
+       Fixes 1.10 regression.  Report by David Byron.
+       * THANKS, NEWS: Update.
+
+2007-03-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/depcomp (aix): Rewrite depmode in the spirit of the tru64
+       one.  Fixes failure to catch dependencies with libtool and xlc
+       in case of enable_static=no (which is the default on AIX without
+       runtimelinking).
+       * tests/depcomp7.test: Run test once with --disable-shared and
+       once with --disable-static, to expose failure systematically.
+       * NEWS: Update.
+
+2007-03-29  Stepan Kasal  <kasal@ucw.cz>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (handle_LIBOBJS_or_ALLOCA): Fix the error message.
+       * tests/pr401.test: Update to expose the error.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+
+2007-03-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (scan_autoconf_config_files): Warn about leading
+       `./' in config file names.
+       * tests/canon-name.test: New test.
+       * tests/Makefile.am: Update.
+       * THANKS: Update.
+       Suggestion by Claudio Fontana.
+
+       * tests/yacc6.test: Add the generated headers to `BUILT_SOURCES'
+       as documented in the manual.  Fixes parallel make failure.
+       Report by Dieter Jurzitza.
+       * THANKS: Update.
+
+       * ChangeLog, TODO, tests/exdir3.test: Fix copyright notice.
+
+       * TODO: Kill a couple of outdated items.
+       * tests/exdir3.test: New test.
+       * tests/Makefile.am: Update.
+
+2007-01-27 Bruno Haible  <bruno@clisp.org>
+
+       * doc/automake.texi (Multiple Outputs): Fix the multiple outputs
+       with locking example.
+
+2007-01-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Subpackages): Fix ambiguous wording.
+       Report and suggestions by Reuben Thomas.
+       * THANKS: Update.
+
+2007-01-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/defs.in (is_newest): Cope with multiple newer files.
+       * NEWS: mention `install-sh -C'.
+
+2006-12-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/install-sh (initialize_posix_glob): New var.
+       Use it instead of setting posix_glob inline.
+       (posix_glob): Use '?'/''/: instead of ''/yes/no, for convenience.
+       (cmpprog, CMPPROG): New vars, since we use cmp rather than the diff
+       of Akim's patch.
+       Use LC_ALL before invoking 'ls' when we depend on its output format.
+       Don't use awk; just use the shell's builtin features.
+       Clean up $dsttmp if -C detects no installation is needed.
+       * tests/defs.in (is_newest): Renamed from is_younger; the new
+       name is more accurate.  All uses changed.
+       (old_timestamp): New var.
+       * tests/instsh2.test: Rewrite to avoid the need for sleeping.
+
+2006-12-25  Akim Demaille  <akim@epita.fr>
+
+       * lib/install-sh: Implement install-sh -C.
+       (This patch is the remaining part of the patch proposed in
+       <http://lists.gnu.org/archive/html/automake-patches/2006-10/msg00077.html>.)
+       (usage): Document it.
+       (copy_on_change): New var.
+       * tests/defs.in (is_younger): New function.
+       * tests/instsh2.test: Check install-sh -C.
+
+2006-12-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/install-sh: Fix typo in previous patch for handling --.
+       Use more-consistent style for ';;'.
+       Prefer || to if-then-else-:.
+       * tests/install2.test: Rework to avoid set -e problems.
+
+2006-12-24  Akim Demaille  <akim@epita.fr>
+
+       Simplify install-sh and its test.  This shouldn't change any behavior.
+       (This patch is a subset of the patch proposed in
+       <http://lists.gnu.org/archive/html/automake-patches/2006-10/msg00077.html>.)
+       * lib/install-sh (usage): Use usual GNU style.
+       (dstarg): Rename as...
+       (dst_arg): this for consistency.
+       Simplify quoting of assignments.
+       Sort them.
+       Don't use '\' to continue commands: && suffices.
+       Remove useless "continue" in the argument processing,
+       and factor the shifts.
+       * tests/defs.in: Some improvements to make it set -e clean.
+       Use the traditional ":" trick to protect loops from being empty.
+       Remove an empty straightforward piece of code prepared to define
+       additional variables.
+       Use test instead of [], for consistency.
+       * tests/install2.test: Use set -e, to simplify code.
+
+2006-12-20  Reuben Thomas  <rrt@sc3d.org>  (tiny change)
+
+       * doc/automake.texi: Fix typo.
+
+2006-11-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/Makefile.am: Use $(MAKE) $(AM_MAKEFLAGS) for building
+       amhello, to prevent gmake from invoking make with MAKEFLAGS
+       it does not understand.
+       Report by Patrick Welche.
+
+       * lib/gnupload: Revert last change.  Add pointer to upload
+       instructions of the GNU Maintenance Instructions.
+       Suggestion by Karl Berry.
+
+2006-11-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/gnupload: Add missing 'gnu' to example URL.
+       Report by Karl Berry.
+
+2006-10-28  Bobby Jack <bobbykjack@yahoo.co.uk>  (tiny change)
+
+       * doc/automake.texi (amhello Explained): autoconf creates
+       configure, not configure.ac.
+       * THANKS: Update.
+
+2006-10-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Dist, Dependency Tracking Evolution):
+       Fix some typos.
+       * lib/Automake/Condition.pm: Likewise.
+       * lib/Automake/DisjConditions.pm: Likewise.
+       * lib/Automake/ItemDef.pm: Likewise.
+       * lib/Automake/Options.pm: Likewise.
+       * lib/Automake/Rule.pm: Likewise.
+       * lib/Automake/VarDef.pm: Likewise.
+       * lib/Automake/Variable.pm: Likewise.
+       * lib/Automake/Wrap.pm: Likewise.
+       * lib/Automake/XFile.pm: Likewise.
+       * m4/substnot.m4: Likewise.
+
+2006-10-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/gnupload: Update to version 1.1 of directive file.
+
+2006-10-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/depend2.am (%SOURCEFLAG%): New substitution, goes
+       right before the expanded source file name.
+       * automake.in (%sourceflags): New global: per-extension flag
+       to denote that the next compiler argument is the source file.
+       (scan_autoconf_traces): Trace AC_FC_SRCEXT; initialize
+       %sourceflags accordingly.
+       (handle_single_transform): Store source file extension in...
+       (%lang_specific_files): ...this and...
+       (handle_languages): ...adjust here.  Pass flag in SOURCEFLAG.
+       * doc/automake.texi (Optional): Add AC_FC_SRCEXT.
+       (Fortran 9x Support): Update.
+       * tests/fort2.test: New test.
+       * tests/Makefile.am: Adjust.
+       * NEWS, THANKS: Update.
+       Suggested by Steven G. Johnson.
+
+       For PR automake/480.
+       * automake.in (lang_f77_rewrite, lang_fc_rewrite)
+       (lang_ppfc_rewrite, lang_ppf77_rewrite, lang_ratfor_rewrite):
+       return `lang_sub_obj' to support subdir-object mode for the
+       Fortran dialects.
+       * tests/fort4.test, tests/fort5.test: New tests.
+       * tests/Makefile.am: Update.
+       * NEWS, THANKS: Update.
+       Report by Davyd Madeley and Shannon L. Brown.
+
+       * lib/am/header-vars.am (pkglibexecdir): New variable.
+       * automake.in (%standard_prefix): Add it.
+       * doc/automake.texi (Uniform): Document it.
+       (Program Sources): Adjust.
+       * NEWS: Update.
+       * tests/libexec.test: New test.
+       * tests/Makefile.am: Update.
+       Suggested by Eric Blake.
+
+2006-10-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/gnupload: Update to version 1.1 of directive file.
+
+       * configure.ac, NEWS: Bump version to 1.10a.
+
+       * configure.ac, NEWS: Bump version to 1.10.
+       * doc/automake.texi (Releases): Update for 1.10.
+
+       * lib/config.sub, lib/texinfo.tex: New upstream versions.
+
+       * lib/am/depend2.am: Typo.
+       * lib/depcomp (scriptversion): Bump, to account for recent changes.
+
+       * doc/automake.texi (Examples): Introduce the example, and point
+       to Hello World.
+       (Hello): Remove this obsolete node.
+
+2006-10-15  Hans Ulrich Niedermann  <hun@n-dimensional.de>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       For PR automake/507:
+       * lib/am/distdir.am (distdir): filename-length-max check is not
+       done in sub-packages.
+       * doc/automake.texi (Options): Document this.
+       * tests/fn99subdir.test: New test.
+       * tests/Makefile.am: Update.
+       * THANKS: Update.
+
+2006-10-14  Alfred M. Szmidt  <ams@gnu.org>  (tiny change)
+
+       * doc/automake.texi (Third-Party Makefiles): Fix typo.
+       * THANKS: Update.
+
+2006-10-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * aclocal.in (write_aclocal): Improve warning for mismatched
+       Autoconf version.
+
+       * automake.in: For preprocessed assembler, add `$(DEFS)
+       $(DEFAULT_INCLUDES) $(INCLUDES)' to the compile rule.
+       * doc/automake.texi (Assembly Support): Update.
+       * NEWS: Update.
+       Suggested by Thomas Schwinge and Ralf Corsepius.
+
+       For PR automake/492.
+       * automake.in (output_flag): Set to `-o' for Assembler and
+       preprocessed Assembler, assuming that all understand `-c -o'.
+       * THANKS, NEWS: Update.
+       * tests/subobj10.test: New test.
+       * tests/Makefile.am: Update.
+       Report by Thomas Schwinge.
+
+       * automake.in (%_macro_for_cond): New variable.
+       (cond_stack_if): Use it for better error message about
+       missing dependency tracking conditionals.
+       * tests/asm2.test: New test, modelled after asm.test.
+       * tests/Makefile.am: Adjust.
+       Report by Ralf Corsepius.
+
+       * doc/automake.texi (Options): `no-dependencies' is similar
+       to `--ignore-deps', not `--include-deps'.
+       * m4/as.m4 (AM_PROG_AS): If `no-dependencies', do not invoke
+       _AM_DEPENDENCIES.
+       * tests/nodep2.test: New test.
+       * tests/Makefile.am: Adjust.
+
+       * automake.in (handle_LIBOBJS_or_ALLOCA): If we are in the
+       LIBOBJDIR, then we should not add a DEPDIR prefix.
+       * tests/pr401.test: Update test.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+       Report by Jim Meyering and Eric Blake.
+
+       * lib/depcomp (gcc3): Put dependency extraction flags before the
+       `-c' flag, so they appear at the same position as in %FASTDEP%
+       mode in depend2.am.  Fixes build failure for FreeBSD's c89,
+       which ignores unknown options only after the first non-option.
+       Bug report against M4 by Nelson H. F. Beebe.
+
+2006-10-14  Bruno Haible  <bruno@clisp.org>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in ($seen_gettext_intl): New variable.
+       (handle_gettext): Consider it.
+       (scan_autoconf_traces): Add AM_GNU_GETTEXT_INTL_SUBDIR to the list.
+       Set $seen_gettext_intl when it is seen.
+       * doc/automake.texi (gettext, Optional): Update.
+       * tests/gettext3.test: New test.
+       * tests/Makefile.am: Update.
+
+2006-10-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/install-sh (posix_mkdir): Reject FreeBSD 6.1 mkdir -p -m,
+       which incorrectly sets the mode of an existing destination
+       directory.  In some cases the unpatched install-sh could do the
+       equivalent of "chmod 777 /" or "chmod 0 /" on a buggy FreeBSD
+       system.  We hope this is rare in practice, but it's clearly worth
+       fixing.  Problem reported by Alex Unleashed in
+       <http://lists.gnu.org/archive/html/bug-autoconf/2006-10/msg00012.html>.
+       Also, don't bother to check for -m bugs unless we're using -m;
+       suggested by Stepan Kasal.
+
+2006-10-14  Geoffrey Keating  <geoffk@apple.com> (tiny change)
+
+       * m4/multi.m4: Non-default multilibs may be cross compilation.
+
+2006-10-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in: Fix some typos in comments.
+       * lib/Automake/Variable.pm: Likewise.
+
+2006-10-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (handle_compile): Use subst, for maintainer-check.
+
+2006-10-09  Andreas Köhler  <andi5.py@gmx.net>  (tiny change)
+
+       For PR automake/505:
+       * lib/am/configure.am (am__CONFIG_DISTCLEAN_FILES):
+       Fix typo: `config.status.lineno', not `configure.status.lineno'.
+
+2006-09-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * NEWS: Mention that `install-sh' needs executable permissions.
+       * tests/nobase.test: Adjust.
+       Report by Patrick Welche.
+
+2006-09-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/check.am (check-TESTS): Fix matching of XFAIL_TESTS
+       against currently running test for the first and last element
+       of $(TESTS): add spacing so Solaris make does VPATH expansion
+       on these words, too.
+       * tests/check6.test: Update.
+
+2006-08-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       For PR automake/501:
+       * lib/am/depend2.am (?GENERIC?%EXT%.o, ?!GENERIC?%OBJ%):
+       Abbreviate output a bit by not bothering to quote the .Po file
+       name (the quoting doesn't suffice in general anyway), and by not
+       bothering to remove junk .Tpo files (as they'll be removed later).
+       This also lets 'make' run faster by avoiding a subshell.
+
+2006-08-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in: Fortran 77 and Fortran should require variables
+       F77 resp. FC to be defined, and suggest the respective Autoconf
+       macros otherwise.
+       * tests/fort1.test: New test.
+       * tests/Makefile.am: Update.
+
+       * tests/ext.test: Add extensions f95, F90, F95.
+
+2006-08-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/500:
+       * automake.in (handle_compile) <$default_includes>: Do not output
+       the same -I twice.  Use @am__isrc@ instead of ` -I$(srcdir)'.
+       * m4/init.m4: Define am__isrc as ` -I$(srcdir)' only in
+       non-VPATH builds since we always have `-I.'.
+       * tests/subpkg.test: Make sure config headers are found in VPATH
+       and non-VPATH builds.
+
+2006-08-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi, lib/Automake/Rule.pm: Fix some typos.
+       * NEWS: Likewise.  Clarify that only one LIBOBJDIR is supported.
+
+2006-08-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/ChannelDefs.pm (usage): Mention that -Wportability
+       is enabled by default with gnu and gnits strictness.
+       Report from Bruno Haible.
+
+2006-08-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Mark de-ANSI-fication as being obsolete.
+       * doc/automake.texi: Likewise.
+
+2006-08-21  Stepan Kasal  <kasal@ucw.cz>
+
+       * Makefile.am, THANKS: Fix typos.
+
+2006-08-20  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * NEWS, configure.ac: Bump version to 1.9c.
+
+       * NEWS, configure.ac: Bump version to 1.9b.
+
+       * Makefile.am (maintainer-check): Check for mkdir_p in automake.in
+       too.
+       * automake.in (require_build_directory): Use MKDIR_P, not mkdir_p.
+
+       * m4/mkdirp.m4: Typo in previous patch.
+
+       * Makefile.am (maintainer-check): Fine-tune the "Unescaped @"
+       check so it doesn't complain about the '@ 's in node "Standard
+       Directory Variables".
+
+       * INSTALL, lib/INSTALL, lib/texinfo.tex, lib/config.sub: New
+       upstream versions.
+
+       * m4/mkdirp.m4 (AM_PROG_MKDIR_P): Prefix mkdir_p with
+       $(top_builddir)/ if it is a relative directory.
+
+2006-08-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/lex.am, lib/am/yacc.am: Drop the inline rules, always use
+       ylwrap.  Suggested by Akim Demaille long ago, to ease maintenance.
+       * automake.in (handle_languages): Do not define MORE-THAN-ONE.
+       (yacc_lex_finish_helper, lang_yacc_finish, lang_lex_finish): Always
+       require ylwrap.
+       * doc/automake.texi (Auxiliary Programs, Yacc and Lex): Update the
+       documentation of ylwrap.
+       * tests/lex.test, tests/lex4.test, tests/mmodely.test,
+       tests/yacc.test, tests/yacc2.test, tests/yacc3.test,
+       tests/yaccpp.test: Adjust.
+
+       * doc/automake.texi (Releases): Update statistics until 1.9.6.
+
+       * Makefile.am (maintainer-check): Check for mkdir_p.
+       * automake.texi (Obsolete macros): Document AM_PROG_MKDIR_P.
+       * lib/am/data.am, lib/am/distdir.am, lib/am/install.am,
+       lib/am/java.am, lib/am/libs.am, lib/am/lisp.am, lib/am/ltlib.am,
+       lib/am/mans.am, lib/am/progs.am, lib/am/python.am,
+       lib/am/scripts.am, lib/am/texinfos.am: Use MKDIR_P instead of mkdir_p.
+       * m4/mkdirp.m4 (AM_PROG_MKDIR_P): Define mkdir_p using $MKDIR_P, not
+       as '$(MKDIR_P)', otherwise it will break `Makefile.in's that use
+       mkdir_p without defining MKDIR_P.
+       * tests/distdir.test, tests/instman.test, tests/txinfo21.test:
+       Adjust.
+
+       * Makefile.am (SUBDIRS): Build lib first, for lib/Automake/Config.pm.
+       * configure.ac (ACLOCAL): Use --acdir=m4 in addition to
+       -I m4.  Running aclocal during the rebuild rules will fail
+       if the default acdir does not exist.
+
+       * NEWS, configure.ac, m4/init.m4, m4/lispdir.m4, m4/mkdirp.m4:
+       Require Autoconf 2.60 instead of some intermediate development
+       version.
+
+       * doc/automake.texi (Standard Directory Variables): Fix multitable
+       width.
+       (Autotools Introduction): Fix @uref usage.
+
+2006-08-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi: Fix some typos in the introduction,
+       adjust some spacing; spell `GNU Build System' consistently.
+       (menu): Unify node naming.
+       (Standard Directory Variables): Clarify that this list is not
+       exhaustive.
+       (DESTDIR): Fix example.
+
+2006-08-19  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Autotools Introduction) New chapter.
+       Thanks to Ben Pfaff and Ralf Wildenhues for comments.
+       (Auxiliary Programs, Install, Dist, Third-Party Makefiles)
+       (distcleancheck): More cross references.
+       * doc/amhello/configure.ac, doc/amhello/README,
+       doc/amhello/Makefile.am, doc/amhello/src/Makefile.am,
+       doc/amhello/src/main.c: New files.
+       * doc/Makefile.am (dist_noinst_DATA): Distribute them.
+       ($(srcdir)/amhello-1.0.tar.gz): New rule.
+       (dist_doc_DATA): Install amhello-1.0.tar.gz.
+       * Makefile.am (SUBDIRS): Update comment.
+
+2006-08-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi: Fix some typos.
+
+2006-08-14  Jonathan Higa <jthiga@gmail.com>
+
+       * automake.in: Register "Unified Parallel C" as language.
+       (lang_upc_rewrite): New function.
+       (resolve_linker): Consider UPCLINK.
+       * lib/Automake/Variable.pm (%_ac_macro_for_var): Suggest
+       AM_PROG_UPC for UPC and UPCFLAGS.
+       * m4/upc.m4: New file.
+       * m4/depend.m4 (_AM_DEPENDENCIES): Add UPC case.
+       * m4/Makefile.am (dist_m4data_DATA): Add upc.m4.
+       * doc/automake.texi (Unified Parallel C Support): New node.
+       (Public macros): Mention AM_PROG_UPC.
+       (Program and Library Variables, Flag Variables Ordering):
+       Mention UPCFLAGS.
+       * tests/upc.test, tests/upc2.test, tests/upc3.test: New file.
+       * tests/Makefile.am (TESTS): Add them.
+       * tests/ext.test: Also test upc files.
+
+2006-08-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Scripts): Fix some errors in previous patch.
+
+       * doc/automake.texi (Scripts): Revamp.  Show an example of script
+       built from configure.ac.  Discuss CLEANFILES and EXTRA_DIST for
+       other built scripts.
+
+       * m4/init.m4: Suggest fixing the call to AC_INIT when
+       AC_PACKAGE_NAME or AC_PACKAGE_VERSION is undefined.  This is for
+       newcomers who call AC_INIT and AM_INIT_AUTOMAKE without arguments.
+       * tests/init.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2006-08-04  Stepan Kasal  <kasal@ucw.cz>
+
+       * automake.in (dist_dirs, fill_dist_dirs): Remove.
+       * lib/am/distdir.am (DISTDIRS): Remove.
+       * tests/distdir.test, tests/pr2.test: Do not grep, use
+       `make distdir' instead.
+
+2006-08-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Conditionals): Split in two sections, "Usage"
+       and "Portability", and add a third one, "Limits" to explain how
+       conditional definitions inside multi-lines definitions can be
+       handled.
+       * automake.in (handle_options): Do not assume that
+       AUTOMAKE_OPTIONS is defined in TRUE, but diagnose conditional
+       definitions of AUTOMAKE_OPTIONS.
+       Report from Bas Wijnen.
+       * tests/amopt.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+       * aclocal.in (install_file): Cannot use /dev/null while diffing
+       new files, because Tru64's diff do not handle /dev/null.  So
+       create an empty destination file before running diff on a new
+       file, and erase it afterward.  Fall back to using /dev/null only
+       if we cannot create this file.
+       Report and initial patch from Ralf Wildenhues.
+       (unlink_tmp): New function.
+       * test/acloca18.test: Make sure the empty file has been erased.
+
+2006-08-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (handle_LIBOBJS_or_ALLOCA): With subdir-objects,
+       do not prefix `$(top_builddir)/' aka `./' to nonempty LIBOBJDIR,
+       to help BSD Make find the files also in a VPATH build.
+       Also return the same path, possibly prefixed, for correct
+       depdir computation.
+       * tests/pr401.test: Update to expose wrong depdir computation.
+       Rewrite to not use the same file name for library object and
+       main program.
+       * tests/pr401b.test, tests/pr401c.test: Likewise.
+
+2006-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/install-sh: Don't incorrectly claim that this implementation
+       can install only one file at a time.
+       (doit_exec): New var, for using 'exec' if possible, to save a process.
+       (test_mode, intermediate_mode): Remove.
+       (mode): Check for IFS or globbing characters in mode, since they might
+       cause weird behavior with the other changes below.  All later uses
+       of '"$mode"' changed to '$mode', since the ""s no longer matter.
+       Use octal modes if the invoker specifies an octal mode, and use
+       octal umask values if 'umask' outputs octal values; this is more
+       likely to work with older operating systems since Automake uses
+       octal modes, and also works around a bug with HP-UX 11.23
+       'mkdir -p -m u=rwx,g=rx,o=rx,u+wx' reported by Ralf Wildenhues in
+       <http://lists.gnu.org/archive/html/bug-automake/2006-06/msg00024.html>.
+       (cp_umask, mkdir_umask): New variables, to avoid
+       temporarily creating files or directories with too-permissive modes.
+       (mkdir_mode): Use the FreeBSD 'install' method for computing modes of
+       intermediate directories; this is safer.
+       (posix_mkdir): Also test mkdir -p -m ... by making a directory in
+       /tmp and checking the resulting mode with 'ls', to catch a bug in
+       HP-UX 11.23 and IRIX 6.5 mkdir reported by Ralf in the same message.
+       Use ':' for true, not 'true'; this is a bit faster on
+       traditional implementations.
+
+2006-07-09  Jim Meyering  <jim@meyering.net>
+
+       * lib/depcomp: "in in" -> "in" in comment.
+
+2006-07-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/defs.in (AUTOMAKE_run): Redirect stdout before stderr,
+       for consistency with the recommendation prompted by this report:
+       <http://lists.gnu.org/archive/html/bug-coreutils/2006-06/msg00225.html>.
+
+2006-06-24  Stepan Kasal  <kasal@ucw.cz>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/mkdirp.m4 (AM_PROG_MKDIR_P): Set `mkdir_p' to
+       `'$(MKDIR_P)'', so that it retains the per-directory value
+       computed by config.status.
+       * lib/am/distdir.am (distdir): do not use `$(mkdir_p)' from
+       a changed directory.  Bugs reported by Ralf Menzel.
+       * THANKS: Update.
+
+2006-06-24  Eric Dorland  <eric@debian.org>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (scan_texinfo_file): Fix matching file extension.
+       * tests/txinfo31.test: New test.
+       * tests/Makefile.am: Update.
+
+2006-06-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (handle_LIBOBJS): Don't rely on the caller defining $1.
+
+2006-06-07  Stepan Kasal  <kasal@ucw.cz>
+
+       * m4/mkdirp.m4 (AM_PROG_MKDIR_P): Rewrite using AC_PROG_MKDIR_P.
+
+2006-06-06  Stepan Kasal  <kasal@ucw.cz>
+           Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/distdir.am: Do not call $(mkdir_p) for each
+       distributed file, collect them and create them in one run,
+       and strip $(srcdir) and $(top_srcdir) all at once.
+       Fix some comment typos.
+
+2006-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/depend.m4 (_AM_DEPENDENCIES): The IRIX MIPSpro compiler
+       7.4.4m may omit the first included header dependency information
+       with `-MDupdate'.  Refine test to catch this.
+
+       * configure.ac (ACLOCAL): Use `-I m4' to match `./bootstrap'
+       procedure.
+
+       * tests/gettext.test: AM_PROG_GETTEXT of gettext >= 0.14.3
+       requires `config.rpath' to be present, and automake now enforces
+       this.  Test this, but only if the gettext installation works and
+       is recent enough to provide this diagnosis.
+       * tests/gettext.test: Provide a dummy `config.rpath' for all
+       subsequent checks.
+       * tests/gettext2.test, tests/subcond.test: Likewise.
+
+       * tests/pr401.test: Replace "perl -i" with sed and mv, for
+       MinGW perl.
+       * tests/pr401b.test, tests/pr401c.test, tests/python11.test,
+       * tests/yacc6.test, tests/yacc8.test: Likewise.
+
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Do not use
+       plain `grep' on the Makefile, as its line length may exceed that
+       for grep.  Bug report against coreutils by Sam Sirlin.
+       * THANKS: Update.
+
+2006-05-26  Sergey Poznyakoff  <gray@Mirddin.farlep.net>  (tiny change)
+
+       * doc/automake.texi (Options): Add anchor `tar-formats'.
+
+2006-05-25  Noah Misch  <noah@cs.caltech.edu>
+
+       * lib/Automake/XFile.pm (lock): Allow EOPNOTSUPP, besides
+       ENOLCK.  Only mention `make -j' when applicable.  Only raise
+       fatal errors when `make -j' is involved.  Improve error message.
+
+2006-05-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/Automake/Configure_ac.pm (find_configure_ac): Use
+       `$configure_in' instead of `configure.in', to preserve
+       directory component.
+       * lib/Automake/Configure_ac.pm: Add note that Automake owns
+       this file.
+       * lib/Automake/Channels.pm: Likewise.
+       * lib/Automake/FileUtils.pm: Likewise.
+       * lib/Automake/Struct.pm: Likewise.
+
+2006-05-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * INSTALL, lib/config.guess, lib/config.sub, lib/texinfo.tex:
+       New upstream versions.
+
+2006-05-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Auxiliary Programs): Fix URL to GCC
+       repository, they use SVN now.
+
+2006-05-13  Werner Lemberg  <wl@gnu.org>
+
+       * lib/gnupload: Add support for savannah.gnu.org and
+       savannah.nongnu.org.
+
+2006-05-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/Automake/Channels.pm, lib/Automake/Condition.pm,
+       lib/Automake/DisjConditions.pm, lib/Automake/Options.pm,
+       lib/Automake/VarDef.pm, lib/Automake/Wrap.pm: Fix some typos.
+
+2006-05-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/install-sh: Sync from Autoconf, as follows:
+       Don't use 'path' to talk about file names,
+       as per GNU coding standards.  Close a race condition reported by Ralf
+       Wildenhues and Stepan Kasal.  There is still a race condition
+       on hosts that predate Posix 1003.1-1992, but we can't help this.
+       Don't mishandle weird characters like space on pre-Posix hosts.
+       Invoke mkdir at most once per dir arg on pre-Posix hosts.
+
+2006-05-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/missing.test, tests/missing2.test: Do not require
+       GNUmake.
+       * Makefile.am (maintainer-check): Make sure `required=' does not
+       follow `. ./defs' in the tests.
+
+       * tests/ansi10.test: Use AC_PROG_CC_STDC.  Fix test that
+       ac_cv_prog_cc_stdc isn't just used by Automake code in
+       `configure'.
+       * tests/ansi6.test, tests/ansi7.test: Likewise.
+       * tests/ansi9.test: Likewise.  Do not override by setting
+       $U and $(ANSI2KNR) at `make' time; that will be fragile.
+       * tests/libobj8.test: Use AC_PROG_CC_STDC.
+       * tests/subobj3.test: Likewise.  Use `set -e'.
+
+       * lib/install-sh: Initialize IFS, so field splitting isn't
+       turned off later.
+       * lib/mkinstalldirs: Likewise.
+
+       * lib/am/java.am (class%DIR%.stamp): Do not assume `$?' has
+       the path of the prerequisite added; IRIX 6.5 make does not add
+       it, Solaris 2.6 make is inconsistent about adding it.  Fixes
+       java.test failure.
+
+       * tests/distdir.test: Do not use leading `./' in EXTRA_DIST for
+       files in the source tree.  Fixes failures with HP-UX and Tru64
+       make.
+
+       * lib/am/ansi2knr.am (ansi2knr): Rename target as...
+       (./ansi2knr): ...this, for BSD make.
+       (%ANSI2KNR-DIR%/ansi2knr): Adjust.
+
+2006-05-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/depcomp6.test, tests/depcomp7.test: Cater for OpenBSD
+       /bin/sh -e issue with failing commands in if clauses.
+
+       * tests/defs.in (Be Bourne compatible): Update from current
+       Autoconf.
+
+       * configure.ac: Recommend perl-5.8.2.
+       * tests/automake.test: Do not fail because of buggy Getopt::Long
+       in perl < 5.8.2.
+
+       * tests/longlin2.test: Do not use `grep' on Makefile.am:
+       it has long lines and is thus not a text file; AIX 5.1 grep
+       fails to scan non-plain patterns from long lines.
+
+       * tests/overrid.test: Change all regexes for warning messages to
+       match after a colon, so that the prepended file names do not
+       cause false matches.  Tighten overrides regex.  Fix typo
+       `cleam-am-local' -> `clean-am-local'.
+
+       * tests/java.test: `configure' uses a trap, so use `(exit 77);
+       exit 77' to portably set the exit status similar to AS_EXIT.
+       * tests/fn99.test: propagate nonzero exit status from subshell.
+
+       * tests/mkinst3.test: Fix `mkdir' wrapper to not be confused
+       if ``pwd`' contains the string `-p'.  Create the wrapper in a
+       subdirectory so that `.' in $PATH does not lead to an endless
+       loop.
+
+       * lib/depcomp (ia64hp): Rename dependency style to..
+       (hp2): ..this, as it works with aCC on HPPA, too; adjust
+       comment.  Report by Olivier Fourdan (PR automake/481).
+       * THANKS: Update.
+
+       * tests/aclocal7.test: Add `$sleep's between file touching
+       and automake resp aclocal+automake invocations, to ensure
+       they complete with a time stamp strictly later than the touched
+       file.
+
+       * lib/missing: Remove superfluous quotes.  Replace all uses of
+       `[' by `test', for consistency, and for..
+       * tests/missing5.test: ..this new test.
+       * tests/Makefile.am: Update.
+
+       * lib/missing (sed_minuso, sed_output): New variables.
+       (autom4te, help2man, makeinfo): Use them.  Unifies detection of
+       `-o FILE', `--output FILE', `--output=FILE', stricter regex.
+       Fixes `missing' to detect `--output' for help2man.  Fixes
+       PR automake/483.  Report by Dennis J. Linse.
+       (autom4te): Document in `missing --help'.
+       * THANKS: Update.
+
+2006-04-26  Thien-Thi Nguyen  <ttn@gnu.org>  (tiny change)
+
+       * doc/automake.texi (Dependency Tracking Evolution): Fix typo.
+
+2006-04-25  Stepan Kasal  <kasal@ucw.cz>
+
+       * lib/install-sh: Simplify the expr implementation of dirname.
+
+2006-04-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/install-sh: Handle --, and diagnose unknown options.
+       * m4/mkdirp.m4 (AM_PROG_MKDIR_P): In the normal case, set
+       mkdir_p='mkdir -p', not to 'mkdir -p --', for consistency with
+       the other ways that mkdir_p might be set.
+
+2006-04-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/amversion.in (_AM_AUTOCONF_VERSION): New macro.
+       (AM_SET_CURRENT_AUTOMAKE_VERSION): Call it.
+       * aclocal.in (trace_used_macros): Trace _AM_AUTOCONF_VERSION.
+       (write_aclocal): Output a check for Autoconf's version in aclocal.m4.
+       Doing so ensures that users cannot build configure and Makefiles
+       with two different autoconf versions.  Report from Noah Misch.
+       * tests/missing4.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2006-04-20  Paul Lunau  <temp@lunau.me.uk>  (tiny change)
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/dejagnu.am (check-DEJAGNU): Fail when at least one test
+       failed, instead of when the last one failed (PR automake/488).
+       Report from Paul Lunau.
+       * tests/dejagnu4.test: Update to expose this.
+       * THANKS: Update.
+
+2006-04-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/check.am (check-TESTS): Match XFAIL_TESTS delimited by
+       TABs as well as spaces.  Fixes PR automake/490.
+       * tests/check6.test: New test.
+       * tests/Makefile.am, THANKS: Update.
+       Report from Diab Jerius <djerius@cfa.harvard.edu>.
+
+2006-04-17  Stepan Kasal  <kasal@ucw.cz>
+
+       * lib/Autom4te/FileUtils.pm (find_file): Fix a typo in the
+       description; eliminate the duplicate error message.
+       * doc/automake.texi (@direntry): `Invoking Automake' is the name
+       of the usage node for `automake'
+       * lib/Automake/Variable.pm (%_gen_varname): Fix typos in the
+       comment.
+
+2006-04-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Require Autoconf 2.59c,
+       because it uses `datarootdir'.  Bump copyright year and serial.
+
+2006-04-10  Stepan Kasal  <kasal@ucw.cz>
+
+       * NEWS: Fix typo.
+
+2006-04-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (_hash_varname, _hash_values): New functions.
+       (_gen_varname): Use _hash_values, and return a flag indicating whether
+       the variable name was generated or reused.
+       (transform_variable_recursively): Do not redefine variables that
+       are reused, and try to reuse the variable being transformed.
+       * tests/check2.test: Make sure TESTS hasn't been redefined.
+       * tests/check5.test, tests/exeext4.test: Make sure variables have
+       been reused.
+       * tests/subst2.test: Make sure bin_PROGRAMS gets rewritten.
+
+       * automake.in (%ignored_configure_vars): New variable.
+       (scan_autoconf_traces): Trace for _AM_SUBST_NOTMAKE and fill
+       %ignored_configure_vars.
+       (define_configure_variable): Declare ignored configure variables
+       as VAR_SILENT.  Do not special-case AMDEPBACKSLASH and ANSI2KNR
+       w.r.t. VAR_SILENT.
+       * m4/substign.m4: New file.
+       * m4/Makefile.am (dist_m4data_DATA): Add substign.m4.
+       * m4/cond.m4: _AM_SUBST_NOTMAKE $1_TRUE and $1_FALSE (PR automake/477).
+       * m4/depend.m4: _AM_SUBST_NOTMAKE AMDEPBACKSLASH.
+       * m4/protos.m4: _AM_SUBST_NOTMAKE ANSI2KNR.
+       * tests/cond.test: Make sure TEST_FALSE and TEST_TRUE are not defined.
+       * tests/amsubst.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2006-04-09  Stepan Kasal  <kasal@ucw.cz>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * automake.in (handle_single_transform): Preserve directories in
+       direct suffix rules.
+       * tests/suffix12.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       Report from John Ratliff.
+
+2006-03-25  Mike Frysinger  <vapier@gentoo.org>  (tiny change)
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in ($m4_include_rx): Do not recognize `include', and
+       adjust scan_configure_dep and scan_file accordingly.
+       (scan_configure_dep): Do not search white lines.
+       (scan_file): Strip comments from current line after checking
+       for serial, so that aclocal does not trip on `m4_include' macros
+       in comments.  Report from Mike Frysinger.
+       * tests/acloca21.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+
+2006-03-24  Stepan Kasal  <kasal@ucw.cz>
+
+       * tests/mmodely.test: Fix the test on systems with no lex.
+
+2006-03-23  Stepan Kasal  <kasal@ucw.cz>
+
+       * automake.in (libtool_new_api): Fix a typo in the comment.
+       * lib/Automake/Makefile.am (Config.pm): Likewise.
+       * lib/am/depend2.am: Likewise.
+       * tests/xsource.test: With `set -e', `|| exit 1' is no longer
+       needed.
+
+2006-03-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * tests/depcomp6.test, tests/depcomp7.test: Change back to
+       using `$MAKE && exit 1', but make sure the last command in the
+       test is successful.
+
+2006-03-21  Clifford Wolf  <clifford@clifford.at>  (tiny change)
+           Stepan Kasal  <kasal@ucw.cz>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * aclocal.in (parse_arguments): Added wildcard support to the
+       dirlist parser.
+       * doc/automake.texi (Macro search path): Document it.
+       * tests/dirlist2.test: New test.
+       * m4/dirlist, tests/Makefile.am: Adjust.
+
+2006-03-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Add `_AM_DEPENDENCIES(OBJC)'
+       to `AC_PROG_OBJC' if provided, to fix Objective C depmode
+       handling.
+       * lib/Automake/Variable.pm (%_ac_macro_for_var): Add entries for
+       OBJC and OBJCFLAGS.
+       * tests/ext.test: Adjust.
+       * tests/objc.test, tests/objc2.test: New tests.
+       * tests/Makefile.am: Adjust.
+       * doc/automake.texi (Objective C Support): New node.
+       (Support for Other Languages): Adjust.
+
+2006-03-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/Automake/RuleDef.pm (DESCRIPTION): Typo.
+
+       * tests/depcomp6.test, tests/depcomp7.test: Fix failure logic
+       to work with `set -e'.
+
+       * tests/depcomp6.test, tests/depcomp7.test: New tests,
+       for general `depcomp' functionality, with and without
+       `subdir-objects', with and without `libtool'.
+       * tests/Makefile.am: Adjust.
+
+       * aclocal.in (write_aclocal): Unlink `aclocal.m4' before
+       writing into it, to break a symlinked file.
+       * tests/acloca20.test: New test.
+       * tests/Makefile.am: Updated.
+
+2006-03-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Allow package trees (packages with subpackages) to share
+       common distributed auxiliary files (and directories) that
+       reside within a subpackage.
+
+       * lib/am/distdir.am (distdir %?TOPDIR_P%): Do not fail if
+       `$(distdir)' already exists.
+       (%?SUBDIRS%): Set `am__remove_distdir' to `:' to prevent
+       removal of subpackage trees for distribution.
+       * tests/subpkg3.test: New test.
+       * tests/Makefile.am: Update.
+
+2006-03-18  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/check5.test, tests/nobast.test: Fix $MAKE and rm
+       invocations to please maintainer-check.
+
+2006-03-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (lang_c_rewrite): Typo in previous change.
+       * tests/ccnoco2.test: New file.
+       * tests/Makefile.am (TESTS): Add ccnoco2.test.
+
+       * automake.in (lang_c_rewrite): Make the AM_PROG_CC_C_O requirement
+       a 'portability' warning, so that people can ignore it.  Suggested
+       by Ralf Wildenhues.
+
+       * lib/Automake/ChannelDefs.pm: Make -Wportability the default in
+       gnu and gnits modes.
+       * doc/automake.texi (Invoking Automake): Adjust.
+
+2006-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/automake.texi (Yacc and Lex): Document that `.ypp' and
+       `.lpp' file extensions are recognized.
+
+2006-02-21  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Complete, Extending aclocal, Public macros)
+       (Python, Conditionals, API versioning): Always quote macro arguments.
+       Report from Stepan Kasal.
+
+2006-02-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Python): More examples.
+
+2006-02-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (distcleancheck): Fix bad wording.  Report
+       from Bob Rossi.
+       (Man pages): Show dist_man_MANS, not EXTRA_DIST = $(man_MANS).
+
+2006-01-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Append $(EXEEXT) to programs that may be listed in TESTS.
+       Report from Simon Josefsson.
+
+       * automake.in (%known_programs): New global.
+       (initialize_per_input): Reset it.
+       (append_exeext): Take a predicate as first argument to select
+       the filename to rewrite.
+       (handle_programs): Fill %known_programs.
+       (handle_tests): Append $(EXEEXT) to all tests that are in
+       %known_programs.
+       (am_install_var): Update call to append_exeext.
+       * doc/automake.texi (EXEEXT): TESTS is also rewritten.
+       (Tests): More about the difference between check_PROGRAMS and TESTS.
+       Give an example of TEST_ENVIRONMENT.
+       * tests/cond32.test: Augment with a nested condition.
+       * tests/exeext4.test: Also check TESTS.
+       * tests/check5.test: New file.
+       * tests/Makefile.am (TESTS): Add check5.test.
+
+2006-01-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/install-sh (dstdir): Don't use semicolons inside { } in
+       sed scripts, as Posix says it's not portable.
+       * lib/missing (file): Likewise.
+       * lib/am/distdir.am (distcheck): Likewise.
+       * tests/comment7.test, tests/comment9.test, tests/confh.test: Likewise
+       * tests/distcom2.test, tests/distcom3.test: Likewise.
+       * tests/distcom4.test, tests/distcom5.test: Likewise.
+       * tests/distcom6.test, tests/include.test, tests/pluseq8.test: Likewise.
+
+2006-01-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * ChangeLog: Move 2004's entries to ...
+       * ChangeLog.04: ... this new file.
+       * Makefile.am (EXTRA_DIST): Add ChangeLog.04.
+
+       * tests/txinfo13.test: Test fix below.
+
+2006-01-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/texinfos.am (dist-info): Tighten glob to avoid unwanted
+       extra files in distribution.  Reported by Vincent Lefevre.
+
+2006-01-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Linking, Program and Library Variables):
+       Mention the file extensions that usually appear in _DEPENDENCIES,
+       and point to BUILT_SOURCES and example of _DEPENDENCIES uses.  A
+       couple of people have been listing sources files in _DEPENDENCIES
+       lately.
+
+       * doc/automake.texi: Bump copyright year.
+       * automake.in ($gen_copyright, version): Likewise.
+       * aclocal.in (write_aclocal, version): Likewise.
+
+2006-01-05  Stepan Kasal  <kasal@ucw.cz>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (topsrcdir): New global.
+       (generate_makefile): Compute it.
+       (fill_dist_dirs): New function extracted from handle_dist.
+       (handle_dist, handle_configure): Use fill_dist_dirs.
+       * tests/distdir.test: Test for cases where $(top_srcdir) or
+       $(srcdir) appear in EXTRA_DIST.  Report from Sander Niemeijer.
+
+2006-01-05  Zack Weinberg  <zackw@panix.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/depcomp: Add 'ia64hp' dependency style.
+       Zack's original patch was contributed to GCC on 2005-06-13.
+       (tru64): Typo.
+
+2005-11-01  Stepan Kasal  <kasal@ucw.cz>
+
+       * lib/install-sh: Use "trap '' 0" instead of "trap - 0", so that
+       the code is portable to both POSIX and pre-POSIX shells.
+
+2005-10-17  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/nobase.test: Use `chmod a-x' instead of `chmod -x',
+       suggested by Eric Blake.
+
+2005-10-17  Stepan Kasal  <kasal@ucw.cz>
+
+       * doc/automake.texi (Program and Library Variables): Typo.
+       * lib/Automake/Variable.pm (transform_variable_recursively): Typo
+       in a comment.
+
+2005-10-03  Stepan Kasal  <kasal@ucw.cz>
+
+       * ChangeLog.03, automake.in, tests/overrid.test: Typos.
+
+2005-10-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/nobase.test: Exercise previous patch.
+
+2005-10-03  Peter O'Gorman  <peter@pogma.com>  (tiny change)
+
+       * lib/am/distdir.am: Remove $(SHELL) when calling install_sh
+       * m4/strip.m4: Ditto.
+       * m4/install-sh.m4: Add $(SHELL) to the definition of install_sh
+
+2005-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/automake.texi (limitations on file names): New section.
+       * lib/install-sh: Rewrite to support '*' in file names.
+       Also, tune so that we don't invoke so many commands in the usual case.
+       This has the side effect of fixing `install-sh -d' to not fail if it
+       loses the race in creating the last path component against another
+       process.
+       * tests/instspc.test: The "*" test is now fixed.
+
+2005-09-13  Stepan Kasal  <kasal@ucw.cz>
+
+       * automake.in (Languages) <cppasm>: Fix typo in the comment.
+
+2005-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * lib/am/ltlib.am (uninstall-%DIR%LTLIBRARIES): Do not put
+       shell in verbose mode.
+
+2005-08-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (variable_value): Do not read the TRUE
+       value of a conditionally defined variable.
+       Report from Juergen Leising.
+
+       * automake.in (lang_yacc_target_hook): Use AM_MAKEFLAGS in recursive
+       $(MAKE) invocations.
+       * lib/am/texibuild.am (?GENERIC_INFO?%SOURCE_SUFFIX%%DEST_SUFFIX%):
+       Likewise.
+       * lib/am/texi-vers.am (%STAMPVTI%): Likewise.
+       * lib/am/remake-hdr.am (%CONFIG_H%): Likewise.
+       * Makefile.am (maintainer-check): Check for this.
+       Report from Stepan Kasal.
+
+       * m4/mkdirp.m4: Update misleading comment about `mkdir -p .'.
+       Prompted by Stepan Kasal.
+
+2005-08-07  Stepan Kasal  <kasal@ucw.cz>
+
+       * lib/am/texinfos.am (uninstall-info-am): Call install-info only if
+       the $(infodir) exists.
+
+2005-07-31  Stepan Kasal  <kasal@ucw.cz>
+
+       * tests/library3.test: Fix a typo which made the test fail.
+
+2005-07-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Linking, Program and Library Variables):
+       Suggest reserving -l for third-party libraries.
+
+       * lib/Automake/Variable.pm (require_variables): Mention aclocal's
+       search path when suggesting to add a macro in configure.ac.
+       People are confused when Automake suggests adding a macro (such as
+       AC_PROG_LIBTOOL) that is already in configure.ac.
+       * automake.in (require_file_internal): Suggest `automake --add-missing'
+       for missing files that can be installed.
+       * tests/library3.test: Adjust.
+
+2005-07-27  Stepan Kasal  <kasal@ucw.cz>
+
+       * tests/defs.in: When required matches both `*libtool*' and
+       `*gettext*', check for both m4 files.
+
+       * doc/automake.texi (Auxiliary Programs): Fix a typo.
+       * tests/suffix11.test: Fix a typo.
+       * tests/colon3.test: s/EGREP/FGREP/.
+
+2005-07-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/instspc.test: Major rewrite to test for many other
+       problematic file names, e.g., '$', '"', '('.  Automake and
+       Autoconf can't handle many of them, so do not report a failure
+       if the usual candidates show up.
+
+2005-07-19  Stepan Kasal  <kasal@ucw.cz>
+
+       * Makefile.am (automake, aclocal): Merge the rules.
+
+2005-07-10  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex: New upstream
+       versions.
+
+2005-07-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/install-sh: Use IFS=/ to split directories on /, don't translate
+       / into % as it prevents directory names using %...
+
+2005-07-09  Stepan Kasal  <kasal@ucw.cz>
+
+       * doc/automake.texi (Public macros): Typo.
+       * aclocal.in: Typo in comment.
+
+2005-07-09  Zack Weinberg  <zack@codesourcery.com>  (tiny change)
+
+       * lib/depcomp: Handle "#line" markers as well as "# " markers in
+       "cpp" style, so it can work with newer HP compilers (for their
+       ia64 systems).
+
+2005-07-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Public macros) <AM_WITH_DMALLOC>: Reword to
+       fix an underful hbox.
+       * lib/INSTALL, lib/config.guess, lib/config.sub, lib/texinfo.tex:
+       New upstream versions.
+
+2005-07-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Add python2.5.
+
+2005-06-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (make_paragraphs): Do not define %TOPDIR%, now that
+       lib/am/header-vars.am no longer uses it.
+       * lib/am/libtool.am (distclean-am, distclean-libtool): Define
+       if TOPDIR_P is true, not TOPDIR.
+       Suggested by Stepan Kasal.
+
+       * automake.in (read_am_file): Correctly diagnose comments following
+       trailing backslash.
+       * tests/commen10.test: New file.
+       * tests/Makefile.am (TESTS): Add commen10.test.
+       Report from Harald Dunkel.
+
+       * automake.in (scan_autoconf_traces): Scan AC_SUBST_TRACE instead
+       of AC_SUBST.
+       * lib/am/header-vars.am (srcdir, top_srcdir, top_builddir, INSTALL):
+       Do not define, they are AC_SUBST_TRACEd by Autoconf.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Require Autoconf 2.59c.
+       * tests/include.test: Call AC_OUTPUT.
+
+2005-06-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/mkinstalldirs: Fix support for directory name with spaces if
+       `mkdir -p' does not work.
+       * tests/Makefile.am (TESTS): Add mkinst3.test.
+       * tests/mkinst3.test: New file.
+       Report from Noah Friedman.
+
+       * doc/automake.texi (Include, Extending aclocal): Typos.
+       Report from Karl Berry.
+
+2005-06-28  Stepan Kasal  <kasal@ucw.cz>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/mdate-sh: Avoid infinite loop with GNU ls when TIME_STYLE is set.
+       * tests/txinfo28.test: Set TIME_STYLE.
+       Report from Vincent Lefevre and James Youngman.
+
+2005-06-24  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/Automake/Variable.pm (define, _new): Remember the helper
+       variable created for the last conditional += on each variable, and
+       only append further += in the same condition to this last helper
+       variable, not to older helper variables.  This way the order of
+       the items appended to the variable is preserved.
+       * tests/cond21.test: Adjust.
+       * tests/cond38.test: New file.
+       * tests/Makefile.am (TESTS): Add cond38.test.
+       Report from Ed Hartnett.
+
+2005-06-22  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/aclocal5.test: Adjust to recent CVS Autoconf changes.
+
+       * automake.in (handle_footer): Do not output an unformatted
+       definition of SOURCES, it is already done correctly in
+       generate_makefile.  This superfluous definition introduced long
+       lines in some Makefiles, hence breakages in tools with a limited
+       line length.  Report from Mathias Froehlich.
+
+2005-06-11  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/texibuild.am (?GENERIC_INFO?%SOURCE_SUFFIX%%DEST_SUFFIX%):
+       Fix redirections in previous patch.
+
+2005-06-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/texibuild.am (?GENERIC_INFO?%SOURCE_SUFFIX%%DEST_SUFFIX%):
+       Do not backup any file if makeinfo is not installed.
+       * lib/missing (makeinfo): Do not touch a missing info file.
+       * tests/txinfo30.test: New file.
+       * tests/Makefile.am (TESTS): Add txinfo30.test.
+       Report from Bob Proulx.
+
+       * doc/automake.texi (Extending aclocal): Typo.
+
+2005-05-24  Brian Gough  <bjg@network-theory.co.uk>  (tiny change)
+
+       * lib/am/texinfos.am (.dvi.ps): Add $(am__TEXINFO_TEX_DIR) to TEXINPUTS.
+
+2005-05-15  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix PR automake/461:
+       * automake.in (require_build_directory): Canonicalize directories
+       with different names, such as `foo/bar' and `./foo//bar'.
+       * tests/subobj9.test: Augment to test that.
+       Report from Tom Tromey.
+
+2005-05-14  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * COPYING, ChangeLog, ChangeLog.00, ChangeLog.01, ChangeLog.02,
+       ChangeLog.03, ChangeLog.96, ChangeLog.98, HACKING, Makefile.am,
+       NEWS, README, TODO, aclocal.in, automake.in, bootstrap, configure,
+       configure.ac, doc/Makefile.am, doc/fdl.texi, lib/COPYING,
+       lib/Makefile.am, lib/acinstall, lib/compile, lib/config-ml.in,
+       lib/config.guess, lib/config.sub, lib/depcomp, lib/elisp-comp,
+       lib/gnupload, lib/mdate-sh, lib/missing, lib/py-compile,
+       lib/symlink-tree, lib/texinfo.tex, lib/ylwrap,
+       lib/Automake/ChannelDefs.pm, lib/Automake/Channels.pm,
+       lib/Automake/Condition.pm, lib/Automake/Config.in,
+       lib/Automake/Configure_ac.pm, lib/Automake/DisjConditions.pm,
+       lib/Automake/FileUtils.pm, lib/Automake/General.pm,
+       lib/Automake/Item.pm, lib/Automake/ItemDef.pm,
+       lib/Automake/Location.pm, lib/Automake/Makefile.am,
+       lib/Automake/Options.pm, lib/Automake/Rule.pm,
+       lib/Automake/RuleDef.pm, lib/Automake/Struct.pm,
+       lib/Automake/VarDef.pm, lib/Automake/Variable.pm,
+       lib/Automake/Version.pm, lib/Automake/Wrap.pm,
+       lib/Automake/XFile.pm, lib/Automake/tests/Condition.pl,
+       lib/Automake/tests/DisjConditions.pl,
+       lib/Automake/tests/Makefile.am, lib/Automake/tests/Version.pl,
+       lib/Automake/tests/Wrap.pl, lib/am/Makefile.am,
+       lib/am/ansi2knr.am, lib/am/check.am, lib/am/clean-hdr.am,
+       lib/am/clean.am, lib/am/compile.am, lib/am/configure.am,
+       lib/am/data.am, lib/am/dejagnu.am, lib/am/depend.am,
+       lib/am/depend2.am, lib/am/distdir.am, lib/am/footer.am,
+       lib/am/header-vars.am, lib/am/header.am, lib/am/inst-vars.am,
+       lib/am/install.am, lib/am/java.am, lib/am/lang-compile.am,
+       lib/am/lex.am, lib/am/library.am, lib/am/libs.am,
+       lib/am/libtool.am, lib/am/lisp.am, lib/am/ltlib.am,
+       lib/am/ltlibrary.am, lib/am/mans-vars.am, lib/am/mans.am,
+       lib/am/multilib.am, lib/am/program.am, lib/am/progs.am,
+       lib/am/python.am, lib/am/remake-hdr.am, lib/am/scripts.am,
+       lib/am/subdirs.am, lib/am/tags.am, lib/am/texi-vers.am,
+       lib/am/texibuild.am, lib/am/texinfos.am, lib/am/yacc.am,
+       m4/Makefile.am, tests/aclibobj.test, tests/acloca10.test,
+       tests/acloca11.test, tests/acloca12.test, tests/acloca13.test,
+       tests/acloca14.test, tests/acloca15.test, tests/acloca16.test,
+       tests/acloca17.test, tests/acloca18.test, tests/acloca19.test,
+       tests/aclocal.test, tests/aclocal3.test, tests/aclocal4.test,
+       tests/aclocal5.test, tests/aclocal6.test, tests/aclocal7.test,
+       tests/aclocal8.test, tests/aclocal9.test, tests/acoutbs.test,
+       tests/acoutbs2.test, tests/acoutnoq.test, tests/acoutpt.test,
+       tests/acoutpt2.test, tests/acoutqnl.test, tests/acsilent.test,
+       tests/acsubst.test, tests/acsubst2.test, tests/all.test,
+       tests/alloca.test, tests/alloca2.test, tests/alpha.test,
+       tests/alpha2.test, tests/amassign.test, tests/ammissing.test,
+       tests/ansi.test, tests/ansi10.test, tests/ansi2.test,
+       tests/ansi3.test, tests/ansi3b.test, tests/ansi4.test,
+       tests/ansi5.test, tests/ansi6.test, tests/ansi7.test,
+       tests/ansi8.test, tests/ansi9.test, tests/ar.test, tests/ar2.test,
+       tests/asm.test, tests/autohdr.test, tests/autohdr2.test,
+       tests/autohdr3.test, tests/autohdr4.test, tests/automake.test,
+       tests/auxdir.test, tests/auxdir2.test, tests/auxdir3.test,
+       tests/auxdir4.test, tests/backsl.test, tests/backsl2.test,
+       tests/backsl3.test, tests/backsl4.test, tests/badline.test,
+       tests/badopt.test, tests/badprog.test, tests/block.test,
+       tests/bsource.test, tests/canon.test, tests/canon2.test,
+       tests/canon3.test, tests/canon4.test, tests/canon5.test,
+       tests/ccnoco.test, tests/check.test, tests/check2.test,
+       tests/check3.test, tests/check4.test, tests/checkall.test,
+       tests/clean.test, tests/clean2.test, tests/colneq.test,
+       tests/colneq2.test, tests/colon.test, tests/colon2.test,
+       tests/colon3.test, tests/colon4.test, tests/colon5.test,
+       tests/colon6.test, tests/colon7.test, tests/comment.test,
+       tests/comment2.test, tests/comment3.test, tests/comment4.test,
+       tests/comment5.test, tests/comment6.test, tests/comment7.test,
+       tests/comment8.test, tests/comment9.test, tests/compile.test,
+       tests/compile_f90_c_cxx.test, tests/compile_f_c_cxx.test,
+       tests/cond.test, tests/cond10.test, tests/cond11.test,
+       tests/cond13.test, tests/cond14.test, tests/cond15.test,
+       tests/cond16.test, tests/cond17.test, tests/cond18.test,
+       tests/cond19.test, tests/cond2.test, tests/cond20.test,
+       tests/cond21.test, tests/cond22.test, tests/cond23.test,
+       tests/cond24.test, tests/cond25.test, tests/cond26.test,
+       tests/cond27.test, tests/cond28.test, tests/cond29.test,
+       tests/cond3.test, tests/cond30.test, tests/cond31.test,
+       tests/cond32.test, tests/cond33.test, tests/cond34.test,
+       tests/cond35.test, tests/cond36.test, tests/cond37.test,
+       tests/cond4.test, tests/cond5.test, tests/cond6.test,
+       tests/cond7.test, tests/cond8.test, tests/cond9.test,
+       tests/condd.test, tests/condhook.test, tests/condinc.test,
+       tests/condinc2.test, tests/condlib.test, tests/condman.test,
+       tests/condman2.test, tests/conf2.test, tests/confdeps.test,
+       tests/conff.test, tests/conff2.test, tests/confh.test,
+       tests/confh4.test, tests/confh5.test, tests/config.test,
+       tests/confincl.test, tests/conflnk.test, tests/conflnk2.test,
+       tests/conflnk3.test, tests/confsub.test, tests/confvar.test,
+       tests/confvar2.test, tests/copy.test, tests/ctarget1.test,
+       tests/cxx.test, tests/cxx2.test, tests/cxxansi.test,
+       tests/cxxcpp.test, tests/cxxlibobj.test, tests/cxxlink.test,
+       tests/cxxnoc.test, tests/cxxo.test, tests/cygwin32.test,
+       tests/dash.test, tests/defs.in, tests/defun.test,
+       tests/defun2.test, tests/dejagnu.test, tests/dejagnu2.test,
+       tests/dejagnu3.test, tests/dejagnu4.test, tests/dejagnu5.test,
+       tests/dejagnu6.test, tests/dejagnu7.test, tests/depacl2.test,
+       tests/depcomp.test, tests/depcomp2.test, tests/depcomp3.test,
+       tests/depcomp4.test, tests/depcomp5.test, tests/depdist.test,
+       tests/depend.test, tests/depend2.test, tests/depend3.test,
+       tests/depend4.test, tests/destdir.test, tests/dirforbid.test,
+       tests/dirlist.test, tests/discover.test, tests/distcom2.test,
+       tests/distcom3.test, tests/distcom4.test, tests/distcom5.test,
+       tests/distcom6.test, tests/distcom7.test, tests/distdir.test,
+       tests/distname.test, tests/dollar.test, tests/double.test,
+       tests/dup2.test, tests/else.test, tests/empty.test,
+       tests/empty2.test, tests/empty3.test, tests/empty4.test,
+       tests/exdir.test, tests/exdir2.test, tests/exeext.test,
+       tests/exeext2.test, tests/exeext3.test, tests/exeext4.test,
+       tests/exsource.test, tests/ext.test, tests/ext2.test,
+       tests/extra.test, tests/extra2.test, tests/extra3.test,
+       tests/extra4.test, tests/extra5.test, tests/extra6.test,
+       tests/extra7.test, tests/f90only.test, tests/flibs.test,
+       tests/fn99.test, tests/fnoc.test, tests/fo.test, tests/fonly.test,
+       tests/fortdep.test, tests/fpinst2.test, tests/fpinstall.test,
+       tests/gcj.test, tests/gcj2.test, tests/gcj3.test, tests/gcj4.test,
+       tests/gcj5.test, tests/getopt.test, tests/gettext.test,
+       tests/gettext2.test, tests/gnits.test, tests/gnits2.test,
+       tests/gnits3.test, tests/gnumake.test, tests/gnuwarn.test,
+       tests/gnuwarn2.test, tests/header.test, tests/help.test,
+       tests/hfs.test, tests/hosts.test, tests/implicit.test,
+       tests/include.test, tests/include2.test, tests/info.test,
+       tests/insh2.test, tests/install2.test, tests/installdir.test,
+       tests/instdat.test, tests/instdat2.test, tests/instexec.test,
+       tests/insthook.test, tests/instman.test, tests/instman2.test,
+       tests/instsh.test, tests/instsh2.test, tests/instspc.test,
+       tests/interp.test, tests/interp2.test, tests/java.test,
+       tests/java2.test, tests/java3.test, tests/javaprim.test,
+       tests/javasubst.test, tests/ldadd.test, tests/ldflags.test,
+       tests/lex.test, tests/lex2.test, tests/lex3.test, tests/lex4.test,
+       tests/lex5.test, tests/libobj10.test, tests/libobj11.test,
+       tests/libobj12.test, tests/libobj13.test, tests/libobj14.test,
+       tests/libobj2.test, tests/libobj3.test, tests/libobj4.test,
+       tests/libobj5.test, tests/libobj7.test, tests/libobj8.test,
+       tests/library.test, tests/library2.test, tests/library3.test,
+       tests/libtool.test, tests/libtool2.test, tests/libtool3.test,
+       tests/libtool4.test, tests/libtool5.test, tests/libtool6.test,
+       tests/libtool7.test, tests/libtool8.test, tests/libtool9.test,
+       tests/license.test, tests/link_c_cxx.test, tests/link_dist.test,
+       tests/link_f90_only.test, tests/link_f_only.test,
+       tests/link_fc.test, tests/link_fccxx.test, tests/link_fcxx.test,
+       tests/lisp2.test, tests/lisp3.test, tests/lisp4.test,
+       tests/lisp5.test, tests/lisp6.test, tests/lisp7.test,
+       tests/lisp8.test, tests/listval.test, tests/location.test,
+       tests/longlin2.test, tests/longline.test, tests/ltcond.test,
+       tests/ltcond2.test, tests/ltconv.test, tests/ltdeps.test,
+       tests/ltlibobjs.test, tests/ltlibsrc.test, tests/maintclean.test,
+       tests/make.test, tests/makej.test, tests/makevars.test,
+       tests/man.test, tests/man2.test, tests/mclean.test,
+       tests/mdate.test, tests/mdate2.test, tests/mdate3.test,
+       tests/mdate4.test, tests/missing.test, tests/missing2.test,
+       tests/missing3.test, tests/mkinst2.test, tests/mkinstall.test,
+       tests/mmodely.test, tests/multlib.test, tests/nobase.test,
+       tests/nodef.test, tests/nodef2.test, tests/nodep.test,
+       tests/nodepcomp.test, tests/nodist.test, tests/nodist2.test,
+       tests/nodist3.test, tests/nogzip.test, tests/nogzip2.test,
+       tests/noinst.test, tests/noinstdir.test, tests/nolink.test,
+       tests/nostdinc.test, tests/number.test, tests/obsolete.test,
+       tests/order.test, tests/outdir.test, tests/output.test,
+       tests/output10.test, tests/output11.test, tests/output12.test,
+       tests/output2.test, tests/output3.test, tests/output4.test,
+       tests/output5.test, tests/output6.test, tests/output7.test,
+       tests/output8.test, tests/output9.test, tests/overrid.test,
+       tests/parse.test, tests/percent.test, tests/percent2.test,
+       tests/phony.test, tests/pluseq.test, tests/pluseq10.test,
+       tests/pluseq2.test, tests/pluseq3.test, tests/pluseq4.test,
+       tests/pluseq5.test, tests/pluseq6.test, tests/pluseq7.test,
+       tests/pluseq8.test, tests/pluseq9.test, tests/postproc.test,
+       tests/ppf77.test, tests/pr2.test, tests/pr204.test,
+       tests/pr211.test, tests/pr220.test, tests/pr224.test,
+       tests/pr229.test, tests/pr243.test, tests/pr266.test,
+       tests/pr279-2.test, tests/pr279.test, tests/pr287.test,
+       tests/pr300-lib.test, tests/pr300-ltlib.test,
+       tests/pr300-prog.test, tests/pr307.test, tests/pr401.test,
+       tests/pr401b.test, tests/pr401c.test, tests/pr72.test,
+       tests/pr87.test, tests/pr9.test, tests/prefix.test,
+       tests/primary.test, tests/primary2.test, tests/primary3.test,
+       tests/proginst.test, tests/python.test, tests/python10.test,
+       tests/python11.test, tests/python12.test, tests/python2.test,
+       tests/python3.test, tests/python4.test, tests/python5.test,
+       tests/python6.test, tests/python7.test, tests/python8.test,
+       tests/python9.test, tests/recurs.test, tests/recurs2.test,
+       tests/regex.test, tests/remake.test, tests/remake2.test,
+       tests/remake3.test, tests/remake4.test, tests/remake5.test,
+       tests/req.test, tests/reqd.test, tests/reqd2.test,
+       tests/rulepat.test, tests/scripts.test, tests/seenc.test,
+       tests/sinclude.test, tests/space.test, tests/specflg.test,
+       tests/specflg2.test, tests/specflg3.test, tests/specflg6.test,
+       tests/specflg7.test, tests/specflg8.test, tests/specflg9.test,
+       tests/spell.test, tests/spell2.test, tests/spell3.test,
+       tests/spelling.test, tests/spy.test, tests/srcsub.test,
+       tests/srcsub2.test, tests/stamph2.test, tests/stdlib.test,
+       tests/stdlib2.test, tests/strip.test, tests/subcond.test,
+       tests/subcond2.test, tests/subcond3.test, tests/subdir.test,
+       tests/subdir2.test, tests/subdir3.test, tests/subdir4.test,
+       tests/subdir5.test, tests/subdir6.test, tests/subdir7.test,
+       tests/subdir8.test, tests/subdir9.test,
+       tests/subdirbuiltsources.test, tests/subobj.test,
+       tests/subobj2.test, tests/subobj3.test, tests/subobj4.test,
+       tests/subobj5.test, tests/subobj6.test, tests/subobj7.test,
+       tests/subobj8.test, tests/subobj9.test, tests/subobjname.test,
+       tests/subpkg.test, tests/subpkg2.test, tests/subst.test,
+       tests/subst2.test, tests/substre2.test, tests/substref.test,
+       tests/substtarg.test, tests/suffix.test, tests/suffix10.test,
+       tests/suffix11.test, tests/suffix2.test, tests/suffix3.test,
+       tests/suffix4.test, tests/suffix5.test, tests/suffix6.test,
+       tests/suffix7.test, tests/suffix8.test, tests/suffix9.test,
+       tests/symlink.test, tests/symlink2.test, tests/symlink3.test,
+       tests/syntax.test, tests/tags.test, tests/tagsub.test,
+       tests/tar.test, tests/tar2.test, tests/tar3.test,
+       tests/target-cflags.test, tests/targetclash.test,
+       tests/transform.test, tests/txinfo.test, tests/txinfo10.test,
+       tests/txinfo13.test, tests/txinfo16.test, tests/txinfo17.test,
+       tests/txinfo18.test, tests/txinfo19.test, tests/txinfo2.test,
+       tests/txinfo20.test, tests/txinfo21.test, tests/txinfo22.test,
+       tests/txinfo23.test, tests/txinfo24.test, tests/txinfo25.test,
+       tests/txinfo26.test, tests/txinfo27.test, tests/txinfo28.test,
+       tests/txinfo29.test, tests/txinfo3.test, tests/txinfo4.test,
+       tests/txinfo5.test, tests/txinfo6.test, tests/txinfo7.test,
+       tests/txinfo8.test, tests/txinfo9.test, tests/unused.test,
+       tests/vars.test, tests/vars3.test, tests/vartar.test,
+       tests/version.test, tests/version2.test, tests/version3.test,
+       tests/version4.test, tests/version6.test, tests/version7.test,
+       tests/version8.test, tests/vpath.test, tests/vtexi.test,
+       tests/vtexi2.test, tests/warnopts.test, tests/werror.test,
+       tests/werror2.test, tests/whoami.test, tests/xsource.test,
+       tests/yacc.test, tests/yacc2.test, tests/yacc3.test,
+       tests/yacc4.test, tests/yacc5.test, tests/yacc6.test,
+       tests/yacc7.test, tests/yacc8.test, tests/yaccpp.test,
+       tests/yaccvpath.test: Update FSF postal mail address.
+
+       * tests/cxxnoc.test: Adjust grep pattern for CC, because CVS
+       Autoconf currently defines a CCC variable.
+
+       * tests/output11.test, tests/output12.test: Use rm -f.
+
+2005-04-25  Gary V. Vaughan  <gary@gnu.org>
+           Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Support for remote LIBOBJS (and friends) with subdir-objects.
+       Fixes PR automake/401.
+
+       * automake.in (config_libobj_dir): New variable.
+       (scan_autoconf_traces): Set config_libobj_dir from AC_CONFIG_LIBOBJ_DIR.
+       (handle_LIBOBJS_or_ALLOCA, require_libsource_with_macro): New functions.
+       (handle_LIBOBJS, handle_ALLOCA): Use them.  Adjust location of
+       dependency files, possibly in a subdirectory.
+       * tests/pr401.test, tests/pr401b.test, tests/pr401c.test: New tests.
+       * tests/Makefile.am (TESTS): Add them.
+       * doc/automake.texi (Optional) <AC_CONFIG_LIBOBJ_DIR>: Document.
+       (LIBOBJS): Document changes in behaviour of
+       LIBOBJS, ALLOCA, LTLIBOBJS & LTALLOCA in the presence of
+       subdir-objects and an invocation of AC_CONFIG_LIBOBJ_DIR.
+
+2005-04-18  Jim Meyering  <jim@meyering.net>
+
+       * doc/automake.texi (Dist): Correct English.
+
+2005-03-31  Stepan Kasal  <kasal@ucw.cz>
+
+       * doc/automake.texi: When the phrase "for instance" introduces a
+       sentence, it should be delimited by a comma.
+
+       * doc/automake.texi: Fix a few typos.
+
+2005-03-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Uniform): Use xmldir instead of htmldir as
+       example, since the GCS now define htmldir.
+       (Auxiliary Programs): Mention config-ml.in and symlink-tree.
+       Give a URL for texinfo.tex.
+       (Public macros): Sort alphabetically, and move obsolete macros...
+       (Obsolete macros): ... here.
+       Prompted by Karl Berry.
+
+2005-03-29  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Multiple Outputs): Fix mistakes reported by
+       Jim Meyering.
+
+       * lib/am/lisp.am ($(am__ELCFILES)): Prevent races if the recover
+       rule is run with `make -j'.
+       * doc/automake.texi (Multiple Outputs): Adjust.
+       * tests/lisp6.test: Augment it.
+       * tests/lisp8.test: New file.
+       * tests/Makefile.am (TESTS): Add lisp8.test.
+       Suggested by Bruno Haible.
+
+2005-03-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi: Use @:, @., @!, and @tie{} where appropriate.
+
+2005-03-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/lisp.am ($(am__ELCFILES)): Do not attempt to recover
+       a missing *.elc file if it cannot be created because emacs does
+       not exist.
+       * tests/lisp7.test: New file.
+       * tests/Makefile.am (TESTS): Add lisp7.test.
+       Report from Greg Schafer.
+
+2005-03-05  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi: Replace wicked whiches by thats.
+
+2005-03-04  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (scan_configure_dep, scan_file): Include file names
+       are relative to the directory of configure.ac, not to the
+       directory of the file doing the include.  Remove code for this
+       latter case.
+       * tests/acloca13.test: Run distcheck and make sure all macros are
+       actually distributed.
+
+2005-03-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       For PR automake/450:
+       * aclocal.in (scan_file, scan_configure_dep): Skip missing sincluded
+       files.
+       * automake.in (scan_autoconf_traces): Likewise.
+       * tests/sinclude.test: Augment.
+       Report from Peter Breitenlohner.
+
+       For PR automake/450:
+       * aclocal.in (write_aclocal, trace_used_macros): Do not add/remove
+       acinclude.m4 and configure.ac to the include map in these two
+       places ...
+       (strip_redundant_includes): ... do it here.  This completes the
+       previous change from 2005-03-01, that did not update
+       write_aclocal.
+       * tests/acloca19.test: Augment.
+       Report from Peter Breitenlohner.
+
+2005-03-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * tests/comment9.test: Typo.
+
+2005-03-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * automake.in (read_am_file): Preserve backslashes preceding ##-lines.
+       * tests/comment9.test: New file.
+       * tests/Makefile.am (TESTS): Add comment9.test.
+       Report from Julien Sopena.
+
+       For PR automake/450:
+       * aclocal.in (trace_used_macros): Do not explicitly trace files
+       included by configure.ac.
+       * tests/acloca19.test: New file.
+       * tests/Makefile.am (TESTS): Add acloca19.test.
+       Report from Peter Breitenlohner.
+
+2005-02-27  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix for PR automake/448:
+       * automake.in (handle_factored_dependencies): Flag install-hook as
+       an error.
+       * tests/insthook.test: Exercise this.
+
+       * m4/lispdir.m4: Use datarootdir instead of datadir to match GCS.
+       * doc/automake.texi (Hard-Coded Install Paths): Adjust.
+
+       * doc/automake.texi: Replace many uses of @samp by @code, and
+       vice versa.  Use @command, @option, and @env where appropriate.
+
+2005-02-26  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi: "filename" -> "file name", for consistency
+       with GNU Coding Standards.  See also Paul's change on 2004-08-20
+       in Autoconf.
+
+       * doc/automake.texi (A Library, Libtool Libraries): Show how to link
+       a program with a static or libtool library.
+       (Program and Library Variables): Make clearer that _LDADD and
+       _LIBADD may also list libraries.
+       Prompted by a mail from Bruce Korb.
+
+       * doc/automake.texi (Alternative): Show how to rewrite nobase_
+       variables using custom directory variables, and link to node
+       Uniform.  Suggested by Leonardo Boiko.
+
+       * doc/automake.texi (Flag Variables Ordering, User Variables):
+       Make clearer who the maintainer is, and that he can AC_SUBST AM_
+       variables in configure.ac.  Suggested by Norman Gray.
+       (Uniform, Public macros, Libtool Issues, Java Support,
+       Conditionals): Use `---' for em dash, and stick them to the
+       enclosing text.
+
+       * doc/automake.texi: Reword a few sentences to fix all underflow
+       and overflow warnings during `make dvi'.
+       (Auxiliary Programs) <configure.guess, config.sub>: Update URL.
+       (Public macros) <AM_WITH_DMALLOC>: Likewise.
+
+2005-02-12  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/INSTALL, lib/config-ml.in, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: New upstream versions.
+
+       * doc/automake.texi (Hard-Coded Install Paths): New node.
+       (Extending, Extending aclocal, Python): Link to it.
+       (Extending): Don't show how to install a file in /etc/ directly,
+       this is insane.
+
+       * automake.in (read_am_file): Define variables containing long
+       lines as VAR_PRETTY to work around tools with limited input width.
+       * tests/longlin2.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       Report from Albert Chin.
+
+2005-02-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix for PR automake/447:
+       * lib/depcomp (tru64) [libtool]: Also check for $dir.libs/$base.o.d.
+       Report from Mathias Doreille.  Add some old comments from
+       Nicolas Joly for reference.
+
+2005-02-08  Stepan Kasal  <kasal@ucw.cz>
+
+       * lib/mdate-sh: Check the size of the word following the month to
+       catch Darwin.  This way the filename can contain spaces.
+
+       * doc/automake.texi (Requirements, Options): Typos.
+
+2005-02-08  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/missing (makeinfo): Compute the output file if neither -o
+       nor @setfilename is used.
+       Reported by Miroslaw Dobrzanski-Neumann and Bruno Haible.
+
+2005-02-07  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Requirements): Show one example of
+       AC_CONFIG_FILES with multiple outputs, and correct a few typos.
+
+       * aclocal.in ($serial_line_rx): Expect at least one space between
+       `serial' and the following number.
+       Report from Jim Meyering.
+
+       * lib/mdate-sh: Cope with Darwin's Day/Month/Year output.
+       Report from Peter O'Gorman.
+
+2005-02-06  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * aclocal.in (usage, parse_arguments): New --dry-run and --diff
+       options.
+       (install_file, write_aclocal): Honor --dry-run and --diff.
+       * doc/automake.texi (aclocal options): Document --dry-run and --diff.
+       (Serials): Mention --diff.
+       * lib/Automake/FileUtils.pm (handle_exec_errors): Accept an
+       $expected_exit_code argument.
+       (xsystem): Take a list of arguments, not a string.
+       * tests/acloca18.test: Use --dry-run and --diff.
+       Suggested by Paul Eggert.
+
+       * doc/automake.texi (aclocal options, Macro search path,
+       Extending aclocal, Local Macros, Serials, Future of aclocal): Make
+       these subsection of ...
+       (Invoking aclocal): ... this.
+
+       * aclocal.in ($serial_line_rx): Allow trailing garbage after the
+       serial number.
+       (scan_file): Explicitly mark the "ill-formed serial" message
+       as a warning.
+       * doc/automake.texi (aclocal options, Local Macros): Link to...
+       (Serials): ... this new section.
+
+2005-02-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/compile: Likewise.
+
+2005-02-02  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/elisp-comp: Use `(exit N); exit N', not `(exit N); exit';
+       see 2004-12-17.
+       * lib/mdate-sh, lib/py-compile, lib/ylwrap: Exit with nonzero
+       status if a write failure occurs with --help or --version option,
+       as below.
+
+2005-02-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/depcomp: Exit with nonzero status if a write failure occurs
+       with --help or --version option.
+       * lib/elisp-comp: Likewise.
+       * lib/gnupload: Likewise.
+       * lib/install-sh: Likewise.
+       * lib/missing: Likewise.
+       * lib/mkinstalldirs: Likewise.
+
+2005-02-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (aclocal options): Typo.
+
+       * aclocal.in (list_compare): New functions.
+       (scan_file): Honor #serial lines.
+       * tests/acloca18.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * doc/automake.texi (aclocal options, Local Macros): Document
+       #serial.
+
+2005-01-30  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Preliminary support for `aclocal --install'.
+       This still lacks #serial support.
+       * aclocal.in (reset_maps, install_file): New functions.
+       (write_aclocal): Copy files if --install.
+       (usage, parse_arguments): Recognize --install.
+       ("MAIN"): Start aclocal again if some file were installed.
+       * tests/acloca10.test: Augment to test --install.
+       * tests/aclocal.in, tests/defs.in: Add support for
+       ACLOCAL_TESTSUITE_FLAGS, used by acloca10.test.
+       * doc/automake.texi (aclocal options, Local Macros): Document
+       --install.
+       (Future of aclocal): Adjust.
+
+       * doc/automake.texi (Macro search path): Using --acdir is not
+       obvious, it's erroneous.
+
+       * doc/automake.texi (direntry): Let `info Automake' point to the
+       manual, and `info automake' to the `Invoking automake' node.  Like
+       in Autoconf.
+
+2005-01-27  Akim Demaille  <akim@epita.fr>
+
+       * lib/Automake/Configure_ac.pm: s/filename/file_name/g.
+       From Paul Eggert.
+
+2005-01-24  Akim Demaille  <akim@epita.fr>
+
+       * lib/Automake/FileUtils.pm: Rename filename as file_name to be
+       consistent with the terminology of the GNU coding standards.
+       From Paul Eggert.
+       (update_file): Accept a $force argument, so that --force always
+       updates the time stamps.
+
+2005-01-23  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (How the Linker is Chosen): Explain how the
+       linker is chosen without diagram, and update to match the code.
+       Suggestion from Adrian Bunk.
+
+2005-01-16  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * lib/am/subdirs.am ($(RECURSIVE_TARGETS), $(RECURSIVE_CLEAN_TARGETS)):
+       Process all words of $MAKEFLAGS when checking for -k.
+       * tests/check4.test: New file.
+       * tests/Makefile.am (TESTS): Add check4.test.
+       Report from Eric Blake.
+
+2005-01-13  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/amversion.in (AM_AUTOMAKE_VERSION): Point users to
+       AM_INIT_AUTOMAKE if the version passed is incorrect.
+       * tests/version8.test: New file.
+       * tests/Makefile.am (TESTS): Add version8.test.
+
+2005-01-09  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * m4/amversion.in, m4/as.m4, m4/auxdir.m4, m4/ccstdc.m4,
+       m4/cond.m4, m4/depend.m4, m4/depout.m4, m4/dmalloc.m4, m4/gcj.m4,
+       m4/header.m4, m4/init.m4, m4/install-sh.m4, m4/lead-dot.m4,
+       m4/lex.m4, m4/lispdir.m4, m4/maintainer.m4, m4/make.m4,
+       m4/minuso.m4, m4/missing.m4, m4/mkdirp.m4, m4/multi.m4,
+       m4/obsol-gt.m4, m4/obsol-lt.m4, m4/obsolete.m4, m4/options.m4,
+       m4/protos.m4, m4/python.m4, m4/regex.m4, m4/runlog.m4,
+       m4/sanity.m4, m4/strip.m4, m4/tar.m4: Use the same all-permissive
+       license that is used in aclocal.m4.  Relicensing backed by RMS.
+
+       * doc/automake.texi (A Library, LIBOBJS): Mention that empty
+       libraries are not portable.
+
+2005-01-05  Akim Demaille  <akim@epita.fr>
+
+       * aclocal.in ($ac_defun_rx): Match AU_ALIAS.
+       * tests/aclocal5.test (MORE_DEFS): Rename as...
+       (AM_TEST): this so that undefined macros are caught.
+       And make it an alias of AC_SUBST.
+       Test AU_ALIAS.
+       Reported by Martin Bravenboer.
+
+2005-01-03  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       Fix handling of per-target flags in link rules.
+       * automake.in (define_per_target_linker_variable): New function.
+       (handle_programs, handle_ltlibraries): Use it.
+       (%link_languages): New map.
+       (register_language): Fill it.
+       * lib/am/ltlibrary.am (%LTLIBRARY%): Do not append
+       $(%XLTLIBRARY%_LDFLAGS) to the command, this is now done by
+       define_per_target_linker_variable if needed.
+       * lib/am/program.am (%PROGRAM%%EXEEXT%): Likewise with
+       $(%XPROGRAM%_LDFLAGS).
+       * doc/automake.texi (Program and Library Variables): Mention
+       AM_LDFLAGS and AM_LIBTOOLFLAGS in the definition of maude_LDFLAGS
+       and maude_LIBTOOLFLAGS.
+       * tests/libtool9.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       * NEWS: Explain the backward incompatibility.
+       Report from Akim Demaille.
+
+2005-01-01  Alexandre Duret-Lutz  <adl@gnu.org>
+
+       * doc/automake.texi (Requirements) <AC_CONFIG_FILES>: Discuss
+       specifications with shell variables.
+       (Optional) <AC_CONFIG_HEADERS, AC_CONFIG_LINKS>: Point to
+       AC_CONFIG_FILES for this explanation.
+       * automake.in (substitute_ac_subst_variables_worker,
+       substitute_ac_subst_variables): Mew functions.
+       (rewrite_inputs_into_dependencies): Use substitute_ac_subst_variables
+       to ignore dependencies that contain unAC_SUBSTed shell variables.
+       (handle_configure): Likewise, do not output rules for
+       AC_CONFIG_HEADERS, AC_CONFIG_FILES, and AC_CONFIG_LINKS targets that
+       unAC_SUBSTed contain shell variables.
+       * tests/autohdr4.test: Use an AC_SUBST variable in a specification.
+       * tests/output11.test, tests/output12.test: New files.
+       * tests/Makefile.am (TESTS): Add output11.test and output12.test.
+
+       * aclocal.in (parse_arguments, write_aclocal): Bump copyright year.
+       * automake.in ($gen_copyright, version): Likewise.
+
+-----
+
+Copyright (C) 2005-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
+
+;; Variables:
+;; coding: utf-8
+;; End:
diff --git a/old/ChangeLog.11 b/old/ChangeLog.11
new file mode 100644 (file)
index 0000000..ce9d2b8
--- /dev/null
@@ -0,0 +1,13107 @@
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: drop unnecessary requirement in 'subpkg.test'
+       * tests/subpkg.test ($required): Drop "bison", it is not required
+       anymore since commit `v1.11-502-g7e5ae80'.
+
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gitlog-to-changelog: new auxiliary script, synced from gnulib
+
+       We have plans to stop maintaining a version-controlled ChangeLog
+       file in the Automake repository, and instead begin to generate it
+       automatically from the git log messages.  To do so, we will use
+       the `gitlog-to-changelog' script from gnulib.
+
+       * lib/gitlog-to-changelog: New, synced from gnulib.
+       * Makefile.am (fetch): Fetch and sync it.
+       * lib/Makefile.am (EXTRA_DIST): Distribute it.
+
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       regex: remove obsolete macro AM_WITH_REGEX
+       Today, practically nobody uses the GNU rx library, which, according
+       to its own website <http://www.gnu.org/software/rx/rx.html>, has
+       been "decommissioned".  Consequently, the automake-provided macro
+       AM_WITH_REGEX is not used nor required anymore.
+       * m4/regex.m4: Delete.
+       * m4/Makefile.am (dist_automake_ac_DATA): Do not list it anymore.
+       * doc/automake.texi (Obsolete Macros): Remove description, and in
+       fact any mention, of `AM_WITH_REGEX'.
+       * tests/regex.test: Delete.
+       * tests/help-regex.test: Likewise.
+       * tests/regex-obsolete.test: Likewise.
+       * tests/list-of-tests.mk: Do not list them anymore.
+       * NEWS: Update.
+       See also commits `v1.11-587-g5f335be' and `v1.11-433-g37b0aee',
+       where that macro had been deprecated.
+
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: be more consistent in copyright notices in tests
+       * tests/cond39.test: Update the heading copyright notice, to be
+       consistent with the formulation used in the other files.
+       * tests/cond40.test: Likewise.
+       * tests/cond41.test: Likewise.
+       * tests/cond42.test: Likewise.
+       * tests/cond43.test: Likewise.
+       * tests/conflnk4.test: Likewise.
+       * tests/extra8.test: Likewise.
+       * tests/extra9.test: Likewise.
+       * tests/suffix13.test: Likewise.
+       * tests/vala.test: Likewise.
+       * tests/vala1.test: Likewise.
+       * tests/vala2.test: Likewise.
+       * tests/vala3.test: Likewise.
+       * tests/vala4.test: Likewise.
+       * tests/vala5.test: Likewise.
+       * lib/Automake/tests/Condition.pl: Likewise.
+       * lib/Automake/tests/Condition-t.pl: Likewise.
+       * lib/Automake/tests/DisjConditions.pl: Likewise.
+       * lib/Automake/tests/DisjConditions-t.pl: Likewise.
+       * lib/Automake/tests/Version.pl: Likewise.
+       * lib/Automake/tests/Wrap.pl: Likewise.
+       * lib/Automake/tests/Cond2.pl: Add copyright notice.
+       * lib/Automake/tests/Cond3.pl: Likewise.
+       * lib/Automake/tests/DisjCon2.pl: Likewise.
+       * lib/Automake/tests/DisjCon3.pl: Likewise.
+       * lib/Automake/tests/Version2.pl: Likewise.
+       * lib/Automake/tests/Version3.pl: Likewise.
+
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: "Bail out!" recognized also after leading whitespace
+       Newer versions of TAP::Harness (e.g., 3.23 on Perl 5.14.1)
+       recognize a "Bail out!" directive also when it is prepended by
+       leading whitespace; this was not the case for older TAP:Harness
+       versions, (e.g., for version 3.17 on Perl 5.12.4), and for our
+       TAP driver implemented in awk.
+       * lib/tap-driver.sh: Handle the "Bail out!" directive also when
+       it is preceded by leading whitespace.
+       * tests/tap-spurious.test: Remove the tests checking that a
+       "Bail out!" string coming right after leading whitespace does
+       not trigger a bailout action.
+       * tests/tap-bailout-leading-space.test: New test.
+       * tests/list-of-tests.mk: Add it.
+       Problem reported by Jim Meyering in automake bug#10374.
+
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure of cond29.test
+       * tests/cond29.test: Limit the amount of virtual memory available
+       to the automake process to ~ 150 MB, rather than only ~ 20 MB, to
+       account for higher (but still acceptable) memory usages on some
+       systems (in this case, a Fedora 16 distro on ppc64).  To be
+       sure not to reduce coverage, increase the number of potential
+       combinations of automake conditionals from 2**22 = 4194304 to
+       2**24 = 16777216.
+       We have actually verified that the new version of the test case
+       catches the Automake 1.7 it is intended to check against, using
+       the Automake 1.7.9 tarball downloaded from:
+         <http://ftp.gnu.org/gnu/automake/automake-1.7.9.tar.gz>
+       Reported by Jim Meyering in automake bug#10374.
+
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: "aclocal --install -I /abs/dir" actually copies files
+
+       This change is for automake bug#8407.
+
+       In the past, there had been some debate and confusion about
+       whether "aclocal --install" should copy third-party .m4 files
+       in the first directory passed to the `-I' option even when
+       such directory was given as an absolute path, or whether it
+       was better to do so only for directories specified with a
+       relative path.
+
+       The rationale for this latter behaviour was that, before the
+       existence of the `ACLOCAL_PATH' variable, the only way (a poor
+       way, I might add) for a common user to extend the search path
+       of a system-wide installation of aclocal was to export something
+       like ACLOCAL="aclocal -I /my/extra/macros" in the environment.
+       Today, the correct way to proceed is undoubtedly through the
+       use of ACLOCAL_PATH, so we can settle the question once and for
+       all, and start verifying the correct behaviour of `-I' with a
+       new test.
+
+       * tests/aclocal-install-absdir.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * doc/automake.texi (aclocal Options): Be more explicit about
+       this part of `--install' semantics.
+
+2011-12-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: fix node names for automake and aclocal invocations
+
+       With the older node names, an "info automake" command issued
+       from the command line would have opened the node about the
+       invocation of the automake program, rather than the Top node
+       of the automake documentation.  To invoke the Top node, one
+       had to issue the command "info Automake" instead (note the
+       different capitalization).  This was suboptimal, and certainly
+       confusing.
+
+       With this change, "info automake" will open the Top node of the
+       automake documentation; to access the nodes about the invocation
+       of the automake and aclocal program, one has now to issue "info
+       automake-invocation" and "info aclocal-invocation" respectively.
+
+       This change fixes automake bug#8071.
+
+       See also commits `v2.61a-22-ge9215d1' and `v2.61a-72-g8c07b48' in
+       the autoconf git repository, which tackled a similar issue.
+
+       * doc/automake.texi (@direntry): Rename nodes `aclocal' and
+       `automake' to `aclocal-invocation' and `automake-invocation'
+       respectively.
+       * NEWS: Update.
+
+2011-12-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: tweak tests on silent-rules for makes without nested vars
+       * tests/silent-nested-vars.test: Define $MAKE to `./mymake' in
+       the environment, so that it will be automatically picked up by
+       configure.  Related tweaks and simplifications.
+       Remove the checks verifying that silent rules are respected also
+       when the 'subdir-objects' option is set, the checks testing the
+       old syntax for user-defined silent rules, and the tests using
+       the default $MAKE programs: they are redundant w.r.t. other test
+       cases.  Related simplifications.
+       Remove the temporary files used in a sanity check as soon as they
+       are not needed anymore.
+       Do not capture also the standard error of configure: we only want
+       to grep its standard output.
+       Consistently use `stdout' for the name of files where to save the
+       standard output captured from make and configure, for consistency
+       with other tests.
+       Make grepping of configure output and of the generated Makefile
+       stricter.
+       Improve and tweak the `mymake' script a little.
+       * tests/silent6.test: Make grepping of make stdout slightly
+       stricter.  After having configured with silent rules disabled,
+       try to force the use silent rules with `make V=1'.
+
+2011-12-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       silent-rules: fallback for makes without nested vars
+
+       This fixes two problems reported for Automake (Bug#9928, Bug#10237)
+       and is in response to a bug report for building coreutils on HP
+       NonStop OS (Bug#10234).  The problem is that HP NonStop 'make'
+       treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that
+       expands a macro with the funny name am__v_CC_$(V instead of the
+       desired name am__v_CC_1 or am__v_CC_0, and since the funny macro
+       is not defined the line is equivalent to "AM_V_CC = )"; this
+       inserts a stray ")" when $(AM_V_CC) is used, which eventually
+       causes 'make' to fail.
+
+       The basic idea is that instead of generating Makefile.in lines like
+       "AM_V_CC = $(am__v_CC_$(V))", we generate
+       "AM_V_CC = $(am__v_CC_@AM_V@)".  We then AC_SUBST $(V) for @AM_V@
+       in the usual case where `make' supports nested variables,
+       and substitute 1 (or 0) otherwise.  Similarly for usages like
+       $(am__v_CC_$(AM_DEFAULT_VERBOSITY)).
+
+       With this change, make implementations that doesn't grasp nested
+       variable expansions will still be able to run Makefiles generated
+       using the silent-rules option.  They won't allow the user to
+       override the make verbosity at runtime through redefinition of
+       $(V) (as in "make V=0"); but this is still an improvement over not
+       being able to work at all.
+
+       * NEWS: Document this.
+       * automake.in (define_verbose_var): When defining the variables,
+       use @AM_V@ rather than $(V), and use @AM_DEFAULT_V@ rather than
+       $(AM_DEFAULT_VERBOSITY).
+       * doc/automake.texi (Automake silent-rules Option): Explain new system.
+       * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports
+       nested variables, and substitute AM_V and AM_DEFAULT_V accordingly.
+       * tests/silent-nested-vars.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-12-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gitignore: use only one .gitignore file, in the top-level directory
+       * doc/.gitignore, doc/amhello/.gitignore, lib/Automake/.gitignore,
+       lib/Automake/tests/.gitignore, tests/.gitignore: Deleted, their
+       contents merged into ...
+       * .gitignore: ... this top-level file.  Since we are at it, improve
+       it by anchoring files where it makes sense.
+
+2011-12-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: one more fixlet for gettext macros requirement
+       * tests/gettext-macros.test (configure.in): Add calls to
+       AC_INIT and AC_PROG_CC, to avoid a spurious failure in the
+       later aclocal invocation.
+       Luckily, this wart wasn't causing any spurious SKIP or FAIL,
+       but only the redundant addition to the `-Wno-syntax' option
+       to some aclocal invocations in the gettext tests.
+
+2011-12-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix handling of gettext macros requirement
+
+       The code introduced in the earlier change `v1.11-581-gb7d67d5'
+       and aimed at automatically fetching all the .m4 files provided by
+       gettext has proven inadequate, since it hasn't managed to truly
+       and always get *all* the required .m4 files.  For example, it has
+       failed to fetch the file `intldir.m4' (present in gettext 0.18.1,
+       and where the macro `AM_GNU_GETTEXT_INTL_SUBDIR' is defined),
+       which in turn has caused spurious SKIPs of at least the test
+       `gettext3.test'.
+
+       The reason for this debacle is that autopoint looks at the version
+       specified in AM_GNU_GETTEXT_VERSION to decide which version of the
+       gettext infrastructure to bring in; since we were unconditionally
+       specifying the older 0.10.35 version, the newer `.m4' files weren't
+       brought in.
+
+       * tests/gettext-macros.test: In AM_GNU_GETTEXT_VERSION, instead
+       of unconditionally specifying the older 0.10.35 version, specify
+       the version of the available `gettextize' or `autopoint' program,
+       dynamically extracted with the help of ...
+       (extract_program_version):... this new function, and saved ...
+       ($autopoint_version): ... in this new variable.
+
+2011-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: automatically handle deps also for generated tests
+       * tests/gen-testsuite-part: The test scripts are now scanned for
+       automatic dependency generation *after* the auto-generated tests
+       have been created, so they too will be scanned.  It is a little
+       tricky to ensure that the freshly-generated tests are correctly
+       scanned, and we do that with the help of ...
+       (@generated_tests): ... this new variable.
+       Other related minor changes and refactorings.
+
+2011-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: auto-generate deps for tests requiring libtool/gettext
+       * tests/gen-testsuite-part: Tests requiring libtool (or related
+       programs) will need libtool-provided m4 macros, so they should
+       be run after `libtool-macros.test'.  Similarly for gettext tests.
+       So, generate proper declarations of such dependencies.
+       * tests/Makefile.am: Remove now-unneeded hand-written declaration
+       of those dependencies.
+
+2011-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove FIXME comments from tricks to pacify syntax checks
+       Originally, I myself had insisted on adding those "FIXME" comments
+       near every unusual construct or use of "creative quoting" whose
+       only purpose was to avoid false positive from out syntax checks.
+       I did that with the expectation that we could have easily and soon
+       added a whitelisting capability to our maintainer-specific syntax
+       checks.  This hasn't been the case unfortunately, and now those
+       "FIXME" in the comments are just distracting noise, making it more
+       difficult to grep the test cases for stuff that could really use a
+       fix or an improvement.  So just get rid of them.
+       * tests/instdir-ltlib.test: Remove that extra "FIXME".
+       * tests/instdir-prog.test: Likewise.
+       * tests/parallel-tests3.test: Likewise.
+       * tests/parallel-tests-dry-run.test: Likewise.
+       * tests/parallel-tests-console-output.test: Likewise.
+       * tests/parallel-tests-no-color-in-log.test: Likewise.
+       * tests/tap-realtime.test: Likewise.
+       * tests/test-trs-recover.test: Likewise.
+       * tests/tap-deps.test: Likewise.
+
+2011-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: few minor fixlets, improvements and tweakings
+       * tests/defs-static.in ($top_testbuilddir): New, for consistency
+       and completeness.
+       * tests/Makefile.am (do_subst): Substitute @abs_top_testbuilddir@
+       as well.
+       * tests/java-compile-run-mested.test: Prefer AM_TESTS_ENVIRONMENT
+       over TESTS_ENVIRONMENT, now that the former has become available.
+       * tests/java-compile-run-flat.test: Correct a botched "FIXME"
+       comment.
+       * tests/tap-realtime.test: Remove extra whitespace in comments.
+       * tests/missing-tar.test: Use `get_shell_script' to bring in the
+       `missing' script, to increase coverage.  Remove redundant call to
+       `set -e'.  Fix a typo in comments.
+       * tests/get-sysconf.test: Remove redundant definitions of
+       `$top_testsrcdir', `testbuilddir' and `$top_testbuilddir'.
+
+2011-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant uses of `set -e'
+       * tests/deleted-am.test: Do not set the `errexit' shell flag, as
+       it is already set by `tests/defs'.
+       * tests/deleted-m4.test: Likewise.
+       * tests/dist-missing-am.test: Likewise.
+       * tests/dist-missing-am.test: Likewise.
+       * tests/dist-missing-m4.test: Likewise.
+       * tests/dist-missing-included-m4.test: Likewise.
+       * tests/get-sysconf.test: Likewise.
+       * tests/makefile-deps.test: Likewise.
+       * tests/remake-m4-pr10111.test: Likewise.
+       * tests/remake-am-pr10111.test: Likewise.
+       * tests/remake-deleted-am.test: Likewise.
+       * tests/remake-deleted-am2.test: Likewise.
+       * tests/remake-deleted-am-subdir.test: Likewise.
+       * tests/remake-renamed-am.test: Likewise.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix failure due to debugging code forgotten into a test
+       * tests/missing-tar.test: Don't ever call the `missing' script
+       with `sh -x'; this was used for debugging, but an instance of
+       it slipped into the committed test case.  Bug revealed by a
+       failure on a Solaris 10 system with GNU tar installed as `gtar'.
+
+2011-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'master' into testsuite-work
+       * tests/gettext-macros.test: In the generated `get.sh' file,
+       use `skip_all_', not `skip_'.
+       * tests/libtool-macros.test: Likewise.
+       * tests/list-of-tests.mk: Update.
+
+2011-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure of libtool and gettext tests
+
+       On Solaris 10 (and presumably earlier), /bin/sh trips up on
+       here-documents that contains a command substitution *and* are
+       fed to a shell function:
+
+         # All as expected.
+         $ cat <<END
+         `pwd`
+         END
+         /home/stefano
+         $ echo status = $?
+         status = 0
+
+         # An apparently innocuous function ...
+         $ kitty () { cat; }
+         # ... but hilarity ensues!
+         $ kitty <<END
+         `pwd`
+         END
+         /tmp/sh137723: cannot open
+         $ echo status = $?
+         status = 1
+
+       We need to work around this misbehaviour in a couple of our
+       tests (whose failures where causing cascading failures in a
+       lot of other tests).
+
+       * tests/gettext-macros.test: Avoid the use of command substitution
+       in a here-document passed to the `indent' function, by using the
+       `echo' builtin instead.
+       * tests/libtool-macros.test: Likewise.
+
+       See also:
+       <http://lists.gnu.org/archive/html/bug-autoconf/2011-12/msg00001.html>
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint' into master.
+       * m4/regex.m4: Bump serial number by some notches, for good
+       measure.  Prefer the deprecation message from maint over that
+       from master.
+       * m4/python.m4: Bump serial number.
+       * tests/Makefile.am (canon6.log): Depend on `libtool-macros.log'.
+       (canon7.log): Likewise.
+       (extradep2.log): Likewise.
+       (ar-lib4.log): Likewise.
+       (ar-lib6a.log): Likewise.
+       (ar-lib6b.log): Likewise.
+       (vartypo2): Likewise.
+       (posixsubst-ltlibraries.log): Likewise.
+       * tests/defs: Adjust the path of the included `get.sh' scripts
+       generated by `libtool-macros.test' and `gettext-macros.test'.
+       * aclocal.m4: Delete, it's auto-generated now.
+       * configure: Likewise.
+       * Makefile.in: Likewise.
+       * doc/Makefile.in: Likewise.
+       * m4/Makefile.in: Likewise.
+       * tests/Makefile.in: Likewise.
+       * lib/Makefile.in: Likewise.
+       * lib/am/Makefile.in: Likewise.
+       * lib/Automake/Makefile.in: Likewise.
+       * lib/Automake/tests/Makefile.in: Likewise.
+       * .gitignore: Correctly ignored the autogenerated files
+       that are not committed anymore.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: distribute it, and mention it in the ChangeLog
+       Not distributing the HACKING file might make it more difficult,
+       for some random curious user, to get informed about or interested
+       in the Automake development process, or to send us patches.
+       * Makefile.am (EXTRA_DIST): Add HACKING.
+       * HACKING: It's OK to distribute this file, and to mention it in
+       the ChangeLog.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       regex: deprecate the obsolete macro AM_WITH_REGEX
+       This is a backport of commit v1.11-433-g37b0aee.
+       Today, practically nobody uses the GNU rx library, which, according
+       to its own website <http://www.gnu.org/software/rx/rx.html>, has
+       been "decommissioned".  Consequently, the automake-provided macro
+       AM_WITH_REGEX is not used nor required anymore.  Deprecate it, so
+       that it will be possible to safely remove it in the next major
+       automake version.
+       * m4/regex.m4 (AM_WITH_REGEX): Give a warning of the class
+       `obsolete' when this macro is used.
+       * doc/automake.texi (Public Macros): Move description of
+       `AM_WITH_REGEX' from here ...
+       (Obsolete Macros): ... to here, and declare it as obsolete
+       and "to be removed in a future version".
+       * tests/regex-obsolete.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * NEWS: Update.
+       See also:
+       <http://lists.gnu.org/archive/html/automake-patches/2010-11/msg00131.html>
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: distribute .xz tarballs, not .bz2 ones
+       Many GNU packages are moving towards xz-compressed tarballs, so
+       let's follow suit, by dropping the creation and distribution of
+       a bzip2-compressed tarball and switching to xz instead.
+       For compatibility and safeness, we will continue to create and
+       distribute a gzip-compressed tarball as well.
+       * configure.ac (AM_INIT_AUTOMAKE): Drop `dist-bzip2', add
+       `dist-xz'.
+       * NEWS: Update
+       Suggested by Jim Meyering.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       include: avoid "deleted .am file" problem
+       * automake.in (handle_configure): When processing `configure.am',
+       also expand `HAVE-MAKEFILE-IN-DEPS' to a boolean telling whether
+       `MAKEFILE-IN-DEPS' is empty or not.
+       * lib/am/configure.am [?HAVE-MAKEFILE-IN-DEPS?]
+       (%MAKEFILE-IN-DEPS%): New target without dependencies, to
+       avoid the "deleted .am file" problem.  Emit this only when
+       `?HAVE-MAKEFILE-IN-DEPS?' is true, to avoid generating an
+       "empty" dependency declaration.
+       * tests/deleted-am.test: Make grepping of error message stricter.
+       * tests/dist-missing-am.test: Likewise.
+       * tests/remake-deleted-am.test: New test.
+       * tests/remake-deleted-am-2.test: Likewise.
+       * tests/remake-deleted-am-subdir.test: Likewise.
+       * tests/remake-renamed-am.test: Likewise.
+       * tests/makefile-deps.test: Likewise.
+       * tests/Makefile.am (TESTS): Add the new tests.
+       * NEWS: Update.
+       Fixes automake bug#9768.
+       Report by Peter Johansson.
+       See also commit `Release-1-10-40-gd0ebf71', which fixed a similar
+       problem for .m4 files included by configure.ac.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: better use of autoconf 2.68 features
+       * configure.ac: Now that Automake requires autoconf 2.68 for its
+       own bootstrapping and build system, we can assume that PACKAGE_URL
+       gets automatically AC_SUBT'd.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: use proper m4 quoting in configure.ac
+       * configure.ac (AC_CONFIG_SRCDIR): Use proper m4 quoting
+       for its arguments.
+       (AC_CONFIG_AUX_DIR): Likewise.
+       (AC_PROG_PATH): Likewise.
+
+2011-12-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: better handling of gettext and libtool requirements
+
+       This change fixes automake bug#9807.
+
+       Before this change, the automake testsuite only looked for the
+       `.m4' files containing libtool and gettext macros definitions in
+       the directory `${prefix}/share/aclocal' (and in the directories
+       specified by the `dirlist' file in there, if any), where ${prefix}
+       was the configure-time automake installation prefix (defaulting
+       to `/usr/local').
+
+       This approach had various shortcomings and disadvantages.  Let's
+       briefly describe the three major ones.
+
+       First, on most GNU/Linux systems, a libtool or gettext installed
+       from distro-provided packages (e.g., by dpkg on Debian/Ubuntu, or
+       by rmp on RedHat/Fedora) would have `/usr', not `/usr/local', as
+       its ${prefix}; so, trying to run the automake testsuite with a
+       simple "./configure && make && make check" would have failed to
+       execute the libtool and gettext tests on most GNU/Linux distros.
+       It's true that it was quite easy to work around this issue, by
+       creating a proper `/usr/local/share/aclocal/dirlist' file with
+       an entry pointing to `/usr/share/aclocal' (a workaround in fact
+       used by most automake developers); but the typical user wasn't
+       aware of the necessity of this trick, so the libtool and gettext
+       tests was usually skipped on testsuite runs "in the wild", thus
+       needlessly reducing coverage.
+
+       Second, the older testsuite behaviour made more difficult for
+       the developers to run the testsuite with non-default libtool or
+       gettext.  For example, assume the developer is working on a system
+       that has a default libtool version 1.5 installed in the /usr/local
+       hierarchy; to improve coverage, the developer installs also a more
+       modern libtool version, say 2.4, in its home directory, let's say
+       in ~/libtool-2.4; he then tries to run the automake testsuite with
+       this more modern libtool by doing an (apparently) simple:
+         $ PATH=$HOME/libtool-2.4:$PATH make check
+       But the automake testsuite would still look for libtool macros in
+       /usr/local/share/aclocal, not in ~/libtool-2.4/share/aclocal, so
+       the wrong version of the macros would be picked up, and the tests
+       would either fail spuriously or (which would be worse) pass without
+       truly covering the libtool version the developers was thinking to
+       be testing with.
+       Worse again, the automake testsuite would *unconditionally* look
+       for libtool macros in /usr/local/share/aclocal, so even something
+       like:
+         $ export ACLOCAL_PATH=$HOME/libtool-2.4/share/aclocal
+         $ PATH=$HOME/libtool-2.4:$PATH make check
+       wouldn't work.
+
+       Third and last, during a "make distcheck", automake is configured
+       with a ${prefix} pointing to a proper subdirectory of the build
+       directory (usually `pwd`/_inst), which gets created on-the-fly;
+       in this case, with the old approach, the automake testsuite never
+       found the libtool and gettext macro files, ans so the libtool and
+       gettext tests was *always* skipped in a "make distcheck".
+
+       * tests/libtool-macros.test: New helper test, looking (with the
+       help of the `libtoolize' script) for libtool macro files required
+       by most libtool tests, and making them easily accessible.
+       * tests/gettext-macros.test: New helper test, looking (with the
+       help of the `libtoolize' script) for libtool macro files required
+       by most libtool tests, and making them easily accessible.
+       * tests/defs.in: Update to make it rely on the results and setups
+       of `libtool-macros.test' and `gettext-macros.test'.
+       * tests/Makefile.am: Declare dependency of all the logs of libtool
+       tests from `libtool-macros.log', and all the logs of gettext tests
+       from `gettext-macros.log'.
+       (TESTS): Add the new tests.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fix: typos and grammaros in comments of the new test
+       * tests/get-sysconf.test: Fix few typos, grammaros and botched
+       wording.  Reported by Eric Blake.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: report useful system information in 'test-suite.log'
+       It has already happened various times that a user has run the
+       automake testsuite, experienced a failure, read the messages
+       telling him "See tests/test-suite.log" and "Please report to
+       bug-automake@gnu.org", and done exactly that -- sending us only
+       the contents of `tests/test-suite.log', which are usually not
+       enough to start debugging the reported failure.  So we have to
+       ask him for more details, and usually also for the `config.log'
+       file generated by configure.  It's time to fix this recurring
+       feedback inefficiency.  We do so by creating a dummy test case
+       that takes care of copying the contents of `config.log', plus
+       other useful system information, in the final `test-suite.log'.
+       * tests/get-sysconf.test: New test, gathering system information
+       and then always terminating with a SKIP, so that its output gets
+       copied in `test-suite.log'.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-12-07  Reuben Thomas  <rrt@sc3d.org>  (tiny change)
+
+       python: remove relics for Python 1.5 support
+       * m4/python.m4: The comments in here claim to support only
+       Python >= 2.0, yet this file still has specific support for
+       Python 1.5.  Just remove it, python 1.5 is 12 years old now,
+       and practically defunct.
+       * NEWS: Update.
+       See also commit `Release-1-10-205-gd5bec12', "Support for
+       Python 3.0, drop support for pre-2.0."
+
+2011-12-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       configure: remove extraneous 'eval's from AM_RUN_LOG invocations
+       * configure.ac: Remove extra 'eval's from AM_RUN_LOG invocations;
+       for example, instead of "AM_RUN_LOG([eval $PERL --version])",
+       simply use "AM_RUN_LOG([$PERL --version])"
+
+2011-12-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       configure: report TeX version in config.log
+       * configure.ac: If possible, report the version of the selected
+       TeX program; this should render the logs more informative.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: snapshots from `maint' are still development snapshots
+       The maintenance-oriented development line in the `maint' branch,
+       while being usually pretty stable and 99% backward-compatible,
+       is not always right off production-quality; but until now, the
+       Automake package version declared in configure.ac hid this fact,
+       since it appeared to be the version of a stable release (e.g.,
+       11.1).  Fix this.
+       * configure.ac (AC_INIT): Bump version to "1.11.0a".
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       configure: print proper message for test releases
+       * configure.ac: If the current release is detected to be a test
+       release or a development snapshot, print a proper warning for
+       the user.
+       * README-alpha: Delete, it's obsolete now (and in fact this file
+       hasn't been touched in eleven years, since release 1.4b or so).
+       * HACKING (Release procedure): Don't say to update README-alpha.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       devel: help in comparing Makefile.in from different commits
+       Now that the generated Makefile.in, configure and aclocal.m4 files
+       are no longer committed in Automake's git repository, a simple
+       "git diff" or "git log" no longer shows if and how a change in
+       Automake results in changes to the Makefile.in files and/or
+       configure script of its own build system.  Still, the ability to
+       peek so easily at such differences has proved itself quite useful
+       in the past, often revealing inconsistencies and blunders, and
+       sometimes even bugs; so it would be a pity to lose that altogether.
+       With this change, we add a new maintainer recipe that re-introduces
+       much of that capability, by generating and comparing on the fly the
+       Makefile.in, configure and aclocal.m4 derived from two arbitrary
+       commits of the Automake repository.
+       * Makefile.am (autodiffs, compare-autodiffs): New phony targets.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       repo: don't commit generated files in the git repository anymore
+       It has been quite some time since autoconf and libtool have stopped
+       committing the generated autotools files in their git repositories,
+       with no significant ill effects we're aware of.  It's true that the
+       autoconf bootstrap process has now the minor annoyance that a
+       pre-installed autoconf is required to complete it; but luckily
+       automake will not have a similar annoyance, since our bootstrap
+       script take care, through some hoops, to use the very automake and
+       aclocal versions from the current git checkout to generate the
+       required aclocal.m4 and Makefile.in files.  In fact, this has been
+       a necessity also in the past, because automake has been known to
+       use in its own build system new development features that hadn't
+       been present in any previously released automake distribution.
+       * .gitignore: Ignore configure, aclocal.m4, and all the
+       Makefile.in files.
+       * configure.ac (AC_PREREQ): New macro call, to require the
+       latest autoconf (2.68 for the moment).
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       missing: don't try to re-run tar with a munged command line
+       * lib/missing: If the default `tar' program fails with the given
+       arguments, and GNU tar is not available, don't try to re-run the
+       default `tar' with a munged command line (e.g., ditching possibly
+       unportable options), as that could be subtly alter the intended
+       semantics (and maybe even create a somewhat corrupted tarball).
+       Also, it's worth noting that the main purpose of the `missing'
+       script is to allow a non-developer to build the package in the
+       face of slightly-skewed timestamps, not to provide wrappers for
+       all the maintainer tools -- so we don't have to try too hard
+       when `missing' is just called to wrap `tar'.
+       * tests/missing-tar.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       missing: inform the user if GNU tar is called
+       * lib/missing: If the code trying to run GNU tar is reached, it
+       means that the previous attempt to run the default tar program
+       has failed, very likely producing some error message.  At this
+       point, just running GNU tar without further comments might be
+       confusing.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       missing: if GNU tar exists but fails when called, give up
+       * lib/missing: If the code trying to run GNU tar is reached,
+       don't continue if the invoked GNU tar program fails, as there
+       is little point in doing so (and can even be confusing and
+       counter-productive).
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       missing: miscellaneous fixlets
+       * lib/missing: Some shells, such as Solaris or FreeBSD /bin/sh,
+       warn about missing programs before performing redirections.
+       Therefore, where we have to silently check whether a program
+       exists, perform redirections on a subshell.
+       Remove redundant uses of double-quotes in variable definitions.
+       Delete an extra blank line.
+
+2011-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: remove executable bit from automake.in
+       * automake.in: This file is not meant to be executed, only to
+       be preprocessed to create the `automake' script; so don't leave
+       it executable.
+
+2011-12-20  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: fix spurious failure on systems lacking unistd.h
+       This is for automake bug#10324.
+       * tests/silent-lex-generic.test (foo.l): Add a dummy #define of
+       YY_NO_UNISTD_H, so that the generated foo.c file won't require
+       unistd.h to be present (it is not present when compiling with,
+       e.g., MSVC 9).
+
+2011-12-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure on MSYS/MinGW and Cygwin
+       * tests/primary-prefix-couples-force-valid.test (Makefile.am):
+       Correctly append $(EXEEXT) to the path of built binaries.
+
+2011-12-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: hack to support autoconf-wrapper programs
+       * tests/defs-static.in ($AUTOCONF): Add a dummy `-B' option to the
+       autoconf invocation, so that, when the Debian autoconf wrapper is
+       involved, it will correctly dispatch an autoconf >= 2.50 instead of
+       defaulting to autoconf 2.13.
+       ($AUTOHEADER, $AUTORECONF): Likewise, but for autoheader and
+       autoreconf respectively.
+       Reported by Bruno Haible:
+       <http://lists.gnu.org/archive/html/automake/2011-12/msg00039.html>
+
+2011-12-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix a minor spurious failure with FreeBSD make
+       * tests/remake-am-pr10111.test: Avoid using `#' comments in
+       makefile recipes, as these have been confusing FreeBSD make.
+       The failure was masked by the fact that this test is currently
+       expected to fail.
+       Suggested by a report from Bruno Haible.
+
+2011-12-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: make two test scripts executable
+       * tests/remake-am-pr10111.test: Make executable.
+       * tests/remake-m4-pr10111.test: Likewise.
+
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc/lex tests: remove an unneeded workaround for bug#8485
+
+       * tests/yacc-d-cxx.test: Remove the workaround previously required
+       to avoid spurious failures due to automake bug#8485: that bug has
+       been solved with commit `v1.11-512-g40c3432'.
+
+2011-12-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc/lex tests: avoid too much failures with FreeBSD make
+
+       In various Yacc/Lex tests, we used to run "make distcheck" commands
+       whose value was mostly dubious, and, even when it was there, was
+       very, very little.  The presence of these extra distchecks had two
+       disadvantages: it slowed down our already-too-slow testsuite even
+       more, and, much worse, caused a lot of extra failures with FreeBSD,
+       all due to automake bug#7884, which is already exposed by the test
+       case `yacc-dist-nobuild.test'.
+
+       We can improve this situation by simply removing "make distcheck"
+       calls from a few testcases, or making them conditional to the use
+       of GNU make.
+
+       * tests/lex-clean-cxx.test: Do not call "make distcheck".
+       * tests/lex-clean.test: Likewise.
+       * tests/yacc-clean-cxx.test: Likewise.
+       * tests/yacc-clean.test: Likewise.
+       * tests/yflags-force-override.test: Likewise.
+       * tests/yacc-nodist.test: Only run "make distcheck" if make
+       is GNU make.
+
+2011-12-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'maint' into 'yacc-work'
+       * tests/silent-lex.test: Provide a dummy `yywrap()' function, to
+       avoid link errors on systems that doesn't provide a "lex library".
+       See also commit `v1.11-546-gca0ba5d'.
+
+2011-12-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       readme: reference webpages for automake mailing lists
+       * README: Rationalize and reorganize the (brief) description of
+       the automake mailing lists.   In particular, instead of suggesting
+       the reader to write to the `-request' addresses to subscribe to
+       mailing lists, point him to the relevant webpages, where he can
+       also subscribe via a web form.
+
+2011-12-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       readme: update advice about testsuite execution
+       * README: Now that the automake testsuite uses the parallel-tests
+       driver, there is no need for the user to capture the stdout of
+       "make check" to determine which tests have failed: a detailed log
+       is automatically saved into the `tests/test-suite.log' file.
+       Since we are at it, improve the wording by dropping an extra
+       "please".
+
+2011-12-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       readme: don't reference the old homepage at sources.redhat.com
+       * README: Don't reference the old homepage at sources.redhat.com,
+       which is no longer active; reference the homepage on www.gnu.org
+       instead.  See also automake bug#10157 and bug#10248.
+       * tests/README: Likewise, and remove related extra-pedantic advice
+       about copyright papers for test cases (we'll ask for those papers
+       explicitly when we think they are warranted).
+
+2011-12-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: some more fixlets
+       * HACKING (Release Procedure): Place the list of pre-release
+       bootstrap-and-test commands on a line of its own, so it's easy to
+       select and then paste it into a terminal window.
+       Fix the explanation of "make git-release", as, since the previous
+       change, "make git-release" would simply run "make dist" rather
+       than "make distcheck".
+       Suggestion from Jim Meyering.
+
+2011-12-12  Peter Rosin  <peda@lysator.liu.se>
+
+       * NEWS: Fix typo in 'make dist-bzip2' description.
+
+2011-12-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       release: don't run "make distcheck" automatically
+       * Makefile.am (git-dist): The developers should test extensively
+       before finally creating the release tarball; so don't run "make
+       distcheck" on their behalf here; instead ...
+       * HACKING (Release procedure): ... state here that "make check"
+       and "make distcheck" should be run before calling "make git-dist".
+
+2011-12-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in 'color2.test'
+       * tests/color2.test: (expect-make): Add an "expect eof" directive,
+       so that the collected output from the spawned make program will be
+       displayed on stdout, as desired.
+       Since we are at it, also correctly remove a temporary file which
+       we was trying to delete using a wrong filename.
+       Problem introduced in merge `v1.11-1579-g8d3466c', probably by a
+       botched edit or conflict resolution.
+
+2011-12-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in 'lex3.test'
+       * tests/lex3.test (foo.l): Remove duplicated definition of
+       `yywrap'.  Problem introduced in merge `v1.11-1579-g8d3466c'.
+
+2011-12-09  Jim Meyering  <meyering@redhat.com>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist-xz, dist-bzip2: don't hard-code -9, honor envvar settings
+       Before the present change, automake-generated `dist-xz' rule used
+       a hard-coded `xz -9'.  That was a problem because on this front,
+       xz differs from gzip and bzip2.  While the latter two don't incur
+       any run-time decompression penalty for using a higher compression
+       level, specifying -9 with xz imposes a potentially fatal virtual
+       memory requirement on any client that wants to decompress your
+       tar.xz file.
+       People have complained that a tarball compressed with -9 cannot
+       be uncompressed in a low-memory environment (wrt-based embedded).
+       Hence, instead of defaulting to -9, which is useful only for very
+       large tarballs, it defaults to -e (equivalent to -6e).  This
+       limits the default memory requirements imposed on decompressors,
+       yet still gives very good compression ratios.
+       * lib/am/distdir.am (dist-xz): Do not hard-code xz's -9: that made
+       it impossible to override.  Actually don't default to -9, either,
+       since that induced inordinately large virtual memory usage when
+       merely decompressing.  Instead, use its XZ_OPT envvar, defaulting
+       to -e if not defined.  Suggested by Lasse Collin.
+       (dist-bzip2): Similarly, do not hard-code -9, but do continue to
+       use -9 by default.  Honor the BZIP2 envvar.
+       * NEWS: Update.
+       * doc/automake.texi (The Types of Distributions): Describe the
+       newly enabled environment variables.
+
+2011-12-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * NEWS: Fix typos, grammaros and suboptimal wording.
+       Reported by Jim Meyering.
+
+2011-12-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint: sync auxiliary files from upstream
+       * lib/texinfo.tex: Synced from upstream, by "make fetch".
+       * lib/config.guess: Likewise.
+       * lib/config.sub: Likewise.
+
+2011-12-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures due to missing 'yywrap()' function
+
+       The AC_PROG_LEX Autoconf macro does not diagnose a failure to find
+       the "lex library" expected to provide a `yywrap' function (function
+       which is required to link most lex-generated programs).  On the
+       contrary, when all the link attempts (i.e., with `-ll' and `-lfl')
+       fail, configure declares that no lex library is needed, and simply
+       proceeds with the configuration process -- only for the build to
+       possibly fail later, at make time.
+
+       This behaviour is intended; the Autoconf manual reads:
+        ``You are encouraged to use Flex in your sources, since it is
+          both more pleasant to use than plain Lex and the C source it
+          produces is portable.  In order to ensure portability, however,
+          you must either provide a function `yywrap' or, if you don't use
+          it (e.g., your scanner has no `#include'-like feature), simply
+          include a `%noyywrap' statement in the scanner's source.''
+
+       This AC_PROG_LEX behaviour is causing some spurious failures of
+       the Automake testsuite in environments which lack a proper library
+       providing `yywrap' (this happens for example on Fedora-based
+       systems).   The proper workaround is to simply provide a fall-back
+       implementation of `yywrap' in our lexers.
+
+       See also partially-overlapping commit `v1.11-871-geb147a1' (from
+       the 'testsuite-work' branch), which was motivated by similar
+       spurious failures experienced when cross-compiling.
+
+       From a report by Jim Meyering:
+       <http://lists.gnu.org/archive/html/automake-patches/2011-10/msg00092.html>
+
+       * tests/cond35.test: Provide a dummy `yywrap' function.
+       * tests/lex3.test: Likewise.
+       * tests/silent-lex-generic.test: Likewise.
+       * tests/silent-lex-gcc.test: Likewise.
+       * tests/silent-many-generic.test: Likewise.
+       * tests/silent-many-gcc.test: Likewise.
+
+2011-12-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       depcomp: spelling fix
+       * lib/depcomp (-h): Fix misspelling in usage diagnostic.
+
+2011-11-28  Peter Rosin  <peda@lysator.liu.se>
+
+       tests: fix 'distcheck-override-infodir.test' on Cygwin
+       * tests/distcheck-override-infodir.test (Makefile.am): Do not add
+       any `/' between $(DESTDIR) and the following paths.  Otherwise,
+       when $(DESTDIR) is empty, the recipes will try to access files
+       with a leading double slash, which have an implementation-defined
+       interpretation (e.g., for Cygwin, they mean UNC paths).
+
+2011-11-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: typofix in comments
+       * tests/remake-am-pr10111.test (Makefile.am): Fix typo in comments.
+       * THANKS: Update.
+       Reported by Krzysztof Żelechowski.
+
+2011-11-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: undistributed '.am' and '.m4' files are diagnosed
+       The stub rules emitted to work around the "deleted header problem"
+       for `.m4' files (included by autoconf in e.g., configure.ac) and
+       for `.am' files (included by automake in e.g., Makefile.am) should
+       not prevent "make" from correctly complaining when such a required
+       file is missing from a distribution tarball.
+       * tests/dist-missing-am.test: New test.
+       * tests/dist-missing-m4.test: Likewise.
+       * tests/dist-missing-included-m4.test: Likewise.
+       * tests/Makefile.am (TESTS): Add them.
+       Suggestion by Ralf Wildenhues.
+
+2011-11-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: required but missing '.am' and '.m4' files are diagnosed
+       The stub rules emitted to work around the "deleted header problem"
+       for `.m4' files (included by autoconf in e.g., configure.ac) and
+       for `.am' files (included by automake in e.g., Makefile.am) should
+       not prevent the remake rules from correctly erroring out when a
+       still-required file is missing.
+       * tests/deleted-am.test: New test.
+       * tests/deleted-m4.test: Likewise.
+       * tests/Makefile.am (TESTS): Add them.
+
+2011-11-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: expose automake bug#10111 in the testsuite
+       * tests/remake-am-pr10111.test: New test, xfailing.
+       * tests/remake-m4-pr10111.test: Likewise.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Add them.
+
+2011-11-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       texinfo: work around Solaris 10 xpg4 shell bug in install rules
+       * lib/am/texinfos.am (install-html-am): Use an extra variable
+       indirection to work around a bug in Solaris 10 /usr/xpg4/bin/sh.
+       Bug revealed by a failure of `txinfo21.test'.  See also:
+       <http://lists.gnu.org/archive/html/bug-autoconf/2011-11/msg00005.html>
+       <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10026#23>
+
+2011-11-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       configure: report perl version in config.log
+       * configure.ac: Report the version of the selected perl interpreter
+       in config.log; this should render the logs more informative.
+
+2011-11-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with older install-info
+       * tests/install-info-dir.test (foo.texi): Also add proper
+       `@settitle', `@dircategory' and `@direntry' directive, otherwise
+       older versions of `install-info' (e.g., 4.8) will fail to create
+       the `dir' index file in ${infodir}.
+       Problem revealed by a failure on NetBSD 5.1.
+
+2011-11-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix spurious failure in 'color2.test'
+       * tests/color2.test: Avoid creative quoting to avoid a spurious
+       failure of the `sc_tests_Exit_not_exit' maintainer check.
+
+2011-11-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious error in 'uninstall-fail.test' on Solaris
+       * tests/uninstall-fail.test: Solaris 10 /usr/xpg4/bin/sh can add
+       a line number before the `:' in the error messages issued by shell
+       builtins.  Account for that in our grepping of make output.
+
+2011-11-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix typo in 'uninstall-fail.test'
+       * tests/uninstall-fail.test: Always use `$rm_f_is_silent_on_error'
+       instead of the bogus `$rm_f_is_silent_on_failure'.
+
+2011-11-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/install-sh: Spelling fix in comment.
+
+2011-11-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid a spurious failure of 'ltinit.test' MinGW
+       * tests/ltinit.test: Be laxer in grepping configure output, to
+       avoid spurious failures on systems which lack POSIX dynamic
+       linking (e.g., MinGW), or when cross-compiling for such systems.
+       See also commit `v1.11-855-ge9e5d4a'.
+       Report and suggestion from Peter Rosin.
+
+2011-11-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: testsuite is now safe to run with dmake in parallel mode
+       * tests/defs.in: Unset variables DMAKE_CHILD, DMAKE_DEF_PRINTED
+       and DMAKE_MAX_JOBS, which are exported by Solaris dmake when run
+       in parallel mode, and which might confuse make processes spawned
+       by our testsuite.
+
+2011-11-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures w.r.t. parallel make and colorization
+       * tests/color2.test: Skip the test if the $MAKE program fails to
+       consider the standard output as a tty when spawned by `expect'.
+       This is required for make implementations, like FreeBSD make and
+       Solaris dmake, that redirect the output of recipes to temporary
+       files or pipes when run in parallel mode.  Since we are at it,
+       simplify the detection of a working `expect' program, and throw
+       in other minor simplifications.
+
+2011-11-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in 'distcheck-override-infodir.test'
+       * tests/distcheck-override-infodir.test ($required): Add
+       'install-info'.
+
+2011-11-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid another failure of 'uninstall-fail.test' on Solaris
+       * tests/uninstall-fail.test: On Solaris 10, if `/bin/rm' is run
+       with the `-f' option, it doesn't print any error message when
+       failing to remove a file (due to e.g., "Permission denied").
+       Yikes.  Cater to this incompatibility, by relaxing the test when
+       a faulty `rm' is detected.
+
+2011-11-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: various minor tweakings, mostly related to AM_PROG_AR
+       * tests/alloca2.test: Ensure we don't experience a spurious failure
+       due to a missing `AM_PROG_AR' macro or a missing `ar-lib' auxiliary
+       script.
+       * tests/libtool4.test: Likewise.
+       * tests/ldadd.test: Likewise.  Since we are at it, make grepping of
+       automake stderr stricter.
+       * tests/reqd2.test: Likewise.
+       * tests/pr211.test: Ensure automake fails also with `-Wnone', since
+       the error we are testing for is an hard error, not a mere warning.
+       * tests/syntax.test: Likewise, and ensure we don't fail to other
+       errors by removing use of `lib_LTLIBRARIES' in Makefile.am.  Since
+       we are at it, make grepping of automake stderr stricter.
+
+2011-11-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       ar-lib: fix configure output for "unrecognized archiver interface"
+       * m4/ar-lib.m4: Ensure that, even when an error is hit while trying
+       to determine the archiver interface kind, the "checking archiver
+       interface" message from configure is properly terminated before
+       an error message is printed, to avoid slightly garbled output.
+       * tests/ar4.test: Enhance.
+       * tests/ar5.test: Likewise.
+
+2011-11-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       warnings: fix buglets for portability warnings
+       * lib/Automake/ChannelDefs.pm (switch_warning): Ensure the
+       correct implications and inter-dependencies between warnings
+       in the categories `portability', `extra-portability' and
+       `recursive-portability' are respected.  Also add detailed
+       explicative comments, and references to the relevant tests.
+       * tests/dollarvar2.test: Update and extend.  Also, remove
+       some unnecessary uses of `--force' option in automake calls.
+       * tests/extra-portability3.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-11-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: extend tests on 'extra-portability' warning category
+       * tests/extra-portability.test: Redefine `$AUTOMAKE' to ensure we
+       have complete control over the automake options.  Extend by using
+       also a setup where no `portability' warning is present (only an
+       `extra-portability' warning is).  Other minor extensions.  Remove
+       some redundant, verbose comments about the expected diagnostic.
+
+2011-11-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: various minor tweakings, mostly related to AM_PROG_AR
+       * tests/alloca.test: Adjust to new portability requirements due
+       to the new AM_PROG_AR macro.
+       * tests/discover.test: Likewise.
+       * tests/libobj3.test: Likewise.
+       * tests/pluseq7.test: Likewise.  Also, make grepping of automake
+       expected error message stricter.
+       * tests/stdlib.test: Likewise, and extend the test a bit.
+       * tests/parse.test (configure.in): Remove redundant call to
+       AC_PROG_RANLIB.
+       * tests/library2.test: Adjust to new portability requirements
+       due to the new AM_PROG_AR macro.  Also ...
+       (configure.in): ... add call to AC_PROG_CC, to ensure automake
+       really fails for the expected reason.
+
+2011-11-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       ar-lib: fix configure output for "unrecognized archiver interface"
+       * m4/ar-lib.m4: Ensure that, even when an error is hit while trying
+       to determine the archiver interface kind, the "checking archiver
+       interface" message from configure is properly terminated before
+       an error message is printed, to avoid slightly garbled output.
+       * tests/ar4.test: Enhance.
+       * tests/ar5.test: Likewise.
+
+2011-11-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more faithful 'installcheck' support in few tests
+       * tests/ar-lib5a.test: Use the `$am_scriptdir' variable instead
+       of "$testsrcdir/../lib" or "$top_testsrcdir/lib", to test more
+       faithfully under "make installcheck".
+       * tests/ar-lib5a.test: Likewise.
+       * tests/libobj-basic.test: Likewise.
+       * tests/libobj19.test: Likewise.
+       * tests/suffix5.test: Likewise.
+
+2011-11-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant settings of `errexit' shell flag
+       * tests/aclocal-path-install-serial.test: Do not set the
+       `errexit' shell flag, as it is already set by `tests/defs'.
+       * tests/ar-lib2.test: Likewise.
+       * tests/ar-lib3.test: Likewise.
+       * tests/ar-lib4.test: Likewise.
+       * tests/ar-lib5a.test: Likewise.
+       * tests/ar-lib5b.test: Likewise.
+       * tests/ar-lib6a.test: Likewise.
+       * tests/ar-lib6b.test: Likewise.
+       * tests/ar-lib7.test: Likewise.
+       * tests/ar3.test: Likewise.
+       * tests/ar4.test: Likewise.
+       * tests/ar5.test: Likewise.
+       * tests/extra-portability.test: Likewise.
+       * tests/extra-portability2.test: Likewise.
+       * tests/extra-portability3.test: Likewise.
+       * tests/install-info-dir.test: Likewise.
+       * tests/maintmode-configure-msg.test: Likewise.
+
+2011-11-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       generated tests: avoid extra "FIXME" comments
+       * tests/gen-testsuite-part: Avoid putting too much "FIXME"
+       comments in the generated test scripts, since they end up
+       being just counter-productive noise when one has to grep
+       the test scripts looking for real "FIXME" items.
+
+2011-09-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix typo in 'prove-runner' script
+       * tests/prove-runner: Remove erroneously-repeated word.
+       * THANKS: Update.
+       Reported by Dave Hart.
+
+2011-11-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'master' into testsuite-work
+       * tests/extra-portability.test: Use `$am_original_AUTOMAKE'
+       instead of the obsolete `$original_AUTOMAKE'.
+       * tests/extra-portability3.test: Likewise.
+       * tests/list-of-tests.mk: Update.
+
+2011-11-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'msvc' into master
+       * tests/extra-portability3.test: Use `$original_AUTOMAKE' instead
+       of hackishly extracting the first component of `$AUTOMAKE'.
+       * tests/extra-portability.test: Likewise.  Also, since we are at
+       it, throw in a couple of small extensions and tweakings (suggested
+       by the minor merge conflicts).
+
+2011-11-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       warnings: fix buglets for portability warnings
+       * lib/Automake/ChannelDefs.pm (switch_warning): Ensure the
+       correct implications and inter-dependencies between warnings
+       in the categories `portability', `extra-portability' and
+       `recursive-portability' are respected.  Also add detailed
+       explicative comments, and references to the relevant tests.
+       * tests/dollarvar2.test: Update and extend.  Also, remove
+       some unnecessary uses of `--force' option in automake calls.
+       * tests/extra-portability3.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-11-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: extend tests on 'extra-portability' warning category
+       * tests/extra-portability.test: Redefine `$AUTOMAKE' to ensure we
+       have complete control over the automake options.  Extend by using
+       also a setup where no `portability' warning is present (only an
+       `extra-portability' warning is).  Other minor extensions.  Remove
+       some redundant, verbose comments about the expected diagnostic.
+
+2011-11-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: new functions to analyze configure help screen
+       * tests/defs (extract_configure_help, grep_configure_help): New
+       functions.
+       * tests/maintmode-configure-msg.test: Use them, reducing code
+       duplication and test brittleness.
+       * tests/help-depend.test: Likewise.
+       * tests/help-depend2.test: Likewise.
+       * tests/help-dmalloc.test: Likewise.
+       * tests/help-lispdir.test: Likewise.
+       * tests/help-multilib.test: Likewise.
+       * tests/help-python.test: Likewise.
+       * tests/help-regex.test: Likewise.
+       * tests/help-silent.test: Likewise.
+       * tests/help-upc.test: Likewise.
+       * tests/help-init.test: Make grepping of configure help screen
+       slightly stricter.
+       * tests/self-check-configure-help.test: New self test.
+       * tests/Makefile.am (TESTS): Add it.
+       From a report by Jim Meyering.
+
+2011-11-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'master' into testsuite-work
+
+       * tests/instspc.tap: Adjust to new portability requirements
+       due to the new AM_PROG_AR macro.
+       * tests/lex-lib.test: Likewise.
+       * tests/extra-portability2.test: Use `$am_original_AUTOMAKE'
+       instead of the obsolete `$original_AUTOMAKE'.
+       * tests/list-of-tests.mk: Update.
+
+2011-11-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: various minor tweakings, mostly related to AM_PROG_AR
+       * tests/alloca.test: Adjust to new portability requirements due
+       to the new AM_PROG_AR macro.
+       * tests/discover.test: Likewise.
+       * tests/libobj3.test: Likewise.
+       * tests/pluseq7.test: Likewise.  Also, make grepping of automake
+       expected error message stricter.
+       * tests/stdlib.test: Likewise, and extend the test a bit.
+       * tests/parse.test (configure.in): Remove redundant call to
+       AC_PROG_RANLIB.
+       * tests/library2.test: Adjust to new portability requirements
+       due to the new AM_PROG_AR macro.  Also ...
+       (configure.in): ... add call to AC_PROG_CC, to ensure automake
+       really fails for the expected reason.
+
+2011-11-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Merge branch 'msvc' into master
+
+       * tests/instspc-tests.sh: Adjust to new portability requirements
+       due to the new AM_PROG_AR macro.
+       * tests/libobj-basic.test: Likewise.
+       * tests/libobj2.test: Likewise.
+       * tests/libobj15a.test: Likewise.
+       * tests/libobj15b.test: Likewise.
+       * tests/libobj15c.test: Likewise.
+       * tests/libobj16a.test: Likewise.
+       * tests/libobj16b.test: Likewise.
+       * tests/libobj17.test: Likewise.
+       * tests/libobj18.test: Likewise.
+       * tests/libobj19.test: Likewise.
+       * tests/libobj20a.test: Likewise.
+       * tests/libobj20b.test: Likewise.
+       * tests/libobj20c.test: Likewise.
+       * tests/canon6.test: Likewise.
+       * tests/canon6.test: Likewise.
+       * tests/canon7.tests: Likewise.
+       * tests/extra9.test: Likewise.
+       * tests/extradep.test: Likewise.
+       * tests/extradep2.test: Likewise.
+       * tests/posixsubst-ldadd.test: Likewise.
+       * tests/posixsubst-libraries.test: Likewise.
+       * tests/posixsubst-ltlibraries.test: Likewise.
+       * tests/python-virtualenv.test: Likewise.
+       * tests/vartypos.test: Likewise.
+       * tests/vartypo2.test: Likewise.
+       * tests/suffix.test: Update to take into account previous
+       master-only changes.
+       * tests/suffix2.test: Likewise.
+       * tests/libobj7.test: Call automake with the `--add-missing'
+       option, instead of creating a dummy `ar-lib' file, since this
+       test now also runs "./configure" and "make".
+       * tests/suffix5.test: Copy the real `ar-lib' script file,
+       instead of creating a dummy one, since this test now also
+       runs "./configure" and "make".
+       * tests/extra-portability2.test: Fix this test not to rely
+       on the older, faulty semantics of "strictness specification
+       always reset warning level", which has been fixed in commit
+       v1.11-623-g1609491 (see also automake bug#7669 a.k.a. PR/547).
+       Since we are at it, throw inf few other minor unrelated
+       improvements.
+       * tests/extra-portability.test: Explicitly pass `-Wall' to
+       automake calls, for clarity.
+
+2011-10-21  Peter Rosin  <peda@lysator.liu.se>
+
+       warnings: new 'extra-portability' category, for AM_PROG_AR
+       * lib/Automake/ChannelDefs.pm: Register new extra-portability
+       warning channel.
+       (switch_warning): Turn off extra-portability if portability is
+       turned off, and turn on portability if extra-portability is
+       turned on.
+       (set_strictness): Silence extra-portability for --gnits, --gnu
+       and --foreign.
+       * tests/extra-portability2.test: New test, checking that the
+       extra-portability channel is silenced by --gnits, --gnu and
+       --foreign.
+       * doc/automake.texi (Invoking Automake): Document the new warning
+       category and its interaction with the portability category.
+       * tests/extra-portability.test: New test, checking the interaction
+       between the portability and extra-portability warning categories.
+       * automake.in (handle_libraries, handle_ltlibraries): Move the
+       AM_PROG_AR warnings to the new extra-portability channel.
+       * tests/ar2.test: Adjust to the new warning channel.
+       * tests/pr300-lib.test: Likewise.
+       * tests/pr300-ltlib.test: Likewise.
+       * tests/pr307.test: Likewise.
+       * tests/pr401.test: Likewise.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+       * tests/pr72.test: Likewise.
+       * NEWS: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-10-21  Peter Rosin  <peda@lysator.liu.se>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Add new 'AM_PROG_AR' macro, triggering the 'ar-lib' script.
+       * m4/ar-lib.m4: New macro AM_PROG_AR, which locates an
+       archiver and triggers the auxiliary 'ar-lib' script if needed.
+       * m4/Makefile.am (dist_m4data_DATA): Update.
+       * automake.in ($seen_ar): New variable.
+       (scan_autoconf_traces): Set it.
+       (handle_libraries, handle_ltlibraries): Require AM_PROG_AR for
+       portability.
+       * doc/automake.texi (Public Macros): Mention the new
+       'AM_PROG_AR' macro.
+       (Subpackages): Add AM_PROG_AR to the example.
+       (A Library): Adjust recommendations for AR given the new
+       AM_PROG_AR macro.
+       * All relevant tests: Adjust to new portability requirements due
+       to the new AM_PROG_AR macro.
+       * tests/ar-lib2.test: New test, checking that AM_PROG_AR triggers
+       install of ar-lib.
+       * tests/ar-lib3.test: New test, checking that lib_LIBRARIES
+       requires AM_PROG_AR.
+       * tests/ar-lib4.test: New test, checking that lib_LTLIBRARIES
+       requires AM_PROG_AR.
+       * tests/ar-lib5a.test: New test, checking that AM_PROG_AR triggers
+       use of ar-lib when the archiver is Microsoft lib.
+       * tests/ar-lib5b.test: New test, checking that AM_PROG_AR triggers
+       use of ar-lib when the archiver is a faked lib.
+       * tests/ar-lib6a.test: New test, checking the ordering of
+       AM_PROG_AR and LT_INIT.
+       * tests/ar-lib6b.test: New test, checking the ordering of
+       AM_PROG_AR and AC_PROG_LIBTOOL.
+       * tests/ar-lib7.test: New test, checking that automake warns
+       if ar-lib is missing.
+       * tests/ar3.test: New test, checking that AR and ARFLAGS may
+       be overridden by the user even if AM_PROG_AR is used.
+       * tests/ar4.test: New test, checking that AM_PROG_AR bails out
+       if it cannot determine the archiver interface.
+       * tests/ar5.test: New test, checking that AM_PROG_AR runs its
+       optional argument if it cannot determine the archiver interface.
+       * tests/defs.in: New required entry 'lib'.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-11-03  Zack Weinberg <zackw@panix.com>  (tiny change)
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maint-mode: fix botched configure messages
+       This change fixes automake bug#9890.
+       * m4/maintainer.m4 (AM_MAINTAINER_MODE): Fix the "checking ..."
+       configure message related to the enabling/disabling of maintainer
+       mode.
+       * tests/help-maintainer.test: Renamed ...
+       * tests/maintmode-configure-msg.test: ... to this, and extended
+       to cover the fixed bug.  Also, since we are at it, make grepping
+       of configure help screens stricter, and throw in some few other
+       changes to reduce code duplication and enhance readability.
+       * tests/Makefile.am (TESTS): Update.
+       * THANKS: Update with Zack's new e-mail address.
+       Report and initial patch by Zack Weinberg, test cases added by
+       Stefano Lattarini.
+
+2011-10-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       info: allow user to inhibit creation/update of '${infodir}/dir'
+       With this change, we allow the user to request the install-info
+       rules not to update the `${infodir}/dir' file, by setting the
+       environment variable `AM_UPDATE_INFO_DIR' to the value "no".
+       This is especially useful to distro packagers, and is a definite
+       improvement over our previous hack of looking whether the
+       `install-info' program was the Debian or GNU version -- hack
+       which had been silently broken with recent versions of debian
+       install-info BTW (probably since dpkg 1.15.4, 2009-09-06).
+       This change fixes automake bug#9773.  See also Debian Bug#543992.
+       * lib/am/texinfos.am: Don't look anymore at the output of
+       `install-info --version' to decide whether to use it to update
+       the `${infodir}/dir' or not; instead, honour the environment
+       variable `AM_UPDATE_INFO_DIR'.
+       * tests/install-info-dir.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * tests/defs: Also unset `AM_UPDATE_INFO_DIR', to avoid unwanted
+       interferences from the environment.
+       * doc/automake.texi (Texinfo): Update.
+       * NEWS: Likewise.
+       * THANKS: Likewise.
+       Report by Jonathan Nieder.
+
+2011-10-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: new function 'am_keeping_testdirs', for better APIs
+
+       This change is meant to make it easier for TAP-based test scripts
+       to remove files left over by completed (sub)tests, while still
+       honoring the user-provided `$keep_testdirs' setting.
+
+       * tests/defs (am_keeping_testdirs): New function, telling whether
+       we should keep the test directories around, even in case of
+       success (by default, we don't).
+       (exit trap): Use it.
+       * tests/depmod.tap: Likewise.
+       * tests/instspc.tap: Likewise.  Also, fix some pre-existing
+       "copy & paste" bugs, and a typo in comments.
+
+2011-10-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant `set -e', and other minor improvements
+       * tests/dejagnu-absolute-builddir.test: Do not set the `errexit'
+       shell flag, as it is already set by `tests/defs'.
+       * tests/dejagnu-relative-srcdir.test: Likewise.
+       * tests/dejagnu-siteexp-append.test: Likewise.
+       * tests/dejagnu-siteexp-useredit.test: Likewise, and fix a typo
+       in comments.
+       * tests/dejagnu-siteexp-extend.test: Likewise, and prefer the
+       use of `$distdir' over hard-coded `$me-1.0'.  Also ...
+       (write_check_for): ... use `unindent' when writing from an
+       here-doc, for better code indentation.
+
+2011-10-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       deps: partially revert commit `v1.11-512-geeee551'
+       This change partly reverts commit "Create subdirs for generated
+       sources even when not dep tracking", of 2011-04-02.
+       That commit had caused the bugs #8485 and #8526.  Since we are
+       nearing the bug-fixing automake release 1.11.2, the safest policy
+       at the moment is to just revert the problematic hunks: an older,
+       known bug is better than a regression.
+       * automake.in (handle_single_transform): Don't add a dirstamp
+       dependency, even when $object is derived and lands in a subdir.
+       * tests/Makefile.am (XFAIL_TESTS): Add lex-subobj-nodep.test,
+       remove yacc-dist-nobuild-subdir.test.
+
+2011-10-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: few improvements to some `ar-lib' related tests
+
+       * tests/ar-lib5a.test (Makefile.am): Also check that the target
+       library has truly been created.
+       (ar-lib): Use the real `ar-lib' script (mildly patched) rather
+       than a dummy one, to ensure better "real-life coverage".  Fix
+       botched shebang line.
+       * tests/ar-lib5b.test: Extend the PATH variable to make the dummy
+       `lib' script accessible, instead of explicitly calling it by its
+       relative/absolute path.
+       (ar-lib): Fix botched shebang line.
+       (bin/lib): Likewise.  Also, add explicative comments, and make
+       slightly stricter.
+
+2011-10-24  Peter Rosin  <peda@lysator.liu.se>
+
+       Merge branch 'maint' into msvc
+
+       * tests/subpkg-yacc.test: Adjust to new portability requirements due
+       to the new AM_PROG_AR macro.
+
+2011-10-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dejagnu: allow the package developer to extend site.exp
+       Fixes automake bug#7873.
+       * lib/am/dejagnu.am (site.exp): Depend from the files listed in
+       $(EXTRA_DEJAGNU_SITE_CONFIG), if any.  Append their contents to
+       the generated site.exp (still preserving user edits).
+       * doc/automake.texi (Dejagnu Tests): Update.
+       * tests/dejagnu-siteexp-append.test: New test.
+       * tests/dejagnu-siteexp-extend.test: Likewise.
+       * tests/dejagnu-siteexp-useredit.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+       Suggestion by Rainer Orth.
+
+2011-10-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dejagnu: ensure 'srcdir' is defined as a relative directory
+       This change fixes automake bug#7833.
+       * lib/am/dejagnu.am (check-DEJAGNU): Prefer using plain $(srcdir)
+       over calculating and using the absolute path of $(srcdir).
+       * tests/dejagnu-relative-srcdir.test: New test.
+       * tests/dejagnu-absolute-builddir.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+       Report by Ian Lance Taylor.  Suggestions by Ralf Wildenhues.
+
+2010-12-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix testsuite failure of check12.test without DejaGNU.
+       * tests/check12.test: Require runtest.
+
+2010-12-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Extend and improve tests on DejaGnu support.
+       * tests/dejagnu.test: Do not create useless dummy test script.
+       Add trailing `:' command.  In heading comments, add reference
+       to ...
+       * tests/check12.test: ... this new "semantic" test, covering
+       concurrent use of dejagnu tests, simple tests and `check-local'
+       target.
+       * tests/dejagnu2.test: Make test more reliable, by avoid weak
+       grepping of make output.  Prefer `cat' over `echo' to append
+       to configure.in.  Quote literal dots in grep regexps.  Prefer
+       `grep -c ...' over `grep ... | wc -l'.  Make grepping of
+       automake stderr slightly stricter.  Add trailing `:' command.
+       * tests/dejagnu3.test: Prefer `cat' over `echo' to append to
+       configure.in.  Check stderr of expected-to-fail "make" call.
+       Remove extra blank lines from Makefile.am.
+       * tests/dejagnu4.test: Prefer `cat' over `echo' to append to
+       configure.in.  Prefer `mv -f' over plain `mv' when the target
+       file already exists.  Avoid extra mkdir calls by creating more
+       directories at once.  Better use of blank lines.  Check that
+       the `*.log' and `*.sum' files are created by runtest also when
+       "make check" fails.
+       * tests/dejagnu7.test: Prefer `cat' over `echo' to append to
+       configure.in.  Better use of blank lines.  Add a trailing `:'
+       command.
+       * tests/dejagnu6.test: Likewise, and give the dejagnu test a
+       more descriptive name.
+       * tests/dejagnu5.test: Likewise.  Also, simply define package
+       name to `$me' rather than using a non-obvious sed script to
+       extract it from `AC_INIT', and write the Makefile.am with only
+       one command.
+       * tests/Makefile.am (TESTS): Updated.
+
+2011-10-21  Peter Rosin  <peda@lysator.liu.se>
+
+       * THANKS: Fix whitespace issue.
+
+2011-10-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures due to missing 'yywrap()' function
+
+       The AC_PROG_LEX Autoconf macro does not diagnose a failure to find
+       the "lex library" expected to provide a `yywrap' function (function
+       which is required to link most lex-generated programs).  On the
+       contrary, when all the link attempts (i.e., with `-ll' and `-lfl')
+       fail, configure declares that no lex library is needed, and simply
+       proceeds with the configuration process -- only for the build to
+       possibly fail later, at make time.
+
+       This behaviour is intended; the Autoconf manual reads:
+        ``You are encouraged to use Flex in your sources, since it is
+          both more pleasant to use than plain Lex and the C source it
+          produces is portable.  In order to ensure portability, however,
+          you must either provide a function `yywrap' or, if you don't use
+          it (e.g., your scanner has no `#include'-like feature), simply
+          include a `%noyywrap' statement in the scanner's source.''
+
+       This AC_PROG_LEX behaviour is causing some spurious failures of
+       the Automake testsuite in environments which lack a proper library
+       providing `yywrap' (this happens for example on Fedora-based
+       systems).   The proper workaround is to simply provide a fall-back
+       implementation of `yywrap' in our lexers.
+
+       See also partially-overlapping commit `v1.11-871-geb147a1' (from
+       the 'testsuite-work' branch), which was motivated by similar
+       spurious failures experienced when cross-compiling.
+
+       Reported by Jim Meyering:
+       <http://lists.gnu.org/archive/html/automake-patches/2011-10/msg00092.html>
+
+       * tests/cond35.test: Provide a dummy `yywrap' function.
+       * tests/lex3.test: Likewise.
+       * tests/lexvpath.test: Likewise.
+       * tests/silent-lex-generic.test: Likewise.
+       * tests/silent-lex-gcc.test: Likewise.
+
+2011-10-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more faithful 'installcheck' support in few tests
+       * tests/test-driver-acsubst.test: Use the `$am_scriptdir'
+       variable instead of `$testsrcdir/../lib', to test more
+       faithfully under "make installcheck".
+       * tests/test-driver-cond.test: Likewise.
+       * tests/dist-auxfile.test: Likewise, and add one more use
+       of `fatal_' to report hard errors.
+       * tests/tests/dist-auxdir-many-subdirs.test: Likewise.
+
+2011-10-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant settings of `errexit' shell flag
+       * tests/aclocal-path-install-serial.test: Do not set the
+       `errexit' shell flag, as it is already set by `tests/defs'.
+       * tests/aclocal-path-install.test: Likewise.
+       * tests/aclocal-path-nonexistent.test: Likewise.
+       * tests/aclocal-path-precedence.test: Likewise.
+       * tests/aclocal-path.test: Likewise.
+       * tests/dist-auxfile-2.test: Likewise.
+       * tests/dist-auxfile.test: Likewise.
+       * tests/distcheck-pr9579.test: Likewise.
+       * tests/javadir-undefined.test: Likewise.
+       * tests/subpkg-yacc.test: Likewise.
+       * tests/test-extensions-cond.test: Likewise.
+       * tests/test-extensions.test: Likewise.
+       * tests/uninstall-fail.test: Likewise.
+       * tests/uninstall-pr9578.test: Likewise.
+       * tests/distcheck-override-infodir.test: Likewise.  Also,
+       fix typo in heading comments since we are at it.
+
+2011-10-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fixup: add forgotten test scripts to $(TESTS)
+       * tests/list-of-tests.mk: Add various test scripts that are in
+       the git repository but weren't correctly listed in $(TESTS).
+       The inconsistency had been caused by botched/incomplete merges,
+       and revealed by the "maintainer-check-list-of-tests" target.
+
+2011-10-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with FreeBSD make and Yacc in VPATH
+       * tests/subpkg.test: Some cosmetic adjustments.  Move the tests
+       checking that $(YLWRAP) is defined and installed properly when
+       ylwrap is in a default auxdir found in a parent package ...
+       * tests/subpkg-yacc.test: ... into this new test, which carefully
+       avoids to trigger the known bug#7884 (combo FreeBSD make plus Yacc
+       plus VPATH build).
+       * tests/Makefile.am (TESTS): Update.
+
+2011-10-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure in 'parallel-tests3.test'
+       This fixes automake bug#8788.
+       * tests/parallel-tests3.test: To ensure that the serial run of
+       the dummy testsuite is still ongoing when the parallel run has
+       terminated, use `kill -0', not a bare `kill'.  This will prevent
+       a testsuite crash on NetBSD 5.1, and a testsuite hang on FreeBSD
+       8.2.  Also, since we are at it, try harder to avoid possible
+       hangs of the script in other unusual situations.
+
+2011-10-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures with "chatty" make implementations
+       * tests/distcheck-missing-m4.test: On failure, some make
+       implementations (such as Solaris make) print the whole failed
+       recipe on standard output.  This was causing a spurious failure
+       in the checks grepping the output from make.  Work around this.
+       * tests/distcheck-outdated-m4.test: Likewise.
+
+2011-10-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure on fast machines
+       * tests/aclocal-path-precedence.test: Also remove the `configure'
+       script between different test runs, to ensure it is always remade
+       by autoconf.  Add proper explicative comments.
+
+2011-10-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure of 'uninstall-fail.test' on Solaris
+       * tests/uninstall-fail.test: All the Solaris 10 shells (/bin/sh,
+       /bin/ksh, and /usr/xpg4/bin/sh), upon failing to chdir to a
+       directory with the `cd' builtin, print a message like:
+         "sh: /root: permission denied"
+       which doesn't report the `cd' builtin anywhere.  Relax the grepping
+       of the error message accordingly.
+
+2011-10-20  Jim Meyering  <meyering@redhat.com>
+
+       tests: fix aclocal-print-acdir.test
+       * tests/aclocal-print-acdir.test: Adjust to pass.
+
+2011-10-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure of 'uninstall-fail.test' on Cygwin
+       * tests/uninstall-fail.test: Be sure to really skip this test
+       on systems that allows files to be removed from unwritable
+       directories.  Motivated by a spurious failure on Cygwin 1.5.
+
+2011-10-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with autoconf 2.62
+       * tests/aclocal-path-precedence.test: Rewrite configure.in,
+       rather than appending to it, to avoid spurious failures (at
+       least with autoconf 2.62) due to repeated calls to AC_INIT.
+       Also, add package name and version arguments to AC_INIT, to
+       avoid spurious errors from automake.
+
+2011-10-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: avoid using colon character inside arguments of @pxref
+       Fixes automake bug#9753
+       * doc/automake.texi (VPATH Builds): Avoid using colon character
+       `:' inside arguments of @pxref, as this can cause problems in
+       the generated `.info' files, and such an usage will be explicitly
+       forbidden by future texinfo documentation.
+       * THANKS: Update.
+       Reported by Дилян Палаузов.
+
+2011-10-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       refactor: improve signature of 'check_directory' sub in automake
+       * automake.in (check_directory): Take the relative directory
+       the directory to be checked is expected to be found into as
+       an optional parameter, rather than reading it from the global
+       variable `$relative_dir'.
+       (scan_autoconf_traces, check_directories_in_var): Adjust.
+
+2011-10-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: remove obsolete comment
+       * automake.in (push_required_file): Remove "FIXME" comment stating
+       that the special handling of `$config_aux_dir' breaks threaded
+       automake: this is not true anymore after the recent commits (see
+       in particular commit `v1.11-1225-gf672944').
+
+2011-10-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with Solaris /bin/sh
+       * tests/dist-auxfile.test: Don't use redirected `:' in a loop,
+       it hits a bug in Solaris 10 /bin/sh.
+
+2011-10-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       threaded-am: better serialization for required config files
+       With this change, we make serialization/de-serialization of
+       required config files installs more granular, and in the process
+       fix the bug introduced by commit `v1.11-1219-g326ecba'.
+       * automake.in ($required_conf_file_queue): Move its declaration
+       earlier.
+       (require_file_internal): Add a new argument telling whether the
+       function should act immediately or queue its action for the master
+       thread to handle.
+       (queue_required_conf_file): Renamed ...
+       (queue_required_file_check_or_copy): ... to this.
+       (require_queued_conf_file): Renamed ...
+       (require_queued_file_check_or_copy): ... to this, and make it call
+       `required_file_check_or_copy' instead of `require_file_internal'.
+       (require_conf_file, handle_makefiles_threaded): Adjust and simplify
+       accordingly.
+       * tests/Makefile.am (XFAIL_TESTS): Remove `parallel-am.test'.
+
+2011-10-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: refactor, break up 'require_file_internal'
+       This refactoring is only required in view of future changes.
+       * automake.in (require_file_internal): Move the guts of this
+       function ...
+       (required_file_check_or_copy): ... into this new function.  This
+       ensures that calls to `push_required_file' and code that copies
+       required files are placed in separate functions; this will be
+       very useful for reorganizing de-serialization of file installs
+       in future changes.
+
+2011-10-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: separate auxiliary file instantiation from DIST_COMMON update
+       This change simplifies the automake internals dealing with the
+       checking, copying and distributing of required auxiliary files.
+       With this change, a required auxiliary file is *unconditionally*
+       added to the contents of the DIST_COMMON variable in the generated
+       Makefile.in, before checking whether it exists, or trying to copy
+       it (if `--add-missing' is in use).  This shouldn't be a problem,
+       since if the checking or copying of the file fails, automake will
+       bail out, the Makefile.in won't be created, and thus its content
+       will not matter.  OK, this is not completely true when threaded
+       automake is in use, but then, such a situation was also possible
+       before this patch, so no regression here, which is enough for us.
+       This change is the first of a series of steps aimed at fixing
+       the regression introduced in threaded automake usage by commit
+       `v1.11-1219-g326ecba'.
+       * automake.in (require_file_internal): Add the required file to
+       DIST_COMMON unconditionally.
+       * tests/missing-auxfile-stops-makefiles-creation.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-10-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       refactor: rename a subroutine to a more proper name
+       * automake.in (maybe_push_require_file): Renamed ...
+       (push_required_file): ... to this.
+       All callers adjusted.
+
+2011-10-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: truly always distribute files in AC_REQUIRE_AUX_FILE
+       This change fixes automake bug#9651.
+       * automake.in (handle_dist): Files whose distribution is required
+       by configure.ac are now correctly distributed even if the build-aux
+       directory coincides with the top-level directory.
+       * tests/Makefile.am (XFAIL_TESTS): Remove `dist-auxfile.test'.
+       * NEWS: Update.
+
+2011-10-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: simplify automake code accordingly to the previous changes
+       After the previous change `v1.11-1219-g326ecba', every Makefile.am
+       requiring a file in the "config auxdir" will cause it to be listed
+       in the DIST_COMMON variable of the corresponding generated
+       Makefile.in, not only of the top-level Makefile.in.  Thus we don't
+       need to worry anymore about trying to distribute files in the
+       config auxdir from the top-level Makefile or the Makefile in
+       config auxdir (if any).  This allows us to carry out some useful
+       simplifications in the automake script.
+       This will however cause some changes in the generated Makefile;
+       for example, if the `PROGRAMS' primary is used only in a subdir
+       Makefile.am, the `depcomp' script will be distributed only by
+       `subdir/Makefile', not by the top-level Makefile.  This change
+       can be seen as an internal detail though, and definitely warranted
+       by the nice simplifications the current commit provides.
+       * automake.in ($automake_will_process_aux_dir): Variable removed.
+       (scan_autoconf_files): Adjust and simplify.
+       (handle_makefiles_threaded): Likewise.
+       (get_number_of_threads): Likewise.
+       (require_file_internal): Likewise.
+       (maybe_push_required_file): Its return value is not used anymore,
+       so return nothing.  Add special handling for distributed files from
+       `$config_libobj_dir'.  Also, catch "this can't happen" situations,
+       and abort accordingly.  Fix function description to better fit its
+       new role.
+       * tests/libobj19.test: Extend to also check situations where the
+       Makefile.am using $(LIBOBJS) is not the top-level one.
+       * tests/distcom6.test: Delete, merged into ...
+       * tests/distcom2.test: ... this test, which has been update to
+       account for the changed automake semantics.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-10-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       dist: auxiliary files can be distributed from subdir Makefiles
+       With this change, we make it possible for a subdir Makefile.am
+       to distribute files in the config auxdir; while this means that
+       some files might be copied multiple times, it simplify some logic
+       in the automake script, and fix at least one important bug.  In
+       fact, before this change, the auxiliary script `test-driver' was
+       not being distributed as expected when TESTS was defined only in
+       a subdir Makefile (which is a pretty common setup indeed).  Now
+       this does not happen anymore: so the present change fixes automake
+       bug#9546.
+       Another welcome collateral effect is that `dist-auxfile-2.test'
+       now passes.
+       OTOH, the present changes *breaks threaded automake*.  The reason
+       is that automake needs to serialize file installations spawned
+       by `--add-missing' (this isn't for cosmetic reasons, but is
+       really needed to avoid possible race conditions and botched output
+       files).  Currently the code that installs required files is
+       intertwined with the code that declares the DIST_COMMON variables;
+       so, upon de-serialization, the definition of DIST_COMMON might get
+       emitted in the wrong Makefile.in.
+       Some follow-up refactoring in automake will soon take care of
+       remedying this situation.  For the moment, we just declare some
+       "parallel-am" tests as xfailing.
+       * automake.in (maybe_push_required_file): Add ad-hoc handling for
+       the case where the directory part of the required file is different
+       from the subdir where the current Makefile.am resides, but is equal
+       to the "config-aux directory" ($config_auxdir).  This is needed to
+       allow a construct in a non-top-level Makefile.am to require a file
+       in the config-aux directory.
+       * tests/test-driver-is-distributed.test: Extend and adjust.  This
+       test now passes.
+       * tests/java-compile-run-nested.test: Call automake with the `-a'
+       option to ensure that the `test-driver' auxiliary script gets
+       correctly installed.  This test now passes.
+       * tests/distcom-subdir.test: New test.
+       * tests/dist-readonly.test: Likewise.
+       * tests/dist-repeated.test: Likewise.
+       * tests/dist-auxdir-many-subdirs.test: Likewise.
+       * tests/distcom7.test: Removed, it's obsolete now.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
+2011-10-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: conditional contents in LOG_DRIVER variables
+       * tests/test-driver-cond.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-10-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: LOG_DRIVER variables can be defined through AC_SUBST
+       * tests/test-driver-acsubst.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-10-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: warn on conditional TEST_EXTENSIONS definition
+       Before this change, automake would have still bailed out, but
+       with a confusing error message (about an invalid redefinition
+       of TEST_EXTENSIONS).
+       * automake.in (handle_tests): Warn explicitly if TEST_EXTENSIONS
+       has conditional contents.
+       * tests/test-extensions-con.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * NEWS: Update.
+
+2011-10-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: don't allow @substitutions@ in TEST_EXTENSIONS
+       Even after the last commit `v1.11-476-g90bea64', the checks
+       performed by automake on entries in $(TEST_EXTENSIONS) tried to
+       allow for @substitited@ stuff.  This however ends up allowing
+       quite brittle setups, which, most importantly, are of no real
+       practical usefulness anyway.  So it's better to just disallow
+       @substitutions@ in TEST_EXTENSIONS altogether, offering a clear
+       error message, instead of risking weird bugs and unexpected
+       behaviors in the generated Makefile.in.
+       * automake.in ($TEST_EXTENSION_PATTERN): Turned from a regular
+       expression ...
+       (is_valid_test_extension): ... into this subroutine.  Don't allow
+       generic @substitutions@ anymore (possibly making an exception for
+       `@EXEEXT@' under the proper circumstances).
+       * tests/test-extensions.test: Adjust and extend.  This test does
+       not cause any internal error in automake anymore now.
+
+2011-10-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in 'insthook.test'
+       * tests/insthook.test (Makefile.am): Add a proper `uninstall-hook'
+       target to remove the symlink created by the `install-exec-hook'
+       target; this prevents "make distcheck" from failing spuriously.
+       Since we are at it, delete an extra blank line, and add a trailing
+       `:' command.
+
+2011-10-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix spurious failure
+       * lib/am/distdir.am: Use `$(infodir)', not `${infodir}', to avoid
+       complaints from the `sc_no_brace_variable_expansions' maintainer
+       check.
+
+2011-10-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * tests/yacc-dist-nobuild.test: Add reference to relevant bug#7884.
+
+2011-10-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious error in 'test-extensions.test'
+       * tests/test-extensions.test: Call automake with the option
+       `--add-missing', to ensure the required script `test-driver'
+       gets installed.  Note that the test still fails due to an
+       internal error in automake, though.
+
+2011-10-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid few useless uses of the `-e' make option
+       * tests/python12.test: Using `make -e' is not required to override
+       the DESTDIR variable, since this variable shouldn't be defined in
+       any automake-generated Makefile.in file.
+       * tests/man2.test: Likewise.
+       * tests/man5.test: Likewise.
+
+2011-10-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fix: make a test script executable
+       * tests/nobase-nodist.test: Make executable.
+
+2011-10-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: expose automake bug#9651
+       * tests/dist-auxfile.test: New test, xfailing.
+       * tests/dist-auxfile-2.test: Likewise.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Add them.
+
+2011-10-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: automake error our on invalid TEST_EXTENSIONS
+       This change fixes automake bug#9400.
+       * automake.in (handle_tests): Bail out if a suffix specified in
+       TEST_EXTENSIONS would produce an invalid `xxx_LOG_COMPILER'
+       variable or an invalid suffix rule.  Before this change, automake
+       would have issued a confusing error messages (about invalid or
+       non-POSIX variables being defined), and in some situations would
+       have even produced a broken `Makefile.in' file.
+       ($TEST_EXTENSION_PATTERN): New helper variable.
+       * doc/automake.texi (Simple Tests using parallel-tests): Document
+       the limitations on TEST_EXTENSIONS explicitly.
+       * NEWS: Update.
+       * tests/test-extensions.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-09-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: don't suggest installing `.m4' files in hard-coded location
+       This change fixes automake bug#7988.
+       * doc/automake.texi (aclocal Options): State that the use of
+       the `--print-ac-dir' option to determine the directory where
+       third-party packages can install their `.m4' files is discouraged
+       now.
+       (Extending aclocal): Suggest telling the user about ACLOCAL_PATH.
+       * THANKS: Update.
+       Report by Peter Johansson.
+
+2011-09-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       distuninstallcheck: fail also when only one file is left installed
+       This change fixes automake bug#9579.
+       * lib/am/distdir.am (distuninstallcheck): Be stricter in ignoring
+       a potential `dir' file created by install-info and left installed.
+       Also, be more careful about "this can't happen" kind of errors.
+       (am__distuninstallcheck_listfiles): New internal helper macro.
+       * tests/distcheck-pr9579.test: New test.
+       * tests/distcheck-override-infodir.test: Likewise.
+       * tests/Makefile.am (TESTS): Add them.
+       * NEWS, THANKS: Update.
+       Report by Nick Bowler.
+
+2011-09-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: improve comments about Korn shell signal handling issues
+       * lib/tap-driver.sh: Link an Austin Group discussion about how
+       shells are allowed, and even encouraged, to set the special
+       variable `$?' to values greater than 256 to report termination
+       of a child by a signal.  Improve and extend comments about our
+       workarounds for unusual korn shell signals' propagation.
+       Thanks to Eric Blake for the pointers.
+
+2011-09-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix usage of `cd' instead of `$(am__cd)'
+       * lib/am/inst-vars.am (am__uninstall_files_from_dir): Use
+       `$(am__cd)', not plain `cd'.
+
+2011-09-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: account for unusual korn shell signal handling behaviour
+       This change has been motivated by a testsuite failure on Debian
+       with the AT&T Korn Shell version 93u-1.
+       * lib/tap-driver.sh: Temporarily ignore some common signals when
+       waiting for the test command to complete, to avoid premature exit
+       in Korn shells that propagate to themselves signals that have
+       killed a child process.
+       See also related commit `v1.11-1342-g6321ad3'.
+
+2011-09-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: handle exit statuses > 256 (seen on few korn shells)
+       Some Korn shells, when a child process die due to signal number
+       n, can leave in $? an exit status of 256+n instead of the more
+       standard 128+n.  Apparently, both behaviours are allowed by
+       POSIX, so be prepared to handle them both.
+       This change has been motivated by a testsuite failure on Debian
+       with the AT&T Korn Shell version 93u-1.
+       * lib/tap-driver.sh (get_test_exit_message): Handle the described
+       Korn Shell behaviour too.
+       ($scriptversion): Update.
+
+2011-09-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant workaround for Solaris /bin/sh
+       After previous commit `v1.11-1424-g27a399a', some workarounds for
+       Solaris 10 /bin/sh are no more required, and in fact they have
+       started causing XPASS results on Solaris.
+       * tests/tap-signal.tap: Remove unneeded workarounds for Solaris 10
+       /bin/sh.  Some related minor code reorganizations.
+
+2011-09-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       uninstall: "make uninstall" before "make install" works
+       This change fixes automake bug#9578.
+       * lib/am/inst-vars.am (am__uninstall_files_from_dir): New internal
+       macro, that defines a shell code fragment to uninstall files from
+       a given directory.
+       * lib/am/data.am (uninstall-%DIR%%PRIMARY%): Use it, to reduce code
+       duplication and improve consistency and correctness.
+       * lib/am/libs.am (uninstall-%DIR%LIBRARIES): Likewise.
+       * lib/am/lisp.am (uninstall-%DIR%LISP): Likewise.
+       * lib/am/mans.am (uninstall-man%SECTION%): Likewise.
+       * lib/am/python.am (uninstall-%DIR%LIBRARIES): Likewise.
+       * lib/am/scripts.am (uninstall-%DIR%SCRIPTS): Likewise.
+       * tests/uninstall-pr9578.test: New test.
+       * tests/uninstall-fail.test: New test.
+       * tests/Makefile.am (TESTS): Add them.
+       * NEWS, THANKS: Update.
+       Report by Nick Bowler.
+
+2011-09-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix tests on aclocal search path precedences
+       * tests/aclocal-path-precedence.test: Call `$ACLOCAL' with the
+       proper overridden system acdir.
+
+2011-09-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures in tests on TAP + signals
+       * tests/tap-signal.tap: Write the dummy test scripts as perl
+       scripts, not as shell scripts, to work around unportabilities
+       in the handling of signals.  In fact, even with bash, the older
+       script were unable to properly deliver a SIGQUIT to themselves
+       consistently.
+
+2011-09-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in test on ACLOCAL_PATH precedences
+       * tests/aclocal-path-precedence.test: Do not merely append to
+       `configure.in', it should be created from scratch.  Pass package
+       name and version to AC_INIT as arguments, otherwise autoconf will
+       complain.
+
+2011-09-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: remove mention of deprecated option `--acdir'
+       * doc/automake.texi (aclocal Options): Remove mention of
+       deprecated `--acdir' option.
+
+2011-09-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * NEWS: Cleanup after botched merges.
+
+2011-09-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * NEWS: Fix typo.
+
+2011-09-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: document planned precedence changes in aclocal search path
+       * doc/automake.texi (Macro Search Path): Explicitly state that the
+       lookup order for extra directories of `.m4' files will be changed
+       in the next major release.
+       * NEWS: Likewise.
+
+2011-09-19  Paolo Bonzini  <bonzini@gnu.org>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: handle ACLOCAL_PATH environment variable
+       * aclocal.in (parse_ACLOCAL_PATH): New function, parse ACLOCAL_PATH
+       as a colon-separated list of directories to be included in the
+       search path.
+       * doc/automake.texi (Macro Search Path): Document new behavior and
+       the precedence rules for various elements of the search path.
+       * tests/aclocal-path.test: New test.
+       * tests/aclocal-path-install.test: Likewise.
+       * tests/aclocal-path-install-serial.test: Likewise.
+       * tests/aclocal-path-precedence.test: Likewise.
+       * tests/aclocal-path-nonexistent.test: Likewise.
+       * tests/Makefile.am (TESTS): Add them.
+       * NEWS: Update.
+       * tests/distcheck-missing-m4.test: Extend by also checking
+       interactions with ACLOCAL_PATH.
+       * tests/distcheck-outdated-m4.test: Likewise, and fix a couple
+       of botched comments since we are at it.
+
+2011-09-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in 'primary-prefix-valid-couples.test'
+       * tests/primary-prefix-valid-couples.test: After commit
+       v1.11-464-gc9dfc36, `java_JAVA' is not a valid prefix/primary
+       combination by default anymore: one has to explicitly define
+       $(javadir) to make it so.  So just drop `java_JAVA' from our
+       Makefile.am  Also, since we are at it, ...
+       (configure.in): ... remove AM_PROG_GCJ from here, as it's not
+       really required.
+
+2011-09-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: deprecate JAVA primary
+       * doc/automake.texi (Java): Deprecate the JAVA primary, stating
+       that it will become obsolete in automake 1.12 and probably removed
+       altogether in automake 1.13.  Reflect this in the section title,
+       by appending the string "(deprecated feature)".
+       (@menu, @detailmenu): Update.
+       (Java Support with gcj): The cross-referenced support for bytecode
+       compilation with the JAVA primary is rudimentary and deprecated.
+       State that explicitly.
+
+2011-09-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: clearer distinction between `.java' with javac and with gcj
+       * doc/automake.texi (Java support): Rename this node ...
+       (Java support with gcj): ... to this, and change its title from
+       "Compiling Java sources" to "Compiling Java sources using gcj".
+       (@detailmenu, @menu, @cindex): Update and make more precise.
+       (Java): Change the title of this node from simply "Java" to
+       "Java bytecode compilation".
+       (@detailmenu, @menu, @cindex): Update and make more precise.
+
+2011-09-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java: complain if java_JAVA is used but $(javadir) is undefined
+       Fixes automake bug#8461.
+       * automake.in (handle_java): Remove inappropriate "java" argument
+       from the calls to `&am_install_var' and `&am_primary_prefixes'.
+       * tests/instdir-java.test (Makefile.am): Define `$(javadir)'.
+       * tests/javadir-undefined.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * NEWS: Update.
+
+2011-09-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: expose automake bug#9546
+       * tests/test-driver-is-distributed.test: New test.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Add it.
+
+2011-09-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       py-compile tests: more faithful 'installcheck' support
+       * tests/py-compile-basedir.test: Use the `$am_scriptsdir' variable
+       instead of `$testsrcdir/../lib', to test more faithfully under
+       "make installcheck".  More uses of the `fatal_' subroutine to
+       diagnose hard errors.
+       * tests/py-compile-basic.test: Likewise.
+       * tests/py-compile-basic2.test: Likewise.
+       * tests/py-compile-destdir.test: Likewise.
+       * tests/py-compile-env.test: Likewise.
+       * tests/py-compile-option-terminate.test: Likewise.
+       * tests/py-compile-usage.test: Likewise.
+
+2011-09-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant settings of `errexit' shell flag
+       * tests/aclocal-acdir.test: Do not set the `errexit' shell
+       flag, as it is already set by `tests/defs'.
+       * tests/aclocal-print-acdir.test: Likewise.
+       * tests/distcheck-missing-m4.test: Likewise.
+       * tests/distcheck-outdated-m4.test: Likewise.
+       * tests/java-clean.test: Likewise.
+       * tests/java-compile-install.test: Likewise.
+       * tests/java-compile-run-flat.test: Likewise.
+       * tests/java-compile-run-nested.test: Likewise.
+       * tests/java-mix.test: Likewise.
+       * tests/java-no-duplicate.test: Likewise.
+       * tests/java-nobase.test: Likewise.
+       * tests/java-rebuild.test: Likewise.
+       * tests/java-sources.test: Likewise.
+       * tests/java-uninstall.test: Likewise.
+       * tests/javaflags.test: Likewise.
+       * tests/nobase-nodist.test: Likewise.
+       * tests/py-compile-basedir.test: Likewise.
+       * tests/py-compile-basic.test: Likewise.
+       * tests/py-compile-basic2.test: Likewise.
+       * tests/py-compile-destdir.test: Likewise.
+       * tests/py-compile-env.test: Likewise.
+       * tests/py-compile-option-terminate.test: Likewise.
+       * tests/py-compile-usage.test: Likewise.  Since we are at it,
+       add an extra blank line, for clarity.
+
+2011-09-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: remove special handling of `ANSI2KNR' make variable
+       * automake.in (define_configure_variable): Remove special-cased
+       handling of `ANSI2KNR' variable.  Related minor simplifications.
+
+2011-09-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: test interactions of `nobase_' and `nodist_'
+       * tests/nobase-nodist.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-09-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java: fix various blunders in test 'java-mix.test'
+       * tests/java-mix.test: Add missing call to `set -e'.  Fix inverted
+       semantics (`.java' files are expected *not* to be distributed by
+       default, not the other way round).  Fix various typos in the name
+       of the `.java' files.  Correct other minor blunders.  Improve some
+       comments.
+
+2011-09-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: remove code duplication in 'handle_tests'
+       * automake.in (handle_tests): Factor out some code dealing with
+       test extensions and rules for generation of `.log' files into ...
+       (handle_per_suffix_test): ... this new subroutine.
+       * tests/parallel-tests-exeext.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-09-13  Peter Rosin  <peda@lysator.liu.se>
+
+       * tests/defs [$sh_errexit_works = yes]: Output 'SIGINT' for signal 2.
+
+2011-09-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: work around 'unset' spurious non-zero return value
+       * tests/self-check-exit.tap ($init): Unset the possibly already
+       unset variable `am_explicit_skips' when the `errexit' shell flag
+       is not yet active, for the benefit of shell that return a non-zero
+       status when unsetting an already-unset variable.
+
+2011-09-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: an explicative comment on signal-related woes
+       * tests/self-check-exit.tap: Add pointer to a bug-autoconf
+       discussion explaining why this test needs to temporarily block
+       SIGINT.
+
+2011-09-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: also trap SIGQUIT; other fixes
+       Some shells seems to just ignore SIGQUIT under some circumstances,
+       even when it is not blocked; however, if the signal it trapped,
+       the trap gets correctly executed.
+       * tests/defs [$sh_errexit_works = yes]: Also trap SIGQUIT. Add
+       extensive explanation of why we do so.
+       * tests/self-check-cleanup.tap: Improve and fix to ensure that an
+       earlier failure does not prevent the rest of the test to execute.
+       Problem revealed by a failure in `self-check-cleanup.tap'.
+
+2011-09-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: work around weird ksh behaviour w.r.t. signal handling
+       * tests/defs (is_blocked_signal): Use perl to determine whether a
+       signal is trapped, since trying to do it portably within the shell
+       means opening a nasty can of worms.
+       For more information and background, see:
+        <http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html>
+        <http://mail.opensolaris.org/pipermail/ksh93-integration-discuss/2009-February/004121.html>
+        <http://www.cons.org/cracauer/sigint.html>
+
+2011-09-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix various typos and grammaros
+       * NEWS: Fix typos.
+       * tests/py-compile-basic.test: Likewise.
+       * tests/py-compile-basedir.test: Fix botched wording in comments.
+       * tests/py-compile-option-terminate.test: Fix typo and incomplete
+       comment.
+       Suggestions by Peter Rosin.
+
+2011-09-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant line from a test script
+       * tests/test-log.test (fail.test): Remove extra `echo' command,
+       probably due to a past copy&paste blunder.
+
+2011-09-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: convert another test to TAP
+       * tests/primary-prefix-invalid-couples.test: Renamed ...
+       * tests/primary-prefix-invalid-couples.tap: ... to this, and
+       converted to the use of the TAP protocols (this requires only
+       very minimal changes this time).
+       * tests/list-of-tests.mk: Update.
+
+2011-09-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure on fast machines
+       * tests/aclocal-acdir.test: Avoid spurious failures due to caching
+       issues, by cleaning the autom4te cache between all the aclocal
+       invocations, and by always calling autoconf with the `--force'
+       flag.
+
+2011-09-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: minor optimizations/simplifications in some aclocal tests
+       * acloca11.test: Instead of running ./configure and then grepping
+       the file it has produced, directly grep configure.  Add trailing
+       `:' command.
+       * acloca12.test: Likewise.
+       * acloca10.test: Likewise.  Also, remove the autom4te caches
+       by hand, instead of sleeping to ensure they get outdated and
+       ignored.
+       * aclocal9.test: Likewise.
+       * acloca18.test: Likewise.  Also, do not remove file `foo',
+       which is not being created anymore.
+       * acloca20.test: The test makes sense only if the system support
+       real symlinks, so skip it if this is not the case.  This allows
+       for various simplifications.
+
+2011-09-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       prove: avoid weird signal-related bug
+       * tests/defs (trap): In the trap code dealing with SIGPIPE
+       signal, ignore further signals of the same kind.
+       See also Test::Harness issue [rt.cpan.org #70855], archived at
+       <https://rt.cpan.org/Ticket/Display.html?id=70855>
+
+2011-09-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: allow use of `prove' to run automake testsuite
+       * tests/prove-runner: New helper script; mostly it wraps
+       our `*.test' test scripts to make them runnable by the
+       `prove' utility.
+       * tests/Makefile.am (EXTRA_DIST): Distribute it.
+       (PROVE, AM_PROVEFLAGS, AM_PROVECMD): New variables.
+       (prove, installprove): New targets, used run the automake
+       testsuite through the `prove' utility.
+       * tests/gen-testsuite-part: For any considered dependency,
+       generate a variables that groups all the tests depending on
+       it.  This is especially useful for use in the new `prove'
+       and `installprove' targets, which cannot rely on make for
+       inter-test dependencies, and have to handle them "by hand".
+
+2011-09-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: more namespace-safeness
+       ($using_tap): Renamed ...
+       ($am_using_tap): ... to this.
+       ($parallel_tests): Renamed ...
+       ($am_parallel_tests): ... to this.
+       ($test_prefer_config_shell): Renamed ...
+       ($am_test_prefer_config_shell): ... to this.
+       ($original_AUTOMAKE): Renamed ...
+       ($am_original_AUTOMAKE): ... to this.
+       ($original_ACLOCAL): Renamed ...
+       ($am_original_ACLOCAL): ... to this.
+       * tests/defs, tests/defs-static.in, tests/gen-testsuite-part,
+       tests/README, and all callers: Adjusted.
+       * tests/Makefile.am (AM_TESTS_ENVIRONMENT): Adjust, and rewrite
+       to make future adjustments easier.
+       * tests/defs (funcs_file_): Renamed ...
+       (am_funcs_file): ... to this.
+       * Makefile.am (sc_tests_obsolete_variables): New maintainer
+       check.
+       (syntax_check_rules): Add it.
+
+2011-09-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: better URL reference in error message
+       * aclocal.in (scan_file): In the error message about underquoted
+       definitions, reference the automake page at `www.gnu.org', not
+       at `sources.redhat.com'.
+
+2011-09-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid creating useless files in some test directories
+       * tests/aclocal.test: Define `$am_create_testdir' to "empty"
+       before sourcing ./defs, to avoid bringing in unused auxiliary
+       files.  Related adjustments.
+       * tests/aclocal3.test: Likewise.
+       * tests/aclocal8.test: Likewise.
+       * tests/aclocal9.test: Likewise.
+       * tests/acloca10.test: Likewise.
+       * tests/acloca11.test: Likewise.
+       * tests/acloca12.test: Likewise.
+       * tests/acloca15.test: Likewise.
+       * tests/acloca16.test: Likewise.
+       * tests/acloca17.test: Likewise.
+       * tests/acloca18.test: Likewise.
+       * tests/acloca20.test: Likewise.
+       * tests/acloca21.test: Likewise.
+       * tests/acloca23.test: Likewise.
+       * tests/aclocal-print-acdir.test: Likewise.
+       * tests/ar-lib.test: Likewise.
+       * tests/compile.test: Likewise.
+       * tests/compile2.test: Likewise.
+       * tests/compile3.test: Likewise.
+       * tests/compile6.test: Likewise.
+       * tests/instsh2.test: Likewise.
+       * tests/instsh3.test: Likewise.
+       * tests/mdate5.test: Likewise.
+       * tests/mdate6.test: Likewise.
+       * tests/missing3.test: Likewise.
+       * tests/missing5.test: Likewise.
+       * tests/mkinst3.test: Likewise.
+       * tests/self-check-explicit-skips.test: Likewise.
+       * tests/self-check-report.test: Likewise.
+       * tests/self-check-sanity.test: Likewise.
+       * tests/tap-driver-stderr.test: Likewise.
+
+2011-09-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: more environment cleanup
+       * tests/defs: Also unset the XFAIL_TESTS, and various
+       LOG_DRIVER, LOG_COMPILER variables (and corresponding
+       flags variable).
+
+2011-09-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: allow depmod.tap to only run a subset of its tests
+       * tests/depmod.tap: If command-line arguments are passed to the
+       tests, they are now taken as the list of test names for which the
+       checks are to be run.
+
+2011-09-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: allow instspc.tap to only run a subset of its tests
+       * tests/instspc.tap: If command-line arguments are passed to the
+       tests, they are now taken as the list of test names for which the
+       checks are to be run.
+
+2011-09-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: distcheck-hook to catch missing/outdated *.m4 files
+       Related to automake bug#9037.
+       * tests/distcheck-missing-m4.test: New test.
+       * tests/distcheck-outdated-m4.test: Likewise.
+       * tests/distcheck-hook-m4.am: New data file, used by the new
+       tests.
+       * tests/Makefile.am (distcheck-m4-missing.log,
+       distcheck-m4-outdated.log): Depend on it.
+       (EXTRA_DIST): Distribute it.
+       (TESTS): Add the new tests.
+
+2011-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more granularity in variables for tools overriding
+       Among the other things, this change makes it possible to use, at
+       the same time, an autoconf version in the automake testsuite and
+       another one in the automake build system; even more importantly, it
+       makes it possible to use, say, a non-GNU make implementation in the
+       test scripts, while at the same time using GNU make to drive the
+       execution of the automake's test suite.
+       * tests/defs-static.in (TEX, EGREP, FGREP, SHELL, PERL, MAKE,
+       AUTOCONF, AUTOM4TE, AUTORECONF, AUTOHEADER, AUTOUPDATE,
+       original_AUTOMAKE, original_ACLOCAL): Allow and prefer overriding
+       through corresponding `AM_TESTSUITE_..' variables; for example,
+       $GREP can now be overridden by an exported `$AM_TESTSUITE_GREP'
+
+2011-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix `skip_row_' subroutine in tap-functions.sh
+       * tests/tap-functions.sh (skip_row_): Use `seq_', not `seq', to
+       be portable to non-GNU systems.
+       Bug revealed by a testsuite error on Solaris.
+
+2011-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       installcheck: support it in our own testsuite
+       * NEWS: Update.
+       * tests/defs-static.in ($am_running_installcheck): New variable.
+       Initialize it to a default of "no", and sanity-check its value.
+       ($am_datadir, $am_docdir, $am_automake_acdir, $am_system_acdir,
+       $am_bindir, $am_scriptdir, $am_pkgvdir): New variables,
+       initialized from AC_SUBST'ed values which are adaptively chosen
+       depending on whether the testsuite is running in "simple" mode
+       or in "installcheck" mode.
+       ($MISSING): Remove, it's not really required by the testsuite.
+       ($PATH): Update using `$am_bindir', not `$testbuilddir'.
+       * Makefile.am (installcheck-local): New target.
+       * lib/Automake/tests/Makefile.am (installcheck-local): New target.
+       (AM_TESTS_ENVIRONMENT, AM_PL_LOG_FLAGS): Adaptively choose the
+       `-I' flags for perl based on whether the tests are being run by
+       "make check" or "make installcheck".
+       * tests/Makefile.am (installcheck-local): New target.
+       (defs-static): Generate it at make time, not at configure time,
+       in order to correctly resolve all the indirections in the
+       AC_SUBST'd variables; done with the help of ...
+       (do_subst): ... this new macro.
+       (EXTRA_DIST): Explicitly distribute `defs-static.in'.
+       (CLEANFILES): Remove `defs-static'.
+       * configure.ac (AC_CONFIG_FILES): Remove `tests/defs-static'.
+       (AC_SUBST): Substitute also `automake_acdir', `system_acdir',
+       `scriptdir' and `amdir' to proper values.
+       * lib/Makefile.am (scriptdir):  Don't explicitly define anymore.
+       * lib/am/Makefile.am (amdir): Likewise.
+       * m4/acdir/dirlist: Remove, it's not needed anymore.  Instead
+       use ...
+       * m4/acdir/.placeholder: ... this file.
+       * m4/Makefile.am (EXTRA_DIST): Update.
+       (automake_acdir, system_acdir): Don't explicitly define anymore.
+       * tests/aclocal-print-acdir.test: Use new `$am_...dir' variables,
+       instead of hard-coding values with $testsrcdir and $testbuilddir,
+       to test more faithfully under "make installcheck".
+       * tests/amhello-binpkg.test: Likewise.
+       * tests/amhello-cflags.test: Likewise.
+       * tests/amhello-cross-compile.test: Likewise.
+       * tests/ansi2knr-no-more.test: Likewise.
+       * tests/autodist-stamp-vti.test: Likewise.
+       * tests/auxdir.test: Likewise.
+       * tests/check2.test: Likewise.
+       * tests/copy.test: Likewise.
+       * tests/multlib.test: Likewise.
+       * tests/obsolete.test: Likewise.
+       * tests/parallel-tests-interrupt.test: Likewise.
+       * tests/repeated-options.test: Likewise.
+       * tests/suffix5.test: Likewise.
+       * tests/tap-doc2.test: Likewise.
+       * tests/txinfo22.test: Likewise.
+       * tests/vtexi3.test: Likewise.
+       * tests/defs: Likewise.  Also, print the values of `$using_tap'
+       and `$am_running_installcheck', to simplify debugging, and do
+       some related code movings and tweakings.
+       * tests/aclocal3.test: Update to avoid possible spurious failures
+       when running under "make installcheck".
+       * tests/warnings-unknown.test: Likewise.
+       * tests/location.test: Likewise, and improve debugging input since
+       we are at it.
+       * tests/acloca10.test: Adapt and tweak to work also during a
+       "make installcheck", and not to require a pre-populated `dirlist'
+       file.
+       * tests/acloca18.test: Likewise.
+       * tests/dirlist2.test: Likewise.
+       * tests/dirlist.test: Likewise, and remove an obsolete comment.
+       * tests/README: Update.
+       * tests/dirlist-abspath.test: New test.
+       * tests/list-of-tests.mk: Update.
+
+2011-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix spurious failures
+       * tests/gen-testsuite-part (write_wrapper_script): More uses of
+       creative quoting in the generated tests, to avoid triggering
+       failures in the `sc_tests_Exit_not_exit' maintcheck.
+       * Makefile.am (sc_tests_tap_plan): It's OK for auto-generated
+       TAP tests that sources an hand-written one not to declare a TAP
+       plan: the sourced test will do so.
+       * tests/Makefile.am (checked_test_extensions): Don't define
+       anymore, the default value `$(TEST_EXTENSIONS)' is correct now.
+       (expected_list_of_tests): Don't define anymore, the default
+       value `$(TESTS)' is correct now.
+
+2011-09-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       aclocal: more granularity in acdir overriding
+       Before this change, using the `--acdir' option caused aclocal to
+       redefine both the directory of automake-provided m4 macros and the
+       directory of third-party system-wide m4 macros.  With this change,
+       we deprecate the `--acdir' aclocal option, and introduce two new
+       options `--automake-acdir' and `--system-acdir', to allow for more
+       granularity.
+       * aclocal.in (@automake_includes, @system_includes,
+       @user_includes): Fix and extend comments.
+       (usage): Update.
+       (handle_acdir_option): New function.
+       (parse_arguments): Recognize new options `--system-acdir' and
+       `automake-acdir', and handle `--acdir' using the new function
+       above.  Simplify logic by assuming that the directory of
+       third-party system-wide m4 files always exists.
+       * tests/aclocal.in: Update to use the new options, instead of
+       the deprecated. `--acdir'.
+       * m4/dirlist: Move ...
+       * m4/acdir/dirlist: ... here.
+       * m4/Makefile.am (EXTRA_DIST): Update.
+       (m4datadir): Rename ...
+       (automake_acdir): ... to this.  Accordingly, ...
+       (dist_m4data_DATA): ... rename this ...
+       (dist_automake_ac_DATA): ... to this.
+       (system_acdir): New, directory.
+       (dist_system_ac_DATA): New, defined to an empty value; this will
+       ensure that the $(system_acdir) directory will be created by
+       "make install".
+       * tests/aclocal.test: Remove check about the `--print-ac-dir'
+       option of aclocal, it has been moved into ...
+       * tests/aclocal-print-acdir.test: ... this new test, and quite
+       extended.
+       * tests/aclocal-acdir.test: New test.
+       * tests/Makefile.am (TESTS): Add the new tests.
+       * NEWS, bootstrap: Update.
+       * doc/automake.texi (aclocal Options, Macro Search Path): Update.
+
+2011-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetic: rename gen-tests-deps -> gen-testsuite-part
+       * tests/gen-tests-deps: Renamed ...
+       * tests/gen-testsuite-part: ... to this.
+       * bootstrap: Update.
+       * tests/Makefile.am ($(srcdir)/tests-deps.am): Don't generate
+       nor include this ...
+       ($(srcdir)/testsuite-part.am): ... do with this instead.
+       * tests/.gitignore (tests-deps.am): Don't ignore this ...
+       (testsuite-part.am): ... ignore this instead.
+
+2011-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: revamp generation of autogenerated tests
+       With this change, we make generated tests be real scripts again
+       -- albeit only thin layers around the tests they wrap.  It turned
+       out that the apparently clever tricks we played by having lots
+       of custom (and auto-generated) `..._LOG_COMPILER' variables and
+       by having the tests in $(wrap_TESTS) not being real on-file-system
+       scripts caused more pain and confusion than expected, for only
+       marginal gains.  Also, that previous setup didn't interact very
+       well with "make check RECHECK_LOGS=", since the log files for
+       the "wrappee" tests were always considered out-of-date (which in
+       hindsight is natural, since these log files depended on wrappee
+       tests that didn't exist -- and weren't created).  And finally, it
+       wasn't possible to easily and naturally run the wrappee tests
+       from the command line -- definitely harmful for debugging and
+       sanity checking.
+       * tests/gen-wrap-tests: Deleted, its role subsumed into ...
+       * tests/gen-tests-deps: ... this script, with the help of
+       (unindent, atomic_write, build_matcher, write_wrapper_script,
+       %test_generators): ... these new functions and variables.
+       Other few minor fixlets and improvements.
+       * tests/wrap-tests.sh: Delete, not needed anymore.
+       * tests/Makefile.am ($(srcdir)/wrap-tests.am): Don't generate
+       nor include anymore.
+       (EXTRA_DIST): Update.
+       (wrap_TESTS): Renamed to ...
+       (generated_TESTS): ... this.
+       ($(generated_TESTS)): Must have the same dependencies of
+       `$(srcdir)/tests-deps.am'.
+       Other minor related reordering and adjustments.
+       * bootstrap: Do not generate `wrap-tests.am' anymore.
+       * tests/.gitignore (wrap-tests.am): Don't ignore anymore.
+       (*-w.test, *-w.tap): Ignore.
+       * tests/README: Update paragraph on automatically-generated
+       tests.
+
+2011-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: automatize generation of dependencies for tests
+       * tests/gen-test-deps: New script, automatically generates
+       dependencies for the tests.
+       * tests/Makefile.am (EXTRA_DIST): Distribute it.
+       ($(srcdir)/tests-deps.am): New rule.
+       (include $(srcdir)/tests-deps.am): New inclusion.
+       Remove hand-written dependencies for tests.  Other related
+       updates.
+       * tests/list-of-tests (tap_with_common_setup_TESTS,
+       tap_other_TESTS): Delete, their content merged back into ...
+       (handwritten_TESTS): ... this.
+       * tests/.gitignore (tests-deps.am): New ignored file.
+       * bootstrap: Generate `tests/tests-deps.am'.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure due to bug in older TAP::Parser
+       Older TAP::Parser versions (e.g., 3.10) erroneously convert a test
+       number `0' into `1'; do not let this bug cause a spurious failure
+       in our testsuite.
+       * tests/tap-test-number-0.test: Skip if the aforementioned
+       TAP::Parser bug is detected.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/perl: be more portable to older perl versions
+       * lib/tap-driver.pl (trap_perl_warnings_and_errors): Do not use
+       the three-args version of the `open' builtin, it is not well
+       supported by older perl versions (at least perl 5.6.2).
+       (start): Add a no-op statement to pacify a "possible typo ... used
+       only once" perl warning.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/perl: be more portable to older TAP::Parser versions
+       * lib/tap-driver.pl (start): Do not call the `ignore_exit' method
+       on our TAP parser: it is not supported in older TAP::Parser
+       versions (e.g., 3.10), and is not really required by our usage of
+       the parser object.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious Cygwin failure of a test on TAP support
+       * tests/tap-bad-prog.tap (noexec.test): Add forgotten `echo'.
+       When trying to run it, redirect its output to /dev/null, to
+       avoid confusing automake's testsuite own TAP driver.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: fix glitch in TAP version of `warn_' function
+       * tests/tap-functions.sh (warn_): Do not display the warning
+       message two times.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix another spurious failure due to ignored signals
+       * tests/tap-signal.test: Renamed ...
+       * tests/tap-signal.tap: ... to this, converted to the use of the
+       TAP protocol, and improved not to try to use/trap signals that
+       are ignored by the parent shell (they will be forcibly ignored
+       by all the child processes too).  Extend the test a bit since we
+       are at it.
+       * tests/list-of-tests.mk: Update.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix a spurious failure due to lacking Fortran compilers
+       * tests/silent-many-generic.test (configure.in): Cause the test
+       to be skipped if `configure' fails to find working C++, Fortran
+       and Fortran 77 compilers.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: more use of TAP
+       * tests/self-check-reexec.test: Renamed ...
+       * tests/self-check-reexec.tap: ... to this, converted to the
+       use of TAP protocol, and extended a bit.
+       * tests/self-check-seq.test: Renamed ...
+       * tests/self-check-seq.tap: ... to this, and converted to the
+       use of TAP protocol.
+       * tests/list-of-tests.mk: Update.
+
+2011-09-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: fix spurious failures when /bin/ksh do not exists
+       * tests/self-check-reexec.test: Ensure that the non-bash shells
+       we look do really exists.  Since we are at it, also try the name
+       `ash', non `dash', for the Almquist Shell, for Cygwin 1.5.
+
+2011-09-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more use of TAP in our own testsuite
+       * tests/parallel-tests-interrupt.test: Renamed ...
+       * tests/parallel-tests-interrupt.tap: ... to this, and converted
+       to the use of TAP protocol.
+       * tests/self-check-cleanup.test: Renamed ...
+       * tests/self-check-cleanup.tap: ... to this, and converted to the
+       use of TAP protocol.
+       * tests/self-check-dir.test: Renamed ...
+       * tests/self-check-dir.tap: ... to this, and converted to the use
+       of TAP protocol.
+       * tests/self-check-is_newest.test: Renamed ...
+       * tests/self-check-is_newest.tap: ... to this, and converted to
+       the use of TAP protocol.
+       * tests/self-check-unindent.test: Renamed ...
+       * tests/self-check-unindent.tap: ... to this, and converted to
+       the use of TAP protocol.
+       * tests/list-of-tests.mk: Update.
+
+2011-09-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: sanity check on 'is_blocked_signal' function
+       * tests/self-check-is-blocked-signal.tap: New test.
+       * tests/list-of-tests.mk: Update.
+
+2011-09-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures due to ignored signals
+       * tests/defs (is_blocked_signal): New function.
+       * tests/parallel-tests-interrupt.test: Do not try to use/trap
+       signals that are ignored by the parent shell: they will be
+       ignored by all the child processes too.
+       * tests/self-check-exit.test: Likewise.
+       * tests/self-check-cleanup.test: Likewise, and do few minor
+       improvements and extensions since we are at it.
+
+2011-09-05  Peter Rosin  <peda@lysator.liu.se>
+
+       * tests/amhello-binpkg.test: Add missing $EXEEXT usage.
+
+2011-09-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       fix: list test 'vala-vpath.test' in XFAIL_TESTS
+       * tests/Makefile.am (XFAIL_TESTS): Update.
+
+2011-09-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: simplify wrapper for aclocal
+       * tests/aclocal.in: Remove use of $ACLOCAL_TESTSUITE_FLAGS and
+       extra `-I' flags; they are not really required, since the file
+       `m4/amversion.m4' is generated in the srcdir anyway.
+       * tests/acloca10.test: Remove use of $ACLOCAL_TESTSUITE_FLAGS.
+       * tests/acloca18.test: Likewise.
+       * tests/defs.in: Don't nullify $ACLOCAL_TESTSUITE_FLAGS, and do
+       not export it.
+
+2011-09-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant settings of `errexit' shell flag
+       * doc-parsing-buglets-colneq-subst.test: Do not set the
+       `errexit' shell flag, as it is already set by `tests/defs'.
+       * doc-parsing-buglets-tabs.test: Likewise.
+       * java-empty-classpath.test: Likewise.
+       * vala-vpath.test: Likewise.
+
+2011-09-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more uses of `$top_testsrcdir', in the `amhello' tests
+       * tests/amhello-binpkg.test: Use `$top_testsrcdir' instead
+       of `$testsrcdir/..'.
+       * tests/amhello-cflags.test: Likewise.
+       * tests/amhello-cross-compile.test: Likewise.
+
+2011-09-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid creating useless files in the `amhello' tests
+       * tests/amhello-binpkg.test: Define `$am_create_testdir' to
+       "empty" before sourcing ./defs, to avoid bringing in unused
+       auxiliary files.
+       * tests/amhello-cflags.test: Likewise.
+       * tests/amhello-cross-compile.test: Likewise.
+
+2011-09-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: vala support failing for VPATH from-scratch builds
+       * tests/vala-vpath.test: New test, xfailing.
+       * tests/Makefile.am (TESTS): Update.
+       * THANKS: Update.
+       From a report by Zbigniew Jędrzejewski-Szmek.
+       Related to automake bug#8753.
+
+2011-09-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: report few more automake parsing limitations
+       Partly motivated by automake bug#8360.
+       * doc/automake.texi (General Operation): Report few more automake
+       limitations w.r.t. parsing of unusual makefile constructs.  Related
+       minor reorderings.
+       * tests/doc-parsing-buglets-colneq-subst.test: New test.
+       * tests/doc-parsing-buglets-tabs.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-09-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: fix regression due to de-ansification support removal
+       The last change `v1.11-947-g136b489' removed code that automake
+       was using to decide whether binary objects were built by the
+       generated Makefile.in, so that it could avoid to emit unneeded
+       code when this was not the case.  Re-introduce such code in a
+       less-obfuscated form, and add a test to ensure we don't regress
+       again.
+       * automake.in ($must_handle_compiled_objects): New global
+       variable, telling whether the generated Makefile has to build
+       compiled objects.
+       (initialize_per_input): Reset it.
+       (handle_programs, handle_libraries, handle_ltlibraries): Set
+       it to a true value when required.
+       (handle_compile): Don't generate any code if the variable
+       `$must_handle_compiled_objects' is not set to a true value.
+       * tests/no-extra-makefile-code.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-08-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: cleanups after de-ansification support removal (2)
+       * automake.in ($get_object_extension_was_run): Remove, it's not
+       really needed anymore.
+       (&get_object_extension): Remove, it's a no-op now.
+       All callers adjusted.
+
+2011-08-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake: cleanups after de-ansification support removal (1)
+       * automake.in (lang_c_rewrite, handle_single_transform): Rename
+       variable `$nonansi_obj' to `$obj'.
+
+2011-08-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       ansi: remove obsolete code/files for de-ANSI-fication support
+       * lib/ansi2knr.1, lib/ansi2knr.c: Deleted.
+       * lib/Makefile.am (dist_pkgvdata_DATA): Do not list them anymore.
+       * lib/am/ansi2knr.am: Delete.
+       * lib/am/Makefile.am (dist_am_DATA): Do not list it anymore.
+       * lib/Automake/Variable.pm (%_am_macro_for_var): Remove entries for
+       `ANSI2KNR' and `U'.
+       * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Don't care anymore
+       about possible definition of the `$U' variable.
+       * automake.in (@common_files): Drop `ansi2knr.1' and `ansi2knr.c'.
+       (struct): Remove scalar field `ansi'.
+       All callers adjusted.
+       (&lang_c_finish, %de_ansi_files): Remove, they're not required
+       anymore.
+       All callers adjusted.
+       ($get_object_extension_was_run): Fix typo in comment.
+       (&get_object_extension): Drop code dealing with de-ansification;
+       this function basically a no-op now, but is required to properly
+       initialize `$get_object_extension_was_run' variable.
+       (&handle_languages, &handle_compile, &lang_c_rewrite): Drop code
+       dealing with de-ansification.
+
+2011-08-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       ansi: reject attempts to use automatic de-ANSI-fication support
+       * tests/protos.m4 (AM_C_PROTOTYPES): Error out whenever called.
+       * lib/Automake/Options.pm (_process_option_list ): Error out
+       with a proper error message when the `ansi2knr' option is used.
+       Related updates to comments.
+       * tests/depacl2.test: Update.
+       * tests/ansi2knr-no-more.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * NEWS: Update.
+
+2011-08-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove tests about obsolete de-ANSI-fication support
+       * tests/ansi.test: Delete.
+       * tests/ansi10.test: Likewise.
+       * tests/ansi2.test: Likewise.
+       * tests/ansi2knr-deprecation.test: Likewise.
+       * tests/ansi3.test: Likewise.
+       * tests/ansi3b.test: Likewise.
+       * tests/ansi4.test: Likewise.
+       * tests/ansi5.test: Likewise.
+       * tests/ansi6.test: Likewise.
+       * tests/ansi7.test: Likewise.
+       * tests/ansi8.test: Likewise.
+       * tests/ansi9.test: Likewise.
+       * tests/cxxansi.test: Likewise.
+       * tests/libobj8.test: Likewise.
+       * tests/subobj3.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-08-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: remove description of de-ANSI-fication support from manual
+       * doc/automake.texi (Auxiliary Programs): Remove mention of
+       `ansi2knr.c' and `ansi2knr.1'.
+       (Obsolete Macros): Remove mention of `AM_C_PROTOTYPES'.  Do not
+       index it nor variables `ANSI2KNR' and `U' anymore.
+       (List of Automake options): Remove mention of `ansi2knr' option,
+       and obsolete entries for concept and option indexes.
+       (Optional): Remove entry about `AM_C_PROTOTYPES'.
+       (@c LocalWords): Remove `ansi' and `knr'.
+       (@menu, @detailmenu): Remove entries about de-ANSI-fication
+       support.
+
+2011-08-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: better respect of TAP usage in wrapped tests
+       * tests/gen-wrap-tests: Partial rewrite to take into account the
+       possibility that the wrapped test uses the TAP protocol.  This
+       complicates the code quite a bit, but is essential to ensure real
+       correctness in all the wrapped scripts.
+       * tests/wrap-tests.sh: Update, and add few more sanity checks.
+
+2011-08-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: use both perl and awk implementations for tests on TAP
+       * tests/gen-wrap-tests (get_list_for_pltap): New function, gets
+       the list of tests that check the Automake TAP support.
+       ($defines_for_pltap): New variable.
+       ($wrapper_type_list): Add "pltap".
+       * tests/defs-static.in: Check that `$am_tap_implementation' is
+       not exported in the environment.
+       * tests/self-check-env-sanitize.tap: Update.
+
+2011-08-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: two single auxiliary scripts to run/generate wrapped tests
+       * tests/config-shell-tests.sh, tests/parallel-tests.sh,
+       tests/gen-config-shell-tests, tests/gen-parallel-tests: Deleted,
+       their roles taken over by ...
+       * tests/wrap-tests.sh, tests/gen-wrap-tests: ... these new more
+       general scripts.
+       * tests/Makefile.am (EXTRA_DIST): Distribute the new scripts, and
+       do not distribute the obsolete ones anymore.
+       ($(srcdir)/parallel-tests.am, $(srcdir)/config-shell-tests.am): Do
+       not include nor generate anymore, they have been superseded by ...
+       ($(srcdir)/wrap-tests.am): ... this new fragment, automatically
+       generated by `gen-wrap-tests'.
+       (PTEST_LOG_COMPILER, SHTST_LOG_COMPILER): Delete, they are now
+       defined in the new `wrap-tests.am' makefile fragment.
+       (TEST_EXTENSIONS): Do not append to it anymore, that is now done
+       by the new `wrap-tests.am' makefile fragment above.
+       ($(parallel_tests:.ptest=.log), $(config_shell_tests:.shtst=.log),
+       $(parallel_tests), $(config_shell_tests): Remove this dependencies,
+       superseded by ...
+       ($(wrap_TESTS), $(wrap_LOGS)): ... these ones.
+       (MAINTAINERCLEANFILES): Delete, it's not used anymore.
+       (TESTS): Do not contain anymore `$(config_shell_tests)' nor
+       `$(parallel_tests)', contain `$(wrap_TESTS)' instead, as defined
+       by `$(srcdir)/wrap-tests.am'.
+       Other related minor edits and reorderings.
+       * bootstrap, tests/.gitignore, tests/README: Update.
+
+2011-08-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: list of tests placed in a separate Makefile fragment
+       This change allows us to easily use make instead of by-hand (and
+       more fragile) grepping to extract the list of hand-written tests
+       from our Makefiles.
+       * bootstrap (BOOTSTRAP_MAKE): New variable.
+       Use it to run make in order to extract the list of hand-written
+       tests from ...
+       * tests/list-of-tests.mk: ... this new file, where they are
+       listed in ...
+       (handwritten_TESTS, tap_with_common_setup_TESTS, tap_other_TESTS):
+       ... these variables, extracted respectively from ...
+       * tests/Makefile.am (handwritten_tests, tap_other_tests,
+       tap_with_common_setup_tests): ... these older variables, now
+       removed.
+       (EXTRA_DIST, expected_list_of_tests): Update w.r.t. the variable
+       names' changes.
+       (include $(srcdir)/list-of-tests.mk): New inclusion.
+       Remove an overkill indirection, and with it ...
+       (tap_with_common_setup_logs): ... this variable.
+       ($(srcdir)/parallel-tests.am, $(srcdir)/config-shell-tests.am):
+       Update to match the new interface of ...
+       (gen-parallel-tests, gen-config-shell-tests): ... these scripts,
+       that now read the list of tests from the standard input.
+
+2011-08-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: prefer AM_... variables to user-reserved ones in Makefile
+       * tests/Makefile.am (TAP_LOG_DRIVER_FLAGS): Renamed ...
+       (AM_TAP_LOG_DRIVER_FLAGS): ... to this.
+
+2011-08-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: some minor fixlets w.r.t. TAP-based tests
+       The variable that is used by our test scripts to decide whether
+       they are "plain" or TAP-based is `using_tap'; however, some
+       peripheral sanity checks and sanitization code in our testsuite
+       were erroneously using the `use_tap' variable instead.  Fix that.
+       * tests/Makefile.am (AM_TESTS_ENVIRONMENT): Nullify `using_tap',
+       not `use_tap'.
+       * tests/defs-static.in: Check that `using_tap', not `use_tap',
+       is not exported.
+       * tests/self-check-env-sanitize.test: Update.
+
+2011-08-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid re-running a test with the 'parallel-tests' option
+       * tests/backcompat5.test (parallel_tests): Define to "no", to
+       prevent the generation of a sibling test script that uses the
+       'parallel-tests' driver.  That would be useless anyway, since
+       we manually override the contents of configure.in, thus clobbering
+       the `parallel-tests' option in AM_INIT_AUTOMAKE.
+       Fix a typo in comments since we are at it.
+
+2011-08-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: defaults to awk+shell driver in tests on TAP support
+       * tests/defs ($am_tap_implementation): Default to "shell", not
+       to "perl".
+
+2011-08-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: list "forgotten" test script in TESTS
+       * tests/Makefile.am (TESTS): Also list ...
+       * tests/java-empty-classpath.test: ... this test.  Since we are
+       at it, remove trailing whitespace from a couple of lines.
+
+2011-08-25  Eric Blake  <eblake@redhat.com>
+
+       ylwrap: fix unusual indentation whitespace
+       * lib/ylwrap: Convert tabs to spaces.
+       Reported by Karl Berry.
+
+2011-08-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: different test scripts cannot share the same basename
+       If two test scripts have the same basename, they will end up
+       sharing the same log file, leading to all sort of undefined and
+       undesired behaviours.  Add a Makefile check verifying that this
+       is not the case.
+       * tests/test-logs-repeated.test: New test, verifying previously
+       unspecified semantics (in the definition of $(TEST_LOGS) from
+       $(TESTS)) that we use in our new check.
+       * tests/Makefile.am (TESTS): Update.
+       (check-no-repeated-test-name): New .PHONY check.
+       (check-local): Depend on it.
+
+2011-08-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure for awk implementation of TAP driver
+       * tests/tap-realtime.test: The awk+shell implementation of the TAP
+       driver must "read ahead" of one line in order to catch the exit
+       status of the test script it runs.  So, in the TAP-producer script
+       here, be sure to echo one "dummy" line after each TAP result line
+       in order not to cause false positives.
+
+2011-08-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: allow escaping of TAP directives
+       * lib/tap-driver.sh (setup_result_obj): Handle escaping of TAP
+       directives in a way tat is (mostly) compatible by what is done
+       by the TAP::Parser module.
+       With this change, the tests `tap-escape-directive.test' and
+       `tap-escape-directive-2.test' now also pass with the shell/awk
+       implementation of the TAP driver.
+
+2011-08-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: more about escaping of TAP directives
+       * tests/tap-escape-directive.test: Make grepping of testsuite
+       progress output slightly stricter.
+       * tests/tap-escape-directive-2.test: New test (failing with the
+       awk implementation of the TAP driver).
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: improve syncing between awk+shell and perl implementations
+       * lib/tap-driver.pl (stringify_test_result): Renamed ...
+       (stringify_result_obj): ... to this.  Break up a clause in the
+       long "if/elsif/.../else" construct to avoid unaesthetic line
+       breaks and to be more synced with the sibling function in
+       `tap-driver.sh'.  Rename the `$result', `$PASS' and `$FAIL'
+       variables to respectively `$result_obj', `$COOKED_PASS' and
+       `$COOKED_FAIL', for clarity and better syncing.
+       (handle_tap_test): Renamed  ...
+       (handle_tap_result): ... to this, and change the name of the
+       `$test' local variable to `$result_obj'.
+       (extract_comment): Reimplement using the simpler `index' and
+       `substr' builtins, rather than with more advanced uses of
+       regular expressions.
+       (%test_results, @test_results): Renamed respectively ...
+       (%test_results_seen, @test_results_list): ... to these, and
+       related adjustments throughout the `TEST_RESULTS' block.
+       (main, get_global_test_result): Refactor and do some cosmetic
+       changes to make these functions clearer and better synced with
+       sibling code in `tap-driver.sh'.
+       Other minor cosmetic and typo fixes.
+       * lib/tap-driver.sh (extract_tap_comment): Remove outdated
+       "FIXME" comments.
+       (get_global_test_result): Small reordering to make it better
+       synced with its sibling function in `tap-driver.pl'.
+       (stringify_result_obj): Consistently use `result_obj' as the
+       parameter name.
+       Other minor cosmetic and typo fixes.
+
+2011-08-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/perl: don't redirect perl warnings/errors to log files
+       With this change, the test `tap-driver-stderr.test' also passes
+       with the perl implementation of the TAP driver.
+       * lib/tap-driver.pl (start): Save the original stderr into the
+       `OLDERR' file handle, and call ...
+       (trap_perl_warnings_and_errors): ... this new function, trapping
+       the `__WARN__' and `__DIE__' "pseudo-signals" to ensure that the
+       warning and error messages goes to that original stderr stream.
+       Since we are at it, be sure to prepend all possible "die" message
+       with the name of the script as given by the `$ME' variable.
+
+2011-08-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/perl: add copyright notice, version string, and emacs stuff
+       * lib/tap-driver.pl: Add proper copyright notice and bug reporting
+       address.  Remove obsolete heading comments.  Add trailing comments
+       for emacs w.r.t. code-formatting rules and automatic updating of
+       the date-based script version saved into the `$VERSION' variable.
+       ($VERSION): Define to the current UTC date.
+
+2011-08-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: don't redirect awk stderr to log files
+       * lib/tap-driver.sh: Handle the file descriptors redirections
+       more smartly, to avoid sending error messages from awk (about
+       e.g. syntax or I/O errors) to the log files instead that to the
+       console.
+       * tests/tap-driver-stderr.test: New test, verifying the improved
+       driver behaviour.  Notice that this test still fails when using
+       the perl implementation of the TAP driver.
+       * tests/Makefile.am (tap_other_tests): Update.
+
+2011-08-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: remove obsolete "FIXME" comment
+       * lib/tap-driver.sh: Remove obsolete "FIXME" comment about our
+       driver losing the exit status of the tested program; this issue
+       has been solved in precedent commit `v1.11-1052-gd630a0d'.  Fix
+       an unrelated typo in comments since we are at it.
+
+2011-08-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: avoid spurious failure on Solaris
+       * tests/tap-signal.test (signal_caught): Fix a regression from
+       commit `v1.11-1052-gd630a0d' that was causing this test to fail
+       spuriously on Solaris (due to an already worked-around Solaris
+       /bin/sh bug, see commit `v1.11-981-g0ef3ef5').
+
+2011-08-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: use the new awk+shell TAP driver in our own testsuite
+       * tests/Makefile.am (TAP_LOG_DRIVER): Redefine to use the new
+       awk+shell tap driver, which should be complete enough for use in
+       a "controlled" production environment.
+
+2011-08-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: handle non-zero exit status from the test command
+       * lib/tap-driver.sh (get_test_exit_message): New function in the
+       awk script, used to extract the exit status of the test program,
+       or at least a good guess of it.
+       (write_test_results): Use it, reporting an ERROR result if it
+       detects that the test program exited with a non-zero status.
+       * tests/tap-signal.test: Account for the differences in the
+       error messages generated by the awk and perl TAP drivers.  Fix
+       an unrelated typo in comments since we are at it.
+
+2011-08-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: prepare to fetch the exit status of the test command
+       * lib/tap-driver.sh: Rewrite some logic in the main parsing loop,
+       to make it possible to read the exit status of the test command
+       from the last line of the input stream.
+
+2011-08-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: refactor for future changes
+       * lib/tap-driver.sh: Rewrite the awk script so that the parsing
+       of the input stream is implemented as a hand-rolled loop in the
+       BEGIN block, using the `getline' builtin.
+
+2011-08-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: avoid spurious failure if rst2html program is missing
+       * tests/tap-html.test ($required): Require `rst2html'.
+
+2011-08-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: support Solaris /usr/xpg4/bin/awk
+       * lib/tap-driver.sh: Use `\t', not `\\t', to represent tabulation
+       character in regexps, even when inside double-quoted strings; that
+       seems to be more portable to Solaris 10 XPG4 awk.
+
+2011-08-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: support Solaris /usr/bin/nawk
+       * lib/tap-driver.sh (close_or_die): Remove, the use of the `close'
+       builtin in there was confusing /usr/bin/nawk from Solaris 10 into
+       a syntax error.
+       (write_test_results): Simply use `close' on the `*.trs' file, that
+       should be enough.
+
+2011-08-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: correctly extract message from SKIP plans
+       * lib/tap-driver.sh (/^1\.\.0+[ \t]*#/): Add a forgotten `?' to
+       the regex used to extract the skip message from a "1..0" TAP plan.
+       * tests/planskip.test: Check for the just-fixed bug.
+       * tests/tap-planskip-unplanned-corner.test: Don't be too strict
+       w.r.t. the formatting of the "skip whole test" message, to avoid
+       failing due to bugs irrelevant for this test (like the one just
+       fixed).
+
+2011-08-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap/awk: support colorized output
+       * lib/tap-driver.sh: Pass definition of colors to the BEGIN block
+       of the awk script, using ...
+       ($init_colors): ... this new variable, which supersedes ...
+       ($red, $grn, $lgn, $blu, $mgn, $std): ... these variables, which
+       have been consequently removed.
+       ($color_tests): We don't have to pass this anymore to the awk
+       script, so do not convert it to a numeric boolean.
+       (decorate_result): Implement for real.
+       With this change, the test 'tap-color.test' now passes.
+
+2011-08-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: real (but still incomplete) awk implementation of TAP driver
+       * lib/tap-driver.sh: Add an incomplete, but mostly working,
+       implementation of a TAP parser and driver in awk.  It doesn't yet
+       support colorized output, fetching of exit status from test
+       programs, nor a way to escape TAP directives in TAP result lines,
+       but passes all the tests of TAP support in the automake testsuite,
+       apart from the following ones:
+         - tap-color.test
+         - tap-escape-directive.test
+         - tap-exit.test
+         - tap-missing-plan-and-bad-exit.test
+         - tap-passthrough-exit.test
+         - tap-planskip-badexit.test
+         - tap-planskip-unplanned-corner.test
+         - tap-signal.test
+       Tested on Debian GNU/Linux with GNU awk 3.1.7 and 3.0.2, "original
+       awk" 2010-05-23-1, and mawk 1.3.3-15 (with which also the test
+       `tap-realtime.test' fails, in addition to those listed above).
+
+2011-08-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix spurious failure due to Solaris 'wc' incompatibility
+       * tests/tap-number-wordboundary.test ($planned): Strip any extra
+       whitespace from the output of `wc', to cater to Solaris 10.
+
+2011-08-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: keyword "SKIP" in TAP plan is case-insensitive
+       * tests/tap-planskip-case-insensitive.test: New test.
+       * tests/tap-planskip.test: Remove now-duplicated checks.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: ambiguous use of TAP "TODO"/"SKIP" directives
+       * tests/tap-ambiguous-directive.test: New test.
+       * tests/tap-todo-skip-together.test: Reference it in heading
+       comments.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: non-directive comments in TAP results are preserved
+       * tests/tap-result-comment.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: TAP result number followed by non-whitespace word boundary
+       * tests/tap-number-wordboundary.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: a TAP result numbered "0" is always out-of-order
+       * tests/tap-test-number-0.test: New, checks that a test result
+       numbered as 0 is to be considered out-of-order; this is
+       consistent with the behaviour of the `prove' utility.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix botched indentation in perl TAP driver
+       * lib/tap-driver.pl (main, Getopt::Long::GetOptions): Fix
+       improper or botched indentation.
+
+2011-08-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: some more tests on corner cases of TAP support
+       * tests/tap-no-spurious.test: Extend checks verifying that a line
+       matching, say, the regex "^ok[a-zA-Z0-9_]" is *not* considered a
+       TAP result.
+       * tests/tap-no-spurious-numbers.test: New test, checking that our
+       TAP driver doesn't spuriously recognize as TAP result numbers what
+       is not (even if it seems pretty close).
+       * tests/tap-negative-numbers.test: New test, checking that our
+       TAP driver doesn't spuriously recognize negative TAP result
+       numbers, but correctly interprets them as test descriptions
+       instead.
+       * tests/tap-plan-leading-zero.test, tap-numbers-leading-zero.test:
+       New tests, checking how our driver fares in recognizing numbers
+       with leading zeroes in TAP results or TAP plans.
+       * tests/tap-planskip-malformed.test: New test, checking that a
+       malformed TAP plan is not recognized as a valid plan.
+       * tests/tap-plan-whitespace.test: New test, checking that a TAP
+       plan line with trailing whitespace is recognized and handled
+       correctly.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: various fixlets and tweakings
+       * tests/seenc.test: Make grepping of automake stderr stricter.
+       Add a trailing `:' command.
+       * tests/symlink.test: Likewise.  Also, define `$am_create_testdir'
+       to "empty" to avoid bringing in unused auxiliary files (only to
+       have to remove them right away), and use proper m4 quoting in
+       `configure.in'.
+       * tests/vpath.test: Make grepping of generated `Makefile.in'
+       slightly stricter.  Prefer trailing `:' over trailing `Exit 0'.
+       * tests/suffix6c.test: Unset OBJEXT to avoid interferences from
+       the environment.
+       * tests/suffix12.test: Do not whitespace-indent `##' comments
+       when they are embedded in a makefile rule: having them indented
+       is not part of the Automake API, and might cause failures with
+       e.g., Tru64 make.
+       * tests/syntax.test: Simplify the `Makefile.am' to ensure that
+       automake doesn't fail for the wrong reasons.  Make grepping of
+       automake stderr slightly stricter.
+       * tests/test-harness-vpath-rewrite.test: Remove useless variable
+       definition from `Makefile.am'.
+       * tests/test-driver-custom-multitest.test: Fix typo in comments.
+       * tests/self-check-me.tap: Fix minor typo in test description.
+       * tests/vars3.test: Make grepping of automake stderr stricter
+       and safer.
+       * tests/version6.test: Add sanity check, verifying that the
+       version number extracted from `automake --version' output seems
+       legit.
+       * tests/auxdir2.test: Renamed ...
+       * tests/auxdir-compauted.tap: ... to this, and converted to the
+       use of TAP.
+       * tests/auxdir4.test: Renamed ...
+       * tests/auxdir-unportable.tap: ... to this, and converted to the
+       use of TAP.
+       * tests/auxdir3.test: Renamed ...
+       * tests/auxdir-misplaced.test: ... to this.
+       * tests/auxdir5.test: Renamed ...
+       * tests/auxdir-nonexistent.test: ... to this.
+       * tests/auxdir9.test: Renamed ...
+       * tests/auxdir-autodetect.test: ... to this.
+       * tests/Makefile.am (TESTS): Update.
+       (XFAIL_TESTS): Remove `auxdir2.test'.
+
+2011-08-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix some redundant autotools calls in tests on TAP
+       * tests/tap-deps.test: Do not call autotools and configure; there
+       is no need to, since this script sources `tap-setup.sh'.
+       * tests/tap-empty-diagnostic.test: Likewise.
+       * tests/tap-escape-directive.test: Likewise.
+       * tests/tap-fancy2.test: Likewise.
+       * tests/tap-no-spurious.test: Likewise.
+       * tests/tap-out-of-order.test: Likewise.
+
+2011-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * THANKS (Daniel Richard G.): Update e-mail address.
+
+2011-08-16  Daniel Richard G. <skunk@iskunk.org>  (tiny change)
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java: avoid compilation errors when CLASSPATH is empty
+       * lib/am/java.am (CLASSPATH_ENV): When redefining `$CLASSPATH',
+       do not append an empty component in case the previous value of
+       CLASSPATH is empty or unset.
+       * tests/java-empty-classpath.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       Fixes automake bug#9306.
+
+2011-08-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: no more spurious successes for FreeBSD make
+       Work around a bug of FreeBSD make bug that was causing the
+       automake-generated "check" target to complete with success
+       even if some tests failed; this happened only when FreeBSD
+       make was run in concurrent mode (as in, e.g., "make -j2
+       check").  The bug is not present in NetBSD make.
+       This change fixes automake bug#9245:
+        <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9245>
+       See also FreeBSD PR bin/159730:
+        <http://www.freebsd.org/cgi/query-pr.cgi?pr=159730>
+       * lib/am/check.am [%?PARALLEL_TESTS%] $(TEST_SUITE_LOG): Use a
+       more "safe" (and apparently redundant) idiom to exit with error,
+       so that the non-zero exit status is picked up also by FreeBSD
+       make when it's running in concurrent mode.
+       * NEWS: Update.
+       * tests/check-concurrency-bug9245.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-08-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       hacking: we now require autoconf 2.68
+       * HACKING ("Working in git"): Use autoconf and autom4te 2.68,
+       not 2.67, in the examples.
+
+2011-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: improve granularity for tests on problematic TAP messages
+       * tests/tap-message-0.test: Break up into ...
+       * tests/tap-msg0-result.test, tests/tap-msg0-directive.test,
+       tests/tap-msg0-planskip.test, tests/tap-msg0-misc.test,
+       tests/tap-msg0-bailout.test: ... these new tests, and extend
+       a little.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: correctly handle string "0" in TAP messages
+       * lib/tap-driver.pl (is_null_string): New function, can be used
+       to determine whether a given string variable is empty or undefined.
+       Useful to avoid pitfalls like:
+         if ($message) { print "$message\n"; }
+       which wouldn't print anything if $message is the literal "0".
+       (handle_tap_test, handle_tap_plan, handle_tap_bailout): Use it,
+       to avoid missing messages composed only by a literal "0" in TAP
+       result descriptions and in skip, todo and bailout explanations.
+       * tests/tap-message-0.test: Enhance.
+       * tests/Makefile.am (XFAIL_TESTS): Remove it, it passes now.
+
+2011-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: a minor simplification in the perl TAP driver
+       * lib/tap-driver.pl: The `--disable-hard-errors' option is a
+       no-op, so just ignore it and its argument.
+
+2011-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: fix help screen for test driver scripts
+       * lib/tap-driver.pl ($USAGE): The `--trs-file' option is mandatory
+       too.
+       * lib/tap-driver.sh (print_usage): Likewise.
+       * lib/test-driver (print_usage): Likewise.
+       ($scriptversion): Update.
+
+2011-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: add a dummy TAP driver script implemented in shell + awk
+       The user can also now decide which implementation of the TAP driver
+       to use in the testsuite by defining the `$am_tap_implementation'
+       variable to either "perl" or "shell".  Future enhancements will
+       allow the testsuite to automatically run the test scripts on TAP
+       support with both the TAP driver implementations, to improve
+       coverage.
+       * tests/defs (fetch_tap_driver): Honor the `$am_tap_implementation'
+       variable to decide which implementation of the TAP driver to fetch.
+       ($am_tap_implementation): Default to "perl".
+       * tests/tap-common-setup.test: Do not fetch the TAP driver, the
+       code in tap-setup.sh does that already (and respecting runtime
+       overriding of `$am_tap_implementation').
+       * lib/tap-driver: Renamed ...
+       * lib/tap-driver.pl: ... to this, and ...
+       ($ME): ... adjusted this.
+       * doc/automake.texi: Adjust to the renaming.
+       * tests/Makefile.am (TAP_LOG_DRIVER): Likewise.
+       * tests/tap-doc2.test: Likewise.
+       * lib/tap-driver.sh: New script, still mostly dummy.
+       * lib/Makefile.am (dist_script_DATA): Update, and since we are at
+       it, rewrite it to make it easier to add new entries in the future.
+
+2011-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: refactor tests on TAP support in view of future changes
+       * tests/defs (fetch_tap_driver): New subroutine; it fetches the
+       automake-provided TAP driver from the `lib/' directory into the
+       current directory, and edits its shebang line so that it will be
+       run with the perl interpreter determined at configure time.
+       * tests/tap-setup.sh: Use it.
+       * tests/tap-common-setup.test: There's no need to AC_SUBST `PERL'
+       anymore, nor to use it in the Makefile to run the TAP driver.
+       Also, use the `fetch_tap_driver' function instead of copying the
+       `tap-driver' auxiliary script directly.
+       * tests/tap-bad-prog.tap: Likewise.
+       * tests/tap-diagnostic-custom.test: Likewise.
+       * tests/tap-doc.test: Likewise.
+       * tests/tap-merge-stdout-stderr.test: Likewise.
+       * tests/tap-more.test: Likewise.
+       * tests/tap-more2.test: Likewise.
+       * tests/tap-recheck.test: Likewise.
+       * tests/tap-summary-aux.sh: Likewise.
+       * tests/tap-basic.test: Likewise, and fix a grammaro in comments
+       since we are at it.
+
+2011-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: fix typo in comments
+       * tests/defs (get_shell_script): Fix typo in the function
+       description.
+
+2011-08-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: missing tap plan and non-zero exit status
+       * tests/tap-missing-plan-and-bad-exit.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix an unportable use of sed
+       * tests/tap-todo-skip-whitespace.test: Alternation with "\|" in
+       sed regular expressions is not portable to (at least) FreeBSD
+       sed; do not use it.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: avoid spurious failure if rst2html program is missing
+       * tests/test-driver-custom-no-html.test: Account for the
+       possibility of a lacking `rst2html' program in our final
+       grepping of make output.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: improve diagnosing and reporting of plan mismatches
+       Problem exposed by a failure in the test 'tap-plan-errors.test'.
+       * lib/tap-driver (NO_PLAN, EARLY_PLAN, LATE_PLAN): New constants.
+       (Throughout the file): Use more complex semantics for `$plan_seen',
+       which now also remember whether the plan that has been seen is an
+       "early" or "late" plan; in turn, this makes ...
+       ($tap_stopped): ... this variable redundant; remove it.
+       (handle_tap_plan): Adjust to avoid producing spurious or confusing
+       error messages about extra or mismatched "late" TAP plans.
+       * tests/tap-plan-corned.test: Adjust and extend.
+       * tests/tap-color.test: Likewise.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: log all TAP stream, even after a "Bail out!"
+       * lib/tap-driver ($bailed_out): New global boolean variable,
+       telling whether a "Bail out!" directive has been seen or not.
+       (handle_tap_bailout): This function does not anymore stop the
+       reading from TAP stream; instead, it sets `$bailed_out' to a
+       true value, so that only the subsequent parsing of the input
+       TAP stream is stopped.
+       (finish): Remove, no more needed, its contents inlined into ...
+       (main): ... this function, with related adjustments in the code
+       flow.
+       (get_test_exit_message): Do not "flush" the input TAP stream
+       to fetch the exit status of test script, it is not anymore
+       required.  Add a sanity check.
+       * tests/tap-bailout-and-logging.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: TAP diagnostics after "Bail out!" aren't reported
+       This is compatible with the behaviour of the `prove' utility.
+       * tests/tap-bailout-suppress-later-diagnostic.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: TAP errors after a "Bail out!" directive aren't reported
+       This is compatible with the behaviour of the `prove' utility.
+       * tests/tap-bailout-suppress-later-errors.test: New test.
+       * tests/tap-bailout-badexit.test: Renamed ...
+       * tests/tap-bailout-suppress-badexit.test: ... to this, for
+       consistency.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: reorganize tests on TAP plans
+       * tests/tap-skip-whole.test: Rename ...
+       * tests/tap-planskip.test: ... to this
+       * tests/tap-skip-whole-badexit.test: Rename ...
+       * tests/tap-planskip-badexit.test: ... to this.
+       * tests/tap-skip-whole-bailout.test: Rename ...
+       * tests/tap-planskip-bailout.test: ... to this.
+       * tests/tap-skip-whole-bailout.test: Rename ...
+       * tests/tap-planskip-later-errors.test: ... to this.
+       * tests/tap-skip-whole-unplanned.test: Rename ...
+       * tests/tap-planskip-unplanned.test: ... to this.
+       * tests/tap-skip-whole-whitespace.test: Rename ...
+       * tests/tap-planskip-whitespace.test: ... to this.
+       * tests/tap-skip-whole-continue.test: Rename ...
+       * tests/tap-planskip-and-logging.test: ... to this, extend to try
+       more cases, and fix heading comments.
+       * tests/tap-skip-whole-lastline.test: Rename ...
+       * tests/tap-planskip-late.test: ... to this, fix heading comments,
+       and remove some checks that are just a duplication of those already
+       performed in the previous script.
+       * tests/tap-results-with-planskip.test: Rename to ...
+       * tests/tap-planskip-unplanned-corner.test: ... this, and improve
+       hading comments.
+       * tests/tap-planskip-later-errors.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: more TAP driver consistency w.r.t. 'prove'
+       * tests/skip-results-with-planskip.test: New test, verifies that
+       test results seen in a TAP stream that has a "plan with SKIP" are
+       flagged as errors.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: improve some comments in the TAP driver
+       * lib/tap-driver (handle_tap_plan): Improve comments describing
+       possible errors in a "plan with SKIP" directive.
+
+2011-08-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: non-zero exit status after "Bail out!" should not be reported
+       This new behaviour is more consistent with that of the `prove'
+       utility.  Also, experience with the use of TAP in the Automake's
+       own test suite has shown that reporting non-zero exit status from
+       a script after it has issued a "Bail out!" directive is mostly
+       redundant, more introducing noise rather than conveying useful
+       information.
+       * lib/tap-driver (finish): Inline the part of it that was getting
+       the script exit status ...
+       (main): ... in here.
+       * tests/tap-bailout-badexit.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: a "plan with SKIP" after test results is an error
+       This new behaviour is both more natural and more consistent with
+       that of the `prove' utility.
+       * lib/tap-driver (handle_tap_plan): Do not stop TAP parsing when
+       a "plan with SKIP" line (e.g., "1..0 # SKIP") is encountered, and
+       do not print a "SKIP" line if some TAP result has already been
+       seen.
+       * tests/tap-skip-whole.test: Adapt.
+       * tests/tap-skip-whole-lastline.test: Likewise.
+       * tests/tap-global-result.test: Adapt and extend.
+       * tests/tap-skip-plan-errors.test: Likewise, and fix an obsolete
+       small part of a comment.
+       * tests/tap-skip-whole-bailout.test: New test.
+       * tests/tap-skip-whole-unplanned.test: Likewise.
+       * tests/tap-skip-whole-continue.test: Likewise.
+       * tests/Makefile.am (tap_with_common_setup_tests): Update.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: avoid possible fork bomb
+       This fixes a regression w.r.t. the master branch, exposed by
+       test 'parallel-tests-fork-bomb.test'.
+       * lib/am/check.am (am--redo-logs): Detect possible infinite
+       recursion due to a test log in $(TEST_LOGS) being the same
+       as $(TEST_SUITE_LOG).
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: enhance test against infinite recursion in test harness
+       * tests/parallel-tests-fork-bomb.test: Enhance and extend a
+       little now, for soon-to-be-implemented more explicit and safer
+       semantics.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: possible infinite recursion in the test harness
+       Motivated by a regression in the 'test-protocols' branch.
+       * tests/parallel-tests-fork-bomb.test: New test, checking that
+       if $(TEST_SUITE_LOG) is in $(TEST_LOGS), we obtain a diagnosed
+       error rather than a make hang or a fork bomb.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: yet more environment cleanup
+       * tests/defs: Also unset the TEST_SUITE_LOG variable.
+
+2011-08-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: some minor refactoring
+       * tests/self-check-exit.tap: Disable the `errexit' shell flag;
+       this allow to remove some boilerplate idioms and to make some
+       code slightly less cumbersome.
+       * tests/self-check-me.tap: Likewise.
+
+2011-08-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: look for TAP-based tests without TAP plan
+       * Makefile.am (sc_tests_tap_plan): New maintainer check.
+       (syntax_check_rules): Add it.
+       * tests/suffix10.tap: Declare a TAP plan.
+       * tests/add-missing.tap: Likewise.
+
+2011-08-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: avoid confusing SKIP messages for errored tests
+       * tests/defs [$use_tap] (exit trap): Don't print the test plan
+       in case the client script exited with a non-zero status.  This
+       avoids the display of redundant "SKIP" messages for tests with
+       lazy plans that error out before any test is run.
+
+2011-08-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: keep more debugging info around in 'add-missing.tap'
+       * tests/add-missing.tap: Use a different directory for each test,
+       so that in case of failure more information is kept around.
+       Since we are at it, remove redundant TAP diagnostic, and define
+       `$am_create_testdir' to "empty" to avoid bringing in unused
+       auxiliary files.
+
+2011-08-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: more granular count of test results in our TAP library
+       * tests/tap-functions.sh ($tap_bad_count_): Removed, superseded
+       by ...
+       ($tap_fail_count_, $tap_xpass_count_): ... these new variables,
+       which keep more granular counts.
+       ($tap_pass_count_: New variable.
+       * tests/defs (exit trap): Adjust and simplify accordingly.
+
+2011-08-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fixlets and improvements in two long TAP-based tests
+       * tests/depmod.tap: Clean up the subdirectories used by tests that
+       passed, to avoid ending up with a too big test directory.  This is
+       especially important since, on each and every system, at least some
+       tests in this script are expected to be skipped (which ones exactly
+       depends on the system), thus causing the test directory not to be
+       removed when the script terminates.
+       * tests/instspc.tap: Likewise (with the difference that tests here
+       are not expected to be skipped, but to xfail).  Give more explicit
+       error message in case of setup failure.  Skip the proper number of
+       tests when required, to avoid spurious errors due to mismatched
+       plan.  Also, really avoid to run the unsupported test cases when
+       the need to skip them is detected.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: recursive make invocations must use $(AM_MAKEFLAGS)
+       * lib/am/check.am ($(TEST_SUITE_LOG)): Pass $(AM_MAKEFLAGS)
+       to $(MAKE) when issuing a recursive make call.
+       Problem detected by the `sc_tests_make_without_am_makeflags'
+       maintainer check.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in 'suffix-chain.tap'
+       * tests/suffix-chain.test: Use more uncommon suffixes that
+       don't trigger built-in recipes with FreeBSD make.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: improvements to our shell TAP library and APIs
+       These improvements impact only the Automake's own testsuite.
+       * tests/tap-functions.sh (plan_): Allow new special arguments
+       "unknown" a.k.a. "later" and "lazy" a.k.a. "now".  Perform
+       sanity check the given arguments.  Adjust incorrect comments.
+       (lazy_plan_): Removed, superseded by the new version of `plan_'.
+       (not): New function, run a command and inverts its exit status.
+       (ok_, not_ok_, skip_): These are just shorthands for common
+       `result_' usages.
+       (xfail_, xpass_, reset_test_count_): Removed, they are not used,
+       nor does a legitimate use for them seem in sight.
+       (not): New function, to run a command inverting its exit status.
+       (command_not_ok_): Removed, superseded by `command_ok_' + `not'.
+       (command_ok_): Extended to accept TAP directives.
+       * tests/defs (trap): Don't use `late_plan_' anymore, use
+       `plan_ "now"' instead.
+       * tests/ac-output-old.tap: Update to take advantage of the new
+       APIs.
+       * tests/self-check-env-sanitize.tap: Likewise.
+       * tests/suffix-chain.tap: Likewise.
+       * tests/suffix10.tap: Likewise.
+       * tests/suffix11.tap: Likewise.
+       * tests/suffix3.tap: Likewise.
+       * tests/suffix8.tap: Likewise.
+       * tests/tap-bad-prog.tap: Likewise.
+       * tests/self-check-exit.tap: Likewise, plus a small improvement
+       in the name of a variable.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: convert some `suffix*' tests to TAP
+       This will allow us to explicitly declare some expected failures
+       involving Solaris make as such, instead of partly papering over
+       them with skips and partly letting them fail too loudly.
+       * tests/suffix-chain.test: Rename ...
+       * tests/suffix-chain.tap: ... to this, and convert to the use of
+       TAP.  Also, fix some bugs since we are at it, and ...
+       ($required): ... require `cc'.
+       * tests/suffix3.test: Rename ...
+       * tests/suffix3.tap: ... to this, and convert to the use of TAP.
+       Also, since we are at it, throw in some formatting fixes.
+       * tests/suffix8.test: Rename ...
+       * tests/suffix8.tap: ... to this, and convert to the use of TAP.
+       Also, since we are at it, throw in some formatting fixes.
+       * tests/suffix10.test: Rename ...
+       * tests/suffix10.tap: ... to this, and convert to the use of TAP.
+       * tests/suffix11.test: Rename ...
+       * tests/suffix11.tap: ... to this, and convert to the use of TAP.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: don't let a known Solaris make bug poison too many tests
+       See automake bug#7670 and bug#7824.
+       * tests/defs (make_can_chain_suffix_rules): New function, tell
+       whether the make implementation in use can chain suffix rules
+       automatically or not.
+       * tests/suffix3.test: Use it to avoid issuing calls to make that
+       are unportable to make implementations that are not smart enough
+       to chain suffix rules automatically.
+       * tests/suffix8.test: Use it to avoid issuing calls to make that
+       * tests/suffix10.test: Use it to avoid issuing calls to make that
+       * tests/suffix11.test: Use it to avoid issuing calls to make that
+       * tests/suffix-chain.test: New test, exposes the limitation that
+       we have papered over in the tests above.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gitignore: more use of anchors
+       * .gitignore: Anchor files that are intended to be ignored only
+       if found in the same directory of the `.gitignore' file, not also
+       in its subdirectories.
+       * doc/.gitignore, doc/amhello/.gitignore, lib/Automake/.gitignore,
+       lib/Automake/tests/.gitignore, tests/.gitignore: Likewise.  Also,
+       where needed, add new entries that were once implied by the
+       non-anchored entries in the upper-level `.gitignore' files.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: avoid spurious output on console, and related fixlets
+       * tests/self-check-cleanup.test: Set `$stderr_fileno_' to `2'
+       in the self tests, to avoid spurious diagnostic on console.
+       * tests/self-check-exit.tap: Only unset `am_explicit_skips' and
+       `$stderr_fileno_' in the self tests, not at the global level, it
+       is more correct.
+       ($init): New variable, to reduce code duplication.
+       Some refactoring and adjustments to the name of the tests.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: few more sanity checks
+       * tests/defs: Catch some more (very unlikely) set-up or internal
+       errors, and diagnose them explicitly.  This is intended mostly
+       to be a theoretic-only improvement.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: really make them "set -e" clean
+       Motivated by a spurious failure of test `instsh3-w.shtst' on
+       Solaris 10.
+       * tests/defs: Make really "set -e" clean, to avoid spurious
+       failures in case this file is sourced by a test script that has
+       already set the `errexit' flag.  To be sure we don't regress,
+       move the `set -e' call much earlier, and make the comment telling
+       about the expected "set -e" cleanliness more loud and outstanding.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: register an expected failures with Solaris /bin/sh
+       Solaris 10 /bin/sh erroneously exit with success right away when
+       the following three conditions are met at the same time:
+        1. the `errexit' flag is active,
+        2. an exit trap is installed, and
+        3. a non-existing command is issued.
+       * tests/self-exit.tap: When that bug is detected, issue an XFAIL
+       rather than a FAIL.  Since we are at it, improve by avoiding
+       creation of stray temporary files when testing for non-executable
+       commands.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gitignore: update and improve for the testsuite files
+       * tests/.gitignore: Don't ignore temporary partial log files,
+       autogenerated tests and makefile fragments that are not used
+       anymore.  Anchor all the remaining patterns.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: some new uses of TAP, few extensions
+       * tests/self-check-me.test: Renamed ...
+       * tests/self-check-me.tap: .. to this, and converted to use TAP.
+       * tests/self-check-exit.test: Renamed ...
+       * tests/self-check-exit.tap: .. to this, and converted to use TAP.
+       Set `$stderr_fileno_' to `2', to avoid spurious messages on the
+       console.  Add a new test, and relax another one.
+       * tests/self-check-env-sanitize.test: Renamed ...
+       * tests/self-check-env-sanitize.tap: .. to this, and converted to
+       the use TAP.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: test directory creation more configurable
+       After this change, the individual tests will be able to tell
+       `./defs' whether or not to create a temporary test directory
+       for them, and if yes, whether or not to pre-populate it.
+       * tests/defs: Only create the temporary test directory if the
+       variable `$am_create_testdir' is not set to "no".  In this
+       case, only pre-populate it if that variable is not set to
+       `$empty'.
+       * tests/defs-static.in: Check that `$am_create_testdir' is not
+       exported in the environment.
+       * tests/self-check-env-sanitize.test: Update.
+       * tests/self-check-dir.test: Extend, and make deeper and more
+       robust.
+       * tests/README (Section "Writing test cases" subsection "Do"):
+       Update.
+       * tests/autodist.test: Set `$am_create_testdir' instead of
+       removing by hand files created by ./defs.
+       * tests/tap-doc2.test: Likewise.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: more uses of the `seq_' function
+       * tests/parallel-tests-exit-statuses.test: Use the `seq_' function
+       from `tests/defs', instead of duplicating its semantics.
+       * tests/testsuite-summary-count.test: Likewise.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: drop redundant environment sanitization
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Don't remove `planned'
+       from the environment.
+       * tests/defs-static.in: Don't complain if `planned' is set in
+       the environment.
+       * tests/self-check-env-sanitize.test: Update.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: fix bug in plain version of `skip_all_'
+       * tests/plain-functions.sh (skip_all_): Call `skip_', not `skip'.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: small cleanups and tweakings
+       * tests/defs: Where possible, prefer `framework_failure_' or
+       `fatal_' to `Exit 99'.  Try to catch more possible hard errors
+       and setup failures.  Do not hide expected error messages.  Avoid
+       a couple of forks when copying files from `$(top_srcdir)/lib'.
+       ($signal): Remove, no more needed.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: improve interface for giving early TAP plan
+       Since commit `v1.11-976-g4740f56', an early TAP plan can also be
+       specified after input lines have already been seen, as long as
+       no one of them is a TAP result line.  We can now take advantage
+       of this in our own testsuite, allowing the TAP-based scripts to
+       specify their earlier plan after having included `./defs'.  In
+       particular, this offers the benefit of allowing those scripts to
+       issue a "skip all" plan (e.g., "1..0 # SKIP reason ...") after
+       the inclusion of `./defs', which wasn't possible with the older
+       interface (introduced in commit `v1.11-1114-g0286308').
+       * tests/defs: Don't try to call `plan_' if `$planned' is defined,
+       the calling scripts can do that directly now.
+       * tests/ac-output-old.tap: Use `plan_' directly instead of
+       setting `$planned' before including `./defs'.
+       * tests/automake-cmdline.tap: Likewise.
+       * tests/depmod.tap: Likewise.
+       * tests/instspc.tap: Likewise.
+       * tests/tap-bad-prog.tap: Likewise.
+       * tests/add-missing.tap: Don't set `$planned'.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: fix bug in TAP version of `skip_all_'
+       * tests/tap-functions (skip_all_): Set `$have_tap_plan_' to "yes"
+       when called, so that the exit trap won't write another TAP plan.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: fix skip directives to work also with TAP-based tests
+       * test/defs: Use `skip_all_', not `skip_', to issue a skip of the
+       whole calling test script.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: more environment cleanup
+       * tests/defs: Also unset variables AM_COLOR_TESTS and
+       AM_TESTS_ENVIRONMENT.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: more minor VPATH-rewrite issues
+       * tests/am/check.am (am__set_TESTS_bases, $(TEST_SUITE_LOGS),
+       am--redo-logs, recheck, recheck-html): Cosmetic fixlets to
+       minimize the risk of unwanted VPATH rewrites.
+       (check-TESTS): Likewise, and normalize trailing whitespace
+       since we are at it.
+       Bugs exposed by test cases `check6-p.test' and `check7-p.test'.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: "make -n check" works correctly with Solaris make
+       To avoid some recipes being executed with "make -n", we used the
+       trick of issuing recursive make calls not directly with $(MAKE),
+       but with a simple indirection instead:
+         ...
+         am__stealth_MAKE = $(MAKE)
+         ...
+         target:
+             ... $(am__stealth_MAKE) ...
+         ...
+       This hack worked with GNU make, but, unfortunately, not with
+       Solaris make.  The present change removes the hack, and uses more
+       proper idioms to avoid unwanted recipe executions with "make -n".
+       Bug exposed by test case `parallel-tests-dry-run.test'.
+       * lib/am/check.am (am__stealth_MAKE): Remove, no more used.
+       (.log.trs): Break recipe in multiple shell invocations.
+       ($(TEST_SUITE_LOG)): Likewise, and move some corner-case parts of
+       the recipe to ...
+       (am--redo-logs): ... this new internal helper .PHONY target.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure with Solaris make
+       * tests/distcheck-configure-flags-am.test: Avoid using `+=' too
+       liberally with AM_DISTCHECK_CONFIGURE_FLAGS, since the line breaks
+       so introduced, in conjunction with single quotes, might confuse
+       Solaris make.
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: fixlet in workaround for VPATH rewrite issue
+       Fixes a minor in previous commit `v1.11-983-gfda3de5'.
+       * lib/am/check.am (am__set_TESTS_bases): Add forgotten end-of-line
+       anchor to sed expression.  In comments, add reference to ...
+       * tests/test-trs-basic.test: ... this test, which has been adapted
+       and tightened (and tweaked).
+
+2011-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: work around a VPATH rewrite issue
+       * lib/am/check.am (am__TEST_BASES): Removed, it's role taken
+       over by ...
+       (am__set_TESTS_bases): ... these new variable.
+       ($(TEST_SUITE_LOG): Use it, to avoid VPATH rewrite issues.
+       * automake.in (handle_tests): Update the code for the cleanup
+       of the `.trs' file to use `$(TEST_LOGS)' instead of
+       `$(am__TEST_BASES)'.
+       * tests/test-harness-vpath-rewrite.test: New test, better
+       exposing the problem fixed by this change
+       * tests/Makefile.am (TESTS): Add it.
+       * tests/test-trs-basic.test: Update and extend.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: work around Solaris XPG4 make segfault
+       Issue exposed by test `posixsubst-tests-p.test', and similar to
+       the problem solved by commit `v1.11-159-ge7aa360'.
+       * lib/am/check.am [%?PARALLEL_TESTS%] (check-TESTS): Trim trailing
+       whitespace from $list, to avoid triggering a nasty bug (potential
+       segfault) on Solaris XPG4 make and Heirloom make.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix weird spurious failure with Solaris /bin/sh
+       Solaris /bin/sh, when killed with a SIGTERM or SIGINT signal, can
+       apparently end up exiting with exit status 208, instead of leaving
+       the correct wide exit status to the parent.  See:
+        <http://dbaspot.com/shell/396118-bourne-shell-exit-code-term.html>
+       Work around this incompatibility.
+       * tap-signal.test: Look for the above Solaris bug.
+       (signal_caught): Adapt to handle it.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix another spurious failure on Solaris make
+       * tests/parallel-tests-log-override-recheck.test: Filter make
+       output before grepping it, for make implementations that, like
+       Solaris' one, print the whole of the failed recipe on failure.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix two spurious failures on Solaris make
+       * tests/tests-environment-and-log-compiler.test: Do not fail if
+       "make -n check" fails, as that is issued only for debugging, its
+       semantics being tested in other test scripts.
+       * tests/test-driver-strip-vpath.test: Likewise.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap driver: refactor and remove dead code
+       * lib/tap-driver (get_tap_line): Removed, ...
+       (all callers): ... updated to use $parser->next directly instead.
+       (peek_tap_line, unget_tap_line, @tap_lines): Remove, they're not
+       used anymore.
+       (TAP_PEEKING): Block deleted, all its subroutines and variables
+       having been removed.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix spurious failure in a test on TAP support
+       * tests/tap-passthrough-exit.test: When the `--ignore-exit' flag
+       of the TAP driver is used, don't look for a message reporting the
+       non-zero exit statuses of tests in the log files; such message is
+       not expected to be there anymore.  Related simplifications.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: plan location is more liberal w.r.t. non-TAP lines
+       With this change, only lines that are TAP results will matter
+       w.r.t. the position of the TAP plan in the input; for example,
+       this input:
+         this is a non-TAP line
+         # and this a TAP diagnostic line
+         1..1
+         ok 1
+       was considered to be an error, diagnosed with a message "test
+       plan in middle of output"; as effect of the current change, such
+       input is now valid.  This is more consistent with the behaviour
+       of the `prove' utility.
+       * lib/tap-driver ($lineno): Removed, no more needed.
+       ($tap_stopped): New global variable.
+       (stringify_test_result): Return "ERROR" if a TAP result is found
+       when `$tap_stopped' is set to true.
+       (handle_tap_test): Diagnose TAP results that comes after a late
+       plan.  Add a couple of blank lines, for clarity.
+       (handle_tap_plan): Set `$tap_stopped' to true after a late plan
+       is encountered.  Do not complain anymore for extra non-TAP lines
+       preceding or following the plan.  Adjust comments.
+       (main): Don't increment $lineno anymore.
+       * tests/tap-plan.test: Extend a bit, and remove stale comment.
+       * tests/tap-color.test: Adjust.
+       * tests/tap-passthrough.test: Likewise.
+       * tests/tap-plan-corner.test: Adjust and extend.
+       * tests/tap-plan-errors.test: Likewise.
+       * tests/tap-plan-middle.test: New test.
+       * tests/tap-plan-corner2.test: Delete, it's obsolete now.
+       * tests/Makefile.am (XFAIL_TESTS): Remove it.
+       (tap_with_common_setup_tests): Likewise, and add
+       `tap-plan-corner.test'.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: remove now-passing test from XFAIL_TESTS
+       * tests/Makefile.am (XFAIL_TESTS): Remove `tap-signal.test',
+       which is passing since previous commit `v1.11-974-gc7fa872'.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: get name of TAP-using tests correctly
+       This change fixes the names of the temporary directories used
+       by the TAP-based tests (e.g., test `foo.tap' now uses `foo.dir'
+       rather than `foo.tap.dir'); more importantly, this make the
+       variable `$destdir' defined in `tests/defs' usable also in the
+       TAP tests.
+       ($me): Also strip the any `.tap' suffix from the name of the
+       test.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: TAP tests properly decide when to remove tempdirs
+       Before this change, the TAP tests in the Automake testsuite were
+       removing the temporary test directory even when they failed or
+       were skipped, thus making debugging more difficult.
+       * tests/tap-functions.sh (incr_tap_count): Removed, superseded
+       by ...
+       (incr_): ... this function, which can increment the value of any
+       variable passed to it.
+       (result_):  Updated to use `incr_' instead of the now-removed
+       `incr_tap_count_'.  Keep count of failures, xfailures, xpasses,
+       and skips, using ...
+       ($tap_skip_count_, $tap_bad_count, _$tap_xfail_count_): ...
+       these new variables.
+       * tests/defs (trap): Try to use their values to decide whether
+       the temporary directory being used by the test script should be
+       removed or not.  Other code reorganizations.  And move the code
+       for the removal of the temporary directory out to ...
+       (rm_rf_): ... this new subroutine.
+       (Main code): Use that instead of duplicating the code.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: improve and refactor our custom TAP shell library
+       This change is mostly done in preparation for the next one.
+       * tests/tap-functions.sh (result_with_directive_): Merge into ...
+       (result_): ... this function, which has been greatly extended and
+       improved in various ways.
+       (ok_, not_ok_, skip_, xfail_, xpass_): Adjust.
+       Adjust comments.  Remove an extra empty line.
+       * tests/instspc.tap: Use the new improved interface of `result_'.
+       * tests/tap-bad-prog.tap: Likewise.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: update "user interface" description in tests/README
+       * tests/README (Subsection "Interpretation"): Mention the "ERROR"
+       outcome.
+       (Subsection "Getting details from failures"): Don't tell that the
+       test scripts can be run directly, this is not 100% true; anymore;
+       instead ...
+       (Subsection "About the tests"): ... use this new subsection to
+       explain how to run the tests (either simple or TAP-based) by hand.
+       (Subsection "Supported shells"): Extend to refer to TAP tests too.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: TAP tests can have early plan now
+       * tests/defs: When using TAP, allow the user to specify the number
+       of tests through the `$planned' variable.
+       (trap): Do not print the auto-generated plan if an explicit one
+       has already been printed.
+       * tests/defs-static.in: Complain and bail out if the `$planned'
+       variable is exported in the environment.  Reformat the code to
+       facilitate future additions.
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Neutralize `$planned'.
+       * tests/self-check-env-sanitize.test: Update.
+       * tests/ac-output-old.tap: Give an explicit TAP plan, by defining
+       `$planned' just before including `./defs'.
+       * tests/depmode.tap: Likewise.
+       * tests/automake-cmdline.tap: Likewise.
+       * tests/tap-bad-prog.tap: Likewise.
+       * tests/instspc.tap: Likewise, and related adjustments.
+       * tests/add-missing.tap: Make it explicit that we have no a-priori
+       plan, and tell why.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: run autogenerated tests with $(LOG_COMPILER) too
+       This change enhances consistency in the testsuite.
+       * tests/Makefile.am: Some cosmetic reordering, to keep the
+       definition of FOO_LOG_COMPILER near to the place where `.foo'
+       is added to $(TEST_EXTENSIONS).
+       (PTEST_LOG_COMPILER): Run `$(srcdir)/parallel-tests.sh' with
+       `$(LOG_COMPILER)', not with `$(SHELL)'.
+       (SHTST_LOG_COMPILER): Likewise.
+
+2011-08-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: run TAP and "plain" tests with the same $(LOG_COMPILER)
+       With this change, it will be easier to override, at make time, the
+       shell used to run the tests.
+       * tests/Makefile.am (LOG_COMPILER): Define to `$(SHELL)'.
+       (TEST_LOG_COMPILER): Re-define to `$(LOG_COMPILER)'.
+       (TAP_LOG_COMPILER): Likewise.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: run TAP-based tests explicitly with $(SHELL)
+       * tests/Makefile.am (TAP_LOG_COMPILER): Define to `$(SHELL)'.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap driver: handle signals received by the tests being run
+       * lib/tap-driver (get_test_exit_message): Also deal with signals,
+       by using the `wait' method of the TAP::Parser object instead of
+       the `exit' method.  This required the use of the standard perl
+       module `POSIX'.
+       * doc/automake.texi (Use TAP with the Automake test harness):
+       Document that `--ignore-exit' has effect also on terminating
+       signals.  Add a "synchronizing" comment that references the tests
+       'tap-exit.test' and 'tap-signal.test'.
+       * tests/tap-signal.test: Extend and adjust.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test driver: a preparatory refactoring (2)
+       * lib/tap-driver (finish): Move code to fetch the message about
+       the exit status of the test being run to ...
+       (get_test_exit_message): ... this new subroutine.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap driver: a preparatory refactoring (1)
+       * lib/tap-driver (finish): Do not flush the TAP stream nor
+       fetch the exit status of the TAP producer if running with
+       the `--ignore-exit' option.  Obviously, don't try to write
+       such exit status in the test log anymore.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: typofix in the name of a function in the TAP driver
+       * lib/tap-driver (testuite_error): Renamed ...
+       (testsuite_error): ... to this, and minor related reformatting.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: scripts with a SKIP plan but with exit status != 0 must error
+       This change has been motivated by Automake's own testsuite.  Some
+       TAP tests there were erroring out (due to unexpected, unhandled
+       failures) before having encountered TAP result, so that the
+       simple-minded shell library implementing TAP generation ended up
+       printing a "1..0" trailing test plan; this caused the script to be
+       reported as a SKIP rather than an ERROR -- a nasty false negative.
+       * lib/tap-driver: Add prototypes for each subroutine, to free up
+       the order in which they can be defined and called.
+       (main): Move the code checking for a bad exit status of the TAP
+       producer ...
+       (finish): ... here, and flush the TAP stream to ensure that the
+       parser always obtains the producer's exit status.
+       * tests/tap-skip-whole-badexit.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Add it.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: fix whitespace munging of diagnostic messages
+       * lib/tap-driver (extract_tap_comment): Pass the `g' flag to the
+       substitution operator, to strip also trailing whitespaces.  Fixes
+       a failure in test `tap-whitespace-normalization.test'.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: refactor and cleanup 'instspc.tap'
+       * tests/instspc.tap (is_in_list): New helper subroutine.
+       (expected_to_fail): Re-implement using it.
+       (define_problematic_string): Likewise.  Also, rename the special
+       arguments `build-fail' and 'install-fail' to respectively
+       `builddir-fail' and `destdir-fail', and other related changes.
+       (Test data definition): Adapt.
+       ($instspc_xfail_builds_list): Renamed ...
+       ($builddir_xfails): ... to this.
+       ($instspc_xfail_installs_list): Renamed ...
+       ($destdir_xfails): ... to this.
+       ($instspc_names_list): Renamed ...
+       ($test_names_list): ... to this.
+       ($instspc_test_string): Renamed ...
+       ($test_string): ... to this.
+       Add some explicative and "FIXME" comments.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: use TAP for `depmod*' tests, related simplifications
+       * tests/depmod-tests.sh: Delete this complex and multifarious
+       script, moving all it checks it used to perform into ...
+       * tests/depmod.tap: ... this TAP-based test script.  And extend
+       it quite a bit, since the new form of the test was papering over
+       some pre-existing failures (this was due to the fact that the
+       values used for the VPATH were shorter in the new test script).
+       * tests/depmod-data.test: Deleted.
+       * tests/Makefile.am ($(srcdir)/depmod-tests.am): Don't include
+       nor generate it anymore.
+       (EXTRA_DIST): Don't distribute depmod-tests.sh anymore.
+       (TEST_EXTENSIONS): Remove '.depmod'.
+       (DEPMOD_LOG_COMPILER): Deleted.
+       (depmod-data.log, $(depmod_tests:.depmod=.log)): Delete
+       dependencies for these files, which are not used anymore.
+       ($(depmod_tests)): Delete this dummy dependency declaration.
+       (TESTS): Remove $(depmod_tests).
+       (handwritten_tests): Remove depmod-data.test, add depmod.tap.
+       * bootstrap: Don't generate tests/depmod-tests.am anymore.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: use TAP for `instspc*' tests, related simplifications
+       * tests/instspc-tests.sh: Delete this complex and multifarious
+       script, moving all it checks it used to perform into ...
+       * tests/instspc.tap: ... this TAP-based test script.
+       * tests/instspc-data.test: Deleted.
+       * tests/Makefile.am ($(srcdir)/instspc-tests.am): Don't include
+       nor generate it anymore.
+       (EXTRA_DIST): Don't distribute instspc-tests.sh anymore.
+       (TEST_EXTENSIONS): Remove '.instspc'.
+       (INSTSPC_LOG_COMPILER): Deleted.
+       (XFAIL_TESTS): Remove $(instspc_xfail_tests).
+       (instspc-data.log, $(instspc_tests:.instspc=.log)): Delete
+       dependencies for these files, which are not used anymore.
+       ($(instspc_tests)): Delete this dummy dependency declaration.
+       (TESTS): Remove $(instspc_tests).
+       (handwritten_tests): Remove instspc-data.test, add instspc.tap.
+       * bootstrap: Don't generate tests/instspc-tests.am anymore.
+
+2011-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: do fd redirections with $(AM_TESTS_FD_REDIRECT)
+       * tests/Makefile.am: The redirections of file descriptors needed
+       by our test scripts is now done using the $(AM_TESTS_FD_REDIRECT)
+       variable (the new blessed way since commit `v1.11-906-gb9e9d54'),
+       not using an hack involving $(AM_TESTS_ENVIRONMENT).  This has
+       the further benefit of allowing the use of $(TESTS_ENVIRONMENT)
+       again on part of the users.
+       * tests/Makefile.am (AM_TESTS_ENVIRONMENT): Remove redirection of
+       file descriptors.
+       (AM_TESTS_FD_REDIRECT): Redirect file descriptor 9 to original
+       stderr.
+       Comments adjusted.
+       * tests/plain-functions.sh ($stderr_fileno_): Update comment.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: use custom TAP diagnostic in our own tests
+       This change allow us to easily and transparently avoid spurious
+       TAP diagnostic in our own testsuite, with the help of the new
+       `--diagnostic-string' option of our TAP test driver.
+       * tests/Makefile.am (TAP_LOG_DRIVER_FLAGS): Also pass option
+       `--diagnostic-string' with value `#%#' (necessarily obtained
+       through some shell indirections).
+       * tests/tap-functions.sh (diag_): Assume that the string denoting
+       TAP diagnostic is stored in the `$diag_string_' variable.  Update
+       comments.
+       ($diag_string_): Initialize to "#".
+       * tests/defs ($diag_string_): Re-define to "#%#".
+       (show_): Remove, it's obsolete now.
+       * add-missing.tap: Don't use `show_' anymore to avoid spurious
+       TAP diagnostic; `cat' should suffice now.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: fix typo in TAP driver version message
+       * lib/tap-driver (anonymous subroutine printing the script version
+       message): Add missing trailing newline to the version message.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap docs: we don't support pragma or version directives (yet)
+       * doc/automake.texi (Incompatibilities with other TAP parsers
+       and drivers): Document that limitation.  Normalize an unrelated
+       "TODO" item.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: new option to change the string designating TAP diagnostic
+       Here we introduce a new option `--diagnostic-string' in our TAP
+       test driver, that allows the user to specify which string should
+       denote the beginning of a TAP diagnostic line.  This change is
+       not gratuitous, nor result if over-engineering: it is motivated
+       by real issues that have emerged during the use of TAP in the
+       Automake's own testsuite (see the commit `v1.11-1082-g9b967c2'
+       "testsuite: yet more use of TAP, and related extensions").
+       * doc/automake.texi (Use TAP with Automake test harness): Document
+       the new option.
+       (Incompatibilities with other TAP parsers and drivers): Report it
+       as a potential source of incompatibility.
+       * lib/tap-driver ($diag_string): New global variable, defaulting
+       to "#", and whose value can be changed ...
+       (Getopt::Long::GetOptions): ... by the newly recognized option
+       `--diagnostic-string'.
+       (handle_tap_comment): Subroutine removed, some of its simple logic
+       inlined ...
+       (main): ... in here, where now ...
+       (extract_tap_comment): ... this new subroutine is used.
+       ($USAGE): Adjust.
+       * tests/tap-diagnostic.test: Make one check slightly stricter.
+       * tests/tap-diag-custom.test: New test.
+       * tests/Makefile.am (tap_other_tests): Add it.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: add small "synchronization" comment to `test-driver'
+       * lib/test-driver: Add comment to the code initializing ANSI color
+       escapes, telling to keep it in sync with the similar initialization
+       in `lib/am/check.am'.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix spurious failure w.r.t. use of bare "exit"
+       * tests/check12.test: Cosmetic changes to avoid triggering a
+       spurious failure of the `sc_tests_Exit_not_exit' maintainer
+       check.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: update comments to reflect recent heavy changes
+       * lib/am/check.am [%?PARALLEL_TESTS%]: Update the comments to
+       reflect the recent changes.  Remove quite many comments that
+       were merely duplicating excerpts from the Automake manual.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: small cleanups and refactorings in test harness and drivers
+       * lib/tap-driver (yn): New subroutine, converts a boolean value to
+       a "yes" or "no" string.
+       (write_test_results): Use it, and related reformatting.
+       * lib/test-driver (trap): Also remove the `.trs' file on signals,
+       for extra safety.
+       (fatal): Remove this function, it's never used.
+       ($logfile, $trsfile): Renamed ...
+       ($log_file, $trs_file): ... to these, for clarity, and in order to
+       be more consistent with the `tap-driver' script.
+       Improve a couple of comments.
+       * automake.in (handle_tests): Don't define anymore the now-obsolete
+       make macro `$(TEST_LOGS_TMP)', nor add it to the list of files to
+       be removed upon "make mostlyclean".
+       * lib/am/check.am ($(TEST_SUITE_LOG)): New shell function `f_ok',
+       tells whether a path refers to an existing, regular, readable file.
+       Use it throughout.
+       (recheck): Be safer w.r.t. make implementation that run recipes
+       with `errexit' shell flag active.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: use AM_TESTS_FD_REDIRECT where appropriate
+       * parallel-tests-interrupt.test: Use AM_TESTS_FD_REDIRECT, not
+       AM_TESTS_ENVIRONMENT, to define file descriptors' redirection
+       for "make check".  Fix botched comment.
+
+2011-08-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: some fixlets in documentation on testsuites support
+       * doc/automake.texi (Script-based Testsuites): Rename node ...
+       (Scripts-based Testsuites): ... to this.  Break overly long lines
+       in an example (were causing problems with PDF output).
+       (Parallel Test Harness): Don't intend paragraphs that come after
+       examples or bulleted list.
+       (Overview of Custom Test Drivers Support): Fix typo s/the the/the/.
+       (Declaring Custom Test Drivers): When giving an aside, prefer comma
+       to parentheses, as it disrupts the reading flow less.
+       (API for Custom Test Drivers): Remove a sentence that was basically
+       duplicated from the previous subsection.
+       (Command-line arguments for test drivers): Don't intend paragraph
+       coming after an itemized list.  Clarify wording and fix grammaros.
+       Add a couple of cross-references to earlier explanations of `.log'
+       and `.trs' files.
+       (Links and external resources): Node renamed ...
+       (Links and external resources on TAP): ... to this, for clarity.
+       Slightly extend and clarify introductory sentence.
+
+2011-08-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: be aware of more metadata, simplify test drivers
+       * lib/am/check.am ($(TEST_SUITE_LOG)):  When producing the
+       global test log, take into account the new metadata field
+       `:global-test-result:, to write nicely formatted RST section
+       titles, instead of leaving this chore to the individual test
+       drivers.
+       (am_rst_section): Re-introduce this variable, as removed in
+       commit `v1.11-870-ga27c9c4'.
+       * lib/test-driver, lib/tap-driver: Write the global test result
+       as metadata in the `.trs' file, not as (part of) a formatted RST
+       subsection title in the `.log' file.  Related simplifications;
+       in particular, get rid of temporary files usage.
+       * doc/automake.texi (Log files generation and test results
+       recording): Document the new metadata.
+       * tests/check12.test: Update.
+       * tests/parallel-tests-harderror.test: Likewise.
+       * tests/parallel-tests-interrupt.test: Likewise.
+       * tests/parallel-tests-log-override-2.test: Likewise.
+       * tests/parallel-tests-log-override-recheck.test: Likewise.
+       * tests/parallel-tests-unreadable.test: Likewise.
+       * tests/tap-global-result.test: Likewise.
+       * tests/test-metadata-results.test: Likewise.
+       * tests/test-log.test: Likewise, and another minor unrelated fix.
+       * tests/test-metadata-global-result.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: check that also a trailing TAP plan can hold a skip directive
+       * tests/tap-skip-whole-lastline.test: New test.
+       * tests/Makefile.am (tap_with_common_setup_tests): Add it.
+
+2011-08-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: more correct names for a couple of tests
+       * tests/parallel-tests-ext-driver.test: Rename ...
+       * tests/parallel-tests-log-compiler-1.test: ... to this, and
+       adjust heading comments.
+       * tests/parallel-tests-ext-driver-prog.test: Rename ...
+       * tests/parallel-tests-log-compiler-2.test: ... to this, and
+       adjust heading comments.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-08-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix another spurious failure
+       * tests/parallel-tests-ext-driver.test: Name out custom/dummy
+       log compilers as `foo-compiler' rather `foo-driver'; not only
+       this is less confusing, it also avoids errors due to the dummy
+       log compiler `test-driver' overriding the `test-driver' helper
+       script installed by Automake.
+       * tests/parallel-tests-ext-driver-prog.test: Adjust heading
+       comments.
+
+2011-08-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix a spurious failure
+       * tests/parallel-tests-ext-driver.test: Exporting of environment
+       variables directly from $(LOG_COMPILER) variables is not allowed
+       anymore.  Adjust to this.
+
+2011-08-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: yet more use of TAP, and related extensions
+       * tests/defs (show_): New function, display the contents of one or
+       more files on stdout, with bells & whistles (both for cosmetic and
+       practical reasons, the latter aimed at avoiding spurious TAP
+       diagnostic).
+       (AUTOMAKE_run): Extend and adapt to make it compatible with TAP
+       based tests.  Since we are at it, make its implementation more
+       namespace-safe, and improve its command-line interface.
+       (AUTOMAKE_fails): Adapt to the new command-line interface of
+       `AUTOMAKE_run'.
+       * tests/add-missing.test: Renamed ...
+       * tests/add-missing.tap: ... to this, and converted to the use
+       of the TAP protocol, and of the new `show_' function.
+       * tests/automake.test: Renamed ...
+       * tests/automake-cmdline.tap: ... to this, and converted to the
+       use of the TAP protocol.
+       * tests/getopt.test:  Adapt to the new command-line interface
+       of `AUTOMAKE_run'.
+       * tests/cond44.test: Likewise.
+       * tests/cond45.test: Likewise.
+       * tests/configure.test: Likewise.
+       * tests/license2.test: Likewise.
+       * tests/parallel-am.test: Likewise.
+       * tests/parallel-am3.test: Likewise.
+       * tests/tags2.test: Likewise.
+       * tests/werror3.test: Likewise.
+       * tests/werror4.test: Likewise.
+       * tests/amopts-variable-expansion.test: Likewise.
+       * tests/warnings-win-over-strictness.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+       (TAP_LOG_DRIVER_FLAGS): Add `--merge', so that TAP diagnostic is
+       reported in the testsuite progress output.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix more maintainer-check failures
+       * tests/test-driver-custom-no-html.test (no-rst): Use `EOF',
+       not `EoL', as the here-document delimiter.
+       * tests/test-trs-basic.test: Use `cat + here-doc' rather
+       than `echo' when creating the dummy test scripts, to please
+       maintainer-check.
+       * tests/test-trs-recover.test: Use creative quoting where
+       needed, to please maintainer-check.
+       * tests/parallel-tests-no-color-in-log.test: Likewise.
+       * tests/parallel-tests-dry-run.test: Likewise.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix maintainer-check failures, both real and spurious
+       * tests/amhello-binpkg.test: Use "$MAKE", not bare "make".
+       * Makefile.am (sc_perl_local): Also allow perl special variable
+       `$~' to be localized.  And be slightly laxer in the regexp, to
+       allow for usages like "local $_ = $foo;".
+       (sc_tests_overriding_macros_on_cmdline): Also allow for command
+       line overriding of the `DISABLE_HARD_ERRORS' make variable.  Try
+       to avoid false positives for usages like "$MAKE || st=$?".
+
+2011-08-03  Bruno Haible  <bruno@clisp.org>
+
+       docs: how to use '-I' option in AM_CPPFLAGS for best VPATH support
+       * doc/automake.texi (Program Variables): Recommend -I options to
+       both the build directory and the source directory when needed.
+
+2011-07-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: relax a test on amhello examples to cater to Solaris tar
+       * tests/amhello-binpkg.test: When the tar implementation in use
+       is not GNU tar, relax the tests on tar output, to avoid spurious
+       failures.  For example, "tar cvf ..." with GNU tar can output
+       lines like "./usr/bin/hello" on the standard output, while with
+       Solaris tar it can output lines like "a ./usr/bin/hello 8K" on
+       standard output, and with Heirloom tar it can output lines like
+       "a ./usr/bin/hello 15 tape blocks" on standard error.
+
+2011-07-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: function 'is_newest' now works also with directories
+       * tests/defs (is_newest): Call `find' with the `-prune' option,
+       so that it won't descend in the directories (which could cause
+       spurious results).
+       * tests/self-check-is_newest: Extend accordingly.
+       From a report by Jim Meyering, see automake bug#9147.
+
+2011-07-15  Benoit Sigoure  <tsunanet@gmail.com>
+
+       docs: add references between the 2 sections on java support
+       * doc/automake.texi (Java Support, Java): Add cross-references.
+
+2011-07-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Sync auxiliary files from upstream.
+       * INSTALL, lib/INSTALL, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: Sync from upstream.
+
+2011-07-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix weakness in 'tests-environment-backcompat.test'
+       * tests/tests-environment-backcompat.test: Do not override the
+       content of xfailing test `baz.test' with a "weaker" version that
+       fails unconditionally: the test must fail only when the 'strict'
+       pragma is in use, in order not to reduce coverage.
+
+2011-07-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs, tests: synchronize examples on silent-rules from config.site
+       * doc/automake.texi (Automake silent-rules Option): Reference test
+       'silent-configsite.test' in comments.
+
+2011-07-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: portability fixes in tests on amhello examples
+       * tests/amhello-binpkg.test: Don't use "tar xzf too.tag.gz" to
+       extract a gzip-compressed tarball, that's unportable to some
+       tar implementations; use the "gzip -dc fo.tar.gz | tar xf -"
+       idiom instead.
+       * tests/amhello-cflags.test: Likewise.
+       * tests/amhello-cross-compile.test: Likewise.
+       Suggestion from Ralf Wildenhues.
+
+2011-07-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       remake: add test ensuring that slower remakes don't hang
+       * tests/remake-subdir-long-time.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       Suggestion by Ralf Wildenhues.
+
+2011-07-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       remake: fix outdated comment in configure.am
+       * lib/am/configure.am: Fix comment falsified by changes in
+       commit `v1.11-366-gbee9871'.
+       Suggestion by Ralf Wildenhues.
+
+2011-07-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs, tests: synchronize examples from docs to tests
+       * tests/README (Writing test cases): Give suggestions on how to
+       keep test cases and examples in the documentation synchronized.
+       * doc/automake.texi: Improve or fix existing testcase-referencing
+       comments, and add many new ones.
+       * HACKING (Administrivia): Suggest to test complex examples and
+       idioms from the manual.
+       * tests/specflg8.test: Improve synchronization with the example
+       in the manual.
+       * tests/output11.test:Likewise.
+       * tests/txinfo21.test:Likewise.
+       * tests/interp.test: Likewise.
+       * tests/amhello-cflags.test: New test.
+       * tests/amhello-cross-compile.test: Likewise.
+       * tests/amhello-binpkg.test: Likewise.
+       * tests/tests-environment-backcompat.test: Likewise.
+       * tests/parallel-tests-log-compiler-example.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-06-30   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: new test on parallel-tests TESTS runtime overriding
+       * tests/parallel-tests-cmdline-override.test: New test, check that
+       we can use indirections when overriding TESTS and TEST_LOGS from
+       the command line.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       gitignore: ignore `*.trs' files in lib/Automake/tests
+       * lib/Automake/tests/.gitignore: Add `*.trs' pattern.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: list another "forgotten" test script in Makefile.am
+       * tests/Makefile.am (TESTS): Also list test script
+       `test-driver-trs-suffix-registered.test'; it had been introduced
+       in commit `v1.11-910-g0c81b43', but by mistake it wasn't added
+       to the list of tests in the Makefile back then.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: list "forgotten" test script in Makefile.am
+       * tests/Makefile.am (TESTS): Also list the test script
+       `parallel-tests-no-color-in-log.test'; it had been introduced in
+       commit `v1.11-899-geaac33f', but by mistake it wasn't added to
+       the list of tests in the Makefile back then.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: remove duplicated mention of a test in Makefile.am
+       * tests/Makefile.am (tap_other_tests): Remove `tap-empty.test',
+       it is already listed in `$(tap_with_common_setup_tests)'.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: one more use of TAP in our own tests
+       * tests/tap-bad-prog.test, tests/tap-bad-prog2.test: Merged
+       into ...
+       * tests/tap-bad-prog.tap: ... this TAP-generating test.
+       * tests/Makefile.am (tap_other_tests): Remove plan-bad-prog.test
+       and plan-bad-prog2.test.
+       (XFAIL_TESTS): Remove plan-bad-prog2.test.
+       (plan-bad-prog2.log): Remove.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: scaffolding to allow use of TAP in our own tests
+       Now that Automake has initial support for the TAP test protocol,
+       we can start "eating our own dog food" and rewrite some tests to
+       use TAP; this should allow for better granularity, especially in
+       the control of skips and expected failures.  With this change, we
+       set up the initial scaffolding required by the planned TAP tests,
+       and convert few older tests to use TAP, mostly in order to verify
+       that there are no obvious errors.  The tests in our testsuite that
+       use the TAP protocol will be marked by the new `.tap' extension.
+       * tests/plain-functions.sh: New file containing definition of
+       helper shell functions used by the "protocol-less" tests of the
+       Automake testsuite.
+       * tests/tap-functions.sh:  New file containing definition of
+       helper shell functions used by the TAP-producing tests of the
+       Automake testsuite.
+       * tests/defs: Remove definitions of some functions that are
+       now defined in `plain-functions.sh'.  Instead, source one of
+       `plain-functions.sh' or `tap-functions.sh', depending on whether
+       `$use_tap' is set to "no" or "yes".
+       (exit trap): Call `late_plan_' if `$use_tap' is true.  Also,
+       unset shell traces before issuing the latest commands, to avoid
+       confusing the tap driver with spurious output.
+       * tests/defs-static.in ($use_tap): New variable, by default set
+       to "yes" if the calling test script has a `.tap' suffix, and to
+       "no" otherwise.  The individual scripts can override it though.
+       In code sanity-checking the environment, verify that `$use_tap'
+       is not exported.
+       * tests/self-check-env-sanitize.test: Update, and small related
+       reformatting.
+       * tests/self-check-tap.test: New very minimal self test.
+       * tests/acoutbs.test, tests/acoutbs2.test, tests/acoutnoq.test,
+       tests/acoutpt.test, tests/acoutpt2.test, tests/acoutqnl.test:
+       Removed, merged into ...
+       * tests/ac-output-old.tap: ... this new test, that uses TAP.
+       * tests/Makefile.am (TAP_LOG_DRIVER): Define to invoke our own
+       `tap-driver' script.
+       (TAP_LOG_DRIVER_FLAGS): Define to `--merge', so that the stdout
+       and stderr of the test scripts remains synced.
+       (TEST_EXTENSIONS): Define, to add the `.tap' suffix; also list
+       the `.test' suffix explicitly.
+       (EXTRA_DIST): Distribute the new files `plain-functions.sh' and
+       `tap-functions.sh'.
+       ($(TEST_LOGS)): Depends on them.
+       (AM_TESTS_ENVIRONMENT): Ensure that `use_tap' is not exported in
+       the environment of the tests.
+       (TESTS): Update.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * NEWS: Fix typo, and related reformatting.
+
+2011-08-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * NEWS: add mention of new experimental TAP support
+
+2011-08-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: rename some test scripts
+       * tests/parallel-tests-am_tests_environment.test: Renamed ...
+       * tests/am-tests-environment.test: ... to this.
+       * tests/check-tests_environment.test: Renamed ...
+       * tests/tests-environment.test: ... to this.
+       * tests/parallel-test-driver-install.test: Renamed ...
+       * tests/parallel-tests-driver-install.test: ... to this.
+       * tests/parallel-tests-make-n.test: Renamed ...
+       * tests/parallel-tests-dry-run.test: ... to this.
+       * tests/Makefile.am (TESTS): Updated.
+
+2011-08-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: parallel-tests and lazy dependencies on EXTRA_PROGRAMS
+       * tests/parallel-tests-extra-programs.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * doc/automake.texi (Parallel Test Harness): Add a comment
+       pointing to the new test.
+
+2011-08-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: improve, extend and fix documentation on TAP support
+       * doc/automake.texi ("Using the TAP test protocol"): Divide this
+       section into ...
+       ("Introduction to TAP", "Use TAP with the Automake test harness",
+       "Incompatibilities with other TAP parsers and drivers", "Links
+       and external resources"): ... these subsections, extend them by
+       adding more information and examples, and improve them by removing
+       incomplete and/or temporary wordings and TODO items.
+       ("Script-based Testsuites", "Parallel Test Harness"): Add a couple
+       of anchors to improve the granularity of cross-references.
+       * tests/tap-doc2.test: New test, verifying the correctness of the
+       new examples given in the manual.
+       * tests/Makefile.am (tap_other_tests): Add the new test.
+
+2011-08-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: separate the only failing check of an xfailing test
+       * tests/plan-bad-prog.test: Move the only failing check of this
+       test (i.e., the one about the total number of "ERROR" outcomes)
+       into ...
+       * tests/plan-bad-prog2.test: ... this new test.
+       * tests/Makefile.am (XFAIL_TESTS): Remove `plan-bad-prog.test',
+       add `plan-bad-prog2.test'.
+       (tap_other_tests): Add `plan-bad-prog2.test'.
+       (plan-bad-prog2.log): Depend on `plan-bad-prog.test'.
+
+2011-08-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix spurious errors in an xfailing test on TAP support
+       * tests/plan-bad-prog.test: Fix typo in the name of the test
+       being made unreadable.  Correct the wording of the potential
+       skip message, and simplify the condition under which the test
+       is to be skipped.  Escape literal dots in grep regexps.
+
+2011-08-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: better granularity in a couple of tests on TAP support
+       * tests/tap-summary-aux.sh: New auxiliary script, filled with code
+       moved out from ...
+       * tests/tap-summary.test: ... this test, from which the checks on
+       colored testsuite have further been moved into ...
+       * tests/tap-summary-color.test: ... this new test, which in turn
+       * tests/Makefile.am (tap_other_tests): Add `tap-summary-color.test'.
+       (EXTRA_DIST): Distribute `tap-summary-aux.sh'
+       (tap-summary.log): Depend on `tap-summary-aux.sh'.
+       (tap-summary-color.log): Likewise.
+
+2011-08-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: optimize tests on TAP for speed and against duplication
+       The creation and configuration of common files and data used by
+       many tests on TAP is, with this change, factored out into a new
+       dedicated auxiliary test, from which those tests will depend upon.
+       This reduces code duplication in tests and, more importantly,
+       offers a noticeable speedup in the involved tests (30-40%).
+       * tests/tap-common-setup.test: New test, setting up the common
+       files and data used by various tests on TAP support.
+       * tests/tap-setup.sh: New file, to be sourced by tests wanting to
+       bring in data generated by `tap-common-setup.test'.
+       * tests/tap-autonumber.test: Update to use the pre-computed data
+       files.
+       * tests/tap-bailout.test: Likewise.
+       * tests/tap-color.test: Likewise.
+       * tests/tap-deps.test: Likewise.
+       * tests/tap-diagnostic.test: Likewise.
+       * tests/tap-empty-diagnostic.test: Likewise.
+       * tests/tap-empty.test: Likewise.
+       * tests/tap-escape-directive.test: Likewise.
+       * tests/tap-exit.test: Likewise.
+       * tests/tap-signal.test: Likewise.
+       * tests/tap-fancy.test: Likewise.
+       * tests/tap-fancy2.test: Likewise.
+       * tests/tap-global-log.test: Likewise.
+       * tests/tap-global-result.test: Likewise.
+       * tests/tap-html.test: Likewise.
+       * tests/tap-log.test: Likewise.
+       * tests/tap-merge-stdout-stderr.test: Likewise.
+       * tests/tap-no-merge-stdout-stderr.test: Likewise.
+       * tests/tap-message-0.test: Likewise.
+       * tests/tap-no-disable-hard-error.test: Likewise.
+       * tests/tap-no-spurious-summary.test: Likewise.
+       * tests/tap-no-spurious.test: Likewise.
+       * tests/tap-not-ok-skip.test: Likewise.
+       * tests/tap-numeric-description.test: Likewise.
+       * tests/tap-out-of-order.test: Likewise.
+       * tests/tap-passthrough.test: Likewise.
+       * tests/tap-passthrough-exit.test: Likewise.
+       * tests/tap-plan.test: Likewise.
+       * tests/tap-plan-corner.test: Likewise.
+       * tests/tap-plan-corner2.test: Likewise.
+       * tests/tap-plan-errors.test: Likewise.
+       * tests/tap-realtime.test: Likewise.
+       * tests/tap-recheck-logs.test: Likewise.
+       * tests/tap-skip-whole.test: Likewise.
+       * tests/tap-todo-skip-together.test: Likewise.
+       * tests/tap-todo-skip-whitespace.test: Likewise.
+       * tests/tap-todo-skip.test: Likewise.
+       * tests/tap-unplanned.test: Likewise.
+       * tests/tap-with-and-without-number.test: Likewise.
+       * tests/tap-xfail-tests.test: Likewise.
+       * tests/tap-skip-whole-whitespace.test: Likewise, and remove
+       redundant definitions of `$sp' and `$tab' (they are already
+       defined in `tests/defs').
+       * tests/tap-whitespace-normalization.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+       (EXTRA_DIST): Distribute `tap-setup.sh'.
+       (tap_with_common_setup_tests, tap_with_common_setup_logs)): New
+       variables, holding respectively the list of tests using the files
+       pre-computed by `tap-common-setup.test', and the list of their
+       corresponding log files.
+       (tap_other_tests): New variable, holding the list of other tests
+       on TAP support.
+       ($(tap_with_common_setup_logs)): Depend on `tap-common-setup.log'
+       and `tap-setup.sh'.
+
+2011-08-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: use new `.trs' files to hold test metadata
+       With this change, the test harness will keep test metadata in
+       dedicated `.trs' files, instead of having them embedded into the
+       `.log' files.  This allows for easier forward-compatibility and
+       extension of test metadata, and for more flexibility in the
+       format of the `.log' files.  Note that this change makes the
+       `:end-metadata:' field obsolete.
+       * doc/automake.texi (Parallel Test Harness, Log files generation
+       and test results recording): Document the new APIs and behaviour;
+       some related minor rewordings and fixlets.
+       * NEWS: Update.
+       * automake.in (handle_tests): When bringing in the content of
+       `check2.am', substitute %BASE% with the basename of the `.log'
+       file being created by a rule.  Add the generated `.trs' files
+       to the list of files to be cleaned by "make mostlyclean".
+       * lib/am/check.am (am__test_driver_flags): Rename ...
+       (am__common_driver_flags): ... to this, and remove the flags
+       `--test-name' and `--log-file' from it: they are now define in
+       the proper rules in `check2.am'.
+       (am__TEST_BASES): New internal variable, holding the names of
+       the tests, with any registered extension removed.
+       (am__stealth_MAKE): New internal variable, can be used instead of
+       $(MAKE) in recipes requiring a recursive call to make, but which
+       are not intended to be executed by "make -n".
+       (.log.trs): New suffix rule, to recover from deletion of `.trs'
+       files.
+       ($(TEST_SUITE_LOG)): Almost completely rewritten to follow the
+       new API of "test logs in `.log' files, test metadata in `.trs'
+       files".  It goes to some length to work correctly in face of
+       unreadable or missing `.log' and `.trs' files, and to error out
+       with proper error messages when this is not possible.
+       [%?PARALLEL_TESTS%] (check-TESTS): Also remove relevant "stale"
+       `.trs' files (in addition to `.log files) before remaking the
+       $(TEST_SUITE_LOG).
+       (recheck, recheck-html): Look for the `:recheck:' field in the
+       `.trs' files, not in the `.log' files.
+       * lib/am/check2.am (?GENERIC?%EXT%.log, ?!GENERIC?%OBJ%): Adjust
+       the call to the test driver, in particularly passing the new
+       option `--trs-file'.
+       [%am__EXEEXT%] (?GENERIC?%EXT%$(EXEEXT).log): Likewise.
+       * lib/tap-driver ($USAGE): Adjust the help screen.
+       (Getopt::Long::GetOptions): Handle the `--trs-file' option,
+       through the use of ...
+       ($trs_file): ... this new global variable.
+       (finish): Write metadata for the test run to `$trs_file' rather
+       then to `$log_file', through the use of ...
+       (write_test_results): ... this new function.
+       * lib/test-driver (print_usage): Update the help screen.
+       (Option parsing): Handle the `--trs-file' option, through the
+       use of ...
+       ($resfile): ... this new global variable.
+       (Main code): Write metadata for the test run to `$trsfile' rather
+       than to `$logfile'.
+       Minor related adjustments to comments.
+       * tests/.gitignore: Ignore `*.trs' files.
+       * tests/parallel-tests-unreadable-log.test: Moved ...
+       * tests/parallel-tests-unreadable.test: ... to this, and extended
+       to also check the semantics for unreadable `.trs' files.
+       * tests/test-driver-end-metadata.test: Deleted as obsolete.
+       * tests/test-driver-metadata-no-leading-space.test: Likewise.
+       * tests/test-driver-global-log.test: Renamed ...
+       * tests/test-metadata-global-log.test: ... to this, and modified
+       as to verify the new APIs and semantics.
+       * tests/test-driver-recheck: Renamed ...
+       * tests/test-metadata-recheck.test: ... to this, and modified
+       likewise.
+       * tests/parallel-tests-once.test: New test.
+       * tests/parallel-tests-make-n.test: Likewise.
+       * test-metadata-results.test: Likewise.
+       * test-missing.test: Likewise.
+       * test-missing2.test: Likewise.
+       * test-trs-basic.test: Likewise.
+       * test-trs-recover.test: Likewise.
+       * test-trs-recover2.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-07-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test harness: allow more metadata in log files
+       This change reworks and improves the parallel test harness to use
+       more specialized reStructuredText fields in the log files (instead
+       of relying on specially-placed of "magic lines" and more indirect
+       semantical formatting); the new fields are the following:
+        - ":recheck:": tell whether the associated test will have to be
+          re-run by "make recheck";
+        - ":copy-in-global-log:": tell whether the content of the log
+          file should be copied in the "global log" `test-suite.log';
+        - ":end-metadata:", which inhibits the scanning of the rest of
+          the log file (for what concerns test metadata).
+       Also, the special `:test-result:' value "END" has been removed,
+       superseded by the new `:end-metadata:' field.
+       * doc/automake.texi (Log files generation and test results
+       recording): Document the new API and semantics.  Remove or fix
+       some obsolete comments.
+       * lib/am/check.am ($(TEST_SUITE_LOG), recheck, recheck-html):
+       Adjust comments and code.
+       * lib/tap-driver (finish): Adjust, with the help of ...
+       (must_recheck, copy_in_global_log): ... these new functions.
+       * lib/test-driver (Main code): Adjust, with the help of ...
+       ($recheck, $gcopy): ... these new variables.
+       * tests/trivial-test-driver: Update to obey the new APIs.
+       * tests/test-driver-recheck.test: Likewise.
+       * tests/test-driver-global-log.test: Likewise.
+       * tests/tap-passthrough.test: Relax the test, avoiding to check
+       what is written in `test-suite.log'; such check has been moved ...
+       * tests/tap-global-log.test: ... in this new test, and extended.
+       * tests/test-driver-metadata-no-leading-space.test: New test.
+       * tests/test-driver-end-test-results.test: Removed, it checked
+       the old APIs; superseded by ...
+       * tests/test-driver-end-metadata.test: ... this new test.
+       * tests/tap-log.test: Improve syncing with ...
+       * tests/test-log.test: ... this new test.
+       * tests/parallel-tests.test: Remove some duplication w.r.t. this
+       last new test.  Updated heading comments.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-07-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix a spurious failure with non-bash shells
+       * tests/tap-fancy2.test: Remove an unportable use of backslashes
+       with the `echo' builtin, which was causing some shells (among them
+       bash and Debian /bin/ksh) to print a `\\' string, while other
+       shells (among them zsh, dash, and Solaris /bin/sh and /bin/ksh)
+       were unexpectedly printing a single `\' character.  Since we are
+       at it, add a sanity check to ensure that this issue does not
+       resurface.
+
+2011-07-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: fix spurious failures with Solaris /bin/sh
+       * tests/tap-more.test: Use `echo > file', not `: > file', to
+       create empty files in the "for" loops; this is required since,
+       as documented in the autoconf manual, Solaris 10 /bin/sh
+       "optimizes" away the `:' command after the first iteration,
+       even if it is redirected.
+       * tests/test-driver-custom-multitest-recheck2.test: Likewise.
+       * tests/tap-numeric-description.test: Partial rewrite to avoid
+       using positional parameters from the 10th onward, which are
+       unportable to Solaris /bin/sh (using `${10}' causes the shell
+       to die with "bad substitution").
+
+2011-07-31  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       simple tests: support developer-defined fd redirections
+       Motivated by coreutils bug#8846, and related discussions:
+        <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8846>
+        <http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00002.html>
+       In those threads it has been shown how problematic it can be to do
+       portable file descriptor redirections in the testsuite when using
+       the Automake testsuite harness.  This change should remedy to that
+       situation.
+       * lib/am/check2.am (?GENERIC?%EXT%$(EXEEXT).log,
+       ?GENERIC?%EXT%.log, ?!GENERIC?%OBJ%): Append redirection defined
+       in $(AM_TESTS_FD_REDIRECT) to the command-line invocations of the
+       test scripts.
+       * lib/am/check.am [!%?PARALLEL_TESTS%] $(check-TESTS): Likewise.
+       * NEWS: Update.
+       * doc/automake.texi (Script-based Testsuites): Document the new
+       feature.
+       * tests/check-fd-redirect.test: New test.
+       * tests/parallel-tests-fd-redirect.test: Likewise.
+       * tests/parallel-tests-am_tests_environment.test: Remove checks
+       about the use of redirections in AM_TESTS_ENVIRONMENT: they would
+       check deprecated (if not undefined) behaviour now.  Strengthen a
+       couple of still valid checks, to keep the test more in sync with
+       the documentation.  Improve debugging information.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-07-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: rework and extend documentation on testsuites support
+       * doc/automake.texi (Generalities about Testing): New section.
+       (Simple Tests using parallel-tests): Section removed, merged
+       into ...
+       (Simple Tests): ... this one, which on the other hand has been
+       subdivided into ...
+       (Script-based Testsuites, Serial Test Harness, Parallel Test
+       Harness): ... these new subsection.
+       (DejaGnu Tests): Minor adjustments.
+       Other related typofixes and rewordings throughout the manual;
+       in particular, avoid to use the term "test driver" for three
+       different concepts (and use instead "test harness" and "test
+       runner" where appropriate).
+       * tests/tap-doc.test: New test.
+       * tests/tap-no-disable-hard-error.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-07-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: support colorization of testsuite progress output
+       * lib/tap-driver (%COLORS): New variable (definition extracted
+       from `lib/am/check.am:$(am__tty_colors)', with some obvious
+       adjustments.
+       (report): Adjust to colorize console output when required,
+       using ...
+       (decorate_result): ... this new function.
+       (colored): New function, used by the one above.
+       * tests/tap-summary.test: Also run the checks when `color-tests'
+       is in use.
+       * tests/Makefile.am (XFAIL_TESTS): Remove `tap-color.test'.
+
+2011-07-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: some preparatory refactoring (2)
+       This is a follow-up simplification.
+       * lib/tap-driver (console_output): Renamed ...
+       (report): ... to this, and extended to appropriately register
+       the test results when needed.
+       (testsuite_error, handle_tap_comment, handle_tap_test,
+       handle_tap_plan): Adjusted accordingly.
+
+2011-07-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: some preparatory refactoring (1)
+       This refactoring is aimed at simplifying the introduction of
+       colored console output for the TAP driver.
+       * lib/tap-driver (console_output): Now accept two arguments, the
+       first one indicating which kind of thing is to be displayed (for
+       now only a test result or a diagnostic comment), and the second
+       one (if present) the message associated to it.
+       (handle_tap_test, handle_tap_comment, handle_tap_plan,
+       testsuite_error): Adapt to the new `console_output' interface.
+
+2011-07-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tap: add experimental TAP-aware driver
+       * doc/automake.texi (Using the TAP test protocol): New section.
+       (Overview of Custom Test Drivers Support): Minor updates.
+       * lib/tap-driver: New script, TAP-aware test driver for Automake;
+       implemented in perl and based on TAP::Parser.
+       * lib/Makefile.am (dist_script_DATA): Add it.
+       * tests/tap-autonumber.test: New test.
+       * tests/tap-bailout.test: Likewise.
+       * tests/tap-basic.test: Likewise.
+       * tests/tap-deps.test: Likewise.
+       * tests/tap-diagnostic.test: Likewise.
+       * tests/tap-empty.test: Likewise.
+       * tests/tap-empty-diagnostic.test: Likewise.
+       * tests/tap-escape-directive.test: Likewise.
+       * tests/tap-exit.test: Likewise.
+       * tests/tap-fancy.test: Likewise.
+       * tests/tap-fancy2.test: Likewise.
+       * tests/tap-global-result.test: Likewise.
+       * tests/tap-html.test: Likewise.
+       * tests/tap-log.test: Likewise.
+       * tests/tap-merge-stdout-stderr.test: Likewise.
+       * tests/tap-more.test: Likewise.
+       * tests/tap-more2.test: Likewise.
+       * tests/tap-no-merge-stdout-stderr.test: Likewise.
+       * tests/tap-no-spurious-summary.test: Likewise.
+       * tests/tap-no-spurious.test: Likewise.
+       * tests/tap-not-ok-skip.test: Likewise.
+       * tests/tap-numeric-description.test: Likewise.
+       * tests/tap-out-of-order.test: Likewise.
+       * tests/tap-passthrough.test: Likewise.
+       * tests/tap-plan.test: Likewise.
+       * tests/tap-plan-errors.test: Likewise.
+       * tests/tap-plan-corner.test: Likewise.
+       * tests/tap-realtime.test: Likewise.
+       * tests/tap-recheck-logs.test: Likewise.
+       * tests/tap-recheck.test: Likewise.
+       * tests/tap-skip-whole.test: Likewise.
+       * tests/tap-summary.test: Likewise.
+       * tests/tap-todo-skip.test: Likewise.
+       * tests/tap-todo-skip-together.test: Likewise.
+       * tests/tap-todo-skip-whitespace.test: Likewise.
+       * tests/tap-skipall-whitespace.test: Likewise.
+       * tests/tap-unplanned.test: Likewise.
+       * tests/tap-whitespace-normalization.test: Likewise.
+       * tests/tap-with-and-without-number.test: Likewise.
+       * tests/tap-xfail-tests.test: Likewise.
+       * tests/tap-bad-prog.test: New xfailing test.
+       * tests/tap-color.test: Likewise.
+       * tests/tap-plan-corner2.test: Likewise.
+       * tests/tap-message-0.test: Likewise.
+       * tests/tap-signal.test: Likewise.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
+2011-07-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: new auxiliary function 'count_test_results'
+       * tests/defs (count_test_results): New function.
+       * tests/check11.test: Use it.
+       * tests/test-driver-custom-multitest.test: Likewise.
+       * tests/test-driver-custom-multitest-recheck.test: Likewise.
+       * tests/test-driver-custom-multitest-recheck2.test: Likewise.
+       * tests/parallel-tests-log-override-recheck.test: Likewise.
+       * tests/parallel-tests-log-override-recheck.test: Likewise.
+       * tests/parallel-tests-no-spurious-summary.test: Likewise, and
+       slightly improve debugging output.
+       * tests/parallel-tests.test: Make use of `count_test_results'.
+       Also, make grepping of "make check" output slightly stricter
+       * tests/parallel-tests9.test: Likewise.
+       * tests/parallel-tests-log-override-2.test: Likewise, and throw
+       in a small optimization.
+
+2011-07-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: simplify testsuite summary
+       Prefer a more deterministic, "tabular" format for the testsuite
+       summary, always listing the numbers of passed, failed, xfailed,
+       xpassed, skipped and errored tests, even when these numbers are
+       zero.  This simplify the logic of testsuite summary creation,
+       makes it more easily machine-parseable, and will probably allow
+       for easier addition of new kinds of test results in the future.
+       * lib/am/check.am (am__tty_colors_dummy): New make variable, to
+       reduce code duplication.  Extracted from previous versions of
+       $(am__tty_colors), and extended by defining two new variables
+       `$mgn' and `$brg'.
+       [%?COLOR%, %!?COLOR%] (am__tty_colors): Use that new variable.
+       (am__text_box): Delete, is not needed anymore.
+       ($(TEST_SUITE_LOG)): Rewrite associated rules to implement the
+       new testsuite summary format.
+       * NEWS: Update.
+       * tests/check10.test: Don't run with the parallel-tests harness
+       too, that makes no sense anymore.
+       * tests/color.test: Update and adjust.
+       * tests/color2.test: Likewise.
+       * tests/parallel-tests.test: Likewise.
+       * tests/parallel-tests3.test: Likewise.
+       * tests/parallel-tests6.test: Likewise.
+       * tests/parallel-tests9.test: Likewise.
+       * tests/parallel-tests-unreadable-log.test: Likewise.
+       * tests/parallel-tests-empty-testlogs.test: Likewise.
+       * tests/parallel-tests-log-override-recheck.test: Likewise.
+       * tests/parallel-tests-no-spurious-summary.test: Likewise.
+       * tests/test-driver-custom-multitest.test: Likewise.
+       * tests/test-driver-end-test-results.test: Likewise.
+       * tests/parallel-tests-no-color-in-log.test: New test.
+       * tests/testsuite-summary-color.test: Likewise.
+       * tests/testsuite-summary-count.test: Likewise.
+       * tests/testsuite-summary-count-many.test: Likewise.
+       * tests/testsuite-summary-reference-log.test: Likewise.
+       * tests/testsuite-summary-checks.sh: New auxiliary script, used
+       by the new tests above.
+       * tests/extract-testsuite-summary: Likewise.
+       * tests/trivial-test-driver: Optimize for speed when there are
+       lots of of tests.
+       * tests/Makefile.am (EXTRA_DIST): Distribute them.
+       (testsuite-summary-color.log, testsuite-summary-count.log): Depend
+       on them.
+       (testsuite-summary-count-many.log): Depend on the auxiliary scripts
+       'trivial-test-driver' and 'extract-testsuite-summary'.
+       (TESTS): Update.
+
+2011-07-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: new recognized test result 'ERROR'
+       * lib/am/check.am ($(TEST_SUITE_LOG)): Recognize a new test result
+       `ERROR'.  Use it when encountering unreadable test logs (previously
+       a simple `FAIL' was used in this situations).
+       * lib/test-driver: Set the global test result to `ERROR' when the
+       test exit status is 99.  When doing colorized output, color `ERROR'
+       results in magenta.
+       * doc/automake.texi (Log files generation and test results
+       recording): Update by listing `ERROR' too among the list of valid
+       `:test-results:' arguments.
+       * NEWS: Update.
+       * tests/trivial-test-driver: Update.
+       * tests/parallel-tests.test: Likewise.
+       * tests/parallel-tests-harderror.test: Likewise.
+       * tests/parallel-tests-no-spurious-summary.test: Likewise.
+       * tests/test-driver-global-log.test: Likewise.
+       * tests/test-driver-recheck.test: Likewise.
+       * tests/test-driver-custom-multitest-recheck.test: Likewise.
+       * tests/test-driver-custom-multitest-recheck2.test: Likewise.
+       * tests/test-driver-custom-multitest.test: Likewise.
+       * tests/test-driver-custom-no-html.test: Likewise.
+       * tests/test-driver-end-test-results.test: Likewise.
+       * tests/color.test: Likewise.  Also, make stricter, and also test
+       from VPATH.
+       * tests/color2.test: Likewise, and improve syncing with color.test.
+       * tests/parallel-tests-exit-statuses.test: New test.
+       * tests/parallel-tests-console-output.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-07-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: make parsing of test results safer
+       The new code for parsing the testsuite-generated `.log' files,
+       as introduced in commit `v1.11-872-gc96b881', considers each
+       `:test-result:' field anywhere in a `.log' file as a declaration
+       of a test result, and accounts for it as such in the testsuite
+       summary.  Unfortunately this could easily cause spurious test
+       failures being reported in the testsuite summary.  This happened
+       in practice with the Automake's own testsuite; for example:
+         $ make check TESTS='check12-p.test'; echo exit: $?
+         ...
+         PASS: check12-p.test
+         =====================================
+         4 of 5 tests failed
+         See tests/test-suite.log
+         Please report to bug-automake@gnu.org
+         =====================================
+         make[2]: *** [test-suite.log] Error 1
+         make: *** [check-am] Error 2
+         exit: 2
+       This change introduces a new special `:test-result:' "END", that,
+       when seen, prevents the rest of the log file from being parsed.
+       For more information, refer to the thread:
+       <http://lists.gnu.org/archive/html/automake-patches/2011-06/msg00199.html>
+       * lib/am/check.am ($(TEST_SUITE_LOG)): Stop the parsing of a log
+       file as soon as the special ":test-result:END" directive is seen.
+       Related changes and enhancements.
+       * lib/test-driver: Protect the rest of the log after the result
+       lined with a ":test-result:END" directive.
+       * doc/automake.texi (Log files generation and test results
+       recording): Update, and related improvements.
+       * tests/parallel-tests-no-spurious-summary.test: New test.
+       * tests/test-driver-end-test-results.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-06-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: document custom test drivers and protocols
+       * doc/automake.texi (Simple Tests): Note that the TESTS_ENVIRONMENT
+       use suggested here is not portable to 'parallel-tests'.
+       (Simple Tests using parallel-tests): Document new restrictions on
+       the uses of TESTS_ENVIRONMENT and AM_TESTS_ENVIRONMENT.
+       (Custom Test Drivers): New section and node.
+       (Overview of Custom Test Drivers Support): New subsection.
+       (Declaring Custom Test Drivers in @file{Makefile.am}): Likewise.
+       (APIs for Custom Test Drivers): Likewise.
+       (Options): Update description of color-tests.
+       * lib/am/check ($(TEST_SUITE_LOG)): Remove comments that have been
+       moved into the manual.
+       (recheck, recheck-html): Minor adjustments to better conform to the
+       documentation (this should cause no semantic changes w.r.t. the
+       former behaviour); minor improvements and extensions to existing
+       comments.
+       * tests/test-driver-create-log-dir.test: New test.
+       * tests/test-driver-strip-vpath.test: Likewise.
+       * tests/test-driver-global-log.test: Likewise.
+       * tests/test-driver-recheck.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-07-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: small enhancement to 'primary3.test'
+       * tests/primary3.test: Also test that the program named `foo.la'
+       has been effectively created.
+
+2011-07-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: a small simplification in 'pr8365-remake-timing.test'
+       * tests/pr8365-remake-timing.test: Avoid redundant definition
+       and use of `$save_AUTOCONF' variable.
+
+2011-07-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove an extra leading blank line
+       * tests/override-conditional-1.test: Remove extra blank line
+       placed before the shebang line.
+
+2011-07-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix typos, grammaros and other blunders in comments
+       All affected files changed.
+
+2011-07-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: new subroutine 'seq_', simulating GNU seq(1)
+       * tests/defs (seq_): New subroutine.
+       * tests/instmany.test: Use it.
+       * tests/instmany-mans.test: Likewise.
+       * tests/instmany-python.test: Likewise.
+       * tests/self-check-seq.test: New self test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-07-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove duplication about testing of config.* aux files
+       * tests/add-missing.test: Also check that the `AC_CANONICAL_SYSTEM'
+       autoconf macro causes the `config.sub' and `config.guess' scripts
+       to be installed by `automake --add-missing'.  Since we are at it,
+       fix minor buglets and cosmetic issues in the `check_' function.
+       * tests/hosts.test: Removed, completely subsumed by the previous
+       test now.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-07-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more uses of the 'unindent' subroutine
+       * tests/backcompat.test: Prefer `unindent' over plain `cat' for
+       here documents created from within a loop of if/else body.
+       * tests/backcompat2.test: Likewise.
+       * tests/backcompat4.test: Likewise.
+       * tests/init.test: Likewise.
+       * tests/instmany.test: Likewise.
+       * tests/instmany-mans.test: Likewise.
+       * tests/instmany-python.test: Likewise.
+       * tests/missing5.test: Likewise.
+       * tests/parallel-am2.test : Likewise.
+       * tests/parallel-am3.test : Likewise.
+       * tests/pr307.test: Likewise.
+       * tests/depend4.test: Likewise.  Since we are at it, normalize
+       other code formatting.
+       * tests/instfail-java.test: Prefer `echo' over `cat' + here-doc
+       inside a for loop.
+
+2011-07-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid '##'-style comments inside recipe commands
+       * tests/autodist.test: Do not whitespace-indent `##' comments when
+       they are embedded in a makefile rule: having them indented is not
+       part of the Automake API, and might cause failures with e.g., Tru64
+       make.
+       * tests/autodist-subdir.test: Likewise.
+       * tests/backcompat.test: Likewise.
+       * tests/backcompat6.test: Likewise.
+       * tests/colon7.test: Likewise.
+       * tests/posixsubst-scripts.test: Likewise.
+       * tests/posixsubst-sources.test: Likewise.
+
+2011-07-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: tweak, improve and extend tests on lisp support
+       * tests/lisp2.test: Prettify, and improve debugging output.  Make
+       grepping of automake stderr stricter.
+       * tests/lisp7.test: Ensure verbose printing of captured make
+       output.  Add trailing `:' command.
+       * tests/lisp8.test: Likewise.
+       * tests/lisp3.test: Likewise.  Also, check that `.el' files and
+       compiled `.elc' files get installed by "make install", and
+       uninstalled by "make uninstall".
+       * tests/lisp4.test: Ensure installed `.el' files gets removed by
+       "make uninstall".  Related changes.  Add trailing `:' command.
+       * tests/lisp5.test: Likewise.
+       * tests/lisp6.test: Use proper m4 quoting in configure.in.  Fix
+       use of blank lines, to improve clarity and symmetry.  Fix typo in
+       comment.  Add trailing `:' command.
+
+2011-07-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: drop useless requirement in 'license.test'
+       * tests/license.test: Drop  useless requirement "makeinfo".  Add
+       an extra blank line, for clarity.
+
+2011-07-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: more uses of $top_testsrcdir
+       * tests/autodist-stamp-vti.test: Use `$top_testsrcdir' instead
+       of `$testsrcdir/..'.
+       * tests/repeated-options.test: Likewise.
+       * tests/suffix5.test: Likewise.
+       * tests/vtexi3.test: Likewise.
+
+2011-07-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: fix typo in comment
+       * tests/self-check-exit.test: Fix typo in heading comments.
+
+2011-07-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant settings of `errexit' shell flag
+       * tests/amhello-binpkg.test: Do not set the `errexit' shell
+       flag, as it is already set by `tests/defs'.
+       * tests/amhello-cflags.test: Likewise.
+       * tests/amhello-cross-compile.test: Likewise.
+       * tests/ansi2knr-deprecation.test: Likewise.
+       * tests/autodist-no-duplicate.test: Likewise.
+       * tests/distcheck-configure-flags-am.test: Likewise.
+       * tests/distcheck-configure-flags-subpkg.test: Likewise.
+       * tests/distcheck-configure-flags.test: Likewise.
+       * tests/distcheck-hook.test: Likewise.
+       * tests/distcheck-hook2.test: Likewise.
+       * tests/parallel-tests-am_tests_environment.test: Likewise.
+       * tests/parallel-tests-harderror.test: Likewise.
+       * tests/parallel-tests-log-compiler-example.test: Likewise.
+       * tests/parallel-tests-log-override-1.test: Likewise.
+       * tests/parallel-tests-log-override-2.test: Likewise.
+       * tests/parallel-tests-log-override-recheck.test: Likewise.
+       * tests/primary-prefix-couples-documented-valid.test: Likewise.
+       * tests/primary-prefix-couples-force-valid.test: Likewise.
+       * tests/primary-prefix-invalid-couples.test: Likewise.
+       * tests/primary-prefix-valid-couples.test: Likewise.
+       * tests/remake-subdir-from-subdir.test: Likewise.
+       * tests/remake-subdir-gnu.test: Likewise.
+       * tests/remake-subdir-long-time.test: Likewise.
+       * tests/remake-subdir.test: Likewise.
+       * tests/remake-subdir2.test: Likewise.
+       * tests/silent-configsite.test: Likewise.
+       * tests/tests-environment-backcompat.test: Likewise.
+
+2011-06-29   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: explain why AM_TESTS_ENVIRONMENT must be semicolon-terminated
+       * doc/automake.texi (Simple Tests using parallel-tests): Ditto, and
+       related adjustments.
+       Suggestion by Ralf Wildenhues.
+
+2011-06-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: fix unportable example of AM_TESTS_ENVIRONMENT usage
+       * doc/automake.texi (Simple Tests using parallel-tests): The
+       old example on AM_TESTS_ENVIRONMENT relied on unportable shell
+       features, and in particular didn't work with various Korn
+       Shells (see also commit `v1.11-925-g29ca903').  Give another
+       example, simpler this time, but still inspired to real-world
+       usage (the GNU coreutils testsuite).
+
+2011-06-28   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc tests: fix bug in 'yacc-cxx.test'
+       * tests/yacc-cxx.test: Enable `errexit' shell flag (the lack of
+       which was masking the bug).
+       (bar.cxx): Rename to ...
+       (bar2.cxx): ... this, otherwise automake will (correctly) complain
+       that object `bar.o' is created by both `bar.cxx' and `bar.c++'.
+       (Makefile.am): Adjust.
+
+2011-06-28   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex tests: fix spurious link errors on Solaris
+       On Solaris 10, linking of lex-generated programs was failing in a
+       couple of lex tests with errors like this:
+         g++ -g -O2 -o joe joe.o -ll
+         Undefined symbol     first referenced in file
+         yywrap()             joe.o
+         ld: fatal: Symbol referencing errors. No output written to joe
+         collect2: ld returned 1 exit status
+       This change fixes it, also fixing at once potential problems for
+       systems that don't have a "lex library" (this happens for example
+       when cross-compiling from GNU/Linux to MinGW).
+       * tests/lex-depend-cxx.test (joe.ll, moe.l++): Define a dummy
+       `yywrap()' function.
+       * tests/lex-clean-cxx.test (mainfoo.cc, mainbar.cpp, mainbaz.c++,
+       mainqux.cxx): Likewise.
+
+2011-06-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: avoid a footnote, some related rewordings and improvements
+       * doc/automake.texi (Dist): Reword the part about automatically
+       distributed files to avoid a footnote.  Since we are at it, extend
+       a bit, and add an example and a reference to a relevant test case.
+
+2011-06-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: minor cosmetic fixes
+       * doc/automake.texi: Break few overly long lines, throughout the
+       file.
+       ("Simple Tests"): Move @vindex for XFAIL_TESTS to the correct
+       position, i.e., before and not after the paragraph where it is
+       introduced.
+       ("Options" @item ansi2knr): Use @pxref instead of @xref.  This
+       fixes a texinfo warning.
+       ("Other things Automake recognizes" @item AM_C_PROTOTYPES): Use
+       @pxref instead of @ref.
+
+2011-06-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       help: improve text about automatically-distributed files
+       This change fixes automake bug#7819.
+       * automake.in (usage): Distinguish between files that are always
+       automatically distributed when found, and those which are only
+       "under certain conditions".
+       * doc/automake.texi (Basics of Distribution): Update accordingly.
+       * tests/autodist-subdir.test: Update.
+       * tests/autodist-no-duplicate.test: Likewise.
+       * tests/autodist.test: Likewise.
+       (configure.in): Remove useless call to AM_MAINTAINER_MODE.
+
+2011-06-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       refactor: split 'usage' subroutine in automake
+       This change is related to automake bug#7819.
+       * automake.in (print_autodist_files): New subroutine,
+       extracted from ...
+       (usage): ... this, which now uses it.
+       * tests/autodist-no-duplicate.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-06-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix bug in 'autodist.test'
+       * tests/autodist.test: Avoid spurious failure due to no
+       `defs-static' file being found in the parent directory.
+
+2011-06-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: allow each test to have multiple results
+       With this change, we improve the code creating the `test-suite.log'
+       global log and the console testsuite summary to make it able to
+       grasp multiple results per test script.  This is required in order
+       to introduce the planned support for test protocols, like TAP and
+       SubUnit, which can indeed run multiple tests per test script, each
+       with its individual result.
+       The implementation makes use of a custom reStructuredText field
+       `:test-result:'.
+       Note that no new documentation is added by this change; that is
+       be left for follow-up changes.
+       * lib/check.am ($(TEST_SUITE_LOG)): When processing .log files,
+       recognize a report of a test's result only if it is declared with
+       the custom `:test-result:' reStructuredText field placed at the
+       beginning of a line.  Extend and add explanatory comments.
+       (recheck, recheck-html): Add explanatory comments.
+       * lib/test-driver: Write an appropriate reStructuredText field
+       `:test-result:' in the generated log file.  Use a reStructuredText
+       transition to better separate the test outcome report from the
+       test script's registered output.  Improve comments.
+       * tests/test-driver-custom-xfail-tests.test: Adjust.
+       * tests/parallel-tests7.test: Adjust.
+       * tests/parallel-tests-empty-testlogs.test: New test.
+       * tests/parallel-tests-recheck-override.test: Likewise.
+       * tests/parallel-tests2.test: Extend and keep more in-sync with ...
+       * tests/test-driver-custom-html.test: ... this new related test.
+       * tests/test-driver-custom-no-html.test: New test.
+       * tests/test-driver-custom-multitest.test: Likewise.
+       * tests/test-driver-custom-multitest-recheck.test: Likewise.
+       * tests/test-driver-custom-multitest-recheck2.test: Likewise.
+       * tests/trivial-test-driver: New file, used by the last four tests
+       above.
+       * tests/Makefile.am (TESTS): Update.
+       (EXTRA_DIST): Distribute `trivial-test-driver'.
+       (test-driver-custom-multitest.log): Depend on `trivial-test-driver'.
+       (test-driver-custom-multitest-recheck.log): Likewise.
+       (test-driver-custom-multitest-recheck2.log): Likewise.
+       (test-driver-custom-html.log): Likewise.
+
+2011-06-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: allow custom driver scripts
+       Allow suffix-based definition of custom "driver script" for the
+       test scripts.  These driver scripts will be responsible of
+       launching the tests (or their corresponding $(LOG_COMPILER), if
+       they have an associated one), interpreting and displaying the
+       test results, and writing the `.log' files.
+       This new API should allow easy and flexible use of different
+       test protocols in the future; in particular, we plan to use it
+       to implement TAP and SubUnit harnesses.
+       Note that no new documentation is added by this change; that is
+       be left for follow-up changes.
+       * automake.in (handle_tests): Define default for $(LOG_DRIVER),
+       and, for any registered test extension `<ext>', define defaults
+       for $(<ext>_LOG_DRIVER).  Substitute %DRIVER% using these new
+       variables, instead of the old internal $(am__test_driver).  When
+       processing check2.am, also substitute %DRIVER_FLAGS%.
+       Require auxiliary script `test-driver' only if no driver has been
+       explicitly defined for the test script kinds.
+       * am/check2.am (?GENERIC?%EXT%$(EXEEXT).log, ?GENERIC?%EXT%.log,
+       ?!GENERIC?%OBJ%): Pass the %DRIVER_FLAGS% to the %DRIVER% call.
+       * tests/parallel-tests-no-extra-driver.test: New test.
+       * tests/test-driver-custom.test: Likewise.
+       * tests/test-driver-custom-xfail-tests.test: Likewise.
+       * tests/test-driver-fail.test: Likewise.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+
+2011-06-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: add auxiliary script 'test-driver', refactor
+       This refactoring should cause no API of functionality change,
+       and is meant only to simplify the future implementation of TAP
+       and SubUnit testsuite drivers.  More precisely, our roadmap is
+       to move most of the "testsuite driving" features out of the
+       Automake-generated Makefiles, and into external scripts with
+       well-defined interfaces.  This will allow the user to define
+       its own personalized testsuite drivers, and will also offer us
+       a framework upon which to implement our new TAP and SubUnit
+       drivers, all in a very unobtrusive way and retaining an high
+       degree of code reuse and backward-compatibility.
+       * lib/test-driver: New auxiliary script.
+       * lib/Makefile.am (dist_SCRIPT_DATA): Add it.
+       * automake.in (handle_tests): Require the new auxiliary script
+       `test-driver', and define a new internal makefile variable
+       `$(am__test_driver)', used to call it.  Perform new substitution
+       on `DRIVER' when processing the `check2.am' file.
+       * lib/check.am (am__tty_colors): Define new shell variable
+       `$am__color_tests'.
+       (am__rst_section): Removed, its role taken over by the new
+       `test-driver' script.
+       (am__test_driver_flags): New variable, contains the command
+       line options passed to `test-driver'.
+       (am__check_pre): Do not deal with temporary files and exit
+       traps anymore, as the `test-driver' script takes care of that
+       now.  Define shell variable `$am__enable_hard_errors', used by
+       `$(am__test_driver_flags)'.  Reorder so that we don't need to
+       save and restore the value of the `TERM' environment variable
+       anymore.
+       Other related adjustments.
+       (am__check_post): Remove, as its role has been completely taken
+       over by the `test-driver' script.
+       * am/check2.am (?GENERIC?%EXT%$(EXEEXT).log, ?GENERIC?%EXT%.log,
+       ?!GENERIC?%OBJ%): Call the test script through the Automake
+       substituted `%DRIVER%', and honor the command-line options
+       in `$(am__test_driver_flags)'.  Do not call the obsoleted
+       `$(am__check_post)' anymore.
+       * doc/automake.texi (Auxiliary Programs): Mention the new
+       `test-driver' script.
+       (Optional): Mention `test-driver' in AC_CONFIG_AUX_DIR.
+       Since we are at it, break the list of auxiliary scripts by
+       placing one per line, to simplify potential future additions
+       of new scripts.
+       * tests/check.test: Adjust.
+       * tests/check2.test : Likewise.
+       * tests/check3.test : Likewise.
+       * tests/check4.test : Likewise.
+       * tests/check10.test: Likewise.
+       * tests/color.test: Likewise.
+       * tests/color2.test: Likewise.
+       * tests/comment9.test: Likewise.
+       * tests/dejagnu.test: Likewise.
+       * tests/exeext4.test: Likewise.
+       * tests/maken3.test: Likewise.
+       * tests/maken4.test: Likewise.
+       * tests/parallel-tests-interrupt.test: Likewise.
+       * tests/posixsubst-tests.test: Likewise.
+       * tests/repeated-options.test: Likewise.
+       * tests/check-no-test-driver.test: New test.
+       * tests/parallel-test-driver-install.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-06-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: extend 'sc_tests_plain_*' checks
+       * Makefile.am (sc_tests_plain_autom4te): New check.
+       (sc_tests_plain_autoreconf): Likewise.
+       (sc_tests_plain_autoheader): Likewise.
+       (syntax_check_rules): Update.
+
+2011-06-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: interactions between TESTS_ENVIRONMENT and LOG_COMPILER
+       * tests/tests-environment-and-log-compiler.test: New test,
+       checking that we can use variables and functions set by
+       TESTS_ENVIRONMENT and AM_TESTS_ENVIRONMENT in LOG_COMPILER
+       and LOG_FLAGS (for tests both with and without registered
+       extensions).
+       * tests/Makefile.am (TESTS): Update.
+
+2011-06-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: make 'subst-no-trailing-empty-line.test' more robust
+       * tests/subst-no-trailing-empty-line.test: Strengthen existing
+       checks, to try more scenarios and be slightly stricter in some
+       grepping checks.
+
+2011-06-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix an incomplete comment
+       * tests/subst-no-trailing-empty-line.test: Fix an incomplete
+       comment, and move it to a more proper place.  Minor cosmetic
+       fixes to other comments.
+
+2011-06-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: avoid few more spurious failures
+       * tests/depmod-data.test: Use creative quoting to avoid
+       spuriously triggering the `sc_tests_Exit_not_exit' maintainer
+       check.  Commit `v1.11-900-g3453b8e' attempted to fix it, but
+       succeeded only partially.
+       * tests/cond33.test: Fix header comments, not to reference
+       obsolescent make variable `$(mkdir_p)'.
+       * tests/cond4.test: Rewrite "$MAKE exp=..." as "exp=.. $MAKE -e",
+       to please `sc_tests_overriding_macros_on_cmdline'
+       * tests/cond19.test: Likewise.
+       * tests/cond32.test: Likewise.
+       * tests/add-missing.test: Use "AUTOMAKE_fails" instead of
+       "$AUTOMAKE ... && Exit 1", to please `sc_tests_automake_fails'.
+
+2011-06-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: avoid few spurious failures
+       * Makefile.am (sc_tests_plain_aclocal, sc_tests_plain_perl,
+       sc_tests_plain_autoconf, sc_tests_plain_automake,
+       sc_tests_plain_autoupate): Be stricter in matching an erroneous
+       literal command, i.e., `aclocal', `automake', `perl', etc.
+
+2011-06-20  Bert Wesarg <bert.wesarg@googlemail.com>  (tiny change)
+
+       check: don't use multi-line coloring for the report
+       "less -R" can't handle multi-line coloring as it is done for the
+       check reports of the serial and parallel testsuite, because of
+       performance reasons.  Thus, color each line of the check report
+       by its own.
+       * lib/am/check.am (am__text_box): Accept colors for lines, and
+       color each line by its own.
+       [%?PARALLEL_TESTS%] $(TEST_SUITE_LOG): Let am__text_box handle
+       the line coloring.
+       [!%?PARALLEL_TESTS%] $(check-TESTS): Color each report line by
+       its own.
+       * THANKS: Update.
+
+2011-06-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: AM_DISTCHECK_CONFIGURE_FLAGS is for corner cases
+       * doc/automake.texi (Checking the Distribution): Explain that the
+       developers should take care of making their code buildable without
+       requiring any special configure options, so that in general
+       AM_DISTCHECK_CONFIGURE_FLAGS shouldn't be used.  Give an example
+       of where its use is legitimate.
+       Suggestions from Ralf Wildenhues and Eric Blake.
+
+2011-06-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       ansi2knr: deprecate, it will go away in the next major release
+       * doc/automake.texi: Loudly and repeatedly state that the old
+       de-ANSI-fication features are now deprecated and will be removed
+       in the next major Automake release.  Other related adjustments.
+       * lib/Automake/Options.pm (_process_option_list ): Give a warning
+       in the `obsolete' category when the `ansi2knr' option is used.
+       * m4/protos.m4 (AM_C_PROTOTYPES): Deprecate this macro: a warning
+       in the `obsolete' category will be emitted it if is used.
+       * tests/ansi2knr-deprecation.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * tests/ansi.test: Adjust, by calling autoconf and/or automake
+       with the `-Wno-obsolete' flag.
+       * tests/ansi10.test: Likewise.
+       * tests/ansi2.test: Likewise.
+       * tests/ansi3.test: Likewise.
+       * tests/ansi3b.test: Likewise.
+       * tests/ansi4.test: Likewise.
+       * tests/ansi5.test: Likewise.
+       * tests/ansi6.test: Likewise.
+       * tests/ansi7.test: Likewise.
+       * tests/ansi8.test: Likewise.
+       * tests/ansi9.test: Likewise.
+       * tests/cxxansi.test: Likewise.
+       * tests/libobj8.test: Likewise.
+       * NEWS: Update about the future planned backward-incompatibility
+       due to the removal of de-ANSI-fication feature.
+
+2011-06-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: primary/prefix combination "pkglib_PROGRAMS" is now invalid
+       * doc/automake.texi (Program Sources): pkglib_PROGRAMS is not a
+       valid combination anymore, so don't document it.  Inconsistency
+       introduced in commit `v1.11-373-g9ca6326'.
+
+2011-06-19  Jim Meyering  <meyering@redhat.com>
+
+       docs: replace obsolete @vindex entry with a useful one
+       * doc/automake.texi (Program Sources): Do not index obsolete
+       pkglib_PROGRAMS here.  Do index pkglibexec_PROGRAMS.
+
+2011-06-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more checks on portable fd redirection in TESTS_ENVIRONMENT
+       * tests/tests-environment-fd-redirect.test: Extend by also using
+       a perl script among the tests.  Run the test shell script with
+       the `errexit' flag active.  Export `VERBOSE' to yes when running
+       "make check", to give more debugging information in case of
+       failures.  Look for a Korn Shell also in `/usr/bin', not on only
+       in `/bin'.
+
+2011-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: optimize tests on primary/prefix mismatch for speed
+       * tests/primary-prefix-invalid-couples.test: Partial rewrite, in
+       order to use just a single automake invocation rather than one
+       invocation for each invalid primary/prefix couple.  This improves
+       the test script execution time by an order of magnitude.
+       Since we are at it, throw in some other improvements to avoid
+       unrelated automake warnings and failures that could potentially
+       cause false positives w.r.t. the automake exit status.
+
+2011-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       news: update w.r.t. introduction of AM_DISTCHECK_CONFIGURE_FLAGS
+       * NEWS (Miscellaneous changes): Update.
+
+2011-06-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: DISTCHECK_CONFIGURE_FLAGS can be defined on make cmdline
+       * Makefile.am (sc_tests_overriding_macros_on_cmdline): It's now
+       acceptable that the test scripts override DISTCHECK_CONFIGURE_FLAGS
+       on the make command line.  Update comments accordingly.  Since we
+       are at it, make the relevant grepping rules slightly tighter.
+
+2011-06-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       distcheck: add support for AM_DISTCHECK_CONFIGURE_FLAGS
+       * doc/automake.texi (Checking the Distribution): Suggest to use
+       AM_DISTCHECK_CONFIGURE_FLAGS, not DISTCHECK_CONFIGURE_FLAGS, to
+       define (in the top-level Makefile.am) extra flags to be passed
+       to configure at "make distcheck" time; DISTCHECK_CONFIGURE_FLAGS
+       should be reserved for the user.  Add proper `@vindex' directive.
+       Document that AM_DISTCHECK_CONFIGURE_FLAGS is not honoured in a
+       subpackage Makefile.am, but the flags in it are passed down to
+       the configure script of the subpackage.
+       * lib/am/distdir.am (distcheck): Also pass the flags in
+       $(AM_DISTCHECK_CONFIGURE_FLAGS) to the configure invocation.
+       Update comments.
+       * tests/defs.in.test (AM_DISTCHECK_CONFIGURE_FLAGS,
+       DISTCHECK_CONFIGURE_FLAGS): Unset in case they are exported in
+       the environment, they might improperly influence our testsuite.
+       * tests/distcheck-configure-flags.test: New test.
+       * tests/distcheck-configure-flags-am.test: Likewise.
+       * tests/distcheck-configure-flags-subpkg.test: Likewise.
+       * distcheck-hook.test: Likewise.
+       * distcheck-hook2.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+       Closes automake bug#8784.
+
+2010-06-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: better documentation for silent make rules
+       * doc/automake.texi (Options): Detailed description of the
+       automake option `silent-rules' moved from here ...
+       (Silent Make): ... into this new chapter, expanded, improved,
+       and subdivided into ...
+       (Make verbosity, Tricks For Silencing Make,
+       Automake silent-rules Option): ... these new sections.
+       (@menu, @detailmenu): Update.
+       * tests/silent-configsite.test: New test, checking that the
+       user can control default mode of silent-rules from config.site,
+       as is documented in the manual.
+       * tests/Makefile.am (TESTS): Updated.
+
+2011-06-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Warnings about primary/prefix mismatch fixed and extended.
+       * automake.in (%standard_prefix): Add `doc' and `locale'.
+       Rename `pkgdatadir' to `pkgdata'.  Similarly for`pkglibdir',
+       `pkgincludedir' and `pkglibexecdir'.
+       (handle_programs): List `pkglibexec', not `pkglib', among the
+       prefixes valid for the `PROGRAMS' primary.
+       (handle_data): List also `doc' among the prefixes valid for
+       the `DATA' primary.  This is required by automake's own build
+       system.
+       * tests/dirforbid.test: Test removed, superseded by ...
+       * tests/primary-prefix-invalid-couples.test: ... this new test.
+       * tests/primary-prefix-valid-couples.test: New test.
+       * tests/primary-prefix-couples-documented-valid.test: Likewise.
+       * tests/primary-prefix-couples-force-valid.test: Likewise.
+       * tests/java3.test: Adjusted, and extended a bit.
+       * tests/Makefile.am (TESTS): Updated.
+       * NEWS: Updated.
+       From a report by Eric Blake.
+
+2011-06-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: check portable fd redirection in TESTS_ENVIRONMENT
+       * tests/tests-environment-fd-redirect.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       Motivated by coreutils bug#8846:
+        <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8846>
+       See also following CC:ed thread on bug-autoconf list:
+        <http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00002.html>
+
+2011-06-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: make test 'self-check-reexec.test' more portable
+       * tests/self-check-reexec.test: Rewrite not to require a Korn
+       Shell able to grok variable expansions such as `${.sh.version}';
+       Solaris 10 /bin/ksh fails on this for example.  Instead, just
+       require bash and a shell that is not bash.
+
+2011-06-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Jim Meyering  <meyering@redhat.com>
+
+       test defs: fix ksh-related portability bug in warning messages
+       Running "make check" normally prints a diagnostic to the outermost
+       stderr (usually a tty) to explain why a test is skipped, thus
+       giving better and faster feedback to the user.  It used to do
+       so by redirecting file descriptor 9 to stderr (via "exec 9>&2")
+       before invoking the test scripts, which then would write any skip
+       explanation to file descriptor 9 via the `skip_' function defined
+       in `tests/defs'.
+       However, various Korn Shells (at least Solaris 10's /bin/ksh and
+       Debian GNU/Linux's /bin/ksh) and the HP-UX's /bin/sh close open
+       file descriptors > 2 upon an `exec' system call; thus the effects
+       of "exec 9>&2" are cancelled upon fork-and-exec, so we would get
+       a "Bad file number" diagnostic and no skip explanation with those
+       shells.
+       The present change remedies this situation.
+       * tests/Makefile.am (AM_TESTS_ENVIRONMENT): Redirect more portably,
+       via a trailing "9>&2", rather than the prior "exec 9>&2; ...".  Add
+       explanatory comments.
+       * tests/defs (stderr_fileno_): Update the advice in comments.
+       Based on commit v8.12-82-g6b68745 "tests: accommodate HP-UX and
+       ksh-derived shells" in GNU coreutils.
+       Further references, with lots of discussion:
+        <http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00002.html>
+        <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/22488>
+        <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8846>
+
+2011-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove 'test_prefer_config_shell' from the environment
+       Since commit `v1.11-910-g7df1a9b', the once user-overridable
+       variable `$test_prefer_config_shell' has become an internal
+       detail, and the test scripts now complain and bail out if it is
+       set in the environment.
+       * tests/Makefile.am (AM_TESTS_ENVIRONMENT): Unset the variable
+       `test_prefer_config_shell' if it is set in the environment.
+
+2011-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: autogenerate list of wrapped tests for `lib/' shell scripts
+       * tests/gen-config-shell-tests: New script, generates distributed
+       makefile snippet `tests/config-shell-tests.am' to list all tests
+       that use the `get_shell_script' function, with names mangled to
+       use suffix `-w.shtst', in ...
+       * tests/Makefile.am (config_shell_tests): ... this macro, whose
+       definition has been consequently removed from Makefile.am.
+       (EXTRA_DIST): Distribute the new script.
+       ($(srcdir)/config-shell-tests.am): Generate using the new script.
+       (include): Include the `config-shell-tests.am' fragment.
+       * bootstrap: Invoke `tests/gen-config-shell-tests' to generate
+       `tests/config-shell-tests.am'.
+       * tests/.gitignore: Ignore `config-shell-tests.am'.
+       * tests/gen-parallel-tests: Fixlet in heading comments.
+
+2011-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: test mdate-sh with /bin/sh too
+       * tests/mdate5.test: Fetch the `mdate-sh' script using the
+       `get_shell_script' function, and run it directly instead of
+       using `$SHELL'.
+       * tests/mdate6.test: Likewise.  Since we are at it, make checks
+       on the `mdate-sh' output stricter, remove now unneeded calls to
+       aclocal and automake and creation/extension of `configure.in',
+       `Makefile.am' and `textutils.tex' files, and add a trailing `:'
+       command.
+       * tests/Makefile.am (config_shell_tests): Add `mdate5-w.shtst'
+       and `mdate6-w.shtst'.
+
+2011-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: extend tests on `--add-missing' and `--copy' a bit
+       * tests/add-missing.test: Fix typo in heading comments.  Try with
+       another testcase that install many (but not all) the auxiliary
+       scripts at once, and uses non-standard (but valid and documented)
+       setups (e.g., defining YACC in Makefile.am instead of calling
+       AC_PROG_YACC from configure.in).
+       * tests/copy.test: Reference `add-missing.test' in heading
+       comments.  Try few more test scenarios.
+
+2011-06-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: few fixlets and improvements
+       * tests/cond31.test ($required): Remove `cc', it's not really
+       needed.
+       * tests/confh.test: Call autoheader too.  The lack of this call
+       wasn't causing spurious failures because the automatic remake
+       rules were somehow invoking it on our behalf (at make time).
+       * tests/fn99subdir.test: Use $subdirname throughout, instead of
+       ${subdirname}, for consistency with the rest of the testsuite.
+       Avoid an unnecessary subshell, which could also cause spurious
+       passes, being guarded by a trailing `|| Exit 1', which neutralize
+       the `errexit' flag.  Remove an unnecessary `|| Exit 1' guard.
+       * tests/insh2.test: Rewrite to avoid hackish Makefile.in munging,
+       and to also run configure and make.
+
+2011-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: don't hard-code test name in txinfo21.test
+       * tests/txinfo21.test: Use `$me' instead of hard-coding the
+       current testcase name "txinfo21".  Add a trailing `:' command
+       since we are at it.
+
+2011-06-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: new test dedicated to `--add-missing' and `--copy'
+       * tests/add-missing.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       Suggested by Peter Rosin.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: use 'fatal_' and 'framework_failure_' for hard errors
+       * tests/defs (require_xsi): Use `fatal_', not `framework_failure',
+       to report an invalid usage.
+       * tests/remake-gnulib-remove-header.test: Prefer using `fatal_'
+       with a proper error message over a direct call to `Exit 99'.
+       * tests/pr8365-remake-timing.test: Likewise.
+       * tests/cygnus-imply-foreign.test: Likewise.
+       * tests/missing6.test: Likewise.
+       * tests/cond8.test: Likewise.
+       * tests/cond33.test: Likewise.
+       * tests/python-virtualenv.test: Prefer using `framework_failure_'
+       with a proper error message over a direct call to `Exit 99'.
+       * tests/instspc-tests.sh: Prefer using `framework_failure_' and
+       `fatal_' over direct calls to `Exit 99'.
+       (fatal_): Define this (which is a simplified version of the one
+       in `tests/defs') for early uses (i.e., before `tests/defs'
+       gets sourced).
+       * tests/depmode-tests.sh: Likewise.  Also, simplify the
+       'get_depmodes' function and calls to it accordingly.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: check new 'fatal_' function
+       * tests/self-check-exit.test: Also check the new 'fatal_'
+       function.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: new function 'fatal_', for hard errors
+       Before this patch, the only way offered by tests/defs to
+       properly signal a hard error was the `framework_failure_'
+       function.  But the error message issued by that function,
+       as its name would suggest, refers to a set-up failure in the
+       testsuite, while hard errors can obviously also be due to
+       other reasons.  The best way to fix this inconsistency is to
+       introduce a new function with a more general error message.
+       Inspired by a recent similar change to Gnulib's tests/init.sh.
+       * tests/defs (fatal_): New function.
+       * tests/README (Section "Writing test cases" subsection "Do"):
+       Suggest the use of `fatal_', not of `framework_failure_', for
+       generic hard errors.  The latter should be reserved for "real"
+       set-up failures.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       py-compile: '--' and non-option arguments terminate the option list
+       * lib/py-compile: Any non-option argument, or the special `--'
+       argument, now explicitly terminates the list of options.
+       * tests/py-compile-option-terminate.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       py-compile: complain on unrecognized options
+       * lib/py-compile: Complain on unrecognized options.  Don't be too
+       lax in matching `--help' and `--version' options.
+       * tests/py-compile-usage.test: Extend accordingly.
+       * NEWS: Update.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       py-compile: normalize error and help messages
+       * lib/py-compile: Now error messages do not begin with a capital
+       letter, nor end with a period, as per GNU standards.  Prepend the
+       error messages with the name of the script, not with its path.
+       When an invalid usage is recognized, always display the customary
+       message "Try `py-compile --help' ..." on a line of its own.
+       ($me): New variable, containing the name of the
+       program, i.e., `py-compile'.  Use it throughout.
+       (usage_error): New function, used to display error messages about
+       invalid usage.
+       * tests/py-compile-usage.test: Extend and tighten accordingly.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       python tests: add "unit tests" on py-compile
+       * tests/py-compile-basic.test: New test.
+       * tests/py-compile-basic2.test: New test.
+       * tests/py-compile-basedir.test: Likewise.
+       * tests/py-compile-destdir.test: Likewise.
+       * tests/py-compile-env.test: Likewise.
+       * tests/py-compile-usage.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+       Tested with python 2.0.1, 2.4.6, 2.6.6, 2.7.1, and 3.1.3.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       py-compile: the '--destdir' option now accepts a blank argument
+       * lib/py-compile (Option parsing): Do not count an empty argument
+       to `--destdir' or `--basedir' as a missing argument.
+       * lib/python.am: Simplify accordingly, passing the `--destdir'
+       option to py-compile unconditionally, even if `$(DESTDIR)' is
+       empty.
+       * NEWS: Update.
+
+2011-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       python: run the 'py-compile' script with $(SHELL)
+       * lib/python.am (install-%DIR%PYTHON): Run each instance of
+       py-compile using $(SHELL).  Since we are at it, break overly
+       long lines.
+       (am__py_compile): New variable, to reduce code duplication.
+
+
+2011-06-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: `lib/' shell scripts transparently tested also with $SHELL
+       With the previous commit, the user could prefer the use of $SHELL
+       over /bin/sh in some tests checking the Automake-provided shell
+       scripts by manually exporting `test_prefer_config_shell' to "yes"
+       in the environment.  With this commit, we ensure that such tests
+       *always* and *transparently* run using both $SHELL and /bin/sh
+       to execute the checked scripts.  The `test_prefer_config_shell'
+       variable becomes an internal detail, and is no more meant to be
+       manually defined or overridden.
+       * tests/defs-static.in: Check that `test_prefer_config_shell' is
+       not exported in the environment.  Error out if this is the case.
+       * tests/config-shell-tests.sh: New file, driver script to run
+       checks on the shell scripts in `lib/' using the $SHELL determined
+       at configure time instead of the default system shell /bin/sh.
+       * Makefile.am (TESTS_EXTENSIONS): Add `.shtst'.
+       (SHTST_LOG_COMPILER): Define, it calls `config-shell-tests.sh'.
+       (config_shell_tests): Define to a list of tests that wraps other
+       `*.test' tests using `config-shell-tests.sh'.
+       ($(config_shell_tests)): Dummy dependency declaration required
+       in order to have make actually produce expected log files from
+       the `.shtst.log' suffix rule.
+       (EXTRA_DIST): Distribute `config-shell-tests.sh'.
+       (TESTS): Add `$(config_shell_tests)'.
+       * tests/self-check-env-sanitize.test: Update, by checking that
+       `test_prefer_config_shell' isn't exported in the environment.
+
+2011-06-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: can use also $SHELL to check shell scripts from `lib/'
+       * tests/ar-lib.test: If the variable `$test_prefer_config_shell'
+       is set to "yes", run the script under test with configure-time
+       determined $SHELL, rather than with /bin/sh.
+       The `$test_prefer_config_shell' variable defaults to empty, but
+       can be overridden at runtime by the user, thus allowing more
+       coverage.
+       * tests/compile.test: Likewise.
+       * tests/compile2.test: Likewise.
+       * tests/compile3.test: Likewise.
+       * tests/compile4.test: Likewise.
+       * tests/compile5.test: Likewise.
+       * tests/compile6.test: Likewise.
+       * tests/instsh2.test: Likewise.
+       * tests/instsh3.test: Likewise.
+       * tests/mkinst3.test: Likewise.
+       * tests/missing.test: Likewise.
+       * tests/missing2.test: Likewise.
+       * tests/missing3.test: Likewise.
+       * tests/missing5.test: Likewise.
+       * tests/defs (get_shell_script): New subroutine, factoring out
+       code common to the tests above.
+       (xsi-lib-shell): If `$test_prefer_config_shell' is set to "yes",
+       check that $SHELL, not /bin/sh, supports XSI constructs, as we
+       expect the test will use $SHELL and not /bin/sh to run the
+       script being tested.
+
+2011-06-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: better requirements for XSI shells
+       This change avoids potential spurious failures with tests using
+       the requirement 'xsi-shell' to mean that they want */bin/sh* (not
+       $SHELL) to be XSI-conforming.  This idiom used to work before
+       commit `v1.11-874-g1321be7' (as back then the test scripts were
+       unconditionally run with /bin/sh), but has become inconsistent
+       now that the test scripts re-execute themselves with configure
+       determined $SHELL.
+       The described spurious failures have already occurred in practice,
+       for examples on Solaris systems which also had GNU Bash installed.
+       From a suggestion by Peter Rosin.  See discussion at:
+       <http://lists.gnu.org/archive/html/automake-patches/2011-06/msg00016.html>
+       * tests/defs (xsi-shell): Now check that $SHELL, rather than the
+       shell currently running the test script, is an XSI shell.
+       (xsi-bin-sh): New requirement, checking that /bin/sh (which can
+       differ from $SHELL) is an XSI shell.
+       (xsi-lib-shell): New requirement, checking that the shell that
+       should be used to test the Automake-provided scripts from `lib/'
+       is an XSI shell.  For the moment, this is just an alias for
+       `xsi-bin-sh'.
+       (require_xsi): New subroutine, used to factor out code common to
+       the requirements above.
+       ($xsi_shell_code): New variable, contains shell code supposed to
+       work only with XSI shells.  Used by the new subroutine above.
+       * tests/ar-lib.test ($required): Require 'xsi-lib-shell' instead
+       of 'xsi-shell', since the script we test here is run with /bin/sh,
+       not with $SHELL.
+       * tests/compile3.test: Likewise.
+       * tests/compile6.test: Likewise.
+
+2011-06-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix typo-related error in auxdir2.test
+       * tests/auxdir2.test (configure.in):  Close m4 quoting in the
+       argument to AC_CONFIG_AUX_DIR.  Without this, aclocal fails with
+       "ERROR: end of file in string".  This problem hasn't been exposed
+       by the testsuite before because this test is in XFAIL_TESTS, so
+       its failure went unnoticed, even if it was due to a wrong cause.
+       Bug introduced in commit v1.11-249-g49ac3de.
+
+2011-06-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: check that `$me' can be overridden
+       * tests/self-check-me.test: Check that `$me' can be overridden
+       before sourcing ./defs, with or without sourcing ./defs-static
+       beforehand, and that this override is honored.  Update heading
+       comments.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       self tests: fix another spurious failure
+       Our ad-hoc usage of `tests/defs' in the testsuite's self tests
+       stopped working properly when we made the test scripts re-execute
+       themselves with the configure-time $SHELL.  Fix this.
+       Fixes a regression introduced by commit 'v1.11-874-g1321be7'.
+       * tests/self-check-exit.test: Export `AM_TESTS_REEXEC' to "no"
+       before running the self tests.  This fixes a spurious failure
+       present only when the test was run by hand.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       silent-rules tests: fix spurious failures with Sun Studio C++
+       * tests/silentcxx.test: The C++ compiler from Sun Studio is named
+       `CC'.  Account for this in our grepping checks on the make output.
+       Since we are at it, throw in a couple of improvements to comments
+       and formatting.
+       * tests/silent-many-generic.test: The C++ compiler from Sun Studio
+       is named `CC', and this can cause spurious failures in our grepping
+       of the make output.  Work around this by using a wrapper script
+       around the C++ compiler (generated on the fly), since filtering the
+       make output proved to be too fragile.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in backcompat2.test on NetBSD
+       * tests/backcompat2.test: Add trailing `:' in the body of a `for'
+       loop, in case the last command there might have an exit status
+       different 0.  This work around `set -e' issues in some BSD shells,
+       e.g., NetBSD /bin/ksh.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in autohdr3.test
+       * tests/autohder3.test (Makefile.am): Let `test' depend on `all',
+       so that config.h header is truly remade.
+       Remove now useless call to `$MAKE' when non-GNU make is in use.
+       Failure introduced by commit `v1.11-895-g5e62b96'.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure of cond29.test on NetBSD
+       * tests/cond29.test: Skip if we cannot safely limit the maximal
+       size of used virtual memory to 20K.  This fixes a spurious failure
+       on NetBSD.
+       Bug introduced in commit `v1.11-885-g908d335'.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix again few more failures
+       * tests/cond29.test: To please the `sc_tests_Exit_not_exit'
+       maintainer check, avoid using `sh -c "exit 0"' where a simple
+       `sh -c :' will do.
+       * tests/depmod-data.test: Use creative quoting to avoid
+       spuriously triggering the `sc_tests_Exit_not_exit' maintainer
+       check.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix some more failures
+       * tests/instdir-ltlib.test: Use creative quoting to avoid
+       spuriously triggering the `sc_rm_minus_f' maintainer check.
+       * tests/instdir-prog.test: Likewise.
+       * tests/instspc-data.test: Use creative quoting to avoid
+       spuriously triggering the `sc_tests_Exit_not_exit' maintainer
+       check.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: fix some failures, extend some checks
+       * Makefile.am (sc_diff_automake_in_automake): Update, as we
+       now expect 9 lines, not 8, to be changed from `automake.in'
+       to `automake'.
+       (sc_diff_aclocal_in_aclocal): New maintainer check, similar to
+       the above, and checking that only 10 lines are changed from
+       `aclocal.in' to `aclocal'.
+       (syntax_check_rules): Update.
+       (sc_tests_Exit_not_exit): Exempt self tests `self-check-*.test'
+       from this check, as they can legitimately use the bare `exit'
+       builtin in various places.
+       * doc/automake.texi (Python): Remove stray `@' from the end of
+       a line.  Typo introduced in commit `v1.11-312-g5bf7af6'.
+       * tests/depcomp8a.test: Pass DISTCHECK_CONFIGURE_FLAGS to make
+       from the environment rather than from the command line, to
+       pacify the `sc_tests_overriding_macros_on_cmdline' maintainer
+       check.
+       * tests/depcomp8b.test: Likewise.
+
+2011-06-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: don't require GNU make where it's not strictly needed
+       * tests/autohdr3.test: Rewrite to be stricter when make is GNU
+       make.  Drop the requirement of GNU make.
+       * tests/aclocal5.test: Drop GNU make requirement, it's not truly
+       needed.  Add reference to similar tests `remake-subdir*.test'.
+       * remake-subdir-gnu.test, remake-subdir-from-subdir.test,
+       remake-subdir.test, remake-subdir2.test: Add reference to
+       each other, and to related test `aclocal5.test'.
+       * tests/aclocal6.test: Drop GNU make requirement, it's not
+       truly needed.
+       * tests/confh6.test: Likewise.
+       * tests/lex3.test: Likewise.
+       * tests/remake11.test: Likewise.
+       * tests/subdir5.test: Likewise.
+       * tests/subdir8.test: Likewise.
+       * tests/werror2.test: Likewise.
+       * tests/conff.test: Likewise, and ensure verbose printing of
+       captured make output.
+       * tests/lex5.test: Tweak so that GNU make is no more required.
+       * tests/version7.test: Likewise.
+       * tests/maken2.test: Add explicative comment for why this test
+       requires GNU make.
+       * tests/maken4.test: Let it run also with BSD makes supporting
+       the `.MAKE' special target.
+       * tests/output6.test: Use proper m4 quoting in configure.in.
+       Expand make macros with one-character name using `$(x)', not
+       `$x', for portability.  Move checks in the makefiles, rather
+       than relying on grepping the output from make.  Drop the now
+       unneeded GNU make requirement.
+
+2011-05-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       remake: behave better with non-GNU make in subdirectories
+       Currently, with every decent make program, it is possible to
+       rebuild out-of-date autotools-generated files with a simple
+       "make Makefile" -- but for this to work reliably with non-GNU
+       make implementations, the command must be issued from the
+       top-level directory.  This patch removes such limitation.
+       * lib/am/configure.am (am--refresh): Depend on `%MAKEFILE%'.
+       * tests/remake-subdir.test: New test.
+       * tests/remake-subdir2.test: Likewise.
+       * tests/remake-subdir-gnu.test: Likewise.
+       * tests/remake-subdir-from-subdir.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex tests: fix spurious failures with Solaris lex
+       * tests/lex-lib.test (foo.l): Avoid empty "rules section", which
+       can confuse Solaris lex.
+       * tests/lex-libobj.test (foo.l): Likewise.
+
+2011-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex tests: do not force the use of flex unconditionally
+       * tests/defs (lex): Act more similarly to what the `yacc'
+       requirement does, i.e., only force the use of flex if the
+       $LEX variable is left unset by the user.
+       (flex): Use `skip_' to skip the test if flex is not found.
+
+2011-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex tests: avoid possible hang; fix and extend
+       * tests/lex3.test (foo.l:yywrap): Return 1, not 0, to avoid hangs.
+       Bug introduced in commit 'v1.11-871-geb147a1'.
+       (Makefile.am): Do not add `@LEXLIB@' to `$(LDADD)', as we define
+       our own `yywrap' function.
+       * tests/lex.test (tscan.l): In `yywrap', return 1, not 0, for
+       consistency with the default flex implementation.
+       * tests/lex-libobj.test (yywrap.c): Likewise.
+       * tests/lex-subobj-nodep.test (s1.l): Likewise.
+       * tests/lexvpath.test (foo.c): Likewise.
+       * tests/silent-lex-gcc (foo.l): Likewise.
+       * tests/silent-lex-generic (foo.l): Likewise.
+       * tests/silent-many-gcc (foo5.l): Likewise.
+       * tests/silent-many-generic (foo5.l): Likewise.
+       * tests/lex-lib.test (mu.c): Likewise.
+       Update heading comments, to refer to ...
+       * tests/lex-lib-external.test: ... this new test, which checks
+       that we can get use the `yywrap' function from a system-wide
+       library, if that's available.
+
+2011-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: prefer `skip_' over `echo ...; Exit 77'
+       * tests/self-check-cleanup.test: When the test must be skipped,
+       use `skip_ REASON' instead of `echo REASON; Exit 77'.  Also,
+       make the skip message shorter and clearer.
+
+2011-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures in self tests
+       Our ad-hoc usage of `tests/defs' in the testsuite's self tests
+       stopped working properly when we made the test scripts re-execute
+       themselves with the configure-time $SHELL.  Fix this.
+       Fixes a bug introduced by commit 'v1.11-874-g1321be7'.
+       * tests/defs: Only check that we can find the client test script
+       when we must re-execute it.
+       * tests/self-check-cleanup.test: Export `AM_TESTS_REEXEC' to "no"
+       before running the self tests.
+       * tests/self-check-dir.test: Likewise.
+       * tests/self-check-explicit-skips.test: Likewise.
+       * tests/self-check-me.test: Likewise.
+       * tests/self-check-sanity.test: Likewise.
+       * tests/self-check-reexec.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: prefer ulimit over timeout in test on a memory-hogging bug
+       * tests/cond29.test: Use 'ulimit' instead of 'timeout' to ensure
+       that automake does not uses up too much resources.  This is really
+       and improvement because the bug tested by this script wasn't just
+       a "it hangs" or "it runs too slow" bug, but rather a memory-hogging
+       bug (due to combinatorial explosion when many Automake conditionals
+       had to be handled) which could easily crash the whole system, which
+       is unacceptable.  The requirement of a proper and working 'ulimit'
+       builtin might cause the test to be skipped on more systems, but
+       that shouldn't be a problem since the bug isn't about a portability
+       issue, but is rather an automake internal implementation problem.
+       I've verified that the test as updated by this patch still passes
+       with automake 1.8.5, automake 1.10.2, and obviously the development
+       version of automake, and that it fails with automake 1.7.9.
+
+2011-06-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: avoid generating `*-p.test' tests, use a wrapper script
+       The generated `*-p.test' tests had already become just thin layers
+       around the corresponding test scripts.  This change makes the final
+       step, converting to the use of a generic wrapper script and thus
+       avoiding the extra test generation (similarly to what is done for
+       the `*.instspc' and `*.depmod' tests).
+       * tests/parallel-tests.sh: New file, driver script to run checks
+       the on the `parallel-tests' semantics by wrapping tests that use
+       the generic "Simple Tests" driver.
+       * tests/gen-parallel-tests: Update, mostly to reflect the new
+       `.ptest' extensions used for tests in $(parallel_tests).
+       * Makefile.am (TESTS_EXTENSIONS): Add `.ptest'.
+       (PTEST_LOG_COMPILER): Define, it calls `parallel-tests.sh'.
+       ($(parallel_tests)): Do not really generate `*-p.test' tests
+       anymore; this is now just a dummy dependency declaration required
+       in order to have make actually produce expected log files from
+       the `.ptest.log' suffix rule.
+       (EXTRA_DIST): Distribute `parallel-tests.sh'.
+       (MAINTAINERCLEANFILES): Don't remove the `$(parallel_tests)', it
+       is not necessary anymore.
+       (generated_tests): Variable definition removed.
+       (TESTS): Update, by listing `$(parallel_tests)' directly instead
+       of `$(generated_tests)'
+       (expected_list_of_tests): Remove `$(generated_tests)'.
+       (maintainer-check-list-of-tests): No need to explicitly depend on
+       `$(expected_list_of_tests)' anymore.
+
+2011-05-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       automake, aclocal: honour configure-time AUTOCONF and AUTOM4TE
+       Currently, the Automake's own configure script allow definition
+       of AUTOCONF and AUTOM4TE, expected to point respectively to an
+       autoconf and autom4te programs.  But while these definitions are
+       honoured in the Automake's build systems and test suite, they
+       were *not* honoured in the generated `automake' and `aclocal'
+       scripts.  This behaviour, apart from being wrong in that it does
+       not allow the user enough freedom in choosing his tools, also
+       caused inconsistencies in the test suite, brining to spurious
+       failures.
+       Problem reported by Graham Reitz on the automake list; see thread:
+       <http://lists.gnu.org/archive/html/automake/2011-05/msg00022.html>
+       * automake.in ($traces): Use `@am_AUTOCONF', not simply `autoconf'.
+       * aclocal.in ($traces): Use `@am_AUTOM4TE', not simply `autom4te'.
+       * Makefile.am (do_subst): Substitute also `@am_AUTOCONF' and
+       `@am_AUTOM4TE'.
+       * NEWS: Update.
+       * THANKS: Update.
+
+2011-05-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: the user can override AUTOM4TE, AUTORECONF and AUTOUPDATE too
+       Our build system allows the user to override AUTOCONF and AUTOHEADER
+       at configure time, and honours these overrides in our testsuite.
+       But it didn't do the same with AUTOM4TE, AUTORECONF and AUTOUPDATE.
+       This change fixes that inconsistency.
+       * configure.ac (am_AUTOM4TE, am_AUTOUPDATE, am_AUTORECONF): New
+       AC_SUBSTitutions.  Update comments.
+       * tests/defs.in ($AUTOUPDATE): Default to `@am_AUTOUPDATE@' now.
+       ($AUTOM4TE): New variable, defaulting to `@am_AUTOM4TE@'.
+       ($AUTORECONF): New variable, defaulting to `@am_AUTORECONF@'.
+       * doc/Makefile.am ($(srcdir)/amhello-1.0.tar.gz): Update.
+
+2011-05-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: stricter checks on DISABLE_HARD_ERRORS support
+       * tests/parallel-tests-harderror.test: New test, doing more
+       in-depth checks on DISABLE_HARD_ERRORS.
+       * tests/parallel-tests.test: Remove tests on DISABLE_HARD_ERRORS,
+       now redundant.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests/README: fix example about `make -e' usage
+       * tests/README (Section "Writing test cases" subsection "Do"): When
+       some variable is never initialized in the Makefile, `-e' is not
+       necessary in order to override it.  DESTDIR is such a variable: we
+       ensure that we do not ever initialize it.  And as such, it is quite
+       portable to use:
+         $ make DESTDIR=/foo/bar install
+       and in fact, quite widely used.
+       So our example about when `make -e' is required, which references
+       the `DESTDIR' variable, is poorly chosen, if not downright wrong.
+       Rewrite it to use `prefix' as the overridden variable instead.
+
+2011-05-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: don't require gfortran if any fortran compiler is enough
+       * tests/silentf90.test ($required): Require `fortran', not
+       `gfortran'.
+       * tests/silentf77.test ($required): Require `fortran77', not
+       `gfortran'.
+       * tests/silent-many-generic.test ($required): Require `fortran'
+       and `fortran77' rather than `gfortran'.
+
+2011-05-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: improve `ccnoco*.test', better cross-compiling support
+       * tests/ccnoco3.test (Mycomp): Use the `$CC' chosen by `tests/defs'
+       instead of forcing `gcc' unconditionally.  This ensures better
+       coverage in case of cross-compiling, when GCC can be named e.g.,
+       `i586-mingw32msvc-gcc', instead of simply `gcc'.
+       * tests/ccnoco.test: Likewise.  Remove redundant checks.  Modernize
+       the created `configure.in'.  Run tests both in-tree and in VPATH.
+       Export `CC' to the overridden value only once.
+       * tests/ccnoco2.test: Slightly stricter grepping of automake
+       stderr.  Add trailing `:' command.
+
+2011-05-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: each test case depends on `defs-static'
+       * tests/Makefile.am ($(TEST_LOGS)): Depends on `defs-static' too.
+       Simplify comments.
+
+2011-05-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: use $SHELL to run tests which are shell scripts
+       * tests/Makefile.am (TEST_LOG_COMPILER): Define so that the
+       configure-time $SHELL is used to run the tests.
+       * tests/defs: Add code to re-execute by default the running
+       test script with configure-time $SHELL.  Updated comments.
+       * configure.ac: Check that `set -e' is working for $SHELL,
+       not for /bin/sh.
+       * tests/defs-static.in: Update comments.
+       * tests/README (Supported shells): Updated.
+       (Getting details from failures): Don't tell that tests are
+       run by /bin/sh by default.
+
+2011-05-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: split 'subst2.test' to improve modularity and coverage
+       * tests/subst2.test: Test removed, split into ...
+       * tests/programs-primary-rewritten.test: ... this test ...
+       * tests/subst-no-trailing-empty-line.test: ... and this one ...
+       * tests/extra-programs-empty.test: ... and this one.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: tweak and improve tests on Automake conditionals
+       The "avoid the requirement of a working compiler" we refer about
+       below is obtained by disabling automatic dependency tracking and
+       defining `CC' (and `EXEEXT', `OBJEXT', `CXX', etc., if needed) to
+       dummy values, either directly in the `Makefile.am', or by AC_SUBST
+       in `configure.in'.
+       The "cosmetic changes" we refer about below consists in, e.g.,
+       adding a trailing `:' command to a script, using proper m4 quoting
+       in `configure.in' files, adding commands that offer more debugging
+       output, explicitly declaring phony targets as such in Makefiles,
+       making use of idioms more consistent with those employed in other
+       tests, following the GNU formatting standards more closely, etc.
+       * tests/cond.test: Cosmetic changes.
+       * tests/cond3.test: Likewise.
+       * tests/cond10.test: Likewise.
+       * tests/cond14.test: Likewise.
+       * tests/cond15.test: Likewise.
+       * tests/cond17.test: Likewise.
+       * tests/cond40.test: Likewise.
+       * tests/cond13.test: Likewise, and make grepping of the generated
+       `Makefile.in' slightly stricter.
+       * tests/cond6.test: Extend by also running ./configure, make and
+       "make install".  Few cosmetic changes.
+       * tests/cond8.test: Likewise.
+       * tests/cond2.test: Do few cosmetic changes.  Make grepping of
+       automake stderr stricter.
+       * tests/cond20.test: Likewise.
+       * tests/cond23.test: Likewise.
+       * tests/cond24.test: Likewise.
+       * tests/cond42.test: Likewise.
+       * tests/cond46.test: Likewise.
+       * tests/cond9.test: Move more checks in the `Makefile.am' instead
+       of grepping make's output.
+       * tests/cond38.test: Likewise.
+       * tests/cond11.test: Likewise.  Avoid the requirement of a working
+       C compiler.
+       * tests/cond16.test: Likewise.
+       * tests/cond22.test: Likewise.
+       * tests/cond30.test: Likewise.
+       * tests/cond31.test: Likewise.
+       * tests/cond4.test: Likewise, and drop the now-useless GNU make
+       requirement as well.
+       * tests/cond18.test: Likewise.
+       * tests/cond19.test: Likewise.
+       * tests/cond22.test: Likewise.
+       * tests/cond25.test: Add trailing `:' command.
+       * tests/cond26.test: Likewise.
+       * tests/cond27.test: Likewise.
+       * tests/cond28.test: Likewise.
+       * tests/cond29.test: Use `unindent' function for better formatting.
+       Other minor cosmetic changes.  Use a `timeout' program (if it's
+       available) to determine whether the script takes too long, instead
+       of just hoping that the user will notice an abnormally long test
+       execution time.
+       * tests/cond33.test: Extend a bit.  Fix heading comments.  Few more
+       cosmetic changes.
+       * tests/cond37.test: Ensure verbose printing of captured make
+       output.  Minor cosmetic changes.
+       * tests/cond34.test: Likewise.  Avoid the requirement of a working
+       C compiler.  Make grepping of make output slightly stricter.
+       * tests/cond35.test: Quote literal dots in grep regexp.  Add extra
+       debugging output.  Minor cosmetic changes.
+       * tests/cond36.test: Likewise.
+       * tests/cond41.test: Do not simply check that aclocal fails, but
+       also grep its stderr for the expected error message.
+       * tests/cond43.test: Likewise (but the program being automake).
+       Few cosmetic changes.
+       * tests/condd.test: Avoid the requirement of a working C compiler.
+       * tests/condman3.test: Extend by using more man pages and more
+       manpage sections.
+       * tests/condman.test: Removed, it's completely superseded by
+       `condman3.test'.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex tests: avoid spurious failures when LEXLIB isn't found
+       The AC_PROG_LEX Autoconf macro does not diagnose a failure to find
+       the "lex library" expected to provide a `yywrap' function (function
+       which is required to link most lex-generated programs).  On the
+       contrary, when all the link attempts (i.e., with `-ll' and `-lfl')
+       fail, configure declares that no lex library is needed, and simply
+       proceeds with the configuration process -- only for the build to
+       possibly fail later, at make time.
+       This behaviour might be (partly) intended; the Autoconf manual
+       reads:
+        ``You are encouraged to use Flex in your sources, since it is
+          both more pleasant to use than plain Lex and the C source
+          it produces is portable.  In order to ensure portability,
+          however, you must either provide a function `yywrap' or, if
+          you don't use it (e.g., your scanner has no `#include'-like
+          feature), simply include a `%noyywrap' statement in the
+          scanner's source.''
+       This AC_PROG_LEX behaviour is causing some spurious failures of the
+       Automake testsuite in environments which lack a proper library
+       providing `yywrap' (this happens for example in Linux->MinGW cross
+       compilations).  But at this point is clear that a proper workaround
+       is to simply provide a fall-back implementation of `yywrap' in our
+       lexers.
+       * tests/cond35.test: Provide a dummy `yywrap' function.
+       * tests/lex3.test: Likewise.
+       * tests/lexvpath.test: Likewise.
+       * tests/silent-many-gcc.test: Likewise.
+       * tests/silent-many-generic.test: Likewise.
+       * tests/silent-lex-gcc.test: Likewise, and a dummy `main' too.
+       * tests/silent-lex-generic.test: Likewise.
+       * tests/lex-lib.test: New test.
+       * tests/lex-libobj.test: New test.
+       * tests/lex-nowrap.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * THANKS: Update.
+       Thanks to Russ Allbery for the suggestion.
+
+2011-05-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: require C++ compiler explicitly in tests needing it
+       The list of the test scripts which needed a C++ compiler but
+       failed to require it explicitly has been found by running:
+         $ tests=`grep -lE 'CXX|\.c(c|\+\+|xx|pp)' *.test | tr '\n' ' '`
+         $ am_explicit_skips=yes CXX=false make check TESTS="$tests"
+       and looking for tests that reported FAIL instead of SKIP.
+       After the present change, all those previously failing tests
+       either pass or get correctly skipped.
+       * tests/subobj9.test: Require `c++', instead of explicitly
+       skipping on configure failure.  Add excerpts and/or details from
+       the original bug report that prompted this tests to be written.
+       * tests/silentcxx-gcc.test: Require g++.
+       * tests/silentcxx.test: Require c++.
+       * tests/suffix3.test: Likewise.
+
+2011-05-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: don't require g++ where any C++ compiler is enough
+       * tests/specflg10.test ($required): Use `c++', not g++.
+       * tests/silent-many-generic.test: Likewise.
+
+2011-05-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: require C compiler explicitly in tests needing it
+       The list of the test scripts which needed a C compiler but
+       failed to require it explicitly has been found by running:
+         $ am_explicit_skips=yes CC=false make check
+       and looking for tests that reported FAIL instead of SKIP.
+       After the present change, all those previously failing tests
+       either pass or get correctly skipped.
+       * tests/aclocal4.test ($required): Add `cc'.
+       * tests/ansi.test: Likewise.
+       * tests/ansi10.test: Likewise.
+       * tests/ansi3.test: Likewise.
+       * tests/ansi3b.test: Likewise.
+       * tests/ansi5.test: Likewise.
+       * tests/ansi6.test: Likewise.
+       * tests/ansi7.test: Likewise.
+       * tests/ansi9.test: Likewise.
+       * tests/backcompat6.test: Likewise.
+       * tests/canon7.test: Likewise.
+       * tests/check5.test: Likewise.
+       * tests/check7.test: Likewise.
+       * tests/check8.test: Likewise.
+       * tests/cond4.test: Likewise.
+       * tests/cond11.test: Likewise.
+       * tests/cond16.test: Likewise.
+       * tests/cond18.test: Likewise.
+       * tests/cond19.test: Likewise.
+       * tests/cond22.test: Likewise.
+       * tests/cond30.test: Likewise.
+       * tests/cond31.test: Likewise.
+       * tests/cond32.test: Likewise.
+       * tests/cond34.test: Likewise.
+       * tests/cond35.test: Likewise.
+       * tests/cond39.test: Likewise.
+       * tests/condd.test: Likewise.
+       * tests/cygnus-dependency-tracking.test: Likewise.
+       * tests/depcomp2.test: Likewise.
+       * tests/depcomp6.test: Likewise.
+       * tests/depcomp7.test: Likewise.
+       * tests/depcomp8a.test: Likewise.
+       * tests/depcomp8b.test: Likewise.
+       * tests/depdist.test: Likewise.
+       * tests/depend2.test: Likewise.
+       * tests/depend5.test: Likewise.
+       * tests/distcleancheck.test: Likewise.
+       * tests/distname.test: Likewise.
+       * tests/exeext.test: Likewise.
+       * tests/exeext4.test: Likewise.
+       * tests/extradep.test: Likewise.
+       * tests/extradep2.test: Likewise.
+       * tests/gnits2.test: Likewise.
+       * tests/gnits3.test: Likewise.
+       * tests/instdir-ltlib.test: Likewise.
+       * tests/instdir-prog.test: Likewise.
+       * tests/instfail.test: Likewise.
+       * tests/instfail-libtool.test: Likewise.
+       * tests/lex3.test: Likewise.
+       * tests/lex5.test: Likewise.
+       * tests/lexvpath.test: Likewise.
+       * tests/lex-subobj-nodep.test: Likewise.
+       * tests/lflags.test: Likewise.
+       * tests/libobj-basic.test: Likewise.
+       * tests/libobj2.test: Likewise.
+       * tests/libobj7.test: Likewise.
+       * tests/libobj10.test: Likewise.
+       * tests/libobj16a.test: Likewise.
+       * tests/libobj16b.test: Likewise.
+       * tests/libobj17.test: Likewise.
+       * tests/libobj19.test: Likewise.
+       * tests/libtool2.test: Likewise.
+       * tests/libtool3.test: Likewise.
+       * tests/libtool7.test: Likewise.
+       * tests/libtool9.test: Likewise.
+       * tests/libtoo10.test: Likewise.
+       * tests/libtoo11.test: Likewise.
+       * tests/ltcond.test: Likewise.
+       * tests/ltcond2.test: Likewise.
+       * tests/ltconv.test: Likewise.
+       * tests/ltinit.test: Likewise.
+       * tests/ltlibsrc.test: Likewise.
+       * tests/ltorder.test: Likewise.
+       * tests/nobase.test: Likewise.
+       * tests/nobase-libtool.test: Likewise.
+       * tests/mmodely.test: Likewise.
+       * tests/parallel-tests5.test: Likewise.
+       * tests/parallel-tests-suffix-prog.test: Likewise.
+       * tests/parallel-tests-ext-driver-prog.test: Likewise.
+       * tests/posixsubst-ldadd.test: Likewise.
+       * tests/posixsubst-libraries.test: Likewise.
+       * tests/posixsubst-ltlibraries.test: Likewise.
+       * tests/posixsubst-programs.test: Likewise.
+       * tests/posixsubst-sources.test: Likewise.
+       * tests/pr87.test: Likewise.
+       * tests/pr204.test: Likewise.
+       * tests/pr224.test: Likewise.
+       * tests/pr300-lib.test: Likewise.
+       * tests/pr300-ltlib.test: Likewise.
+       * tests/pr300-prog.test: Likewise.
+       * tests/pr401.test: Likewise.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+       * tests/remake-gnulib-add-acsubst.test: Likewise.
+       * tests/remake-gnulib-add-header.test: Likewise.
+       * tests/regex.test: Likewise.
+       * tests/repeated-options.test: Likewise.
+       * tests/silent.test: Likewise.
+       * tests/silent3.test: Likewise.
+       * tests/silent9.test: Likewise.
+       * tests/silent-lex-generic.test: Likewise.
+       * tests/silent-many-generic.test: Likewise.
+       * tests/silent-yacc-generic.test: Likewise.
+       * tests/specflg7.test: Likewise.
+       * tests/specflg9.test: Likewise.
+       * tests/specflg10.test: Likewise.
+       * tests/stdinc.test: Likewise.
+       * tests/strip.test: Likewise.
+       * tests/strip2.test: Likewise.
+       * tests/strip3.test: Likewise.
+       * tests/subdirbuiltsources.test: Likewise.
+       * tests/subobj3.test: Likewise.
+       * tests/subobj6.test: Likewise.
+       * tests/subobj11a.test: Likewise.
+       * tests/subpkg.test: Likewise.
+       * tests/subst2.test: Likewise.
+       * tests/subst3.test: Likewise.
+       * tests/substref.test: Likewise.
+       * tests/substre2.test: Likewise.
+       * tests/suffix5.test: Likewise.
+       * tests/suffix8.test: Likewise.
+       * tests/suffix10.test: Likewise.
+       * tests/suffix11.test: Likewise.
+       * tests/suffix12.test: Likewise.
+       * tests/suffix13.test: Likewise.
+       * tests/target-cflags.test: Likewise.
+       * tests/transform.test: Likewise.
+       * tests/transform2.test: Likewise.
+       * tests/yacc-basic.test: Likewise.
+       * tests/yacc-d-basic.test: Likewise.
+       * tests/yacc-clean.test: Likewise.
+       * tests/yacc-dist-nobuild.test: Likewise.
+       * tests/yacc-nodist.test: Likewise.
+       * tests/yaccvpath.test: Likewise.
+       * tests/yacc-d-vpath.test: Likewise.
+       * tests/yacc4.test: Likewise.
+       * tests/yacc7.test: Likewise.
+       * tests/yacc8.test: Likewise.
+       * tests/yaccdry.test: Likewise.
+       * tests/yflags-cmdline-override.test: Likewise.
+       * tests/yflags-force-override.test: Likewise.
+       * tests/python-virtualenv.test: Likewise.  Also, improve skip
+       messages.
+       * tests/subobj5.test ($required): Add `cc'.
+       (Makefile.am): Set `AUTOMAKE_OPTIONS' to `subdir-objects', and
+       add new checking rules `test-build' and `test-distdir'.
+       Extend the test by building and examining the distdir, the
+       program, and the object files.
+       * tests/postproc.test ($required): Add `cc'.
+       Avoid the explicit `|| Exit $?' after call to configure, which
+       is now either redundant (e.g., when `am_explicit_skips' is
+       unset), or counter-productive (e.g., when `am_explicit_skips'
+       is set to "yes").
+       * tests/pr243.test: Likewise.
+       * tests/pr266.test: Likewise.
+       * tests/pr220.test: Simplify so that it doesn't require a
+       C compiler anymore.
+       * tests/subdir5.test: Likewise.
+       * tests/subdir8.test: Likewise.
+       * tests/lflags.test: Likewise.
+       * tests/yflags.test: Likewise.
+       * tests/yflags-force-conditional.test: Likewise.
+       * tests/lflags2.test: Simplify so that it doesn't require a
+       C++ compiler anymore.
+       * tests/yflags2.test: Likewise.
+       * tests/autohdrdry.test (configure.in): Remove unneeded call
+       to `AC_PROG_CC'.
+       * tests/pr287.test: Likewise.
+       * tests/check6.test: Likewise.
+       * tests/cond21.test: Likewise, plus some cosmetic adjustments.
+       * tests/upc.test: Skip if configure fails with status `77'.
+       * tests/upc3.test: Likewise.
+       * tests/vala4.test: Likewise.
+       * tests/nostdinc.test: Likewise.  Also, make grepping checks
+       on `Makefile.in'.  Update heading comments.
+       * tests/compile5.test: When we must skip, skip explicitly,
+       and with a meaningful message.
+       * tests/instspc-tests.sh: When running in "test-build" or
+       "test-install" mode (as determined by the value of variable
+       `$instspc_action'), require `cc'.  Adjust comments.
+       * tests/depmod-tests.sh: Likewise.
+
+2011-05-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: allow user to ask for stricter skip semantics
+       Given how the Automake testsuite is currently structured, if a
+       command in a test script fails with status `77', the global test
+       outcome is considered a SKIP, because the value of `77' for `$?'
+       is passed to the exit trap.  Indeed, this happens in practice, as
+       an autoconf-generated configure script can exit with status `77'
+       if it fails to find, e.g., a required compiler.
+       While this behaviour is quite useful for avoiding spurious test
+       failures in the wild, it can also sometimes prevent the Automake
+       developers to easily see and declare the requirements of their
+       tests.
+       This change introduces a new variable `am_explicit_skips', meant to
+       be user-overridable, and which, when set to a "true" value (i.e.,
+       `yes' or `1'), require a direct call to `Exit 77' in order to make
+       the test outcome be considered a SKIP.
+       * tests/defs.in ($am__test_skipped): New variable, initialized
+       to `no'.
+       (Exit): Set `$am__test_skipped' to `yes' if passed an exit status
+       of 77.
+       (trap '...' 0): When `$am_explicit_skips' is set to a "true" value,
+       reset an exit status of `77' to `78' if $am__test_skipped is not
+       set to `yes'.
+       * tests/self-check-exit.test: Adjust: unset `am_explicit_skips'.
+       * tests/self-check-explicit-skips.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: user can force skipping of compiler-requiring tests
+       * tests/defs (cc, c++, fortran, fortran77): Skip the test if
+       the relevant compiler is disabled by having the corresponding
+       variable (CC, CXX, FC and F77, respectively) set to "false".
+       (yacc): For consistency, skip the test when the YACC variable
+       is set to "false", not when it's set to "no".  Since we are at
+       it, fix the skip message to be shorter and more consistent.
+
+2011-05-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: tweak and improve tests on "Simple Tests" driver
+       * tests/check.test: Make grepping of generated Makefile.in
+       slightly stricter.  Add trailing `:' command.
+       * tests/check2.test: Ensure verbose printing of captured make
+       output.  Make grepping of generated Makefile.in and of make
+       output stricter.  Add trailing `:' command.
+       * tests/check3.test: Likewise.  Also, fix minor error in a
+       comment.
+       * tests/check4.test: Stricter grepping of make output.  Use
+       `using_gmake' subroutine instead of copy&paste from defs.in
+       to determine whether $MAKE is GNU make.  Add a trailing `:'
+       command.
+       * tests/check6.test: Add trailing `:' command.
+       * tests/check10.test: Prefer redirection `>' over `>>' when
+       creating new files.  Ensure verbose printing of captured make
+       output.
+       * tests/check11.test: Likewise.
+       * tests/check7.test: Likewise.  Make grepping of make output
+       stricter.  Prefer "make distcheck" over a simple "make check"
+       in a VPATH build. Add trailing `:' command.
+       (a.c): Format following GNU coding standards.
+       (Makefile.am): Explicitly declare target `print-xfail-tests'
+       as PHONY.  Distribute $(check_SCRIPTS), for distcheck.
+       * tests/parallel-tests.test: Prefer redirection `>' over `>>'
+       when creating new files.
+       * tests/parallel-tests2.test: Likewise.
+       * tests/parallel-tests9.test: Likewise.
+       * tests/parallel-tests8.test: Likewise.  Make grepping of
+       automake stderr stricter.
+       * tests/check8.test: Likewise.  Make formatting of created
+       *.c files more consistent with GNU Coding Standards.
+       * tests/check-subst-prog.test (configure.in): Break overly
+       long lines.
+       (pass-prog.c, xfail-prog.c): Format them more consistently
+       with GNU Coding Standards.
+       * tests/parallel-tests3.test: Use a shorter and clearer skip
+       message.  Use the `unindent' subroutine to improve readability
+       of indented loop bodies.  Simplify the hack used to please
+       maintainer-check.
+       * tests/parallel-tests5.test: Make formatting of created *.c
+       files more consistent with GNU Coding Standards.  Use the
+       `unindent' subroutine to improve readability of indented loop
+       bodies.
+       * tests/parallel-tests10.test: Add blank line, for clarity.
+       Prefer trailing `:' over trailing `Exit 0', for consistency
+       with other tests.
+
+2011-05-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests/README: small consistency improvement
+       * tests/README (Section "User interface" subsection "Running the
+       tests"): In examples, be more consistent w.r.t. the differences
+       between GNU and non-GNU make.
+
+2011-05-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests/README: suggest how to run tests in cross-compile mode
+       * tests/README (Section "User interface" subsection "Running the
+       tests"): Briefly explain how to override 'host_alias' at runtime
+       to force the use of cross-compilers by the testsuite.  Give an
+       example.
+
+2011-05-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: better detection of cross-compile mode
+       * configure.ac (AC_CANONICAL_HOST): New, probably not strictly
+       necessary, but useful to complements AC_CANONICAL_BUILD.
+       * tests/defs-static.in ($host_alias, $build_alias): New variables,
+       exported, user-overridable, defaults AC_SUBST'd by configure.
+       * tests/defs (cross_compiling): Consider cross-compilation mode
+       active only if `$host_alias' is not empty *and* it differs from
+       `$build_alias'.  This is more faithful to the way configure
+       determines whether it is cross-compiling, but still allows the
+       user to easily force cross-compilation by overriding `host_alias'
+       and `build_alias' at runtime.
+       From a report by Ralf Wildenhues.
+
+2011-05-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: avoid re-running few tests with 'parallel-tests' option
+       Some tests in our testsuite use the 'simple-tests' driver only
+       marginally, or simply as a mean to conveniently check unrelated
+       invariants.  It makes little sense to force these tests to also
+       run with the 'parallel-tests' Automake option active, as doing so
+       offers no real gain in coverage, while often causing a measurable
+       overhead in execution time (for an already too-slow testsuite).
+       * tests/pr401.test (parallel_tests): Define to "no", to prevent
+       the generation of a sibling test script using the 'parallel-tests'
+       driver.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+       * tests/java-flat.test: Likewise, and properly update heading
+       comments.
+       * tests/java-nested.test: Likewise, but defining `parallel_tests'
+       to "yes" instead, for improved coverage in conjunction with the
+       sister test `java-flat.test'.
+
+2011-05-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: allow tests to avoid the use of 'parallel-tests' option
+       * tests/gen-parallel-tests: Do not generate "siblings" for tests
+       that explicitly define the `parallel_tests', whether to "yes" or
+       to any other value.  Extend heading comments to give a rationale
+       for this behaviour.
+       * tests/README: Update.
+
+2011-05-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests/README: update obsoleted advice
+       * tests/README (Section "Writing test cases" subsection "Do"):
+       Do not suggest to use the `*-p.test' pattern for the names of
+       hand-written tests which use the `parallel-tests' Automake option.
+       Not only is this not respected by the existing tests, but it is
+       more likely to cause conflicts with auto-generated tests.
+       So, suggest to *avoid* using the `*-p.test' pattern in names
+       of hand-written tests instead.
+       (Section "Writing test cases" subsection "Do not"):  When
+       suggesting not to override Makefile variables using command
+       line arguments, do not use the badly outdated variables `U'
+       and 'ANSI2KNR' in the example; instead, use the more common
+       and typical `DESTDIR'.
+
+2011-05-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failures in cross-compile mode
+       * tests/depcomp2.test: Ensure verbose printing of captured stderr
+       from configure.
+       * tests/ansi3.test ($required): Add 'native', as the ansi2knr
+       functionality is not meant to work with a cross-compiler.
+       * tests/ansi3b.test: Likewise.
+       * tests/ansi5.test: Likewise.
+       * tests/ansi6.test: Likewise.
+       * tests/ansi7.test: Likewise.
+       * tests/ansi8.test: Likewise.
+       * tests/ansi10.test: Likewise.
+       * tests/subobj3.test: Likewise.
+       * tests/check8.test ($required): Add 'native', as this test is
+       not meant to work with a cross-compiler.
+       * tests/gnits2.test: Likewise.
+       * tests/ltconv.test: Likewise.
+       * tests/ltcond2.test: Likewise.
+       * tests/parallel-tests5.test: Likewise.
+       * tests/specflg7.test: Likewise.
+       * tests/specflg8.test: Likewise.
+       * tests/check5.test: Likewise.  Also, ensure verbose printing of
+       captured make output, and thrown in few cosmetic and consistency
+       improvements.
+       * tests/ltinit.test: Be laxer in grepping configure output, to
+       avoid spurious failures on systems which lack POSIX dynamic
+       linking (e.g., MinGW), or when cross-compiling for such systems.
+       * tests/ansi9.test: Skip parts of the test that would require a
+       native compiler.
+       * tests/backcompat6.test: Likewise.
+       * tests/depcomp8a.test: Likewise.
+       * tests/pr401.test: Likewise.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+       * tests/target-cflags.test: Likewise.
+       * tests/lex3.test: Likewise.
+       * tests/yacc-basic.test: Likewise.
+       * tests/autohdr4.test: Likewise.  Also, extend the test to ensure
+       more coverage in cross-compile mode.
+       * tests/canon7.test: Likewise.
+       * tests/check9.test: Removed, split into two new tests ...
+       * tests/check-subst-prog.test: ... this one, which requires a
+       native C compiler ...
+       * tests/check-subst.test: ... and this one, which doesn't require
+       any compiler.
+       * tests/parallel-tests4.test: Removed, split into two new tests ...
+       * tests/parallel-tests-suffix-prog.test: ... this one, which
+       requires a native C compiler ...
+       * tests/parallel-tests-suffix.test: ... and this one, which
+       doesn't require any compiler.
+       * tests/parallel-tests7.test: Removed, split into two new tests ...
+       * tests/parallel-tests-ext-driver-prog.test: ... this one, which
+       requires a native C compiler ...
+       * tests/parallel-tests-ext-driver.test: ... and this one, which
+       doesn't require any compiler.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: rename requirement 'non-cross' -> 'native'
+       * tests/defs.in (non-cross): Rename requirement ...
+       (native): ... to this, which is clearer and fits the
+       existing lingo better.
+       Suggestion by Ralf Wildenhues.
+
+2011-05-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: be more cross-compile friendly
+       * tests/defs.in (cross_compiling): New subroutine.
+       (am__tool_prefix): New internal variable.
+       (gcc, g++, gcj): Force the use of the correct "tool prefix"
+       when cross compiling.
+       (gfortran, g77, non-cross): New requirements.
+
+2011-05-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix portability issues in 'repeated-options.test'
+       * tests/repeated-options.test: Do not assume that object files
+       have `.o' suffix and executables have no default suffix; instead,
+       use `$(OBJEXT)' and `$(EXEEXT)'.
+
+2011-05-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: document and test $(TEST_SUITE_LOG) overriding
+       * doc/automake.texi (Simple Tests using parallel-tests): Explain
+       how and why TEST_SUITE_LOG can be overridden at runtime.
+       * tests/parallel-tests-log-override-1.test: New test, check that
+       the newly documented idiom and similar usages are truly supported.
+       * tests/parallel-tests-log-override-2.test: Likewise.
+       * tests/parallel-tests-log-override-recheck.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure of extradep.test on FreeBSD
+       * tests/extradep.test: When using `ls -t' to determine whether a
+       file has been updated, make sure to use as reference a file whose
+       timestamp is expected to be *strictly* older that that of the file
+       being checked.  This is required because at least FreeBSD `ls' do
+       not sort files with the same timestamp in alphabetical order when
+       using the `-t' option.
+       * tests/extradep2.test: Likewise.
+
+2011-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure of txinfo21.test on FreeBSD
+       * tests/txinfo21.test: Use the `is_newest' subroutine instead of
+       the `ls -t' hack to to determine whether a file has been updated.
+       This is required because at least FreeBSD `ls' do not sort files
+       with the same timestamp in alphabetical order when using the `-t'
+       option.
+
+2011-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix syntax error in 'silentcxx-gcc.test'
+       * tests/silentcxx-gcc.test (for config_args in ...): Remove extra
+       trailing backslash from the list of looped-on items.
+
+2011-05-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       depmod tests: fix bug in depmodes list extraction
+       * tests/depmod-tests.sh (get_depmodes): Use `echo $all_depmodes'
+       instead of `... | tr "$nl" "$sp"' to strip extra whitespaces and
+       newlines from `$all_depmodes'.  The latter idiom with `tr' is
+       wrong since it gets run before `./defs' is sourced, and thus `$nl'
+       and `$sp' are undefined.
+       Bug revealad by FreeBSD tr(1) implementation, which doesn't accept
+       empty strings as arguments.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: use `skip_' for skipping java-related tests
+       * tests/defs.in (java, javac): Use `skip_' to signal test
+       skipping.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add excerpts from few original bug reports, for clarity.
+       * tests/comment6.test: Add excerpts and/or details from the
+       original bug report that prompted this tests to be added and/or
+       extended.
+       * tests/dejagnu4.test: Likewise.
+       * tests/installdir.test: Likewise.
+
+2011-05-13   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex: "make clean" removes .c files from non-distributed .l
+       Previously, while automake did *not* distribute C source and header
+       files derived from non-distributed Lex sources, it still caused
+       them to be removed only by "make maintainer-clean" only, and not by
+       simply "make clean" or "make distclean".
+       This caused "make distcheck" to fail, unless the developer put
+       those generated .c files in CLEANFILES or in DISTCLEANFILES by
+       hand.
+       This change fixes this issue, by making non-distributed `.c' files
+       generated by non-distributed Lex sources cleaned by "make clean".
+       A similar problem for Yacc support had been fixed with the commit
+       v1.11-263-ged2c8bc.
+       * tests/automake.in (lang_lex_target_hook): Make C source files
+       derived from non-distributed Lex files cleaned by "make clean",
+       not only by "make maintainer-clean".
+       * tests/lex-clean.test: New test.
+       * tests/lex-clean-cxx.test: Likewise.
+       * tests/lex-nodist.test: Likewise.
+       * tests/lex-pr204.test: Likewise.
+       * tests/pr204.test: For consistency, renamed ...
+       * tests/yacc-pr204.test: ... to this, and updated to keep it
+       more in sync with 'lex-pr204.test'.
+       * tests/yacc-nodist.test: Updated to keep it more in sync with
+       'lex-nodist.test'.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-05-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex tests: make test on Lex dependency tracking more "semantic"
+       * tests/lex4.test: Renamed ...
+       * tests/lex-depend-grep.test: ... to this, and extended.
+       * tests/lex-depend.test, tests/lex-depend-cxx.test: ... these
+       new tests.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex tests: remove erroneous check about ylwrap distribution
+       * tests/lex5.test: Do not check that the ylwrap script is *not*
+       distributed when there is only one lexer, as ylwrap is in fact
+       expected to distributed unconditionally (at least starting from
+       commit `Release-1-9-323-gc5881cc' of 19-08-2006).  Note that this
+       bogus check wasn't triggering any failure because it was done at
+       the wrong time (i.e. from the VPATH build directory), so that it
+       could never fail anyway.
+       Instead, check that ylwrap is distributed even when there is only
+       one lexer.
+       Since we are at it, add a couple of `ls -l' calls, to get better
+       debugging info.
+
+2011-05-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc tests: "make clean" removes C++ files from non-distributed .y
+       * tests/yacc-clean-cxx.test: New test, sister of `yacc-clean.test'.
+       * tests/yacc-clean.test: Update heading comment to reference the
+       new sister test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add a workaround for automake bug#8485
+       * tests/yacc-d-cxx.test (Makefile.am): Add temporary workaround
+       for automake bug#8485.  The bug is still exposed by the testcase
+       'yacc-dist-nobuild-subdir.test'.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add a couple of inter-tests reference
+       * tests/yacc-nodist.test, tests/pr204.test: These tests are
+       related, so add references to each other in heading comments.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex tests: require just `lex' instead of `flex'
+       * tests/lex-subobj-nodep.test ($required): Require `lex',
+       not `flex', as this test is expected to work with any lex
+       implementation.
+       * tests/silent-lex.test: Likewise.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: use `skip_' for skipping yacc/lex related tests
+       * tests/defs.in (lex, bison): Use `skip_' to signal test skipping.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: merge cleanup
+       * tests/defs.in (flex, bison): Requirements removed, we have real
+       `lex' and `yacc' requirements now.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: allow requirements for compilers (mostly dummy)
+       Most of the new requirements that are now accepted in `$required'
+       as consequence of this patch are still dummy.  They are planned
+       to be implemented only in master (or in some derived branch), but
+       having them here (even just as no-op) will allow for an easier
+       integration/backporting of potential new testcases.
+       * tests/defs.in (cc, c++, fortran, fortran77): New requirements,
+       still dummy.
+       (flex): New requirement, picking LEX for configure.
+       (lex): New requirement, alias for `flex'.  A more appropriate
+       implementation, looking for a generic `lex' program, will follow
+       in the future.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: 'silent-many-gcc.test' improved and made more robust
+       * tests/silent-many-gcc.test:  Also force "fast" gcc depmode
+       for C++ compilations.  Add sanity checks verifying that the
+       cache variables we force are really used by configure.  Fix
+       typo in comments.
+
+2011-05-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: drop useless requirements of 'g++'
+       * tests/lflags2.test ($required): Remove 'g++', as any working
+       C++ compiler should be enough, and ./configure will cause the
+       test to skip if no working C++ compiler is found.
+       * tests/yflags2.test: Likewise.
+       * tests/subobj9.test: Likewise.
+       * tests/silentcxx.test: Likewise.  Also, do not force depmodes
+       that could cause non-GNU C++ compilers to fail.
+       * tests/silentcxx-gcc.test: New test, like `silentcxx.test',
+       but forcing "fast" gcc depmode (and thus requiring the GNU C++
+       compiler).
+       * tests/specflg10.test: Add proper "fixme" comment telling that
+       we should make this test work with a generic C++ compiler.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: one more environment sanitization (corner case)
+       * tests/defs (am__using_gmake): Initialize.  The `using_gmake'
+       subroutine was using this variable for caching, but wasn't
+       initializing it, which could cause problems in the (admittedly
+       very unlikely) case in which it was pre-existent in the
+       environment.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add forgotten test scripts to $(TESTS)
+       * tests/Makefile.am (TESTS): Added test scripts  man[678].test,
+       which have been present on the filesystem and in the repository,
+       but which had erroneously been left out from $(TESTS).
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: ensure verbose printing of captured make output
+       * tests/libtool7.test: Ensure verbose printing of captured
+       make output.
+       * tests/libtool9.test: Likewise.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintcheck: consistency of list of test scripts
+       * CheckListOfTests.am: New file.
+       (maintainer-check-list-of-tests): New target,
+       check for consistency between list of tests defined in the
+       including Makefile and list of tests on the filesystem.
+       (clean-maintcheck-testslist-tmp): New rule, to clean up the
+       temporary files that might be left around by the rules associated
+       with the previous target.
+       (clean-local): Depend on it.
+       * lib/Automake/tests/Makefile.am: Include `CheckListOfTests.am'.
+       (maintainer-check): Added dependency from the new target
+       `maintainer-check-list-of-tests'.
+       * tests/Makefile.am: Likewise.  Also ...
+       (checked_test_extensions): Define to `.test'.
+       (expected_test_list): Define properly.
+       * Makefile.am (maintainer-check-list-of-test): New target,
+       calling recursively into `tests/' and `lib/Automake/tests/',
+       using ...
+       (TEST_SUBDIRS): ... this new variable.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: drop useless requirements of gcc (plus testsuite tweakings)
+       * tests/libobj14.test ($required): Remove 'gcc', as we never run
+       the C compiler.
+       * tests/targetclash.test: Likewise.
+       * tests/ansi6.test ($required): Remove 'gcc', as any working
+       C compiler should be enough.
+       * tests/ansi7.test: Likewise.
+       * tests/ansi9.test: Likewise.
+       * tests/ansi10.test: Likewise.
+       * tests/lex5.test: Likewise.
+       * tests/lexvpath.test: Likewise.
+       * tests/mmodely.test: Likewise.
+       * tests/pr204.test: Likewise.
+       * tests/pr300-lib.test: Likewise.
+       * tests/pr300-prog.test: Likewise.
+       * tests/primary3.test: Likewise.
+       * tests/specflg7.test: Likewise.
+       * tests/specflg8.test: Likewise.
+       * tests/subdir5.test: Likewise.
+       * tests/subdir8.test: Likewise.
+       * tests/subobj6.test: Likewise.
+       * tests/subst3.test: Likewise.
+       * tests/substre2.test: Likewise.
+       * tests/yacc6.test: Likewise.
+       * tests/yacc8.test: Likewise.
+       * tests/depcomp2.test: Likewise.  Also, avoid clobbering user-set
+       CFLAGS.
+       * tests/lex3.test: Likewise.
+       * tests/ansi3.test: Likewise.  Also, avoid 'CC=gcc' in configure.
+       * tests/ansi3b.test: Likewise.
+       * tests/ansi5.test: Likewise.
+       * tests/autohdr4.test ($required): Remove 'gcc', as any working
+       C compiler should be enough.
+       Also, do not reject slow dependency extractors (which we might
+       be forced to use now that $CC is not necessarily gcc anymore).
+       * tests/cond16.test ($required): Remove 'gcc', as any working
+       C compiler should be enough.
+       Since we are at it, throw in few minor tweakings (mostly cosmetic,
+       stylistic, or consistency-related).
+       * tests/cond18.test: Likewise.
+       * tests/cond35.test: Likewise.
+       * tests/gnits2.test: Likewise.
+       * tests/libtool3.test: Likewise.
+       * tests/libtool7.test: Likewise.
+       * tests/libtool9.test: Likewise.
+       * tests/ltcond.test: Likewise.
+       * tests/ltcond2.test: Likewise.
+       * tests/ltconv.test: Likewise.
+       * tests/ltlibsrc.test: Likewise.
+       * tests/nobase.test: Likewise.
+       * tests/nobase-libtool.test: Likewise.
+       * tests/pr220.test: Likewise.
+       * tests/pr224.test: Likewise.
+       * tests/pr300-ltlib.test: Likewise.
+       * tests/pr401.test: Likewise.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+       * tests/subpkg.test: Likewise.
+       * tests/target-cflags.test: Likewise.
+       * tests/transform.test: Likewise.
+       * tests/yacc4.test: Likewise.
+       * tests/cond19.test: Likewise.  Also, avoid clobbering user-set
+       CFLAGS.
+       * tests/cond4.test: Likewise.
+       * tests/depend2.test: Likewise.
+       * tests/pr87.test: Likewise.
+       * tests/subobj3.test: Likewise.
+       * tests/substref.test: Likewise.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: increase coverage w.r.t. GNU make
+       * tests/defs (GNUmake): Instead of just skipping the tests
+       requiring GNU make if $MAKE is not GNU make, try to look for
+       it and, if found, redefine $MAKE accordingly.  This will help
+       to transparently increase coverage on non-GNU systems which
+       have GNU make available in PATH.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: improve few inter-tests references
+       * tests/acloca22.test: Improve and extend the heading comments.
+       Add reference to related tests 'remake-deleted-m4-file.test' and
+       'remake-renamed-m4-macro-and-file.test'.  Since we are at it,
+       add trailing `:' command, and few blank lines for readability.
+       * tests/remake-renamed-m4-macro-and-file.test: In the heading
+       comments, add reference to the related test 'acloca22.test'.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in 'color2.test'
+       * tests/color2.test: If $MAKE contains command-line arguments (as
+       in e.g., "make -j2"), expect's directive "spawn $env(MAKE)" fails
+       spuriously, because it tries to run "$MAKE" as a single command.
+       Fix this with proper uses of the TCL `eval' builtin.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: few more checks on automatic remake support
+       * tests/remake-all-1.test: New test, check that the "all" target
+       triggers rebuilt of outdated Makefiles.
+       * tests/remake-all-2.test: Likewise, but for when the makefiles
+       are not named `Makefile'.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: check some remake features with non-GNU make too
+       * tests/acloca14.test ($required): Drop "GNUmake".  This test
+       works as-is with non-GNU make implementations.
+       * tests/remake1a.test: Likewise.
+       * tests/aclocal4.test ($required): Drop "GNUmake".
+       Modify the test to have it work also with non-GNU make.
+       * tests/remake5.test: Likewise.
+       * tests/remake8a.test: Likewise.
+       * tests/remake8b.test: Likewise.
+       * tests/remake9a.test: Likewise.
+       * tests/remake9b.test: Likewise.
+       * tests/remake9c.test: Likewise.
+       * tests/remake9d.test: Likewise.
+       * tests/remake10a.test: Likewise.
+       * tests/remake10b.test: Likewise.
+       * tests/remake10c.test: Likewise.
+       * tests/remake12.test: ($required): Drop "GNUmake".
+       Adapt the test to make it work also with non-GNU make (if
+       it supports an "include" directive).
+
+2011-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: extend tests on dependency tracking with VPATH
+       * tests/depmod-tests.sh: New script, fulfilling a threefold role:
+       1. it is called to generate a Makefile.am snippet, containing the
+          definition of proper lists of tests;
+       2. it is called to set up a directory containing some common data
+          files and autotools-generated files used by the aforementioned
+          tests (this is done for speed reasons only); and
+       3. it is called to properly run those tests, one at a time.
+       * tests/depcomp9.test: Delete, it's obsolete now.
+       * tests/depcomp10.test: Likewise.
+       * tests/Makefile.am ($(srcdir)/depmod-tests.am): Include this
+       snippet, which defines ...
+       (depmode_tests): ... this new macro, containing the list of the
+       newly generated `*.depmod' tests.
+       (TESTS_EXTENSIONS): Add `.depmod'.
+       (DEPMOD_LOG_COMPILER): Define.  It calls `depmod-tests.sh', so that
+       the "depmode tests" will be executed by passing that driver script
+       a proper parameter.
+       ($(depmod_tests)): New dependency declaration (dummy, but required
+       in order to have make actually produce expected log files from the
+       `.depmod.log' suffix rule).
+       (TESTS): Add $(depmod_tests).
+       (EXTRA_DIST): Distribute depmod-tests.sh.
+       Other minor cosmetic changes and reorderings.
+       * bootstrap: Generate depmod-tests.am.
+       * tests/.gitignore: Updated.
+
+2011-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid extra test generation (for `instspc' tests)
+       We don't really need to generate tons and tons of wrapper test
+       scripts (presently, ~ 90) just to run what is basically a single
+       test (specifically, `instspc-tests.sh') with different parameters.
+       In fact, the possibility of running a single driver script with
+       multiple files/configurations/parameters is one of the major
+       selling points of the 'parallel-tests' testsuite driver of
+       automake.  So why not use ourselves more extensively the best
+       features we provide?
+       * tests/instspc-tests.sh: Update heading comments.  Expect
+       to be executed, not sourced.  Update handling of command-line
+       arguments.  Adjust to reflect the renaming of "instspc tests"
+       from `instspc-*.test' to `*.instspc'.
+       * tests/instspc-data.test: Update heading comments.  Execute
+       driver script `instspc-tests.sh', instead of sourcing it.
+       Give more informative messages in case of internal errors.
+       * tests/Makefile.am (TESTS_EXTENSIONS): Define explicitly (to
+       `.test' and `.instspc').
+       (TESTS): Add `$(instspc_tests)'.
+       (generated_tests): Remove `$(instspc_tests)'.
+       (INSTSPC_LOG_COMPILER): Define.  Calls `instspc-tests.sh', so
+       that the "instspc tests" will be now executed by passing that
+       driver script a proper parameter.
+       ($(instspc_tests)): Remove, we don't need anymore to generate
+       this tests.
+       ($(instspc_tests:.test=.log)): Remove, substituted by ...
+       ($(instspc_tests:.instspc=.log)): ... this.
+       ($(instspc_tests)): New dependency declaration (dummy, but
+       required in order to have make actually produce expected log
+       files from the `.instspc.log' suffix rule).
+       (MAINTAINERCLEANFILES, generated_tests): Don't extend with
+       $(instspc_tests) anymore.
+       Update comments.
+
+2011-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       build: improve the definition of the list of testcases
+       * tests/Makefile.am (handwritten_tests): New variable.
+       (generated_tests): Likewise.
+       (TESTS): Redefine as the union of the above.
+       (EXTRA_DIST): Extend using $(handwritten_tests) and
+       $(generated_tests) rather than $(TESTS).
+       * tests/gen-parallel-tests: Update accordingly, and
+       make more robust.
+
+2011-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests skips: shorter and clearer messages
+       * tests/defs: Use shorter messages when giving reasons for test
+       skipping; it turns out these shorter messages are also clearer.
+       If more info might be useful, send them to the log file only.
+
+2011-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix self check spurious failure with older bash versions
+       * tests/self-check-cleanup.test: Add trailing `:' to the test code
+       passed to $SHELL, otherwise older versions of bash (at least 2.05
+       and 3.2.39) fail to correctly remove the temporary directory in
+       the exit trap.
+
+2011-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add sanity check to 'self-check-cleanup.test'
+       * tests/self-check-cleanup.test: Check that the "hacked" file
+       `defs-static' used by the test differs from the "vanilla" one
+       in builddir.  This also offers a little more debugging output.
+
+2011-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: display reasons for skips to the console
+       * tests/Makefile.am (AM_TESTS_ENVIRONMENT): Open file descriptor
+       `9' to the original stderr; define `stderr_fileno_' to `9', and
+       export it.
+       * tests/self-check-report.test: Prevent new spurious failures by
+       removing from the environment any definition of `stderr_fileno_'.
+
+2011-05-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: use `skip_' for skipping of tests
+       * tests/defs: Use the `skip_' subroutine for test skipping.  Also
+       give sometimes more detailed messages about the reasons for the
+       skipping.
+       * tests/canon7.test: Likewise.
+       * tests/color.test: Likewise.
+       * tests/color2.test: Likewise.
+       * tests/compile2.test: Likewise.
+       * tests/dejagnu7.test: Likewise.
+       * tests/depcomp6.test: Likewise.
+       * tests/depcomp9.test: Likewise.
+       * tests/depcomp10.test: Likewise.
+       * tests/distlinks.test: Likewise.
+       * tests/distlinksbrk.test: Likewise.
+       * tests/fn99.test: Likewise.
+       * tests/fn99subdir.test: Likewise.
+       * tests/forcemiss2.test: Likewise.
+       * tests/fort5.test: Likewise.
+       * tests/gettext3.test: Likewise.
+       * tests/install2.test: Likewise.
+       * tests/instfail-info.test: Likewise.
+       * 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/instsh3.test: Likewise.
+       * tests/ltinit.test: Likewise.
+       * tests/makej2.test: Likewise.
+       * tests/mdate6.test: Likewise.
+       * tests/mkinst3.test: Likewise.
+       * tests/parallel-tests3.test: Likewise.
+       * tests/parallel-tests-reset-term.test: Likewise.
+       * tests/parallel-tests-unreadable-log.test: Likewise,
+       * tests/python-virtualenv.test: Likewise.
+       * tests/remake-gnulib-remove-header.test: Likewise.
+       * tests/subobj9.test: Likewise.
+       * tests/symlink2.test: Likewise.
+       * tests/tar.test: Likewise.
+       * tests/tar2.test: Likewise.
+       * tests/txinfo26.test: Likewise.
+       * tests/vala2.test: Likewise.
+       * tests/vala3.test: Likewise.
+       * tests/vala5.test: Likewise.
+       * tests/vtexi4.test: Likewise.
+       * tests/instdir-texi.test: Likewise.
+       * tests/txinfo21.test: Likewise.
+
+2011-04-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: more environment sanitization
+       * tests/defs: Move the checks verifying that the variables `me',
+       `parallel_tests' and `required' aren't set in the environment ...
+       * tests/defs-static.in: ... in here, with some optimizations to
+       avoid useless forks.  Also, do the same checks for the variables
+       `original_AUTOMAKE' and `original_ACLOCAL' too.
+       * tests/self-check-env-sanitize.test: Update.
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Unset also variables
+       `original_AUTOMAKE' and `original_ACLOCAL'.
+
+2011-04-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure (non-renamed AM_TESTS_SETUP usage)
+       * tests/parallel-tests-reset-term.test: Use AM_TESTS_ENVIRONMENT
+       instead of AM_TESTS_SETUP (which has been removed in commit
+       v1.11-349-g12f48fa).
+       Fix spurious failure introduced by merge `v1.11-781-gfeed175'.
+
+2011-04-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in a test on TESTS (VPATH-related)
+       * tests/check-tests-in-builddir.test: When not using the
+       parallel-tests option, do not check that VPATH components are
+       not present in the displayed test name, since the simple-tests
+       driver do not try to strip them.
+
+2011-04-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in self-check-env-sanitize.test
+       * tests/self-check-env-sanitize.test: Open file descriptor `5'
+       to stdout.
+       Fix spurious failure introduced by merge `v1.11-788-g3b0c8d5'.
+
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test: self check subroutines for skipping/failing of tests
+       * tests/self-check-report.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-23  Jim Meyering  <meyering@redhat.com>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: new subroutines for test skipping/failing
+       * tests/defs.in (Exit): Move definition of this function earlier.
+       (warn_, skip_, fail_, framework_failure_): New functions, inspired
+       to the homonyms in gnulib's tests/init.sh.
+       ($stderr_fileno_): New global variable, used by the new functions
+       above.
+       * tests/README: Updated.
+       From a suggestion by Ralf Wildenhues.
+
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix typo (copy & paste blunder) in heading comment
+       * tests/maintclean-vpath.test: Correctly refer to the sister test
+       as `maintclean.test', not as `maintclean-vpath.test'.
+
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant test `mclean.test'
+       * tests/mclean.test: Remove, it's a weak grepping test completely
+       superseded by the much more complete `maintclean.test'.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-05-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java tests: use $PATH_SEPARATOR where appropriate
+       * tests/java-compile-run-nested.test: Use `$PATH_SEPARATOR', not
+       `:', to separate entries of extended PATH and CLASSPATH variables.
+       * tests/java-compile-run-flat.test: Likewise.
+
+2011-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java coverage: test JAVACFLAGS and AM_JAVACFLAGS
+       * tests/javaflags.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java coverage: test rebuild rules for java
+       * tests/java-rebuild.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java coverage: try to build and run a java program
+       * tests/java-compile-run-flat.test: New test, try to build and run
+       a "UNIX-style" java program (complete with wrapper shell script
+       and the like) with a "flat" source-tree setup (i.e., everything in
+       the top-level directory).
+       * tests/java-compile-nested.test: Likewise, but using a more
+       typical "nested" source-tree setup.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: new requirement for the default java interpreter
+       * tests/defs.in (for tool in $required): New requirement 'java'.
+
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java tests: tweak and make stricter a couple of tests
+       * tests/javasubst.test: Use proper m4 quoting.  Add trailing `:'
+       command.  Enable `errexit' shell flag, and related changes.
+       Prefer cat + here-doc over echo to append to configure.in.
+       Make grepping of Makefile.in stricter.  Add debugging output.
+       Improve heading comments.
+       * tests/javaprim.test: Likewise.
+
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java coverage: add test on uninstall with JAVA primary
+       * tests/java-uninstall.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java tests: require java compiler more properly
+       * tests/java-extra.test: Use "required=javac" instead of ad-hoc
+       configure check.
+       * tests/java-noinst.test: Likewise.
+
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java: allow both JAVA and nobase_JAVA in the same Makefile.am
+       * automake.in (handle_java): Also strip `nobase_' from the given
+       prefix, when needed.
+       * tests/java-clean.test: Update and extend.
+       * tests/java-compile-install.test: Likewise.
+       * tests/java-no-duplicate.test: Likewise.
+       * tests/java-sources.test: Likewise.
+       * tests/java-noinst.test: Likewise.
+       * tests/java-mix-dist-nodist.test: Renamed to ...
+       * tests/java-mix.test: ... this, and extended.
+       * tests/java-nobase.test: New test, still xfailing due to
+       unrelated issues.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
+2011-04-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       testsuite: more environment sanitization
+       * tests/defs.in: Sanity check: abort if any of `parallel_tests'
+       or `required' is in the environment.
+       ($sed_unindent_prog): Initialize to empty, to avoid interferences
+       from the environment.
+       * tests/self-check-me-in-env.test: Renamed to ...
+       * tests/self-check-env-sanitize.test: ... this, and extended.
+       * tests/Makefile.am (TESTS): Update.
+       (TESTS_ENVIRONMENT): Unset variables `parallel_tests' and
+       `required'.  Adjust comments.
+
+2011-04-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: in self-checks, use $SHELL, not /bin/sh
+       * tests/self-check-me-in-env.test: Include `./defs-static' to get
+       the definition of `$SHELL'.  Use `$SHELL' instead of `/bin/sh' to
+       execute the tests.
+
+2011-04-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: prefer AM_TESTS_ENVIRONMENT to TESTS_ENVIRONMENT
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Renamed to ...
+       (AM_TESTS_ENVIRONMENT): ... this.
+
+2011-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: don't allow `$me' to be overridden from the environment
+       * tests/defs.in: Sanity check: abort if $me is in the environment.
+       * tests/self-check-me-in-env.test: New test.
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Unset variable `me'.
+       (TESTS): Update.
+       Suggestion by Ralf Wildenhues.
+
+2011-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: rename AM_TESTS_SETUP -> AM_TESTS_ENVIRONMENT
+       The AM_TESTS_SETUP naming was not a good one after all.  It may
+       be technically more correct than AM_TESTS_ENVIRONMENT, but the
+       latter is a better one simply because it is easier to remember,
+       and even if you've never heard of it and only know the semantics
+       of TESTS_ENVIRONMENT, you can have a straightforward way to
+       figure out how AM_TESTS_ENVIRONMENT would work.
+       * tests/check.am (am__check_pre): Update.
+       * doc/automake.in (Simple Tests using parallel-tests): Update.
+       * tests/parallel-tests-am_tests_setup.test: Renamed ...
+       * tests/parallel-tests-am_tests_environment.test: ... to this,
+       and updated.
+       * tests/Makefile.am (TESTS): Update.
+       Suggestion and motivation by Ralf Wildenhues.
+
+2011-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: allow overriding of `$me'
+       * tests/defs.in ($me): Allow overriding by the including test
+       script.  Add some explicative comments.
+
+2011-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: more tests on the parallel-tests driver
+       * tests/parallel-tests-interrupt.test: New test.
+       * tests/parallel-tests-reset-term.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       check: new developer-reserved AM_TESTS_SETUP variable
+       For reference, see the discussion at:
+       <http://lists.gnu.org/archive/html/automake-patches/2011-01/msg00213.html>
+       * lib/am/check.am [%?PARALLEL_TESTS%] (am__check_pre): Pass also
+       $(AM_TESTS_SETUP).  Comments updated, and some typos fixed.
+       * doc/automake.texi (Simple Tests using parallel-tests): Document
+       AM_TESTS_SETUP.  Reorder some of the existing documentation a bit.
+       * tests/parallel-tests-am_tests_setup.test: New test.
+       From a suggestion by Ralf Wildenhues.
+
+2011-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       depcomp tests: don't reject slower dependency extractors
+       * tests/depcomp8b.test: Add the `--enable-dependency-tracking'
+       option to `configure' invocations, so that slower dependency
+       extractors are not rejected.
+       * tests/depcomp8a.test: Likewise.  Also ...
+       (foo.c): ... since we are at it, fix spacing to be consistent
+       with GNU coding standards.
+
+2011-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       m4: add missing serial numbers to a few files
+       Fixes automake bug#8483.
+       * m4/amversion.in: Add serial number.
+       * m4/auxdir.m4: Likewise.
+       * m4/gcj.m4: Likewise.
+       * m4/install-sh.m4: Likewise.
+       * m4/mkdirp.m4: Likewise.
+       * m4/python.m4: Likewise.
+       * m4/runlog.m4: Likewise.
+       * m4/strip.m4: Likewise.
+       * m4/upc.m4: Likewise.
+
+2011-04-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix few bugs in self checks
+       Related to automake bug#8508.
+       * tests/self-check-cleanup.test: Be laxer when grepping output
+       from `ls -l', to account for ACLs and SELinux-only files.
+       * tests/self-check-dir.test: Source `defs-static' to read in the
+       correct definition for $SHELL.
+       * tests/self-check-me.test: Likewise, and extend a bit.
+       Report from Jim Meyering.
+
+2011-04-16  Jim Meyering  <meyering@redhat.com>
+
+       depcomp: correct invalid sed invocation
+       * lib/depcomp: Insert missing -e before '/:$/d'.
+       Otherwise, that use of sed would treat '/:$/d' as a file name.
+
+2011-04-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       maintainer check: quote literal `$' in Makefile rule
+       * Makefile.am (sc_tests_PATH_SEPARATOR): Escape literal `$'
+       character in double-quoted string.  Fix a bug in which the rule
+       emitted an erroneously empty substring in its error message.
+
+2011-04-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix typo in python5b.test
+       * tests/python5b.test: Remove extra `:' from $PATH redefinition.
+
+2011-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       lex/yacc tests: remove redundant $distdir definition
+       * tests/lex3.test ($distdir): Remove definition, that's already
+       done in `tests/defs'.
+       * tests/lexvpath.test: Likewise.
+       * tests/yacc-basic.test: Likewise.
+       * tests/yacc-cxx.test: Likewise.
+       * tests/yacc-d-basic.test: Likewise.
+       * tests/yacc-d-cxx.test: Likewise.
+       * tests/yacc-d-vpath.test: Likewise.
+       * tests/yacc-dist-nobuild-subdir.test: Likewise.
+       * tests/yacc-dist-nobuild.test: Likewise.
+       * tests/yacc-mix-c-cxx.test: Likewise.
+       * tests/yaccvpath.test: Likewise.
+
+2011-04-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundant settings of `errexit' shell flag
+       * tests/autodist-acconfig.test: Do not set the `errexit'
+       shell flag, as it is already set by `tests/defs'.
+       * tests/autodist-acconfig-no-subdir.test: Likewise.
+       * tests/autodist-aclocal-m4.test: Likewise.
+       * tests/autodist-config-headers.test: Likewise.
+       * tests/autodist-configure-no-subdir.test: Likewise.
+       * tests/autodist-stamp-vti.test: Likewise.
+       * tests/autodist-subdir.test: Likewise.
+       * tests/autodist.test: Likewise.
+       * tests/check-exported-srcdir.test: Likewise.
+       * tests/check-tests-in-builddir.test: Likewise.
+       * tests/check-tests_environment.test: Likewise.
+       * tests/help-python.test: Likewise.
+       * tests/java-check.test: Likewise.
+       * tests/java-extra.test: Likewise.
+       * tests/java-noinst.test: Likewise.
+       * tests/lex-subobj-nodep.test: Likewise.
+       * tests/ltinit.test: Likewise.
+       * tests/m4-inclusion.test: Likewise.
+       * tests/maintclean-vpath.test: Likewise.
+       * tests/parallel-tests-subdir.test: Likewise.
+       * tests/pr8365-remake-timing.test: Likewise.
+       * tests/python-dist.test: Likewise.
+       * tests/python-vars.test: Likewise.
+       * tests/python-virtualenv.test: Likewise.
+       * tests/python5b.test: Likewise.
+       * tests/specflg-dummy.test: Likewise.
+       * tests/yacc-dist-nobuild-subdir.test: Likewise.
+
+2011-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: define default $distdir (help reducing duplication)
+       * tests/defs ($distdir): New variable, might be used in
+       testcases checking distribution-related features.
+       * tests/pr9.test: Use it.
+       * tests/subdir9.test: Likewise.
+       * tests/lex3.test: Likewise.
+       * tests/lexvpath.test: Likewise.
+       * tests/remake-moved-m4-file.test: Likewise.
+       * tests/remake-renamed-m4-file.test: Likewise.
+       * tests/remake-renamed-m4-macro-and-file.test: Likewise.
+       * tests/yacc-basic.test: Likewise.
+       * tests/yacc-d-basic.test: Likewise.
+       * tests/yacc-d-vpath.test: Likewise.
+       * tests/yacc-dist-nobuild.test: Likewise.
+       * tests/vtexi3.test: Add comment explaining why we redefine
+       $distdir in this test.
+
+2011-04-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: test lex-generated "#line" directives postprocessing
+       * tests/yacc-line.test: In heading comments, add reference to new
+       sister test `lex-line.test'.
+       * tests/lex-line.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: minor improvements to a couple of yacc tests
+       * tests/yacc-auxdir.test: Avoid running autoconf, it's not
+       needed.
+       * tests/yacc-line.test: Also check that the yacc-generated C
+       and header files do not contain "#line" directives referencing
+       `y.tab.c' or `y.tab.h'.  Add a couple of explicative comments.
+
+2011-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: split yacc6.test, for better separation and coverage
+       * tests/yacc6.test: Test removed, its content extended and split
+       into ...
+       * tests/yacc-auxdir.test, tests/yacc-depend.test,
+       tests/yacc-line.test: ... these new tests.
+       * tests/yacc-depend2.test: New test, exposes the failure that
+       FreeBSD used to encounter in yacc6.test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: do not uselessly require GNU make or gcc in a few tests
+       * tests/lex3.test: Remove gcc from requirements, as any working C
+       compiler should be ok.  Consequently, do not clobber user CFLAGS.
+       Also, remove GNUmake from requirements; it was added (see commit
+       `Release-1-8-103-g0d2f592') because this test fails with FreeBSD
+       make due to VPATH issues -- but so do many other yacc-related and
+       lex-related tests currently, and requiring GNU make in all of
+       them would unacceptably reduce coverage.
+       * tests/lexvpath.test: Remove gcc from requirements, as any
+       working C compiler should be ok.
+       * tests/yacc4.test: Likewise.
+       * tests/yacc8.test: Likewise.
+       * tests/lex5.test: Likewise.  Also, do not require anymore GNU
+       make; to compensate, explicitly call "$MAKE Makefile" to update
+       the out-of-date Makefile if $MAKE is not GNU make.
+
+2011-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in test 'yacc-d-cxx.test'
+       * tests/yacc-d-cxx.test: Create ylwrap script before calling
+       automake for the first time, so that the script gets correctly
+       distributed.  Add checks verifying it indeed is.
+
+2011-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests cosmetics: remove redundant definitions of variable $tab
+       * tests/yacc-d-basic.test ($tab): Remove definition: it's already
+       defined in `tests/defs'.
+       * tests/yacc-d-cxx.test: Likewise.
+
+2011-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: add some tests on bison support (still xfailing)
+       Related to automake bug#7648 and PR automake/491.
+       * tests/bison-skeleton-cxx.test: New test.
+       * tests/bison-skeleton.test: New test.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Updated.
+
+2011-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: test for automake bug#8485 (known regression)
+       * tests/yacc-dist-nobuild-subdir.test: New test.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
+2011-04-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: test mixed C/C++ yacc-generated parsers in the same dir
+       * tests/yacc-mix-c-cxx.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: fix typos and wording in some yacc tests
+       * tests/yacc-cxx.test (foo.cc): Clarify comment about the content
+       of this file being valid C++ but invalid C.
+       (parse1.yy): Likewise.  Also, remove redundant parentheses in a
+       `return' statement.
+       * tests/yacc-d-cxx.test (write_parse): Clarify comment about the
+       content of the generated files being valid C++ but invalid C.
+       (write_main): Likewise.
+       * tests/yacc-basic.test: Remove redundant parentheses in a
+       `return' statement.
+       * tests/yacc-d-vpath.test: Adjust spacing around curly brackets.
+       * tests/yaccvpath.test: Likewise.
+       * tests/yaccdry.test: Likewise.
+       * tests/yacc8.test: Likewise.
+       * tests/yacc4.test: Likewise.
+       Suggested by Ralf Wildenhues.
+
+2011-04-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: update NEWS and docs about yacc-generated headers extensions
+       * doc/automake.texi (Yacc and Lex): Document explicitly that
+       extensions of yacc-generated headers are modelled after the
+       extension of the corresponding sources.
+       * NEWS: Update.
+
+2011-01-28   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: extension of headers modelled after extension of sources
+       With this change, if '-d' is in *YFLAGS, a yacc input file named
+       foo.y++ will cause a foo.h++ header to be generated, instead of a
+       foo.h header.  Similarly for foo.ypp, foo.yxx and foo.yy.
+       This way, the name of the files generated by an automake-created
+       `ylwrap' invocation should be consistent with those generated by
+       a `bison -o' call.
+       Related to automake bug#7648 and PR automake/491.
+       * lib/am/yacc.am (am__yacc_c2h): New internal variable.
+       (?GENERIC?%EXT%%DERIVED-EXT%, ?!GENERIC?%OBJ%): Get the name of
+       the header dynamically at make runtime, so that its extension is
+       modelled after the extension of the source.
+       * automake.in (lang_yacc_target_hook): Adjust the calculation of
+       `$header' accordingly.
+       * tests/yacc-cxx.test: New test.
+       * tests/yacc-d-cxx.test: Likewise.
+       * tests/yacc-weirdnames.test: Likewise.
+       * tests/yacc-basic.test: Update comments.
+       * tests/yacc-d-basic.test: Likewise.
+       * tests/yaccpp.test: Updated and extended.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: don't define YACC and LEX in the Makefiles
+       We don't want YACC and LEX defined as make variables, otherwise
+       the values determined at configure time will override those from
+       the environment, even in the make-spawned testcases.  For example,
+       before this change, with the following usage:
+         $ ./configure YACC=yacc
+         $ export YACC='bison -y'
+         $ make check
+       the testsuite would have ended up, very counterintuitively, with
+       YACC defined to 'yacc' in the testcases' environment.
+       * configure.ac: Call `AM_SUBST_NOTMAKE' on YACC and LEX.
+
+2011-01-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures in lflags*.test
+       * tests/lflags.test: Remove 'LEX' from the environment, so
+       that it won't be erroneously picked up by `make -e'.
+       * tests/lflags2.test: Likewise.
+
+2011-01-29   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: more on 'yacc -d' and recovery from deleted headers
+       * tests/yacc-deleted-headers.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-29   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove redundancy from silent lex/yacc tests
+       * tests/silent-yacc-gcc.test, tests/silent-yacc-generic.test: Merge
+       these two testcases into ...
+       * tests/silent-yacc.test: ... this new one, which doesn't fiddle
+       which dependency tracking, as that shouldn't impact on generation
+       of yacc-derived C source and header files (and, for what concerns
+       compilation of C files, is already tested in other testcases).
+       * tests/silent-lex-gcc.test, tests/silent-lex-generic.test: Merge
+       these two testcases into ...
+       * tests/silent-lex.test: ... this new test, for similar reasons.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests init: better messages for 'yacc' and 'lex' requirements
+       * tests/defs.in: Give better diagnostic messages when a test must
+       be skipped to the unavailability of yacc or lex program.  Also,
+       improve syncing between code for requiring yacc and lex.
+
+2011-01-28  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       configure: look for a lex program to be used by the testsuite
+       This will allow the testcases requiring a 'lex' program to run also
+       with vendor/legacy lex implementations, not only with 'flex'.
+       * configure.ac: Look for a lex program, using AC_CHECK_PROGS.
+       * tests/defs.in: New required entry 'lex'.
+       ($LEX): Let the user override the lex program to be used by the
+       testsuite.
+       * tests/cond35.test ($required): Require 'lex', not 'flex'.
+       * tests/cond36.test: Likewise.
+       * tests/lexv3.test: Likewise.
+       * tests/lexv3.test: Likewise.
+       * tests/silent-lex-gcc.test: Likewise.
+       * tests/silent-lex-generic.test: Likewise.
+       * tests/silent-many-gcc.test: Likewise.
+       * tests/silent-many-generic.test:likewise.
+       * tests/lexvpath.test: Likewise, and fix typo in comments.
+
+2011-01-22   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       configure: look for a yacc program to be used by the testsuite
+       Instead of forcing the user to manually export 'YACC' in the
+       testsuite to use a non-bison yacc, we now look for a yacc program
+       at configure time, and use that as the default in the testsuite.
+       * configure.ac: Look for a yacc program, using AC_CHECK_PROGS.
+       * tests/defs.in: Updated to use the value of $YACC precomputed by
+       configure, unless the user overrides that in the environment.
+
+2011-01-22   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more coverage on yacc/lex silent-rules, plus minor cleanups
+       * tests/silent-yacc-gcc.test: Add sanity checks verifying that the
+       generated Makefile.in files really contains the non-generic rules
+       we expect.  Do not redundantly manually remove files we know to be
+       already removed "make maintainer-clean".
+       (Makefile.am): Ensure we cover also non-generic yacc rules, by
+       setting target-specific YFLAGS.
+       (sub/Makefile.am): Likewise.
+       * tests/silent-yacc-generic.test: Likewise.
+       * tests/silent-lex-gcc.test: Likewise, but with LFLAGS instead of
+       YFLAGS.
+       * tests/silent-lex-generic.test: Likewise.
+       * tests/silent-many-gcc.test: Likewise, but with both LFLAGS and
+       YFLAGS.  Also ...
+       (do_and_check_verbose_build): Remove redundant blank line.
+       * tests/silent-many-generic.test: Likewise.
+       * tests/silent-yacc-headers.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures in yflags*.test
+       * tests/yflags.test: Remove 'YACC' from the environment, so
+       that it won't be erroneously picked up by `make -e'.
+       * tests/yflags2.test: Likewise.
+
+2011-01-22   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: cover yacc target-specific flags, and `-v' flag handling
+       * tests/yacc-basic.test: Also try to build a parser having `-v'
+       as target-specific flags.  Add a couple of `ls -l' commands, for
+       debugging.  Update and extend comments.  Escape literal dots in
+       grep regular expressions.
+
+2011-01-12   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: clustered '-d' not recognized in YFLAGS
+       This change fixes automake bug#7828.
+       * doc/automake.texi (Yacc and Lex): Document that automake
+       recognizes '-d' in AM_YFLAGS only if it's not clustered with
+       other options.
+       From a report by Юрий Пухальский.
+
+2011-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: do not force yacc-requiring tests to use bison
+       * tests/defs.in: New required entry 'yacc'.  Remove old
+       required entry 'bison'.
+       * tests/cond35.test ($required): Require yacc, not bison.
+       * tests/cond36.test: Likewise.
+       * tests/pr204.test: Likewise.
+       * tests/silent-many-gcc.test: Likewise.
+       * tests/silent-many-generic.test: Likewise.
+       * tests/silent-yacc-gcc.test: Likewise.
+       * tests/silent-yacc-generic.test: Likewise.
+       * tests/subpkg.test: Likewise.
+       * tests/suffix10.test: Likewise.
+       * tests/yacc-basic.test: Likewise.
+       * tests/yacc-clean.test: Likewise.
+       * tests/yacc-d-basic.test: Likewise.
+       * tests/yacc-d-vpath.test: Likewise.
+       * tests/yacc-dist-nobuild.test: Likewise.
+       * tests/yacc-nodist.test: Likewise.
+       * tests/yacc4.test: Likewise.
+       * tests/yacc6.test: Likewise.
+       * tests/yacc7.test: Likewise.
+       * tests/yacc8.test: Likewise.
+       * tests/yaccdry.test: Likewise.
+       * tests/yaccvpath.test: Likewise.
+
+2011-01-10   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: warn about conditional content in *YFLAGS variables
+       This change fixes automake bug#7804.
+       * automake.in (lang_yacc_target_hook): Warn if any of the relevant
+       *YFLAGS variables has conditional contents (not only a conditional
+       definition).  Related refactoring.
+       * NEWS: Updated.
+       * tests/yflags-conditional.test: Updated and extended.
+       * tests/yflags-conditional-force.test: New test.
+       * tests/Makefile.am (TESTS): Updated.
+
+2011-01-08   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: support variable expansions in *YFLAGS definition.
+       This change fixes automake bug#7800.
+       * automake.in (lang_yacc_target_hook): Use 'value_as_list_recursive'
+       instead of 'variable_value' to get the value of *YFLAGS variables.
+       Related changes.
+       ($DASH_D_PATTERN): Removed.
+       * tests/Makefile.am (XFAIL_TESTS): Remove yflags-var-expand.test.
+       * tests/yacc-clean.test: Remove workaround for now-fixed bug.
+       * NEWS: Update.
+
+2011-01-08   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: more tests on *YFLAGS support
+       * tests/yflags-var-expand.test: New test, still xfailing.  It
+       exposes automake bug#7800 -- "automake fails to honor `-d' in
+       AM_YFLAGS when variable expansions are involved".
+       * tests/yflags-d-false-positive.test: New test, checking that
+       automake do not spuriously see `-d' in *YFLAGS when that isn't
+       really there.
+       * tests/yflags-force-override.test: New test, checking that
+       automake can cope with definition of the YFLAGS variable in
+       Makefile.am (even if that is an extremely bad practice, as that
+       variable is user-reserved).
+       * tests/yflags-cmdline-override.test: New test, checking that
+       automake can cope with user-redefinition of YFLAGS at configure
+       time and/or at make time.
+       * tests/yflags-conditional.test: New test, checks that automake
+       warns on conditionally-defined *YFLAGS variables.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
+2011-01-08   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: extend and improve tests
+       * tests/yacc-basic.test: Also check that the intermediate C file
+       is mentioned in the generated Makefile.in, and that it is created
+       by the first make invocation.
+       * tests/yacc3.test: Test removed, superseded by ...
+       * tests/yacc-d-basic.test: ... this new test.
+       * tests/yacc2.test: Add reference to that new test in the heading
+       comments.
+       * tests/yacc-d-vpath.test: New test.
+       * tests/yaccvpath.test: Updated heading comments.  Do not require
+       gcc anymore, as any working C compiler should be enough.  Remove
+       redundant comments.
+       * tests/yacc-nodist.test: New test.
+       * tests/yacc-dist-nobuild.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-12-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Extend, fix and improve tests on Lex and Yacc support.
+       * tests/lexcpp.test: New test script, on support for Lex + C++.
+       * tests/lexvpath.test: New test script, test build and rebuild
+       rules for lexers in VPATH setup.
+       * tests/yacc-basic.test: New test script, run simple "semantic"
+       checks on basic Yacc support (similarly to what lex3.test does
+       for Lex support).
+       * tests/lex.test: Don't create useless dummy source file joe.l.
+       Remove extra blank lines.
+       * tests/lex4.test: Add trailing `:' command.  Do not create dummy
+       useless lex source file.
+       * tests/lex2.test: Likewise.  Call automake with the `-a' option,
+       so that it doesn't fail for the absence of `ylwrap' script.  Make
+       grepping of automake stderr stricter.
+       * tests/yacc7.test: Add trailing `:' command.  Enable `errexit'
+       shell flag earlier (just after having sourced ./defs).
+       * tests/yacc4.test: Likewise.  Also ...
+       (configure.in): Use pre-populated skeleton set up by ./defs,
+       instead of writing one from scratch.
+       Other minor cosmetic changes.
+       * tests/yacc5.test: Likewise.
+       * tests/yaccvpath.test: Likewise. Also ...
+       ($distdir): New variable.
+       Use it throughout.
+       * tests/lex5.test: Likewise.
+       * tests/lex3.test: Likewise.  Check the distdir, rather than
+       grepping the distribution tarball.  Extend the test on the
+       created binary, and be sure to avoid hangs.  Add some comments.
+       * tests/yacc.test: Use stricter grepping.  Add trailing `:'.
+       * tests/yacc6.test: Likewise.
+       * tests/yacc3.test: Likewise.  Do not create the unused file
+       `Makefile.sed'.  Remove useless rules from Makefile.am.  Other
+       minor cosmetic changes.
+       * tests/yacc2.test: Make grepping of generated `Makefile.in' and
+       of automake error messages stricter.  Do not redirect output of
+       grep to /dev/null.  Move call to aclocal earlier.  Reduce the
+       number of empty blank lines.  Fix a typo in comments.
+       * tests/yacc8.test: Fixed bugs that reduced the completeness of
+       the tests.  Added trailing `:' command.
+       (configure.in): Use pre-populated skeleton set up by ./defs,
+       instead of writing one from scratch.
+       * tests/yaccpp.test: Test also extensions `.y++', `.ypp', and
+       `.yxx', rather than only `.yy'.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-07   Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: "make clean" removes .c and .h files from non-distributed .y
+       Previously, while automake did *not* distribute C source and header
+       files derived from non-distributed Yacc sources, it still caused
+       them to be removed only by "make maintainer-clean" only, and not by
+       simply "make clean" or "make distclean".
+       This caused "make distcheck" to fail, unless the developer put
+       those generated .c and .h files in CLEANFILES or in DISTCLEANFILES
+       by hand.
+       This change fixes this issue, by making non-distributed `.c' and
+       `.h' files generated by non-distributed Yacc sources cleaned by
+       "make clean".
+       * tests/automake.in (lang_yacc_target_hook): Make C source and
+       header files derived from non-distributed Yacc files cleaned by
+       "make clean", not only by "make maintainer-clean".
+       * tests/yacc-clean.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       depcomp: fix bugs in tests and in the depcomp script
+       * lib/depcomp (gcc): Remove duplicated `-e' from sed invocation.
+       * tests/depcomp10.test: Make it executable.  Fix a blunder that
+       has left part of an intended comment not prefixed by `#', thus
+       causing shell syntax errors.  In this same comment, break a
+       too-long reported error message on multiple lines, for clarity.
+       Add reference to the relevant bug report.  Add a comment which
+       explains why the test result 'skipped' if the first "make" call
+       fails.  Add other useful comments.
+       * tests/depcomp9.test: Slightly improve comments.
+
+2011-04-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix hp depmode for VPATH builds with GNU make.
+       * lib/depcomp: Be sure to remove VPATH-prefixed object from
+       dependency output when creating stub rule.
+       * tests/depcomp10.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+       Report by Bruno Haible.
+
+2011-04-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java: allow both dist_JAVA and nodist_JAVA in the same Makefile.am
+       Fixes automake bug#8434.
+       * automake.in (handle_java): Strip `dist_' and `nodist_' from
+       the given prefix.  Define a new internal Makefile variable
+       `am__java_sources'.  Related adjustments.
+       * lib/am/java.am (JAVAC, JAVAROOT, CLASSPATH_ENV): Define only the
+       first time this am file is processed.
+       (class%DIR%.stamp): Stamp file renamed ...
+       (class%NDIR%.stamp): ... to this, so that the `dist_' and `nodist_'
+       prefixes are stripped from the name of the stampfile.  Adjust
+       declaration of dependencies by using the new automake-generated
+       internal variable `$(am__java_sources)'.  In the rule, use `$@'
+       as the name of the target, rather than hard-coding it.
+       * tests/java.test: Update and extend.
+       * tests/java-no-duplicate.test: New test.
+       * tests/java-mix-dist-nodist.test: Likewise.
+       * tests/java-compile-and-install.test: Likewise.
+       * tests/java-clean.test: Likewise.
+       * tests/java-sources.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: more on java support EXTRA_ and noinst_ prefixes
+       * tests/java-extra.test: New test, checking support for the
+       prefix `EXTRA_' with the JAVA primary.
+       * tests/java-noinst.test: New test, checking support for the
+       prefix `noinst_' with the JAVA primary.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: fix 'javac' requirement for older JDK versions
+       The Java compiler from JDK 1.5 (and presumably earlier versions)
+       cannot handle the `-version' option by itself; and while it does
+       print the version number, it then errors out with an usage error:
+         $ javac -version
+         javac 1.5.0_22
+         javac: no source files
+         Usage: javac <options> <source files>
+         ...
+       Luckily, adding the `-help' option to the `javac' invocation
+       seems to fix this problem.
+       * tests/defs.in (javac): Pass also the `-help' option to the
+       `javac' program.  Add a comment explaining why it is needed.
+       Report from Ralf Wildenhues.
+
+2011-04-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       test defs: new requirement for the default java compiler
+       * tests/defs.in (for tool in $required): New requirement 'javac'.
+       * tests/java.test: Use it instead of ad-hoc configure check.
+       * tests/java-check.test: Likewise.
+       * tests/java-extra.test: Likewise.
+       * tests/java-noinst.test: Likewise.
+       * tests/instfail-java.test: Likewise.
+       * tests/instdir-java.test: Likewise.
+
+2011-04-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       java: check_JAVA does not cause compilation by "make all" anymore
+       Fixes automake bug#8234.
+       * automake.in (handle_java): Make stamp of class files built from
+       java sources in $(check_JAVA) a dependency of `check' target, not
+       `all' target.
+       * tests/java-check.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+       * THANKS: Update.
+       Report from Petteri Räty.
+
+2011-04-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Bruno Haible  <bruno@clisp.org>
+
+       coverage: add tests on remake rules in more complex situations
+       * tests/defs (using_gmake): New function.
+       (for tool in $required): Use it when $tool is 'GNUmake'.
+       * tests/remake-moved-m4-file.test: New test.
+       * tests/remake-deleted-m4-file.test: Likewise.
+       * tests/remake-renamed-m4-file.test: Likewise.
+       * tests/remake-renamed-m4-macro-and-file.test: Likewise.
+       * tests/remake-renamed-m4-macro.test: Likewise.
+       * tests/remake-add-acsubst-gnulib.test: Likewise.
+       * tests/remake-add-header-gnulib.test: Likewise.
+       * tests/remake-remove-header-gnulib.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       typofix in 'tests/defs'
+       * tests/defs: Fix typo (`itslef' instead of `itself') in
+       comments.
+
+2011-04-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Clarify regex code in depcomp.
+       * lib/depcomp: Add comment why we don't need regex-escaping here.
+       Suggested by Stefano Lattarini.
+
+2011-04-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix makedepend depmode for VPATH builds.
+       * lib/depcomp [makedepend]: Remove any VPATH prefix from the
+       object file name, so a rebuild doesn't attempt to update the
+       .Po files in the source tree.
+       * tests/depcomp9.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-04-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix timestamp-related failures
+       Fixes automake bug#8365.
+       * tests/aclocal6.test: Sleep before modifying m4 files that should
+       trigger remake rules.  Remove incorrect/obsoleted comments.
+       * tests/subdir5.test: Likewise, and extend a bit.
+       * tests/subdir8.test: Likewise.
+       * tests/pr8365-remake-timing.test: New xfailing test.
+       * tests/Makefile.am (TESTS): Update.
+       Report from Sam Steingold.
+
+2011-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Create subdirs for generated sources even when not dep tracking.
+       * automake.in (handle_single_transform): If $object is derived
+       and lands in subdir, be sure to output a dirstamp dependency.
+       * tests/yacc5.test: Avoid falsely matching the dirstamp
+       dependency when grepping for a rule.
+       * tests/lex-subobj-nodep.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * THANKS: Update.
+       Report by Ignacy Gawedzki.
+
+       Fix locale issue in check-exported-srcdir.test.
+       * tests/check-exported-srcdir.test: Reformulate glob to not fail
+       in a locale that ignores or interleaves character case.
+
+2011-04-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: better visibility for aclocal in the index
+       * doc/automake.texi (@menu): Rename title for entry 'configure'
+       from "Scanning configure.ac or configure.in" to the more precise
+       "Scanning configure.ac, using aclocal".
+       (@detailmenu): Adjust.
+       (@node configure): Adjust, and extend @cindex calls accordingly.
+       * THANKS: Update.
+       From a report by Maynard Johnson.
+
+2011-03-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: improve tests on "maintainer-clean" target
+       * tests/aclocal6.test: Move checks related to "maintainer-clean"
+       functionalities into ...
+       * tests/maintclean-vpath.test: ... this new test.
+       * tests/maintclean.test: Update heading comments.  Extend to also
+       test subdirs.  Remove useless disabling of YACC.  Fix m4 quoting
+       in configure.in.  Add a trailing `:' command.  Remove extra blank
+       lines.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-03-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: fix unindent to use printf not echo for script.
+       * tests/defs.in: Use printf rather than echo, as the latter may
+       interpret the backslashes in the sed script.  Fixes test
+       failures with dash as /bin/sh.
+
+2011-03-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       maintcheck: look for problematic names of testcases
+       The configure.in stub created by default by `tests/defs' obtains
+       the first argument of AC_INIT from the test name, and this can
+       cause some supported autoconf versions to fail with a spurious
+       error if that test name contains the name of an m4 or m4sugar
+       builtin or macro (e.g., `defn' or `m4_undefine').
+       See for example the bug fixed by commit v1.11-287-g1325a8a.
+       This change add a maintainer check that warns about test names
+       which are possibly problematic in this regard.
+       * Makefile.am (sc_test_names): New maintainer-check target.
+       (syntax_check_rules): Add it.
+       (m4_builtins): New helper variable.
+       (TESTS): Updated according to the following renamings.
+       * tests/include.test: Renamed ...
+       * tests/hdr-vars-defined-once.test: ... to this.
+       * tests/sinclude.test: Renamed ...
+       * tests/m4-inclusion.test: ... to this, and simplified
+       accordingly.
+       * tests/include2.test: Renamed ...
+       * tests/dist-included-parent-dir.test: ... to this, for
+       consistency.
+
+2011-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix bug in alloca*.test
+       * tests/alloca.test: Make grepping of automake stderr stricter,
+       add a trailing `:' command; also, add AC_PROG_CC to configure.in,
+       and create a dummy alloca.c file, to ensure that we fail for the
+       proper reason.
+       * tests/alloca2.test: Likewise.  Also, look for LT_INIT, not
+       AC_PROG_LIBTOOL, in the error message (bug introduced with commit
+       v1.11-315-gd51e7b7 "libtool: suggest LT_INIT if LTLIBRARIES
+       primary is used").
+       From a report by Patrick Welche.
+
+2011-03-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: better use of m4 quoting and m4sugar macros
+       * m4/dmalloc.m4: Better use of m4 quoting.  Bump serial number.
+       * m4/gcj.m4: Likewise.
+       * m4/init.m4: Likewise.
+       * m4/install-sh.m4: Likewise.
+       * m4/lex.m4: Likewise.
+       * m4/multi.m4: Likewise.
+       * m4/option.m4: Likewise.
+       * m4/python.m4: Likewise.
+       * m4/sanity.m4: Likewise.
+       * m4/cond.m4: Likewise.  Also, prefer the m4sugar macro 'm4_if'
+       over the plain m4 macro 'ifelse'.
+       * m4/depend.m4: Likewise.
+
+2011-03-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add test about deprecated use of AC_INIT
+       * tests/deprecated-acinit.test: New test, check that automake
+       and autoconf complain about an old-style AC_INIT call used with
+       a new-style AM_AUTOMAKE_INIT call.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix bug (comments-in-var-defn.test + autoconf 2.62)
+       * tests/comments-in-var-defn.test: The configure.in stub created
+       by default, which has the AC_INIT first argument obtained by the
+       test name, causes autoconf 2.62 to fail with a spurious error
+       message like: "configure.in:1: error: defn: undefined macro:".
+       Thus, to prevent this, the test is renamed to ...
+       * tests/comments-in-var-def.test: ... this.
+       * tests/Makefile.am (TESTS): Updated.
+
+2011-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: convert encoding from ISO-8859 to UTF-8
+       * ChangeLog.03: Convert encoding to UTF-8.
+       * ChangeLog.96: Likewise.
+       * ChangeLog.98: Likewise.
+       * NEWS: Likewise.
+       * TODO: Likewise.
+
+2011-03-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: extend checks on the 'unindent' shell function
+       * tests/self-check-unindent.test: Also check that multiple
+       instances of 'unindent' can run in parallel (this was not
+       the case when that function used temporary files).
+
+2011-03-01  Peter Rosin  <peda@lysator.liu.se>
+
+       test defs: unindent without temporary file
+       * tests/defs.in (commented_sed_unindent_prog): Commented Sed program
+       that strips the "proper" amount of leading whitespace.
+       (unindent): Lazily strip comments from the above program and use it
+       to unindent without using a temporary file.
+
+2011-02-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       libtool: suggest LT_INIT if LTLIBRARIES primary is used
+       When the LTLIBRARIES primary was used, but $(LIBTOOL) wasn't
+       defined, automake suggested to add a call to AC_PROG_LIBTOOL
+       in configure.ac.  But that macro is deprecated since Libtool
+       version 1.9b (2004-08-29), in favor of the newer LT_INIT.  So
+       suggest the use of this latter macro instead.
+       * lib/Automake/Variable.pm (%_am_macro_for_var): Pair 'LIBTOOL'
+       with 'LT_INIT', not with 'AC_PROG_LIBTOOL'.
+       * tests/libtool4.test: Adjust and extend.  Also, add a call to
+       macro AC_PROG_CC in configure.in, to help ensuring that automake
+       does not fail for the wrong reasons.
+       * tests/ltinit.test: New test, ensure that automake's libtool
+       support works with LT_INIT-based interface.
+       Thanks to Jack Kelly for the suggestion.
+
+2011-02-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add testcases sanity-checking the testsuite
+       Helper subroutines, variables and other pieces of code defined
+       in the `tests/defs' and used by many testcases are non-obvious,
+       and tricky to get to work portably; but until now, they weren't
+       tested at all in a clear and self-contained way.
+       This change should remedy to the situation.
+       * tests/self-check-cleanup.test: New test, check removal of
+       temporary test working directory by `./defs'.
+       * tests/self-check-dir.test: New test, check that tests using
+       `./defs' create a proper temporary directory, and run in it.
+       * tests/self-check-exit.test: New test, check that, in case of
+       failing commands, the correct exit status is passed to the exit
+       trap installed by the `./defs' script.
+       * tests/self-check-is_newest.test: New test, checking the
+       `is_newest' subroutine.
+       * tests/self-check-me.test: New test, checking that $me gets
+       defined automatically by `tests/defs' if not set, and that it
+       can be overridden from either the shell or the environment.
+       * tests/self-check-sanity.test: New test, check that the sanity
+       checks performed by the `tests/defs' script works correctly.
+       * tests/self-check-unindent.test: New test, checking the
+       `unindent' subroutine.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-02-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: tempdirs with restrictive permissions are cleaned correctly
+       Before this change, the removal of a temporary test directory
+       containing subdirectories with restrictive permissions (such as
+       'r--r--r--') could fail.
+       * tests/defs: Ensure that all the subdirectories of a temporary
+       test directory have the 'read', 'write' and 'execute' bits set,
+       before trying to remove it with `rm -rf'.
+       * tests/Makefile.am (clean-local-check): Likewise.
+
+2011-02-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       test defs: add subroutine for input unindenting
+       * tests/defs.in (unindent): New subroutine.
+       * tests/instspc-tests.sh: Use it.
+
+2011-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       python: report the 'PYTHON' influential environment variable
+       * m4/python.m4 (AM_PATH_PYTHON): Call AC_ARG_VAR on PYTHON.
+       * doc/automake.texi (Python): Update and extend.
+       * tests/help-python.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * THANKS (Jack Kelly): Update e-mail address.
+       Suggestion by Jack Kelly.
+
+2011-02-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: clear TESTS_ENVIRONMENT variable
+       * tests/defs.in (TESTS_ENVIRONMENT): Unset it, so that values
+       from environment won't interfere with the testcases.
+       Suggestion by Ralf Wildenhues.
+
+2011-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: `instspc-*.test': do not create useless source file
+       * tests/instspc-tests.sh (create_input_data): Do not create
+       unused source file `source2.c'.
+
+2011-02-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: optimize `instspc-*.test' for speed
+       After the split of `instspc.test' into various generated tests,
+       the running time of the testsuite has noticeably increased, since
+       all these new generated tests must run aclocal, autoconf and
+       automake, whereas previously they were run only once (at the
+       beginning of `instspc.test').  But luckily, since the new tests
+       share the same input files for the autotools, this situation can
+       be easily worked around (at the expenses of a slight increase of
+       complexity for the testsuite scaffolding).
+       * tests/instspc-data.test: New helper test, properly calling
+       the `instspc-tests.sh' script to generate input data for the
+       others `instspc-*.test' tests.
+       * tests/Makefile.am (TESTS): Add `instspc-data.test'.
+       ($(instspc_tests:.test=.log)): Depend on its log file.
+       (instspc-data.log): Depend on `instspc-tests.sh'.
+       * tests/instspc-tests.sh: Recognize new action `generate-data',
+       and use it to create hand-written and autotools-generated static
+       files shared by all the `instspc-*.test' tests.
+       When sourced by the `instspc-*.test' tests, use those previously
+       created files instead of recreating them from scratch.
+       (unindent, create_input_data): New subroutines.
+       Some other related changes and refactorings.
+       From a suggestion by Ralf Wildenhues.
+
+2011-02-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       python: fix spurious failure in tests
+       * tests/python-vars.test: Ignore cached values from config.site
+       by exporting CONFIG_SITE=/dev/null.  Be laxer in matching the
+       expected values of output variables `pythondir' and `pyexecdir',
+       since they can change quite unpredictably among different python
+       installations.  Also, avoid "hyping" debugging output, thus
+       offering smaller trace output and more informative diff.
+       Report and suggestions by Ralf Wildenhues.
+       * tests/python-virtualenv.test: Require python, since we call it
+       even after the virtualenv has been deactivated.  Ignore cached
+       values from config.site by exporting CONFIG_SITE=/dev/null.
+
+2011-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: tweak few tests on simple and parallel test drivers
+       * tests/check-exported-srcdir.test: Improve heading comments.
+       * tests/check-tests-in-builddir.test: Likewise.  Also, unset the
+       `FOO_EXIT_STATUS' variable, so that any pre-existing value in the
+       environment won't risk to interfere with the test.
+       Suggestions by Ralf Wildenhues.
+
+2011-02-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       python: extend and improve tests, fix minor glitches
+       * m4/python.m4 (AM_PATH_PYTHON): Ensure the "checking ..." messages
+       from configure are always complete, even in case of failure.  Tiny
+       cosmetic improvement in info/error messages.
+       * tests/python.test: Also check that automake complains if the
+       PYTHON primary is used but the `py-compile' script is not present.
+       Make grepping of generated Makefile.in laxer w.r.t. whitespace.
+       Add trailing `:' command.
+       * tests/python2.test: Remove repeated calls aclocal: they are
+       useless because configure.in is never modified.  Make grepping
+       of automake stderr more comprehensive.  Remove the pre-existing
+       `py-compile' file before trying to install it with `--add-missing'.
+       Add trailing `:' command.
+       * tests/python3.test: Add trailing `:' command.
+       * tests/python11.test: Likewise.
+       * tests/python4.test: Likewise.  Also, try to pass PYTHON config
+       variable to configure from the environment, rather than only from
+       the command line.
+       * tests/python5.test: Ensure that the "checking ..." messages from
+       configure are always complete.  Use proper m4 quoting.  Add a
+       trailing `:' command.
+       * tests/python6.test: Simplify test logic, by checking for files
+       created by configure rather then grepping its output.
+       * tests/python7.test: Likewise.
+       * tests/python8.test: Also check that `$PYTHON' is meaningfully
+       set in the ACTION-IF-TRUE argument of AM_PATH_PYTHON.
+       * tests/python9.test: Likewise.
+       * tests/python10.test: Add trailing `:' command.
+       (Makefile.am): Declare `disttest' target as `.PHONY', and add
+       an `ls -l' to its recipe, for debugging.
+       * tests/nobase-python.test: In testing "make uninstall" and
+       "make install" results, prefer idioms that make verbose logs
+       more helpful.  Remove a couple of lines of dead code.  Add a
+       trailing `:' command.
+       * tests/python5b.test: New test, checking that configure performs
+       the check on the python version even when the choice of the python
+       interpreter is forced by the user.
+       * tests/python-dist.test: New test, checking the distribution of
+       *_PYTHON files.
+       * tests/python-vars.test: New test, checking that AM_PATH_PYTHON
+       correctly set all the output variables advertised in the manual.
+       * tests/python-virtualenv.test: New test, checking that python
+       support offered by automake works well with "virtual python
+       environments" created by the `virtualenv' program.
+       * tests/instdir-prog.test: Also check `$(pyexecdir)'.  Existing
+       checks made slightly stricter.
+       * tests/instdir-prog.test: Also check `$(pyexecdir)'.  Existing
+       * tests/instdir-ltlib.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-02-01  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: more tests on simple and parallel test drivers
+       * tests/parallel-tests-subdir.test: New test.
+       * tests/check-exported-srcdir.test: Likewise.
+       * tests/check-tests-in-builddir.test: Likewise.
+       * tests/check-tests_environment.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-29  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures in lflags*.test
+       * tests/lflags.test: Remove 'LEX' from the environment, so
+       that it won't be erroneously picked up by `make -e'.
+       * tests/lflags2.test: Likewise.
+
+2011-01-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: color-tests issues with parallel make
+       * doc/automake.texi (Simple Tests): Document that automatic
+       recognition of a capable terminal attached to stdout can fail
+       with some make implementation when running in parallel mode,
+       thus causing colored test output not to be automatically
+       activated when it should.
+
+2011-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       coverage: test semantics of "dummy" per-target flags
+       * tests/specflg-dummy.test: New test, ensuring that even "dummy"
+       per-target flags triggers the use of renamed objects.
+       * tests/Makefile.am (TESTS): Update.
+       Suggestion by Ralf Wildenhues.
+
+2011-01-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests defs: sanitize IFS
+       * tests/defs ($IFS): Define to <space>, <tab>, <newline>.
+       ($sp): New variable, holding a single whitespace character.
+       ($tab): New variable, holding a tabulation character.
+       ($nl): New variable, holding a newline character.
+
+2011-01-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: avoid instspc* failures due to make's whitespace trimming
+       * tests/instspc-tests.sh: Prepend './' when passing the test
+       characters, to avoid leading whitespace characters to be trimmed
+       from macros set from environment variables.  Fixes testsuite
+       failures with HP-UX and Tru64/OSF make.
+
+2011-01-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: fix VPATH auto-expansion workarounds.
+       * tests/suffix10.test, tests/suffix11.test, tests/suffix12.test,
+       tests/suffix3.test, tests/suffix5.test, tests/suffix8.test:
+       Ensure $< is not surrounded by white space, to prevent Solaris
+       make from applying automatic VPATH text expansion.
+
+       tests: fix VPATH auto-expansion workarounds.
+       * tests/parallel-tests8.test, tests/suffix13.test:
+       Ensure $< is not surrounded by white space, to prevent Solaris
+       make from applying automatic VPATH text expansion.
+
+2011-01-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures in yflags*.test
+       * tests/yflags.test: Remove 'YACC' from the environment, so
+       that it won't be erroneously picked up by `make -e'.
+       * tests/yflags2.test: Likewise.
+
+2011-01-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: avoid fn99*.test failures due to buggy AIX 5.3 cp -R.
+       * tests/fn99.test, tests/fn99subdir.test: Skip if an initial
+       `cp -R' of the subdir tree already fails; AIX 5.3 cp messes
+       up its internal memory when copying this tree.
+
+2011-01-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Add comment to check-TESTS rule working around make 3.80 bug.
+       * lib/am/check.am (check-TESTS): Update comment.
+
+2011-01-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: less strict double-colon spy.test again.
+       * tests/spy.test: We know BSD make doesn't invoke more than one
+       double-colon rule, so no need to expose that failure.
+
+2011-01-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       install-sh: avoid Tru64 sh `test' operator precedence issues.
+       * lib/install-sh: Protect file names and directory components
+       that consist of `=', `(', `)', or `!'.  Move protection as early
+       as possible, to avoid errors such as with Tru64 sh `test -z ='.
+       * tests/instsh2.test: Extend test to cover more possibilities.
+       Fixes 1.12 instspc-equal-install.test failure on Tru64/OSF 5.1.
+
+2011-01-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       docs: automake testsuite doesn't use TESTS_ENVIRONMENT anymore
+       * doc/automake.texi (Simple Tests): Do not claim Automake uses
+       TESTS_ENVIRONMENT for the perl driver.  Instead, point to the
+       parallel-tests driver.
+
+2011-01-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: check for presence of cscope with redirected input.
+       * tests/defs: Add required test for cscope.
+       Fixes cscope3.test hang with Sun C 5.9 cscope.
+
+       tests: avoid false failure in cygnus-dependency-tracking.test.
+       * tests/cygnus-dependency-tracking.test: Be less restrictive
+       when grepping the compiler error message, GCC 3.4.6 on FreeBSD
+       does not mention an undefined symbol.
+
+2011-01-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: revert not turning off errexit in instspc-test.sh
+       * tests/instspc-tests.sh: Turn off errexit while sourcing defs,
+       the scripts might still not be clean.
+
+2011-01-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: work around Tru64 sh -e issues for instspc*.test.
+       Apparently, Tru64 sh does not like turning off errexit mode,
+       and gets confused.
+       * tests/defs: Document 'errexit' cleanliness requirement.
+       * tests/defs-static.in: Likewise.  Avoid error from command
+       substitution to abort instspc*.test with Tru64/OSF 5.1 sh.
+       * tests/instspc-tests.sh: Drop now-unneeded temporary errexit
+       dropping.  Add strategic '|| Exit' to let tests work on Tru64.
+
+2011-01-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Allow _AM_DEPENDENCIES to be used later in configure.
+       * m4/depend.m4 (_AM_DEPENDENCIES): Remove a previously existing
+       conftest.dir before recreating it.
+       Fixes bug#7864.
+       Report by Eric Blake, from report by Scott McCreary against M4.
+
+2011-01-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: avoid failure on w32 file systems.
+       * tests/parallel-tests-unreadable-log.test: SKIP if file cannot
+       be turned unreadable.
+
+2011-01-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: allow double-colon spy.test to work with HP-UX make.
+       * tests/spy.test: Fix comment typos.  Ensure prerequisites we
+       do not want to depend on are strictly older than the target.
+       Also test with a target out of date wrt. more than one rule.
+
+2011-01-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid local $_ perl variable, for Perl before 5.9.1.
+       * lib/Automake/Options.pm (_process_option_list): Do not
+       lexically localize $_.  Fixes bootstrap on AIX 5.1.
+       Bug introduced in commit `v1.11-622-gf90a06c'.
+
+2011-01-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: remove useless requirements from cond36.test
+       * tests/cond36.test ($required): Remove.
+       Since we are at it, add a trailing `:' command.
+
+2011-01-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: avoid failing command substitution in errexit mode.
+       * tests/vartypo2.test, tests/vartypos.test: Rewrite to not use
+       a command substitution with a nonzero exit status, that causes
+       IRIX and Tru64/OSF sh to fail the whole test.
+
+2011-01-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       parallel-tests: work around Tru64/OSF 5.1 sh read bugs.
+       * lib/am/check.am ($(TEST_SUITE_LOG), recheck, recheck-html):
+       Test file readability before redirecting input from it, to avoid
+       exiting Tru64/OSF 5.1 sh which treats read as special builtin.
+       * tests/parallel-tests-unreadable-log.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-01-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * NEWS, README: Update copyright years.
+
+2011-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: hard error in case of internal failures or signal caught
+       * tests/defs: Exit with status 99 (hard error) rather than
+       1 (failure) on unexpected/internal errors, or when a signal
+       is caught by the client script.
+
+       Tests defs: don't let useless variables leak in test scripts.
+       * tests/defs ($priv_check_temp, $overwrite_status, $ro_dir_temp,
+       $create_status, $r2h, $libtool_found, $gettext_found, $aclocaldir,
+       $extra_includes): Unset once they've served their purpose.
+
+2011-01-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix parallel-tests.test failure with HP-UX make.
+       * tests/parallel-tests.test: Sleep inside inner tests, so logs
+       are newer than logs of tests they depend on, for HP-UX make.
+
+2011-01-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       docs: ensure example are separated with empty lines in the input
+       * doc/automake.texi (Extending aclocal, Emacs Lisp, Rebuilding)
+       (API Versioning, Renamed Objects, Multiple Outputs): Add empty
+       lines before `@example' and after `@end example' lines, so info
+       output is rendered correctly, and a following @noindent honored.
+       Report by Stefano Lattarini.
+
+2011-01-15  Jim Meyering <meyering@redhat.com>
+
+       tests: fix comment typo
+       * tests/substref.test: Fix grammar in a comment.
+
+2011-01-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failures in two texinfo tests
+       * tests/txinfo.test ($required): Add 'makeinfo'.
+       * tests/txinfo8.test: Create a dummy 'textutils.info' file, so
+       that make won't try to run makeinfo (which could be unavailable)
+       to build it.
+       Found by NixOS Hydra, reported by Ralf Wildenhues.
+
+2011-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Update docs w.r.t. warning and strictness options.
+       * doc/automake.texi (Strictness): Document that some warnings are
+       turned off by default in `foreign' strictness.
+       (Options): Divide into new sections "Options generalities" and
+       "List of Automake options".  Fix typo (colon instead of full
+       stop).  Document option precedence (AUTOMAKE_OPTIONS wins over
+       AM_INIT_AUTOMAKE which wins over command line).  Also document
+       interactions between options specifying strictness and those
+       specifying warnings.
+
+       More tests on warnings/strictness precedence.
+       * tests/warning-groups-win-over-strictness.test: New test, similar
+       to `warnings-win-over-strictness.test', but checking the explicit
+       catch-all warning flags (like `-Wall' and `-Wnone').
+       * tests/Makefile.am (TESTS): Update.
+
+       Update NEWS about the warnings-over-strictness precedence.
+       * NEWS: Automake explicit warning levels always take precedence
+       over the implicit warning levels implied by Automake strictness.
+
+       For PR automake/547:
+       Warnings win over strictness in AUTOMAKE_OPTIONS.
+       Ensure that, for what concerns the options specified in
+       AUTOMAKE_OPTIONS, explicitly-defined warnings always take
+       precedence over implicit strictness-implied warnings.
+       This finally fixes Automake bug#7669 a.k.a. PR/547.
+       * automake.in (handle_options): Call 'process_option_list'
+       only once per set of options.
+       * lib/Automake/Options.pm (process_global_option_list,
+       process_option_list): Add sanity checks.
+       ($_options_processed, $_global_options_processed): New
+       internal variables, used by the sanity checks above.
+       * tests/warnings-win-over-strictness.test: Extend.
+
+       For PR automake/547:
+       Change signature of 'Automake::Options::_process_option_list()'.
+       This only modifies internal details in the automake implementation,
+       bearing no externally visible effect, but preparing the way for the
+       final fix of Automake bug#7669 a.k.a. PR/547.
+       * lib/Automake/Options.pm (_process_option_list): Accept as
+       arguments a list of hash references with keys 'option' and 'where',
+       where 'option' is an option as might occur in AUTOMAKE_OPTIONS or
+       AM_INIT_AUTOMAKE, and 'where' is the location where it occurred.
+       (process_option_list, process_global_option_list): Updated.
+       * automake.in (handle_options, scan_autoconf_traces): Update.
+
+       Add more tests about AUTOMAKE_OPTIONS.
+       In view of soon-to-follow refactorings (still in the pursuit of a
+       fix for Automake bug#7669 a.k.a. PR/547), add some more tests on
+       AUTOMAKE_OPTIONS support, to prevent obvious regressions.
+       * tests/amopts-variable-expansion.test: New test.
+       * tests/amopts-location.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+       For PR automake/547:
+       Warnings win over strictness in AM_INIT_AUTOMAKE.
+       This change ensures that, for what concerns the options specified
+       in AM_INIT_AUTOMAKE,  explicitly-defined warnings always take
+       precedence over implicit strictness-implied warnings.  Related to
+       Automake bug#7669 a.k.a. PR/547.
+       * lib/Automake/Options.pm (_process_option_list): Parse explicit
+       warnings only after the strictness level has been set.  Fix POD
+       documentation.
+       * tests/warnings-win-over-strictness.test: Extend.
+
+       For PR automake/547:
+       Warnings win over strictness on command line.
+       Ensure that, on the command line at least, explicitly defined
+       warnings always take precedence over implicit strictness-implied
+       warnings.  Related to Automake bug#7669 a.k.a. PR/547.
+       * automake.in (parse_arguments): Parse warnings only after the
+       strictness level has been processed.
+       * tests/gnuwarn.test: Update, plus miscellaneous improvements.
+       * tests/warnings-win-over-strictness.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+       More tests on warnings and strictness.
+       * tests/warnings-strictness-interactions.test: New test.
+       * tests/warnings-unknown.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+       New test on silent-rules mode and portability warnings.
+       * tests/silent-nowarn.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+       Add new tests on strictness and warnings precedence and overriding.
+       * tests/strictness-override.test: New test.
+       * tests/strictness-precedence.test: New test.
+       * tests/warnings-override.test: New test.
+       * tests/warnings-precedence.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix remake rule-induced test failures with HP-UX make.
+       * tests/remake1a.test: Require GNU make.
+
+2011-01-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix remake rule-induced test failures with HP-UX make.
+       * tests/colon6.test: Update timestamp of subdir Makefile, so we
+       do not spuriously invoke the nonexistent toplevel am--refresh
+       rule.
+
+       tests: fix typos in colon6.test
+       * tests/colon6.test: Fix typos.
+
+2011-01-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: explain MSYS setup failure issue, improve test.
+       * tests/defs: Add comment and failure message, improve fail
+       logic.
+
+2011-01-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix libobj2.test failure with non-GNU make: define $(AR).
+       * tests/libobj2.test: Ensure $(AR) is suitably defined.
+
+2011-01-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: avoid spurious failures due to fork failure in test setup
+       * tests/defs: Ensure $me is always nonempty, to avoid spurious
+       failures on MinGW/MSYS in case the preceding sed command could
+       not be spawned.
+
+       Avoid configure warnings from wait about reused PIDs.
+       * m4/sanity.m4 (AM_SANITY_CHECK): Hide wait stderr output.
+       Fixes spurious failure of depcomp2.test.
+
+2011-01-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid testsuite failures due to Autoconf Fortran change.
+       Autoconf v2.68-21-g727ce95 causes AC_F77_LIBRARY_LDFLAGS to
+       require computing the canonical host name.  Ensure config.guess
+       and config.sub files are present for respective checks.
+       * tests/compile_f_c_cxx.test: Add stub files.
+       * tests/flibs.test: Likewise.
+       * tests/fort4.test: Use $AUTOMAKE -a for installing files.
+
+2011-01-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: clustered '-d' not recognized in YFLAGS
+       This change fixes automake bug#7828.
+       * doc/automake.texi (Yacc and Lex): Document that automake
+       recognizes '-d' in AM_YFLAGS only if it's not clustered with
+       other options.
+       From a report by Юрий Пухальский.
+
+2011-01-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: add checks on automatically-distributed files
+       Related to automake bug#7819.
+       * tests/autodist.test: New test.
+       * tests/autodist-subdir.test: Likewise.
+       * tests/autodist-acconfig.test: Likewise.
+       * tests/autodist-acconfig-no-subdir.test: Likewise.
+       * tests/autodist-aclocal-m4.test: Likewise.
+       * tests/autodist-config-headers.test: Likewise.
+       * tests/autodist-configure-no-subdir.test: Likewise.
+       * tests/autodist-stamp-vti.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: do not force yacc-requiring tests to use bison
+       * tests/defs.in: New required entry 'yacc'.  Remove old
+       required entry 'bison'.
+       * tests/cond35.test ($required): Require yacc, not bison.
+       * tests/cond36.test: Likewise.
+       * tests/pr204.test: Likewise.
+       * tests/silent-many-gcc.test: Likewise.
+       * tests/silent-many-generic.test: Likewise.
+       * tests/silent-yacc-gcc.test: Likewise.
+       * tests/silent-yacc-generic.test: Likewise.
+       * tests/subpkg.test: Likewise.
+       * tests/suffix10.test: Likewise.
+       * tests/yacc-basic.test: Likewise.
+       * tests/yacc-clean.test: Likewise.
+       * tests/yacc-d-basic.test: Likewise.
+       * tests/yacc-d-vpath.test: Likewise.
+       * tests/yacc-dist-nobuild.test: Likewise.
+       * tests/yacc-nodist.test: Likewise.
+       * tests/yacc4.test: Likewise.
+       * tests/yacc6.test: Likewise.
+       * tests/yacc7.test: Likewise.
+       * tests/yacc8.test: Likewise.
+       * tests/yaccdry.test: Likewise.
+       * tests/yaccvpath.test: Likewise.
+
+2011-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: more consistent checks about invalid options
+       * tests/aclocal.test: Grepping of automake stderr for messages
+       reporting invalid options made stricter.
+       * tests/no-outdir-option.test: Likewise.  Also, create a dummy
+       `Makefile.am', to ensure that the automake failures are really
+       caused only by unrecognized options.
+       * tests/automake.test: Added trailing `:' command.  Removed
+       redundant checks on `--help' and `--version' option (already
+       performed in the test `help*.test').
+
+2011-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: enable 'errexit' shell flag by default.
+       * tests/defs: Enable `errexit' shell flag (near the end).
+       Removed redundant comment about the enabling of shell traces.
+       * tests/README (Writing test cases): Update, and use nicer
+       formatting in a couple of places.
+       * All tests: Adjusted by removing now-redundant calls to
+       'set -e'.
+
+2011-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: work around a texi+cygnus bug causing a spurious XFAIL
+       * tests/txinfo5b.test: New test, like txinfo5.test but calling
+       automake with the `-Wno-override' option to work around a bug
+       in the texinfo + cygnus interaction.
+       * tests/txinfo5.test: Update heading comments.
+       * tests/Makefile.am (TEST): Updated.
+
+2011-01-09  Dave Hart  <davehart@gmail.com>  (tiny change)
+
+       Fix another typo in Rule.pm comment.
+       * lib/Automake/Rule.pm: Fix typo.
+
+2011-01-09  Peter Rosin  <peda@lysator.liu.se>
+
+       Fix another typo in Rule.pm comment.
+       * lib/Automake/Rule.pm: Fix typo.
+
+2011-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: texinfo unrecognized extensions
+       * tests/txinfo-unrecognized-extension.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+       Improve, extend and tweak tests on Texinfo support.
+       * tests/instdir-texi.test: Add a call to `ls -l' after that to
+       `make', for debugging.  When looking for required tools, do not
+       redirect the output of "$tool --help" to /dev/null, and do not
+       uselessly run it in a subshell.
+       * tests/txinfo.test: Rewritten to run autoconf, ./configure and
+       make.  All checks moved into Makefile.am.
+       * tests/txinfo8.test: Likewise, and modernize the generated
+       configure.in.
+       * tests/txinfo2.test: Moved checks into Makefile.am, and other
+       minor improvements.
+       * tests/txinfo5.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.
+       * tests/txinfo6.test: Likewise, and make grepping of generated
+       Makefile.in stricter.
+       * tests/txinfo7.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.  Do not add unnecessary stuff
+       to Makefile.am.
+       * tests/txinfo9.test: Verify that more targets which are expected
+       to be generated only once really are.  Make grepping less strict,
+       to avoid exposing too much internal details.  More minor changes.
+       * tests/txinfo16.test: Add trailing `:'.  Prefer cat over echo
+       for appending to configure.in.  Updated/fixed heading comments.
+       * tests/txinfo23.test: Likewise, and extended a little by making
+       it check that no info file is created in the $(srcdir).
+       * tests/txinfo24.test: Likewise.
+       * tests/txinfo25.test: Likewise.
+       * tests/txinfo18.test: Add trailing `:'.  Prefer cat over echo
+       for appending to configure.in.  Also, check that index files are
+       cleaned also by "make clean", not only by "make distclean".
+       * tests/txinfo22.test: Prefer `$me' over hard-coded test name,
+       and added trailing `:' command.  This testcase also used to check
+       that automake ignores in-line comments when using variables, but
+       preserves them in the output; these checks (added in commit
+       "Release-1-7f-4-g9177ef8") do not really pertain to this test,
+       so they have been moved ...
+       * tests/comments-in-var-defn.test: ... into this new test.
+       * tests/txinfo4.test: Escape literal dots in grep regexps.  Add
+       trailing `:' command.
+       * tests/txinfo29.test: Likewise.  Relax grepping of generated
+       Makefile.in w.r.t. whitespaces.  Prefer `cat' over `echo' to
+       append to configure.in.
+       * tests/txinfo3.test: Likewise.
+       * tests/vtexi.test: Improve grepping of Makefile.in (sometimes
+       make it stricter, sometimes laxer).  Move `set -e' setting just
+       after the inclusion of ./defs.  De-uglify a sed command.  Other
+       minor cosmetic improvements.
+       * tests/vtexi2.test: Make grepping of Makefile.in stricter.  Add
+       trailing `:' command.
+       * tests/vtexi3.test: New test on version.texi support.
+       * tests/vtexi4.test: Likewise.
+       * tests/Makefile.am (TESTS): Updated.
+
+2011-01-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: fix spurious failure in 'tests/yflags-conditional.test'
+       * tests/yflags-conditional.test: Filter out message "warnings are
+       treated as errors" from automake stderr, to avoid a false positive
+       when grepping for extraneous warning messages.
+
+2011-01-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: warn about conditional content in *YFLAGS variables
+       This change fixes automake bug#7804.
+       * automake.in (lang_yacc_target_hook): Warn if any of the relevant
+       *YFLAGS variables has conditional contents (not only a conditional
+       definition).  Related refactoring.
+       * NEWS: Updated.
+       * tests/yflags-conditional.test: Updated and extended.
+       * tests/yflags-conditional-force.test: New test.
+       * tests/Makefile.am (TESTS): Updated.
+
+2011-01-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: support variable expansions in *YFLAGS definition.
+       This change fixes automake bug#7800.
+       * automake.in (lang_yacc_target_hook): Use 'value_as_list_recursive'
+       instead of 'variable_value' to get the value of *YFLAGS variables.
+       Related changes.
+       ($DASH_D_PATTERN): Removed.
+       * tests/Makefile.am (XFAIL_TESTS): Remove yflags-var-expand.test.
+       * tests/yacc-clean.test: Remove workaround for now-fixed bug.
+       * NEWS: Update.
+
+2011-01-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: more tests on *YFLAGS support
+       * tests/yflags-var-expand.test: New test, still xfailing.  It
+       exposes automake bug#7800 -- "automake fails to honor `-d' in
+       AM_YFLAGS when variable expansions are involved".
+       * tests/yflags-d-false-positive.test: New test, checking that
+       automake do not spuriously see `-d' in *YFLAGS when that isn't
+       really there.
+       * tests/yflags-force-override.test: New test, checking that
+       automake can cope with definition of the YFLAGS variable in
+       Makefile.am (even if that is an extremely bad practice, as that
+       variable is user-reserved).
+       * tests/yflags-cmdline-override.test: New test, checking that
+       automake can cope with user-redefinition of YFLAGS at configure
+       time and/or at make time.
+       * tests/yflags-conditional.test: New test, checks that automake
+       warns on conditionally-defined *YFLAGS variables.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
+2011-01-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: extend and improve tests
+       * tests/yacc-basic.test: Also check that the intermediate C file
+       is mentioned in the generated Makefile.in, and that it is created
+       by the first make invocation.
+       * tests/yacc3.test: Test removed, superseded by ...
+       * tests/yacc-d-basic.test: ... this new test.
+       * tests/yacc2.test: Add reference to that new test in the heading
+       comments.
+       * tests/yacc-d-vpath.test: New test.
+       * tests/yaccvpath.test: Updated heading comments.  Do not require
+       gcc anymore, as any working C compiler should be enough.  Remove
+       redundant comments.
+       * tests/yacc-nodist.test: New test.
+       * tests/yacc-dist-nobuild.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-12-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Extend, fix and improve tests on Lex and Yacc support.
+       * tests/lexcpp.test: New test script, on support for Lex + C++.
+       * tests/lexvpath.test: New test script, test build and rebuild
+       rules for lexers in VPATH setup.
+       * tests/yacc-basic.test: New test script, run simple "semantic"
+       checks on basic Yacc support (similarly to what lex3.test does
+       for Lex support).
+       * tests/lex.test: Don't create useless dummy source file joe.l.
+       Remove extra blank lines.
+       * tests/lex4.test: Add trailing `:' command.  Do not create dummy
+       useless lex source file.
+       * tests/lex2.test: Likewise.  Call automake with the `-a' option,
+       so that it doesn't fail for the absence of `ylwrap' script.  Make
+       grepping of automake stderr stricter.
+       * tests/yacc7.test: Add trailing `:' command.  Enable `errexit'
+       shell flag earlier (just after having sourced ./defs).
+       * tests/yacc4.test: Likewise.  Also ...
+       (configure.in): Use pre-populated skeleton set up by ./defs,
+       instead of writing one from scratch.
+       Other minor cosmetic changes.
+       * tests/yacc5.test: Likewise.
+       * tests/yaccvpath.test: Likewise. Also ...
+       ($distdir): New variable.
+       Use it throughout.
+       * tests/lex5.test: Likewise.
+       * tests/lex3.test: Likewise.  Check the distdir, rather than
+       grepping the distribution tarball.  Extend the test on the
+       created binary, and be sure to avoid hangs.  Add some comments.
+       * tests/yacc.test: Use stricter grepping.  Add trailing `:'.
+       * tests/yacc6.test: Likewise.
+       * tests/yacc3.test: Likewise.  Do not create the unused file
+       `Makefile.sed'.  Remove useless rules from Makefile.am.  Other
+       minor cosmetic changes.
+       * tests/yacc2.test: Make grepping of generated `Makefile.in' and
+       of automake error messages stricter.  Do not redirect output of
+       grep to /dev/null.  Move call to aclocal earlier.  Reduce the
+       number of empty blank lines.  Fix a typo in comments.
+       * tests/yacc8.test: Fixed bugs that reduced the completeness of
+       the tests.  Added trailing `:' command.
+       (configure.in): Use pre-populated skeleton set up by ./defs,
+       instead of writing one from scratch.
+       * tests/yaccpp.test: Test also extensions `.y++', `.ypp', and
+       `.yxx', rather than only `.yy'.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-01-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cosmetics: remove trailing whitespaces
+       * doc/automake.texi: Remove trailing whitespaces.
+       * tests/cond13.test: Likewise.
+       * tests/cond14.test: Likewise.
+       * tests/fort4.test: Likewise.
+       * tests/fort5.test: Likewise.
+       * tests/libobj17.test: Likewise.
+       * tests/suffix7.test: Likewise.
+       * tests/vtexi2.test: Likewise.
+
+       automake: minor fixes in comments
+       * automake.in: Some minor fixes and enhancements in comments.
+
+2011-01-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Add test coverage for deleted header files.
+       * tests/depcomp6.test, tests/depcomp7.test: Update tests to
+       also check for the deleted header bug.  If no dependency
+       tracking mechanism could be found, SKIP rather than exit
+       successfully.  Use GNU style spacing and ANSI C prototypes.
+
+       Fix typos in Rule.pm comments.
+       * lib/Automake/Rule.pm: Fix typos in comments.
+
+       docs: split 'amhello Explained' node.
+       * doc/automake.texi (amhello Explained): Split node ...
+       (amhello's configure.ac Setup Explained)
+       (amhello's Makefile.am Setup Explained) : ... into these two.
+       (Top, Hello World): Adjust, and add @anchor for stable URL links.
+       Suggestion by Karl Berry in automake bug#7766.
+
+2011-01-08  Karl Berry  <karl@freefriends.org>
+           Eric Blake  <eblake@redhat.com>
+
+       docs: reference defining directories in amhello node.
+       * doc/automake.texi (amhello Explained): Point to Autoconf
+       manual for how to convert directory values into macros.
+       (Optional): Fix grammar nit.
+
+2011-01-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       yacc: "make clean" removes .c and .h files from non-distributed .y
+       Previously, while automake did *not* distribute C source and header
+       files derived from non-distributed Yacc sources, it still caused
+       them to be removed only by "make maintainer-clean" only, and not by
+       simply "make clean" or "make distclean".
+       This caused "make distcheck" to fail, unless the developer put
+       those generated .c and .h files in CLEANFILES or in DISTCLEANFILES
+       by hand.
+       This change fixes this issue, by making non-distributed `.c' and
+       `.h' files generated by non-distributed Yacc sources cleaned by
+       "make clean".
+       * tests/automake.in (lang_yacc_target_hook): Make C source and
+       header files derived from non-distributed Yacc files cleaned by
+       "make clean", not only by "make maintainer-clean".
+       * tests/yacc-clean.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-01-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * NEWS: Fix typo (forgotten word).
+
+2011-01-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       docs: how to work around checks on invalid primary/directory couples
+       * doc/automake.texi (Uniform): Document the blessed idiom which can
+       be used to work around automake checks on invalid primary/directory
+       couples (such as `lib_PROGRAMS' or `doc_LIBRARIES').
+
+2010-01-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests: normalize use of the 'errexit' shell flag.
+       * tests/maken3.test (check_targets): Remove redundant call to
+       'set -e'.
+       * tests/maken4.test: Likewise.
+       * tests/ansi5.test: Call 'set -e' just after './defs' has been
+       sourced.
+       * tests/ansi6.test: Likewise.
+       * tests/ansi7.test: Likewise.
+       * tests/cond16.test: Likewise.
+       * tests/cond17.test: Likewise.
+       * tests/cond18.test: Likewise.
+       * tests/cond19.test: Likewise.
+       * tests/cond20.test: Likewise.
+       * tests/cond21.test: Likewise.
+       * tests/instdat2.test: Likewise.
+       * tests/instdir-texi.test: Likewise.
+       * tests/parallel-tests3.test: Likewise.
+       * tests/remake1a.test: Likewise.
+       * tests/ccnoco.test: Likewise, and add trailing `:' command.
+       * tests/comment4.test: Likewise.
+       * tests/gcj4.test: Likewise.
+       * tests/nodist2.test: Likewise.
+       * tests/nodist3.test: Enable 'errexit' shell flag (this should
+       have been done in commit v1.11-248-g317e17b, but the relevant
+       hunk has been forgotten somehow).
+       * tests/output.test: Likewise.
+       * tests/gnits2.test: Likewise, and display captured stderr to
+       script's stderr, not to script's stdout.
+       * tests/gnits3.test: Likewise.  Also, prefer 'cat' over 'echo'
+       to append to Makefile.am, and really check that the exit status
+       of "make installcheck" indicates failure.
+
+2011-01-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Sync auxiliary files from upstream.
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex:
+       Sync from upstream.
+
+       Avoid caching bug in cygnus mode test.
+       * tests/cygnus-requires-maintainer-mode.test: Remove
+       autom4te.cache directory before rerunning aclocal, to
+       remove trace caches.
+
+       Fix maintainer-check regression.
+       * tests/subobj11a.test: Pass DISTCHECK_CONFIGURE_FLAGS in the
+       environment.
+
+       Bump copyright years.
+       * aclocal.in (write_aclocal, version): Bump copyright years.
+       * automake.in (gen_copyright, version): Likewise.
+       * doc/automake.texi: Likewise.
+
+2010-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * NEWS: Add missing blank line between two entries.
+
+2010-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Improve and extend tests `suffix*.test'.
+       * tests/suffix.test: Check that suffix rules for C compilation are
+       only included once.  Try also with a static library.
+       * tests/suffix2.test: Add a new grep to help potential debugging.
+       Do not run automake with the `--add-missing' options, since we
+       already create all the needed auxiliary files.  Try also *without*
+       the `no-dependencies' automake option.
+       * tests/suffix4.test: Make grepping of Makefile.in stricter.
+       * tests/suffix3.test: Rewritten to run also autoconf, ./configure
+       and make.
+       * tests/suffix5.test: Likewise.
+       * tests/suffix6.test: Fix botched recipe indentation (eight spaces
+       were used instead of a tabulation character).  Extend to check
+       that `.obj' is handled like `.$(OBJEXT)' (as is done for `.o').
+       Improved parsing & grepping of generated Makefile.in.  Other minor
+       fixes and improvements.
+       * tests/suffix10.test: Move some checks in Makefile.am.  Also run
+       "make all".
+       * tests/suffix12.test: Likewise, and account for VPATH issues in
+       weaker make implementations.
+       * tests/suffix11.test: Likewise.  Also, run "make distcheck", for
+       completeness, and related changes.
+       * tests/suffix8.test: Likewise.  Also, do not put `gcc' anymore
+       in $required.
+       * tests/suffix13.test: Do not use the `--force-missing' automake
+       option unnecessarily.
+       * tests/suffix6b.test: New test, semantic sister of `suffix6.test'.
+       * tests/suffix6c.test: Likewise.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-12-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+           Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Work around a bug in file-inclusion mechanism of Solaris make.
+       * automake.in (handle_single_transform): In the name of the
+       dependency file: collapse multiple slash characters into a single
+       one.
+       * tests/subobj11a.test: New test.
+       * tests/subobj11b.test: Likewise.
+       * tests/subobj11c.test: Likewise.
+       * tests/depcomp8a.test: Likewise.
+       * tests/depcomp8b.test: Likewise.
+       * tests/Makefile.am (TESTS): Updated.
+       * NEWS: Updated.
+       Report by Stefano Lattarini, quick fix by Ralf Wildenhues, final
+       patch and tests by Stefano Lattarini.
+
+2010-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix two spurious testsuite failures on IRIX 6.5.
+       * tests/suffix13.test (Makefile.am): Account for VPATH issues on
+       weaker make implementations (e.g. IRIX 6.5).
+       * tests/parallel-tests8.test: Likewise, plus a required related
+       change.
+       Reported by Ralf Wildenhues.  The bugs have been there from the
+       first versions of the affected test scripts.
+
+2010-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: cygnus mode doesn't require AM_CYGWIN32 macro.
+       * doc/automake.texi (Cygnus): Mode 'cygnus' does not require
+       the AM_CYGWIN32 macro (and indeed hasn't required it since at
+       least commit Release-1-2-31-g3038064 "merged changes from
+       Cygnus" of 1997-08-25).
+
+2010-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Add some tests on 'cygnus' mode.
+       * tests/clean2.test: Extend.
+       * tests/cygnus-check-without-all.test: New test.
+       * tests/cygnus-dependency-tracking.test: Likewise.
+       * tests/cygnus-distclean.test: Likewise.
+       * tests/cygnus-imply-foreign.test: Likewise.
+       * tests/cygnus-no-dist.test: Likewise.
+       * tests/cygnus-no-installinfo.test: Likewise.
+       * tests/cygnus-requires-maintainer-mode.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix parallel testsuite run with Zsh.
+       This change deals with a Zsh incompatibility in the handling
+       of the special shell variable `$0' in sourced files; this
+       incompatibility used to cause utter breakage when the
+       Automake testsuite was run in parallel mode with Zsh as
+       the $(TEST_LOG_COMPILER).
+       For more information, please refer to the thread "Fix parallel
+       testsuite run with zsh" on automake-patches, dated 2010-12-22:
+        <http://lists.gnu.org/archive/html/automake-patches/2010-12/msg00135.html>
+       This change works around the problems described above for Zsh 4.3
+       or later, and offers better error messages (instead of random
+       failures) for earlier Zsh version.
+       * tests/README (Supported shells): When describing the manual
+       workaround about the Zsh incompatibility in the handling of `$0',
+       tell that it is now needed only with Zsh versions preceding 4.3.
+       Done also some minor rewordings.
+       * tests/defs-static.in ($argv0): New variable, offers a workaround
+       for the Zsh incompatibility in the handling of `$0'.
+       Abort if that variable cannot be correctly set (can happen only
+       in older Zsh version).
+       * tests/defs ($me): Define using `$argv0', not `$0'.
+
+2010-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests defs: keep track of original $AUTOMAKE and $ACLOCAL values.
+       This is especially useful for tests which might want to run
+       automake and aclocal without additional flags and warnings.
+       * tests/defs-static.in ($original_ACLOCAL): New variable.
+       ($original_AUTOMAKE): Likewise.
+       * tests/help.test: Use them.
+       * tests/help2.test: Likewise.
+       * tests/help3.test: Likewise.
+       * tests/help4.test: Likewise.
+       From a suggestion by Ralf Wildenhues.
+
+2010-12-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       distlinksbrk.test: Work around botched "make -k".
+       * tests/distlinksbrk.test: Run "make" multiple times and grep
+       its output each time for a single error message, rather than
+       running "make -k" one single time and grepping its output for
+       all the expected error messages.  This should work around make
+       implementations with limited (broken?) `-k' support; for more
+       information, see these subthreads on the automake-patches list:
+         - 2010-11-15, "Testsuite failures on HP-UX 11.23",
+           <http://lists.gnu.org/archive/html/automake-patches/2010-11/msg00162.html>
+         - 2010-11-15, "Testsuite failures on IRIX 6.5",
+           <http://lists.gnu.org/archive/html/automake-patches/2010-11/msg00166.html>
+
+2010-12-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Minor improvements to test 'amopts.test'.
+       * tests/amopts.test: Remove botched comment.  Make grepping of
+       automake stderr slighty stricter.  Add trailing `:' command.
+
+2010-12-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       backcompat6.test: avoid comments inside recipe commands.
+       * tests/backcompat6.test: Remove shell comments from makefile rule
+       commands, as they are not portable to (at least) Tru64 make.
+
+2010-12-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       man8.test: avoid comments inside recipe commands.
+       * tests/man8.test: Remove shell comments from makefile rule
+       commands, as they are not portable to (at least) Tru64 make.
+
+2010-12-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix sed-related buglet in test "subdir5.test"
+       * tests/subdir5.test: Always terminate text passed to the
+       `i' sed command with a newline, to work around limitations
+       in e.g. older OpenBSD sed.
+
+2010-12-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix spurious failures in tests on AC_CONFIG_AUX_DIR.
+       * tests/auxdir7.test: Do not try to needlessly overwrite the files
+       `install-sh' and `missing'.  This avoid spurious failures in "make
+       distcheck", when those files might be copied as read-only from the
+       `lib' directory.
+       * tests/auxdir8.test: Likewise.
+
+2010-12-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Make test 'posixsubst-script' portable to MinGW/MSYS.
+       * tests/posixsubst-script.test: Ensure that the generated dummy
+       scripts really start with a shebang line, to work around a
+       limitation of 'test -x' on MinGW/MSYS.
+       Reported by Ralf Wildenhues.
+
+       Improve comments in tests `posixsubst*.test'.
+       * tests/posixsubst-data.test: Improve comment explaining why we
+       try also empty match suffix.
+       * tests/posixsubst-extradist.test: Likewise.
+       * tests/posixsubst-ldadd.test: Likewise.
+       * tests/posixsubst-libraries.test: Likewise.
+       * tests/posixsubst-ltlibraries.test: Likewise.
+       * tests/posixsubst-programs.test: Likewise.
+       * tests/posixsubst-scripts.test: Likewise.
+       * tests/posixsubst-sources.test: Likewise.
+       * tests/posixsubst-tests.test: Likewise.
+       Suggested by Ralf Wildenhues.
+
+2010-12-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: fix blunder in example about python extension modules
+       * doc/automake.texi (Python): Use `quaternion_la_SOURCES',
+       not `quaternion_SOURCES', to declare the sources of python
+       extension module `quaternion.la'.
+
+2010-12-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       docs: list LTLIBRARIES among Automake primaries
+       * doc/automake.texi (Uniform): List `LTLIBRARIES' among
+       the Automake primaries.
+
+2010-12-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Tests defs: requirement 'xsi-shell' must be synced with libtool.
+       * tests/defs (xsi-shell): Add comment telling to keep the
+       XSI-conformance checks in sync with libtool.
+
+2010-12-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Minor cleanups in canon7.test.
+       * tests/canon7.test (_foo_bar_SOURCES): Remove libs.c.
+       (configure.in): Remove AC_PROG_CXX.
+
+2010-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid false positive in sc_tests_plain_make maintainer-check.
+       * Makefile.am (sc_tests_plain_make): Ensure to only match full
+       `make' words.  Avoid false positive with remake11.test.
+
+2010-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix canon7.test failure.
+       * tests/canon7.test (_foo_bar_SOURCES): Add foobar.c.
+       (lib.h, libd.c, libs.c): Use const for constant strings.
+
+2010-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix typos in test comments.
+       * tests/posixsubst-data.test, tests/posixsubst-extradist.test,
+       tests/posixsubst-ldadd.test, tests/posixsubst-libraries.test,
+       tests/posixsubst-ltlibraries.test, tests/posixsubst-programs.test,
+       tests/posixsubst-scripts.test, tests/posixsubst-sources.test,
+       tests/posixsubst-tests.test: Fix typos.
+
+2010-12-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       More uses of AS_HELP_STRING in automake macros.
+       * m4/depend.m4 (AM_DEP_TRACK): Use `AS_HELP_STRING' to format
+       the help message added to the generated configure.
+       * m4/dmalloc.m4 (AM_WITH_DMALLOC): Likewise.
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Likewise.
+       * m4/maintainer.m4 (AM_MAINTAINER_MODE): Likewise.
+       * m4/multi.m4 (AM_ENABLE_MULTILIB): Likewise.
+       Also, bumped all serial numbers of the modified m4 files.
+
+2010-12-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Improve tests on generated portions of configure help screen.
+       * tests/help-depend.test: Grepping of configure help screen
+       relaxed to cater for possible line wrapping, and tightened in
+       other respects.
+       * tests/help-depend2.test: Likewise.
+       * tests/help-dmalloc.test: Likewise.
+       * tests/help-lispdir.test: Likewise.
+       * tests/help-maintainer.test: Likewise.
+       * tests/help-multilib.test: Likewise.
+       * tests/help-silent.test: Likewise.
+       * tests/help-upc.test: Likewise.
+       * tests/help-init.test: Grepping of configure help screen
+       tightened.
+
+2010-12-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Extended tests on AC_CONFIG_AUX_DIR.
+       * tests/auxdir.test: Enable `errexit' shell flag.  Prefer `$me'
+       over hard-coded test name.  Use proper m4 quoting.  Add trailing
+       `:' command.
+       * tests/auxdir2.test: Likewise.  Try to call automake also with
+       the `-a' option, so that it will not fail for spurious reasons.
+       * tests/auxdir3.test: Add an explanatory comment and a trailing
+       `:' command.
+       * tests/auxdir4.test: Prefer `$me' over hard-coded test name.
+       Make grepping of automake stderr slightly stricter.  Also, now
+       this test just checks about Automake's reaction to unportable
+       auxiliary directory names (and it has been extended in this
+       respect).  Moved the checks about non-existent auxiliary
+       directories to ...
+       * tests/auxdir5.test: ... this new test.
+       * tests/auxdir6.test: New test.
+       * tests/auxdir7.test: Likewise.
+       * tests/auxdir8.test: Likewise.
+       * tests/auxdir9.test: Likewise.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-12-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests: extend checks on remake rules.
+       This adds proper semantical tests (i.e. run make to check the
+       rebuild rules are correctly triggered) in addition to tentative
+       grepping of the generated Makefile.in(s).
+       * tests/remake.test: Enable `errexit' shell flag, and related
+       changes.  Modernize `configure.in'.  Add trailing `:' command.
+       Improve heading comments, and add a reference to new sister test
+       remake1a.test.
+       * tests/remake3.test: Likewise (but with sister test being
+       remake3a.test).
+       * tests/remake2.test: Improve heading comments.  Enable `errexit'
+       shell flag, and related changes.  Modernize `configure.in'.  Make
+       grepping of `Makefile.in' slightly stricter.  Add trailing `:'
+       command.
+       * tests/remake5.test: Also run the `distcheck' target.  Add
+       trailing `:' command.  Use proper m4 quoting in configure.in.
+       * tests/remake4.test: Prefer `$me' over hard-coded test name.
+       * tests/remake7.test: Use the `configure.in' stub created by
+       ./defs, rather than writing it from scratch.
+       * tests/remake6.test: Likewise.  Also, add trailing `:' command,
+       and ensure verbose printing of captured make output.
+       * tests/remake1a.test: New test, sister of remake.test.
+       * tests/remake3a.test: New test, sister of remake3.test.
+       * tests/remake8a.test: New test.
+       * tests/remake8b.test: Likewise.
+       * tests/remake9a.test: Likewise.
+       * tests/remake9b.test: Likewise.
+       * tests/remake9c.test: Likewise.
+       * tests/remake9d.test: Likewise.
+       * tests/remake10a.test: Likewise.
+       * tests/remake10b.test: Likewise.
+       * tests/remake10c.test: Likewise.
+       * tests/remake11.test: Likewise.
+       * tests/remake12.test: Likewise.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-12-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Improve and extend tests on canonicalization.
+       * tests/canon-name.test: Add trailing `:' command.  When writing
+       configure.in, prefer to use $me instead of hard-coding the test
+       name.
+       * tests/canon3.test: Prefer trailing `:' over trailing `Exit 0'.
+       * tests/canon4.test: Likewise.  Make grepping of Makefile.in
+       stricter.  Improve heading comment, and add reference to ...
+       * tests/canon6.test: ... this new test (sister test of the
+       previous one).
+       * tests/canon.test: Prefer cat + here-doc over echo to append
+       text to configure.in.  Extend grepping of Automake stderr.  Add
+       trailing `:' command.
+       * tests/canon5.test: Likewise.
+       * tests/canon7.test: New file, stress test on canonicalization.
+       * tests/canon8.test: New test, for better coverage (check that
+       the `@' character is not transliterated in canonicalizations).
+       * tests/Makefile.am: Updated.
+
+2010-12-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Libobj tests: refer to automake bug tracker for limitations.
+       * tests/libobj15b.test (configure.in): In the comment explaining
+       why an apparently redundant AC_OUTPUT is indeed needed, refer
+       to the relevant entry in the Automake bug tracker rather than
+       describing the bug in detail with a FIXME-style comment.
+       * tests/libobj15c.test: Likewise.
+       * tests/libobj20b.test: Likewise.
+
+       Libobj tests: do not use `##' automake comments in-line.
+       * tests/libobj19.test (Makefile.am): Do not use inline `##'
+       comments in the definition of AUTOMAKE_OPTIONS.
+       * tests/libobj20c.test: Likewise.
+       Report by Ralf Wildenhues.
+
+2010-12-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests defs: more uses of $top_testsrcdir.
+       * tests/compile6.test: Use `$top_testsrcdir' instead of
+       `$testsrcdir/..'.
+
+2010-11-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests required tools: also try `-v' option for GNU compilers.
+       * tests/defs.in: In the loop on "$required" tools, for gcc
+       and g++, also run "gcc -v" (resp. "g++ -v"), to get more
+       information, and for consistency with gcj.
+
+2010-11-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Tests defs: avoid some useless subshells.
+       * tests/defs: In the loop on "$required" tools: avoid subshells
+       where not needed.
+
+2010-12-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Extend tests on AC_LIBOBJ and friends.
+       * tests/aclibobj.test: Removed, superseded by ...
+       * tests/libobj-basic.test: ... this new test, which runs autoconf,
+       ./configure and make, to ensure everything really works.
+       * tests/libobj3.test: Add trailing `:' command.  Escape literal
+       dot in grep regexp.
+       * tests/libobj4.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.  Use proper m4 quoting.
+       * tests/ltlibobjs.test: Likewise.
+       * tests/libobj5.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.  Make more robust by using
+       longer filenames to be grepped.
+       * tests/libobj8.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.  Use the configure.in
+       stub provided by ./defs, rather than writing it from scratch.
+       * tests/libobj2.test: Likewise.  Also, add calls to autoconf,
+       ./configure and make, to ensure everything really works.
+       * tests/libobj7.test: Likewise, and ensure that at least one
+       function listed in AC_REPLACE_FUNCTIONS is truly replaced.
+       * tests/libobj13.test: Make grepping of Automake stderr slightly
+       stricter.  Add trailing `:' command.
+       * tests/libobj12.test: Likewise.  Also, prefer "cat + here-doc"
+       over "echo" to append to Makefile.am, and some cosmetic changes
+       in spacing.
+       * tests/libobj14.test: Call `Exit 1' if sourcing of ./defs fails.
+       Slighty improve m4 quoting.  Add trailing `:' command.
+       * tests/libobj10.test: Add calls to autoconf, ./configure and
+       make, to ensure everything really works.  Also, remove tests that
+       nonexistent source for AC_LIBOBJ cause an Automake failure: this
+       is already checked by ...
+       * tests/libobj15a.test: ... this new test.
+       * tests/libobj15b.test: New test, sister test of libobj15a.test,
+       checks AC_LIBSOURCE instead of AC_LIBOBJ.
+       * tests/libobj15c.test: New test, sister test of libobj15a.test,
+       checks AC_LIBSOURCES instead of AC_LIBOBJ.
+       * tests/libobj11.test: Removed, superseded by ...
+       * tests/libobj16a.test: ... this new test.
+       * tests/libobj16b.test: New test, sister test of libobj16a.test,
+       but using oldish/deprecated idioms.
+       * tests/libobj17.test: New test.
+       * tests/libobj18.test: Likewise.
+       * tests/libobj19.test: Likewise.
+       * tests/libobj20a.test: Likewise.
+       * tests/libobj20b.test: Likewise.
+       * tests/libobj20c.test: Likewise.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-12-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Test `$(var:suf=rpl)' expansion in special automake variables.
+       * tests/posixsubst-data.test: New test.
+       * tests/posixsubst-extradist.test: Likewise.
+       * tests/posixsubst-ldadd.test: Likewise.
+       * tests/posixsubst-libraries.test: Likewise.
+       * tests/posixsubst-ltlibraries.test: Likewise.
+       * tests/posixsubst-programs.test: Likewise.
+       * tests/posixsubst-scripts.test: Likewise.
+       * tests/posixsubst-sources.test: Likewise.
+       * tests/posixsubst-tests.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-12-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Make tests `colon*.test' more "semantic".
+       Prefer running configure and make over grepping the generated
+       files; this is both more correct and less fragile.
+       * tests/colon.test: Made more "semantic", as described above.
+       * tests/colon5.test: Likewise.
+       * tests/colon6.test: Likewise.
+       * tests/colon7.test: Likewise.
+       * tests/colon2.test: Likewise, and improve syncing with sister
+       test `colon3.test'.
+       * tests/colon3.test: Likewise (but with the sister test being
+       `colon2.test' here).
+
+2010-12-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid running installed automake from 'libtool --help'.
+       * tests/subobj9.test: Export AUTOCONF and AUTOMAKE.
+       Together with fixed Libtool, this fixes check-coverage to not
+       invoke installed automake.
+
+2010-12-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Separate checks on target overriding into multiple test scripts.
+       * tests/overrid.test: Deleted, its contents separated into ...
+       * tests/override-suggest-local.test: ... this new test ...
+       * tests/override-html.test: ... and this new test ...
+       * tests/override-conditional-1.test: ... and this new test ...
+       * tests/override-conditional-2.test: ... and this new test (still
+       xfailing).
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Updated.
+
+       Enable `set -e' in more tests (plus some tweakings).
+       * tests/implicit.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.
+       * tests/insh2.test: Likewise.
+       * tests/instman2.test: Likewise.
+       * tests/interp.test: Likewise.
+       * tests/interp2.test: Likewise.
+       * tests/library.test: Likewise.
+       * tests/mclean.test: Likewise.
+       * tests/info.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.  Remove useless chaff from
+       generated Makefile.am.  Add a "FIXME" comment.
+       * tests/include.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.  Prefer cat + here-doc over
+       echo to append to configure.in.  Make tests more robust by using
+       longer and less common names to grep.  Remove an useless call to
+       echo.  Remove an useless subshell.
+       * tests/header.test: Enable `errexit' shell flag, and related
+       changes.  Use proper m4 quoting.  Add excerpts from the original
+       report of the bug tested for by this script.
+       * tests/gcj.test: Enable `errexit' shell flag, and related
+       changes.  Use proper m4 quoting.  Add trailing `:' command.
+       * tests/gcj3.test: Likewise.
+       * tests/ldflags.test: Likewise.
+       * tests/libtool.test: Likewise.
+       * tests/listval.test: Likewise.
+       * tests/javaprim.test: Likewise, and prefer cat + here-doc over
+       echo to append to configure.in.
+       * tests/javasubst.test: Likewise.
+       * tests/discorver.test: Enable `errexit' shell flag.  Prefer
+       trailing `:' over trailing `Exit 0'.
+       * tests/instdat.test: Enable `errexit' shell flag, and related
+       changes.  Use proper m4 quoting.  Avoid useless subshell.  Prefer
+       cat + here-doc over echo to append to configure.in.
+       * tests/libtool2.test: Enable `errexit' shell flag, and related
+       changes.  Add trailing `:' command.  Use the configure.in
+       stub provided by ./defs, rather than writing it from scratch.
+
+       Modernize, improve and/or tweak some test scripts.
+       * tests/maintclean.test: Use proper m4 quoting.  Add trailing `:'
+       command.
+       * tests/sinclude.test: Likewise, and add a couple of blank lines,
+       for clarity.
+       * tests/make.test: Move setting of `errexit' shell flag earlier in
+       the script (just after inclusion of ./defs).  Use the configure.in
+       stub created by ./defs, rather than writing it from scratch.  Some
+       cosmetic changes in spacing.  Ensure we wait enough time before
+       touching configure.in to trigger the rebuild rules.
+       * tests/makej.test: Use `$me' instead of hard-coding the test
+       name.  Add trailing `:' command.
+       * tests/version7.test: Likewise.
+       * tests/space.test: Enable `errexit' shell flag, and related
+       changes.
+       * tests/makevars.test: Likewise.  Also, prefer trailing `:' over
+       trailing `Exit 0', and be more tolerant of white spaces when
+       grepping Makefile.in.
+
+2010-12-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * tests/silent8.test: Use "|| Exit 1" after ". ./defs".
+
+       Enable `set -e' in more tests (plus some tweakings).
+       * tests/mkinstall.test: Enable `errexit' shell flag, and related
+       changes.  Add a trailing `:' command, if needed.
+       * tests/mdate2.test: Likewise.
+       * tests/objc.test: Likewise.
+       * tests/noinst.test: Likewise.
+       * tests/outdir.test: Likewise.
+       * tests/number.test: Likewise.
+       * tests/pluseq.test: Likewise.
+       * tests/req.test: Likewise.
+       * tests/rulepat.test: Likewise.
+       * tests/specflg6.test: Likewise.
+       * tests/spell3.test: Likewise.
+       * tests/parse.test: Likewise, and ...
+       (configure.in): Use the stub created by ./defs, rather than
+       writing it from scratch.  Remove useless calls to AC_PROG_RANLIB
+       and AC_OUTPUT.
+       * tests/mdate4.test: Likewise.
+       * tests/mkinstall.test: Likewise, and ...
+       (configure.in): ... drop useless call to `AC_OUTPUT'.
+       * tests/output.test: Enable `errexit' shell flag, and related
+       changes.  Add a trailing `:' command.
+       (configure.in): Modernize.
+       * tests/output2.test: Likewise.
+       * tests/output3.test: Likewise.
+       * tests/output4.test: Likewise.
+       * tests/mdate3.test: Enable `errexit' shell flag, and related
+       changes.  Prefer `$me' over hard-coded test name.  Do not move
+       non-existent or useless files in the build auxiliary directory.
+       * tests/nodistdir.test: Enable `errexit' shell flag, and related
+       changes.  Prefer trailing `:' over trailing `Exit 0'.
+       * tests/nodist.test: Likewise.  Also, prefer cat + here-doc over
+       echo to create input test files, and do not create useless dummy
+       C source files.
+       * tests/nodist2.test: Likewise.
+       * tests/ppf77.test: Enable `errexit' shell flag, with related
+       changes.  Add a trailing `:' command.  Do not create useless
+       dummy source files.
+       * tests/spelling.test: Enable `errexit' shell flag, with related
+       changes.  Add a trailing `:' command.  Also, grep Automake error
+       message.
+       * tests/specflg3.test: Enable `errexit' shell flag, with related
+       changes.  Avoid unportable use of `-e' option of fgrep.  Prefer
+       trailing `:' over trailing `Exit 0'.  Remove extra empty lines,
+       and cosmetic changes to whitespaces.
+       * tests/obsolete.test: Enable `errexit' shell flag, with related
+       changes.  Improve verbosity.  Other miscellaneous changes.
+
+2010-11-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Improve and extend tests on `:=' variable assignments.
+       * tests/colneq.test: Avoid redundant use of variable assignments
+       in Makefile.am.  Use command-line automake options instead of
+       editing AUTOMAKE_OPTIONS in Makefile.am.  Make grepping of the
+       generated Makefile.in slightly stricter.  Add a trailing `:'
+       command.
+       * tests/colneq2.test: Do not create unneeded dummy files.  Run
+       also autoconf, ./configure and make.  Add trailing `:' command.
+       * tests/colneq3.test: New test, similar to colneq.test, but
+       running also autoconf, ./configure and make.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-11-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Remove long-deprecated options --Werror and --Wno-error.
+       These options has been deprecated at least since commit
+       "Release-1-6-1b-35-gc037f20", dated 2002-07-06.
+       * automake.in (parse_arguments): Do not recognize anymore options
+       `--Werror' and `--Wno-error' as synonyms of respectively `-Werror'
+       and `-Wno-error'.
+       * tests/werror.test: Update: use `-Werror' instead of `--Werror'.
+       * NEWS: Update.
+
+2010-11-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix spurious failures in `silent*.test' for $CC != gcc
+       In some tests on automake-produced silent rules, we forced the
+       use of gcc depmode to improve testsuite coverage; but this has
+       unsurprisingly led to spurious failures when some non-GNU C
+       compilers were used.  So we are now careful to require GCC in
+       tests that force gcc depmode.
+       From reports by Ralf Wildenhues.
+       * tests/silent5.test: Test removed, its content split into ...
+       * tests/silent-many-generic.test, tests/silent-many-gcc.test: ...
+       these new sister tests, the latter of which forces gcc depmode
+       and lists "gcc" in $required.
+       * tests/silentlex.test: Test removed, its content split into ...
+       * tests/silent-lex-generic.test, tests/silent-lex-gcc.test: ...
+       these new sister tests, the latter of which forces gcc depmode
+       and lists "gcc" in $required.
+       * tests/silentyacc.test: Test removed, its content split into ...
+       * tests/silent-yacc-generic.test, tests/silent-yacc-gcc.test: ...
+       these new sister tests, the latter of which forces gcc depmode and
+       lists "gcc" in $required.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-11-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests: consistently use "|| Exit 1" after ". ./defs".
+       * tests/autohdr.test: Use `. ./defs || Exit 1', not bare
+       `. ./defs', for consistency with other tests.
+       * tests/autohdr2.test: Likewise.
+       * tests/autohdr3.test: Likewise.
+       * tests/autohdr4.test: Likewise.
+       * tests/cond23.test: Likewise.
+       * tests/cond24.test: Likewise.
+       * tests/cond25.test: Likewise.
+       * tests/cond26.test: Likewise.
+       * tests/cond27.test: Likewise.
+       * tests/cond28.test: Likewise.
+       * tests/cond29.test: Likewise.
+       * tests/cond30.test: Likewise.
+       * tests/cond31.test: Likewise.
+       * tests/cond32.test: Likewise.
+       * tests/cond33.test: Likewise.
+       * tests/cond34.test: Likewise.
+       * tests/cond35.test: Likewise.
+       * tests/cond36.test: Likewise.
+       * tests/cond37.test: Likewise.
+       * tests/cond38.test: Likewise.
+       * tests/cond39.test: Likewise.
+       * tests/cond40.test: Likewise.
+       * tests/cond41.test: Likewise.
+       * tests/cond42.test: Likewise.
+       * tests/cond43.test: Likewise.
+       * tests/cond44.test: Likewise.
+       * tests/cond45.test: Likewise.
+       * tests/dollarvar.test: Likewise.
+       * tests/dollarvar2.test: Likewise.
+       * tests/hfs.test: Likewise.
+       * tests/libobj14.test: Likewise.
+       * tests/percent.test: Likewise.
+       * tests/percent2.test: Likewise.
+       * tests/phony.test: Likewise.
+       * tests/silent.test: Likewise.
+       * tests/silent2.test: Likewise.
+       * tests/silent3.test: Likewise.
+       * tests/silent4.test: Likewise.
+       * tests/silent5.test: Likewise.
+       * tests/silent6.test: Likewise.
+       * tests/silent7.test: Likewise.
+       * tests/silent9.test: Likewise.
+       * tests/silentcxx.test: Likewise.
+       * tests/silentf77.test: Likewise.
+       * tests/silentf90.test: Likewise.
+       * tests/silentlex.test: Likewise.
+       * tests/silentyacc.test: Likewise.
+
+       Avoid useless cleaning in some `silent*.test' tests.
+       * tests/silentf77.test: Removed useless calls to "make clean"
+       and "make maintainer-clean".
+       * tests/silentf90.test: Likewise.
+       * tests/silent3.test: Removed useless call to "make distclean".
+       * tests/silent4.test: Likewise.
+       * tests/silent9.test: Likewise.
+
+2010-11-19  Ian Lance Taylor  <iant@google.com>
+
+       Sync config-ml.in from GCC.
+       * config-ml.in: Add Go support: treat GOC and GOCFLAGS like other
+       compiler/flag environment variables.
+
+2010-11-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       release-stats: account for more generated tests.
+       * Makefile.am (release-stats): Be sure to take into account all
+       the generated tests, by grepping the test scripts to decide which
+       ones of them are automatically generated.
+
+2010-11-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Code cleanup after removal of option `--output-directory'.
+       * automake.in ($output_directory): Remove, it's unconditionally
+       defined to `.' and used only ...
+       (generate_makefile): ... in this subroutine, which now has been
+       edited and simplified accordingly.
+
+       Remove obsolete automake option `--output-directory'.
+       This option has been deprecated since version 1.7 (2002/2003).
+       * automake.in ($output_directory): Define to `.' unconditionally.
+       (parse_arguments): Remove handling of equivalent options `-o' and
+       `--output-directory'.
+       * tests/outdir.test: Removed.
+       * tests/no-outdir-option.test: New test.
+       * tests/Makefile.am (TESTS): Updated.
+       * NEWS: Updated.
+
+2010-11-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Automake::Config: remove extra trailing semicolon.
+       * lib/Automake/Config.in: Remove extra trailing semicolon.
+
+       help4.test: fix botched heading comment.
+       * tests/help4.test: Fixed the heading comment, since it
+       didn't correctly describe what checks the testcase was
+       supposed to perform.
+
+       help2.test: add checks on aclocal too.
+       * tests/help2.test: Check that also `aclocal --version' and
+       `aclocal --help' work with configure.in and acinclude.m4 both
+       broken.
+
+2010-11-19  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       New test on repeated automake options.
+       * tests/repeated-options.test: New test, check that automake
+       does not complain on repeated options, nor generate broken or
+       incorrect makefiles.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-11-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix spurious failures of silent-rules tests with Sun Fortran.
+       * tests/silentf77.test: Strip from the make output some verbose
+       messages possibly printed by the SunStudio fortran compilers, to
+       avoid spurious failures.  Add a trailing `:' command.
+       * tests/silentf90.test: Likewise.
+
+2010-11-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix spurious failures of silent5.test with Sun Fortran.
+       * tests/silent5.test: Strip from the make output some verbose
+       messages possibly printed by the SunStudio fortran compilers,
+       to avoid spurious failures.  This bug has been there from the
+       very first version of this test script.
+
+2010-11-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix regression in colon{5,6}.test (failures on AIX 5.3).
+       * tests/colon5.test: Also substitute `@SHELL@' with `$SHELL' when
+       post-processing the generated Makefile.in, to work around a bug
+       of AIX 5.3 make which doesn't allow setting the `$(SHELL)' macro
+       on the commend line.  Calls to `$MAKE' adjusted accordingly.
+       * tests/colon6.test: Likewise.
+       Regression introduced in commit v1.11-175-gf9fe878 "Modernize,
+       improve and/or extend tests `colon*.test", and reported by Ralf
+       Wildenhues.
+
+2010-11-16  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix regression in ansi.test (failure on AIX 5.3).
+       * tests/ansi.test: Remove redundant hackish check done using a
+       hand-postprocessed Makefile.in.  This check worked by setting
+       the `$(SHELL)' macro on the command line of make, but this is
+       not supported by the AIX 5.3 make implementation.
+       This bug has been lurking for a long time, and was activated by
+       commit v1.11-125-gc1f6cdb "Enable `errexit' shell flag in various
+       tests".  Report by Ralf Wildenhues.
+
+2010-11-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       backcompat5.test: avoid '##'-style comments inside recipe commands.
+       * tests/backcompat5.test: Remove double-hash comments
+       from makefile rule commands, they are not part of the
+       Automake API.  Fixes testsuite failure with Tru64 make.
+
+       tests: avoid '##'-style comments inside recipe commands.
+       * tests/confh.test, tests/confh8.test: Remove
+       double-hash comments from makefile rule commands, they
+       are not part of the Automake API.
+
+2010-11-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: work around dash quoting issue in case statements.
+       * tests/color.test, tests/color2.test: Quote variable in case
+       pattern, to avoid skipping tests with dash 0.5.5.1.
+
+2010-11-16  Peter Rosin  <peda@lysator.liu.se>
+
+       Skip MSVC oriented tests if the shell is not capable.
+       * tests/defs: New required entry 'xsi-shell'.
+       * tests/ar-lib.test, tests/compile3.test, tests/compile6.test:
+       Require a XSI capable shell.
+       Reported by Ralf Wildenhues.
+
+2010-11-15  Peter Rosin  <peda@lysator.liu.se>
+
+       compile: clear the `eat' variable earlier.
+       * lib/compile: Clear the `eat' variable earlier.
+       ($scriptversion): Update.
+       * tests/compile3.test: Prevent regressions.
+
+2010-11-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       More stable configure output from sanity check.
+       * m4/sanity.m4 (AM_SANITY_CHECK): Always print check line
+       about ensuring newer files, even if we don't actually need
+       to wait any more.
+
+2010-11-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Rebuild menus in the manual.
+       * doc/automake.texi: Rebuild menus (using ^C ^U ^A in emacs).
+       Thanks to Ian Lance Taylor for the suggestion.
+
+       Fix install-strip when $(STRIP) contains several words.
+       * lib/am/install.am (install-strip): Update comment.  Use
+       separate sub-make invocations for empty and nonempty $(STRIP),
+       to fix quoting issues.
+       * tests/strip2.test, tests/strip3.test: New tests.
+       * tests/Makefile.am (TESTS): Adjust.
+
+2010-11-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix yaccdry.test failure: require bison.
+       * tests/yaccdry.test: Require bison.
+       Found by NixOS Hydra.
+
+2010-11-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix bug in test `backcompat6.test' (MSYS portability).
+       * tests/backcompat6.test (Makefile.am): Grep the output from the
+       test program, rather than diffing it, to avoid spurious failures
+       on MinGW/MSYS due to LF vs. CRLF line endings.
+       Reported by Ralf Wildenhues.
+
+2010-11-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Deprecate obsolete macro AM_WITH_REGEX.
+       * m4/regex.m4: Document the `AM_WITH_REGEX' macro as obsolete,
+       and state that it should be removed two years from now.
+       (AM_WITH_REGEX): Raise an m4-time warning of the "obsolete"
+       category when this macro is used.
+       * doc/automake.texi (Public Macros): Move description of
+       `AM_WITH_REGEX' from here ...
+       (Obsolete Macros): ... to here, and declare it as obsolete
+       and "to be removed in a future version".
+       * tests/regex-obsolete.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-11-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Improve and extend tests on man pages support.
+       * tests/man.test: Enable `errexit' shell flag, and related changes.
+       Make grepping of generated Makefile.in slightly stricter.
+       * tests/man3.test:  Add trailing `:' command.
+       * tests/man5.test: Prefer cat + here-doc over echo to append to
+       configure.in.
+       * tests/man2.test: Likewise, and add trailing `:' command.
+       * tests/man4.test: More thorough and consistent checking of make
+       error messages.  Place fake `help2man' program in a new `bin'
+       directory rather than in `.'.  Move the checks using the real
+       `help2man' program to ...
+       * tests/man6.test: ... this new test, and extend them.  This test
+       passes with GNU make and Solaris make, still fails with BSD make.
+       * tests/man7.test: New test, extracted from old man4.test, which
+       checks for a bug in maintainer-clean w.r.t. generated manpages.
+       * tests/man8.test: New test, extracted from old man4.test, which
+       checks for a bug in distcheck w.r.t. generated manpages.  Passes
+       with GNU make and Solaris make, still fails with BSD make.
+
+2010-11-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Minor improvements and extensions to various tests.
+       * tests/defun.test: Also run autoconf and grep the generated
+       configure to make sure that aclocal truly picks up all the
+       required macros.
+       * tests/compile_f_c_cxx.test: Prefer trailing `:' over trailing
+       `Exit 0'.  Do not create useless dummy source files.  Do not set
+       useless `$(foo_LDADD)' variable in `Makefile.am'.  Do not call
+       useless macro `AC_F77_LIBRARY_LDFLAGS' in `configure.in'.
+       * tests/compile_f90_c_cxx.test: Likewise.
+       * tests/suffix10.test: Slightly stricter grepping of make output.
+       * tests/compile.test: Add trailing `:' command.
+       * tests/defun2.test: Likewise.
+       * tests/vars3.test: Likewise.
+       * tests/vartar.test: Likewise.
+       * tests/vars.test: Likewise.  Also, extend test by checking
+       that the definition of `MY_FLAGS*' variables is preserved in
+       the generated `Makefile.in'.
+       * tests/stamph2.test: Prefer trailing `:' over trailing `Exit 0'.
+       Use proper m4 quoting in `configure.in'.
+
+2010-11-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests defs: improve messages for skipped tests.
+       * tests/defs: Give meaningful messages about the reasons of a
+       test skip; this is especially useful as this file is run without
+       verbose xtraces on.  Related reorderings in the code and new
+       comments.
+
+2010-11-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests defs: move static definitions in a new file `defs-static'.
+       The new file is meant to be idempotent w.r.t. multiple inclusions.
+       * tests/defs.in: Removed, its contents split among ...
+       * tests/defs-static.in: ... this new file ...
+       * tests/defs: ... and this new file, including the former.
+       * configure.ac (AC_CONFIG_FILES): Remove `tests/defs', add
+       `tests/defs-static'.
+       (AC_CONFIG_LINKS): Add `tests/defs'.
+       * tests/Makefile.am ($(parallel_tests)): Update.
+       ($(instspc_tests)): Likewise.
+       * tests/.gitignore: Update.
+
+       Tests defs: $testsbuilddir is now AC_SUBST'ed.
+       * tests/defs.in ($testsbuilddir): Substitute from @abs_builddir@.
+       Add sanity check on $testsbuilddir, similar to those on
+       $testsrcdir and $top_testsrcdir.
+
+       Tests defs: do not print message "Running test $0" anymore.
+       * tests/defs.in: Printing the message "=== Running test $0" at
+       the beginning of each tests made sense when Automake used the old
+       test-driver, which sent all the output directly to stdout/stderr.
+       Now that the parallel test-driver is used, which saves output of
+       each test in its corresponding log file, that old message is just
+       useless noise.
+
+       Tests defs: rename $curdir -> $testbuilddir
+       * tests/defs.in: Rename $curdir to $testbuildir, for clarity and
+       consistency with $testsrcdir and $top_testsrcdir.
+
+       Tests defs: prefer "$curdir" over "`pwd`".
+       * tests/defs.in: We already save the value of `pwd` in $curdir
+       early in the file, so there no need to recalculate it later, when
+       the current working directory is not changed.
+
+       Tests defs: use `$me' in more error messages.
+       * tests/defs.in: Also use `$me' in error messages referring to
+       missing `defs' or `defs.in', since that variable is now defined
+       before those checks.
+
+       Tests defs: do not use `Exit' where plain `exit' suffices.
+       * tests/defs.in: Use "exit 77" rather than "Exit 77" to skip the
+       test when required libtool/gettext macros are not found, since
+       such skips would take place before the exit trap is installed.
+
+       Tests defs: improve and extends comments.
+       * tests/defs.in: Improve and extends some comments, especially in
+       relation with the changes introduced by the previous reordering.
+
+       Tests defs: various reorderings.
+       * tests/defs.in: Reordered various snippets of code in a
+       clearer way.
+
+2010-11-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix bug in test `backcompat4.test' (stale autom4te cache).
+       * tests/backcompat4.test: Remove stale autom4te cache directory
+       before re-running aclocal and automake.  Also, since we are at
+       it, be more verbose in displaying contents of generated files,
+       to ease debuggability.
+       Reported by Ralf Wildenhues.
+
+2010-11-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix a bug in variable concatenation with `+='.
+       * lib/Automake/VarDef.pm (append): Since the content of the
+       "appended-to" variable is going to be unconditionally normalized
+       later, simply separate the appended value with a single whitespace
+       character, instead of trying to be uselessly smarter by using
+       escaped newlines.  This fixes a bug in which extra backslashes
+       where erroneously inserted in the variable's final value.
+       * tests/pluseq11.test: New test, exposing the bug.
+       * tests/Makefile.am (TESTS): Update.
+       Reported by Andy Wingo.
+
+2010-11-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Modernize, improve and/or tweak various test scripts.
+       * tests/stamph2.test: Improve m4 quoting in `configure.in', and
+       prefer trailing `:' over trailing `Exit 0'.
+       * tests/syntax.test: Escape literal dots in grep regexps.
+       * tests/copy.test: Enable `errexit' shell flag.  Extend test by
+       checking with `test' utility that the script `install-sh' is
+       copied, but not symlinked.
+       * tests/depdist.test: Move setting of `errexit' shell flag earlier
+       in the script (just after inclusion of ./defs).  Avoid obsoleted
+       constructs in generated `configure.in'.  Prefer to do our checks
+       by running configure and make over grepping Makefile.in.
+       * tests/target-cflags: Move setting of `errexit' shell flag
+       earlier in the script (just after inclusion of ./defs). Use the
+       `configure.in' stub created by `./defs', rather than writing it
+       from scratch.
+       * tests/target-clash: Do not uselessly run autoconf.
+       * tests/ctarget1.test: Renamed ...
+       * tests/cond-basic.test: ... to this.  Use the `configure.in' stub
+       created by `./defs', rather than writing it from scratch.
+       Move setting of `errexit' shell flag earlier in the script (just
+       after inclusion of ./defs).  Other minor cosmetic changes.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-11-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       New tests on obsoleted usages of automake/autoconf macros (such
+       as AC_INIT, AM_INIT_AUTOMAKE and AC_OUTPUT).
+       * tests/backcompat.test: New test script.
+       * tests/backcompat2.test: Likewise.
+       * tests/backcompat3.test: Likewise.
+       * tests/backcompat4.test: Likewise.
+       * tests/backcompat5.test: Likewise.
+       * tests/backcompat6.test: Likewise.
+       * tests/init.test: Extended and improved, esp. by trying more
+       combinations of calls to AC_INIT and AM_INIT_AUTOMAKE with few
+       arguments.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-11-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix bug in rules for creating vala vapi/header files.
+       * automake.in (lang_vala_finish_target): Add forgotten "fi" in an
+       if control structure in a generated make rules.  Bug introduced
+       by previous commit `v1.11-221-gd7c1679', and revealed by failure
+       of test `vala2.test'.
+
+2010-11-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix and document rules to not touch the tree with `make -n'.
+       * doc/automake.texi (Multiple Outputs): Document the problem of
+       modifications during dry-run execution, propose solution.
+       * NEWS: Update.
+       * automake.in (lang_vala_finish_target): Split recipe so the
+       stamp file is not removed with GNU `make -n'.
+       (lang_yacc_target_hook): Separate removal of parser output file
+       and header remaking.
+       * lib/am/lisp.am ($(am__ELCFILES)): Determine whether -n was
+       passed to make, take care not to remove any files in that case.
+       * lib/am/remake-hdr.am (%CONFIG_H%): Separate removal of
+       %STAMP% file from induced remaking of config header.
+       * tests/autohdrdry.test, tests/lispdry.test, tests/yaccdry.test:
+       New tests.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-11-05  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix potential bug in generated tests `instpc-*.test'.
+       This bug is due to the changes introduced by the recently-merged
+       "tests-init" branch.  In that branch, `tests/defs' didn't define
+       anymore `$srcdir', instead defining directly `$testsrcdir'; but
+       the generated tests were using `$srcdir', hence the bug.
+       Luckily, since the Automake parallel test driver automatically
+       exports `srcdir' to a proper value, that prevented the bug from
+       manifesting itself.
+       * tests/Makefile.am ($(instspc_tests)): In the generated test
+       scripts, use `$testsrcdir', not `$srcdir'.
+
+2010-11-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Overhauled and modularized tests in `instspc.test'.
+       The test `instspc.test' was way too big and fragile.  Its running
+       time was very long.  It also produced a log that was nearly
+       unreadable due to its length, making it very difficult to find
+       out the reason for failures.
+       Also, it was too much monolithic, with a single (maybe spurious)
+       failure in a corner case causing the whole test to fail (even if
+       everything worked as expected in the other 99% of cases).
+       The present change should solve these problems, by separating
+       `instspc.test' into many smaller, self-contained, auto-generated
+       tests.
+       * tests/instspc.test: Removed.
+       * tests/instspc-tests.sh: New script, fulfilling a double role:
+       1. it generates a Makefile.am snippet `tests/instspc-tests.am',
+       containing the definition of a list of new tests which will take
+       over the older `instspc.test', and
+       2. it is sourced by said generated tests with proper parameters
+       pre-set, to run the "meat" of the checks.
+       This apparent abuse is indeed required because the test generation
+       code and test execution code are inevitably intertwined.
+       * tests/Makefile.am ($(srcdir)/instspc-tests.am): Include this
+       snippet, which (among the other things) defines ...
+       (instspc_tests): ... this new macro, containing the list of the
+       newly generated `instspc*.test' tests, and ...
+       (instspc_xfail_tests): ... this new macro, containing the list
+       of the `instspc*.test' tests expected to fail.
+       ($(instspc_tests)): New rule, generates the `instspc*.test' tests.
+       ($(instspc_tests:.test=.log)): New rule, registers the dependency
+       of all `instspc*.test' tests on the `instspc-tests.sh' script.
+       (TESTS): Add `$(instspc_tests)', remove `instspc.test'.
+       (XFAIL_TESTS): Add `$(xfail_instspc_tests)'.
+       (EXTRA_DIST): Distribute instspc-tests.sh.
+       (MAINTAINERCLEANFILES): Added $(instspc_tests).
+       Other minor cosmetic changes.
+       * bootstrap: Generate instspc-tests.am.
+       * tests/.gitignore: Updated.
+
+2010-11-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Add FAQ entry for bug reporting instructions.
+       * doc/automake.texi (Reporting Bugs): New section.
+       (Introduction): Refer to it.
+
+2010-10-07  Peter Rosin  <peda@lysator.liu.se>
+
+       depcomp: add new one-pass depmode for MSVC 7 and later.
+       * lib/depcomp: Add new depmodes 'msvc7' and 'msvc7msys' which
+       make use of the -showIncludes option added in MSVC 7.
+       * m4/depend.m4 (_AM_DEPENDENCIES): Handle the new depmodes
+       similarly to 'msvisualcpp' and 'msvcmsys' as MSVC does not
+       support the -o option.
+
+2010-10-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Add support for newer python versions.
+       * m4/python.m4 (AM_PATH_PYTHON): Add python2.7 and python3.2 to
+       _AM_PYTHON_INTERPRETER_LIST.  Since we are at it, break a long
+       line and fix indentation.
+       * THANKS: Updated.
+       From a report by Thomas Klausner.
+
+       Add test for `AM_WITH_DMALLOC' macro.
+       * tests/dmalloc.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+       Fix nits and bugs in tests `help*.test'.
+       * tests/help4.test: Fix broken sed commands used to strip `-W...'
+       flags away from "$AUTOMAKE" and "$ACLOCAL".
+       * tests/help3.test: Likewise, and fix a botched comment.
+       * tests/help.test: Likewise.  Also, use "AUTOMAKE_fails ..."
+       instead of "$AUTOMAKE ... && Exit 1", for consistency and to
+       please maintainer-check.
+       * tests/help2.test: Likewise.
+
+2010-10-03  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Improve tests `help*.test' (also fixes maintcheck failures).
+       * tests/help.test: To run automake, use `$AUTOMAKE' with all `-W'
+       flags stripped away rather than hard-coded `automake-$APIVERSION',
+       to better honour user-overrides.  Similarly for aclocal.
+       * tests/help2.test: Likewise.
+       * tests/help3.test: Likewise.
+       * tests/help4.test: Likewise.
+
+2010-10-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       tests: fix ar-lib.test for echo that interprets backslashes.
+       * tests/ar-lib.test: Use printf instead of echo.  Avoid test -a.
+       More robust quoting.
+
+2010-10-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       maintainer-check coverage for variables before rules.
+       * Makefile.am (sc_ensure_testsuite_has_run): Suggest keeping
+       around the test directories.
+       (sc_tests_makefile_variable_order): New rule with a heuristic to
+       catch ordering violations.
+
+       Document and fix expansion of variables before rules.
+       * doc/automake.texi (General Operation): Document that variables
+       are expanded before rules.
+       * lib/am/check.am (am__check_post): Reword a bit so it does not
+       get matched as a rule.
+       Suggestion by Ben Pfaff.
+
+2010-10-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Coverage and minor fixes for variable typo detection.
+       * automake.in (check_typos): Remove `EXTRA_' prefix when
+       computing canonical name.
+       * tests/vartypo2.test, tests/vartypos.test: New tests.
+       * tests/Makefile.am (TESTS): Update.
+
+       Implement EXTRA_maude_DEPENDENCIES for programs and libraries.
+       * automake.in (handle_programs, handle_libraries)
+       (handle_ltlibraries): Mark EXTRA_*_DEPENDENCIES as recognized.
+       * doc/automake.texi (Linking, Program and Library Variables)
+       (LIBOBJS): Document EXTRA_*_DEPENDENCIES.
+       * lib/am/library.am (%LIBRARY%): Also depend on
+       $(EXTRA_%XLIBRARY%_DEPENDENCIES).
+       * lib/am/ltlibrary.am (%LTLIBRARY%): Also depend on
+       (%XLTLIBRARY%_DEPENDENCIES).
+       * lib/am/program.am (%PROGRAM%%EXEEXT%): Also depend on
+       $(EXTRA_%XPROGRAM%_DEPENDENCIES).
+       * tests/extradep.test, tests/extradep2.test: New tests.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+       Suggested by Eric Blake.
+
+       tests: avoid running into timing issues due to sanity change.
+       * tests/acloca10.test, tests/acloca18.test, tests/aclocal9.test:
+       Insert strategic sleep before aclocal reruns, to ensure files
+       are newer.
+       * tests/python11.test: Use --force for repeated autotools runs.
+       Reports from the NixOS Hydra build daemon via Ludovic Courtès.
+
+       Fix timestamp issues by ensuring configure takes at least a second.
+       * m4/sanity.m4 (AM_SANITY_CHECK): If we didn't sleep here,
+       start a sleep in the background and wait for it to finish
+       before creating config.status, hopefully fixing all spurious
+       testsuite failures involving botched time stamps.
+       * NEWS: Update.
+       Reports by Ludovic Courtès, Peter Breitenlohner, and others.
+
+2010-10-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Revert "parallel-tests: avoid command-line length limit issue."
+       This reverts commit 24e3b4ee2f8cb9f72dd94a05a893f3d4e88b7835,
+       because it re-opened the bug fixed by v1.11-10-g218e678.
+
+       2010-09-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       parallel-tests: avoid command-line length limit issue.
+       * automake.in (handle_tests): New argument $makefile, new
+       substitution %MAKEFILE%.
+       (generate_makefile): Adjust.
+       * lib/am/check.am [%?PARALLEL_TESTS%] (check-TESTS): Pass
+       sanitized TEST_LOGS value as makefile snippet on standard
+       input to $(MAKE), to avoid exceeding the command line limit on
+       w32 (MSYS).
+       * NEWS: Update.
+       Report by Bob Friesenhahn.
+
+2010-09-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Extend tests on `--help' and `--version' options.
+       * tests/help.test: Create a new empty directory and chdir into
+       it, rather than removing already present files.  Run the aclocal
+       and automake wrapper scripts directly, instead of relying on
+       $AUTOMAKE and $ACLOCAL.  Be sure to correctly match literal dots
+       in aclocal's and automake's stderr.  Add a trailing `:' command.
+       * tests/help2.test: New test, checking that options `--help' and
+       `--version' works in directories with broken `configure.in'.
+       * tests/help3.test: New test, checking that options `--help' and
+       `--version' take precedence on the other options.
+       * tests/help4.test: New test, checking that the first among the
+       `--help' and `--version' options to be specified on the command
+       line wins.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-09-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Testsuite: Use `$PATH_SEPARATOR', not `:', when extending PATH.
+       * tests/compile2.test: Do no uselessly (implicitly) repeat the
+       computation of PATH_SEPARATOR again.
+       * tests/instmany-mans.test: Use `$PATH_SEPARATOR', not `:', when
+       extending/redefining PATH.
+       * tests/instmany-python.test: Likewise.
+       * tests/instmany.test: Likewise.
+       * tests/man4.test: Likewise.
+       * tests/mkinst3.test: Likewise.
+       * tests/mmodely.test: Likewise.
+       * tests/multlib.test: Likewise.
+       * tests/txinfo30.test: Likewise.
+       * tests/README (Section "Writing test cases" subsection "Do"):
+       Updated.
+       * Makefile.am (sc_tests_PATH_SEPARATOR): New maintainer check.
+       (syntax_check_rules): Updated.
+
+       Testsuite: new variables `$PATH_SEPARATOR' and `$APIVERSION'.
+       * tests/defs.in ($APIVERSION):  New AC_SUBST'd variable.
+       ($ACLOCAL, $AUTOMAKE): Use it.
+       ($PATH_SEPARATOR):  New AC_SUBST'd variables.
+       ($PATH): Use it.
+
+2010-09-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Manual: be more agnostic w.r.t. version control system used.
+       * doc/automake.texi (Basics of Distribution): Also refer to `.svn'
+       directories as a type of probably-unwanted files that are copied
+       regardless when adding directories to EXTRA_DIST.
+       (The dist Hook): Show a dist-hook example which removes Subversion
+       `.svn' private directories from distdir, rather than CVS private
+       directories.
+       (missing and AM_MAINTAINER_MODE): Try to be more agnostic w.r.t.
+       the version control system used.
+
+       Manual: index refer to target "git-dist", not "cvs-dist".
+       * doc/automake.texi (General Operation): Index the non-standard
+       example about "git-dist" under the "git-dist" label, not under
+       the "cvs-dist" one.
+
+       Perl modules: remove references to "Automake CVS repository".
+       * lib/Automake/Channels.pm: Update comments to refer to "Automke's
+       git repository" rather than to "Automake's CVS repository".
+       * lib/Automake/Configure_ac.pm: Likewise.
+       * lib/Automake/FileUtils.pm: Likewise.
+       * lib/Automake/Struct.pm: Likewise.
+       * lib/Automake/XFile.pm: Likewise.
+       * lib/Automake/Version.pm (=head1 DESCRIPTION): Refer to "git
+       branches" rather than "CVS branches".
+
+       Remove obsolete .cvsignore files.
+       * .cvsignore, doc/.cvsignore, lib/.cvsignore, lib/am/.cvsignore,
+       lib/Automake/.cvsignore, lib/Automake/tests/.cvsignore,
+       m4/.cvsignore, tests/.cvsignore: Files deleted.  Even when using
+       savannah's CVS readonly mirror there's no way to commit back to
+       the real repository, so this files are not worth maintaining or
+       keeping around.
+
+2010-09-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * m4/dmalloc.m4: Bump serial number and copyright years.
+
+2010-09-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix broken link in `AM_WITH_DMALLOC' help screen.
+       * m4/dmalloc.m4 (AM_WITH_DMALLOC): Refer only to the dmalloc site
+       `http://www.dmalloc.com', not to the dmalloc tarball there (which
+       seems to have been removed, substituted by multiple release
+       tarballs now).
+
+2010-09-21  Peter Rosin  <peda@lysator.liu.se>
+
+       compile: implement library search to support MSVC static linking
+       * lib/compile (func_cl_wrapper): Implement library search and
+       -static option so that the user can select whether to prefer
+       dll import libraries or static libraries.  This enables MSVC to
+       link against dlls generated by libtool without requiring libtool
+       or workarounds such as -lfoo.dll etc.  Makes the tests/static.at
+       test case in libtool pass.
+       * tests/compile3.test: Don't trip up if there happens to exist
+       a "foo" library in the library search path.
+       * tests/compile6.test: New test, verifying the library search.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-09-17  Eric Blake  <eblake@redhat.com>
+
+       Avoid triple-space after period.
+       * automake.in (handle_single_transform): Avoid 3 spaces at
+       sentence end.
+       * ChangeLog.03: Likewise.
+       * lib/Automake/ChannelDefs.pm: Likewise.
+       * lib/Automake/Channels.pm (_print_message): Likewise.
+       * lib/Automake/Rule.pm (rule): Likewise.
+       * lib/Automake/Variable.pm (var): Likewise.
+       * lib/am/distdir.am: Likewise.
+       * tests/insthook.test: Likewise.
+
+2010-09-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Test automake-generated portions of configure help screen.
+       * tests/help-depend.test: New test.
+       * tests/help-depend2.test: Likewise.
+       * tests/help-dmalloc.test: Likewise.
+       * tests/help-init.test: Likewise.
+       * tests/help-lispdir.test: Likewise.
+       * tests/help-maintainer.test: Likewise.
+       * tests/help-multilib.test: Likewise.
+       * tests/help-regex.test: Likewise.
+       * tests/help-silent.test: Likewise.
+       * tests/help-upc.test: Likewise.
+       * tests/mmode.test: Remove tests on `configure --help' output,
+       they are superseded by tests in `help-maintainer.test'.
+       * tests/Makefile.am (TESTS): Update.
+
+2010-09-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       * tests/README: Don't put GCS mandated tools in $required.
+
+2010-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * HACKING: Hint at old commits with `git describe' output.
+
+2010-09-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Prefer `$(am__cd)' to plain `cd' in our Makefiles.
+       * Makefile.am (recheck, dist-hook, git-dist, path-check, fetch)
+       (release-stats): Use `$(am__cd)' rather than plain `cd'.
+       * tests/Makefile.am ($(srcdir)/parallel-tests.am): Likewise.
+
+2010-09-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix regression in test `colon4.test'.
+       * tests/colon4.test: Fix botched editing to `configure.in'
+       that made the test useless.  Since we are at it, improve
+       comments and make grepping of generated Makefile.in slightly
+       stricter.
+       Regression introduced by change "Modernize, improve and/or
+       extend tests `colon*.test" (Stefano Lattarini, 2010-08-08).
+
+2010-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Do not require "gzip" explicitly in tests.
+       The gzip utility is simply expected to be present on any decent
+       target system for Automake.  So it's pointless to put it in
+       $required.
+       * tests/install2.test ($required): Do not require "gzip".
+       * tests/lex3.test: Likewise.
+       * tests/pr9.test: Likewise.
+       From a suggestion by Ralf Wildenhues.
+
+2010-09-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Use AS_HELP_STRING in AM_SILENT_RULES.
+       * m4/silent.m4 (AM_SILENT_RULES): Use `AS_HELP_STRING' to format
+       help message regarding configure options `--enable-silent-rules'
+       and `--disable-silent-rules'.  Also throw in a couple of cosmetic
+       changes in the related `case' statement (indentation, balancing
+       of parentheses).
+       * THANKS: Update.
+       From a report by Jeff A. Daily.
+
+2010-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Make some `confh*.test' tests more "semantic" (plus tweakings).
+       * tests/confh.test: Run "autoconf", "configure" and "make check",
+       instead of munging/grepping the generated `Makefile.in'.
+       * tests/confh4.test: Relax the grepping of Makefile.in w.r.t.
+       white spaces.  Do not create useless dummy source file `foo.c'
+       and useless dummy header file `acconfig.h'.
+       (configure.in): Remove superfluous call to `AC_OUTPUT'.
+       * tests/confh6.test: Add trailing `:' command.
+       * tests/confh7.test: In comments, add reference to ...
+       * tests/confh8.test: ... this new test, "semantic" sister
+       of `confh7.test'.
+       * tests/Makefile.am (TESTS): Updated.
+       Prompted by a report from Ralf Wildenhues.
+
+2010-09-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Remove useless whitespace padding in XFAIL_TESTS definition.
+       * tests/Makefile.am (XFAIL_TESTS): Remove whitespace padding.
+
+2010-09-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       parallel-tests: avoid command-line length limit issue.
+       * automake.in (handle_tests): New argument $makefile, new
+       substitution %MAKEFILE%.
+       (generate_makefile): Adjust.
+       * lib/am/check.am [%?PARALLEL_TESTS%] (check-TESTS): Pass
+       sanitized TEST_LOGS value as makefile snippet on standard
+       input to $(MAKE), to avoid exceeding the command line limit on
+       w32 (MSYS).
+       * NEWS: Update.
+       Report by Bob Friesenhahn.
+
+       Posix 2008 requires make to set errexit.
+       * lib/am/check.am: Update comment.
+
+2010-09-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests defs: remove variable $testaclocaldir.
+       * tests/defs.in ($testaclocaldir): Removed.
+       * tests/aclocal.test: Use `$top_testsrcdir/m4' directly, not
+       `$testaclocaldir'.
+
+       Tests defs: $srcdir and $top_srcdir renaming.
+       * tests/defs.in ($srcdir): Remove, define $testsrcdir directly.
+       * tests/Makefile.am ($(parallel_tests)): Generation of derived
+       tests updated.
+
+       Tests defs: new variable $top_testsrcdir.
+       * tests/defs.in ($top_testsrcdir): Define unconditionally
+       to @abs_top_srcdir@.  Use it throughout.
+       * tests/ar-lib.test: Use `$top_testsrcdir' instead of
+       `$testsrcdir/..'.
+       * tests/auxdir.test: Likewise.
+       * tests/compile.test: Likewise.
+       * tests/compile2.test: Likewise.
+       * tests/compile3.test: Likewise.
+       * tests/compile5.test: Likewise.
+       * tests/mdate6.test: Likewise.
+       * tests/mkinst3.test: Likewise.
+       * tests/multlib.test: Likewise.
+       * tests/txinfo22.test: Likewise.
+
+       Tests defs: $srcdir is unconditionally substituted.
+       * tests/defs.in ($srcdir): Define unconditionally to @abs_srcdir@.
+       Remove code for $srcdir normalization, which is now useless.
+
+2010-09-02  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tests defs: make spacing more consistent.
+       * tests/defs.in: Make spacing more consistent in indentation.
+       Especially, indent using only spaces, not tabs.  Also, move
+       a comment to a better position.
+
+       Improve code for requiring libtool and gettext in tests.
+       * tests/defs.in: Stricter (and more correct) detection of wheter
+       libtool, libtoolize and/or gettext are in $required.
+
+
+2010-08-27  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix bug in test missing6.test.
+       * tests/missing6.test: Fix the hack used to edit `configure.in',
+       to avoid producing a configure script that breaks with shells
+       that do not support $LINENO.  Also throw in a couple of cosmetic
+       changes.
+
+2010-09-02  Peter Rosin  <peda@lysator.liu.se>
+
+       Make ar-lib support backslashed files in archives.
+       * lib/ar-lib: If an archive member contains a backslash, make sure
+       it is escaped when the archive member is extracted.
+       * tests/ar-lib.test: Test the above.
+
+2010-08-31  Peter Rosin  <peda@lysator.liu.se>
+
+       Do file name conversion for object files in the compile wrapper.
+       * lib/compile (func_cl_wrapper): Do file name conversion for object
+       files (i.e. extensions .obj, .OBJ, .o and .O) if needed.
+       * tests/compile4.test: Test the above.
+
+2010-08-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Speed up removal of auxiliary linker output files for ltlibraries.
+       * lib/am/ltlib.am (clean-%DIR%LTLIBRARIES): Rewrite using just
+       one `rm' invocation.
+       Report by Bob Friesenhahn.
+
+       Improve robustness of mdate-sh script.
+       * lib/mdate-sh: Sanitize zsh behavior on startup, to ensure
+       $ls_command is word-split properly upon invocation.
+       (error): New function.
+       (main): Use it.  Improve error checking to avoid endless loop
+       in case $ls_command gave bogus output.  Fix eval quotation.
+       * tests/mdate6.test: New test, to expose eval quotation error.
+       * tests/Makefile.am: Update.
+
+2010-08-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix potential regressions in depcomp{3,5}.test.
+       * tests/depcomp3.test: Do not uselessly escape the character `$'
+       in makefile rules, when it's used to expand a make macro.
+       * tests/depcomp5.test: Likewise.
+
+2010-08-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Docs: clarify how to avoid automatic dependencies tracking.
+       * doc/automake.texi (Automatic dependency tracking): Mention that
+       automatic dependencies tracking is enabled by default, but that
+       the package developer can disable it altogether.  Add a reference
+       to the proper section for a more in-depth explanation.
+
+       Fix typo in manual (`Makefile.in' instead of `Makefile.am').
+       * doc/automake.texi (Automatic dependency tracking): Fix typo.
+
+2010-08-16  Bruno Haible  <bruno@clisp.org>
+
+       Don't hide the table of contents.
+       * doc/automake.texi: Move the table of contents to the beginning.
+
+2010-08-16  Peter Rosin  <peda@lysator.liu.se>
+
+       Optimize compile script on MSYS.
+       * lib/compile (func_file_conv): Add new argument 'lazy' which
+       takes an optional list of conversion types where the requested
+       conversion isn't needed.
+       (func_cl_wrapper): Take advantage of the above for cases where
+       MSYS is doing the conversion for us.
+       Suggested by Ralf Wildenhues.
+
+2010-08-16  Peter Rosin  <peda@lysator.liu.se>
+
+       Support more C++ file extensions for MSVC in the compile script.
+       * lib/compile (func_cl_wrapper): MSVC only recognizes the .cpp
+       file extension as C++, unless it's given a hint. So hint about
+       .cc, .CC, .cxx, .CXX, c++ and C++. Also do path conversion on
+       .c, .cpp, .CPP, .lib, .LIB and .Lib files.
+       * tests/compile3.test: Test the C++ hinting.
+
+2010-08-12  Peter Rosin  <peda@lysator.liu.se>
+
+       Enable the use of "link -lib" as the wrapped archiver.
+       * lib/ar-lib: Enable the use of "link -lib" as the wrapped
+       archiver, as well as allowing some other options to be passed
+       through to the wrapped archiver.
+       * tests/ar-lib.test: Test the above.
+
+2010-08-10  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tweak and/or extend some `acloca*.test' tests.
+       * tests/aclocal8.test:  Ensure verbose printing of captured
+       output.
+       * tests/aclocal.test: Likewise.  Also, add trailing `:'
+       command.
+       * tests/acloca19.test: Likewise.
+       * tests/aclocal5.test: Add trailing `:' command, and prefer
+       `$me' over hard-coded test name.
+       * tests/aclocal6.test: Likewise.
+       * tests/aclocal18.test: Add trailing `:' command, and make
+       some grepping slightly stricter.
+       * tests/acloca14.test: Likewise.  Also, prefer `diff' over
+       `cmp', and add some "cosmetic" blank lines.
+
+2010-08-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tweak and extend tests `pr[!0-9]*.test'.
+       * tests/primary3.test: Add trailing `:' command.
+       * tests/primary.test: Make grepping of Automake's stderr stricter.
+       Also, add trailing `:' command, and cosmetic changes in spacing.
+       * tests/primary2.test: Likewise.
+       * tests/prefix.test: Enable `errexit' shell flags, and related
+       changes.  Add a trailing `:' command.
+       * tests/proginst.test: Likewise.
+
+       Modernize, improve and extend tests for PR (`pr[0-9]*.test').
+       * tests/pr2.test: Add trailing `:' command.
+       * tests/pr229.test: Likewise.
+       * tests/pr401.test: Likewise.
+       * tests/pr401b.test: Likewise.
+       * tests/pr401c.test: Likewise.
+       * tests/pr300-prog.test: Likewise, plus cosmetic changes in
+       spacing.
+       * tests/pr300-lib.test: Likewise.
+       * tests/pr300-ltlib.test: Likewise, and ensure verbose printing
+       of captured make stdout.
+       * tests/pr211.test: Add trailing `:' command.  Also, use the
+       `configure.in' stub created by ./defs, rather than writing it
+       from scratch.
+       * tests/pr204.test: Likewise, plus cosmetic spacing changes.
+       * tests/pr287.test: Likewise, and move setting of `errexit' shell
+       flag earlier in the script (just after inclusion of ./defs).
+       * tests/pr220.test: Make grepping of Automake's stderr stricter.
+       Also, add trailing `:' command, and cosmetic changes in spacing.
+       * tests/pr224.test: Move setting of `errexit' shell flag earlier
+       in the script (just after inclusion of ./defs).  Do not export
+       `CC=gcc' to configure explicitly (it's already exported globally
+       in ./defs, since we have "gcc" in $required).  Use the stub for
+       `configure.in' created by ./defs, rather than writing it from
+       scratch.  Do not create dummy files required by "gnu" mode (e.g.
+       README, NEWS), since we run automake in foreign mode anyway.
+       * tests/pr72.test: Enable `errexit' shell flags, and related
+       changes.  Extend existing checks a bit.
+       * tests/pr9.test: Likewise.  Also, avoid obsolescent constructs in
+       the generated `configure.in', and extend existing checks over the
+       generated tarball a bit.
+       * tests/pr87.test: Enable `errexit' shell flags, and related
+       changes.  Add a trailing `:' command.  Also, do not create dummy
+       files required by "gnu" mode (e.g. README, NEWS), since we run
+       automake in foreign mode anyway.
+       * tests/pr243.test: Avoid obsolescent constructs in the generated
+       `configure.in'.  Enable the `errexit' shell flag, and related
+       changes.  Cosmetic changes to spacing, add trailing `:' command,
+       and add a "FIXME" comment.
+       * tests/pr266.test: Likewise, and add explicit command line switch
+       `--enable-dependency-tracking' to the ./configure call.
+       * tests/pr279.test: Avoid obsolescent constructs in the generated
+       `configure.in'; also, use the `configure.in' stub created by
+       ./defs, rather than writing it from scratch.  Enable `errexit'
+       shell flag, and related changes.  Add trailing `:' command.
+       * tests/pr279-2.test: Likewise, and make grepping of Makefile.in
+       stricter.
+       * tests/pr307.test: Move setting of `errexit' shell flag earlier
+       in the script (just after inclusion of ./defs).  Escape literal
+       dots in grep regular expressions.  Also, add a trailing `:'
+       command, and cosmetic changes to spacing.
+
+       Tests for PR: add excerpts from original bug report, for clarity.
+       * tests/pr2.test: Ditto.
+       * tests/pr9.test: Likewise.
+       * tests/pr72.test: Likewise.
+       * tests/pr87.test: Likewise.
+       * tests/pr211.test: Likewise.
+       * tests/pr220.test: Likewise.
+       * tests/pr224.test: Likewise.
+       * tests/pr229.test: Likewise.
+       * tests/pr243.test: Likewise.
+       * tests/pr266.test: Likewise.
+       * tests/pr279.test: Likewise, and tell to keep it in sync
+       with its sister test.
+       * tests/pr279-2.test: Likewise.
+
+2010-08-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tweak, extend and improve tests `cond[a-z]*.test'.
+       * tests/condd.test: Add trailing `:' command.  Typofix in
+       comment.
+       * tests/condhook.test: Make sure target `install-data-hook' is
+       not called by `make install', but that data files are installed.
+       Use proper m4 quoting in configure.in. Add trailing `:' command.
+       * tests/condhook2.test: New test, sister test of condhook, with
+       inverted semantic.
+       * tests/condinc2.test: Use proper m4 quoting in configure.in.
+       Prefer trailing `:' command over trailing `Exit 0'.
+       * tests/condman2.test: Enable errexit shell flag, and related
+       changes.  Add trailing `:' command.
+       * tests/condman.test: Likewise.  Also, do not create useless
+       dummy manpages, and use proper m4 quoting in configure.in.
+       * tests/condman3.test: New test, similar to condman.test, but
+       it also runs ./configure and "make install", and check the
+       installed files.
+       * tests/Makefile.am (TESTS): Updated.
+
+       Modernize, improve and/or extend tests `colon*.test.
+       * tests/colon.test: Rely on the `configure.in' stub created by
+       `./defs', rather than writing one from scratch.  Do not create
+       a useless dummy file.  Add trailing `:' command.
+       * tests/colon4.test: Enable the `errexit' shell flag, and
+       related changes.  Rely on the `configure.in' stub created by
+       `./defs', rather than writing one from scratch.
+       * tests/colon7.test: Enable `errexit' shell flag, and related
+       changes.  Improve the generated `configure.in' file.  Add
+       trailing `:' command.
+       * tests/colon2.test: Likewise.  Also, add some new checks.
+       * tests/colon5.test: Improve the generated `configure.in' file.
+       Add new, much deeper checks.  Add trailing `:' command.
+       * tests/colon6.test: Likewise.
+       * tests/colon3.test: Add trailing `:' command.  Remove useless
+       comments and echos.  Improve the generated `configure.in' file.
+       make some grepping tests stricter.  Add a "FIXME" comments about
+       planned improvements.
+
+       Improve and extend tests `asm*.test'.
+       * tests/asm.test: Use configure.in stub generated by ./defs,
+       and avoid obsoleted autoconf constructs.  Make grepping of
+       Automake stderr stricter.  Do not create useless source file.
+       Improve verbose messages.  Minor cosmetic changes.  Tell to
+       keep it in sync with other sister tests asm*.test.
+       * tests/asm2.test: Likewise.
+       * tests/asm3.test: Likewise.
+
+       Modernize, improve and/or extend test scripts `conf*.test'.
+       * tests/confh5.test: Cosmetic changes.
+       * tests/conff.test: Likewise.
+       * tests/confdeps.test: Likewise.
+       * tests/conflnk.test: Likewise.
+       * tests/conflnk2.test: Likewise.
+       * tests/confsub.test: Likewise.
+       * tests/confvar.test: Likewise, and make grepping of Makefile.in
+       stricter.
+       * tests/confvar2.test: Likewise.
+       * tests/conflnk3.test: Cosmetic changes.  Re-enable a temporarily
+       disabled test (which didn't work with autoconf <= 2.59, but now we
+       are requiring autoconf 2.62, so...)
+       * tests/conflnk4.test: Cosmetic changes, and extend existing tests
+       accordingly to "TODO" comments.
+       * tests/conff2.test: Make grepping of Automake's stderr stricter.
+       Add some comments explaining why we don't use the `configure.in'
+       stub preset be ./defs.
+       * tests/confh.test: Use the `configure.in' stub created by ./defs,
+       rather than writing one from scratch, and do not call AC_OUTPUT.
+       Enable `errexit' shell flag, and related changes.  Prefer diff over
+       cmp to compare text files. Prefer perl over sed to fetch the value
+       of $(DIST_COMMON) from Makefile.in.  Make grepping of the contents
+       of $(DIST_COMMON) stricter.
+       * tests/confh4.test: Use the `configure.in' stub created by ./defs,
+       rather than writing one from scratch.  Make grepping of Makefile.in
+       stricter.
+       * tests/confh5.test: Make grepping of `config.h' stricter.  Add a
+       comment.
+       * tests/configure.test: Avoid obsolescent constructs in generated
+       `configure.ac'.  Do not write `configure.in' two times.  Escape
+       literal dots in grep regular expressions.
+       * tests/confincl.test:  Enable `errexit' shell flag, and related
+       changes.  Prefer fgrep over grep.  Other cosmetic changes.
+       * tests/config.test: Renamed to ...
+       * tests/confh6.test: ... this.  Fix m4 quoting in `configure.in',
+       and make grepping of `config.h' and `config.h.in' stricter.
+       * tests/conf2.test: Renamed ...
+       * tests/confh7.test: ... to this.  Use the `configure.in' stub
+       created by ./defs, rather than writing one from scratch.  Try to
+       run the checks both with and without AC_PROG_CC and AC_OUTPUT in
+       `configure.in'.
+       * tests/Makefile.am (TESTS): Updated.
+
+       Minor improvements and fixes in tests `depcomp*.test'.
+       * tests/depcomp.test: Do not create useless dummy source files.
+       Add a trailing `:' command.
+       * tests/depcomp2.test: Use `unset' on the CFLAGS variable to ensure
+       it's not in in the environment, rather than exporting it with an
+       empty value.  Do not pass CC=gcc to configure, as that's already
+       done in ./defs since we have gcc in $required.  Ensure verbose
+       printing of captured stderr, and normalize its checking.  Add a
+       trailing `:' command.
+       * tests/depcomp3.test: Quote literal dots and dollar characters in
+       grep regexps.  Always use `: >' rather than `touch' to create empty
+       files.  Explicitly declare phony targets as such in the created
+       Makefile.am.  Add a trailing `:' command.
+       * tests/depcomp4.test: Quote literal dots and dollar characters in
+       grep regexp.  Explicitly declare phony targets as such in the
+       created Makefile.am.  Ensure verbose printing of captured makes'
+       stoud/stderr.  Add a trailing `:' command.
+       * tests/depcomp5.test: Move setting of `errexit' shell flag earlier
+       in the script (just after inclusion of ./defs).  Quote literal dots
+       and dollar characters in grep regexps.  Explicitly declare phony
+       targets as such in the created Makefile.am.  Add a trailing `:'
+       command.
+       * tests/depcomp6.test: Consistently use m4 quoting in the generated
+       configure.in.  Cosmetic fixes to spacing.  Make the "dummy" `if'
+       statement required by OpenBSD's sh `set -e' more robust, and add
+       explanatory comments to it.
+       * tests/depcomp7.test: Likewise, and add  a trailing `:' command.
+
+       Separate failing part of test `all.test'.
+       * tests/all.test: Keep only (x)failing part of the test.  Working
+       checks moved out to ...
+       * tests/all2.test: ... this new test.
+       * tests/Makefile.am (TESTS): Updated.
+
+       Modernize, improve and extend tests `subobj*.test'.
+       * tests/subobjname.test:  Add trailing `:' command.
+       * tests/subobj.test: Make grepping of `Makefile.in' stricter.
+       Escape literal dots in grep regexps.
+       * tests/subobj2.test:  Add trailing `:' command.  Do not use the
+       unportable fgrep option `-e'.
+       * tests/subobj3.test: Add trailing `:' command.
+       (configure.in): Use proper m4 quoting, and avoid obsolescent
+       constructs.
+       * tests/subobj8.test: Likewise.  Also, enable `errexit' shell
+       flag, with related changes
+       * tests/subobj4.test: Likewise.  Also, make grepping of
+       `Makefile.in' stricter.
+       * tests/subobj5.test: Add trailing `:' command.  Move setting of
+       `errexit' shell flag earlier in the script (just after inclusion
+       of ./defs).
+       (configure.in): Use the stub created by `./defs', rather than
+       writing it from scratch, and avoid obsolescent constructs.
+       * tests/subobj6.test: Add trailing `:' command.  Move setting of
+       `errexit' shell flag earlier in the script (just after inclusion
+       of ./defs).  Do not create useless dummy ac-init file `f'.
+       * tests/subobj7.test: Do not create useless dummy ac-init file
+       `f'.
+       (configure.in): Use the stub created by `./defs', rather than
+       writing it from scratch, and avoid obsolescent constructs.
+       * tests/subobj9.test: Move setting of `errexit' shell flag earlier
+       in the script (just after inclusion of ./defs).  Fail the test if
+       `make distcheck' fails.  Ensure verbose printing of captured make
+       stdout.  Avoid useless fork by doing simple grep instead of using
+       test -n "`COMMAND | grep ...`".
+       (configure.in): Normalize the call to AC_INIT w.r.t. other tests.
+       (Makefile.am): Explicitly mark target "print" as phony.
+       * tests/subobj10.test: Removed duplicated call to `set -e'.  Add
+       trailing `:' command.
+       (configure.in): Normalize the call to AC_INIT w.r.t. other tests.
+
+       Remove a couple of obsoleted tests.
+       * tests/fpinstall.test: Removed.
+       * tests/fpinst2.test: Likewise.
+       * tests/Makefile.am (TESTS): Updated.
+
+       Bootstrap: updated HACKING entry.
+       * HACKING ("Working with git"): Explain how to override the
+       autoconf and autom4te programs used by the bootstrap process.
+
+       Bootstrap: fixlet.
+       * bootstrap: Do not remove `lib/Automake/Config.pm' anymore,
+       since we don't generate it.  Correctly quote arguments of
+       `eval' builtin.  Fixed a botched error message.  Removed an
+       extra blank line.
+
+       Bootstrap: don't search perl in $PATH.
+       * bootstrap: Do not explicitly search perl in $PATH anymore.
+       ($PATH_SEPARATOR): Removed, it's no more needed.
+
+       Bootstrap: let the user choose which autoconf to use.
+       * bootstrap ($AUTOCONF): New variable, from the environment.
+       ($AUTOM4TE): Likewise, for clarity.
+       Use "$AUTOCONF" instead of calling "autoconf" directly.
+
+       Minor improvements to tests ar*.test.
+       * tests/ar.test: Add trailing `:' command.
+       * tests/ar2.test: Likewise, and make grepping of generated
+       Makefile.in stricter.
+
+2010-08-06  Peter Rosin  <peda@lysator.liu.se>
+
+       Add new auxiliary 'ar-lib' script, wrapping Microsoft lib.
+       * lib/ar-lib: New auxiliary script.
+       * lib/Makefile.am: Add above.
+       * tests/ar-lib.test: New test.
+       * tests/Makefile.am: Add above.
+       * automake.in (@common_files): Distribute the 'ar-lib' script.
+       * doc/automake.texi (Auxiliary Programs): Mention the new
+       'ar-lib' script.
+       (Optional): Mention 'ar-lib' in AC_CONFIG_AUX_DIR.
+       * NEWS: Update.
+
+2010-08-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix shell pattern negation in compile script.
+       * lib/compile (func_file_conv): Use `!' not `^' for pattern
+       negation.
+
+2010-08-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix maintainer-check failure.
+       * tests/cond5.test: Quote sleep argument, this isn't about
+       time stamp differences.
+
+       Sync auxiliary files from upstream.
+       * lib/config.guess, lib/config.sub, lib/texinfo.tex:
+       Sync from upstream.
+
+2010-08-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Work around a nasty bug (segfault) of Solaris make.
+       * lib/am/check.am (recheck, recheck-html): Trim trailing spaces
+       from $list, to avoid triggering a nasty bug (potential segfault)
+       on Solaris make.
+
+2010-08-06  Peter Rosin  <peda@lysator.liu.se>
+
+       Make cond5.test more robust on MSYS.
+       * tests/cond5.test: Add delay before the first kill attempt to
+       cater for problems with MSYS bash.
+
+2010-08-01  Peter Rosin  <peda@lysator.liu.se>
+
+       Wrap some MSVC options in the compile script.
+       * lib/compile: MSVC supports naming the output file, the option
+       is just not called -o, so transform -o into the appropriate form
+       for MSVC. Also wrap some other options while at it (-L, -l, -Wl,
+       -Xlinker and -I) and convert file names to windows form where
+       needed for those options to make MSVC more usable in an
+       autotooled environment.
+       * doc/automake.texi (Auxiliary Programs): Document the above
+       extension of the compile script.
+       * NEWS: Updated.
+       * tests/defs.in: New required entry 'cl'.
+       * tests/compile3.test: New test.
+       * tests/compile4.test: New test.
+       * tests/compile5.test: New test.
+       * tests/Makefile.am: Update.
+
+2010-07-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Add example git work flow; discuss merge --log in HACKING.
+       * HACKING: Update.
+       Suggestion by Stefano Lattarini.
+
+       Add more hints for debugging make rules.
+       * doc/automake.texi (Debugging Make Rules): Show command to find
+       out expanded values of variables; point to makefile debugger.
+       * THANKS: Update.
+       Prompted by suggestion from Ludovic Courtès and Andy Wingo.
+
+2010-07-27  Patrick Welche  <prlw1@cam.ac.uk>  (tiny change)
+
+       Fix typo in the manual.
+       * doc/automake.texi (Scripts): Fix typo.
+
+2010-07-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Document current policy for development with git.
+       * HACKING (Working with git): Overhaul.
+       Prompted by suggestion from Stefano Lattarini.
+
+       Fix AM_COND_IF for gone-invalid condition shell expression.
+       * m4/cond-if.m4 (AM_COND_IF): test contents of $COND_TRUE
+       variable, rather than re-evaluating the shell expression for
+       the condition.
+       * tests/cond40.test: Extend test.
+       * NEWS: Update.
+
+       Avoid syntax error if IF-TRUE part of AM_COND_IF expands empty.
+       * m4/cond-if.m4 (AM_COND_IF): Ensure IF-TRUE part is never empty
+       to avoid shell syntax error if the m4 expansion is empty.
+       * tests/cond40.test: Enhance test.
+
+       Coverage: bogus option to AM_INIT_AUTOMAKE.
+       * tests/init2.test: New test.
+       * tests/Makefile.am: Update.
+
+2010-07-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Modernize and improve test scripts `subdir*.test'.
+       * tests/subdir.test: Enable `errexit' shell flag, and related
+       changes.  Use the `configure.in' stub created by `./defs',
+       rather than writing one from scratch.
+       * tests/subdir2.test: Likewise.
+       * tests/subdir4.test: Likewise.
+       * tests/subdir3.test: Enable `errexit' shell flag, and related
+       changes.  Do not create useless dummy source files.
+       * tests/subdir5.test: Make grepping of Makefile.in (in topdir
+       and in subdirs) stricter.  Some minor changes to keep it more
+       in sync with the related test `subdir8.test'.
+       * tests/subdir8.test: Likewise (but with the related test being
+       `subdir5.test' here).
+       * tests/subdir6.test: Cosmetic change in spacing.
+       * tests/subdir9.test: Define and use new variable `$distdir'.  Add
+       trailing `:' command.
+       * tests/subdir10.test: Cosmetic consistency-related change.
+       * tests/subdirbuiltsources.test: Cosmetic changes in spacings.
+       (configure.in): Use stub created by `./defs', rather than writing
+       it from scratch.  Do not use obsoleted and/or deprecated forms of
+       autoconf/automake macros.
+
+       Modernize and improve test scripts `dist*.test'.
+       * tests/distcleancheck.test: Do not add useless `-e' option to
+       a $MAKE call.  Extend test by grepping stderr of make.
+       * tests/distcom2.test: Do not run the same test script on the
+       Makefile.in twice, but save its output in an intermediate file
+       instead.  Make grepping of DIST_COMMON definition stricter.
+       Display the content of more files, to ease debugging.  Add a
+       trailing `:' command.  Improved heading comments w.r.t. sister
+       test(s).
+       * tests/distcom6.test: Likewise, and avoid to uselessly run
+       autoconf.
+       * tests/distcom3.test: Ensure verbose printing of captured stdout
+       and stderr.  Make grepping of captured stderr stricter.  Also,
+       add trailing `:' command.
+       * tests/distcom4.test: Declare the target `test' in the generated
+       Makefile.am as `.PHONY'.  Display content of more files, to ease
+       debugging.  Add trailing `:' command.
+       * tests/distcom5.test: Likewise.  Also, factor out common sed
+       script in subroutine `extract_distcommon'.
+       * tests/distcom7.test: Prefer cat + here-doc over echo to write
+       test Makefile.am files.  Add a trailing `:' command.
+       * tests/distname.test: Prefer `gzip -d' over `gunzip'.  Move the
+       call to `set -e' earlier.  Be stricter and more verbose in the
+       checking of the generated tarball.
+       (configure.in): Use the stub provided by ./defs, instead of
+       writing it from scratch.  Avoid obsoleted constructs.  Remove
+       useless call to `AM_PROG_CC_C_O'.
+       * tests/distdir.test: Various minor improvements/normalizations.
+       * tests/distlinks.test: Likewise.
+
+2010-07-18  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Improve and extend test cond5.test.
+       * tests/cond5.test: Do not blindly sleep 60 seconds before polling
+       the background automake process, but poll it every 10 seconds for
+       at most 30 times (this makes the test both faster on good machines,
+       and more resilient to spurious timeout-due failures when in low
+       priority or on heavily-loaded systems).
+       Check also that automake writes the expected error messages on the
+       standard error.
+       Enable `errexit' flag, and related changes.
+       Rely on the `configure.in' stub created by `./defs', rather than
+       writing one from scratch.
+
+2010-06-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Update program --help output to match current GCS.
+       * configure.ac: Set and substitute PACKAGE_URL if AC_PACKAGE_URL
+       is not defined, for compatibility to Autoconf < 2.64.
+       * Makefile.am (do_subst): Substitute PACKAGE_BUGREPORT and
+       PACKAGE_URL.
+       (sc_diff_automake_in_automake): Update number of diff lines for
+       additional substitutions.
+       * aclocal.in (usage): Use PACKAGE_BUGREPORT.  Point to Automake
+       home page and GNU general help page.
+       * automake.in (usage): Likewise.
+       * doc/automake.texi: New flag PACKAGE_BUGREPORT, to factor email
+       address.
+       (Introduction, Creating amhello, amhello Explained, Options):
+       Use it throughout.
+       * lib/Automake/Makefile.am (do_subst): Substitute
+       PACKAGE_BUGREPORT.
+       * lib/Automake/Config.in ($PACKAGE_BUGREPORT): New global.
+       * lib/Automake/ChannelDefs.pm: Use it for footer of fatal
+       messages.
+
+       Clean up @var handling in the manual.
+       * doc/automake.texi: Throughout the manual, lower-case @var
+       names, replace a few one-character names.
+
+2010-06-26  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix typo-related bug in test script silent5.test.
+       * tests/silent5.test: Use $EGREP, not $GREP (which is not even
+       defined).
+
+       Tests: remove useless repetitions of `foreign' automake option.
+       * tests/multlib.test (configure.in): Remove useless use of
+       `foreign' option in AM_INIT_AUTOMAKE (the `--foreign' option is
+       already in $AUTOMAKE by default, so no point in repeating it).
+       * tests/subobj10.test: Likewise.
+       * tests/subobj9.test: Likewise.
+       * tests/lex3.test (Makefile.am): Similarly, remove useless use
+       of `foreign' option in AUTOMAKE_OPTIONS.
+       * tests/lex5.test: Likewise.
+       * tests/pr279.test: Likewise.
+       * tests/pr279-2.test: Likewise.
+       * tests/specflg3.test: Likewise.
+       * tests/target-cflags.test: Likewise.
+
+       Drop useless requirement "gzip" in lex5.test.
+       * tests/lex5.test ($required): Do not list "gzip", as it's
+       never used.
+
+2010-06-24  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix bugs in test script silent5.test.
+       * tests/silent5.test: Fixed a nasty bug (due to the use of grep
+       instead of egrep) that could have led to false negatives.
+
+2010-06-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Add a test checking that distributed broken symlinks cause
+       `make dist' to fail.
+       * tests/distlinksbrk.test: New test.
+       * tests/Makefile.am (TESTS): Updated.
+
+2010-06-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix minor testsuite issues, update docs, for Yacc/Lex changes.
+       * doc/automake.texi (Yacc and Lex): Mention AM_YFLAGS, YFLAGS
+       and AM_LFLAGS, LFLAGS in the order in which they now appear in
+       the rules.
+       * NEWS: Update.
+       * tests/lflags.test, tests/lflags2.test, tests/yflags.test,
+       tests/yflags2.test: Prefer `make -e' over `make VAR=VAL', to
+       please maintainer-check.  Ensure generated C files contain a
+       declaration, to please compilers.
+
+2010-06-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix bugs in Automake Yacc/Lex support w.r.t. $(AM_FLAGS) and
+       $(FLAGS) precedence.
+       * automake.in: Fix registration of languages "Lex", "Lex (C++)",
+       "Yacc" and "Yacc (C++)", so that $(LFLAGS) has precedence over
+       $(AM_LFLAGS) and $(YFLAGS) has precedence over $(AM_YFLAGS).
+       * tests/Makefile.am (XFAIL_TESTS): Updated accordingly.
+       * NEWS: Updated.
+
+       New tests, exposing bugs in Automake Yacc/Lex support w.r.t.
+       $(AM_FLAGS) and $(FLAGS) precedence.
+       * tests/lflags.test: New test, check that user $(LFLAGS) takes
+       precedence over automake (AM_LFLAGS) and (foo_LFLAGS).  Still
+       xfailing.
+       * tests/lflags2.test: Likewise.
+       * tests/yflags.test: New test, check that user $(YFLAGS) takes
+       precedence over automake (AM_YFLAGS) and (foo_YFLAGS).  Still
+       xfailing.
+       * tests/yflags2.test: Likewise.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Extended accordingly.
+
+2010-06-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Modernize, improve and extend tests `suffix*.test'.
+       * tests/suffix3.test: Enable `errexit' shell flag, and related
+       changes.
+       * tests/suffix4.test: Likewise.
+       * tests/suffix6.test: Likewise, and do not create a useless dummy
+       source file.
+       * tests/suffix7.test: Likewise.
+       * tests/suffix5.test: Enable `errexit' shell flag, and related
+       changes.  Make grepping of Makefile.in slightly stricter.
+       * tests/suffix.test: Enable `errexit' shell flag, and related
+       changes.  Also, do not redirect grep output to /dev/null, as this
+       might unmotivatedly hide useful information.
+       * tests/suffix2.test: Move setting of `errexit' shell flag earlier
+       in the script (just after inclusion of ./defs).  Use a more
+       idiomatic way to count text occurrences in Makefile.in with
+       grep.  Do not create useless dummy source files.
+       * tests/suffix10.test: Ensure verbose printing of captured make
+       stdout.  Minor cosmetic changes.
+       * tests/suffix8.test: Likewise.  Also, drop useless call to the
+       env(1) utility, and make grepping of make output stricter by using
+       $FGREP rather than plain grep.
+       * tests/suffix11.test: Likewise.
+       * tests/suffix12.test: Likewise.
+       * tests/suffix9.test: Prefer cat + here-doc over echo to append to
+       the `configure.in' stub.  Cosmetic changes.
+       * tests/suffix13.test: Cosmetic spacing change.
+
+2010-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Add useful comment in test script ext.test.
+       * tests/ext.test: Add a comment explaining why an apparently
+       useless `if' statement is indeed required.
+
+2010-06-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Add useful comment in test script obsolete.test.
+       * tests/obsolete.test: Add a comment explaining why we need
+       an indirection in adding $AUTOUPDATE to $required.
+
+       Normalize whitespaces in 'tests/Makefile.am'.
+       * tests/Makefile.am (TESTS): Use only spaces, not tabs, in the
+       definition of this variable.
+
+       Parallel tests generation: improve comments (tiny change).
+       * tests/Makefile.am ($(parallel_tests)): Added useful comment to
+       generated tests.
+
+       Tests defs: truly get rid of `$am_defs_included' (unused variable)
+        * tests/defs.in ($am_defs_included): Remove, its now unused.  It
+       should have been removed in a previous changeset, but the removal
+       was done only partially (oversight).
+
+2010-06-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Remove a couple of unneeded conditionals from tests.
+       * tests/pr243.test, tests/pr266.test, tests/strip.test: No need
+       for the FOOTEST conditional.
+
+2010-06-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Modernize, improve and/or fix various test scripts.
+       * tests/symlink3.test: Deleted, separated into two new, more
+       complete tests ...
+       * tests/forcemiss.test: ... this one ...
+       * tests/forcemiss2.test: ... and this one.
+       * tests/symlink2.test: Enable `errexit' shell flag, make test
+       stricter, and skip it if symlink creation is not supported.
+       * tests/postproc.test: Enable `errexit' shell flag, related
+       changes, and a couple of unrelated cosmetic changes.
+       * tests/recurs.test: Use the `configure.in' stub created by
+       `./defs', rather than writing one from scratch.  Make grepping
+       of Automake stderr slightly stricter.
+       * tests/substtarg.test: Likewise.
+       * tests/strip.test: Likewise, and move the call to `set -e'
+       earlier (just after the inclusion of `./defs'). Also, make sure
+       that the script installed by `make install-script' is equal to
+       the original one.
+       * tests/substref.test: Use the `configure.in' stub created by
+       `./defs', rather than writing one from scratch.  Move the call
+       to `set -e' earlier (just after the inclusion of `./defs').
+       Avoid to explicitly export CC for configure (that's already done
+       in ./defs).  Avoid potential problems with unpredictable make
+       output.  Finally, make grepping of Makefile.in stricter.
+       * tests/substre2.test: Ensure verbose printing of the captured
+       make's output, and make its grepping slightly stricter.
+       * tests/cygwin32.test: Enable `errexit' shell flag, and related
+       changes.  Also, do not create useless dummy source/data files.
+       * tests/scripts.test: Likewise.
+       * tests/recurs2.test: Likewise.  Also, use the `configure.in'
+       stub created by `./defs'.
+       * tests/Makefile.am (TESTS): Updated.
+
+       Modernize, improve and/or fix tests `pluseq*.test.
+       * tests/pluseq5.test: Append to configure.in using cat with an
+       here-doc, not using echo.
+       * tests/pluseq10.test: Make sure that the captured output of
+       `make' command is always displayed. Where possible, use $FGREP
+       instead of grep (this change makes some checks slightly stricter).
+       * tests/pluseq8.test: Enable `errexit' shell flag, with related
+       changes.
+       * tests/pluseq.test: Likewise.  Also, do not create useless dummy
+       data files, and use better m4 quoting in generated configure.in.
+       * tests/pluseq2.test: Likewise.  Also, append to configure.in
+       using cat with an here-doc, not using echo.
+       * tests/pluseq3.test: Likewise.
+       * tests/pluseq4.test: Likewise.
+       * tests/pluseq6.test: Likewise.
+       * tests/pluseq7.test: Do not create useless dummy source file.
+       * tests/pluseq9.test: Slightly extended w.r.t. the grepping of
+       Automake stderr.  Some unrelated cosmetic changes.
+
+2010-06-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       cscope.test: ensure verbose printing of captured stderr.
+       * tests/cscope.test: Print captured stderr before failing.
+
+2010-06-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Testsuite: ensure verbose printing of captured stderr.
+       * tests/acloca18.test: Print captured stderr before either failing
+       or grepping it.  Be sure to send captured stderr to stderr, not to
+       stdout.
+       * tests/ansi3b.test: Likewise.
+       * tests/cond39.test: Likewise.
+       * tests/configure.test: Likewise.
+       * tests/missing3.test: Likewise.
+       * tests/missing6.test: Likewise.
+       * tests/output-order.test: Likewise.
+       * tests/pr300-ltlib.test: Likewise.
+       * tests/python6.test: Likewise.
+       * tests/python7.test: Likewise.
+       * tests/python8.test: Likewise.
+       * tests/python9.test: Likewise.
+       * tests/subobj.test: Likewise.
+       * tests/vars3.test: Likewise.
+       * tests/missing4.test: Likewise, and fix a call to grep not to use
+       the `-c' flag.
+       * tests/ansi3.test: Likewise, and rely on the `configure.in' stub
+       created by `./defs', rather than writing one from scratch.
+
+       Enable `errexit' shell flag in various tests.
+       * tests/backsl.test: Enable the `errexit' shell flag, and
+       related changes.
+       * tests/backsl2.test: Likewise.
+       * tests/block.test: Likewise.
+       * tests/canon2.test: Likewise.
+       * tests/canon4.test: Likewise.
+       * tests/comment2.test: Likewise.
+       * tests/condlib.test: Likewise.
+       * tests/cond15.test: Likewise, and prefer $FGREP over grep.
+       * tests/canon3.test: Likewise.  Also, avoid to create an useless
+       dummy source file.
+       * tests/acoutpt2.test: Enable the `errexit' shell flag, and some
+       related changes.  Do some cosmetic improvements in the generated
+       `configure.in' file.
+       * tests/cond4.test: Likewise.
+       * tests/cond14.test: Likewise.
+       * tests/condinc.test: Likewise.
+       * tests/cond7.test: Likewise.  Also, remove useless setting of
+       AUTOMAKE_OPTIONS to `foreign' in the generated Makefile.am.
+       * tests/ansi.test: Enable the `errexit' shell flag, and related
+       changes.  Extended, esp. by running autoconf, ./configure and
+       make, and by looking into the distdir.
+
+2010-06-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Extend tests/README w.r.t. trailing `:' in test scripts.
+       * tests/README (section "Writing test cases" subsection "Do"):
+       Explain why apparently redundant trailing `:' and `Exit 0' in
+       test scripts can indeed be useful.
+
+2010-06-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Improve determination of PATH separator in bootstrap script.
+       * bootstrap: Determine what the PATH separator is the same way
+       autoconf does.
+
+       Minor improvements in bootstrap script.
+       * bootstrap: Consistently use two-spaces indentation.  Cosmetic
+       improvement to comments.
+       ($me): New variable, containing program basename.
+       Prepend it to all error messages.
+
+       Testsuite now works with BSD make in parallel mode.
+       * tests/defs.in: Unset variables __MKLVL__ and MAKE_JOBS_FIFO,
+       which are exported by BSD make when run in parallel mode, and
+       which can confuse make processes spawned by our testsuite.
+       This change fixes a lot of spurious failure when the testsuite
+       is run with BSD make in parallel mode.
+
+2010-06-09  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Modernize, improve and/or fix various test scripts.
+       * tests/sanity.test: Rely on the `configure.in' stub created by
+       `./defs', rather than writing one from scratch.
+       * tests/depend2.test: Likewise.  Also, call `set -e' just after
+       the inclusion of `./defs', instead that later in the script.
+       * tests/canon5.test: Avoid a useless `|| Exit 1' after a call to
+       $AUTOMAKE, and improve the positioning of an $ACLOCAL call.
+       * tests/exeext4.test: Use $FGREP instead of grep, where possible.
+       Make auxiliary rules in the generated Makefile more silent.
+       These changes make some checks slightly stricter.
+       * tests/ext2.test: Call `Exit 1' if inclusion of `./defs' fails.
+       * tests/gettext2.test: Place final `:' at the end of the script,
+       rather than in the middle.
+       * tests/exeext.test: Call `set -e' just after the inclusion of
+       `./defs', instead that later in the script.
+       * tests/extra5.test: Likewise.
+       * tests/confdeps.test: Likewise.  Also, prefer `mv -f' over
+       plain `mv', just to be sure.
+       * tests/depcomp.test: Enable `errexit' shell flag, with related
+       changes.  Also, modernize the generated configure.in.
+       * tests/cond9.test: Likewise.  Also, rely on the `configure.in'
+       stub created by `./defs', rather than writing one from scratch.
+       * tests/cond10.test: Likewise.
+       * tests/depcomp2.test: Likewise.
+       * tests/depend3.test: Likewise.
+       * tests/distcom7.test: Likewise.
+       * tests/fortdep.test: Likewise.  Also, remove definition of
+       AUTOMAKE_OPTIONS to `foreign' in the generated Makefile.am,
+       since that flag is already provided by $AUTOMAKE.
+       * tests/mdate.test: Made stricter, by checking that Automake
+       actually failed, and by making a stricter grep on the error
+       message.  Also, set shell `errexit flag'.
+       * tests/python2.test: Improved verbose messages.
+
+       Make test `ammissing.test' stricter.
+       * tests/ammissing.test: Fail if $ACLOCAL succeeds unexpectedly.
+       Enable `errexit' shell flag.
+
+2010-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix error in generation of parallel tests.
+       * tests/defs.in ($am_skip_defs): New variable, to be used when
+       ./defs must be sourced multiple times.  If set, unset it and
+       only define $srcdir; otherwise, also go through the rest of
+       the script.
+       ($am_defs_included): Remove, no more needed.
+       * tests/Makefile.am ($(parallel_tests)): Update accordingly,
+       using only $srcdir from defs.
+       Fixes potential test failures of tests that use $required.
+
+2010-06-08  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Enable `errexit' shell flag in some test scripts.
+       * tests/subcond.test: Enabled `errexit' shell flag, and related
+       minor changes.
+       * tests/subst.test: Likewise.
+       * tests/vars.test: Likewise.
+       * tests/version4.test: Likewise.
+       * tests/vpath.test: Likewise.
+       * tests/vtexi2.test: Likewise.
+       * tests/werror.test: Likewise.
+       * tests/whoami.test: Likewise.
+       * tests/tags.test: Likewise, and avoid to crate an useless dummy
+       header file.
+       * tests/acsilent.test: Likewise, and don't use an easily-avoided
+       command substitution.
+       * tests/unused.test: Likewise, and don't use an easily-avoided
+       command substitution.
+       * tests/version.test: Likewise, and avoid deprecated constructs
+       in the generated `configure.in'.
+       * tests/version2.test: Likewise, and avoid deprecated constructs
+       in the generated `configure.in'.
+
+2010-06-07  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Improve declaration of dependencies in the testsuite.
+       * tests/Makefile.am (check_SCRIPTS): Remove.  Instead, let ...
+       ($(TEST_LOGS)): ... all test logs depend on the scripts.
+       * test/gen-parallel-tests: For each parallel test foo-p.test,
+       let `foo-p.log' also depend on `foo.test', since it is sourced.
+
+2010-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Coverage for TAGS_DEPENDENCIES warning.
+       * tests/tags2.test: New test.
+       * tests/Makefile.am: Update.
+
+       Coverage for use of anachronistic variables.
+       * tests/oldvars.test: New test.
+       * tests/Makefile.am: Update.
+
+       Testsuite coverage for bogus macro file serial numbers.
+       * tests/acloca18.test: Also test ill-formed serial numbers
+       and serial numbers after macro definitions.
+
+       Coverage for aclocal diagnosing underquoted macros.
+       * tests/acloca23.test: New test.
+       * tests/Makefile.am: Update.
+
+2010-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Prefer AUTOMAKE_fails over `$AUTOMAKE | grep' in tests.
+       * tests/ldadd.test: Enable errexit.  Use AUTOMAKE_fails so
+       the verbose log contains all output.
+       * tests/mdate.test: Likewise.
+       Prompted by Stefano Lattarini's change to discover.test.
+
+2010-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       More minor message fixes.
+       * aclocal.in (scan_file): Fix recommended info command line.
+       * automake.in (handle_lib_objects): No need to prepend function
+       name to prog_error message.
+       (handle_tags): Add missing word and missing space in error
+       message.
+       (handle_dist): Add missing closing single quote in message.
+       Line-wrap one long message for readability.
+
+2010-06-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix distcheck failure with distributed generated parallel tests.
+       * tests/Makefile.am ($(parallel_tests)): Cope with $(srcdir)
+       being different from the value at developer `make dist' time.
+       * tests/defs.in: Protect against multiple inclusion, by using ...
+       ($am_defs_included): ... this new variable.
+       ($srcdir): Do not compute, but simply define to `@abs_srcdir@'
+       as substituted by configure.
+       Report, suggestions and first fix by Ralf Wildenhues, final
+       patch by Stefano Lattarini.
+
+2010-06-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Improve tests link*.test (enable `errexit' shell flag).
+       * tests/link_c_cxx.test: Enable `errexit shell flag, and related
+       changes.  Also, do not create useless source files.
+       * tests/link_dist.test: Likewise.
+       * tests/link_f90_only.test: Likewise.
+       * tests/link_f_only.test: Likewise.
+       * tests/link_fc.test: Likewise.
+       * tests/link_fccxx.test: Likewise.
+       * tests/link_fcxx.test: Likewise.
+
+2010-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Improve ext.test semantics, avoid OpenBSD sh errexit issue.
+       * tests/ext.test: Inside shell compound command, use
+       `if $cmd; then Exit 1; fi' rather than `$cmd && Exit 1', to
+       fix failure with OpenBSD sh introduced with last patch.
+       Actually ensure that a rule for .EXT.o is created for each
+       known extension EXT.
+
+2010-06-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Enable `errexit' shell flag in some test scripts.
+       * tests/dash.test: Enable `errexit' shell flag, and related
+       changes.
+       * tests/defun.test: Likewise.
+       * tests/defun2.test: Likewise.
+       * tests/dejagnu.test: Likewise.
+       * tests/double.test: Likewise.
+       * tests/distcom2.test: Likewise.
+       * tests/empty2.test: Likewise.
+       * tests/empty3.test: Likewise.
+       * tests/empty4.test: Likewise.
+       * tests/exdir.test: Likewise.
+       * tests/ext.test: Likewise.
+       * tests/extra.test: Likewise.
+       * tests/extra2.test: Likewise.
+       * tests/extra3.test: Likewise.
+       * tests/extra4.test: Likewise.
+       * tests/flibs.test: Likewise.
+       * tests/fnoc.test: Likewise.
+       * tests/fo.test: Likewise.
+       * tests/instexec.test: Likewise.
+       * tests/ltdeps.test: Likewise.
+       * tests/nodep.test: Likewise.
+       * tests/nodepcomp.test: Likewise.
+       * tests/f90only.test: Likewise, and remove botched/obsoleted
+       comments and unnecessary commands.
+       * tests/fonly.test: Likewise, and remove botched/obsoleted
+       comments and unnecessary commands.
+       * tests/discover.test: Likewise, and made stricter.
+
+       Enable `errexit' shell flag in all tests cxx*.test.
+       * tests/cxx.test: Enabled `errexit' shell flag, and related
+       minor changes.
+       * tests/cxxansi.test: Likewise.
+       * tests/cxxcpp.test: Likewise.
+       * tests/cxxlibobj.test: Likewise.
+       * tests/cxxlink.test: Likewise.
+       * tests/cxxo.test: Likewise.
+
+       Enable `errexit' shell flag in various tests.
+       * tests/acoutnoq.test: Enabled `errexit' shell flag, and related
+       minor changes.
+       * tests/acoutpt.test: Likewise.
+       * tests/acoutqnl.test: Likewise.
+       * tests/amassign.test: Likewise.
+       * tests/ansi2.test: Likewise.
+       * tests/ansi4.test: Likewise.
+       * tests/badprog.test: Likewise.
+       * tests/checkall.test: Likewise.
+       * tests/clean.test: Likewise.
+       * tests/colneq2.test: Likewise.
+       * tests/colon.test: Likewise.
+       * tests/colon5.test: Likewise.
+       * tests/colon6.test: Likewise.
+       * tests/comment.test: Likewise.
+       * tests/compile_f90_c_cxx.test: Likewise.
+       * tests/compile_f_c_cxx.test: Likewise.
+       * tests/cond3.test: Likewise.
+       * tests/cond6.test: Likewise.
+       * tests/cond13.test: Likewise.
+       * tests/conf2.test: Likewise.
+       * tests/confvar.test: Likewise.
+       * tests/confvar2.test: Likewise.
+       * tests/cond8.test: Likewise, plus a cosmetic change.
+       * tests/confh4.test: Likewise.  Also, add in the heading comments
+       an excerpt from the original bug report which motivated the
+       creation of this test, to make its purpose clearer.
+
+2010-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Rewrite manual to be gender-neutral.
+       * doc/automake.texi (GNU Build System)
+       (Standard Directory Variables, General Operation, CVS)
+       (Hard-Coded Install Paths, Dependencies As Side Effects):
+       Rewrite text to not contain gender-specific pronouns when
+       speaking about developers or users, either by avoiding pronouns
+       or by addressing them as `you' instead.
+       * THANKS: Update.
+       Report by Christina Gratorp.
+
+       * AUTHORS: Update.
+
+2010-06-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Tiny fix in silent8.test (display output of `make' command).
+       * tests/silent8.test: Make sure that the captured output of `make'
+       command is always displayed.
+
+       Make tests on user extensibility of silent-rules mode stricter.
+       * tests/silent6.test: Made stricter w.r.t. the grepping of the
+       output produced by `make'.
+       * tests/silent7.test: Likewise.
+
+       Tests on silent-mode for C/Libtool made stricter.
+       * tests/silent.test: Made stricter w.r.t. the grepping of the
+       output produced by `make'.
+       * tests/silent2.test: Likewise.
+       * tests/silent4.test: Likewise.
+       * tests/silent9.test: Likewise.
+       * tests/silent3.test: Likewise, and add a final `make distclean'
+       command to keep it better in sync with tests/silent{4,9}.test.
+
+       Improved test silent5.test.
+       * tests/silent5.test: Remove by hand all generated C files after
+       non-verbose builds, to ensure the following builds are clean.
+       Try to clean and rebuild with the same verbosity and without
+       removing generated sources in between, to check that this does
+       not trigger a different set of rules.  Make grepping of make's
+       output stricter.  Improved/added some comments.
+
+       New tests for Automake silent-mode with Fortran.
+       * tests/silentf77.test: New test.
+       * tests/silentf90.test: Likewise.
+       * tests/Makefile.am (TESTS): Updated accordingly.
+
+       New test `silentcxx.test' (Automake silent-mode with C++).
+       * tests/silentcxx.test: New test.
+       * tests/Makefile.am (TESTS): Updated accordingly.
+
+       New test `silentyacc.test' (Automake silent-mode with Yacc).
+       * tests/silentyacc.test: New test.
+       * tests/Makefile.am (TESTS): Updated accordingly.
+
+       New test `silentlex.test' (Automake silent-mode with Lex).
+       * tests/silentlex.test: New test.
+       * tests/Makefile.am (TESTS): Updated accordingly.
+
+       Relax tests on silent-rules to cater to overly verbose makes.
+       * tests/silent.test: When testing silent builds, don't fail if
+       make's output simply contains the `mv' substring, but only if
+       it contains the `mv ' substring (note the trailing space).
+       * tests/silent2.test: Likewise.
+       * tests/silent3.test: Likewise.
+       * tests/silent4.test: Likewise.
+       * tests/silent5.test: Likewise.
+       * tests/silent9.test: Likewise.
+
+2010-05-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Extend test on `nostdinc' automake option.
+       * tests/nostdinc.test: Enable `errexit' shell flag.  Related and
+       unrelated minor changes.  Make the grepping of the generated
+       Makefile.in slightly stricter.  Generate and run configure, so that
+       the generated Makefile can be grepped too.
+
+2010-05-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Make gnupload portable to EBCDIC hosts.
+       * lib/gnupload: Use literal newline as argument for 'tr' rather
+       than \015, for EBCDIC hosts.  Also, avoid unportable nested
+       double-quotes and backquotes.
+       * THANKS: Update.
+       Report from Eric Blake and Steve Goetze via gnulib.
+
+2010-05-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix Autoconf version required by Automake's configure.
+       Automake configure script used to tell that automake required
+       autoconf 2.60 or later, but then it checked for autoconf >= 2.62,
+       and if that was not found, it gave an error saying that Automake
+       required configure 2.61a-341 or later.  This change should
+       eliminate such inconsistencies.
+       * configure.ac ($required_autoconf_version): New variable.
+       Use it throughout.
+
+2010-05-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix truncated comment in Makefile.am.
+       * Makefile.am (sc_tests_logs_duplicate_prefixes): Fix unfinished
+       sentence in comment.
+       Report by Stefano Lattarini.
+
+       Relax silent8.test for NetBSD make.
+       * tests/silent8.test: Accept ./foo.info in output as well.
+
+       Fix unportable sed script in maintainer-check test.
+       * Makefile.am (sc_tests_Exit_not_exit): Rewrite sed script to
+       not contain semicolon after 'b' or brace commands, for NetBSD.
+
+       Wildcards are not portable to NetBSD make.
+       * doc/automake.texi (Wildcards): Document portability issue.
+       * tests/extra10.test, tests/extra11.test, tests/extra12.test:
+       Require GNU make.
+
+2010-05-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Make test for configure.in vs. configure.ac stricter.
+       * tests/configure.test: Use a configure.in file that provokes
+       an automake error, to ensure configure.ac is preferred.
+
+       Avoid possible false negatives in dejagnu7.test.
+       * tests/dejagnu7.test: Enable shell `errexit' flag.  Also, avoid
+       unportable use of fgrep option `-e'.
+
+       Fix conflnk3.test to work with Solaris/Heirloom Sh.
+       * tests/conflnk3.test: Use `test -r FILE' and `test ! -r FILE'
+       instead of respectively `test -e FILE' and `test ! -e FILE',
+       since Solaris Sh doesn't grok the latter.  Do not SKIP the test
+       if the shell doesn't support `test -e'.
+
+2010-04-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Warning and error message formatting cleanups.
+       * aclocal.in (parse_arguments, main): Remove trailing period or
+       newline in error or warning messages, avoid capitalization of
+       the first word of a message.
+       * automake.in (check_user_variables, handle_languages)
+       (handle_ltlibraries, scan_aclocal_m4, scan_autoconf_config_files)
+       (scan_autoconf_files, cond_stack_if, require_file_internal)
+       (usage, generate_makefile, parse_arguments): Likewise.
+       * lib/Automake/ChannelDefs.pm (set_strictness): Likewise.
+       * lib/Automake/Configure_ac.pm (find_configure_ac): Likewise.
+       * lib/Automake/Options.pm (set_strictness): Likewise.
+       * lib/Automake/Rule.pm (define): Likewise.
+       * lib/Automake/Variable.pm (define, variables_dump): Likewise.
+       * tests/ltinstloc.test, tests/suffix11.test: Adjust expected
+       error message.
+       * lib/Automake/Channels.pm (setup_channel): Reword error message
+       to be the same as in msg.
+
+       Fix placing of ellipses in English text and synopses.
+       * Makefile.am: Be sure to add a space before `...' in natural
+       language text.
+       * automake.in (scan_autoconf_traces): Likewise.
+       * lib/Automake/Rule.pm (define): Likewise.
+       * lib/Automake/Variable.pm (define): Likewise.
+       * lib/am/dejagnu.am: Likewise.
+       * lib/am/progs.am: Likewise.
+       * lib/gnupload (dprint, upload): Likewise.
+       * tests/confdeps.test: Likewise.
+       * tests/location.test: Adjust expected output.
+       * automake.in (usage): In synopsis, use singular for OPTION,
+       * remove space before ellipsis.
+       * aclocal.in (usage): Likewise.  Also, fix indentation.
+
+       Fix more duplicate message prefixes.
+       * lib/Automake/XFile.pm (seek): Do not prepend $me.
+       ($me): Remove now-unused package-global.
+       * aclocal.in (check_acinclude): Remove duplicate 'warning: '
+       prefix.
+
+       Fix typo in manual.
+       * doc/automake.texi (Simple Tests using parallel-tests): Add
+       missing closing parenthesis.
+
+       Fix leftover call to removed function macros_dump.
+       * automake.in (read_main_am_file): Call variables_dump, not
+       macros_dump.  Print actual error before list of variables.
+
+2010-04-22  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Minor improvements in comments of test `silent3.test'.
+       * tests/silent3.test: Tell to keep it in sync with `silent9.test'
+       too.
+
+2010-04-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       testsuite: ensure verbose printing of captured output.
+       * tests/acloca14.test, tests/acloca18.test, tests/aclocal.test,
+       tests/fort2.test, tests/help.test, tests/missing3.test,
+       tests/missing6.test: Print captured stdout or stderr before
+       grepping it.
+
+2010-04-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Make test badopt.test stricter (by enabling `set -e').
+       * tests/badopt.test: Add call to `set -e'.  Due to this change,
+       an unexpected failure in the call to `$ACLOCAL' (whose outcome
+       was previously unchecked) would cause the whole test to fail.
+       Also, bumped the copyright years.
+
+       Make test for configure.in vs. configure.ac stricter.
+       * tests/configure.test: Use a configure.in file that provokes
+       an automake error, to ensure configure.ac is preferred.
+
+       Use `set -e' in confsub.test (avoids possible false negatives).
+       * tests/confsub.test: Enable shell `errexit' flag, and related
+       changes (this helps avoiding some possible minor false negatives).
+       Also, bumped copyright years.
+
+2010-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix -Werror handling for presence of configure.in and configure.ac.
+       * lib/Automake/Variable.pm (Automake::Variable): Do not initialize
+       $configure_ac at the global level, before command-line arguments
+       have been parsed.
+       (require_variables): Initialize it here.
+       * tests/configure.test: New test.
+       * tests/Makefile.am: Update.
+       Report by Stefano Lattarini.
+
+2010-04-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Avoid possible false negatives in confh5.test.
+       * tests/confh5.test: Enable shell `errexit' flag, and bumped
+       copyright years.  Due to this change, any unexpected failure
+       in calls to $ACLOCAL, $AUTOMAKE, $AUTOCONF or $AUTOHEADER, or
+       a failure in grepping expected text in output files should now
+       cause the whole test to fail.
+
+2010-04-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fixed typo in POD documentation of Automake::Channels.
+       * lib/Automake/Channels.pm: Fixed typo in POD documentation:
+       @<...> was used instead of C<...>.
+
+2010-04-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Refactor tests on Automake TESTS color output.
+       * tests/color.test: Tests using the expect program moved out to...
+       * tests/color2.test: ... this new file.
+       * tests/Makefile.am (TESTS): Extended accordingly.
+
+2010-04-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Fix typos in comments in test confh5.test
+       * tests/confh5.test: Fix a couple of typos in comments.
+
+       Avoid possible false negatives in canon-name.test.
+       * tests/canon-name.test: Enable shell `errexit' flag.  Improve
+       test description.
+
+2010-04-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Print 'warnings are treated as errors' note if needed.
+       * lib/Automake/Channels.pm: Fix typo in comment.
+       (_print_message): If -Werror is enabled, print a 'warnings are
+       treated as errors' note before the first such warning.
+       * tests/warnopts.test: Adjust comment to mention expected warning.
+       Adjust code to ignore 'warnings are treated as errors' note.
+       * tests/location.test: Adjust expected output with -Werror.
+       * tests/werror4.test: New test.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+
+       Ensure we don't print 'warning:' or 'error:' twice.
+       * Makefile.am (sc_ensure_testsuite_has_run): New helper rule.
+       (sc_tests_logs_duplicate_prefixes): New rule, to check for
+       wrong-looking warning and error messages in the test suite logs.
+       * aclocal.in (scan_configure_dep, scan_file): Remove duplicate
+       `warning: ' prefix.
+       * tests/vars3.test: Rename variable to avoid false positive.
+
+       Prepend type to warning, error, and fatal messages.
+       For the first part of messages of types `error' or `fatal',
+       prepend `error: ' to the message.  Prepend `warning: ' to
+       warning messages, whatever the setting of -Werror.
+       * lib/Automake/Channels.pm (partial): Move up definition.
+       (_format_message): Emit `header' and `footer' strings only with
+       the first resp. last part of a set of partial messages.
+       * lib/Automake/ChannelDefs.pm: Add missing '1;' statement at the
+       end of the module.
+       (Automake::ChannelDefs): Setup warning channels with header
+       `warning: ', error and fatal messages with header `error: '.
+       * tests/condinc2.test, tests/ltinstloc.test: Adjust expected
+       error messages.
+       * tests/comment5.test: Likewise.  Also, include stack notes
+       should not start with `error:'.
+       * tests/location.test: Likewise.  Also, try both -Werror and
+       -Wno-error.
+       * NEWS: Update.
+       Report by Bruno Haible.
+
+       Fix capitalization of error messages, reword one message.
+       * lib/Automake/Variable.pm (define): Do not capitalize the first
+       word in the error message.
+       * automake.in (require_file_internal): Likewise.  Also, reword
+       and line-wrap for better readability.
+       * tests/distcom7.test, tests/pluseq5.test, tests/pluseq9.test:
+       Adjust tests.
+
+       Fix connected warnings about obsolete exeext override.
+       * lib/Automake/Rule.pm (define): Merge two warnings that belong
+       together, by setting the 'partial' flag for the first one.
+
+       Fix per-Makefile.am setting of -Werror.
+       Before this patch, 'AUTOMAKE_OPTIONS = -Werror' in one
+       Makefile.am would carry over to other Makefile.am files
+       treated afterwards by the same thread, causing inconsistent
+       and unstable exit status values.
+       * lib/Automake/Channels.pm (dup_channel_setup)
+       (drop_channel_setup): Save and restore the setting of
+       $warnings_are_errors.
+       * tests/werror3.test: New test.
+       * tests/Makefile.am: Adjust.
+       * NEWS: Update.
+
+2010-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Bugfix in confh5.test w.r.t. Solaris/Heirloom Sh.
+       * tests/confh5.test: In the generated Makefile.am: do not use
+       `test ! -e FILE' to check for the non-existence of a file, since
+       that is not supported by Solaris/Heirloom Sh.
+
+       Make test `aclocal3.test' stricter.
+       * tests/aclocal3.test: Add call to `set -e'.  Fail if $ACLOCAL
+       succeeds unexpectedly.
+
+       Add tests checking that symlinks are resolved by `make dist'.
+       * tests/distlinks.test: New test.
+       * tests/Makefile.am (TESTS): Updated accordingly.
+       Suggested by observations from Ralf Wildenhues.
+
+2010-04-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Use -9 for maximum xz compression with dist-xz.
+       * lib/am/distdir.am (dist-xz, dist, dist-all): Pass -9 to xz.
+       * NEWS, THANKS: Update.
+       Report by Pavel Sanda.
+
+2010-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Avoid possible false negatives in cond46.test.
+       * tests/cond46.test: Enable shell `errexit' flag (and bumped
+       copyright years).  Due to this change, the testcase should now
+       fail on unexpected failures in calls to $ACLOCAL/$AUTOMAKE (whose
+       outcomes were previously unchecked), and on failures in grepping
+       the expected diagnostic in Automake stderr.
+
+2010-04-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Generated tests are now just a thin layer around other tests.
+       * tests/Makefile.am: Rewrite the rule to generate the `*-p.test'
+       test scripts so that any of them simply includes the corresponding
+       `*.test' script (after setting `$parallel_tests' to `yes').
+       * tests/.gitignore: Add wildcard for temporary files used in the
+       generation of `*-p.test' tests.
+
+2010-03-30  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Avoid an unportable use of `$status' shell variable.
+       * Makefile.am (path-check): Don't use the `$status' shell variable
+       in the target's rules, as it's special in Zsh (equivalent to `$?',
+       and readonly).
+
+       Avoid another use of `chmod -R'.
+       * Makefile.am (path-check): To be safe, do not use `chmod -R' on
+       $(distdir) before removing it (as Solaris `chmod -R' touches
+       symlink targets).  Instead, use the cleanup strategy used in
+       distdir.am.
+
+2010-03-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Remove uses of @acronym and @sc.
+       * doc/automake.texi (Public Macros, Limitations on File Names):
+       Remove all usage of @acronym and @sc in the manual.
+       Suggested by Karl Berry.
+
+2010-03-13  Karl Berry  <karl@freefriends.org>
+
+       GNU hello uses fdl.texi, not gpl.texi.
+       * doc/automake.texi (Texinfo): Adjust example to upstream
+       change.
+
+2010-03-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Formatting cleanups in macro comments.
+       * automake.in, lib/Automake/Channels.pm,
+       lib/Automake/FileUtils.pm, lib/Automake/Options.pm,
+       lib/Automake/Variable.pm, lib/Automake/XFile.pm,
+       m4/options.m4, m4/substnot.m4: Fix macro comment format.
+
+2010-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Avoid generation of `tests/defs-p' file.
+       * tests/defs.in: In the generated `configure.in' snippet: call
+       `AM_INIT_AUTOMAKE' with the `parallel-tests' option if the shell
+       variable `parallel_tests' is set to `yes'.
+       * tests/Makefile.am (defs-p): Target removed.
+       (check_SCRIPTS): Removed `defs-p'.
+       (clean-local-check): Do not unlink `defs-p' anymore.
+       ($(parallel_tests)): Transformation rules for the test scripts
+       adjusted.
+       * tests/gen-parallel-tests: Selection rules for the test
+       scripts adjusted.
+       * tests/parallel-tests.test: Set `$parallel_tests' to `yes'
+       then include `./defs' (rather than simply including `./defs-p').
+       * tests/parallel-tests2.test: Likewise.
+       * tests/parallel-tests3.test: Likewise.
+       * tests/parallel-tests4.test: Likewise.
+       * tests/parallel-tests5.test: Likewise.
+       * tests/parallel-tests6.test: Likewise.
+       * tests/parallel-tests7.test: Likewise.
+       * tests/parallel-tests8.test: Likewise.
+       * tests/parallel-tests9.test: Likewise.
+       * tests/parallel-tests10.test: Likewise.
+       * tests/README (Section "Writing Test Cases" subsection "Do"):
+       Adjusted the parts referring to tests checking `parallel-tests'
+       behaviour.  Some other minor related improvements.
+       * tests/.gitignore (defs-p): Removed.
+
+2010-03-04  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Remove redundant unset of variable TESTS from some test scripts.
+       * tests/color.test: Do not unset the `TESTS' variable, as it's
+       already unset in the `defs' file.
+       * tests/check5.test: Likewise.
+       * tests/check8.test: Likewise.
+       * tests/check9.test: Likewise.
+       * tests/check10.test: Likewise.
+       * tests/check11.test: Likewise.
+       * tests/parallel-tests.test: Likewise.
+       * tests/parallel-tests3.test: Likewise.
+       * tests/parallel-tests4.test: Likewise.
+       * tests/parallel-tests5.test: Likewise.
+       * tests/parallel-tests6.test: Likewise.
+       * tests/parallel-tests7.test: Likewise.
+
+2010-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix cscope test on systems without working Fortran compiler.
+       * tests/cscope.test: Skip remainder of test if `$MAKE all' fails.
+       * THANKS: Update.
+       Report by Peter Johansson.
+
+2010-02-24  Antonio Diaz Diaz  <ant_diaz@teleline.es>  (tiny change)
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Add lzip compression support.
+       * automake.in (handle_dist): Recognize dist-lzip.
+       (make_paragraphs): Map LZIP to dist-lzip.
+       * doc/automake.texi (Dist): Add dist-lzip.
+       (Options): Likewise.
+       * lib/Automake/Options.pm (_process_option_list): Add dist-lzip.
+       * lib/am/distdir.am
+       (dist dist-all): Add command to create an lzip-compressed tarball.
+       (distcheck): Handle lzip-compressed tarballs just like the others.
+       * tests/defs.in: Test for lzip, too.
+       * tests/lzip.test: New file, based on nogzip.test.
+       * tests/Makefile.am (TESTS): Add lzip.test.
+       * NEWS: Update.
+
+2010-02-22  Karl Berry  <karl@gnu.org>
+
+       Improve help message of mdate-sh.
+       * mdate-sh: mention actual output format in help message.
+
+2010-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Deprecate dist-lzma in favor of dist-xz.
+       * doc/automake.texi (The Types of Distributions, Options):
+       Adjust text to reflect renaming of lzma to xz.
+       * NEWS: Update.
+       Missing deprecation noted by Antonio Diaz Diaz.
+
+2010-02-20  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Add tests about support of wildcards in EXTRA_DIST.
+       * tests/extra10.test: New test, check basic support of wildcards
+       in EXTRA_DIST.
+       * tests/extra11.test: New test, check more complex usage of
+       wildcards in EXTRA_DIST.
+       * tests/extra12.test: New test, check usage of wildcards in
+       EXTRA_DIST when $builddir != $srcdir.
+       * tests/Makefile.am (TESTS): Updated accordingly.
+       Necessity of these new tests suggested by Braden McDaniel
+       and Ralf Wildenhues.
+
+2010-02-08  Simon Josefsson  <simon@josefsson.org>
+
+       Fix copyright statement in gnupload script.
+       * lib/gnupload: Fix copyright statement.
+
+2010-02-06  Dmitry V. Levin  <ldv@altlinux.org>  (tiny change)
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix exit status of signal handlers in shell scripts.
+       The value of `$?' on entrance to signal handlers in shell scripts
+       cannot be relied upon, so set the exit code explicitly to
+       128 + SIG<SIGNAL>.
+       * lib/am/check.am (am__check_pre): Use `exit 143' in signal handler.
+       * lib/elisp-comp: Likewise.
+       * lib/install-sh: Likewise.
+       * lib/ylwrap: Likewise.  Also, fix script to trap signal 13, not 3.
+       * NEWS, THANKS: Update.
+       Bug report, analysis, and initial patch by Dmitry V. Levin.
+
+2010-02-06  Karl Berry  <karl@gnu.org>
+
+       Improve gnupload usage text.
+       * gnupload (usage): Shorten to make more likely to fit on a tty
+       line.  Mention CMD in the synopsis.  With ..., plural is implied.
+
+2010-01-28  Christos Kontas  <xakon@yahoo.com>  (tiny change)
+
+       Fix some typos in the manual
+       * doc/automake.texi (Nested Packages, Rebuilding): Fix typos.
+
+2010-01-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix silent-rules output for disabled dependency tracking.
+       * lib/am/depend2.am [!%FASTDEP%]: Rework silent-rules variable
+       expansion code to also work in the case where %AMDEP% expands
+       to FALSE at config.status time, using new substitution string
+       %VERBOSE-NODEP%.
+       * automake.in (verbose_nodep_flag): New function, appending
+       `@am__nodep@' to the verbose-variable name.
+       (handle_languages): If dependencies are not disabled, use it to
+       set %VERBOSE-NODEP%.
+       * m4/depend.m4: Substitute am__nodep as '_no', so the second
+       verbose-variable will always expand to an empty string, if
+       dependencies are enabled.
+       * tests/silent5.test: Also test --disable-dependency-tracking;
+       also test per-target flags for non-C language files.
+       * tests/silent9.test: New test, like silent4.test but disable
+       dependency tracking.
+       * tests/Makefile.am: Adjust.
+       * NEWS, THANKS: Update.
+       Report by Dmitry V. Levin <ldv@altlinux.org>.
+
+2010-01-17  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       Slighty improve tests acoutbs.test and acoutbs2.test.
+       * tests/acoutbs2.test: Enable `errexit' shell flag.  Check that
+       autoconf and configure work, that the file `zot' is created by
+       configure, and that no file containing a backslash in its name is
+       created.
+       * tests/acoutbs.test: Likewise, plus updated copyright years.
+
+       Fix test acoutbs2.test.
+       * tests/acoutbs2: In the generated configure.in: add proper calls
+       to AC_INIT and AM_INIT_AUTOMAKE, and remove explicit definition of
+       PACKAGE and VERSION. Add a call to aclocal before calling automake.
+       Updated copyright years.
+       * tests/Makefile.am (XFAIL_TESTS): Removed acoutbs2.test.
+
+       Add forgotten test scripts to $(TESTS).
+       * tests/Makefile.am (TESTS): Added test scripts present on the
+       filesystem, which were erroneously left out from $(TESTS):
+       acoutbs2.test, badopt.test, extra2.test.
+       (XFAIL_TESTS): Added acoutbs2.test.
+
+2010-01-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Sync auxiliary files from upstream.
+       * INSTALL, lib/INSTALL, lib/config.guess, lib/config.sub:
+       Sync from upstream.
+
+       Bump copyright years.
+       * aclocal.in (write_aclocal, version): Bump copyright years.
+       * automake.in (gen_copyright, version): Likewise.
+       * doc/automake.texi: Likewise.
+
+       Rotate ChangeLog.
+       * ChangeLog.09: New file, rotated from ...
+       * ChangeLog: ... here.
+       * Makefile.am (EXTRA_DIST): Distribute ChangeLog.09.
+
+-----
+
+Copyright (C) 2010-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
+
+;; Variables:
+;; coding: utf-8
+;; End:
diff --git a/old/ChangeLog.96 b/old/ChangeLog.96
new file mode 100644 (file)
index 0000000..d89c2e3
--- /dev/null
@@ -0,0 +1,3685 @@
+Wed Dec 18 15:27:09 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (read_am_file): Sort configure_vars before adding to
+       output_vars.
+       (handle_yacc_lex_cxx): Sort de_ansi_objects.
+       (handle_man_pages): Sort %section keys.
+
+Tue Dec 10 00:41:17 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (AC_SUBST_PATTERN): Check for alphanumeric variable
+       names only.  Test subst.test.
+       (scan_one_configure_file): Skip AC_DEFUN lines.  Test
+       defun2.test.
+
+Mon Dec  9 08:18:42 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (file_contents_with_transform): Use ne, not !=, to
+       compare strings.  Compare against correct string.  From Jim
+       Meyering.
+       (handle_texinfo): Use rm -f to remove info files.  From Gord
+       Matzigkeit.
+
+       * Released 1.1l.
+
+       * automake.in (handle_texinfo): Put .ps on @suffixes.
+
+Sun Dec  8 12:29:52 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (am_install_var): Directory with 'exec' in its name
+       is installed by install-exec.
+
+       * subdirs.am (maintainer-clean-recursive): Make commands quiet.
+       * texinfos.am: Make commands quiet.
+       * scripts.am: Make commands quiet.
+       * progs.am: Make commands quiet.
+       * ltlibs.am: Make comamnds quiet.
+       * lisp.am: Make commands quiet.
+       * libs.am: Make commands quiet.
+       * header.am: Make commands quiet.
+       * data.am: Make commands quiet.
+
+       * automake.in (variable_value_as_list): Handle := substitution
+       references.
+       (am_conf_line_error): Take file argument.  Changed all callers.
+       (scan_one_configure_file): Skip config header of [$1].
+       (scan_dependency_file): Don't add top_builddir to regex if it is
+       ".".  Don't include top_builddir in output if it is ".".
+       (scan_one_configure_file): Skip version of [$2].
+
+Sat Dec  7 11:34:39 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_one_configure_file): New sub.
+       (scan_configure): Scan aclocal.m4 as well as configure.in.
+       (handle_configure): Makefile.in now depends on $(ACLOCAL), because
+       automake scans it.
+
+       * automake.in (handle_configure): Put full path to file onto
+       @rewritten_inputs.  Test output4.test.
+
+       * automake.in (handle_configure): Put proper name onto @inputs.
+       Test output3.test.
+
+       * automake.in (handle_configure): Pass correct args to automake
+       invocations.  Test remake2.test.
+
+       * automake.in (handle_configure): Check dirname of $file, not of
+       $local.  Test output2.test.
+
+       * automake.in (handle_dependencies): Added some missing ";"s in
+       transforms.
+       (get_object_extension): Ditto.
+       (handle_tags): Ditto.
+       (handle_tests): Ditto.
+       (read_am_file): Ditto.
+       (am_install_var): Ditto.
+       (file_contents_with_transform): Die if transform missing trailing
+       ";".
+
+       * automake.in (am_install_var): Quote $ in regexp substitution.
+       From Ulrich Drepper.
+
+Fri Dec  6 18:54:10 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Require actual input files, not
+       rewritten input files.  From Ulrich Drepper.
+
+Thu Dec  5 02:52:20 1996  Tom Tromey  <tromey@cygnus.com>
+
+       Suggestion from Mark Galassi:
+       * texinfos.am (DVIPS): New macro.
+       (.dvi.ps): New rule.
+
+       * automake.in (handle_dependencies): Check to make sure
+       --build-directory specified before searching for .P files.
+       (handle_configure): Correctly handle ":" syntax when running
+       config.status.
+
+       * remake.am: Removed rules to regenerate Makefile and Makefile.in;
+       now handled by handle_configure.
+
+       * remake-subd.am: Removed.
+
+       * automake.in (scan_configure): Handle multiple ":"s in AC_OUTPUT
+       arg.
+       (parse_arguments): Ditto.
+       (handle_configure): Ditto.
+       (%other_output_files): Removed.
+       (rewrite_inputs_into_dependencies): New sub.
+       (handle_configure): Use it.
+       (handle_configure): Ditto.
+
+       From Gord Matzigkeit:
+       * automake.in (generate_makefile): Handle ":" in AC_OUTPUT arg.
+       (handle_configure): Ditto.
+
+       * automake.in (handle_single_transform_list): .S is assembly
+       source.  From Anthony Green.
+
+       * automake.in (handle_single_transform_list): Correctly rewrite
+       C++ and Fortran source to objects ending in ".o".  Test
+       cxxo.test.
+
+       * automake.in: Better error message if file missing.
+
+       * aclocal.in (@obsolete_macros): ud_GNU_GETTEXT is obsolete.
+       * automake.in (handle_gettext): Use AM_GNU_GETTEXT, not
+       ud_GNU_GETTEXT.
+       (scan_configure): Ditto.  ud_GNU_GETTEXT is now obsolete.
+
+Wed Dec  4 00:41:23 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_configure): Skip empty elements when adding to
+       libsources.  Perl 4 bug reported by Greg A Woods.
+
+       * Makefile.am (perl4-check): New target.
+       (cvs-dist): Run perl4-check.
+
+       Perl 4 fixes.  Reported by Greg A. Woods:
+       * automake.in (file_contents_with_transform): If transform caused
+       all chars to go away, then skip rest of loop.
+       (handle_texinfo): Don't use "next" in arg to
+       file_contents_with_transform.
+       (handle_dependencies): Ditto.
+       (handle_tests): Ditto.
+
+       * m4/regex.m4 (AM_WITH_REGEX): Check for GNU regex in libc.  From
+       Andreas Schwab.
+
+       * automake.in (parse_arguments): Removed --strictness.
+       (handle_dist_worker): Don't use --strictness.
+       (handle_configure): Ditto.
+       (initialize_global_constants): Don't mention --strictness.
+
+       * automake.in (handle_merge_targets): Use all-recursive-am instead
+       of all-recursive-hack.  The latter is ugly, according to Joel
+       Weber.
+
+       * automake.in (handle_emacs_lisp): Push $(ELCFILES) onto @all.
+
+       * automake.in (do_one_clean_target): Allow -local version of clean
+       targets.
+
+Tue Dec  3 18:58:40 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dependencies): Skip C-only lines in
+       depend2.am when appropriate.
+       * depend2.am (.deps/%.P): Omit modification of $o if language is
+       not C.
+
+Tue Dec  3 11:29:01 1996  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * compile-kr.am: Quote arguments to echo.
+
+       * progs.am: Fix up problems when LIBTOOL is not defined (by
+       setting shell variable instprog to the installation program).
+
+       * aclocal.in (scan_file): Allow the acinclude.m4 file to override
+       any other macro files (but still prevent multiple definitions
+       within acinclude.m4).
+
+Tue Dec  3 10:40:48 1996  Tom Tromey  <tromey@cygnus.com>
+
+       From Ulrich Drepper:
+       * automake.in (handle_emacs_lisp): Typo fix.
+       (scan_configure): Only recognize VERSION after whitespace.
+
+       * texinfos.am: install-info requires path to info file.
+
+       * progs.am: Use @LIBTOOL@, not $(LIBTOOL).
+
+       * automake.in (am_install_var): If -ltlibs passed, substitute
+       @LIBTOOL@.
+
+Mon Dec  2 13:51:11 1996  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * automake.in (get_object_extension): Unshift ansi2knr onto the
+       all target, so that it builds before any other targets.
+       [de_ansi_objects]: Delete, since unshifting ansi2knr is an easier
+       solution.
+
+Mon Dec  2 12:13:27 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.1i.
+
+       From Janos Farkas:
+       * automake.in (handle_texinfo): Must quote $ for make.
+
+Sun Dec  1 15:08:09 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Correctly handle common case of
+       multiple non-Makefiles in AC_OUTPUT.  Require all input files when
+       using ":" syntax.
+
+Sun Nov 24 00:33:50 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_source_transform): Don't define
+       EXTRA_prog_SOURCES unnecessarily.  Test extra2.test.
+
+       * automake.in (initialize_per_input): New variables
+       included_generic_compile, included_knr_compile,
+       included_libtool_compile.
+       (get_object_extension): Use them.
+
+       * automake.in (handle_single_transform_list): Removed
+       Objective-C/C++ support (didn't really work anyway).
+       (handle_single_transform_list): Handle assembly specially.
+
+       * automake.in (handle_yacc_lex_cxx): Set --mode=compile or
+       --mode=link when running libtool.
+
+       * ltlibs.am: Set --mode=install when running libtool.
+       (uninstall-@DIR@PROGRAMS): Set --mode=uninstall when running
+       libtool.
+       * libtool.am (.c.lo): Set --mode=compile when running libtool.
+       * progs.am: Set --mode=install when running libtool.
+
+       Fix for bug reported by François Pinard:
+       * automake.in (do_check_merge_target): New sub.
+       (do_one_merge_target): No longer handle `check'.
+       (handle_merge_targets): Use do_check_merge_target.
+       (initialize_per_input): Set @check_tests.
+       (handle_tests): Push onto @check_tests, not @check.
+
+       * automake.in (am_install_var): Typo fix.
+       (handle_configure): Require $inputs[0].
+
+Fri Nov 22 00:01:45 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_lib_objects): Fixed error message
+       processing.
+
+Thu Nov 21 22:29:30 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_configure): AC_FUNC_FNMATCH doesn't add to
+       LIBOBJS.
+       (handle_configure): Support multi-":" mode for AC_OUTPUT.
+
+       * m4/header.m4: New file.
+
+       * automake.in (scan_configure): Recognize AM_CONFIG_HEADER.
+
+Wed Nov 20 00:23:42 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * acinstall: Allow commentary at end of "serial" line.  From Gord
+       Matzigkeit.
+
+       * automake.in (handle_yacc_lex_cxx): Only replace output header if
+       it has changed.
+
+Tue Nov 19 19:03:30 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (am_primary_prefixes): Allow configure variables to
+       be named after primary.
+       (am_install_var): Ditto.
+
+       * automake.in (initialize_per_input): Initialize output_header.
+       (generate_makefile): Set up output_header; print it before
+       output_rules.
+       (handle_footer): Put .SUFFIXES into output_header, for AIX.
+
+Mon Nov 18 19:11:53 1996  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * automake.in: Added a lot of libtool support.  New variable
+       prog_LDFLAGS to pass linker flags.  Use libtoolize to install
+       libtool support files.
+
+Mon Nov 18 13:29:55 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_lib_objects): Push @LIBOBJS@ and @ALLOCA@
+       onto dependency list.
+
+       * aclocal.in (obsolete_macros): Include AM_SANITY_CHECK_CC; now
+       part of autoconf proper.
+       * m4/ccsanity.m4: Removed.
+
+Sun Nov 17 12:25:17 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (check_typos): Check to make sure EXTRA_ variables
+       don't contain configure subs.
+       (handle_dist_worker): Removed EXTRA_DIST_DIRS; not needed.
+
+Fri Nov 15 18:58:04 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * tags-subd.am: Removed.
+
+       * tags.am (tags-recursive): Removed.
+       (TAGS): Depend on @DIRS@, @CONFIG@.  Use @CONFIG@ in rule.
+       (ID): From tags-subd.am.
+
+       * aclocal.in (obsolete_macros): Include AM_FUNC_FNMATCH.
+       * automake.in (scan_configure): Recognize AC_FUNC_FNMATCH.
+       * m4/fnmatch.m4: Removed (now in autoconf).
+
+       * automake.in (initialize_per_input): Init de_ansi_objects.
+       (handle_single_transform_list): Error if extension unrecognized.
+       Set elements of de_ansi_objects.
+       (get_object_extension): Don't push ANSI2KNR onto @all.
+       (handle_yacc_lex_cxx): Put ANSI2KNR into dependency of all ._o
+       files.
+       (pretty_print_internal): Initialize $bol depending on the column.
+
+Fri Nov 15 16:22:15 1996  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * library.am: Fixed references to LIBRARY according to new scheme.
+
+       * libs.am, libs-clean.am: Removed references to LIBFILES.
+
+       * automake.texi (A Library): doc fix
+
+       * automake.in (handle_libraries): Deleted references to *LIBFILES,
+       since we now have the full library name in the *LIBRARIES
+       variable.
+       (am_install_var): Removed `-no-all' option, which was only required
+       for the LIBFILES hack.
+
+Fri Nov 15 16:39:29 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in: Applied libtool-related patches from Gord.
+       (scan_configure): Set CC configure var if AM_PROG_LIBTOOL seen.
+       Also indicate that AC_CANONICAL_HOST was run.
+
+       * Makefile.am (pkgdata_DATA): Removed aclocal.m4.
+
+Thu Nov 14 23:11:09 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_yacc_lex_cxx): Don't auto-define YACC, LEX,
+       CXX, CC.
+
+       * dejagnu.am: Print warning if runtest missing.
+
+       From Joerg-Martin Schwarz:
+       * automake.in (handle_aclocal_m4): Find aclocal.m4 in srcdir.
+       (require_file_internal): Unlink file before creating it.
+
+       * depend2.am (.deps/%.P): Don't print commands when running.
+
+Mon Nov 11 10:35:08 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_single_transform_list): Simplified C++
+       matching expression.
+
+Fri Nov  8 09:49:09 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.1g.
+
+       * compile-kr.am ($(OBJECTS)): Removed.
+
+       * automake.in (get_object_extension): Define ANSI2KNR.  Push onto
+       @all if ansi2knr is in this directory.
+
+       * configure.in: Don't run AC_ARG_PROGRAM, AC_PROG_MAKE_SET.
+
+       * m4/init.m4: Run AM_SANITY_CHECK.
+
+       * m4/sanity.m4: New file.
+
+       * automake.in (handle_dist_worker): In Cygnus mode, possibly find
+       files to dist in build dir, not srcdir.
+       (%omit_dependencies): New global.
+       (scan_dependency_file): Handle OMIT_DEPENDENCIES.
+       (scan_configure): Put rx.h, regex.h on %omit_dependencies.  Ditto
+       libintl.h.
+       (handle_tests): Remove CYGNUS strings in Cygnus mode.
+       (handle_texinfo): Ditto.
+
+       * texinfos.am (dist-info): New target.
+
+       * automake.in (handle_dist_worker): Use DISTFILES, not
+       DEP_DISTFILES.
+       (initialize_per_input): Initialize dist_targets.
+       (handle_texinfo): Don't compute @infos_list; don't define or use
+       INFOS.  Put dist-info onto @dist_targets.
+       (handle_dist_worker): Handle @dist_targets.  Don't use the "echo
+       trick" for expanding DISTFILES any more.
+
+       * dist-vars.am (DEP_DISTFILES): Removed.
+       (DISTFILES): Don't include INFOS.
+
+       * automake.in (handle_texinfo): Handle Cygnus mode.
+       * texinfos.am (.texi.info, .texinfo.info): Handle Cygnus mode.
+
+       * automake.in (handle_single_transform_list): New sub.
+       (handle_source_transform): Use it.
+       (handle_built_sources): New sub.
+
+Thu Nov  7 14:49:16 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * remake.am ($(srcdir)/Makefile.in): Pass @ARGS@ to automake.
+       * remake-subd.am ($(srcdir)/Makefile.in): Pass @ARGS@ to
+       automake.
+       * automake.in (handle_configure): Pass --cygnus when running
+       automake again.
+
+       * remake-hdr.am ($(srcdir)/stamp-h.in): Depend on @FILES@, not
+       ACCONFIG, CONFIG_TOP, CONFIG_BOT.
+       * automake.in (handle_aclocal_m4): Always find aclocal.m4 in
+       top_srcdir.
+       (handle_configure): Don't define ACCONFIG, CONFIG_TOP, CONFIG_BOT;
+       instead substitute files directly.
+
+Wed Nov  6 10:22:26 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * remake-hdr.am (stamp-h): Look in top_builddir for
+       config.status.
+       ($(srcdir)/stamp-h.in): Look in top_srcdir for configure.in.
+
+Thu Oct 31 10:55:59 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfos.am (.texi.dvi): Set MAKEINFO when running texi2dvi.
+       From Jim Meyering.
+
+       * automake.in (handle_texinfo): Push install-info-am, not
+       install-info.
+       (handle_merge_targets): Handle no-installinfo option.
+
+       * texinfos.am (install-info-am): Renamed from install-info.
+
+       * automake.in (handle_subdirs): Include install-info-recursive if
+       no-installinfo given.
+
+       * subdirs.am: Include INSTALLINFO token.
+
+       * automake.in (handle_texinfo): Explicitly define MAKEINFO,
+       TEXI2DVI.
+       (cygnus_mode): New global.
+       (handle_dist_worker): Pass --cygnus to automake.
+       (initialize_global_constants): Document --cygnus.
+       (check_cygnus): New sub.
+       (handle_texinfo): Don't require texinfo.tex in Cygnus mode.
+
+       * texi-vars.am: Removed.
+
+       * dejagnu.am (check-DEJAGNU): Don't define rootme.
+
+       * automake.in (handle_tests): Define EXPECT, RUNTEST.
+
+       * dejagnu.am (EXPECT): Removed.
+       (RUNTEST): Removed.
+
+       * automake.in (define_program_variable): New sub.
+
+Mon Oct 28 10:43:48 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dependencies): Use -M, not -MM, for C++
+       dependencies.
+
+Thu Oct 24 20:21:50 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (check_libobjs_sources): New sub.  Test
+       libobj4.test.
+       (handle_source_transform): Don't check for auto-discovered source
+       files here.
+       (handle_programs): Run check_libobjs_sources here.
+       (handle_libraries): Ditto.
+
+       * automake.in (define_configure_variable): New function.
+       (get_object_extension): Use define_configure_variable.
+       (handle_yacc_lex_cxx): Ditto.
+       (handle_emacs_lisp): Ditto.
+       (configure_vars): New global.
+       (AC_CHECK_PATTERN): New global.
+       (seen_ranlib, seen_prog_cc, seen_prog_cxx, seen_prog_lex):
+       Removed.
+       (handle_yacc_lex_cxx): Use configure_vars, not seen_prog_*.
+       (AC_SUBST_PATTERN): New global.
+       (scan_configure): Use AC_SUBST_PATTERN; don't set seen_prog_*.
+       (handle_libraries): Don't use seen_ranlib.
+       (read_am_file): Run define_configure_variable on each discovered
+       variable.
+
+Mon Oct 21 23:06:49 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_configure): Handle AM_INIT_GUILE_MODULE.
+       (handle_libraries): Pass configure substitutions directly on to
+       LIBFILES.
+
+       * automake.in (AM_PACKAGE_VERSION_PATTERN): New global.
+       (scan_configure): Use it.  Test version.test.
+
+Sun Oct 20 12:08:46 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist_worker): Explicitly pass distdir to
+       dist-hook make.  From Tatu Ylonen.
+
+       * m4/strtod.m4: Use correct cache variable.
+
+Thu Oct 17 13:45:20 1996  Tom Tromey  <tromey@cygnus.com>
+
+       Lisp fixes from Erick Branderhorst:
+       * m4/lispdir.m4: Define lispdir, not LISPDIR.
+       * lisp.am: Added missing \.
+
+Fri Oct 11 00:44:49 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_source_transform): Only rewrite c, yacc, lex
+       to use de-ansi-fication.
+       (scan_configure): Handle multi-line AC_REPLACE_FUNCS.  Test
+       libobj5.test.
+
+       * automake.in (handle_lib_objects): Added $lex_seen argument.
+       Error if lex file used but LEXLIB not seen.
+       (handle_programs): Ditto.
+       (handle_yacc_lex_cxx): Define LEXLIB variable.
+       (handle_lib_objects): Don't allow LEXLIB to end up on dependency
+       list.
+
+Thu Oct 10 16:12:38 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_gettext): Moved check for SUBDIRS and
+       ABOUT-NLS here.
+
+       * automake.in (handle_configure): Run mkinstalldirs under
+       $(SHELL).
+       (handle_yacc_lex_cxx): Run interlock under $(SHELL).
+
+       * remake-subd.am (Makefile): Run config.status under $(SHELL).
+       * remake-hdr.am (stamp-h): Run config.status under $(SHELL).
+       * remake.am (Makefile): Run config.status under $(SHELL).
+       (config.status): Ditto.
+
+       * automake.in (read_am_file): Removed UNMAINT code.
+       (file_contents_with_transform): Ditto.
+       * m4/maintainer.m4: Removed bogus UNMAINT code.
+
+       * automake.in (handle_emacs_lisp): Define EMACS variable.
+       (handle_emacs_lisp): Make sure EMACS is in environment when
+       elisp-comp is run.
+
+       * elisp-comp: Exit with status 1 if usage bad.
+       Use "emacs -q".  Use EMACS environment variable if set (unless set
+       to t).
+
+       * m4/lispdir.m4: Unset EMACS if it is set to `t'.
+
+       * automake.in (handle_dist_worker): Allow EXTRA_DIST items to be
+       in subdirs.
+       (do_one_merge_target): Use all-am, not all, in subdirs case.
+       (handle_merge_targets): Always generate all-am in subdirs case.
+
+       * remake.am (Makefile): Depend on BUILT_SOURCES.
+       * remake-subd.am (Makefile): Depend on BUILT_SOURCES.
+       * depend.am (.deps/.P): Don't depend on BUILT_SOURCES.
+
+       * automake.in (handle_yacc_lex_cxx): Handle y.tab.h in non-ylwrap
+       case.
+
+       * ylwrap: Bug fix.  From Jim Meyering.
+
+Wed Oct  9 22:51:16 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/mktime.m4: Don't define AC_HEADER_SYS_TIME_H; instead just
+       check directly for header.
+
+Mon Oct  7 13:08:15 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_configure): fp_WITH_DMALLOC and fp_WITH_REGEX
+       are obsolete.
+
+Sun Oct  6 00:43:01 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (AC_CONFIG_AUX_DIR_PATTERN): New global.
+       (AM_INIT_AUTOMAKE_PATTERN): New global.
+       (scan_configure): Use them.
+
+       * aclocal.in (add_file): Search contents of included files.  Test
+       req.test.
+       (scan_m4_files): Don't skip acinclude.m4 when constructing
+       search.  Test acsilent.test.
+       (scan_m4_files): Scan acinclude.m4.
+
+       * aclocal.in (add_file): Removed debugging print.
+       (scan_configure): Set $file_contents when scanning acinclude.m4.
+       Test acinclude.test.
+
+       * configure.in: Upped to 1.1g.
+
+       * Released 1.1f.
+
+       * texinfos.am: Run : after install-info.
+
+       * aclocal.in (parse_arguments): Better error message.
+       * automake.in (parse_arguments): Better error message.
+
+       * remake.am (Makefile): Depend on $(srcdir)/Makefile.in, to work
+       around broken makes.  From David A. Swierczek.
+       * remake-subd.am (Makefile): Ditto.
+
+Sat Oct  5 11:29:48 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (generate_makefile): Put BUILT_SOURCES onto @all if
+       appropriate.
+       (handle_source_transform): Error if discovered source file is
+       mentioned.
+       (do_one_merge_target): Move all-vs-check test here.
+
+       * m4/obstack.m4: New file.
+       * m4/error.m4: New file.
+
+       * automake.in (scan_configure): Support AM_FUNC_MKTIME,
+       AM_FUNC_ERROR_AT_LINE, AM_FUNC_OBSTACK.
+
+       * texinfo.tex: New version from texinfo 3.9.
+
+       * automake.in (handle_yacc_lex_cxx): Updated for new ylwrap.
+       Also, handle y.tab.h file when "yacc -d" is used.
+       (do_one_merge_target): Use pretty_print_rule.
+
+       * ylwrap: Changed usage.
+
+       * m4/mktime.m4: New file.
+
+       * m4: Renamed all .m4 files to fit into 14-char limits.
+
+       * m4/Makefile.am (EXTRA_DIST): New macro.
+
+       * aclocal.in ($ac_defun_rx, %map, %file_contents): New globals.
+       (scan_m4_files): Use $ac_defun_rx.
+       (add_file): Ditto.
+       Run scan_m4_files.
+       (scan_configure): Scan acinclude.m4 before anything else.
+       (scan_file): New sub.
+       (check_acinclude): New sub.
+       (add_file): Rewrote.
+
+       * progs-clean.am, progs.am: Renamed from programs-clean.am,
+       programs.am.
+       * libs-clean.am, libs.am: Renamed from libraries-clean.am,
+       libraries.am.
+       * texi-vars: Renamed from texinfos-vars.am.
+       * comp-vars.am: Renamed from compile-vars.am.
+       * texi-vers.am: Renamed from texi-version.am.
+
+       * automake.in (require_file_internal): Give error if symlink can't
+       be made.
+       (require_config_file): Error message references configure.in.
+       (handle_yacc_lex_cxx): Fix order of arguments to ylwrap; from
+       Joerg-Martin Schwarz.
+       (handle_texinfo): Use texi-vers, not texi-version.
+       (get_object_extension): Use comp-vars, not compile-vars.
+       (handle_texinfo): Use texi-vars, not texinfos-vars.
+       (handle_libraries): Use `libs' prefix, not `libraries'.
+       (handle_programs): Use `progs' prefix, not `programs'.
+
+Fri Oct  4 01:14:08 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (scan_m4_files): New sub.
+
+       * m4/AM_FUNC_STRTOD.m4 (am_cv_func_strtod_needs_libm): Set
+       am_cv_func_strtod_needs_libm, so we can avoid linking with -lm
+       everywhere.
+
+Thu Oct  3 20:11:16 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfos.am (uninstall-info): Run install-info --remove.
+
+       * automake.in (read_am_file): Define all variables after reading
+       .am file.  Test vpath.test.  Reported by Anthony Green.
+
+Mon Sep 30 08:31:51 1996  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfos.am: Run install-info.
+
+       * automake.in (variable_value_as_list): Just return if comment
+       seen.  Report from Mark Galassi.
+       (handle_options): Don't bother with explicit comment checking.
+
+Tue Sep 24 09:15:46 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (read_am_file): Cleaned up dejagnu variables.
+
+Mon Sep 23 00:04:48 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (parse_arguments): New usage to conform to GNU
+       standards.
+
+       * aclocal.in (parse_arguments): New usage to conform to GNU
+       standards.
+
+       * automake.in (handle_scripts): Push new target onto @check.
+       * scripts.am (check-@DIR@SCRIPTS): New target.
+
+       * automake.in (initialize_global_constants): Define %dist,
+       dist_header, dist_trailer.
+       (handle_dist): Make dist-all target.
+       (generate_makefile): Run check_typos later.
+       (examine_variable): New sub.
+       (handle_tags): Examine TAGS_DEPENDENCIES.  Test spell3.test.
+       Error if TAGS_DEPENDENCIES but no sources used.
+       (handle_configure): Examine CONFIGURE_DEPENDENCIES.
+
+Sat Sep 21 13:59:15 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (am_install_var): More error checking.
+
+Fri Sep 20 09:06:37 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * tags.am (TAGS): Minor cleanup.
+
+       * clean.am (distclean-generic): Don't remove CONFIG_HEADER.
+
+       * remake-hdr.am (mostlyclean-hdr, clean-hdr, distclean-hdr,
+       maintainer-clean-hdr): New targets.
+
+       * automake.in (handle_configure): Define CONFIG_HEADER correctly
+       when it is in current directory.
+       (handle_configure): Push "hdr" on @clean.
+
+       * remake-hdr.am (stamp-h): Run config.status in top_builddir.
+       ($(srcdir)/stamp-h.in): Run autoheader in top_srcdir.
+
+       * automake.in (scan_configure): Check for install.sh here.
+       (basename): New sub.
+       (handle_configure): Handle case where config.h is in subdir.
+       (handle_configure): Make stamp-in.h for user if it doesn't already
+       exist.
+       (touch): New sub.
+
+Tue Sep 17 23:35:14 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * Makefile.am (EXTRA_DIST): Include pkgdata_DATA.
+
+       * dist-vars.am (DISTFILES): Don't distribute BUILT_SOURCES or
+       DATA.
+       (DEP_DISTFILES): Ditto.
+
+Mon Sep 16 22:28:56 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (check_typos): Renamed.
+       (check_typos): Check for _LDADD, _LIBADD, and _DEPENDENCIES.
+       (variable_defined): Note variable as being "seen".
+       (handle_lib_objects): Don't push configure substitutions onto
+       _DEPENDENCIES.
+
+Sun Sep 15 22:45:43 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (initialize_per_input): Init content_seen.
+       (variable_value_as_list): Set content_seen entry.
+       (define_variable): Ditto.
+       (define_pretty_variable): Ditto.
+       (check_source_typos): New sub.
+       (generate_makefile): Call it.
+
+Thu Sep 12 15:03:19 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_source_transform): Removed extraneous
+       space.  Test implicit.test.
+       (read_am_file): Make sure "canonical" variables are mentioned in
+       %contents.
+       (scan_configure): AC_CHECK_TOOL sets $seen_canonical to
+       $AC_CANONICAL_HOST conditionally.
+       (handle_footer): Don't use define_pretty_variable in all cases.
+
+Wed Sep 11 11:54:44 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * clean.am (distclean-generic): Remove CONFIG_CLEAN_FILES here,
+       per GNU/Gnits standards.
+
+       * libraries.am (install-@DIR@LIBRARIES): Use two loops, so new
+       NORMAL_INSTALL and POST_INSTALL variables can work when empty.
+
+       * automake.in (handle_options): Rewrote version handling.  Now
+       returns error indicator.
+       (MACRO_PATTERN, BOGUS_MACRO_PATTERN): Handle `:=' definitions.
+       (RULE_PATTERN): Exclude `:=' from being a rule.
+
+       * m4/AM_PROG_CC_STDC.m4 (ac_save_CC): Bug fix from Jim Meyering.
+
+       * automake.in (variable_value_as_list): Always use am_line_error.
+       (define_variable): New sub.
+       (get_object_extension): Use define_variable.
+       (handle_yacc_lex_cxx): Ditto.
+       (handle_source_transform): Ditto.
+       (handle_programs): Ditto.
+       (handle_libraries): Ditto.
+       (handle_texinfo): Ditto.
+       (handle_man_pages): Ditto.
+       (handle_dependencies): Ditto.
+       (handle_aclocal_m4): Ditto.
+       (define_pretty_variable): New sub.
+       (handle_source_transform): Use define_pretty_variable.
+       (handle_lib_objects): Ditto.
+       (handle_libraries): Ditto.
+       (handle_dist): Ditto.
+       (handle_dependencies): Ditto.
+       (handle_configure): Ditto.
+       (handle_footer): Ditto.
+       (handle_emacs_lisp): Ditto.
+       (am_install_var): Ditto.
+
+       * Released version 1.1e.
+
+       * automake.in ($GNITS_VERSION_PATTERN): Handle non-alpha
+       releases.
+
+       * configure.in: Version 1.1e.
+
+       * automake.in (handle_texinfo): Distribute .info file.
+
+Sun Sep  8 09:00:37 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * Makefile.am (EXTRA_DIST): New macro.
+       (maintainer-clean): Don't run "make check".
+       (pathchk): New target.
+
+       * automake.in (check_gnits_standards): Only check version number
+       syntax at top level.
+       ($package_version_line): New variable.
+       (scan_configure): Set it.
+       (check_gnits_standards): Use am_conf_line_error.
+       (scan_configure): Remove extraneous whitespace from version
+       number.
+       (handle_dist): Handle distcheck-hook.
+
+       * m4/AM_PROG_CC_STDC.m4: Applied patch from Jim Meyering.
+
+       * automake.in (scan_configure): Handle AM_WITH_REGEX.
+       (handle_lib_objects): Require .h files in %libsources but don't
+       generate dependencies for them.
+       (scan_configure): Also require rx.h and regex.h.
+
+       * m4/Makefile.am (m4data_DATA): Don't include AM_PROG_LIBTOOL,
+       AM_FEATURE_CTYPE, AM_FEATURE_ERRNO, AM_FEATURE_EXIT,
+       AM_SYSTEM_HEADER.
+
+       * texi-version.am: Use "cp; rm" and not "mv", to work around
+       broken mvs.
+
+       * automake.in ($package_version): New global.
+       (scan_configure): Set it.
+       (check_gnits_standards): Verify version string; require
+       README-alpha if alpha version.
+       (scan_configure): Recognize AM_FUNC_FNMATCH,
+       AM_REPLACE_GNU_GETOPT.
+
+       * Makefile.am (installcheck-local): Check all scripts.
+
+Sat Sep  7 19:22:32 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * tags-clean.am: Do deletions here again.
+
+Thu Sep  5 09:06:23 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (usage): Include bug-reporting information.
+       (handle_lib_objects): Error if LIBOBJS seen but never set.
+
+       * aclocal.in ($acdir): Use @datadir@/aclocal.
+       (usage): Include bug-reporting information.
+
+Wed Sep  4 11:36:06 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_source_transform): .deps no longer in
+       srcdir.
+       (handle_lib_objects): Ditto.
+       (handle_dist_worker): Pass --build-dir to automake.
+       ($build_directory): New global.
+       (parse_arguments): Handle --build-dir.
+       (initialize_global_constants): Include --build-dir in help.
+       (scan_dependency_file): New sub.
+       (handle_dependencies): Use it.  Also, use $build_directory.
+       (initialize_global_constants): Added --srcdir-name.
+       (parse_arguments): Ditto.
+       (handle_dist_worker): Ditto.
+       ($srcdir_name): New global.
+       ($srcdir_rx): New global.
+       (parse_arguments): Set it.
+
+       * depend2.am: Removed all mention of $(srcdir).
+
+       * depend.am (MKDEP): Use gcc -M, not gcc -MM.
+       Removed all mention of $(srcdir); dependencies now put into build
+       dir.
+
+       * depend2.am ($(srcdir)/.deps/%.P): Fixed computation of `top'.
+       Don't do work silently.
+
+       * automake.in (handle_merge_targets): Error if invalid uninstall
+       targets are given.
+       (read_am_file): Fix for test block.test.
+
+Tue Sep  3 18:50:32 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * texinfos.am (install-info): Added NORMAL_INSTALL.
+       * scripts.am (install-@DIR@SCRIPTS): Added NORMAL_INSTALL.
+       * programs.am (install-@DIR@PROGRAMS): Added NORMAL_INSTALL.
+       * lisp.am (install-@DIR@LISP): Added NORMAL_INSTALL.
+       * libraries.am (install-@DIR@LIBRARIES): Added NORMAL_INSTALL.
+       Also, use POST_INSTALL when running ranlib.
+       * header.am (install-@DIR@HEADERS): Added NORMAL_INSTALL.
+       * data.am (install-@DIR@DATA): Added NORMAL_INSTALL.
+
+       * automake.in (handle_man_pages): Added NORMAL_INSTALL invocation.
+       (handle_merge_targets): Ditto.
+       (handle_merge_targets): Error if PRE_INSTALL, POST_INSTALL, or
+       NORMAL_INSTALL defined.
+
+       * m4/AM_PROG_INSTALL.m4: INSTALL_SCRIPT defaults to
+       ${INSTALL_PROGRAM}.  From François Pinard.
+
+Tue Aug 27 08:25:05 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (file_contents_with_transform): Correctly remove
+       @(UN)?MAINT@ from input when maintainer mode not active.
+       (handle_aclocal_m4): Handle no-maintainer-mode case.
+
+       * remake-hdr.am ($(CONFIG_HEADER)): Removed @MAINT@.
+
+       * m4/AM_SANITY_CHECK_CC.m4: New file (from Jim Meyering).
+
+Mon Aug 26 21:37:32 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_lib_objects): Bug fix from Steve M Robbins.
+       (handle_libraries): Don't include libraries from EXTRA_LIBRARIES
+       in LIBFILES definition.  Reported by Steve M Robbins.  Test
+       alllib.test.
+
+       * automake.in (variable_value_as_list): New sub.
+       (handle_source_transform): Use it.
+       (handle_lib_objects): Ditto.
+       (handle_libraries): Ditto.
+       (handle_texinfo): Ditto.
+       (handle_man_pages): Ditto.
+       (am_install_var): Ditto.
+       (handle_options): Ditto.
+
+Sat Aug 24 09:30:46 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       Reported by Jim Meyering:
+       * automake.in (get_object_extension): Look in "./" for ansi2knr if
+       no path found.
+       (handle_aclocal_m4): Protect aclocal.m4 rule with @MAINT@.
+
+       * remake.am (.PHONY): New target.
+
+       * m4/AM_MAINTAINER_MODE.m4: Also define UNMAINT.
+
+       * automake.in (check_gnu_standards): Disallow no-installman,
+       no-installinfo.
+       (read_am_file): Sed out UNMAINT too.
+       (file_contents_with_transform): Ditto.
+
+       * acinstall: New file.
+
+       * m4/AM_INIT_AUTOMAKE.m4: Define PACKAGE and VERSION.
+
+       * m4/AM_WITH_REGEX.m4: New version from François Pinard.
+
+       * m4/AM_TYPE_PTRDIFF_T.m4: Use am_cv, not ac_cv.
+       * m4/AM_C_PROTOTYPES.m4: Ditto.
+       * m4/AM_FUNC_STRTOD.m4: Ditto.
+       * m4/AM_PROG_CC_STDC.m4: Ditto.
+       * m4/AM_PROG_LIBTOOL.m4: Ditto.
+
+Fri Aug 23 22:23:50 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * m4/Makefile.am (m4datadir): New macro
+       (m4data_DATA): Renamed.
+
+       * Makefile.am (cvs-dist): Depend on distcheck target.
+
+Mon Aug 19 15:37:32 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (initialize_global_constants): [common_files]
+       Include acinclude.m4.
+
+       * m4/AM_PROG_CC_STDC.m4: Patch from Jim Meyering/Kaveh Ghazi.
+
+Sat Aug 17 11:27:14 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_dependencies): Push `depend'-clean targets
+       on @clean.
+       * depend.am (mostlyclean-depend, clean-depend, distclean-depend,
+       maintainer-clean-depend): New targets.
+
+Tue Aug 13 17:53:58 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * texinfos.am (.texinfo.info): New target.
+       (.texinfo.dvi): New target.
+
+       From Jim Meyering:
+       * automake.in (handle_texinfo): Use `.info[-0-9]*' as pattern to
+       match info files.
+       (handle_texinfo): Handle `.texinfo' files.
+
+Mon Aug 12 10:28:46 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (require_file_internal): Special-case `.' when
+       finding files to distribute.  Test libobj2.test.
+
+       * aclocal.in (add_file): Fixed regexp for matching AC_DEFUN.  Test
+       order.test.
+
+       * m4/AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL.m4: New file.
+       * m4/AM_SYS_POSIX_TERMIOS.m4: New file.
+
+       * compile-kr.am: Removed duplicate ansi2knr rules.
+
+Sun Aug 11 00:20:16 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_yacc_lex_cxx): Bug fix from Josh MacDonald.
+       (handle_yacc_lex_cxx): Put C++ extensions on suffix list.
+       (mkdir): Removed.
+
+       * automake.in (initialize_global_constants): [common_files]
+       Include interlock and ylwrap.
+
+       * Released version 1.1c.
+
+       * aclocal.in (obsolete_macros): md_TYPE_PTRDIFF_T and
+       ud_PATH_LISPDIR are obsolete names.
+
+       * m4/AM_LC_MESSAGES.m4, m4/AM_WITH_NLS.m4, m4/AM_GNU_GETTEXT.m4:
+       Removed.
+
+       * automake.in (handle_lib_objects): Changed interface.  Now
+       generates _DEPENDENCIES variable if appropriate.
+       (handle_emacs_lisp): Use AM_PATH_LISPDIR.
+       (scan_configure): Ditto.
+
+       * Makefile.am (CLEANFILES): Removed.
+
+       * automake.in (handle_configure): Define CONFIG_CLEAN_FILES.
+
+       * clean.am (clean-generic): Remove $(CONFIG_CLEAN_FILES).
+
+       * compile-vars.am (CC, CFLAGS, COMPILE, LINK): Removed.
+
+       * automake.in (handle_yacc_lex_cxx): Require ylwrap in
+       multi-lex/yacc case.
+       (handle_source_transform): Changed return result.
+       (handle_programs): Use linker returned by
+       handle_source_transform.
+       (seen_prog_cc, seen_prog_cxx): New globals.
+       (scan_configure): Recognize AC_PROG_CC and AC_PROG_CXX.
+       (handle_yacc_lex_cxx): Error message if AC_PROG_CXX or
+       AC_PROG_YACC missing.
+       (seen_decl_yytext, seen_prog_lex): New globals.
+       (scan_configure): Set them.
+       (handle_yacc_lex_cxx): Warn about missing AC_PROG_LEX or
+       AC_DECL_YYTEXT.
+       (handle_yacc_lex_cxx): Use $(LEX_OUTPUT_ROOT).
+       (initialize_per_input): Initialize seen_c_source.
+       (handle_yacc_lex_cxx): Define CC, CFLAGS, COMPILE, LINK only when
+       C source seen.
+       (handle_source_transform): Set seen_c_source.
+
+       * interlock: Changed usage.
+
+       * ylwrap: New file.
+
+       * automake.in (handle_yacc_lex_cxx): Renamed.
+
+       * automake.in (handle_dependencies): Handle %cxx_extensions.
+       Include depend2.am when appropriate.
+
+       * depend2.am: New file; contents from depend.am but templatized.
+
+       * automake.in (initialize_per_input): Initialize
+       %cxx_extensions.
+       (handle_source_transform): Set %cxx_extensions.
+
+Sat Aug 10 10:29:30 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * interlock: New file.
+
+       * automake.in (handle_yacc_lex): New sub.
+       (handle_source_transform): Removed most yacc/lex handling.
+       (initialize_per_input): Init yacc_sources, lex_sources.
+       (generate_makefile): Run handle_yacc_lex.
+       (handle_merge_targets): Use `scalar' and not $# to find length of
+       array.
+
+       * m4/AM_FEATURE_EXIT.m4: Wrote.
+       * m4/AM_FEATURE_CTYPE.m4: Wrote.
+       * m4/AM_FEATURE_ERRNO.m4: Wrote.
+
+       * aclocal.in (macro_seen): New global.
+       (add_file): Set macro_seen entry.  Only push required macro on
+       @rlist if not already seen.  Test defun.test.
+
+       * automake.in (get_object_extension): Handle directory prefix on
+       `ansi2knr' option.
+
+       * kr-extra.am: New file.
+
+       * kr-vars.am: Removed.
+
+       * automake.in (handle_options): Handle directory prefix on
+       `ansi2knr' option.
+
+       * automake.in (scan_configure): Recognize AM_FUNC_STRTOD.
+
+       * aclocal.in (add_file): Error if macro is duplicated.  Test
+       dup.test.
+
+Fri Aug  9 09:18:46 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_programs): Substitute @XLINK@.  Make sure
+       linker variable is transformed name.
+       * program.am (@PROGRAM@): Use @XLINK@ to link.
+
+       * automake.in (handle_scripts): Fixed call to
+       am_primary_prefixes.
+       (handle_libraries): Better error message when AC_PROG_RANLIB
+       required.
+
+       * automake.in (handle_libraries): Canonicalize library name.  Test
+       canon4.test.
+       * library.am (lib@LIBRARY@.a): Use @XLIBRARY@ where appropriate.
+       (lib@LIBRARY@.a): Look at _DEPENDENCIES variable.
+
+Thu Aug  8 10:57:21 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_scripts): Correctly compute
+       $scripts_installed.  Test scripts.test.
+
+Wed Aug  7 12:13:15 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * ansi2knr.c: New version.
+
+Tue Aug  6 10:58:37 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_source_transform): Handle more C++ file
+       extensions.  "Handle" Objective C.  Handle more FORTRAN
+       extensions.
+
+       * compile-vars.am (LEX): Removed.
+       (YACC): Removed.
+
+       * automake.in (handle_source_transform): Correctly handle lex
+       source.  Test lex.test.
+       (handle_source_transform): Skip more C++ headers.  Generate macro
+       definitions for YACC and LEX on first use.
+
+       * aclocal.in (parse_arguments): Mention GNU.
+       * automake.in (parse_arguments): Mention GNU.
+
+Mon Aug  5 00:12:45 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_programs): Define program_LINK.
+       * program.am (@PROGRAM@): Use program_LINK to link.
+
+       * Released version 1.1b
+
+       * automake.in (scan_configure): AM_INIT_AUTOMAKE sets
+       seen_prog_install to `2'.
+
+       * configure.in: Don't run AM_PROG_INSTALL.
+
+       * automake.in (parse_arguments): Use $PACKAGE.
+       ($PACKAGE): New global.
+       ($am_c_prototypes): Renamed.
+       (get_object_extension): Use am_c_prototypes.
+       (scan_configure): Ditto.
+       (scan_configure): Use AM_MAINTAINER_MODE.
+       (scan_configure): Warn about obsolete macros.
+
+       * aclocal.in (parse_arguments): Use $PACKAGE.
+       ($PACKAGE): New global.
+
+       * Makefile.am (CLEANFILES): Added aclocal.
+       (ETAGS_ARGS): Added aclocal.in.
+       (TAGS_DEPENDENCIES): Ditto.
+       (maintainer-check): Depend on aclocal.
+       (maintainer-check): Check aclocal.
+       (bin_SCRIPTS): Include aclocal.
+
+       * automake.in (scan_configure): Handle AM_INIT_AUTOMAKE.
+       (scan_configure): Use AM_PROG_INSTALL.
+
+       * configure.in: Use AM_INIT_AUTOMAKE.
+
+       * automake.in (keyed_aclocal_warning): Warning tells about
+       aclocal.
+       (handle_aclocal_m4): New sub.
+       (handle_configure): Use it.
+
+       * aclocal.in (output_file): New global.
+       (usage): Handle --output.
+       (parse_arguments): Handle --output.
+
+       * m4/AM_INIT_AUTOMAKE.m4: New file.
+
+       * m4/AM_PROG_CC_STDC.m4: Require AC_PROG_CC.
+       Don't touch CFLAGS.
+
+       * automake.in (handle_dist_worker): Reverted erroneous "-chmod".
+       (handle_texinfo): Don't generate `.info-[0-9]' as a filename.
+
+       * texinfos.am (.texi.info): Force .info file to be built in
+       srcdir.  From Franc,ois Pinard.
+
+       From Jim Meyering:
+       * m4/AM_PROG_CC_STDC.m4: (fp_PROG_CC_STDC): Include sys/stat.h in
+       test program so that DYNIX/ptx V4.1.3 doesn't use `-Xc
+       -D__EXTENSIONS__' -- with those options on that system, sys/stat.h
+       gets compile errors.  With help from Marcus Daniels.
+
+       * automake.in (initialize_global_constants): Put elisp-comp into
+       @common_files.  Bug from Glenn Amerine.
+
+Sun Aug  4 12:52:43 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_dist_worker): Use fgrep, not grep.
+
+       * m4/AM_C_PROTOTYPES.m4: Changes from François Pinard.
+
+       * automake.in (handle_emacs_lisp): Include lisp-clean.am in
+       output.
+       (initialize_global_constants): [install_man_format] Don't hide
+       "ugliness" at install time.
+
+       * lisp-clean.am: New file.
+
+       * tags-clean.am (maintainer-clean-tags): Remove TAGS and ID here.
+
+       * automake.in (handle_man_pages): Patch from Janos Farkas to fix
+       bug when installing man pages.  Test man.test.
+       (initialize_global_constants): [install_man_format] Make sure man
+       page can actually be found in either source or build dirs.
+       (handle_dist_worker): Use "755" permissions on distdir.
+
+       * automake.in (handle_dist): Allow chmod's to fail.
+       (am_primary_prefixes): New function.
+       (am_install_var): Use it.
+       (handle_libraries): Use it.  Test libfiles.test.
+       (handle_dist): For dist-tarZ, assume traditional "tar" and
+       "compress".
+
+       * m4/AM_FUNC_STRTOD.m4: New file.
+
+       * automake.in (handle_dist): Only generate `distdir' variable if
+       it doesn't already exist.
+
+       Fix for bug reported by Harlan Stenn.  Test tags.test.
+       * automake.in (initialize_per_input): Define dir_holds_sources.
+       (handle_tags): Check dir_holds_headers.
+       (handle_headers): Set dir_holds_headers.
+
+       * automake.in (handle_texinfo): Generate "version.texi" dependency
+       for .dvi file.  Bug reported by Glenn Amerine.  Test vtexi2.test.
+
+       * automake.in (handle_configure): Require file $input, not
+       "$local.in".  From Nyul Laszlo.  Test colon.test.
+
+Sun Jul 28 11:14:52 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * aclocal.in: New file.
+       * configure.in: Generate m4/Makefile, aclocal.
+       * Makefile.am (SUBDIRS): Include m4.
+       * m4/Makefile.am: New file.
+
+Fri Jul 19 10:12:27 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (initialize_global_constants): Put ansi2knr.c and
+       ansi2knr.1 into common_files.  Bug report from François Pinard.
+
+Mon Jul 15 10:28:29 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * install-sh: Updated copyright notice.
+
+Fri Jul  5 08:23:00 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * subdirs.am (maintainer-clean-recursive): Don't be so noisy.
+       Report from Josh MacDonald.
+
+       Bugs from Gord Matzigkeit:
+       * automake.in (handle_footer): Push contents of $(SUFFIXES), not
+       `$(SUFFIXES)'.
+       (handle_dist): Ignore chmod return results.
+
+       * programs-clean.am (clean-@DIR@PROGRAMS): Work around failing
+       Solaris "rm -f".  Bug from Kaveh R. Ghazi.
+       * libraries-clean.am (clean-@DIR@LIBRARIES): Likewise.
+
+Fri Jun 21 10:42:06 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * texinfos.am (install-info): Use "if", not "&&", to avoid
+       install problem when glob doesn't match.
+
+       * automake.in (initialize_global_constants): [USAGE] Added
+       --no-force.
+       (force_generation): New global.
+       (parse_arguments): Handle --no-force.
+       (generate_makefile): Handle --no-force.
+
+       * Makefile.am (maintainer-check): Ensure all invocations of
+       mkinstalldirs are correct.
+
+Tue Jun 18 10:53:54 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_tests): Don't directly generate site.exp.
+
+Sun Jun 16 22:21:16 1996  Harlan Stenn  <harlan@brown.pfcs.com>
+
+       * automake.in:  Treat an initial `#' on a word in AUTOMAKE_OPTIONS
+       as a comment start.  Add support for a dist-tarZ target.
+
+Tue Jun 11 22:14:21 1996  Marcus Daniels  <marcus@sayre.sysc.pdx.edu>
+
+       * depend.am ($(srcdir)/.deps/%.P): Convert absolute $(top_srcdir)
+       paths into relative paths.
+
+Mon Jun 10 21:11:20 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * texinfo.tex: New version.
+
+       * automake.in: Look for AM_PROG_LIBTOOL.  From Gord Matzigkeit.
+       (initialize_global_constants): Added libtool to
+       @common_sometimes.
+       (handle_source_transform): Pass YFLAGS to yacc and LFLAGS to lex.
+
+Sun Jun  9 17:45:48 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * texinfos.am (install-info): Don't install ~ files.  Bug report
+       from Greg McGary.
+       * automake.in (handle_texinfo): Don't push '.info*' onto
+       @infos_list.
+
+       * automake.in (handle_gettext): Ensure po and intl in SUBDIRS when
+       using gettext.
+       (handle_dist): Pass --with-included-gettext to configure if using
+       gettext.
+
+       * compile-kr.am (._c._o): Pass -c to $(COMPILE).
+       (.c._o): Ditto.
+       * compile.am (.c.o): Pass -c to $(COMPILE).
+       * compile-vars.am (COMPILE): Don't include -c.
+
+       * remake.am ($(srcdir)/Makefile.in): Pass --strictness to
+       automake.
+       * automake.in (handle_configure): Supply --strictness arg to
+       automake.
+
+Fri Jun  7 12:31:31 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_tests): Fix quoting on `pwd`.
+       (handle_options): Recognize no-installinfo option.
+       (handle_man_pages): Don't put man directory on @installdirs if
+       no-installman is specified.
+       (handle_texinfo): Handle no-installinfo option.
+       (handle_options): Compare version against $num_version, not
+       $VERSION.
+       (handle_source_transform): Generate rules for output of lex,
+       yacc.  Bug report from Thomas Morgan.  Test yacc.test.
+       (handle_dist): "distcheck" now runs "make dvi".
+       (handle_tests): Support $(TESTS_ENVIRONMENT).  Idea from Ulrich
+       Drepper.
+
+       * dejagnu.am (check-DEJAGNU): Depend on site.exp.
+
+Sun Jun  2 10:33:10 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_emacs_lisp): New function.
+       (initialize_global_constants): Added elisp-comp to
+       @common_sometimes.
+       (seen_lispdir): New global.
+       (scan_configure): Handle ud_PATH_LISPDIR.
+
+       * elisp-comp: New file.
+
+       * lisp.am: New file.
+
+       * automake.in (generate_makefile): Run handle_emacs_lisp.
+
+       * aclocal.m4 (ud_PATH_LISPDIR): New macro, from Ulrich Drepper.
+
+       * automake.in (initialize_global_constants): Removed version.texi
+       from common_sometimes.
+       (initialize_global_constants): Added texinfo.tex to common_files.
+       Test texinfo.test.
+       (handle_tests): Allow dejagnu- and automake-style test suites to
+       coexist.  Test dejagnu.test.
+       (initialize_global_constants): New constants AC_CANONICAL_HOST,
+       AC_CANONICAL_SYSTEM.
+       (scan_configure): Use new constants.
+       (handle_tests): Put target specific information into site.exp if
+       AC_CANONICAL_* used.
+       (read_am_file): Generate some extra variables when AC_CANONICAL_*
+       used.
+       (handle_options): Allow version number to have letters appended.
+       (handle_tests): Error if RUNTEST, RUNTESTFLAGS defined but dejagnu
+       option not specd.
+       (initialize_global_constants): install_man_format changed to
+       handle built man pages.
+
+Wed May 29 10:35:01 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * config.guess, config.sub: New versions.
+
+Tue May 28 19:27:11 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * configure.in (VERSION): Upped to 1.0.
+
+Sat May 25 10:19:53 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_tests): Handle dejagnu.
+       (handle_options): Recognize dejagnu option.
+
+       * dejagnu.am: New file.
+
+Thu May 23 10:01:13 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_dist): Run installcheck target from
+       distcheck.
+
+       * configure.in (VERSION): Upped to 0.34.
+
+       * automake.in (scan_configure): Always allow upgrading to
+       fp_PROG_INSTALL.  Test fpinstall.test.
+
+Wed May 22 14:45:28 1996  Joshua Cowan  <jcowan@hermit.reslife.okstate.edu>
+
+       (handle_dist): Make `distcheck' check `install' target, too.
+
+Wed May 22 09:49:27 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (initialize_per_input): Don't initialize
+       $output_directory here; initialize it globally.  From Joshua
+       Cowan.  Test outdir.test.
+
+Sat May 18 10:57:40 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_tests): Don't push TESTS onto dist_common.
+       (initialize_global_constants): Put install-sh and mkinstalldirs
+       into @common_files.  Test insh2.test.
+
+Fri May 17 09:02:02 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_source_transform): Don't generate _OBJECTS
+       when no source files specified.  Test number.test.
+
+       From Joerg-Martin Schwarz:
+       * automake.in (seen_package, seen_version): New globals.
+       (scan_configure): Look for PACKAGE= and VERSION=.
+
+       * automake.in (handle_options): Recognize dist-zip.
+       (handle_dist): Handle dist-zip.
+       (handle_options): Use ' ', not \s+, with split.  Test
+       backsl.test.
+       (handle_source_transform): Likewise.
+       (handle_lib_objects): Likewise.
+       (handle_libraries): Likewise.
+       (handle_texinfo): Likewise.
+       (handle_man_pages): Likewise.
+       (handle_subdirs): Likewise.
+       (handle_gettext): Likewise.
+       (handle_footer): Likewise.
+       (handle_tests): Likewise.
+       (scan_configure): Likewise.
+       (am_install_var): Likewise.
+
+       * Makefile.am (TAGS_DEPENDENCIES): New macro.
+
+       * tags.am (tags-recursive): New target.
+       (TAGS): Depend on it.
+
+       * automake.in (handle_tags): Put tags-recursive on @phony.
+
+       * tags-subd.am (TAGS): Depend on HEADERS, SOURCES,
+       TAGS_DEPENDENCIES.
+       * tags.am (TAGS): Depend on HEADERS, SOURCES, TAGS_DEPENDENCIES.
+
+Thu May 16 09:21:48 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * remake.am (configure): Depend on $(CONFIGURE_DEPENDENCIES).
+
+       * automake.in (scan_configure): Look for install-sh and
+       mkinstalldirs here.
+       (initialize_global_constants): Moved mdate-sh from
+       common_sometimes to common_files.  Test mdate2.test.
+
+Tue May 14 21:52:01 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (seen_maint_mode): New global.
+       (scan_configure): Handle jm_MAINTAINER_MODE.
+       (read_am_file): Handle seen_maint_mode.
+       (file_contents_with_transform): Handle seen_maint_mode.
+       (handle_source_transform): Changed interface, all callers.
+
+       From Jim Meyering:
+       * remake-hdr.am, remake-subd.am, remake.am, texi-version.am:
+       Handle @MAINT@.
+       * aclocal.m4 (jm_MAINTAINER_MODE): New macro.
+
+       * automake.in (handle_configure): Check $config_aux_dir against
+       empty string.  From Markku Rossi.  Test mkinstall.test.
+
+Fri May 10 14:38:47 1996  Gord Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * automake.in (distcheck): Added new rule to top level
+       Makefile.in.
+
+Wed May  8 21:57:21 1996  Gord Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * automake.in (scan_configure): Make sure that gm_PROG_LIBTOOL
+       sets seen_ranlib.
+       (generate_makefile): libtool, config.sub, and config.guess should
+       only ever appear in the top directory of a package.
+
+Tue May 14 10:24:30 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (initialize_global_constants): Added libversion.in
+       to @common_files.
+
+       * configure.in (VERSION): Upped to 0.33.
+
+       * automake.in (am_install_var): Fixed problem in EXTRA_ handling.
+       Test extra.test.
+
+Mon May 13 10:41:41 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * install-sh (transformbasename): Correct misspelling of
+       transformbasename.  From Ian Lance Taylor.
+
+Sat Apr 27 11:39:10 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_configure): Set mkinstalldirs variable
+       here.
+       (handle_dist_worker): Explicitly set distdir in subdir makes.
+       (handle_dist): Handle separate distdir target.
+       (handle_dist_worker): Only generate distdir target.
+
+       * texinfos.am (install-info): Use $(mkinstalldirs).
+       * scripts.am (install-@DIR@SCRIPTS): Use $(mkinstalldirs).
+       * programs.am (install-@DIR@PROGRAMS): Use $(mkinstalldirs).
+       * libraries.am (install-@DIR@LIBRARIES): Use $(mkinstalldirs).
+       * header.am (install-@DIR@HEADERS): Use $(mkinstalldirs).
+       * data.am (install-@DIR@DATA): Use $(mkinstalldirs).
+
+       * automake.in (read_am_file): Set mkinstalldirs variable.
+       (handle_man_pages): Use it.
+       (handle_installdirs): Ditto.
+
+Fri Apr 26 15:10:48 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_man_pages): Fix mkinstalldirs invocation.
+
+Thu Apr 25 18:40:06 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_dist_worker): Use $(TAR), not tar.
+       (handle_merge_targets): Make sure config header is built before
+       recursing into subdirs.
+       (handle_libraries): Generate LIBFILES for check_LIBRARIES.
+       (handle_merge_targets): Handle case where nothing is installed but
+       something must be built -- "make install" must still work.
+
+       * dist-vars.am (TAR): New macro.
+
+       * automake.in (scan_configure): Support AC_REPLACE_GNU_GETOPT.
+       (handle_configure): Require stamp-h.in when config header used.
+
+Tue Apr 23 17:57:13 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * doc/mdate-sh: Extract the last field from the date output, not
+       the sixth, which will fail when the timezone name has more than
+       one word or is missing.
+
+Wed Apr 24 20:29:26 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (am_install_var): Use delete, not undef, to remove
+       EXTRA entry.  From Gord Matzigkeit.
+
+Mon Apr 22 17:48:50 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (read_am_file): Handle case where last line doesn't
+       end in newline.
+
+Tue Apr  9 22:53:16 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (variable_defined): New function.
+       (read_am_file): Ensure a blank line comes before starting comments
+       from Makefile.am.
+       (initialize_per_input): Initialize %targets.
+       (read_am_file): Set appropriate entry in %targets.
+       Many changes to use variable_defined.
+       (check_gnu_standards): Only require ChangeLog at top level.  From
+       Gord Matzigkeit.
+       (handle_tests): check-TESTS depends on $(TESTS).  From Gord
+       Matzigkeit.
+
+Mon Apr  8 22:51:41 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (parse_arguments): Added short options.
+       (initialize_global_constants): Ditto.
+
+Fri Apr  5 00:22:14 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * mkinstalldirs (errstatus): Don't necessarily die if mkdir
+       fails.
+
+       * automake.in (handle_source_transform): Typo fix.
+
+Thu Apr  4 15:10:50 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_dist_worker): Renamed dist-local to
+       dist-hook.
+       (handle_merge_targets): Added install-data-hook and
+       install-exec-hook.
+       (handle_source_transform): Handle EXTRA_prog_SOURCES form.
+
+       * automake.in (handle_scripts): Never allow scripts_installed to
+       become 0.
+
+       * scripts.am (install-@DIR@SCRIPTS): Scripts can be found in
+       srcdir.
+
+       * automake.in (generate_makefile): Derived file names from given
+       input; don't assume Makefile.in and Makefile.am.
+       (am_file_name, in_file_name): New globals.
+       (read_am_file): Use them.
+
+       * program.am (@PROGRAM@): Use transformed program name.
+
+       * remake-hdr.am (stamp-h): Actually touch stamp-h.
+
+Wed Apr  3 15:16:06 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (require_file_internal): Use correct file for error
+       messages.  Test insh.test.
+
+Mon Apr  1 09:47:44 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * texinfos.am (.texi.info): Build output file in srcdir.
+
+       * automake.in (require_file_internal): If $dir is ".",then look in
+       relative directory.
+       (handle_texinfo): Canonicalize name of texi file before looking
+       for dependency variable.
+
+Thu Mar 28 08:33:21 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (require_conf_file_with_conf_line): Yet another
+       function of this form.
+       (libtool_line): New variable.
+       (handle_libraries): Handle libtool.
+
+       * libraries-vars.am: Removed.
+
+       * automake.in (seen_libtool): New variable.
+       (scan_configure): Look for gm_PROG_LIBTOOL or AC_PROG_LIBTOOL.
+
+       * automake.in (handle_dist_worker): Handle dist-local.
+
+       * Makefile.am (maintainer-check): Do "make check" after all syntax
+       checks.
+
+       * texi-version.am (stamp-@VTI@): Look for mdate-sh in appropriate
+       directory.
+
+       * automake.in ($seen_arg_prog): New global.
+       (handle_programs): Error if AC_ARG_PROGRAM not seen.
+       (handle_scripts): Ditto.
+       (handle_configure): mkinstalldirs now a config file.
+       (handle_installdirs): Find mkinstalldirs in config_aux_dir.
+       (handle_dist_worker): Removed DIST_SUBDIRS.
+       (require_file_path): New variable.
+       (require_file_with_conf_line): Set it.
+       (require_file_with_line): Ditto.
+       (require_file): Ditto.
+       (require_file_internal): Incorporated code from
+       require_config_file.
+       (require_config_file): Rewrote.
+       (require_conf_file_with_line): New function.
+       (handle_texinfo): Use it for mdate-sh.
+       (handle_texinfo): Look for mdate-sh in appropriate directory.
+
+Tue Mar 26 13:47:54 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * Makefile.am (cvs-dist): Find NEWS in srcdir.
+       * automake.in (handle_dist_worker): Find NEWS in srcdir.
+       ($RULE_PATTERN): Include chars "$(){}/" in allowable patterns in a
+       rule.
+       (require_config_file): Set config_aux_path when file found.
+       ($config_aux_dir): New variable.
+       (require_config_file): Set it.
+       (handle_man_pages): Find mkinstalldirs in config_aux_dir.
+
+Mon Mar 25 15:32:57 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * data.am (install-@DIR@DATA): Also allow data to be in build
+       directory.
+
+Sun Mar 24 19:56:28 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (am_install_var): Don't look in EXTRA_primary
+       variable any more; it is handled in the main loop.
+
+Wed Mar 20 16:22:35 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * data.am (install-@DIR@DATA): Find data in srcdir.
+
+Fri Mar 15 18:30:31 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (require_config_file): Use correct filename when
+       looking for errors.  Also, install file in `.' if not found.  Bug
+       reported by Gord Matzigkeit.  Test installsh.test.
+
+Thu Mar 14 09:28:21 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * Makefile.am (cvs-diff): New target.
+
+       Fix for bug when install var substitutes empty.  Test empty.test.
+       * header.am (install-@DIR@HEADERS): Allow empty list of headers.
+       (uninstall-@DIR@HEADERS): Ditto.
+       * scripts.am (install-@DIR@SCRIPTS): Allow empty list of scripts.
+       (uninstall-@DIR@SCRIPTS): Ditto.
+       * libraries.am (install-@DIR@LIBRARIES): Allow empty list of
+       libraries.
+       (uninstall-@DIR@LIBRARIES): Ditto.
+       * data.am (install-@DIR@DATA): Allow empty list of data.
+       (uninstall-@DIR@DATA): Ditto.
+       * programs.am (install-@DIR@PROGRAMS): Added missing semicolon.
+       From François Pinard.
+       (install-@DIR@PROGRAMS): Fixed bug when list of programs empty.
+       (uninstall-@DIR@PROGRAMS): Ditto.
+
+Wed Mar 13 19:50:23 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * tags-subd.am (ID): Name of ID file must be flush against -f.
+
+       * configure.in (VERSION): Version 0.32.
+
+Mon Mar 11 17:50:58 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (seen_linguas, all_linguas_line): New variables.
+       (handle_gettext): New function.
+       (generate_makefile): Run it.
+       (scan_configure): Recognize ALL_LINGUAS.
+
+Mon Mar 11 14:34:36 1996  Gord Matzigkeit  <gord@enci.ucalgary.ca>
+
+       * automake.texi: doc fix.
+
+       * automake.in (am_install_var): Added support for check and
+       installcheck special prefixes.
+
+Sun Mar 10 10:44:42 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_subdirs): Don't do SUBDIRS check for
+       gettext.
+
+Tue Mar  5 18:12:04 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (OBJECT_PATTERN): Removed.
+       (am_install_var): No error if name is invalid.
+       (handle_programs): Canonicalize program names.
+       (BOGUS_MACRO_PATTERN): New variable.
+       (read_am_file): Error if bad macro name given.
+       (require_file_internal): Use am_line_error, not am_conf_error.
+
+       * program.am (@PROGRAM@): Recognize @PROGRAM@_DEPENDENCIES.
+
+Mon Mar  4 19:30:24 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_lib_objects): New function.
+       (handle_libraries): Use it.
+       (handle_programs): Ditto.
+       (handle_dist_worker): Deprecate DIST_SUBDIRS.
+       (am_install_var): Allow extended directory mechanism to work.
+       Test exdir.test.
+
+       * dist-vars.am (DISTFILES): Use EXTRA_DIST.
+       (DEP_DISTFILES): Ditto.
+
+       * automake.in (OBJECT_PATTERN): New variable.
+       (am_install_var): Use it.
+       (handle_dist): DIST_OTHER is an anachronism.
+
+Sat Mar  2 17:04:38 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_dist_worker): Only cause Automake to be
+       re-run if not making a distribution.  Fixes bug reported by
+       Joerg-Martin Schwarz.
+       (require_file_with_line): New function.
+       (require_file): Use it.
+       (am_line_error): Don't print line number if $symbol is empty.
+       (get_object_extension): Use require_file_with_line.
+       (handle_libraries): Use require_file_with_line.
+       (handle_texinfo): Use require_file_with_line.
+       (handle_configure): Use am_conf_line_error and
+       require_file_with_conf_line.
+       (handle_subdirs): Use require_file_with_conf_line.
+       (handle_configure): Use require_file_with_conf_line.
+       (handle_tests): Push check-TESTS on @phony.
+       (am_conf_line_error): New function.
+       (require_file_with_conf_line): New function.
+       (require_file_internal): New function.
+       (require_file_with_line): Use it.
+       (require_file): Ditto.
+       (am_conf_line_error): Handle empty line number.
+       (ac_gettext_line, ac_output_line): New variables.
+       (scan_configure): Set them.
+
+Fri Mar  1 00:13:04 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (parse_arguments): Default strictness is gnu.
+       Changed `normal' to `foreign' everywhere.
+       (parse_arguments): Handle --foreign.
+       (initialize_global_constants): Document --foreign.
+       (handle_dependencies): Better error message.
+       (handle_texinfo): Don't push $vtexi on @texis.
+       (handle_texinfo): Only push $vtexi on @texi_deps if not null.
+       (handle_configure): install-sh is a config file; require it as
+       such.
+       (parse_arguments): Renamed --install-missing to --add-missing.
+       (add_missing): Renamed from install_missing.
+       (am_install_var): Check to make sure contents of install variable
+       are correct if primary requires it.  Test badprog.test.
+       (initialize_global_constants): Initialize
+       %primary_uses_subobjects.
+       (handle_source_transform): Skip configure substitutions.  Test
+       depend.test.  Also, skip empty elements.
+
+Thu Feb 29 22:00:30 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * texinfo.tex: New version.
+
+       * automake.in (am_install_var): Allow extended range of
+       installation directories.
+
+       * automake.in (get_object_extension): Don't allow
+       @CONFIG_INCLUDE_SPEC@ in the Makefile.in when config.h not used.
+       From Gord Matzigkeit.  Test confincl.test.
+
+       * texinfos.am (install-info): Changed usage of install-info (in
+       comment).  Per Feb 25 GNU Standards document.
+
+Wed Feb 28 07:40:55 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_tests): New function.
+       (generate_makefile): Call it.
+       (handle_subdirs): Skip directories whose names look like configure
+       substitutions.
+       (handle_subdirs): Require intl and po, not @INTLSUB@ and @POSUB@,
+       when using gettext.
+       (scan_configure): Clear in_ac_output if "]" found.  Test
+       acoutqnl.test.
+       (require_config_file): New function.
+       (generate_makefile): Use require_config_file.
+       (config_aux_path): New variable.
+       (scan_configure): Check for AC_CONFIG_AUX_DIR.
+       (handle_merge_targets): Add install-strip rule.
+
+Tue Feb 27 20:00:36 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * mdate-sh: New version from Ulrich Drepper.
+
+       * automake.in (handle_source_transform): Changed fill back to
+       empty string.
+       (handle_libraries): Ditto.
+       (handle_dist): Ditto.
+       (handle_dependencies): Ditto.
+       (handle_footer): Ditto.
+       (handle_phony): Ditto.
+
+       * Makefile.am (DIST_SUBDIRS): Removed.
+       (installcheck-local): Use Perl, not test -x.
+       (PERL): New macro.
+       (maintainer-check): Use $(PERL), not @PERL@.
+
+       * configure.in (VERSION): Upped to 0.31.
+
+Sat Feb 24 18:02:19 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (scan_configure): AC_CHECK_TOOL requires config.sub
+       and config.guess.
+
+       * automake.in: Use keyed_aclocal_warning when warning about
+       fp_PROG_INSTALL.
+       (get_object_extension): Use keyed_aclocal_warning when warning
+       about fp_C_PROTOTYPES.
+       (keyed_aclocal_warning): New function.
+
+       * Makefile.am (pkgdata_DATA): Install aclocal.m4.
+       * aclocal.m4: Include fp_C_PROTOTYPES, fp_PROG_CC_STDC.
+
+       * automake.in (get_object_extension): Only give error about
+       fp_C_PROTOTYPES once.
+
+       * automake.in (seen_ranlib): New variable.
+       (scan_configure): Recognized AC_PROG_RANLIB.
+       (handle_libraries): Error if ranlib not checked for.
+
+       * automake.in (default_strictness): Default to GNU.
+       (default_strictness_name): Ditto.
+
+Wed Feb 21 18:15:02 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (read_am_file): Removed @kr@ support.
+       (get_object_extension): Ditto.
+
+       * Makefile.am (pkgdata_DATA): Include ansi2knr.c and ansi2knr.1.
+
+Tue Feb 20 17:25:18 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * depend.am ($(srcdir)/.deps/%.P): Regexp fix.
+
+Mon Feb 19 19:53:09 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * remake.am ($(srcdir)/Makefile.in): Depend on configure.in.
+       * remake-subd.am ($(srcdir)/Makefile.in): Depend on configure.in.
+
+       * automake.in (handle_scripts): Ensure $scripts_installed set to
+       boolean value.  Test proginst.test.
+
+       * Makefile.am (installcheck-local): New target.
+
+       * automake.in (require_file): No error if missing file is
+       installed.
+
+Sun Feb 18 17:10:00 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_scripts): SCRIPTS no longer automatically
+       cleaned.  Now possible to install scripts in pkgdatadir.
+       ($seen_canonical): New variable.
+       (generate_makefile): Check for config.guess and config.sub here;
+       fixes bug reported by Gord Matzigkeit.
+
+       * Makefile.am (pkgdata_SCRIPTS): New variable.
+       (CLEANFILES): New macro.
+
+       * scripts-clean.am: Removed.
+
+Sat Feb 17 00:15:20 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (am_install_var): Error if primary variable actually
+       defined.
+       (am_install_var): Skip elements that look like configure
+       substitutions.
+       (am_install_var): "EXTRA" is a valid prefix.
+       (am_install_var): Push contents EXTRA_PRIMARY onto @result.
+       (handle_merge_targets): Treat "all" target like "install".
+       (handle_subdirs): Don't push all-recursive.
+
+       * header.am (install-@DIR@HEADERS): Don't depend on all.
+       * data.am (install-@DIR@DATA): Don't depend on all.
+       * libraries.am (install-@DIR@LIBRARIES): Don't depend on all.
+       * programs.am (install-@DIR@PROGRAMS): Don't depend on all.
+       * scripts.am (install-@DIR@SCRIPTS): Don't depend on all.
+
+       * automake.in (am_install_var): Push generated install targets
+       onto @phony.
+
+       * subdirs.am: No longer depend on Makefile and $(CONFIG_HEADER).
+       * automake.in (handle_merge_targets): Correctly handle recursive
+       calls of uninstall, install-exec, and install-data.
+       (handle_merge_targets): Put Makefile, and possibly $config_name,
+       onto @all.
+       (handle_merge_targets): Push 'all' onto @install as appropriate.
+
+Fri Feb 16 18:27:04 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_configure): config.status is in
+       $(top_builddir), not $(top_srcdir).  Reported by Anthony Green.
+
+       * automake.in (scan_configure): Recognize (AC|fp)_FUNC_FNMATCH.
+
+Thu Feb 15 19:12:45 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in: (seen_prog_yacc): New variable.
+       (scan_configure): Look for yacc.
+       (handle_source_transform): Skipp C++ header files.
+       (handle_source_transform): .cxx is a C++ source file.
+
+Wed Feb 14 08:36:02 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * depend.am ($(srcdir)/.deps/.P): Use "echo", not ":".
+
+       Implemented --verbose feature; idea from Greg Woods:
+       * automake.in (verbose): New global.
+       (generate_makefile): Print creating message if verbose.
+       (grep_for_vers_texi): Print message if verbose.
+       (handle_dependencies): Ditto.
+       (scan_configure): Ditto.
+       (read_am_file): Ditto.
+       (parse_arguments): Added --verbose.
+       (initialize_global_constants): Ditto.
+
+       * automake.in (get_object_extension): Use am_line_error.
+       (handle_source_transform): Ditto.
+       (handle_libraries): Ditto.
+       (handle_texinfo): Ditto.
+       (handle_man_pages): Ditto.
+       (handle_dist): Ditto.
+       (handle_dist): Ditto.
+       (handle_subdirs): Ditto.
+       (handle_configure): Ditto.
+       (handle_merge_targets): Ditto.
+       (am_install_var): Ditto.
+       (am_line_error): Allow actual line number as argument.
+       (handle_configure): Use am_line_error.
+       (scan_configure): Set config_header_line.
+       (config_header_line): New global.
+       Use @PERL@ to find perl during exec.  From Greg Woods.
+
+Tue Feb 13 22:06:51 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (initialize_per_input): Init %content_lines.
+       (read_am_file): Set appropriate content_lines elements while
+       reading.
+       (am_line_error): New function.
+       (read_am_file): Use it.
+       (handle_options): Ditto.
+
+       * automake.in (scan_configure): Handle case where more than one .o
+       is put into LIBOBJS at once.  Test libobj.test.
+
+Mon Feb 12 20:39:28 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (scan_configure): Ignore "\" in AC_OUTPUT line.
+       Test acouttbs.test.
+       (handle_subdirs): Restored intl, po warnings.
+
+       * automake.in (scan_configure): Delete everything after "," or
+       ")".  Test acoutnoq.test.
+       (handle_dist): Use $relative_dir, not nonexistent $subdir.
+       (handle_subdirs): 'po' and 'intl' are sometimes substituted into
+       SUBDIRS; don't warn about their absence.
+
+Sun Feb 11 16:55:15 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_texinfo): Removed bogus error message.
+
+       * automake.in (handle_texinfo): Push $(INFO_DEPS), not 'info',
+       onto @all.
+       (handle_options): Handle version number.
+
+       * automake.in ($maint_charset, $dist_charset): New variables.
+       (initialize_per_input): Init $local_maint_charset.
+       (handle_dist): Handle DIST_CHARSET and MAINT_CHARSET.
+       (generate_makefile): Don't print "creating...".
+
+Sat Feb 10 16:45:07 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (get_object_extension): Substitute
+       @CONFIG_INCLUDE_SPEC@ if CONFIG_HEADER defined.
+       (handle_source_transform): Use $1, not \1.
+       (pretty_print_internal): Handle Tabs in fill when computing indent
+       on new line.
+       (handle_merge_targets): Always generate install-exec and
+       install-data targets.  Test instexec.test.
+       Fixed error message if fp_PROG_INSTALL missing.
+
+       * compile-vars.am (DEFS): Include -I., -I$(srcdir), and
+       @CONFIG_INCLUDE_SPEC@.
+
+       * automake.in (scan_configure): Delete everything after "]".  Test
+       acoutput.test.
+
+       * configure.in (AC_OUTPUT): Create tests/Makefile.
+       * Makefile.am (SUBDIRS): New macro.
+
+       * automake.in (handle_texinfo): Put $vtexi on texi_deps.  From Jim
+       Meyering.
+
+       * configure.in (AC_OUTPUT): Ensure automake is executable.
+
+Thu Feb  8 17:30:29 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_subdirs): Error if directory in SUBDIRS does
+       not exist.
+
+       * automake.in (handle_configure): Handle AC_OUTPUT ":" syntax.
+
+       From Jim Meyering:
+       * libraries.am (install-@DIR@LIBRARIES): Depend on all, not
+       (@DIR@_LIBFILES).
+       * header.am (install-@DIR@HEADERS): Depend on all, not
+       $(@DIR@_HEADERS).
+       * data.am (install-@DIR@DATA): Depend on all, not $(@DIR@_DATA).
+       * scripts.am (install-@DIR@SCRIPTS): Depend on all, not
+       $(@DIR@_SCRIPTS).
+       * programs.am (install-@DIR@PROGRAMS): Depend on all, not
+       $(@DIR@_PROGRAMS).
+
+       * automake.in (initialize_per_input): Initialize
+       $use_dependencies.
+       ($seen_path_xtra): New variable.
+       (scan_configure): Look for AC_PATH_XTRA.
+       (get_object_extension): Add variables to output if X seen.
+
+Thu Feb  8 10:02:45 1996  Greg A. Woods  <woods@most.weird.com>
+
+       * automake.in (handle_programs): add pkglib to list of
+       directories for C
+       (various): include a tab as fill for continuation lines
+       printed with pretty_print*, esp. for macro variable assignments.
+       [ changed to 4 spaced by me ]
+
+Wed Feb  7 18:00:29 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * configure.in (VERSION): Upped to 0.30.
+
+       * Makefile.am (automake): Removed.
+       (DIST_OTHER): Removed.
+
+       * automake.in (handle_source_transform): All dep_files are
+       relative to $(srcdir).
+       (handle_libraries): Ditto.
+       (scan_configure): Test for AC_PROG_INSTALL as well as
+       fp_PROG_INSTALL.  Don't error here.
+       (seen_prog_install): Now global.
+       (scripts_installed): New global.
+       (handle_scripts): Set it.
+       Give error if appropriate install macro not seen.
+       (handle_subdirs): Ensure $seen_gettext before requiring
+       gettext-specific files.
+       (handle_configure): Automatically rebuild
+
+       From Jim Meyering:
+       * automake.in (handle_source_transform): Use \W when quoting
+       regexp.  When blah_SOURCES not explicitly defined, still create
+       entry in %deps.
+       * depend.am ($(srcdir)/.deps/%.P): Don't use \< in regexp.
+       * subdirs.am (maintainer-clean-recursive): Now depends on
+       $(CONFIG_HEADER) and Makefile.
+
+       * automake.in (handle_source_transform): Skip macro references.
+
+Mon Feb  5 14:58:58 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_texinfo): Include "rm" when deleting files.
+
+       * Makefile.am (maintainer-check): Expect only one ${...}.
+       * texinfos.am (install-info): Remove unneeded ${...}.  From Jim
+       Meyering.
+
+       * automake.in (handle_configure): Only define CONFIG_HEADER if
+       $config_name.
+       ($seen_gettext): New variable.
+       (handle_subdirs): Do all gettext-related checking here.
+       (scan_configure): Just set $seen_gettext.
+       (handle_man_pages): Properly quote $(MANS).
+
+Wed Jan 31 09:51:30 1996  Tom Tromey  (tromey@gerbil.cygnus.com)
+
+       * depend.am: Don't use srcdir anywhere.
+       * automake.in (handle_libraries): Don't make .deps relative to
+       srcdir.
+       (handle_options): Recognize no-dependencies.
+
+       * depend.am (MKDEP): From Jim Meyering: Do nothing if srcdir is
+       ".".  Properly quote regexp.
+
+Tue Jan 30 12:19:09 1996  Tom Tromey  (tromey@gerbil.cygnus.com)
+
+       * automake.in (handle_configure): Only defined CONFIG_HEADER if
+       $config_name.
+       (read_am_file): Quote regexp when substituting top_builddir.
+       (handle_source_transform, handle_libraries): Look in
+       $(srcdir)/.deps for .P files.
+
+Fri Jan 26 00:15:25 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (am_conf_error): New function.
+       (scan_configure): Use it.
+       (scan_configure): A comma also ends AC_OUTPUT macro.
+
+       * automake.in (read_am_file): Compute top_builddir when including
+       header-vars.am.
+       (handle_configure): Use $top_builddir, not $top_reldir.
+       (other_input_files): New variable.
+       (dirname): Fixed bug where dirname of 'a/b/c' was 'a', not 'a/b'.
+
+       Changes from Gord Matzigkeit to enabled hierarchies deeper than 2:
+       * automake.in (input_files, seen_make_set): Declare globally.
+       (parse_arguments): Use input_files, not make_list.
+       Only scan configure.in once.
+       (handle_dist): Use SUBDIRS to determine when to make
+       subdirectories and recurisvely dist.  Use $(topdir), not "..", to
+       find top of dist tree.
+       (handle_configure): Check for AC_PROG_MAKE_SET here.  Don't require
+       configure.in (done elsewhere).
+       (scan_configure): seen_make_set is global.  Allow arbitrary space
+       in LIBOBJS assignment.
+       (top_builddir): New variable.
+       * header-vars.am (top_builddir): New variable.
+       * remake-subd.am (Makefile): Look in top_builddir, not .., when
+       remaking.
+       * automake.in (handle_merge_targets): Run 'all' before
+       check-recursive.
+
+       * automake.in (file_contents_with_transform): Changed error
+       message.
+       (handle_configure): Define $contents{'CONFIG_HEADER'}.
+
+       * texi-version.am: Many changes to support multiple .texi files.
+       Replaced "version.texi" with "@VTEXI@".  Replaced "vti" with
+       "@VTI@".
+       * automake.in (handle_configure): install.sh is an anachronism.
+       (handle_texinfo): Generalized for multiple .texi files.  Handle
+       'clean-info' internally.
+       * texi-clean.am: Removed.
+       * Makefile.am: Updated for removal.
+
+Wed Jan 24 22:55:32 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (grep_for_vers_texi): New function.
+       (handle_texinfo): Use grep_for_vers_texi, not system("grep").
+       (handle_texinfo): Changes to generalize to multiple .texi files.
+
+Tue Jan 23 14:22:16 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       Fixes from Gord Matzigkeit:
+       * libraries.am (install-@DIR@LIBRARIES): Use top_srcdir, not
+       topsrcdir.
+       * header.am: New file.
+       * Makefile.am (pkgdata_DATA): Install header.am.
+       * automake.in (handle_headers): Use header.am, not data.am.
+       (am_install_var): Allow pattern to be compiled multiple times.
+
+       * config.guess, config.sub: New files.
+       * Makefile.am (pkgdata_DATA): Install config.guess and
+       config.sub.
+       * automake.in (scan_configure): Recognize AC_CANONICAL_HOST and
+       AC_CANONICAL_SYSTEM.
+
+Sun Jan 21 15:51:48 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_texinfo): Use info_TEXINFOS, not TEXINFOS.
+       (handle_man_pages): Use man_MANS, not MANS.
+
+       * Makefile.am (info_TEXINFOS): Renamed.
+
+       * automake.in (scan_configure): Remove comments from input line.
+       (am_variable): Removed.
+
+       * remake-hdr.am (stamp-h): Use new macro CONFIG_HEADER_IN.
+
+       * automake.in (config_name, config_header): New globals.
+       (scan_configure): Look for AC_CONFIG_HEADER.
+       (handle_configure): Handle more uses of AC_CONFIG_HEADER.
+
+Sat Jan 20 15:54:24 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_dist_worker): Bug fix.
+
+Fri Jan 19 00:50:29 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (require_file): Install missing files only according
+       to desired strictness.
+       (initialize_per_input): Don't init libsources.
+       (scan_configure): Reinit libsources.
+       (handle_libraries): Search _LIBADD for @LIBOBJS@ and @ALLOCA@.
+       (fp_c_prototypes): New global.
+       (scan_configure): Set it.
+       (get_object_extension): Error if fp_C_PROTOTYPES not in
+       configure.in when using ansi2knr.
+       (handle_source_transform): Skip header files.
+
+       * automake.in (handle_dist_worker): Explicitly make 'dist' in
+       subdirs.
+
+Thu Jan 18 00:25:56 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       From François Pinard:
+       * automake.in (handle_source_transform): Transform $o file into .P
+       file.
+       (handle_dist_worker): Handle case where DISTFILES includes
+       wildcard.  Bug fix in subdir case.
+
+       * automake.in (parse_arguments): Initialize strictness to
+       'normal'.
+
+Sun Jan 14 13:54:16 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (scan_configure): Look for NLS support.
+
+       Changes from François Pinard:
+       * texinfos.am (install-info): Correctly install when build dir is
+       not srcdir.
+       * tags-subd.am (ID): Indentation change.
+       * kr-vars.am (o): Use ".@U@o", not "@U@o".
+       * depend.am ($(srcdir)/.deps/%.P): Remove temporary file.
+       * automake.in (handle_dist_worker): Fixlets.
+       (handle_dist): Sort keys going into dist_common.
+
+Sat Jan 13 00:18:06 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (handle_dist_worker): If Gnits, don't allow release
+       until NEWS is updated.
+
+       * configure.in (VERSION): Version 0.29.
+
+       * Makefile.am (maintainer-check): Look for perl4.036 in path.
+
+       * dist-vars.am (DISTFILES):  Include BUILT_SOURCES.
+       (DEP_DISTFILES): Ditto.
+
+       * automake.in (handle_dist_worker): Depend on DEP_DISTFILES.
+       * dist-vars.am (DEP_DISTFILES): New variable.
+
+       * automake.in (handle_options): Support dist-shar option.
+       (handle_dist_worker): New function.
+       (handle_dist): Use it.
+
+       * texi-version.am (mostlyclean-vti): Remove version.tmp, not
+       *.tmp.
+
+       * automake.in (handle_dist): Chmod distdir 777.  From François
+       Pinard.
+
+       * automake.in (scan_configure): New function.
+       (initialize_per_input): Init libsources.
+       (generate_makefile): Run handle_configure first.
+       (handle_configure): Run scan_configure.
+       (handle_configure): Don't look for AC_PROG_MAKE_SET here.
+
+Thu Jan 11 23:14:18 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * Makefile.am (AUTOMAKE_OPTIONS): New variable.
+
+       * automake.in (strictness, strictness_name): Renamed.
+       (initialize_per_input): Set strictness, strictness_name.
+       Initialize %options.
+       (generate_makefile): Run handle_options.
+       (handle_options): New function.
+       (handle_man_pages): Make install-man depend on $(MANS).  Turn off
+       man page install if no-installman option given.
+       (read_am_file): Deprecate @kr@.
+       (get_object_extension): Look at ansi2knr option.
+       (parse_arguments): Take global strictness from command-line
+       options.
+
+Tue Jan  9 11:24:14 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       Fixes from François Pinard:
+       * depend.am ($(srcdir)/.deps/%.P): Handle deansification.
+       * automake.in (get_object_extension): Use $o, not $(kr)o.
+       (handle_source_transform): Don't look for $(kr)c files.
+       * kr-vars.am (o): New macro.
+       (kr): Removed.
+
+       * depend.am (DEP_FILES): Removed.
+       * automake.in (handle_source_transform): Push .P file onto
+       dep_files.
+       (initialize_per_input): New variable %dep_files.
+       (handle_dependencies): Generate DEP_FILES here.
+
+Mon Jan  8 22:27:33 1996  Tom Tromey  <tromey@creche.cygnus.com>
+
+       * automake.in (do_one_clean_target): Only remove config.status in
+       top-level directory.
+       (handle_tags): Removed 'id' from .PHONY list.  From Jim Meyering.
+
+       * clean.am (maintainer-clean-generic): Remove BUILT_SOURCES.
+
+       * automake.in (handle_dist): Make "ln" quiet.
+
+       * tags-subd.am (ID): Depend on HEADERS and SOURCES.
+
+Sat Jan  6 10:58:23 1996  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * automake.in (handle_merge_targets): 'check' shouldn't depend on
+       'all' at top level.
+       (file_contents_with_transform): New function.
+       (am_install_var): Use file_contents_with_transform.
+       (handle_programs): Ditto.
+       (handle_libraries): Ditto.
+       (handle_texinfo): Ditto.
+       (handle_merge_targets): Let 'install' depend on 'all' if no other
+       dependencies exist.  From Jim Meyering.
+       (check_gnu_standards): GNU requires AUTHORS file.  (See
+       maintain.text).
+       (require_file): Put body in loop.
+       (get_object_extension): Only call require_file once.
+       (handle_configure): Ditto.
+
+       From Jim Meyering:
+       * depend.am ($(srcdir)/.deps/.P): Depend on $(BUILT_SOURCES).
+       * tags-subd.am (id): Removed.
+
+Fri Jan  5 10:31:19 1996  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * Added copyright notice to each .am file.
+
+       * automake.in: Cleanups from François Pinard to avoid $#.
+       (require_argument): Fixed sense of test.
+       (set_strictness): Bug fix.
+
+Thu Jan  4 21:21:29 1996  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * Makefile.am (pkgdata_DATA): Removed old dist files.
+
+       * dist-subd-top.am, dist-subd.am, dist.am: Removed.
+
+       * automake.in (set_strictness): Set $strictness_name.
+       (strictness_name): New variable.
+       (handle_dist): Substantially rewrote.
+
+       * configure.in: Point AC_INIT at automake.in.
+
+       * automake.in (generate_makefile): Report errors against
+       Makefile.in, not Makefile.am.
+
+Wed Jan  3 00:05:40 1996  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * mdate-sh: Bug fix from Jim Meyering.
+
+       * dist.am (dist): Changed in parallel with dist-subd-top.am.
+
+       * mkinstalldirs: Reverted.
+
+       * automake.in (initialize_global_constants): Allow COPYING.LIB
+       again.
+       (check_gnits_standards): Disallow COPYING.LIB.
+
+       * texinfos.am (install-info): Only look in $(srcdir) for info
+       files.
+
+       * automake.in (initialize_global_constants): New variable
+       gen_copyright.
+       (read_am_file): Put a copyright in each Makefile.in.
+
+       * dist-vars.am (DISTFILES): Put DIST_COMMON first.
+
+       * automake.in (am_install_var): Put space before "=".
+       (handle_dist): Put README first in DIST_COMMON.
+
+       * Makefile.am (pkgdata_DATA): Include COPYING.
+
+       * COPYING: New file.
+
+       * automake.in (parse_arguments): Added --gnu and --gnits as
+       synonyms.
+       (initialize_global_constants): Ditto.
+       (initialize_global_constants): Don't auto-distribute COPYING.LIB.
+       (initialize_global_constants): Look for README first.
+       (initialize_global_constants): Auto-distribute AUTHORS, BACKLOG,
+       ABOUT-GNU.
+       (check_gnu_standards): Require file COPYING.
+
+       From François Pinard:
+       * automake.in (file_contents): Comment out "warn"s.
+       (usage): Use 4 columns.
+       (USAGE_FORMAT): Ditto.
+
+       * texinfos.am (install-info): Look for info file relative to $$d.
+
+       * Makefile.am (cvs-dist): Suppress output of "grep".
+
+       * configure.in (VERSION): Version 0.28.
+
+       * automake.in (pretty_print_internal): Fix for Perl 4
+       compatibility.
+
+       * configure.in (VERSION): Version 0.27.
+
+       * depend.am ($(srcdir)/.deps/%.P): Must regexp-quote srcdir in sed
+       invocation.
+
+       * automake.in (initialize_global_constants): Don't quote "@" in
+       $install_man_format.
+       (handle_merge_targets): use "@:" as empty command, not ":".
+
+Tue Jan  2 23:33:24 1996  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * texinfos.am (install-info): Look in $d for info files.  From
+       François Pinard.
+
+       * depend.am ($(srcdir)/.deps/%.P): Fixed regexp.
+
+       * automake.in (read_am_file): Correctly deal with continued
+       variable definitions.
+
+Mon Jan  1 15:43:25 1996  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * automake.in (handle_merge_targets): 'check' target depends on
+       'all'.
+       (file_contents): Don't be so verbose.
+       (read_am_file): Ditto.
+       (read_am_file): Must use substr to check for trailing \.
+       (am_install_var): Use push_phony_cleaners.
+       (file_contents): Set $was_rule when assuming a rule is seen.
+       (read_am_file): Ditto.
+       (do_one_clean_target): Removed spurious newline.
+
+       Some changes from François Pinard:
+       * Removed trailing whitespace from all '.am' files.
+       * tags-subd.am (ID): Use &&, not ;.
+       (TAGS): Ditto.
+       * automake.in (parse_arguments): Removed useless message.
+       (parse_arguments): Don't explicitly referenced STDERR.
+       (require_argument): Ditto.
+       (am_error): Ditto.
+       (set_strictness): Ditto.
+       (file_contents): Ditto.
+       (read_am_file): Ditto.
+       (generate_makefile): Style tweaks.
+       (handle_programs): Ditto.
+       (handle_libraries): Ditto.
+       (handle_texinfo): Ditto.
+       (handle_man_pages): Ditto.
+       (handle_tags): Ditto.
+       (handle_dist): Ditto.
+       (handle_subdirs): Ditto.
+       (handle_configure): Ditto.
+       (handle_footer): Don't put newline before footer.am contents.
+       (handle_merge_targets): Style tweaks.
+       (do_one_clean_target): Ditto.
+       (dirname): Ditto.
+       (am_variable): Ditto.
+       Defined some new constants.
+       (generate_makefile): Don't call generate_header.
+       (generate_header): Removed.
+       (file_contents): Rewrote.
+       (read_am_file): Rewrote.
+
+       * automake.in (generate_makefile): Handle phony target.
+       (do_one_clean_target): Pretty-print dependencies.
+       (handle_installdirs): Pretty-print rule.
+
+       * Makefile.am (maintainer-check): Made some commands silent.
+
+       * automake.in (initialize_global_constants): Don't install or
+       uninstall cat'd man pages.
+       (initialize_per_input): Added phony target.
+       (push_phony_cleaners): New function.
+       (get_object_extension): Handle phony targets.
+       (handle_texinfo): Ditto.
+       (handle_man_pages): Ditto.
+       (handle_tags): Ditto.
+       (handle_dist): Ditto.
+       (handle_subdirs): Ditto.
+       (handle_installdirs): Ditto.
+       (handle_merge_targets): Ditto.
+       (handle_clean): Ditto.
+       (do_one_merge_target): Ditto.
+       (am_install_var): Ditto.
+       (handle_phony): New function.
+       (generate_makefile): Call it.
+       (pretty_print_internal): New function.
+       (pretty_print_rule): Ditto.
+
+Sun Dec 31 13:04:59 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * automake.in (initialize_global_constants): Don't print body of
+       loop at make time.
+
+       Changes from François Pinard:
+       * depend.am (MKDEP): Include DEFS, INCLUDES, CPPFLAGS, CFLAGS.
+       (DEP_FILES): Put dependency files in $(srcdir).
+       Look in $(srcdir) when including dependency files.
+       ($(srcdir)/.deps/.P): .deps/.P is in $(srcdir).
+       (.deps/%.P): MKDEP includes all macro expansions.
+       * dist-subd-top.am (dist): Get absolute path for distdir.  Don't
+       be so verbose.
+       * dist-subd.am (dist): Don't be so verbose.
+       * dist.am (dist): Don't be so verbose.
+
+       * automake.in (do_one_clean_target): Remove config.status in
+       maintainer-clean.  From Jim Meyering.
+
+       * programs-clean.am (clean-@DIR@PROGRAMS): Bug fix.  From Jim
+       Meyering.
+
+       * automake.in (handle_merge_targets): Add dummy command for empty
+       install target.  From Jim Meyering.
+
+Tue Dec 12 10:06:28 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * texinfos.am (uninstall-info): Bug fix.
+
+       * Makefile.am (maintainer-check): Error if ${...} used.
+       * depend.am (DEP_FILES): Prefer $(...).
+
+       * scripts.am (install-@DIR@SCRIPTS): Only install script if it
+       exists.
+       * libraries.am (install-@DIR@LIBRARIES): Only install library if
+       it exists.
+       * programs.am (install-@DIR@PROGRAMS): Only install program if it
+       exists.
+
+       * texinfos-vars.am (TEXFILES): Removed.
+
+       * Makefile.am (pkgdata_DATA): Removed libprograms.am.
+
+       * automake.in (do_one_merge_target): Never generate trailing
+       whitespace.
+       (pretty_print): New function.
+       (handle_footer): Prettyprint definitions.
+       (am_install_var): Ditto.
+       (handle_source_transform): Ditto.
+       (handle_dist): Ditto.
+       (handle_libraries): Ditto.
+       (read_am_file): Put comments nearer appropriate code.
+
+       * texi-clean.am (mostlyclean-info): Use continued lines, not
+       multiple rm's.  From Jim Meyering.
+
+Sun Dec 10 11:59:33 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * Makefile.am (pkgdata_DATA): Cause INSTALL, install-sh, mdate-sh,
+       mkinstalldirs, texinfo.tex to be installed.
+       * automake.in (symlink_exists): New global.
+       (install_missing): Ditto.
+       (require_file): Install missing files if possible.
+       (parse_arguments): Handle --install-missing option.
+       (initialize_global_constants): Document --install-missing.
+
+       * Makefile.am (cvs-dist): Don't release unless NEWS updated.
+       Ensure 'checks' pass before release.
+       (maintainer-check): Renamed.  Look in $(srcdir) for sources.  From
+       Franc,ois Pinard.
+       (cvs-dist): Depend on maintainer-check instead of explicitly
+       running check.
+
+       * configure.in (VERSION): Version 0.26.
+
+       * Makefile.am (check-local): Only look at [a-z]*.am.  Fixed sense
+       of 'if' test.
+
+       * depend.am (DEP_FILES): Bug fix.
+
+       * automake.in (do_one_clean_target): Typo.
+
+       * Makefile.am (check-local): Run syntax check under Perl 4.
+
+       * automake.in: Fixes for Perl 4, from Gord Matzigkeit.
+       (handle_source_transform): Loop variable is now $_.  From Gor
+
+       * Makefile.am (check-local): Check for 'true' in source.
+       * texinfos.am (install-info): Can't use "true" in any rule.
+
+Sat Dec  9 10:16:48 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * Makefile.am (cvs-dist): New target.
+
+       * tags.am (TAGS): Use "test -z ... ||" to avoid spurious
+       failures.
+
+       * texinfos.am (install-info): Don't do install-info for now.
+
+       * clean.am (distclean-generic): Don't remove config.status here.
+       * automake.in (do_one_clean_target): Remove config.status later,
+       for 'make -j2'.  From Jim Meyering.
+
+Fri Dec  8 16:30:48 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * configure.in (VERSION): Version 0.25.
+
+       * automake.in (handle_texinfo): Use "$? >> 8", not "$?".
+       (handle_configure): Check for AC_PROG_MAKE_SET.
+
+       * depend.am (DEP_FILES): Handle deANSIfication case.  From Jim
+       Meyering.
+
+       * automake.in (am_install_var): Changed how 'clean' handled for
+       uniform name targets.
+       * Makefile.am (pkgdata_DATA): Added new files.
+       * data-clean.am: New file.
+       * scripts-clean.am: New file.
+       * libraries-clean.am: New file.
+       * programs-clean.am: New file.
+
+Wed Dec  6 00:06:11 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * automake.in (am_install_var): Error if variable name
+       "misspelled".
+       (handle_source_transform): Automatically include .c file
+       corresponding to .y or .l.
+
+Tue Dec  5 00:46:14 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * programs.am: Changed for uniform naming scheme.
+
+       * automake.in (read_am_file): Allow '-' and '.' in target names.
+       (generate_makefile): Don't pass arguments to handle_libraries.
+       (initialize_per_input): Define @sources, @objects.
+       (generate_makefile): Init @sources, @objects if needed.
+       (handle_source_transform): Push onto @sources, @objects here.
+       (am_install_var): Push primary onto @all, for configure-time
+       customization.
+       (handle_programs): Use new uniform naming scheme.
+
+       * Makefile.am (check-local): New target.
+
+       * automake.in (handle_libraries): Use uniform naming scheme.
+
+       * libraries.am: Rewrote for uniform naming scheme.
+
+       * scripts.am: Updated names of all clean targets.
+
+       * automake.in (handle_programs): Split on all whitespace.
+       (handle_libraries): Ditto.
+       (handle_texinfo): Ditto.
+       (handle_man_pages): Ditto.
+       (am_install_var): Changed return result.
+       (am_install_var): Changed interface.
+       (am_install_var): Push onto @clean@ if requested.
+       (handle_scripts): Pass -clean to am_install_var.
+
+Mon Dec  4 11:55:36 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * automake.in (am_install_var): Push target onto @all.
+       (get_object_extension): Use $(...).
+       (handle_source_transform): Ditto.
+       (handle_programs): Ditto.
+
+       * automake.in (require_argument): New function.
+       (parse_arguments): Use it.
+       (push_dist_common): New function.
+       (generate_makefile): Use it.
+       (handle_texinfo): Ditto.
+       (handle_dist): Ditto.
+       (handle_configure): Ditto.
+       (require_file): Ditto.
+       (generate_makefile): Don't pass arguments to handle_scripts.
+       (handle_configure): Require configure.in.
+       (check_gnu_standards): New function.
+       (check_gnits_standards): Ditto.
+       (generate_makefile): Check standards.
+
+       * Makefile.am (bin_SCRIPTS): Changed name from SCRIPTS.
+
+       * automake.in (LENIENT, GNU, GNITS): New constants.
+       (initialize_per_input): New function.
+       (generate_makefile): Use it.
+       (initialize_global_constants): Renamed from init_globals.
+       (require_file): Added strictness argument.
+       (parse_arguments): Added --strict option.
+       (set_strictness): New function.
+       (parse_arguments): use it.
+       (initialize_global_constants): Document --strictness.
+
+       * automake.in: Use ${1+"$@"} to preserve quoting when running
+       under sh.
+
+       * texinfos.am (install-info): Don't use "true".
+       * tags.am (TAGS): Don't use "true".
+
+       * dist.am, dist-subd-top.am, remake-hdr.am, remake-subd.am,
+       remake.am, subdirs.am, texinfos.am: Use "&&" after cd.
+
+       * program.am (@PROGRAM@): Use LINK macro.
+       * compile.am (.c.o): Use COMPILE macro.
+
+       * clean.am, remake-hdr.am, remake.am, texinfos.am: Use $(...), not
+       ${...}.
+
+       * subdirs.am (RECURSIVE): Removed macro.
+
+       * clean.am: Changed to not be so verbose.
+
+       * Makefile.am (pkgdata_DATA): Include texi-clean.am.
+       * automake.in (handle_texinfo): Transform texi-clean and put into
+       output rules.
+       * texinfos-vars.am (TEXFILES): Removed.
+       * texinfos.am: Removed 'clean' targets.
+       * texi-clean.am: New file.
+
+       * Makefile.am (ETAGS_ARGS): Just use 'automake.in'.
+
+       * texinfos-vars.am (TEXFILES): Added *.op.
+
+       * dist-vars.am (DISTFILES): Renamed from DIST_FILES, per GNU
+       standards.
+       * dist.am (dist): Use DISTFILES.
+       * dist-subd.am (dist): Use DISTFILES.
+       * dist-subd-top.am (dist): Use DISTFILES.
+
+Sun Dec  3 00:24:08 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * Makefile.am (ETAGS_ARGS): Define.
+
+       * depend.am (.deps/.P): Use ":", not "echo timestamp".  From Jim
+       Meyering.
+
+       * dist-vars.am (DIST_FILES): Removed PACKAGEDATA.
+
+       * automake.in (handle_scripts): Use am_install_var.
+
+       * scripts.am: Rewrote for new uniform naming scheme.
+
+       * Makefile.am (pkgdata_DATA): Removed libscripts.am.
+
+       * libscripts.am: Removed.
+
+       * packagedata.am: Removed.
+
+       * Makefile.am (PACKAGEDATA): Removed packagedata.am.
+       (pkgdata_DATA): Renamed from PACKAGEDATA.
+
+       * automake.in (handle_data): Use am_install_var.
+       (init_globals): Init %exec_dir_p.
+
+       * data.am: Rewrote for new uniform naming scheme.
+
+       * automake.in (get_object_extension): New function.
+       (handle_programs): Use it.
+       (dir_holds_sources): Changed interpretation.
+       (handle_headers): New function.
+       (am_install_var): New function.
+       (generate_makefile): Call handle_headers.
+
+       * header-vars.am (pkgdatadir): New macro.
+       (pkglibdir): Ditto.
+       (pkgincludedir): Ditto.
+
+       * automake.in (handle_source_transform): New function.
+       (am_error): New function.
+       (generate_makefile): Use it.
+       (handle_source_transform): Ditto.
+       (handle_texinfo): Ditto.
+       (handle_dependencies): Ditto.
+       (handle_merge_targets): Ditto.
+       (require_file): Ditto.
+
+Sat Dec  2 21:39:56 1995  Tom Tromey  <tromey@cambric.colorado.edu>
+
+       * automake.in: Updated FSF address.  From Jim Meyering.
+       * header-vars.am: Updated FSF address.
+
+       * distname.am: Removed.
+
+       * automake.in (file_contents): Strip "##" comments.
+       * Various files: Added "##" comments for strange things.
+
+       * automake.in (handle_tags): Generate TAGS rule for every
+       directory.
+
+       * subdirs.am (RECURSIVE): Include installcheck-recursive.
+       * automake.in (installcheck): New variable.
+       (generate_makefile): Initialize it.
+       (handle_subdirs): Push 'installcheck-recursive'.
+       (handle_merge_targets): Handle installcheck target.
+
+Thu Nov 30 20:13:16 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in ($PACKAGE): Removed.
+
+       * header-vars.am (ALL): Removed.
+
+       * automake.in: Reworked 'all' target handling.
+
+       * automake.in (generate_makefile):
+       Don't use AM_ forms in call to am_variable.
+
+       * automake.in: Changes for Perl 5, from Gord Matzigkeit
+
+       * clean.am (MOSTLYCLEANFILES, MAINTAINERCLEANFILES): New variables.
+
+       * automake.in (handle_footer): Allow SUFFIXES variable.
+
+       * automake.in (am_variable): New function.
+       (handle_texinfo): Use it.
+       (generate_makefile): Use it.
+
+       * configure.in: Version 0.24.
+
+Wed Nov 29 23:50:14 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in (handle_libraries):
+       Generate blah_LIBADD defines if required.
+
+       * library.am (lib@LIBRARY@.a): Look at $(@LIBRARY@_LIBADD)
+
+       * libraries-vars.am (LIBOBJS, ALLOCA): Removed.
+
+       * compile-kr.am: ($(OBJECTS)): Depend on $(ANSI2KNR), not ansi2knr.
+
+       * configure.in: Version 0.23
+
+       * dist-subd-top.am (dist): Don't die if a subdirectory already exists.
+
+       * dist-subd-top.am, dist.am (dist): Give automake --output-dir option.
+
+       * automake.in: New option --output-dir
+
+       * automake.in (handle_configure): Fixed typo.
+
+       * automake.in (handle_installdirs): Always make installdirs target.
+
+       * subdirs.am (RECURSIVE): Removed uninstall-data-recursive and
+       uninstall-exec-recursive.  Added installdirs-recursive.
+
+       * automake.in (handle_installdirs): Handle installdirs-recursive.
+       (handle_man_pages): 'all' depends on $(MANS)
+
+       * Makefile.am: Removed mans.am.
+
+       * automake.in: More man-related fixes
+
+       * automake.in: Bug fixes
+
+       * automake.in: Rewrote man page handling.
+
+       * texi-version.am, remake-hdr.am, depend.am: Don't use touch.
+
+       * automake.in (handle_installdirs): New function.
+       (@installdirs): New global.
+       Many changes to deal with installdirs.
+
+       * clean.am (clean-generic): Always supply 'else' clause to 'if'
+
+       * automake.in (generate_header): Don't use header.am.
+       (handle_dist): Don't use dist-subd-vars.am.
+
+       * Makefile.am (PACKAGEDATA): Removed dist-subd-vars.am, header.am.
+
+       * Makefile.am (DISTCLEANFILES): Removed.
+
+       * clean.am (clean-generic): Bug fix.
+
+       * clean.am (clean-generic): Only remove CLEANFILES if nonempty
+
+       * texi-version.am (clean-vti): No such macro as VTI
+
+Tue Nov 28 19:56:07 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in: Bug fix for maintainer-clean
+
+       * automake.in (do_one_clean_target):
+       Print special text in maintainer-clean.
+       (handle_clean): Always include clean.am
+
+       * clean.am: Use -generic clean targets.
+
+       * compile.am: Added clean targets.
+
+       * configure.in: Version 0.22.
+
+       * automake.in (handle_dependencies):
+       Put trailing newline after all deps.
+
+       * automake.in (handle_dependencies): Another dependency bug fix.
+
+       * automake.in (handle_dependencies):
+       Bug fix when including dependencies.
+
+       * automake.in (handle_configure):
+       Verify existence of install-sh, mkinstalldirs
+
+       * automake.in (handle_texinfo): Include stamp-vti in distribution
+
+       * dist-subd-vars.am, dist-vars.am (DIST_FILES):
+       Include DATA, PACKAGEDATA.
+
+       * Makefile.am: Nothing
+
+       * Makefile.am (DIST_OTHER): Don't distribute gettext-sh
+
+       * automake.in (handle_texinfo): Typo
+
+       * automake.in: If script ends up in shell, feed to perl
+
+       * automake.in: Rewrote 'clean' rules.
+       Documentation made and installed first.
+       'all' depends on 'info'
+
+Mon Nov 27 23:57:29 1995  Tom Tromey  <tromey@cambric>
+
+       * configure.in, Makefile.am: Turned off internationalization.
+
+       * clean-kr.am: Rewrote for new clean scheme.
+
+       * tags-clean.am: Remove TAGS in distclean, not maintainer-clean
+
+       * Makefile.am (PACKAGEDATA): Include tags-clean.am
+
+       * subdirs.am: Removed bogus local clean targets
+
+       * tags-clean.am: Initial revision
+
+       * texi-version.am: Added clean targets
+
+       * texinfos.am: Fixes to clean targets.
+
+       * texinfos.am, libscripts.am, scripts.am, libraries.am, libprograms.am, programs.am:
+       Added clean targets
+
+       * compile-kr.am (ansi2knr.o): Depend on CONFIG_HEADER
+
+       * automake.in: Completely revamped automatic de-ANSI-fication
+
+       * compile-kr.am: (ansi2knr, $(OBJECTS)): New targets
+
+       * compile-vars.am (LINK): New macro
+
+       * kr-vars.am: Trailing blank line
+
+       * compile-kr.am: Rewrote
+
+       * compile-vars.am (COMPILE): New macro
+
+       * compile-vars.am (ANSI2KNR): Removed
+
+       * Makefile.am (PACKAGEDATA): Removed all sed scripts.  Added kr-vars.am
+
+       * kr-vars.am: Initial revision
+
+       * automake.in (require_file): New function.
+       (handle_texinfo): Require 'mdate-sh'
+       (common_sometimes): New variable
+       (usage): Use it.
+
+       * texi-version.am (stamp-vti): Use Ulrich's mdate-sh script
+
+       * mdate-sh: Initial revision
+
+       * automake.in (handle_footer): Don't define SOURCES or OBJECTS if empty
+
+       * automake.in (generate_makefile):
+       Put Makefile.in, Makefile.am in @dist_common
+       (handle_configure): Use @dist_common as appropriate
+
+       * dist-subd-vars.am, dist-vars.am (DIST_CONF): Removed
+
+       * configure.in: Abort if perl not found
+
+       * configure.in: Look for perl
+
+       * automake.in: Reimplemented in Perl
+
+       * automake.in: Fixlet
+
+Sun Nov 26 08:09:30 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in: Always print ".SUFFIXES:" rule.
+
+       * automake.in: Distribution config.h.in if required
+
+       * automake.in: Bug fix when including texi-version.am
+
+       * automake.in: Bug fix when looking for .texi file in $am_reldir
+
+       * depend.am: Comment fix
+
+       * automake.in: Look for .texi file in $am_reldir
+
+       * automake.in: Fixlet
+
+       * automake.in: Blank line after targets from user's Makefile.am
+
+       * automake.in: Move footer items to actual footer
+
+       * automake.in: Include stamp-h.in in DIST_COMMON if necessary
+
+       * automake.in (common):
+       Don't include acconfig.h, config.h.top, config.h.bot
+
+       * Makefile.am (CONFIG_HEADER): Renamed from CONFIG_H
+
+       * Makefile.am (CONFIG_H): Define
+
+       * acconfig.h: Initial revision
+
+       * configure.in: Use AC_CONFIG_HEADER.
+
+       * automake.in: Put blah_TEXINFOS into DIST_COMMON
+
+       * automake.in: .info file explicitly depends on primary .texi file
+
+       * texinfos.am (install-info): Always supply 'else' clause to 'if'
+
+       * tags.am (TAGS): Always supply 'else' clause to 'if'
+
+       * subdirs.am (.NOEXPORT): Removed (now in footer.am)
+
+       * automake.in: Always include footer.am in output
+
+       * mans.am (install-man): Always supply 'else' clause to 'if'
+
+       * automake.in: More version.texi fixes
+
+       * automake.in: Only do version.texi processing if requested.
+
+       * automake.in: Minor internationalization fixes.
+       Subshell can now exit with nonzero status.
+       Fixed up .texi handling; now uses texi-version.am
+       Make sure '.c' and '.o' are in .SUFFIXES if required.
+
+       * Makefile.am (PACKAGEDATA): Include texi-version.am
+       (stamp-vti, version.texi): Removed
+       (TEXINFOS): Don't reference version.texi
+
+       * texi-version.am: Initial revision
+
+       * dist.am, dist-subd-top.am (dist):
+       [DIST_SUBDIRS] Follow symlinks when copying.
+
+       * dist-subd-top.am (dist): Removed unneeded subdir= option to make
+
+Sat Nov 25 23:23:39 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in: Added --amdir option
+
+       * Makefile.am, configure.in: Turned on internationalization
+
+       * Makefile.am: Set EDITION
+
+       * configure.in: Version 0.21
+
+       * tags.am, tags-subd.am: Don't use double-colon rules
+
+       * automake.in: Redid install-data, install-exec, uninstall handling
+
+       * configure.in: Turn off i18n
+
+Fri Nov 24 23:51:37 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in (common): Remove NLS
+
+       * automake.in (common): Include ABOUT-NLS.
+
+       * automake.in: Test for install-sh and mkinstalldirs
+
+       * automake.in: Blank line after OBJECTS= line
+
+       * automake.in: Start subshell in loop after check for Makefile.am
+
+       * automake.in: --use-deps now the default
+
+       * automake.in (am_dir): Don't apply transform to install directory name
+
+       * packagedata.am: Don't apply transform to install directory name
+
+       * Makefile.am (SUBDIRS): Hold off on internationalization
+
+Thu Nov 23 18:02:38 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in:
+       Write 'SOURCES =' line after copying Makefile.am variables
+
+       * automake.in: Fixed bug in "--" option processing
+
+       * subdirs.am: ($(RECURSIVE)): Removed trailing \ from last line
+
+       * Makefile.am (DIST_OTHER): Include gettext-sh
+
+       * Makefile.am (SUBDIRS): Define
+
+       * configure.in: Include internationalization bits
+
+       * automake.in: Many changes to avoid double-colon rules.
+
+       * subdirs.am: ($(RECURSIVE)): Print name of target actually used
+
+       * subdirs.am: Removed "::" rules
+
+       * header.am: Removed install, uninstall
+
+       * header.am: Added install, uninstall targets
+
+       * hack-make.sed: Rewrite targets like "all-local" to "all_local"
+
+       * header.am, libraries.am, mans.am, texinfos.am, footer.am:
+       Removed "::" rules
+
+       * Makefile.am (PACKAGEDATA): Include libscripts.am
+
+       * libprograms.am: Don't install libscripts here
+
+       * libscripts.am: Initial revision
+
+       * scripts.am, programs.am, libprograms.am: Removed "::" rules
+
+       * automake.in (am_dir): Run package name through name transform.
+
+       * automake.in: Don't use packagedata.sed or data.sed
+
+       * Makefile.am (PACKAGEDATA): Removed data.sed, packagedata.sed.  Added
+       packagedata.am
+
+       * data.am: No longer run through sed
+
+       * packagedata.am: Initial revision
+
+Wed Nov 22 22:31:02 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in: No blank line after Usage
+
+       * automake.in: Removed "NLS nuisances" section.
+       Now uniformly uses $echo for user-visible messages (in advance of
+       internationalization)
+
+       * subdirs.am (maintainer-clean): Don't use realclean-local
+
+       * Makefile.am: Use PACKAGEDATA, not custom code
+
+       * data.am: Use @LONG@, not $(@LONG@)
+
+       * automake.in: Handle DATA and PACKAGEDATA
+
+       * packagedata.sed: Initial revision
+
+       * data.am: Use @DIR@, not $(@DIR@)
+
+       * data.sed: Use $(datadir), not datadir
+
+       * data.sed: Initial revision
+
+       * data.am: Wrote uninstall targets
+
+       * data.am: Initial revision
+
+       * dist-subd.am (dist): Don't link a file that has already been linked
+
+       * dist-subd-top.am, dist.am (dist):
+       Run `automake --include-deps' before making distribution
+
+       * automake.in: More dependency-tracking bug fixes
+
+       * dist-vars.am (DIST_FILES): Rearranged to be like dist-vars-subd.am
+
+       * dist-subd-vars.am (DIST_FILES): Include DIST_COMMON
+
+       * tags-subd.am, tags.am: Added trailing blank line
+
+       * depend.am: Use ".P", not "empty.P", as placeholder.
+
+       * automake.in: Only include depend.am if SOURCES not empty
+
+       * automake.in: Added --use-deps and --include-deps options.
+       Handle auto-generating dependencies.
+
+       * Makefile.am (am_DATA): Include depend.am
+
+       * depend.am: Initial revision
+
+       * automake.in: Look for acconfig.h, config.h.top, and config.h.bot
+
+       * automake.in: Put blank line after .SUFFIXES
+
+       * scripts.am: Added blank line at end
+
+       * scripts.am: Removed unnecessary comment
+
+       * scripts.am: Removed unnecessary workarounds
+
+       * automake.in: Don't include programs.am if PROGRAMS empty
+
+       * header-vars.am (INSTALL_SCRIPT): Typo
+
+       * texinfos.am, compile-kr.am: Don't include .SUFFIXES
+
+       * automake.in: Handle .SUFFIXES here.
+
+       * configure.in: Use fp_PROG_INSTALL
+
+       * header-vars.am: Changes for autoconf 2.5.
+       Now includes INSTALL_SCRIPTS.
+
+       * texinfos.am (install-info): Bug fix
+
+       * automake.in:
+       Include scripts.am or libscripts.am in output if appropriate
+
+       * programs.am (install-programs, uninstall-programs):
+       Don't install SCRIPTS
+
+       * Makefile.am (am_DATA): Include scripts.am
+
+       * scripts.am: Initial revision
+
+Tue Nov 21 09:11:38 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in:
+       Cleaned up how "prog_SOURCES" variable is found in input.
+       Ditto prog_OBJECTS.
+       Put static sed scripts into separate, installed files.
+
+       * Makefile.am (am_DATA): Include hack-make.sed and nl-remove.sed
+
+       * hack-make.sed, nl-remove.sed: Initial revision
+
+       * texinfos.am (install-info): Rewrote
+
+       * subdirs.am (all-recursive): Put with other -recursive rules
+
+       * configure.in: Version 0.20
+
+       * automake.in: Another bug fix
+
+       * automake.in: Bug fix when looking for texinfo.tex
+
+       * texinfo.tex: Initial revision
+
+       * automake.in:
+       If TEXINFOS defined but texinfo.tex does not exist, give warning.
+
+       * subdirs.am (all): Renamed from _all.  Now uses all-recursive
+       (all-recursive): Don't fail immediately if -k specified.
+
+Mon Nov 20 22:48:03 1995  Tom Tromey  <tromey@cambric>
+
+       * subdirs.am (_all):
+       New target.  Now use Jim Meyering's formulation of AIX
+       workaround.
+       (install-exec, install-data): New targets
+
+Sat Nov 18 19:07:30 1995  Tom Tromey  <tromey@cambric>
+
+       * remake.am (Makefile.in): automake "Makefile", not "Makefile.am"
+
+       * automake.in: Use @datadir@
+
+       * automake.in: Added @configure_input@ line
+
+Fri Nov 17 23:32:43 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in: "--help" option now prints auto-recognized file names.
+       Allow AM_ overriding of more variables.
+
+       * texinfos.am (install-info):
+       Don't cd to srcdir to avoid breaking install-sh
+       Other bug fixes
+
+       * Makefile.am: Handle automake.texi
+
+Thu Nov 16 18:43:43 1995  Tom Tromey  <tromey@cambric>
+
+       * subdirs.am (all): Separated out due to AIX 3.2.5 bug.
+
+       * tags.am (TAGS): bug fix
+
+       * automake.in: Use am_dir, not AM_DIR.
+       Use version, not VERSION.
+       Bug fix in TAGS code.
+
+       * Makefile.am (am_DATA): Include tags.am and tags-subd.am
+
+       * subdirs.am: TAGS target now in tags.am
+
+       * footer.am: TAGS and ID targets now in tags-subd.am
+
+       * tags-subd.am, tags.am: Initial revision
+
+       * automake.in: Cleaned up AM_PROGRAM code.
+       Handle TAGS target better
+
+       * remake.am, remake-subd.am (Makefile.in): Bug fix.
+
+       * automake.in (usage): Updated
+
+       * remake-subd.am, remake.am:
+       Added rule where Makefile.in depends on Makefile.am
+
+       * automake.in: Entire body of 'for' loop now in subshell
+
+       * automake.in (common): config.guess and config.sub are common files.
+
+       * dist-subd-top.am, dist.am (dist): Bug fix.
+
+       * Makefile.am (DIST_OTHER): Don't include TODO
+
+       * automake.in: Auto-include TODO and THANKS files.
+
+       * dist-subd-top.am, dist.am (dist): Don't depend on DIST_DIRS
+
+       * automake.in: More bug fixes in "look for Makefile.am" code.
+
+       * automake.in: Bug fix in "look for Makefile.am" code.
+
+       * automake.in:
+       If no arguments given, look for all Makefile.am's in this
+       directory and in immediate subdirs
+
+       * automake.in: Bug fixes for LDADD-override feature.
+
+       * program.am: Use @PROGRAM@_LDADD, and put after LDFLAGS
+
+       * automake.in: Allow `prog_LDADD', if specified, to override LDADD.
+
+       * automake.in: Use AM_PROGRAMS, not ALLPROGRAMS, and invert sense.
+
+       * header-vars.am (ALL): Use PROGRAMS, not ALLPROGRAMS.
+
+Wed Nov 15 01:54:43 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in: No longer look for _SOURCES or _OBJECTS
+
+       * header-vars.am:
+       Remove "automatically created" header (now in automake).
+       Updated copyright.
+
+       * automake.in: Put version info in Makefile header
+
+Tue Nov 14 23:38:17 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in: Minor cleanups
+
+       * dist-subd-top.am, dist.am (dist):
+       Don't link or copy file if it already exists.
+
+       * automake.in:
+       Look for _SOURCES (common sources) and generate _OBJECTS.
+
+       * footer.am (ID, TAGS): Include HEADERS
+
+       * dist-vars.am, dist-subd-vars.am (DIST_FILES): Include HEADERS
+
+Mon Nov 13 22:20:02 1995  Tom Tromey  <tromey@cambric>
+
+       * dist-subd.am (distdir): Is relative to ".."
+
+       * dist-subd-vars.am (PACKAGE, VERSION): Define
+
+       * dist-subd.am (dist): Don't handle DIST_DIRS.
+
+       * mans.am (uninstall-man): Another bug fix.
+
+       * mans.am (uninstall-man): Bug fix.
+
+       * dist.am, dist-subd-top.am (dist): Bug fix
+
+       * Makefile.am (DIST_SUBDIRS): New macro
+
+       * dist-subd-top.am, dist.am (dist): Handle DIST_SUBDIRS
+
+       * Makefile.am (DIST_OTHER): Include automake.in
+
+       * Makefile.am (DISTCLEANFILES): New macro.
+
+       * automake.in (common): Include COPYING.LIB
+
+       * Makefile.am (automake): New rule.
+
+       * texinfos.am (install-info): Changed per GNU standards
+
+       * remake-hdr.am (stamp-h.in):
+       Use "touch", not "date", per GNU standards.
+
+       * automake.in (common): Include texinfo.tex
+
+Sun Nov 12 23:59:08 1995  Tom Tromey  <tromey@cambric>
+
+       * automake.in: More fixes when finding common files.
+
+       * Makefile.am (DIST_OTHER): Another removal.
+
+       * automake.in: Special-case when amdir=.
+
+       * Makefile.am (DIST_OTHER): Removed auto-detected files.
+
+       * automake.in:
+       Search for commonly-used files and auto-include them in distribution
+
+       * dist-vars.am (DIST_FILES): Include DIST_COMMON.
+       (DIST_CONF): Removed files searched for by automake.
+
+       * automake.in: More arg-parsing bug fixes.
+
+       * Makefile.am (DIST_OTHER): Include install-sh
+
+       * Makefile.am (DIST_OTHER): Don't include auto-included files.
+
+       * automake.in: Bug fixes to argument parsing code.
+
+       * automake.in: Handle --version and --help.
+       NLS stuff from autoconf.
+
+       * Makefile.am (amdatadir): Fixed typo.
+       (install): Make install directories
+
+       * Makefile.am: Use "install::", not "install:"
+
+       * install-sh, mkinstalldirs: Initial revision
+
+       * configure.in: Use AC_PROG_INSTALL
+
+       * automake.in: Set AM_DIR based on configure results.
+
+       * Makefile.am (install): New target.
+       (amdatadir): New variable.
+
+       * automake.in: Use "#! /", not "#!/".
+
+       * Makefile.am, configure.in: Initial revision
+
+       * automake.in: Renamed from "automake".
+       Set VERSION.
+
+       * dist.am (PACKAGE, VERSION): Now in dist-vars.am
+
+       * automake.in: Insert remake-subd.am if appropriate.
+
+       * subdirs.am (TAGS): Include $(CONFIG_HEADER) when making tags.
+
+       * automake.in: Handle ALLPROGRAMS variable.
+
+       * header-vars.am (ALL): Use ALLPROGRAMS, not PROGRAMS.
+
+       * automake.in: Fixlet when printing "subdir=DIR"
+
+       * automake.in: Put "subdir=DIR" into subdir Makefile
+
+       * automake.in: Don't refer to distname.am.
+       Only put footer.am in subdir Makefiles.
+
+       * subdirs.am (id, ID): New target.
+       (.NOEXPORT): Copied from footers.am.
+
+       * subdirs.am (TAGS): Bug fixes.
+
+       * subdirs.am (TAGS): Don't fail if a subdir doesn't have TAGS target.
+
+       * subdirs.am (maintainer-clean-local): Remove TAGS
+
+       * subdirs.am (TAGS): Make tags file that includes all subdir tags files
+
+       * subdirs.am: Use maintainer-clean, per GNU standards
+
+       * dist-subd-top.am: Some variables defined in dist-vars.am
+
+       * dist-vars.am (PACKAGE, VERSION):
+       New variables, initialized by configure
+
+       * footer.am (id, ID): New targets
+       (TAGS): Put TAGS file in build, not source, directory
+
+       * remake-subd.am (Makefile): Don't assume subdir is 'src'
+
+       * dist.am: Changed to assume PACKAGE and VERSION are set by configure.
+
+       * dist-subd.am: Changed to conform to new top-level dist target.
+
+       * dist-subd-top.am:
+       Changed to assume PACKAGE and VERSION are set by configure.
+
+       * clean-kr.am, clean.am (maintainer-clean):
+       Updated rules per GNU standards.
+
+       * clean.am, clean-kr.am (maintainer-clean): Renamed from realclean.
+
+Sat Nov  5 14:39:50 1994  djm  <djm@cambric>
+
+       * automake.in, texinfos.am: kludge for multiple-part info files
+
+Thu Nov  3 13:33:44 1994  djm  <djm@cambric>
+
+       * clean.am, clean-kr.am: remove INFOS
+
+Wed Nov  2 06:15:42 1994  djm  <djm@cambric>
+
+       * texinfos.am: add path
+
+       * remake.am, remake-hdr.am: account for VPATH limitations
+
+Mon Oct 24 23:01:59 1994  djm  <djm@cambric>
+
+       * automake.in, dist-subd-top.am, dist-subd.am, dist.am, header-vars.am, libprograms.am, programs.am:
+       handle SCRIPTS and LIBSCRIPTS similar to PROGRAMS
+
+Sun Oct 23 01:50:41 1994  djm  <djm@cambric>
+
+       * texinfos.am: install-info depends on info files
+
+       * dist-subd-vars.am, dist-vars.am: distrib info files
+
+Sun Oct  2 02:03:06 1994  djm  <djm@cambric>
+
+       * clean-kr.am, clean.am: fix up distclean
+
+       * subdirs.am: fix typo
+
+       * clean.am: do more in distclean
+
+Sat Oct  1 23:52:51 1994  djm  <djm@cambric>
+
+       * libraries.am: make install depend on all
+
+       * automake.in: fix typo
+
+Wed Sep 28 21:15:26 1994  djm  <djm@cambric>
+
+       * dist-subd-vars.am, dist-vars.am, header-vars.am: fix doc bugs
+
+       * automake.in, compile-vars.am, dist.am: fix dist for no subdirs
+
+       * dist-subd-top.am: Initial revision
+
+       * automake.in, header-vars.am, libraries-vars.am, mans-vars.am, texinfos-vars.am:
+       centralize prefix var setting
+
+       * header-vars.am: set all the std vars based on prefix
+
+Tue Sep 27 01:32:22 1994  djm  <djm@cambric>
+
+       * automake.in: don't add kr stuff if not needed
+
+       * dist-vars.am: add config vars to dist
+
+Mon Sep 26 23:09:09 1994  djm  <djm@cambric>
+
+       * program.am: add LDADD
+
+       * compile-vars.am: remove LDADD from LDFLAGS
+
+       * clean.am: move knr stuff to another file
+
+       * automake.in: use different clean file for ansi2knr
+
+       * clean-kr.am: Initial revision
+
+Thu Sep 22 03:45:02 1994  djm  <djm@cambric>
+
+       * automake.in, dist-subd.am, dist.am: fix rules and dist
+
+Tue Sep 20 21:29:40 1994  djm  <djm@cambric>
+
+       * compile.am, automake.in: split out knr
+
+       * compile-kr.am: Initial revision
+
+       * libprograms.am: fix typo
+
+       * automake.in, clean.am, compile-vars.am, header-vars.am, libprograms.am:
+       make libprograms work
+
+       * libprograms.am: Initial revision
+
+       * automake.in, compile.am, header-vars.am: fix little bugs
+
+       * compile.am: allow parallel K&R
+
+       * clean.am: remove kerb temps
+
+       * automake.in: fix recognizing start of rules
+
+       * dist-subd.am, dist.am: fix dist
+
+       * automake.in, compile.am, footer.am, texinfos.am: fix ansi2knr
+
+Mon Sep 19 23:39:21 1994  djm  <djm@cambric>
+
+       * automake.in: works on m4 too
+
+       * automake.in, mans.am: works on fileutils
+
+       * automake.in, clean.am, compile.am, dist-subd.am, dist.am, footer.am, header-vars.am, header.am, libraries.am, library.am, mans-vars.am, mans.am, programs.am, remake-hdr.am, remake-subd.am, remake.am, subdirs.am, texinfos.am:
+       works on fileutils except for all
+
+       * automake.in: vars thing
+
+       * header-vars.am: Initial revision
+
+       * texinfos-vars.am, mans-vars.am, libraries-vars.am, dist-vars.am, dist-subd-vars.am:
+       entered into RCS
+
+       * compile-vars.am: Initial revision
+
+       * automake.in: many improvements
+
+       * footer.am: Initial revision
+
+       * dist.am: remove distname
+
+       * automake.in: namespace cleanup
+
+       * distname.am: Initial revision
+
+       * automake.in, clean.am, compile.am, dist-subd.am, dist.am, header.am, libraries.am, library.am, mans.am, program.am, programs.am, remake-hdr.am, remake.am, subdirs.am, texinfos.am:
+       might work
+
+       * mans.am, libraries.am, texinfos.am, library.am, compile.am, program.am, programs.am, clean.am, subdirs.am, remake-subd.am, remake.am, remake-hdr.am, dist.am, dist-subd.am, header.am, automake.in:
+       Initial revision
+
+
+-----
+
+Copyright 1994-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
diff --git a/old/ChangeLog.98 b/old/ChangeLog.98
new file mode 100644 (file)
index 0000000..3eeb353
--- /dev/null
@@ -0,0 +1,2191 @@
+1998-12-22  Marcus G. Daniels  <mgd@chama.santafe.edu>
+
+       * automake.in (handle_dependencies): Transform EXT & PFX in
+       Objective C case.
+
+1998-12-11  Marcus G. Daniels  <mgd@chama.santafe.edu>
+
+       * automake.in: Register Objective C language.
+       (finish_languages): Consider Objective C to be non_c.
+       (lang_objc_rewrite, lang_objc_finish): New functions.
+       (resolve_linker): Recognize OBJCLINK before LINK.
+
+1999-01-10  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_texinfo): Handle empty $config_aux_dir.
+
+       * automake.in (handle_texinfo): Set $conf_pat correctly when
+       config_aux_dir not used.
+       (handle_texinfo): Run maintainer-clean-aminfo rules in srcdir.
+       From Erez Zadok.
+       * texi-vers.am (maintainer-clean-@VTI@): Prefix file names with
+       $(srcdir).  From Erez Zadok.
+       ($(srcdir)/stamp-@VTI@): Don't run mdate-sh from srcdir.
+
+1999-01-08  Thomas Tanner  <tanner@gmx.de>
+
+       * depend.am: remove the dependencies (.deps)
+       in "make distclean", not "make maintainer-clean"
+
+1999-01-10  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (write_aclocal): Updated copyright.
+       (parse_arguments): Likewise.
+       * automake.in (parse_arguments): Updated copyright.
+       (initialize_global_constants): Likewise.
+
+       * Makefile.am (pkgdata_DATA): Renamed from pkgdata_SCRIPTS.
+       (install-data-hook): New hook.  Report from Petter Reinholdtsen.
+
+       * remake-hdr.am: Provide `else' clause for each `if'.
+
+1999-01-10  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * remake-hdr.am: recover from removal of config headers, and try
+       to get real timestamps, which is useful for CVS files
+
+1999-01-10  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_merge_targets): Don't special-case "-local"
+       targets.  Test all.test.
+
+       * automake.in (handle_texinfo): Prepend $(srcdir) to directory
+       used to find texinfo.tex.  Report from Glenn Amerine.
+
+1999-01-07  Tom Tromey  <tromey@cygnus.com>
+
+       Based on report from Marcus G. Daniels.  Fixes include.test.
+       * automake.in (generate_makefile): Call read_main_am_file.
+       (read_main_am_file): New sub.
+       (read_am_file): Moved header generation code into
+       read_main_am_file.
+
+1999-01-06  Gary V. Vaughan  <garyv@oranda.demon.co.uk>
+
+       * automake.in (require_file_internal): qub perl on win32 hangs
+       on a call to unlink for a non-existant file, which in turn causes
+       tests/symlink.test to hang on win32.  Check that the file exists
+       before unlinking it!
+
+1998-12-24  Thomas Tanner  <tanner@gmx.de>
+
+       * automake.in (handle_ltlibraries): check whether -module was
+       defined for libraries names without 'lib' prefix.
+
+Fri Dec 11 10:20:42 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * compile_f_c_cxx.test: Change to use F77 and F77LINK instead of
+       FC and FLINK, respectively.
+       * flibs.test: same
+       * fnoc.test: same
+       * fo.test: same
+       * fonly.test: same
+       * link_f_c.test: same
+       * link_f_c_cxx.test: same
+       * link_f_cxx.test: same
+       * link_f_only.test: same
+
+Fri Dec 11 10:23:17 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * automake.in, automake.texi: Change all of the Fortran 77 code to
+       use the new `F77' prefix instead of the older `FC' prefix.
+       Specifically this changed FC, FCOMPILE, LTFCOMPILE, FLINK and FLD
+       to F77, F77COMPILE, LTF77COMPILE, F77LINK and F77LD, respectively.
+
+1999-01-05  Tom Tromey  <tromey@cygnus.com>
+
+       * depend2.am (%.o): Use \012, not \n, to avoid losing `tr's.  From
+       Bill Currie.
+       (%.lo): Likewise.
+
+1998-12-22  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * depend2.am: Don't assume backslash can't occur in the middle of
+       filename; it loses on M$W
+
+1998-12-21  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_libraries): Reverted Thomas Tanner's
+       change.  Non-libtool libraries still must fit naming
+       requirements.
+
+1998-12-21  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * automake.in (handle_configure): Dist inputs for AC_OUTPUT.
+
+1998-12-21  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * depend2.am: don't use .p and .P for dependencies; it loses on
+       case-insensitive filesystems.
+       Reported by Henrik Frystyk Nielsen <frystyk@w3.org>
+
+1998-12-20  Thomas Tanner  <tanner@gmx.de>
+
+       * automake.in (handle_libraries, handle_ltlibraries): relax the
+       name checking to not enforce `^lib.*' for the sake of building libtool
+       modules.
+
+1998-12-21  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (do_one_merge_target): Special case
+       install-data-hook and install-exec-hook.
+       (handle_merge_targets): Removed install-data-hook and
+       install-exec-hook code.  Test insthook.test.
+
+1998-12-16  Tom Tromey  <tromey@cygnus.com>
+
+       * tags.am (ID): Uniquify list of sources.  Report from Jim
+       Meyering.
+
+1998-12-11  Tom Tromey  <tromey@cygnus.com>
+
+       Bug report from Paul D. Smith:
+       * automake.in (handle_merge_targets): Set
+       AM_INSTALL_PROGRAM_FLAGS, not INSTALL_PROGRAM.
+       * header-vars.am (INSTALL_PROGRAM): Added
+       AM_INSTALL_PROGRAM_FLAGS.
+
+1998-12-03  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist): Print prettier banner when
+       `make dist' succeeds.  From Akim Demaille.
+
+1998-12-02  Tom Tromey  <tromey@cygnus.com>
+
+       * configure.in: Upped version to 1.3e (1.3d was just released).
+
+       * configure.in: Upped version to 1.3d.
+
+       * texinfo.tex, config.guess, config.sub, install-sh: New
+       versions.
+       * ansi2knr.c: New version.
+
+       * automake.in (handle_configure): Quote @MAINTAINER_MODE_TRUE@ to
+       avoid problems where AM_MAINTAINER_MODE is put into automake's own
+       configure.in.
+
+       * Makefile.am (cvs-dist): Run `cvs tag' operation in srcdir.
+
+       Some bugs from François Pinard:
+       * automake.in (usage): Remove duplicates in file list.
+
+       * automake.in (usage): Print files in column-major order.
+       (handle_gettext): Only require ABOUT-NLS for GNU programs.
+
+1998-12-01  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.texi (Dist): Documented GZIP_ENV.
+       * automake.in (handle_dist): Define and use GZIP_ENV, not GZIP.
+       (initialize_global_constants): Use GZIP_ENV, not GZIP.
+
+1998-11-27  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (quote_cond_val): Use "\002", not '\002', to
+       represent null string.
+       (unquote_cond_val): Removing all "\002" strings from result.  Test
+       cond7.test.
+
+       * automake.texi: Formatting changes for latest texinfo.
+
+       * automake.in (handle_java): Removed debugging print.
+
+1998-11-18  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (finish_languages): Use CCLD, not CLD.
+
+       * automake.in (finish_languages): Define CLD; use it in LINK
+       definition.
+       (lang_cxx_finish): Define CXXLD; use it in CXXLINK definition.
+       (lang_f77_finish): Define FLD; use it in FLINK definition.
+       (lang_ppf77_finish): Likewise.
+       (lang_ratfor_finish): Likewise.
+
+1998-11-10  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * automake.in (scan_one_configure_file): Recognize
+       AC_F77_LIBRARY_LDFLAGS, and recognize FLIBS as a configure
+       substitution.
+
+       * automake.texi: Fix several little Fortran 77 references to now
+       point to autoconf.texi.  Rename associated Fortran 77 macros from
+       `AM_' to `AC_'.
+
+1998-11-10  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (read_am_file): Handle configure_vars case.  Test
+       pluseq4.test.
+
+1998-11-09  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (read_am_file): `conditional_stack' isn't a
+       function.  Correctly add new value to existing value in `+='
+       case.
+
+1998-10-29  Gary V. Vaughan <gvaughan@oranda.demon.co.uk>
+
+       * automake.in (parse_arguments): Fixed type of -c for copying
+
+1998-10-30  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.texi (Install): Documented DESTDIR more fully.  From
+       Jeff Garzik.
+
+       * automake.in (MACRO_PATTERN): Recognize `+='.
+       (BOGUS_MACRO_PATTERN): Likewise.
+       (read_am_file): Handle `+=' assignments.
+
+1998-10-28  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am (maintainer-check): Changed code to be acceptable to
+       bash 2.01.1.
+
+       * automake.in (do_one_clean_target): Special-case config.status.
+       Report from Jeff Garzik.
+
+       * m4/Makefile.am (m4data_DATA): Don't mention f77.m4.
+       * m4/f77.m4: Removed; macro now in autoconf proper.
+
+1998-10-24  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist_worker): Typo fix in code testing to
+       see if subdir is `.'.  From Raja R Harinath.
+
+       * m4/lispdir.m4: Fixed sed invocation.  From Akim Demaille.
+
+1998-10-20  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_dependency_file): Fixed test on `while' loop.
+       Fixes depend2.test.  Report from Akim Demaille.
+
+1998-10-16  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_ltlibraries): Specify `noinst' when
+       computing valid prefixes.  From Ulrich Drepper.
+
+       * automake.in (scan_dependency_file): Don't give an error if there
+       is text after the last line.  Report from Matthew D. Langston.
+
+       * m4/mktime.m4: Detect glibc mktime bug.  From Jim Meyering.
+
+       * Makefile.am (SUBDIRS): Added `.' again.
+
+       * Makefile.am (EXTRA_DIST): Removed automake.spec.in.  From
+       Matthew D. Langston.
+       (info_TEXINFOS): Removed am-f77.texi.
+
+       * automake.in (handle_ltlibraries): Allow `noinst' LTLIBRARIES.
+       These are libtool convenience libraries.
+
+1998-10-13  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/f77.m4: New file.
+       * m4/Makefile.am (m4data_DATA): Added f77.m4.
+
+Thu Oct  8 15:00:57 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * automake.in (resolve_linker): Put the Fortran 77 linker where it
+       needs to be.
+
+       * automake.in (lang_f77_finish): Add support for Fortran 77.
+
+       * automake.in (f77_extensions): New helper function for function
+       `lang_f77_finish'.
+
+       * automake.in (lang_f77_rewrite): Change to return success.
+
+       * automake.in (scan_one_configure_file): Add test for the Fortran
+       77 compiler.
+
+       * automake.in (finish_languages): Changed tests for "C++ only" to
+       "C++ and/or Fortran 77 only", and renamed `all_cxx' to `non_c'.
+
+       * automake.in: Registered the ppf77 language (`.F' extension) for
+       preprocessed Fortran 77.
+
+       * automake.in: Registered the ratfor language (`.r' extension).
+
+       * automake.in: Registered Fortran 77 header files with the "header
+       language" (`.inc' extension).
+
+Tue Sep  8 14:50:50 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * automake.texi: Added several new index entries.
+
+Sun Aug 30 16:10:31 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * automake.texi:
+       - Add `@ovindex' (output variable index).
+       - Merge `@defmac' (Autoconf macros) and `@ovindex' to the General
+         Index.
+
+       * automake.texi (Macros):
+       - Changed the `@table @code' list of macros to `@defmac'.
+       - Add `AC_PROG_FC' and `MDL_F77_LIBRARY_LDFLAGS' to the list.
+
+Tue Aug 11 10:42:39 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+
+       * automake.texi (C++): Change `@table' to `@vtable'.
+
+       * automake.texi (Fortran 77): Add Fortran 77 documentation.
+
+1998-10-11  Tom Tromey  <tromey@cygnus.com>
+
+       Preliminary (completely untested) multilib support.
+       * automake.texi (Macros): Document AM_ENABLE_MULTILIB.
+       * m4/Makefile.am (m4data_DATA): Added multi.m4.
+       * Makefile.am (amfiles): Added multilib.am.
+       * automake.in (seen_multilib): New global.
+       (scan_one_configure_file): Recognize AM_ENABLE_MULTILIB.
+       (generate_makefile): Call handle_multilib.
+       (handle_multilib): New function.
+       * multilib.am: New file.
+       * m4/multi.m4: New file.
+
+1998-10-08  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist): Always include configure.in and
+       configure in distribution.  Fixes confdist.test.
+
+       * automake.in (do_one_merge_target): Be silent when running
+       install-exec-am and install-data-am.  Fixes extra3.test and
+       extra4.test.
+
+1998-10-07  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (am_install_var): Added -noextra option.
+       (handle_data): Pass -noextra to am_install_var.
+
+Sun Oct  4 22:24:10 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/winsz.m4 (AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL): Use
+       3-argument form of AC_DEFINE.
+       * m4/regex.m4 (AM_WITH_REGEX): Use 3-argument form of AC_DEFINE.
+       * m4/ptrdiff.m4 (AM_TYPE_PTRDIFF_T): Use 3-argument form of
+       AC_DEFINE.
+       * m4/protos.m4 (AM_C_PROTOTYPES):Use 3-argument form of
+       AC_DEFINE.
+       * m4/obstack.m4 (AM_FUNC_OBSTACK): Use 3-argument form of
+       AC_DEFINE.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Use 3-argument form of
+       AC_DEFINE.
+       * m4/dmalloc.m4 (AM_WITH_DMALLOC): Use 3-argument form of
+       AC_DEFINE.
+
+Tue Oct  6 00:02:15 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * depend2.am (%.lo): Handle case where compiler does not put space
+       before ":".  From Raja R Harinath.
+
+Mon Oct  5 13:05:43 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_one_configure_file): AC_CONFIG_HEADER is not
+       obsolete; it simply isn't preferred with automake.
+       (scan_one_configure_file): Likewise for AC_DECL_YYTEXT and
+       AC_PROG_LEX.
+
+       * automake.in (am_line_error): Handle case where variable defined
+       in configure.in.  Fixes test badline.test.
+       (%configure_vars): Redefined meaning of values.
+       (scan_one_configure_file): Set $configure_vars values
+       appropriately.
+
+Sat Oct  3 14:53:34 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_aclocal_m4): Use new MAINTAINER_MODE
+       conditional.
+       (handle_configure): Likewise.
+       (read_am_file): Likewise.
+       (file_contents_with_transform): Likewise.
+       (scan_one_configure_file): Recognize that AM_MAINTAINER_MODE
+       defines a conditional.
+       * automake.texi (Optional): Document new AM_MAINTAINER_MODE.
+       * texi-vers.am ($(srcdir)/@VTEXI@): Look at MAINTAINER_MODE
+       conditional.
+       (maintainer-clean-@VTI@): Likewise.
+       * remake.am ($(srcdir)/configure): Look at MAINTAINER_MODE
+       conditional.
+       * remake-hdr.am ($(srcdir)/@CONFIG_HEADER_IN@): Look at
+       MAINTAINER_MODE conditional.
+       * m4/maintainer.m4 (AM_MAINTAINER_MODE): Defined MAINTAINER_MODE
+       conditional.
+
+1998-10-03  Jim Blandy  <jimb@zwingli.cygnus.com>
+
+       * depend2.am (%.lo): When editing the dependency file to add the
+       .lo file to the targets, allow for whitespace between the end of
+       the filename and the colon.  Some compilers (notably the Cygnus
+       release of GCC 2.7-97r1) put space there: "alist.o : ..."
+
+Sat Oct  3 12:07:21 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Handle case where there is no
+       Makefile in the config header directory.  Fixes test config.test.
+
+Thu Oct  1 00:51:51 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * depend2.am (%.o): Append sed results to .P file in this case
+       too.  From Raja R Harinath.
+
+       * m4/lispdir.m4 (AM_PATH_LISPDIR): Correctly find xemacs and
+       xemacs install directories.  From Robert Bihlmeyer.
+
+       * depend2.am: Don't bother trying to delete source file from
+       list.
+
+       * depend2.am (%.o): Handle deleted header file problem.
+       (%.lo): Likewise.
+
+       * texinfos.am (install-info-am): Handle case where INFO_DEPS is
+       empty.  Reported by Andrew Cagney.
+       (uninstall-info): Likewise.
+       (dist-info): Likewise.
+
+       * automake.in (handle_texinfo): Error if user tries to generate
+       HTML.
+
+Wed Sep 30 00:41:40 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (do_one_clean_target): Don't push previous clean
+       target if this target is `mostly'.  Report from Raja R Harinath.
+
+       * subdirs.am (mostlyclean-recursive ...): Build local_target, not
+       target.  From Raja R Harinath.
+
+       Completely changed how languages and source files are handled:
+       * automake.in: Call register_language for each language.
+       (lang_c_rewrite): New function.
+       (lang_cxx_rewrite): Likewise.
+       (lang_header_rewrite): Likewise.
+       (lang_yacc_rewrite): Likewise.
+       (lang_yaccxx_rewrite): Likewise.
+       (lang_lex_rewrite): Likewise.
+       (lang_lexxx_rewrite): Likewise.
+       (lang_asm_rewrite): Likewise.
+       (lang_fortran_rewrite): Likewise.
+       (register_language): Likewise.
+       (extension_map): New global.
+       (language_map): Likewise.
+       (resolve_linker): New function.
+       (handle_single_transform_list): Rewrote to use lang_X_rewrite
+       functions.  Changed meaning of first argument.
+       (initialize_per_input): Removed seen_any_source.  Initialize
+       language_scratch, extension_seen.  Removed cxx_extensions,
+       seen_c_source, dir_holds_headers, dir_holds_sources.
+       (handle_source_transform): Don't compute $objpat.  Pass $obj
+       directly to handle_single_transform_list.
+       (handle_built_sources): Fixed call to
+       handle_single_transform_list.
+       (lang_c_finish): New function.
+       (lang_cxx_finish): Likewise.
+       (lang_header_finish): Likewise.
+       (lang_yacc_finish): Likewise.
+       (lang_yaccxx_finish): Likewise.
+       (lang_lex_finish): Likewise.
+       (lang_lexxx_finish): Likewise..
+       (lang_asm_finish): Likewise.
+       (lang_fortran_finish): Likewise.
+       (yacc_lex_finish_helper): Likewise.
+       (libtool_compiler): Likewise.
+       (saw_extension): New function.
+       (handle_lib_objects_cond): Use saw_extension, not old variables.
+       (handle_yacc_lex_cxx): Removed.
+       (finish_languages): New function.
+       (get_object_extension): Don't set dir_holds_sources.
+       (handle_headers): Don't set dir_holds_headers.  Instead, call
+       saw_extension.
+       (saw_sources_p): New function.
+       (handle_tags): Use it.
+       (handle_dependencies): Likewise.
+       (cxx_extensions): New function.
+       (handle_dependencies): Use it.
+       (generate_makefile): Call finish_languages, not
+       handle_yacc_lex_cxx.
+
+1998-05-24  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * texi-vers.am: Use the correct target names.  Fix generation of
+       stamp file.
+
+       * automake.in (handle_tests): In commands generating site.exp copy
+       the old contents from site.exp, not site.bak, which does not
+       exist.
+
+Tue Sep 29 00:10:22 1998  Tom Tromey  <tromey@cygnus.com>
+
+       Fixed noinst.test again:
+       * automake.in (do_one_merge_target): Special-case `install-am'.
+       (handle_merge_targets): Don't compute @install variable.
+
+       Fixes for recurs2.test.  Report from Jim Meyering.
+       * automake.in (vars_scanned): Define globally.
+       (variable_value_as_list_worker): Delete $var entry in
+       %vars_scanned after local work is done.
+
+1998-05-26  Marcus G. Daniels  <mgd@ute.santafe.edu>
+
+       * automake.in: New pattern: INCLUDE_PATTERN.
+       (read_am_file):  Make AM_FILE a local filehandle.
+       For INCLUDE_PATTERN, store included paths on @include_stack and call
+       read_am_file with argument.
+       (handle_configure): When printing the dependencies for
+       Makefile.in, print the items on include_stack (if any) as
+       dependencies, too.
+
+       * automake.texi: Make a command index `cm' that goes into the
+       concept index.  Put if, endif, else, and include in the command index.
+       (Include): Show usage of include directive.
+
+Mon Sep 28 00:03:45 1998  Tom Tromey  <tromey@cygnus.com>
+
+       `.' in SUBDIRS changes order of builds:
+       * Makefile.am (SUBDIRS): Added `.'.  Put tests last.
+       * tags.am (TAGS): Don't look for TAGS file in `.'.
+       * automake.texi (Top level): Document SUBDIRS change.
+       * automake.in (handle_installdirs): Create separate installdirs-am
+       target.
+       (handle_merge_targets): Don't put all-am onto @all.  Fixed error
+       message.  Correctly handle install-info.  Give error if
+       install-info-local inappropriately defined.  Don't special-case
+       install-data, install-exec, install, uninstall, or all.
+       (handle_subdirs): Don't push `-recursive' target names onto
+       corresponding lists.
+       (do_one_merge_target): Always define `-am' form of rule, and point
+       ordinary form to `-am' or `-recursive' as appropriate.
+       Special-case `all'.
+       (do_check_merge_target): Generate check-am target.
+       (handle_dist_worker): Use target_defined.
+       (handle_dist): Likewise.
+       (handle_merge_targets): Likewise.
+       (do_one_merge_target): Likewise.
+       (do_check_merge_target): Likewise.
+       (do_one_clean_target): Likewise.
+       (initialize_per_input): Initialize $all_target.
+       (do_one_clean_target): Always generate -am form of rule; other
+       changes for new SUBDIRS change.
+       (handle_clean): Always generate clean-am form of rule.
+       (handle_tags): Only build subdir if not `.'.
+       (handle_dist_worker): Skip `.' directory.
+       * subdirs.am: Allow `.' to be specified in SUBDIRS.
+
+Sun Sep 27 20:02:21 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.texi (Dist): Document EXTRA_DIST change.
+       * automake.in (handle_dist_worker): Allow subdirs in EXTRA_DIST.
+
+       * automake.in (handle_ltlibraries): Wrote better comment about
+       EXTRA_LTLIBRARIES.
+
+       * automake.texi (Invoking Automake): Document --copy.
+       * automake.in (copy_missing): New global.
+       (parse_arguments): Recognize --copy/-c.
+       (require_file_internal): Handle $copy_missing.  Fixed error
+       message.
+       (initialize_global_constants): Document -c/--copy.
+
+       * automake.texi: Document LIBOBJS trick.
+
+       * automake.in (handle_dist_worker): If DIST_SUBDIRS defined, use
+       it even when SUBDIRS not conditional.
+
+       * automake.in (quote_cond_val): Turn tabs into \003.
+       (unquote_cond_val): Turn \003 back into tabs.  Fixes test
+       cond6.test.
+
+       * automake.in (read_am_file): Treat backslash-newline as
+       whitespace.  Test parse.test.
+
+Sat Sep 26 19:31:22 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * configure: Rebuilt.
+       * configure.in: Upped version to 1.3c.
+
+       Track recent autoconf changes:
+       * m4/Makefile.in: Rebuilt.
+       * m4/Makefile.am (m4data_DATA): Updated for deleted files.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): Use AC_PROG_INSTALL.
+       * m4/mingw.m4: Removed.
+       * m4/cygwin.m4: Removed.
+       * m4/install.m4: Removed.
+       * m4/exeext.m4: Removed.
+       * automake.in (scan_one_configure_file): Don't look for
+       AM_EXEEXT.
+       (check_cygnus): Only mention AC_EXEEXT.
+       (obsolete_macros): Mention AM_PROG_INSTALL, AM_EXEEXT,
+       AM_CYGWIN32, AM_MINGW32.
+       ($seen_prog_install): Changed interpretation; changed all users.
+       (scan_one_configure_file): Don't look for AM_PROG_INSTALL.
+       ($scripts_installed): Removed.
+       (handle_scripts): Use local $scripts_installed.
+       * aclocal.in (obsolete_macros): Added AM_PROG_INSTALL, AM_EXEEXT,
+       AM_CYGWIN32, AM_MINGW32.
+
+Mon Jul  6 14:52:49 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * compile.am (mostlyclean-compile): If OBJEXT, remove *.$(OBJEXT)
+       along with *.o.
+
+Thu May 28 18:49:47 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in (seen_objext): New variable.
+       (get_object_extension): If seen_objext, use .$(OBJEXT) rather than
+       .o.  When including compile.am, keep or discard OBJEXT lines
+       according to whether seen_objext is set.  If seen_objext, add .obj
+       to @suffixes.  If seen_objext, use .$(OBJEXT) rather than .o when
+       building ansi2knr.
+       (handle_yacc_lex_cxx): If seen_objext, add a rule to create .obj
+       files.  If seen_objext, use .$(OBJEXT) rather than .o when
+       building ansi2knr.
+       (scan_one_configure_file): Check for .obj as well as .o in
+       LIBOBJS.  Set seen_exeext if we see AC_EXEEXT.  Look for
+       AC_OBJEXT, and if found set seen_objext and set OBJEXT in
+       configure_vars.
+       (check_cygnus): Change error message to permit AC_EXEEXT.
+       * compile.am: Add OBJEXT lines for .c.obj compilation.
+       * Makefile.in: Rebuild.
+       * m4/Makefile.in: Rebuild.
+       * tests/Makefile.in: Rebuild.
+
+Mon Sep 11 16:07:55 1997  Chris Provenzano <proven@cygnus.com>
+
+       * header-vars.am: SHELL=@SHELL@
+       Ran aclocal, autoconf, and automake.
+
+Sat Sep 26 16:31:29 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * ltlib.am: Use $(INSTALL) and not $(INSTALL_DATA).
+
+Mon Sep 14 08:27:38 1998  Per Cederqvist  <ceder@lysator.liu.se>
+
+       * automake.in (handle_texinfo): The logic for when to provide
+       texinfo.tex was broken.  Attempt to fix.
+
+Mon Sep 14 00:55:12 1998  Per Cederqvist  <ceder@lysator.liu.se>
+
+       Fix for Dynix 3.1.1.
+       * automake.in (handle_yacc_lex_cxx): Transform "# " to "#line";
+       some compilers (such as /bin/cc on Dynix 3.1.1) don't accept the
+       output from the preprocessor.
+
+Tue Aug 25 18:40:51 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_tests): Don't create site.exp target if it
+       is already in Makefile.am.
+
+Sun Aug 16 23:26:26 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Use @inputs, not
+       @rewritten_inputs, when constructing CONFIG_FILES.  Use different
+       list to test for file existence.  Test colon6.test.
+       (rewrite_inputs_into_dependencies): Added add_srcdir argument.
+       Updated all callers.
+
+Wed Aug 12 14:16:57 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.3b.
+
+Tue Aug 11 12:18:59 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_clean): Added missing close-paren.  Quote
+       `$' so it doesn't expand when replacing.  From Markus
+       F.X.J. Oberhumer.
+
+       * aclocal.in (usage): Changed bug address.
+       * automake.in (usage): Changed bug address.
+
+       * clean.am (distclean-generic): Don't mention
+       DISTCONFIGCLEANFILES.  From Markus F.X.J. Oberhumer.
+
+Mon Aug 10 20:57:35 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_yacc_lex_cxx): Redirect ansi2knr output to
+       correct file.  From Kave Ghazi.
+
+Sun Aug  2 16:05:16 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.3a.
+
+       * config.sub, config.guess, texinfo.tex: New versions from FSF.
+
+Sun Jul 19 00:04:25 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (variable_conditions): Initialize %vars_scanned.
+       (variable_conditions_sub): Check it.  Test cond5.test.
+
+Sat Jul 18 00:24:14 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (variable_value_as_list_worker): Renamed from
+       variable_value_as_list.  Set entry in vars_scanned, and give error
+       if variable recursively defined.  Test recurs.test.
+       (value_to_list): Call it instead.
+       (variable_value_as_list): New function.
+
+       * automake.in (variable_conditions_sub): If var is not
+       conditional, but does have conditional subvariables, then return
+       value should be all permutations of subvariable conditions.  Test
+       cond4.test.
+       (handle_source_transform): Define _OBJECTS variable with each
+       condition; no need to define multiple new variables.
+
+Fri Jul 17 12:56:14 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (am_install_var): Use DESTDIR, not DATADIR.  From
+       Motoyuki Kasahara.
+
+       * automake.in (scan_dependency_file): Recognize DOS-style paths as
+       absolute.
+       * ylwrap: Recognize DOS-style paths as absolute.  From Ian Lance
+       Taylor.
+
+Fri Jul 17 07:37:20 1998  H.J. Lu  (hjl@gnu.org)
+
+       * ylwrap: Don't use absolute path if the input is in the
+       current directory.
+
+Fri Jul 17 11:58:27 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in: Use $(AM_MAKEFLAGS) in every invocation of $(MAKE).
+       * subdirs.am: Likewise.
+
+Thu Jul 16 18:09:03 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * remake.am (config.status): Depend upon
+       $(CONFIG_STATUS_DEPENDENCIES).
+       * automake.in (handle_configure): Examine
+       CONFIG_STATUS_DEPENDENCIES.
+
+Tue Jul 14 13:37:48 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am: Always look in srcdir for automake.in.
+
+Tue Jun 23 14:00:27 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * progs.am: Don't let $(EXEEXT) interfere with $(transform).
+       Report from Mike Stump <mrs@wrs.com>.
+
+Tue Jun  2 13:27:34 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_one_configure_file): Make CONFIGURE file
+       handle local.  From Kevin Street.
+
+       * automake.in (read_am_file): Error if blank line or comment
+       follows trailing backslash.  Test syntax.test.
+       (file_contents_with_transform): Likewise.
+
+Thu May 28 18:49:47 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in (handle_configure): Always use $(SHELL) when running
+       config.status.
+
+Mon Jun  1 14:23:29 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_yacc_lex_cxx): Use AM_CPPFLAGS, AM_CXXFLAGS,
+       AM_CFLAGS.
+       (output_yacc_build_rule): Use AM_YFLAGS, AM_LFLAGS.
+       (handle_dependencies): Don't define CXXMKDEP.
+
+       * clean.am (mostlyclean-generic): Prefix rule with MOSTLYCLEAN.
+       (clean-generic): Prefix rule with CLEAN.
+       (distclean-generic): Prefix rule with DISTCLEAN.
+       (maintainer-clean-generic): Prefix rule with MAINTAINERCLEAN.
+       BUILT_SOURCES now handled in automake itself.
+       * automake.in (initialize_per_input): Initialize
+       maintainer_clean_files.
+       (handle_yacc_lex_cxx): Put lex and yacc output files onto
+       @maintainer_clean_files.
+       (handle_clean): Handle @maintainer_clean_files.  Transform
+       clean.am when installing; try to remove unnecessary tests in
+       generated code.
+
+       * automake.in (do_check_merge_target): Only generate $(MAKE)
+       command if there are check targets to make.  Report from Karl
+       Heuer.
+
+Sun May 17 23:05:55 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (write_aclocal): Fixed generated copyright message.
+       From Eleftherios Gkioulekas.
+
+       * automake.in (parse_arguments): Typo fix from Paul D. Smith.
+
+Fri May  8 12:14:03 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_yacc_lex_cxx): Put lex and yacc output files
+       onto @clean.
+
+Wed May  6 01:18:05 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * header-vars.am (DESTDIR): Changed from DISTDIR.
+
+Fri Apr 24 10:16:20 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * libs.am: Don't display loop while it runs.
+
+Sun Apr  5 13:58:24 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.3.
+
+       * automake.in (handle_options): Correctly handle trailing alpha
+       version letter or lack thereof.  Test version3.test.
+
+       * automake.in (am_conf_line_warning): Perl 4 fixlet; typo fix.
+
+       * automake.in (handle_ltlibraries): Examine _DEPENDENCIES
+       variable.  Report from Chris Provenzano.  Test library.test.
+       (handle_libraries): Likewise.
+
+       * m4/lex.m4: Allow AM_PROG_LEX to be called with no arguments.
+
+Sun Apr  5 13:54:25 1998  Alexandre Oliva <oliva@dcc.unicamp.br>
+
+       * automake.in (scan_one_configure_file): Only warn about
+       AC_DECL_YYTEXT and AC_PROG_LEXX.
+       (am_conf_line_warning): New function.
+
+Fri Apr  3 15:43:46 1998  Doug Evans  <devans@seba.cygnus.com>
+
+       * automake.in (handle_configure): Fix setting of colon_infile
+       in case where multiple files are used to build Makefile.
+       [ Test colon5.test ]
+
+Fri Apr  3 13:07:58 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * ansi2knr.c, texinfo.tex: New versions from respective
+       maintainers.
+
+       * automake.in (scan_one_configure_file): Exclude INSTALL_DATA from
+       configure_vars.  Test instdata.test.
+
+Tue Mar 31 21:07:42 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_yacc_lex_cxx): Changed to use new version of
+       ansi2knr.
+       * ansi2knr.c: New version from L. Peter Deutsch.
+
+Thu Mar 26 11:00:04 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/exeext.m4: Correctly eliminate bad cases when computing
+       am_cv_exeext.  Report from Markus F.X.J. Oberhumer.
+
+Wed Mar 25 15:09:56 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_options): Support alpha version numbers.
+
+       * lisp.am (install-@DIR@LISP): Allow .el files to appear in build
+       directory.  From Gary V Vaughan.
+
+Mon Mar 23 07:55:04 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.2h.
+
+       * header.am (install-@DIR@HEADERS): A header can appear in the
+       build directory as well as the source directory.  From Gary V
+       Vaughan.
+
+       * automake.in (handle_yacc_lex_cxx): Push lib sources onto
+       de_ansi_files before generating ._c dependencies.  Test
+       libobj8.test.
+
+       * m4/mktime.m4: New version from Jim Meyering.
+
+       * aclocal.in (usage): Document --print-ac-dir.
+       (parse_arguments): Added --print-ac-dir.
+
+       * ansi2knr.c, ansi2knr.1: New versions from ghostscript.
+       (main): Reapplied "-" change from Harlan Stenn.
+
+Fri Mar 20 22:42:30 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_one_configure_file): Use &am_conf_line_error,
+       not warn.  Check to make sure warnings happen only for
+       configure.in, not for "not aclocal.m4".
+
+Fri Mar 20 22:35:31 1998  Alexandre Oliva <oliva@dcc.unicamp.br>
+
+       * automake.in: understand AM_PROG_LEX as a replacement for
+       AC_PROG_LEX and AC_DECL_YYTEXT
+       warn if the replaced macros are used.
+       * m4/Makefile.am: add lex.m4
+       * m4/lex.m4 (AM_PROG_LEX): new file and macro
+       * missing: added lex/flex support
+       instead of touching flex and bison output files, try to copy
+       them from a filename based on the last given argument
+
+Fri Mar 20 00:26:10 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/protos.m4: Require AC_PROG_CPP.
+
+       * aclocal.in (add_file): If &search fails, and macro matches AM_,
+       then print error.  Test aclocalii.test.
+
+       De-ansi-fication fixes from Harlan Stenn:
+       * ansi2knr.c (main): Accept "-" argument to mean stdin.
+       * automake.in (handle_yacc_lex_cxx): Preprocess C source before
+       running through ANSI2KNR.
+       (get_object_extension): Generate rule for <dir>/ansi2knr.o.
+
+       * texinfos.am: Include $(DESTDIR).
+       * lisp.am: Include $(DESTDIR).
+       * java.am: Include $(DESTDIR).
+       * mans.am (install-man@SECTION@): Include $(DESTDIR).
+       * automake.in (handle_man_pages): Include $(DESTDIR) in
+       installdirs variable.
+       (handle_texinfo): Likewise.
+       (am_install_var): Likewise.
+       * header-vars.am (DISTDIR): Define.
+       * data.am, header.am, libs.am, ltlib.am, progs.am, scripts.am:
+       Support $(DESTDIR) at install time.  From Assar Westerlund.
+
+       * automake.in (handle_java): Put Java sources in distribution.
+
+Thu Mar 19 01:33:35 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_java): Put JAVACFLAGS after -d option.  From
+       Per Bothner.
+
+       * automake.in (handle_java): Use $(JAVAROOT) in place of `../..'
+       in default CLASSPATH.
+       (am_install_var): Allow `JAVA' variable to be defined.  Don't
+       define `JAVA' primary.
+
+       * automake.in (scan_one_configure_file): Check for `sinclude' and
+       turn into recursive call.
+
+       * automake.in (initialize_per_input): Set $output_all.
+       (generate_makefile): Don't set $output_header or generate
+       `default' target.  Print $output_all before $output_header.
+       (handle_merge_targets): Put `all' target into $output_all.
+
+Wed Mar 18 14:48:44 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Put secondary dependencies from
+       multi-":" AC_OUTPUT entry into dependency list for file created by
+       config.status, not file created by automake.  Test colon3.test.
+       (generate_makefile): Pass $output, not $makefile, to
+       handle_merge_targets.
+
+       * Makefile.am (pkgdata_DATA): Added java.am, java-clean.am.
+       * java-clean.am: New file.
+       * java.am: New file.
+       * automake.in (generate_makefile): Call handle_java.
+       (handle_java): New sub.
+       (am_install_var): Only push primary variable on @all if not doing
+       Java.
+
+Sun Mar  8 15:43:09 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): When recognizing AC_OUTPUT ":"
+       syntax, make regexp less greedy.  From Maciej W. Rozycki.  Test
+       colon4.test.
+
+Fri Mar  6 21:20:53 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/exeext.m4 (AM_EXEEXT): Ignore am_c_test.o.  From Bruno
+       Haible.
+
+Tue Feb 24 12:10:44 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.2f.
+
+       * mans.am (install-man@SECTION@, uninstall-man@SECTION@): Quote
+       `$' in sed expression.
+
+       * config.guess, config.sub, texinfo.tex: New versions from FSF.
+
+       * Makefile.am (pkgdata_DATA): Added mans.am.
+       * automake.in (handle_man_pages): Rewrote for new man page
+       handling.
+       (initialize_global_constants): Removed install_man_format,
+       uninstall_man_format.
+       * mans.am: New file.
+
+       * data.am, header.am, libs.am, lisp.am, ltlib.am, progs.am,
+       scripts.am, texinfos.am: Put `@' before NORMAL_UNINSTALL
+       invocation.
+
+Mon Feb 23 13:38:56 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (get_object_extension): Remove .c.lo rule from
+       libtool when dependencies turned on.
+       * libtool.am (.c.lo): Disable when dependency checking turned on.
+
+       Dependency fixes from Alexandre Oliva:
+       * automake.in (handle_dependencies): Fixed quoting when
+       substituting @PFX@ and @EXT@.  Don't look for the `.P' file.
+       * depend2.am (%.o): Use @PFX@ and @EXT@.
+       (%.lo): New rule.
+
+       * texinfos.am (.txi.info, .txi.dvi, .txi): New rules.
+       * automake.in (handle_texinfo): Recognize .txi files.  From Karl
+       Berry.
+
+       * automake.in (handle_single_transform_list): $objpat now a
+       parameter.  Set $objpat when suffix rule found.
+
+       * aclocal.in (parse_arguments): Only put current year in --version
+       output.
+       * automake.in (parse_arguments): Only put current year in
+       --version output.
+
+Mon Feb 16 00:12:03 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_aclocal_m4): When processing -I options,
+       directory is separate argument.  Test aclocali.test.
+
+Fri Feb 13 14:35:39 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in (handle_texinfo): Correct condition for whether
+       texinfo.tex is required.  [Test texinfo5.test]
+
+Fri Feb 13 00:28:53 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.2e.
+
+       * Makefile.am: Removed bogus line.
+
+Thu Feb 12 22:27:05 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (get_object_extension): Conditionally include .c.o
+       rule from compile.am.
+       (handle_dependencies): Generate correct code when including new
+       depend2.am.
+       (file_contents_with_transform): Better error reporting.
+       * depend.am (MKDEP): Removed.
+       (.deps/.P): Removed.  Don't include .deps/.P.
+       * compile.am (.c.o): Now conditional on dependencies not being
+       generated by compiles.
+       * depend2.am (%.o): New rule.
+       (.deps/%.P): Removed.
+
+       * tags.am (TAGS): Uniquify list of files.  From Harlan Stenn.
+
+       * aclocal.in (scan_m4_files): Reverse-sort keys when constructing
+       `search' function.  From Johan Danielsson.
+
+Tue Sep 16 14:13:15 1997  Paul D. Smith  <psmith@baynetworks.com>
+
+       * automake.in: Create new option --generate-deps.  This option has
+       automake generate a .dep_segment file containing just the
+       dependencies created from the .P list.  This is needed to maintain
+       other makefiles that automake doesn't deal with (Makefile.DOS,
+       SMakefile, etc.)
+       * automake.texi (Invoking Automake): Document it.
+
+Thu Feb 12 19:45:16 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (scan_configure): Tightened regexp a bit.  Test
+       whoami.test.  From Johan Danielsson.
+
+       Report from H.J. Lu.
+       * automake.in (output_yacc_build_rule): Don't write rule to create
+       `.h' file.
+       (handle_yacc_lex_cxx): Generate rule to build each .h file.
+
+       * automake.in (handle_options): Set readme-alpha and check-news
+       for Gnits after main processing.  Test alpha.test.  From Jim
+       Meyering.
+
+       * aclocal.in (usage): Updated bug-reporting address.
+       * automake.in (usage): Updated bug-reporting address.
+
+       * compile.am: Remove *.core for 4.4BSD systems.  From Assar
+       Westerlund.
+
+       * automake.in (handle_single_transform_list): Don't set
+       seen_any_source if all sources are C++.
+
+Wed Feb 11 17:30:01 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (write_aclocal): Write to $output_file, not
+       aclocal.m4.  From Alexandre Oliva.
+
+Thu Feb  5 13:38:55 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_one_configure_file): Put CXCPP before CXX in
+       regexp.  From Garth Corral.  Test cxxxcpp.test.
+
+Sun Jan 25 11:16:53 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (generate_makefile): Run handle_minor_options before
+       handle_dist, to make sure README-alpha ends up in distribution.
+       From Jim Meyering.
+
+Tue Jan 13 09:19:33 1998  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (add_file): Hack for Perl 4.  From Seth Alves.
+
+Thu Dec 11 12:29:46 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * scripts.am: Don't add @EXEEXT@ to installed scripts.  Scripts
+       are not executables.
+
+Tue Dec  2 20:07:18 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (initialize_global_constants): Bug fix in
+       uninstall_man_format.  Report from Eric Backus.
+
+Mon Dec  1 13:52:39 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_source_transform): Correctly generate
+       _OBJECTS when _SOURCES is defined conditionally.  Reported by Rob
+       Savoye.  Test cond3.test.
+
+       Fixes for test objc.test:
+       * automake.in (initialize_per_input): New global seen_any_source.
+       (handle_yacc_lex_cxx): Use seen_any_source to decide when to
+       define LINK, et al.
+       (handle_single_transform_list): Set seen_any_source.
+       (handle_lib_objects_cond): Likewise.
+
+Wed Nov 26 13:41:57 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.2d.
+
+       * m4/ccstdc.m4: Don't force AM_PROG_CC_STDC before AC_PROG_CPP.
+       Temporary hack.
+
+       * m4/mktime.m4 (AM_FUNC_MTIME): New version from Paul Eggert.
+
+       * header-vars.am (NORMAL_INSTALL, PRE_INSTALL, POST_INSTALL,
+       NORMAL_UNINSTALL, PRE_UNINSTALL, POST_UNINSTALL): Define as `:',
+       not `true'.
+
+       * automake.in (output_yacc_build_rule): Don't overwrite .h file in
+       non-ylwrap case.
+
+       * tags.am (ID): Scan lisp files.
+       (TAGS): Make tags for lisp files.
+
+Tue Nov 25 14:20:42 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * ltlib.am: Use INSTALL_DATA, not INSTALL_PROGRAM.  From Gord
+       Matzigkeit.
+
+Fri Nov 21 15:15:50 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/mingw.m4, m4/cygwin.m4: Argument to AC_TRY_COMPILE is
+       function body, not entire function.  From Ian Taylor.
+
+Sat Oct 25 12:39:19 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_one_configure_file): Skip empty string for
+       Perl 4.  From Assar Westerlund.
+
+       * config.guess, config.sub, texinfo.tex: New versions from FSF.
+
+Fri Oct 24 23:15:09 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (output_yacc_build_rule): Use YFLAGS again.
+       (handle_yacc_lex_cxx): Error if YACCFLAGS used.
+
+Wed Aug 27 19:26:45 1997  Rob Savoye  <rob@chinadoll.cygnus.com>
+
+       * compile.am: Add suffix rules for ".s.o" and ".S.o" so assembler
+       files can be used.
+       * libtool.am: Add suffix rules for ".s.lo" and ".S.lo" so assembler
+       files can be used.
+       * automake.in: Add .S and .s to the standard list of suffixes so
+       assembler files can be used.
+
+Fri Oct 24 13:39:01 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/exeext.m4: Require AM_MINGW32.  Check MINGW32 setting.
+
+Thu Oct 23 21:16:28 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/init.m4 (missing_dir): AC_REQUIRE AM_SANITY_CHECK,
+       AC_ARG_PROGRAM, and AC_PROG_MAKE_SET.
+
+Tue Oct 21 16:49:36 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_options): Recognize `cygnus'.
+
+Tue Sep  9 17:09:47 1997  Rob Savoye  <rob@chinadoll.cygnus.com>
+
+       * m4/mingw.m4: New file for mingw32 support.
+       * m4/exeext.m4: Also check for the mingw32 environment.
+
+Tue Oct 21 00:39:44 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/Makefile.am (m4data_DATA): Added mingw.m4.
+
+       * automake.in (handle_lib_objects_cond): Don't require @LEXLIB@.
+       (handle_programs): Likewise.
+
+       * subdirs.am (check-recursive installcheck-recursive
+       info-recursive dvi-recursive): Handle case when SUBDIRS is empty.
+       (maintainer-clean-recursive): Likewise.  From Assar Westerlund.
+
+       * aclocal.in (scan_m4_files): If macro recognized, &search will
+       return 1.
+       (scan_configure): If AM_ macro not found, give error.
+
+       * m4/sanity.m4: If `ls' completely fails, die.  From Jim
+       Meyering.
+
+Mon Oct 20 16:13:48 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_single_transform_list): Fixlet for Fortran.
+       From Bernard Urban.
+
+       * libtool.am: Remove _libs, for libtool 1.0d.  From Gord
+       Matzigkeit.
+
+Sun Oct 19 22:59:35 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfos.am: Bug fix.  From John W. Coomes.
+
+Mon Sep 29 12:57:00 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.2c.
+
+       * automake.in (handle_dist_worker): In topmost directory of
+       project, use `distdir', not `top_distdir', as argument to
+       --output-dir; likewise when building in subdirs.
+
+Sun Sep 28 15:55:46 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/sanity.m4: Test $*, not $@.  From Akim Demaille.
+
+       * automake.in (handle_minor_options): New sub.
+       (check_gnits_standards): Don't handle README-alpha here.
+       (handle_dist_worker): Check NEWS file if `check-news' option
+       requested.
+       (generate_makefile): Run handle_minor_options.
+       (handle_options): Handle readme-alpha and check-news.  Set them if
+       --gnits.
+
+       * depend.am (MKDEP): Use $(CC), not gcc.
+
+Wed Sep 24 23:48:26 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Release 1.2b.
+
+       * m4/ccstdc.m4 (AM_PROG_CC_STDC): Make sure this is run before
+       AC_PROG_CPP.  From Markus Oberhumer.
+
+Fri Sep 12 00:04:19 1997  Paul Eggert  <eggert@twinsun.com>
+
+       * m4/ccstdc.m4 (AM_PROG_CC_STDC): Don't look at __STDC__;
+       look only at whether function prototypes are supported.
+
+Wed Sep 24 16:10:37 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Various: Put "-" before each `rm' line.  This avoids a bug in
+       some losing makes (Ultrix, 4.3 BSD).
+
+       * automake.in (handle_dist_worker): Correctly handle subdirs that
+       have their own configure.in.  From Peter Mattis.
+
+       * automake.in (handle_yacc_lex_cxx): Handle de-ansi-fied sources
+       in srcdir as well as build dir.
+
+       * automake.in (scan_one_configure_file): Detect AC_OUTPUT().
+       (handle_single_transform_list): Don't apply length() to a list.
+
+       * automake.in (handle_programs): Define _DEPENDENCIES variable if
+       not defined by user.
+
+Thu Sep 18 19:43:38 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/sanity.m4: Quote "$@" for m4.  From Gord Matzigkeit.
+
+Mon Sep  1 23:50:38 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_texinfo): Set need_texi_file only when
+       TEXINFO_TEX not defined.
+
+Thu Aug 28 09:37:29 1997  Tom Tromey  <tromey@cygnus.com>
+
+       From Juergen Erhard:
+       * automake.in (SUFFIX_RULE_PATTERN): New global.
+       (handle_single_transform_list): If suffix matches a source suffix,
+       rewrite.
+       (read_am_file): Add suffix rules to %suffix_rules.
+       (initialize_per_input): Initialize %suffix_rules.
+
+Wed Aug 27 12:56:50 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_texinfo): Also remove .kys and .ps files.
+
+       * automake.in (handle_yacc_lex_cxx): Quoting fixlet.  From Kaveh
+       Ghazi.
+
+       * aclocal.in (write_aclocal): Print copyright and copying
+       permissions.  From RMS.
+       * automake.in (initialize_global_constants): More copyright stuff
+       from RMS.
+
+       * automake.in (handle_texinfo): Only require texinfo.tex in
+       appropriate situations.  Report from Paul D. Smith.
+
+Mon Aug 25 15:45:52 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_dependency_file): Fix so that
+       OMIT_DEPENDENCIES will work.  From Alexander Lukyanov.
+
+       * automake.in (handle_texinfo): texi2dvi can generate `.cn'
+       files.  From Akim Demaille.
+
+Wed Aug  6 10:51:37 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_texinfo): Reversed sense of test.
+
+Tue Aug  5 17:49:54 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dependencies): Always mark OMIT_DEPENDENCIES
+       as seen.
+
+       * automake.in (handle_yacc_lex_cxx): Make each _.c file depend on
+       ansi2knr.
+
+       * automake.in (handle_yacc_lex_cxx): Fix for makes which don't
+       allow $< in non-suffix rules.  From Akim Demaille.
+
+       * automake.in (value_to_list): If variable name contains configure
+       substitution, then just ignore it.
+
+       * automake.in (variable_defined): Mark variable is seen, even if
+       only conditionally seen.
+
+       * Makefile.am: Check for bad splits.
+       * automake.in (various): Use split(' ',...), not split(/ /,...).
+
+Tue Aug  5 14:08:51 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ylwrap: If the program is a relative path, force it to be
+       absolute.
+
+Tue Aug  5 16:59:41 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * missing: Examine A[CM]_CONFIG_HEADER for name of files to
+       touch.  From Markus F.X.J. Oberhumer.
+
+       * automake.in (require_file_internal): Better error message when
+       installing.
+
+       * automake.in (handle_texinfo): Smarter test when deleting output
+       of makeinfo.
+
+Sat Aug  2 13:32:45 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (do_check_merge_target): In --cygnus mode, check
+       doesn't depend on all.
+
+       * automake.in (output_yacc_build_rule): Use YACCFLAGS, not
+       YFLAGS.  Per GNU Standards.
+
+       * dejagnu.am (RUNTESTDEFAULTFLAGS): New macro.
+       (check-DEJAGNU): Use it.
+
+       * subdirs.am (maintainer-clean-recursive): Actually reverse subdir
+       list.  From Alexander Lukyanov.
+
+       * automake.in (initialize_global_constants): Changed generated
+       copyright.  From RMS.
+
+       * automake.in (handle_configure): Pass correct value for
+       CONFIG_FILES.  From Ian Taylor.
+
+Thu Jul 31 17:36:10 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ylwrap (pairlist): Shift out trailing "--"; don't pass it to
+       $prog.
+
+Thu Jul 24 00:52:02 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (initialize_global_constants): Changed index names
+       in dist hash so that alternate dist targets will be generated.
+       Report from Glenn Amerine.
+
+       Suggestion from Karl Berry:
+       * automake.in (usage): Added short info line.
+
+       * aclocal.in (usage): Updated bug-reporting address.  Added short
+       info line.
+
+       * automake.in (handle_emacs_lisp): Put contents of lisp-clean.am
+       into output.  Report from Karl Berry.
+
+Mon Aug 25 16:14:32 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Only generate ":" syntax for
+       CONFIG_FILES when really needed.
+
+Wed Aug  6 14:47:12 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * remake-hdr.am (@CONFIG_HEADER@): Use a dummy command to force
+       GNU make to recheck the file modification time.
+
+Tue Aug  5 14:44:10 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ylwrap: If the program is a relative path, force it to be
+       absolute.
+
+Mon Aug  4 14:52:08 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in ($RULE_PATTERN): Accept $ in body of rule name.
+       (handle_programs): Don't append $(EXEEXT) if the
+       program name contains '.'.
+       (am_install_var): When rewriting _PROGRAMS, don't append $(EXEEXT)
+       if the program names contains '.'.  Also, handle conditionals.
+
+Sat Aug  2 14:43:41 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/exeext.m4: Fixed quoting.
+
+       * m4/exeext.m4 (am_cv_exeext): Use echo, not ls.
+
+       * automake.in (handle_programs): Transform @EXEEXT@ when including
+       program.am.
+
+Fri Aug  1 17:09:09 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_programs): Don't transform CYGWIN or
+       NOTCYGWIN.
+       (am_install_var): Likewise.
+
+       * progs-clean.am (clean-@DIR@PROGRAMS): Never include EXEEXT.
+
+       * progs.am: Removed @EXEEXT@; it is now implicit.
+       * program.am: Add @EXEEXT@ in appropriate places; removed
+       cygwin-dependent code.
+       * automake.in (seen_exeext): Renamed from seen_cygwin32.
+       (handle_programs): Use seen_exeext.
+       (scan_one_configure_file): Look for AM_EXEEXT, not AM_CYGWIN32.
+       (check_cygnus): Use seen_exeext.
+       (am_install_var): Likewise.
+       (am_install_var): When handling PROGRAMS primary, append EXELIST
+       to program names as necessary.
+       * m4/exeext.m4: Require AM_CYGWIN32.
+
+Thu Jul 31 17:36:10 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ylwrap (pairlist): Shift out trailing "--"; don't pass it to
+       $prog.
+
+       * texinfos.am: Add -I $(srcdir) when invoking $(MAKEINFO) for
+       CYGNUS .texinfo.info case and .texinfo case.
+
+       * automake.in (handle_configure): Correct handling of inputs for
+       for AC_OUTPUT files when invoking config.status.
+
+Mon Jul 28 15:29:25 1997  Rob Savoye  <rob@chinadoll.cygnus.com>
+
+       * m4/cygwin.m4: Set a variable CYGWIN32, rather than EXEEXT.
+       * m4/exeext.m4: New autoconf test for an executable suffix.
+       * m4/Makefile.in: Install the new exeext.m4 test.
+
+Sun Jun 22 14:01:59 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Released version 1.2.
+
+       * automake.in (handle_texinfo): Look for texinfo.tex in aux dir.
+
+       * automake.in (require_file_internal): Only print "installing"
+       when actually installing.  From Gord Matzigkeit.
+
+       * automake.in (handle_tests): Exit status `77' means `ignore
+       test'.  From François Pinard.
+       (handle_tests) Also, make banner same size as text.
+
+       * automake.in (handle_configure): Don't handle PRE_BUILT_SOURCES.
+       (handle_built_sources): Likewise; don't have `all' depend on
+       BUILT_SOURCES.
+
+       * depend.am (DEPS_MAGIC): New variable.
+       (.deps/.P): Depend on BUILT_SOURCES again.
+
+       * texinfos.am: Use ||, not ;.
+
+Tue Jun 10 11:04:16 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/cygwin.m4: Examine output of compiler to see if .exe needed.
+
+Sun Jun  1 13:16:05 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_built_sources): Handle PRE_BUILT_SOURCES.
+       (handle_configure): Likewise.
+
+       * depend2.am (.deps/%.P): Don't generate file if MKDEP fails.
+       From Alexandre Oliva.
+
+       * depend.am (.deps/.P): Depend on PRE_BUILT_SOURCES, not
+       BUILT_SOURCES.
+
+       * automake.in (initialize_global_constants): Added 1997 to
+       copyright info.
+
+       * automake.in (output_yacc_build_rule): Never move y.tab.c over
+       the .h file.  From Jim Meyering.
+
+Thu May 29 23:16:02 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_one_configure_file): Avoid defining ACLOCAL,
+       AUTOCONF, AUTOMAKE, AUTOHEADER.  From David Zaroski.
+
+Sat Feb 22 16:05:24 1997  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * Makefile.am (pkgdata_DATA): Under this new scheme, we no longer
+       need compile-kr.am.  Delete it.
+
+       * automake.in (handle_yacc_lex_cxx, get_object_extension): Use
+       _.c, _.o, _.lo instead of ._c, ._o, .l_o for de-ansification.
+
+       * ansi2knr.c (main): Parse our arguments a little differently so
+       that we don't create null output files when we can't read the
+       input file.
+
+Wed May 28 23:40:33 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * depend.am (.deps/.P): Depend on $(BUILT_SOURCES) again.  From
+       Gord Matzigkeit.
+
+Mon May 26 22:50:49 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * remake-hdr.am ($(srcdir)/@STAMP@.in): Make echo silent.  Report
+       from Alexandre Oliva.
+
+       * automake.in (generate_makefile): If --no-force, check
+       Makefile.in against configure.in and aclocal.m4.  Report from
+       Alexandre Oliva.
+
+       * automake.in (handle_dist_worker): Put --include-deps on command
+       line if specified originally.
+       (handle_configure): Likewise.
+
+       * configure.in: Error if Perl 5.001 is used.
+
+       * ylwrap: Don't quote $prog when executing it.  From Jim
+       Meyering.
+
+Thu May 15 12:05:20 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_merge_targets): Set INSTALL_SCRIPT in
+       install-strip target.
+
+Tue May 13 08:20:02 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dependencies): Don't generate dependencies
+       if DEP_FILES would be empty.
+
+Sun May 11 13:59:14 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * config.guess: New version from FSF.
+
+       * automake.in (get_object_extension): If ansi2knr in another
+       directory, always define ANSI2KNR to full path.  From Akim
+       Demaille.
+
+       * kr-extra.am (clean-krextra): Remove ansi2knr here, not in
+       distclean-krextra.
+
+       * missing: Regularized grammar.  From François Pinard.
+
+Sat May 10 16:48:47 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.1p.
+
+       * m4/init.m4: Error if source directory already configured.
+
+       * automake.in (scan_dependency_file): Always use srcdir name as
+       passed in on command line.
+
+Thu May  1 12:53:46 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in (value_to_list): Don't fail when a variable
+       substitution is not a complete word.
+
+Tue May  6 15:22:41 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * subdirs.am: Fix check for make -k to use $(MAKEFLAGS) and to not
+       get fooled by command line arguments.
+
+Sat May 10 15:48:46 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/ccstdc.m4: Print "none needed" if compiler accepts ANSI C by
+       default.
+
+Mon May  5 23:24:09 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * mkinstalldirs, config.guess, config.sub, COPYING, texinfo.tex:
+       New versions from FSF.
+
+Sun May  4 15:21:22 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfos.am (install-info): Avoid the Debian install-info.
+       (uninstall-info): Likewise.
+
+       * automake.in (handle_single_transform_list): Strip any directory
+       name before processing name.
+
+Thu May  1 19:24:08 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * depend2.am (.deps/%.P): Don't put $(srcdir)/ into dependency.
+
+Wed Apr 30 19:15:47 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist_worker): Change how top_distdir is
+       computed.  Based on patch from Ian Taylor.
+       (handle_dist): Define top_distdir.
+
+       * automake.in (handle_yacc_lex_cxx): Include CXXFLAGS in CXXLINK.
+       (handle_yacc_lex_cxx): Include CFLAGS in LINK.
+
+Wed Apr 30 14:46:37 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in (handle_dist_worker): When building a distribution,
+       if SUBDIRS is defined conditionaly, recur into each possible
+       subdirectory.
+
+       * clean.am (distclean-generic): Remove stamp-h[0-9]*.
+
+Tue Apr 29 19:11:45 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * INSTALL, mkinstalldirs, install-sh: Update from François
+       Pinard.
+
+       * aclocal.in (add_macro): If AC_ macro was defined, then mark it
+       as seen.  Report from Janos Farkas.
+
+       * subdirs.am: Clean targets now run in reverse order.  From Kevin
+       Dalley.
+
+       * automake.in (handle_texinfo): Put `aminfo', not `info' on
+       @clean.
+
+       * mdate-sh: New version from Ulrich Drepper.
+
+Mon Apr 28 01:18:05 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Makefile only depends on
+       BUILT_SOURCES when generating dependencies.
+
+       * Released 1.1o.
+
+Sun Apr 27 23:58:20 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist): Use variable_value, not
+       variable_contents.
+
+Wed Apr 23 14:04:28 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in (IF_PATTERN): Define.
+       (ELSE_PATTERN, ENDIF_PATTERN): Define.
+       (AM_CONDITIONAL_PATTERN): Define.
+       (%configure_cond): New global hash table.
+       (handle_source_transform): If xx_SOURCES is defined conditionally,
+       define xx_OBJECTS using the same conditions.
+       (handle_lib_objects): If variable is defined conditionally, define
+       xx_DEPENDENCIES conditionally.  Most code moved into subroutine.
+       (handle_lib_objects_cond): New function, broken out of
+       handle_lib_objects.
+       (scan_one_configure_file): Look for $AM_CONDITIONAL_PATTERN.
+       (conditional_true_when): New function.
+       (variable_defined): Add new parameter: cond.  Change some
+       callers.
+       (variable_conditions): New function.
+       (variable_conditionally_defined): New function.
+       (variable_value): New function.  Change most uses of $contents to
+       call variable_value instead.
+       (value_to_list): New function, from variable_value_as_list.
+       (variable_value_as_list): Add new parameter: cond.  Change all
+       callers.  Move some code into subroutine value_to_list.
+       (define_pretty_variable): Add new parameter: cond.  Change call
+       callers.
+       (read_am_file): Handle conditionals.
+       (initialize_per_input): Initialize %conditional and
+       @conditional_stack.
+       * m4/cond.m4: New file.
+       * m4/Makefile.am (m4data_DATA): Add cond.m4.
+
+Sun Apr 27 11:03:36 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist_worker): Run automake once per
+       directory, instead of once at the top.
+       (handle_dist_worker): Changed interface.
+       (handle_dist): Likewise.
+       (generate_makefile): Better error message if can't write the
+       file.
+       (handle_dist_worker): Pass top_distdir to subdir makes.
+
+       * automake.in (handle_dist_worker): Use mode 777 on directories in
+       distribution.  GNU Standards compliance.
+
+       * automake.in (handle_yacc_lex_cxx): Don't use interlock.
+       (output_yacc_build_rule): Don't use interlock; just use new ylwrap
+       instead.  The new ylwrap builds in a subdir; idea from Mark
+       Eichin.
+       (output_lex_build_rule): Likewise.
+       (initialize_global_constants): [common_files] Don't include
+       interlock.
+
+       * Makefile.am (pkgdata_SCRIPTS): Removed interlock.
+       * interlock: Removed.
+       * ylwrap: Changed interface.  Now runs command in subdir.
+
+       * remake.am (config.status): Look in srcdir for config header.
+       ($(srcdir)/configure): Likewise.
+       * remake-hdr.am (@STAMP@): Look in srcdir for config header.  From
+       Phil Nelson.
+       ($(srcdir)/@CONFIG_HEADER_IN@): Likewise.
+
+       * automake.in (handle_aclocal_m4): Make target $(ACLOCAL_M4), not
+       value spelled out.  From Phil Nelson
+
+       * automake.in (handle_configure): Don't skip Makefiles; instead
+       skip automake inputs.
+       (handle_merge_targets): Changed interface; put $makefile at
+       beginning of @all (rather than Makefile at end).
+
+       * automake.in (handle_yacc_lex_cxx): Correctly compute
+       de_ansi_sources.
+
+       * clean-kr.am (distclean-kr): Do nothing; ansi2knr is removed in
+       kr-extra.am.
+
+       * Makefile.am: Check to make sure there are no accidental
+       configure substitutions.
+
+       * automake.in (handle_texinfo): Don't allow configure substitution
+       on @MAKEINFO@ here.
+
+       * automake.in (handle_yacc_lex_cxx): ._c and ._o files both depend
+       on $(ANSI2KNR).
+
+       * kr-extra.am (ansi2knr): Removed.
+       (ansi2knr.o): Likewise.
+
+       * automake.in (get_object_extension): Allow ansi2knr to be built
+       from any directory.
+
+Fri Apr 25 12:33:23 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * missing: Changed bison text.  From Ian Taylor.
+
+       * m4/missing.m4: Redirect stdin of testee.  From Bill Fenner.
+
+       * automake.in (output_yacc_build_rule): Generate rule to create .h
+       file.
+       (handle_footer): Generate unique, sorted list of suffixes.
+
+       * automake.in (scan_one_configure_file): Recognize AC_PROG_AWK,
+       _CPP, _CXCPP, _LN_S.  From Ralph Schleicher.
+
+Mon Apr 21 12:35:57 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * automake.in (@config_fullnames): New array.
+       (@config_names): New array, replacing $config_name.
+       (@config_headers): New array, replacing $config_header.
+       (get_object_extension): Handle multiple header files.
+       (handle_tags, handle_merge_targets): Likewise.
+       (scan_one_configure_file): Likewise.
+       (handle_configure): Likewise.  Don't check for the configuration
+       header file in AC_OUTPUT; it won't be there.
+       * remake-hdr.am: Handle multiple header files.
+       * clean-hdr.am: New file, broken out of remake-hdr.am.
+       * m4/header.m4: Handle multiple header files.
+       * Makefile.am (pkgdata_DATA): Add clean-hdr.am.
+
+Wed Apr 16 00:05:47 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfos.am (.texi.info, .texi, .texinfo.info, .info): Remove
+
+       * automake.in (define_program_variable): Added `override' argument.
+       (handle_texinfo): Pass override arg when defining MAKEINFO.
+       (AC_MISSING_PROG): New constant.
+       (scan_one_configure_file): Use it.
+
+Tue Apr 15 12:12:28 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_texinfo): In --cygnus mode, reserve
+       clean-info for the user.
+
+       * automake.in (handle_subdirs): Typo fix.  From Akim Demaille.
+
+       * automake.in (handle_tags): Only use SUBDIRS if it is actually
+       defined.  Report from Ian Taylor.
+
+       * tags.am: Added prefix to SUBDIRS rules.
+
+Wed Apr  9 17:09:40 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_ltlibraries): Use correct rpath
+       substitution.  Bug from Jim Blandy.
+
+Mon Apr  7 17:40:18 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (AM_INIT_AUTOMAKE_PATTERN): Fixed for new 3rd arg.
+       Test version2.test.
+
+Thu Apr  3 19:07:59 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.1n.
+
+       * tags.am (TAGS): Run "cd && etags" in subshell for proper
+       associativity.
+
+       * texinfos.am (install-info-am): If --cygnus, then info file can
+       be in build dir.  From David Zaroski.
+
+       * ltlibrary.am (@LTLIBRARY@): use @RPATH@, not explicit -rpath.
+
+       * automake.in (handle_ltlibraries): Treat EXTRA_ libraries
+       specially.
+
+Wed Apr  2 00:03:50 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_source_transform): Don't generate dependency
+       on config.h.
+       (scan_dependency_file): Strip the .P file from the target.
+
+       * automake.in (handle_tags): Use single, not double, quotes when
+       setting list variable.
+
+       * data.am, header.am, libs.am, lisp.am, ltlib.am, progs-clean.am,
+       progs.am, scripts.am, tags.am: Use single quotes to fill list
+       variable; otherwise `$' in filename will not work.  From Per
+       Bothner.
+
+       * mdate-sh: Use "ls -d" so mdate-sh can be run on a directory.
+       From Bruno Haible.
+
+       * automake.in (handle_programs): Error if LIBADD used where LDADD
+       meant.
+       (handle_libraries): Error if LDADD used where LIBADD meant.
+       (handle_ltlibraries): Likewise.
+
+Tue Apr  1 22:46:33 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (check_canonical_spelling): New sub.
+       (handle_programs): Use it.
+       (handle_libraries): Likewise.
+       (handle_ltlibraries): Likewise.
+
+Mon Mar 31 12:13:08 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * depend2.am (.deps/%.P): Make .P file depend on everything the .c
+       file includes.
+
+Fri Mar 28 23:34:49 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_configure): Error if stamp-h appears in
+       AC_OUTPUT line.
+
+Thu Mar 27 17:28:47 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_dist_worker): Avoid automake rules in
+       generated Makefile when no-dependencies specified.  From Greg
+       Woods.
+
+       * m4/lispdir.m4: Don't AC_SUBST ELCFILES.  From Greg Woods.
+
+       * texi-vers.am (stamp-@VTI@): Make commands silent.
+
+       * Makefile.am (maintainer-check): "true" is ok now.
+
+       * m4/init.m4: Added optional 3rd argument, which avoids
+       AC_DEFINE.
+
+       * automake.in (scan_one_configure_file): Explicitly avoid
+       INSTALL_SCRIPT to avoid defining it twice.
+
+       * header-vars.am: Change _INSTALL variable definitions to `true'.
+       Updated all users to put `@' before invocation.
+
+Tue Mar 25 22:09:45 1997  Tom Tromey  <tromey@cygnus.com>
+
+       Update to follow GNU Standards:
+       * automake.in (handle_man_pages): Use NORMAL_UNINSTALL before
+       uninstall-man.
+       * texinfos.am (uninstall-info): Use two loops, and have
+       PRE_UNINSTALL before running install-info.
+       * data.am, header.am, libs.am, lisp.am, ltlib.am, progs.am,
+       scripts.am, texinfos.am: Use NORMAL_UNINSTALL.
+       * header-vars.am (PRE_UNINSTALL, POST_UNINSTALL,
+       NORMAL_UNINSTALL): Define.
+
+       * automake.in (scan_one_configure_file): Don't define ANSI2KNR as
+       a configure varriable.
+
+       * m4/missing.m4: Run test in a subshell.  From Gord Matzigkeit.
+
+Mon Mar 24 23:28:59 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * m4/sanity.m4: Sleep before creating temp file.
+
+       * header-vars.am (NORMAL_INSTALL, PRE_INSTALL, POST_INSTALL):
+       Define.
+
+Sat Mar 22 00:06:00 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (am_install_var): Make sure to delete
+       CYGWIN/NOTCYGWIN tokens as appropriate.
+       (handle_programs): Remove NOTCYGWIN tokens as well.
+       (file_contents_with_transform): A single newline makes an empty
+       line.
+
+       * program.am: Remove executable before linking.
+
+       * texinfos.am (.texi.dvi): Look in @TEXINFODIR@ for texinfo.tex.
+       (.texinfo.dvi): Likewise.
+
+       * automake.in (handle_texinfo): TEXINFO_TEX variable can set
+       location of texinfo.tex.
+
+Fri Mar 21 10:22:51 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfos.am (.texinfo.dvi): Mirror .texi.dvi.
+
+       * ansi2knr.c, ansi2knr.1: New versions from L. Peter Deutsch.
+
+       * scripts.am: Add @EXEEXT@ to installed scripts.
+
+Wed Jan 22 20:12:31 1997  Jim Meyering  <meyering@na-net.ornl.gov>
+
+       * m4/mktime.m4 (AM_FUNC_MKTIME): Run tests for each of a few values
+       for the TZ environment variable.  Andre Novaes Cunha provided the
+       hairy TZ setting that exercized the Solaris tzset bug.
+
+1997-01-22  Paul Eggert  <eggert@twinsun.com>
+
+       * m4/mktime.m4: (AM_FUNC_MKTIME): Fix bug in mktime test -- don't
+       test now, test a couple of thousand times.
+
+Thu Mar 20 00:16:54 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_programs): Remove CYGWIN lines unless
+       AM_CYGWIN32 seen.
+       (am_install_var): Remove CYGWIN lines from -clean file as well.
+
+       * progs.am: Put @EXEEXT@ where appropriate.
+
+       * program.am (@PROGRAM@): If using Cygwin32, then create actual
+       name in addition to ".exe" name.
+
+       * progs-clean.am (clean-@DIR@PROGRAMS): Conditionalize on CYGWIN.
+
+       * automake.in (check_cygnus): Require AM_CYGWIN32 in --cygnus mode.
+       (am_install_var): If AM_CYGWIN32 not seen, then remove @EXEEXT@
+       from .am files.
+
+       * automake.in (seen_cygwin32): New global.
+       (scan_one_configure_file): Check for AM_CYGWIN32.
+
+       * m4/cygwin.m4: New file.
+
+       * automake.in (scan_one_configure_file): Explicitly handle
+       AC_CONFIG_HEADER so we can avoid spurious warnings.
+       (obsolete_macros): Removed AC_CONFIG_HEADER.
+
+       * automake.in (handle_yacc_lex_cxx): Perl 4 fixes.  From Greg
+       A. Woods.
+
+Wed Mar 19 00:35:13 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Released 1.1m.
+
+       * m4/missing.m4: Print message saying what is happening.
+
+       * m4/sanity.m4: sleep before testing.
+
+Tue Mar 18 17:20:03 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * config.guess, config.sub: New from the FSF.
+
+       * automake.in (initialize_global_constants): [common_files]
+       Include `missing'.
+       (scan_configure): Require `missing'.
+
+       * header-vars.am (MAKEINFO): Don't define.
+
+       * m4/init.m4 (missing_dir): Use AM_MISSING_PROG.
+       * m4/missing.m4: New file.
+
+       `missing' changes from François Pinard:
+       * Everywhere: Use ACLOCAL_M4 to name aclocal.m4 file; ACLOCAL now
+       names aclocal program.
+       * m4/init.m4: Replace programs with `missing' if not found.
+       * automake.in (handle_texinfo): Define MAKEINFO as @MAKEINFO@.
+       (AC_CHECK_PATTERN): Check for alphanumeric names only.
+       (handle_aclocal_m4): Use ACLOCAL, not aclocal.
+       * Makefile.am (pkgdata_SCRIPTS): Include missing.
+       * missing: New file.
+
+       * automake.in (target_defined): New sub.
+       (handle_footer): Error if target .SUFFIXES used.
+
+Sun Mar 16 14:33:41 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_lib_objects): Set seen_c_source to line
+       number.
+       (handle_yacc_lex_cxx): Use seen_c_source as line number.
+       (am_line_error): Line of -1 means skip line-number check.
+
+       * automake.in (read_am_file): Change to keep perl -w quiet.
+       (check_typos): Removed extra check of EXTRA_ containing config
+       subs.
+
+Mon Mar 10 23:17:19 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * remake-hdr.am (stamp-h): Set CONFIG_HEADERS to
+       $(CONFIG_HEADER_FULL).
+       * automake.in (handle_configure): Define CONFIG_HEADER_FULL.
+
+       * automake.in (handle_lib_objects): Set seen_c_source as
+       appropriate.  From Alexander V. Lukyanov.  Test cxxlibobj.test.
+
+Sat Mar  8 22:54:35 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfo.tex: New version.
+
+       * automake.in (handle_emacs_lisp): If EMACS is `no', then we
+       couldn't find an Emacs.  So don't bother running elisp-comp.  From
+       Ulrich Drepper.
+
+       * automake.in (handle_texinfo): Added .tr and .cv to list of
+       texinfo clean extensions.  From Karl Berry.
+
+Fri Feb 28 22:14:53 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.am: Make sure we never use "undef".
+
+       * automake.in (usage): Changed bug-reporting address.
+       (handle_dist): Use undef, not delete.
+
+Wed Feb 26 08:41:11 1997  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
+
+       * automake.in (%obsolete_macros): Reintroduce, with hints for what
+       to do to upgrade the support.
+
+       * automake.in, ltlib-clean.am, ltlib.am, ltlibrary.am: Revamped
+       libtool support to use the _LTLIBRARIES primary.
+
+Wed Feb 26 00:20:39 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_tags): In default case, add @tags_deps to
+       dependencies of tags target.
+
+Tue Feb 25 23:46:29 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_tests): If a test failed, then make should
+       fail.  From Jim Meyering.
+
+Mon Feb 24 19:02:21 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texi-vers.am (@VTEXI@): Copy stamp file into output.
+
+Sun Feb 23 00:10:36 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (handle_programs): Give correct error line for lex
+       error.
+       (am_line_error): Avoid uninitialized value errors from perl -w.
+
+       * aclocal.in (scan_m4_files): Fixed perl -w warning.
+
+       * texinfos.am (.texi, .texinfo): New targets.
+
+       * automake.in (scan_texinfo_file): Renamed.
+       (handle_texinfo): Handle files without ".info" extension.
+
+       * automake.in (handle_subdirs): Error if directory contains "/".
+       (handle_yacc_lex_cxx): Quoting fix.
+       (handle_single_transform_list): Use transformed (non-ansi) version
+       of $obj instead of explicit ".o".  From Gord Matzigkeit.
+
+       * m4/sanity.m4: Pass -L to ls if possible.
+
+Sat Feb 22 15:22:31 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * dist-vars.am (DISTFILES): Don't distribute MANS.
+
+       * automake.in (handle_dist): Use define_variable to define TAR,
+       GZIP.
+       (handle_dist): Pass GZIP in environment to tar.
+       (initialize_global_constants): Likewise.
+
+       From Kaveh Ghazi:
+       * m4/protos.m4: Don't put any dependencies on AC_C_INLINE or
+       AC_C_CONST.
+       * m4/ccstdc.m4: Force AM_PROG_CC_STDC to come before AC_C_INLINE
+       or AC_C_CONST.
+
+Fri Feb 21 00:39:17 1997  Tom Tromey  <tromey@cygnus.com>
+
+       From The Crimson Binome:
+       * automake.in (handle_yacc_lex_cxx): Handle C++ yacc/lex source.
+       (output_yacc_build_rule): New sub for C++ yacc/lex.
+
+       * automake.in (my_glob): New sub.
+       (handle_dependencies): Use my_glob.
+       (handle_aclocal_m4): Scan ACLOCAL_AMFLAGS for dependencies.
+
+       * ltlibs.am, lisp.am, libs.am, header.am, data.am, progs.am,
+       scripts.am, texinfos.am: Add leading space to echo.
+
+       * automake.in (handle_texinfo): Added .tps and .vrs to list of TeX
+       endings.  From Jim Blandy.
+       (install_man_format): Make rule silent; instead print actual
+       command.
+
+Tue Feb  4 18:29:42 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * dist-vars.am (TAR): Removed.
+       * automake.in (TAR): New variable.
+       (handle_dist): Explicitly define TAR.
+       * configure.in: Compute TAR.
+
+       * automake.in (handle_lib_objects): Put @ALLOCA@ on @dep_list, not
+       @dep_files.
+       (AC_SUBST_PATTERN): Typo fix.
+       (handle_aclocal_m4): Use ACLOCAL_AMFLAGS.
+       (handle_clean): Put -recursive target before -am target.
+       (handle_merge_targets): Put basename of $config_name on @all.
+       Test confsub.test.  From Ramón García Fernández.
+
+Tue Jan 28 22:19:04 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (initialize_global_constants): Put libtoolize files
+       into @common_files, not @common_sometimes.  From Gord Matzigkeit.
+
+Sun Jan 26 17:46:08 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * texinfos.am (.texi.info): If --cygnus, set -I $(srcdir).  From
+       Per Bothner.
+
+Sun Jan 12 18:28:16 1997  Fred Fish  (fnf@ninemoons.com)
+
+       * automake.in: Use 'interlock' and 'ylwrap' from source
+       directory or aux config directory, not build directory.
+
+Tue Jan  7 18:35:10 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * aclocal.in (parse_arguments): Handle -I.
+       (usage): Ditto.
+       (scan_m4_files): Ditto.
+
+       * automake.in (handle_single_transform_list): Don't give error
+       message if extension unrecognized.
+
+Tue Dec 17 11:18:20 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * m4/header.m4 (AM_CONFIG_HEADER): Check for $CONFIG_HEADERS, not
+       $CONFIG_HEADER.
+
+Tue Jan  7 17:59:26 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (scan_one_configure_file): AM_INIT_GUILE_MODULE runs
+       AM_PROG_INSTALL, not AC_PROG_INSTALL.  From Jim Blandy.
+       (handle_texinfo): Handle no-texinfo.tex option.
+       (handle_options): Ditto.
+
+Thu Jan  2 14:16:17 1997  Tom Tromey  <tromey@cygnus.com>
+
+       * automake.in (am_install_var): Ignore EXTRA libtool libraries.
+       From Marius Vollmer.
+
+-----
+
+Copyright 1997-2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
diff --git a/old/TODO b/old/TODO
new file mode 100644 (file)
index 0000000..f8e4754
--- /dev/null
+++ b/old/TODO
@@ -0,0 +1,504 @@
+the new YFLAGS code doesn't correctly handle srcdir
+
+allow foo_NAME to rename an object (library or program)
+at build/install time
+
+remove _LTLIBRARIES and just use _LIBRARIES
+then use this for zip/jar as well
+
+add an error if the user makefile.am violates our
+   namespace rules
+
+we need a document describing automake from the end user's point of view
+eg describe INSTALL_HEADER there, among other things
+
+* maintainer-clean
+
+Akim:
+> @@ -31,5 +31,9 @@
+>  DISTCLEAN   -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+>
+>  maintainer-clean-generic:
+> +## FIXME: shouldn't we really print these messages before running
+> +## the dependencies?
+> +    @echo "This command is intended for maintainers to use"
+> +    @echo "it deletes files that may require special tools to rebuild."
+>        -rm -f Makefile.in
+
+Tom:
+> I'd like to eventually fix the FIXME comment by having
+> maintainer-clean look like:
+>
+>     maintainer-clean:
+>        @echo ...
+>        $(MAKE) whatever
+>
+> We're left with the question of whether we should repeat them in every
+> subdir.
+
+*
+Alexandre Oliva:
+> Hmm...  Interesting.  It must have been a side effect of the enabling
+> of forced `relink' on GNU/Linux/x86.  Anyway, on platforms that
+> actually require relinking, this problem remains, and I see no way to
+> overcome it other than arranging for automake to install libraries
+> before executables, as you suggest.  This shouldn't be a big problem,
+> anyway.
+>
+> A bigger problem could show up if two libraries in the same directory,
+> one dependent on the other, are installed concurrently.  If relinking
+> is needed for the dependent library, we have a problem.  It appears to
+> me that user will have to live without `make -j install', in this
+> case.
+
+Alex Hornby
+> Here's an Automake patch and changelog entry allow make -j install on
+> such degenerate systems (and Linux with buggy libtool <g>)
+>
+> If you install to locations other that bin_ and lib_ then a larger fix
+> is necessary, but this should fix the 90% case.
+
+* think about how per-object flags should work.  in particular:
+  * how should they be specified?
+    using the object name is confusing when .lo/.obj in use
+    however, the object name provides a nice interaction with
+    per-exe flags
+  * how should they interact with per-executable flags?
+  [ this is probably a feature in search of a problem ]
+
+* cross-compilation support:
+  programs built and used by the build process need to be
+  built for CC_FOR_BUILD
+  introduce a new prefxi for this, e.g. `build_PROGRAMS'
+  [ we can do this in an automatic way I think.
+    unfortunately it isn't that useful until autoconf has support
+    for this sort of thing as well ]
+
+* one performance enhancement would be to have autoconf write
+  a single file containing all the macro assignments.
+  then read this file via `include'
+  unfortunately this can't be done because of conditionals
+  -- but it could be made to work if we also changed:
+    * automake to rewrite @FOO@ to $(FOO), and
+    * the implementation of conditionals to rely on some new
+      config.status magic
+
+* support prog_LIBS as override for LIBS
+
+* Test subdir-objects option with yacc, lex, ansi2knr
+  Our locking scheme won't prevent a parallel make from losing
+  if there are two `bar.o' files and the timing is just right
+  This only happens with parallel make and no-`-c -o' compiler,
+  so it probably isn't very important
+  `-c -o' when doing libtool
+  try to find a losing compiler and see if it really works.
+  (actually: hack config.cache and do it)
+
+* per-exe flags
+** LIBOBJS shouldn't be used when there are per-exe flags (?)
+
+* Allow creation of Java .zip/.jar files in natural way
+  If you are building a compiled Java library, then the .zip/.jar
+  ought to be made automatically.
+
+* examine possibility of using any character in a macro name
+  and rewriting names automatically.  this means we must rewrite
+  all references as well.
+  [ this is a 2.0-style feature ]
+
+* `distcheck' and `dist' should depend on `all'
+
+* Add code to generate foo-config script like gnome, gtk
+
+* document user namespace for macro/target names
+  adopt some conventions and use uniformly
+    [ this is a good thing for the rewrite ]
+
+* distclean must remove config.status
+  can't this cause problems for maintainer-clean?
+  shouldn't maintainer-clean print the message before running
+  any part of the make?  (just to slow things down long enough
+  for the user to stop it)
+  (maybe doesn't matter since people who even know about
+  maintainer-clean already have a clue)
+
+* reintroduce AM_FUNC_FNMATCH which sets LIBOBJS
+  Then have automake know about fnmatch.h.
+    [ probably should wait for autoconf to get right functionality ]
+
+* "make diff" capability
+  look at gcc's Makefile.in to see what to do
+  or look at maint program
+
+* in --cygnus, clean-info not generated at top level
+
+* what if an element of a scanned variable looks like
+       $(FOO).$(BAR)  ?
+  or some other arbitrary thing?
+  right now we try to cope, but not very well
+    [ this is only of theoretical interest for now ]
+    [ We now have an 'inner_expand' option to traverse_recursively,
+      but it is not yet used. ]
+
+* make sure every variable that is used is also defined
+    [ we don't really look at variable uses in detail.
+      2.0 thing ]
+
+* make sure `missing' defines are generated
+
+* missing should handle install -d and rmdir -p (for uninstall)
+
+* NORMAL_INSTALL / NORMAL_UNINSTALL -vs- recursive rules
+  [ requires changes to the standard ]
+
+* should not put texiname_TEXINFOS into distribution
+  should rename this macro anyway, to foo_texi_DEPENDENCIES
+
+* For now I guess I'll just have automake give an error if it encounters
+non-C source in a libtool library specification.
+
+* if program has the same name as a target, do something sensible:
+  - if the target is internal, rename it
+  - if the target is mandated (eg, "info"), tell the user
+    consider auto-modifying the program name to work around this
+
+* should separate actual options from strictness levels
+  strictness should only cover requirements
+  You should be able to pick and choose options
+
+having just one Makefile for a project would give a big speed increase
+for a project with many directories, eg glibc.  ideally (?) you'd
+still be able to have a Makefile.am in each directory somehow; this
+might make editing conceptually easier.
+
+* finish up TAGS work
+
+* only remove libtool at top level?
+
+* clean up source directory by moving stuff into subdirs
+
+* consider adding other variables similar to pkglibexecdir?
+  requests for pkg-dirs with version included
+
+Avoid loops when installing; instead unroll them in automake
+[ Impossible when @AC_SUBST@ values are used. ]
+
+Some long-term projects:
+* if $(FOO) is used somewhere, ensure FOO is defined, either by
+  user or by automake if possible
+
+[ include, += support ]
+* even better would be allowing targets in different included
+  fragments to be merged.  e.g., `install-local'.
+
+consider putting all check-* targets onto @check?
+
+take diff-n-query code from libit
+
+Per Bothner says:
+Per> 1) Being able to build a set of non-source programs
+Per> from source programs, without necessarily linking them together.
+Per> I.e. one should be able to say something like:
+Per>   dummy_SOURCES=foo.c bar.c
+Per> and automake should realize that it needs to build foo.o and bar.o.
+Per> 2) Being intelligent about new kinds of suffixes.
+Per> If it sees:
+Per>   SUFFIXES = .class .java
+Per> and a suffix rule of the form:
+Per>   .java.class:
+Per> then it should be able to realize it can build .class files from
+Per> .java files, and thus be able to generate a list of
+Per> .class files from a list of .java source files.
+[What Per wanted here was a way to have automate automatically follow
+suffix rules.  So for instance if you had a `.x.y:' rule, and automake
+saw a `.x' file, it would automatically build and install the
+corresponding `.y' file.]
+
+Jim's idea: should look for @setfilename and warn if filenames too long
+* guess split size
+
+from joerg-martin schwarz:
+ -- If Makefile.am contains $(CC), $(COMPILE), $(YLWRAP), ....
+    in an explicitly written rule,  you should emit the corresponding
+    Makefile variables automatically.
+
+From the GNU Standards.  These things could be checked, and probably
+should be if --gnu.
+*    Make sure that the directory into which the distribution unpacks (as
+well as any subdirectories) are all world-writable (octal mode 777).
+*   Make sure that no file name in the distribution is more than 14
+characters long.
+*    Don't include any symbolic links in the distribution itself.
+     (ditto hard links)
+*    Make sure that all the files in the distribution are world-readable.
+
+should be able to determine what is built by looking at rules (and
+configure.in).  Then built man pages (eg) could automatically be
+omitted from the distribution.
+
+Right now, targets generated internally (eg "install") are not
+overridable by user code.  This should probably be possible, even
+though it isn't very important.  This could be done by generating all
+internal rules via a function call instead of just appending to
+$output_rules.
+ [ this will be harder to implement when scanning a rule like all-recursive
+   from subdirs.am ]
+
+Other priorities:
+* Must rewrite am_install_var.  Should break into multiple functions.
+  This will allow the callers to be a little smarter.
+* Rewrite clean targets.
+* Fix up require_file junk.
+
+djm wants ``LINKS'' variable; list of things to link together after
+install.  In BSD environment, use:
+       LINKS = from1 to1 from2 to2 ...
+
+Need way to say there are no suffixes in a Makefile (Franc,ois'
+"override" idea suffices here)
+
+Check to make sure various scripts are executable (IE when looking for
+them in a directory)
+
+Add support for html via an option.  Use texi2html.  Use
+"html_TEXINFOS", and htmldir = .../html.  Include html files in
+distribution.  Also allow "html_DATA", for raw .html files.
+  [ when will texinfo directly support html? ]
+See also Karl Berry's message on a roadmap for a "info -> html"
+transition:
+<http://lists.gnu.org/archive/html/texinfo-devel/2012-03/msg00018.html>
+
+uninstall and pkg-dirs should rm -rf the dir.
+
+In general most .am files should be merged into automake.  For
+instance all the "clean" targets could be merged by keeping lists of
+things to be removed.  This would be a lot nicer looking.  Note that
+the install targets probably should not be merged; it is sometimes
+useful to only install a small part.
+
+* Lex, yacc support:
+** It would be nice to automatically support using bison's better features
+  to rename the output files.  This requires autoconf support
+** Consider supporting syntax from autoconf "derived:source", eg:
+       y.tab.c:perly.y
+  for yacc and lex source
+** what if you use flex and the option to avoid -lfl?
+  should support this?
+
+* Multi-language support:
+** should have mapping of file extensions to languages
+** should automatically handle the linking issue (special-case C++)
+** must get compile rules for various languages; FORTRAN probably
+  most important unimplemented language
+This should be integrated in some way with Per's idea.
+Eg .f.o rules should be recognized & auto-handled in _SOURCES
+That way any random language can be treated with C/C++ on a first-class
+basis (maybe)
+
+It might be cool to generate .texi dependencies by grepping for
+@include.  (If done, it should be done the same way C dependencies are
+done)
+[ Ask Karl Berry for a -M option to makeinfo and texi2dvi? ]
+
+It would be good to check some parts of GNU standards.  Already check
+for install-sh and mkinstalldirs.  What else is required to be in
+package by GNU standards or by automake?
+Some things for --strictness=gnits:
+* "cd $(foo); something" is an error in a rule.  Should be:
+  "cd $(foo) && something"
+* Look for 'ln -s' and warn about using $(LN_S) and AC_PROG_LN_S
+* Look for $(LN_S) and require AC_PROG_LN_S
+
+Auto-distribute "ChangeLog.[0-9]+"?  "ChangeLog.[a-z]+"?
+
+Check all source files to make sure that FSF address is up-to-date.
+--gnits or --gnu only.
+
+Merge each -vars.am file with corresponding ".am" file.  Can do this
+because of changes to &file_contents.
+
+Should libexec programs have the name transform done on them?
+
+Order the output rules sensibly, so FOO_SOURCES and FOO_OBJECTS are
+together and rules are in the usual order.
+
+djm says:
+David> To avoid comments like the one about subdirs getting buried in
+David> the middle of a Makefile.in, how about pushing comments that
+David> start with ### to the top of the Makefile.in (in order)?  Sort
+David> of like how Autoconf uses diversions to force initialization
+David> code to the top of configure.
+
+================================================================
+
+Stuff for aclocal:
+
+probably should put each group of m4 files into a subdir owned by the
+containing application.
+
+================================================================
+
+Document:
+
+AM_MISSING_PROG
+
+how to use the generated makefiles
+ - standard targets
+ - required targets
+ - NORMAL_INSTALL junk
+
+rationale for avoiding
+       make CFLAGS="$CFLAGS" ...
+in subdirs make rule
+
+write example of using automake with dejagnu
+follow calc example in dejagnu docs
+
+document which variables are actually scanned and which are not.
+
+Document customary ordering of Makefile.am.  From François.
+
+Should include extended version of diagram from Autoconf (suggested by
+Greg Woods)
+
+Make a definition of the term "source"
+
+document how to use Automake with CVS.  Idea from Mark Galassi.  Also
+include Greg Woods' more sophisticated "cvs-dist" target.
+
+-- must document all variables that are supposed
+   to be public knowledge
+
+must document the targets required for integration with
+non-automake-using subdirs
+
+document the "make SHELL='/bin/sh -x'" trick for debugging
+
+section on relationship to GNU make.  include notes on parallel makes
+
+add a concept index
+
+move discussion of cygwin32, etags, mkid under other gnu tools
+
+CCLD, CXXLD, FLD
+
+================================================================
+
+Libraries:
+
+* Should support standalone library along with subdir library in same
+  Makefile.am.  Maybe: turn off "standalone" mode if library's Makefile.am
+  is not only one specd? [ add an option for this ]
+
+================================================================
+
+Longer term:
+
+Would it be useful to integrate in some way with the Debian package
+building utility?  Must check.  maybe it would be possible to deal
+with all the different package utilities somehow.  Lately I've been
+hearing good things about the RedHat packaging utilities.  Why are
+there so many of these?  Are they fun to write or something?
+The RedHat package utility is called RPM; see
+       ftp://ftp.redhat.com/pub/code/rpm
+It actually has problems, like no configure script and no documentation.
+
+For Cygnus it would probably be good to be able to handle the native
+package utility on each platform.  There are probably 3 or 4 of these
+(sysv, solaris?, aix?)
+
+tcl/unix/Makefile.in has some code to generate a Solaris package.
+
+Automake probably can't do all of this on its own.  A new tool might
+be a better idea
+
+I have some notes from a Debian developer on how the integration
+should work
+
+================================================================
+
+A tool to guess what the local Makefile.am should look like:
+(see Gord's Maint program!)
+
+* Probably integrate with autoscan
+* Use various simple rules to determine what to do:
+  * get name of top directory, sans version info
+  * search for .c files with 'main' in them
+    * if in main.c, use directory name for program
+    * if in more than one, generate multiple programs
+    * if not found, generate a library named after directory
+  * order subdir searches correctly: lib first, src last
+  * assume 'testsuite' dir means we are using dejagnu
+* maybe be smart about reading existing Makefile.am, so tool
+  can be run for incremental changes?  You could imagine:
+
+       Makefile.am:
+               autoproject --incremental
+
+================================================================
+
+Stuff NOT to do, and why:
+
+consider auto-including any file that matches "*.in".
+  [ no: po/Makefile.in shouldn't be included ]
+
+must look at mkid to see how it works (for subdir usage)
+  [ right now, it doesn't.  i don't see a simple fix right now ]
+
+if configure.in not found, move up a directory and try again?  This
+could eliminate a common source of problems.
+  [ this is just a bad idea ]
+
+* scripts are installed in $exec_prefix/bin, not $prefix/bin
+  Bug or feature?
+  [ the consensus on Gnits is that this isn't required.
+    doubters can work around it anyway ]
+
+Scan source directories and warn about missing files, eg .c/.h files
+that aren't mentioned?
+  [ distcheck makes this less useful ]
+
+* quoting bugs
+  - how to install file with a space in its name?
+  [ don't bother with this -- make is just too losing ]
+
+* notice when a .c file is a target somewhere, and auto-add it to
+    BUILT_SOURCES
+  [ BUILT_SOURCES are for files that need to be built before anything
+    else because of hidden dependencies (something .c files are
+    unlikely to be) ]
+
+* Scan multiple input files when Makefile is generated?
+  This would provide flexibility for large projects; subsumes
+  the "Makefile.tmpl" idea
+ [ can't do this.  must explain why in manual.
+   basically, solving all the problems is too hard
+   like: how to remove redundancies between generated .in files
+   instead should implement `include' directive for Makefile.am ]
+
+* Should be a way to have "nobuild_PROGRAMS" which aren't even built,
+  but which could be by running the magic make command.
+  [ We already have EXTRA_PROGRAMS for this. ]
+
+
+* copyright notice
+
+Copyright 1994-2012 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+Local Variables:
+mode: outline
+End:
diff --git a/syntax-checks.mk b/syntax-checks.mk
new file mode 100644 (file)
index 0000000..4b226a0
--- /dev/null
@@ -0,0 +1,539 @@
+# Maintainer checks for Automake.  Requires GNU make.
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# We also have to take into account VPATH builds (where some generated
+# tests might be in '$(builddir)' rather than in '$(srcdir)'), TAP-based
+# tests script (which have a '.tap' extension) and helper scripts used
+# by other test cases (which have a '.sh' extension).
+xtests := $(shell \
+  if test $(srcdir) = .; then \
+     dirs=.; \
+   else \
+     dirs='$(srcdir) .'; \
+   fi; \
+   for d in $$dirs; do \
+     for s in tap sh; do \
+       ls $$d/t/*.$$s $$d/t/ax/*.$$s 2>/dev/null; \
+     done; \
+   done | sort)
+
+xdefs = $(srcdir)/defs $(srcdir)/defs-static.in
+
+ams := $(shell find $(srcdir) -name '*.dir' -prune -o -name '*.am' -print)
+
+# Some simple checks, and then ordinary check.  These are only really
+# guaranteed to work on my machine.
+syntax_check_rules = \
+$(sc_tests_plain_check_rules) \
+sc_test_names \
+sc_diff_automake_in_automake \
+sc_diff_aclocal_in_automake \
+sc_perl_syntax \
+sc_no_brace_variable_expansions \
+sc_rm_minus_f \
+sc_no_for_variable_in_macro \
+sc_mkinstalldirs \
+sc_pre_normal_post_install_uninstall \
+sc_perl_no_undef \
+sc_perl_no_split_regex_space \
+sc_cd_in_backquotes \
+sc_cd_relative_dir \
+sc_perl_at_uscore_in_scalar_context \
+sc_perl_local \
+sc_AMDEP_TRUE_in_automake_in \
+sc_tests_make_without_am_makeflags \
+sc_tests_obsolete_variables \
+sc_tests_here_document_format \
+sc_tests_Exit_not_exit \
+sc_tests_automake_fails \
+sc_tests_required_after_defs \
+sc_tests_overriding_macros_on_cmdline \
+sc_tests_plain_sleep \
+sc_m4_am_plain_egrep_fgrep \
+sc_tests_no_configure_in \
+sc_tests_PATH_SEPARATOR \
+sc_tests_logs_duplicate_prefixes \
+sc_tests_makefile_variable_order \
+sc_perl_at_substs \
+sc_unquoted_DESTDIR \
+sc_tabs_in_texi \
+sc_at_in_texi
+
+## Look for test whose names can cause spurious failures when used as
+## first argument to AC_INIT (chiefly because they might contain an
+## m4/m4sugar builtin or macro name).
+m4_builtins = \
+  __gnu__ \
+  __unix__ \
+  bpatsubst \
+  bregexp \
+  builtin \
+  changecom \
+  changequote \
+  changeword \
+  debugfile \
+  debugmode \
+  decr \
+  define \
+  defn \
+  divert \
+  divnum \
+  dnl \
+  dumpdef \
+  errprint \
+  esyscmd \
+  eval \
+  format \
+  ifdef \
+  ifelse \
+  include \
+  incr \
+  index \
+  indir \
+  len \
+  m4exit \
+  m4wrap \
+  maketemp \
+  mkstemp \
+  patsubst \
+  popdef \
+  pushdef \
+  regexp \
+  shift \
+  sinclude \
+  substr \
+  symbols \
+  syscmd \
+  sysval \
+  traceoff \
+  traceon \
+  translit \
+  undefine \
+  undivert
+sc_test_names:
+       @m4_builtin_rx=`echo $(m4_builtins) | sed 's/ /|/g'`; \
+        m4_macro_rx="\\<($$m4_builtin_rx)\\>|\\<_?(A[CUMHS]|m4)_"; \
+        if { \
+          for t in $(xtests); do echo $$t; done \
+            | LC_ALL=C grep -E "$$m4_macro_rx"; \
+        }; then \
+          echo "the names of the tests above can be problematic" 1>&2; \
+          echo "Avoid test names that contain names of m4 macros" 1>&2; \
+          exit 1; \
+        fi
+
+## These check avoids accidental configure substitutions in the source.
+## There are exactly 9 lines that should be modified from automake.in to
+## automake, and 10 lines that should be modified from aclocal.in to
+## aclocal; these wors out to 32 and 34 lines of diffs, respectively.
+sc_diff_automake_in_automake:
+       @if test `diff $(srcdir)/automake.in automake | wc -l` -ne 32; then \
+         echo "found too many diffs between automake.in and automake" 1>&2; \
+         diff -c $(srcdir)/automake.in automake; \
+         exit 1; \
+       fi
+sc_diff_aclocal_in_aclocal:
+       @if test `diff $(srcdir)/aclocal.in aclocal | wc -l` -ne 34; then \
+         echo "found too many diffs between aclocal.in and aclocal" 1>&2; \
+         diff -c $(srcdir)/aclocal.in aclocal; \
+         exit 1; \
+       fi
+
+## Syntax check with default Perl (on my machine, Perl 5).
+sc_perl_syntax:
+       @perllibdir="./lib$(PATH_SEPARATOR)$(srcdir)/lib" $(PERL) -c -w automake
+       @perllibdir="./lib$(PATH_SEPARATOR)$(srcdir)/lib" $(PERL) -c -w aclocal
+
+## Expect no instances of '${...}'.  However, $${...} is ok, since that
+## is a shell construct, not a Makefile construct.
+sc_no_brace_variable_expansions:
+       @if grep -v '^ *#' $(ams) | grep -F '$${' | grep -F -v '$$$$'; then \
+         echo "Found too many uses of '\$${' in the lines above." 1>&2; \
+         exit 1;                               \
+       else :; fi
+
+## Make sure 'rm' is called with '-f'.
+sc_rm_minus_f:
+       @if grep -v '^#' $(ams) $(xtests) \
+          | grep -v '/spy-rm\.tap:' \
+          | grep -E '\<rm ([^-]|\-[^f ]*\>)'; \
+       then \
+         echo "Suspicious 'rm' invocation." 1>&2; \
+         exit 1;                               \
+       else :; fi
+
+## Never use something like "for file in $(FILES)", this doesn't work
+## if FILES is empty or if it contains shell meta characters (e.g. $ is
+## commonly used in Java filenames).
+sc_no_for_variable_in_macro:
+       @if grep 'for .* in \$$(' $(ams) | grep -v '/Makefile\.am:'; then \
+         echo 'Use "list=$$(mumble); for var in $$$$list".' 1>&2 ; \
+         exit 1; \
+       else :; fi
+
+## Make sure all invocations of mkinstalldirs are correct.
+sc_mkinstalldirs:
+       @if grep -n 'mkinstalldirs' $(ams) \
+             | grep -F -v '$$(mkinstalldirs)' \
+             | grep -v '^\./Makefile.am:[0-9][0-9]*:  *lib/mkinstalldirs \\$$'; \
+       then \
+         echo "Found incorrect use of mkinstalldirs in the lines above" 1>&2; \
+         exit 1; \
+       else :; fi
+
+## Make sure all calls to PRE/NORMAL/POST_INSTALL/UNINSTALL
+sc_pre_normal_post_install_uninstall:
+       @if grep -E -n '\((PRE|NORMAL|POST)_(|UN)INSTALL\)' $(ams) | \
+             grep -v ':##' | grep -v ':        @\$$('; then \
+         echo "Found incorrect use of PRE/NORMAL/POST_INSTALL/UNINSTALL in the lines above" 1>&2; \
+         exit 1; \
+       else :; fi
+
+## We never want to use "undef", only "delete", but for $/.
+sc_perl_no_undef:
+       @if grep -n -w 'undef ' $(srcdir)/automake.in | \
+             grep -F -v 'undef $$/'; then \
+         echo "Found undef in automake.in; use delete instead" 1>&2; \
+         exit 1; \
+       fi
+
+## We never want split (/ /,...), only split (' ', ...).
+sc_perl_no_split_regex_space:
+       @if grep -n 'split (/ /' $(srcdir)/automake.in; then \
+         echo "Found bad split in the lines above." 1>&2; \
+         exit 1; \
+       fi
+
+## Look for cd within backquotes
+sc_cd_in_backquotes:
+       @if grep -n '^[^#]*` *cd ' $(srcdir)/automake.in $(ams); then \
+         echo "Consider using \$$(am__cd) in the lines above." 1>&2; \
+         exit 1; \
+       fi
+
+## Look for cd to a relative directory (may be influenced by CDPATH).
+## Skip some known directories that are OK.
+sc_cd_relative_dir:
+       @if grep -n '^[^#]*cd ' $(srcdir)/automake.in $(ams) | \
+             grep -v 'echo.*cd ' | \
+             grep -v 'am__cd =' | \
+             grep -v '^[^#]*cd [./]' | \
+             grep -v '^[^#]*cd \$$(top_builddir)' | \
+             grep -v '^[^#]*cd "\$$\$$am__cwd' | \
+             grep -v '^[^#]*cd \$$(abs' | \
+             grep -v '^[^#]*cd "\$$(DESTDIR)'; then \
+         echo "Consider using \$$(am__cd) in the lines above." 1>&2; \
+         exit 1; \
+       fi
+
+## Using @_ in a scalar context is most probably a programming error.
+sc_perl_at_uscore_in_scalar_context:
+       @if grep -Hn '[^@_A-Za-z0-9][_A-Za-z0-9]*[^) ] *= *@_' $(srcdir)/automake.in; then \
+         echo "Using @_ in a scalar context in the lines above." 1>&2; \
+         exit 1; \
+       fi
+
+## Allow only few variables to be localized in Automake.
+sc_perl_local:
+       @if egrep -v '^[ \t]*local \$$[_~]( *=|;)' $(srcdir)/automake.in | \
+               grep '^[ \t]*local [^*]'; then \
+         echo "Please avoid 'local'." 1>&2; \
+         exit 1; \
+       fi
+
+## Don't let AMDEP_TRUE substitution appear in automake.in.
+sc_AMDEP_TRUE_in_automake_in:
+       @if grep '@AMDEP''_TRUE@' $(srcdir)/automake.in; then \
+         echo "Don't put AMDEP_TRUE substitution in automake.in" 1>&2; \
+         exit 1; \
+       fi
+
+## Recursive make invocations should always pass $(AM_MAKEFLAGS)
+## to $(MAKE), for portability to non-GNU make.
+sc_tests_make_without_am_makeflags:
+       @if grep '^[^#].*(MAKE) ' $(ams) $(srcdir)/automake.in \
+           | grep -v 'AM_MAKEFLAGS' \
+           | grep -v '/am/header-vars\.am:.*am--echo.*| $$(MAKE) -f *-'; \
+       then \
+         echo 'Use $$(MAKE) $$(AM_MAKEFLAGS).' 1>&2; \
+         exit 1; \
+       fi
+
+## Look out for some obsolete variables.
+sc_tests_obsolete_variables:
+       @vars=" \
+         using_tap \
+         test_prefer_config_shell \
+         original_AUTOMAKE \
+         original_ACLOCAL \
+         parallel_tests \
+         am_parallel_tests \
+       "; \
+       seen=""; \
+       for v in $$vars; do \
+         if grep -E "\b$$v\b" $(xtests) $(xdefs); then \
+           seen="$$seen $$v"; \
+         fi; \
+       done; \
+       if test -n "$$seen"; then \
+         for v in $$seen; do \
+           case $$v in \
+             parallel_tests|am_parallel_tests) v2=am_serial_tests;; \
+             *) v2=am_$$v;; \
+           esac; \
+           echo "Variable '$$v' is obsolete, use '$$v2' instead." 1>&2; \
+         done; \
+         exit 1; \
+       else :; fi
+
+## Tests should never call some programs directly, but only through the
+## corresponding variable (e.g., '$MAKE', not 'make').  This will allow
+## the programs to be overridden at configure time (for less brittleness)
+## or by the user at make time (to allow better testsuite coverage).
+sc_tests_plain_check_rules = \
+  sc_tests_plain_egrep \
+  sc_tests_plain_fgrep \
+  sc_tests_plain_make \
+  sc_tests_plain_perl \
+  sc_tests_plain_automake \
+  sc_tests_plain_aclocal \
+  sc_tests_plain_autoconf \
+  sc_tests_plain_autoupdate \
+  sc_tests_plain_autom4te \
+  sc_tests_plain_autoheader \
+  sc_tests_plain_autoreconf
+
+toupper = $(shell echo $(1) | LC_ALL=C tr '[a-z]' '[A-Z]')
+
+$(sc_tests_plain_check_rules): sc_tests_plain_% :
+       @# The leading ':' in the grep below is what is printed by the
+       @# preceding 'grep -v' after the file name.
+       @# It works here as a poor man's substitute for beginning-of-line
+       @# marker.
+       @if grep -v '^[         ]*#' $(xtests) \
+          | $(EGREP) '(:|\bif|\bnot|[;!{\|\(]|&&|\|\|)[        ]*?$*\b'; \
+        then \
+          echo 'Do not run "$*" in the above tests.' \
+               'Use "$$$(call toupper,$*)" instead.' 1>&2; \
+          exit 1; \
+       fi
+
+## Tests should only use END and EOF for here documents
+## (so that the next test is effective).
+sc_tests_here_document_format:
+       @if grep '<<' $(xtests) | grep -Ev '\b(END|EOF)\b|\bcout <<'; then \
+         echo 'Use here documents with "END" and "EOF" only, for greppability.' 1>&2; \
+         exit 1; \
+       fi
+
+## Tests should never call exit directly, but use Exit.
+## This is so that the exit status is transported correctly across the 0 trap.
+## Ignore comments and our testsuite's own self tests.
+sc_tests_Exit_not_exit:
+       @found=false; for file in $(xtests); do \
+         case $$file in */self-check-*) continue;; esac; \
+         res=`sed -n -e '/^#/d' -e '/<<.*END/,/^END/b' -e '/<<.*EOF/,/^EOF/b' \
+                     -e '/exit [$$0-9]/p' $$file`; \
+         if test -n "$$res"; then \
+           echo "$$file:$$res"; \
+           found=true; \
+         fi; \
+       done; \
+       if $$found; then \
+         echo 'Do not call plain "exit", use "Exit" instead, in above tests.' 1>&2; \
+         exit 1; \
+       fi
+
+## Use AUTOMAKE_fails when appropriate
+sc_tests_automake_fails:
+       @if grep -v '^#' $(xtests) | grep '\$$AUTOMAKE.*&&.*[eE]xit'; then \
+         echo 'Use AUTOMAKE_fails + grep to catch automake failures in the above tests.' 1>&2;  \
+         exit 1; \
+       fi
+
+## Setting 'required' after sourcing './defs' is a bug.
+sc_tests_required_after_defs:
+       @for file in $(xtests); do \
+         if out=`sed -n '/defs/,$${/required=/p;}' $$file`; test -n "$$out"; then \
+           echo 'Do not set "required" after sourcing "defs" in '"$$file: $$out" 1>&2; \
+           exit 1; \
+         fi; \
+       done
+
+## Overriding a Makefile macro on the command line is not portable when
+## recursive targets are used.  Better use an envvar.  SHELL is an
+## exception, POSIX says it can't come from the environment.  V, DESTDIR,
+## DISTCHECK_CONFIGURE_FLAGS and DISABLE_HARD_ERRORS are exceptions, too,
+## as package authors are urged not to initialize them anywhere.
+## Finally, 'exp' is used by some ad-hoc checks, where we ensure it's
+## ok to override it from the command line.
+sc_tests_overriding_macros_on_cmdline:
+       @if grep -E '\$$MAKE .*(SHELL=.*=|=.*SHELL=)' $(xtests); 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
+# The first s/// tries to account for usages like "$MAKE || st=$?".
+# 'DISTCHECK_CONFIGURE_FLAGS' and 'exp' are allowed to contain whitespace in
+# their definitions, hence the more complex last three substitutions below.
+# Also, the 'make-dryrun.sh' is whitelisted, since there we need to
+# override variables from the command line in order to cover the expected
+# code paths.
+       @tests=`for t in $(xtests); do \
+                 case $$t in */make-dryrun.sh);; *) echo $$t;; esac; \
+               done`; \
+       if sed -e 's/ || .*//' -e 's/ && .*//' \
+               -e 's/ DESTDIR=[^ ]*/ /' -e 's/ SHELL=[^ ]*/ /' \
+               -e 's/ V=[^ ]*/ /' -e 's/ DISABLE_HARD_ERRORS=[^ ]*/ /' \
+               -e "s/ DISTCHECK_CONFIGURE_FLAGS='[^']*'/ /" \
+               -e 's/ DISTCHECK_CONFIGURE_FLAGS="[^"]*"/ /' \
+               -e 's/ DISTCHECK_CONFIGURE_FLAGS=[^ ]/ /' \
+               -e "s/ exp='[^']*'/ /" \
+               -e 's/ exp="[^"]*"/ /' \
+               -e 's/ exp=[^ ]/ /' \
+             $$tests | 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; \
+       fi
+       @if grep 'SHELL=.*\$$MAKE' $(xtests); then \
+         echo '$$MAKE ignores the SHELL envvar, use "$$MAKE SHELL=$$SHELL" in' 1>&2; \
+         echo 'the above lines.' 1>&2; \
+         exit 1; \
+       fi
+
+## Never use 'sleep 1' to create files with different timestamps.
+## Use '$sleep' instead.  Some filesystems (e.g., Windows) have only
+## a 2sec resolution.
+sc_tests_plain_sleep:
+       @if grep -E '\bsleep +[12345]\b' $(xtests); then \
+         echo 'Do not use "sleep x" in the above tests.  Use "$$sleep" instead.' 1>&2; \
+         exit 1; \
+       fi
+
+## fgrep and egrep are not required by POSIX.
+sc_m4_am_plain_egrep_fgrep:
+       @if grep -E '\b[ef]grep\b' $(ams) $(srcdir)/m4/*.m4; then \
+         echo 'Do not use egrep or fgrep in the above files,' \
+              'they are not portable.' 1>&2; \
+         exit 1; \
+       fi
+
+## Prefer 'configure.ac' over the obsolescent 'configure.in' as the name
+## for configure input files in our testsuite.  The latter  has been
+## deprecated for several years (at least since autoconf 2.50).
+sc_tests_no_configure_in:
+       @if grep -E '\bconfigure\\*\.in\b' $(xtests) $(xdefs) \
+             | grep -Ev '/backcompat.*\.(sh|tap):' \
+             | grep -Ev '/autodist-configure-no-subdir\.sh:' \
+             | grep -Ev '/(configure|help)\.sh:' \
+             | grep .; \
+       then \
+         echo "Use 'configure.ac', not 'configure.in', as the name" >&2; \
+         echo "for configure input files in the test cases above." >&2; \
+         exit 1; \
+       fi
+
+## Rule to ensure that the testsuite has been run before.  We don't depend
+## on 'check' here, because that would be very wasteful in the common case.
+## We could run "make check RECHECK_LOGS=" and avoid toplevel races with
+## AM_RECURSIVE_TARGETS.  Suggest keeping test directories around for
+## greppability of the Makefile.in files.
+sc_ensure_testsuite_has_run:
+       @if test ! -f '$(TEST_SUITE_LOG)'; then \
+         echo 'Run "env keep_testdirs=yes make check" before' \
+              'running "make maintainer-check"' >&2; \
+         exit 1; \
+       fi
+.PHONY: sc_ensure_testsuite_has_run
+
+## Ensure our warning and error messages do not contain duplicate 'warning:' prefixes.
+## This test actually depends on the testsuite having been run before.
+sc_tests_logs_duplicate_prefixes: sc_ensure_testsuite_has_run
+       @if grep -E '(warning|error):.*(warning|error):' t/*.log; then \
+         echo 'Duplicate warning/error message prefixes seen in above tests.' >&2; \
+         exit 1; \
+       fi
+
+## Ensure variables are listed before rules in Makefile.in files we generate.
+sc_tests_makefile_variable_order: sc_ensure_testsuite_has_run
+       @st=0; \
+       for file in `find t -name Makefile.in -print`; do \
+         latevars=`sed -n \
+           -e :x -e 's/#.*//' \
+           -e '/\\\\$$/{' -e N -e 'b x' -e '}' \
+           -e '# Literal TAB.' \
+           -e '1,/^    /d' \
+           -e '# Allow @ so we match conditionals.' \
+           -e '/^ *[a-zA-Z_@]\{1,\} *=/p' $$file`; \
+         if test -n "$$latevars"; then \
+           echo "Variables are expanded too late in $$file:" >&2; \
+           echo "$$latevars" | sed 's/^/  /' >&2; \
+           st=1; \
+         fi; \
+       done; \
+       test $$st -eq 0 || { \
+         echo 'Ensure variables are expanded before rules' >&2; \
+         exit 1; \
+       }
+
+## Using ':' as a PATH separator is not portable.
+sc_tests_PATH_SEPARATOR:
+       @if grep -E '\bPATH=.*:.*' $(xtests) ; then \
+         echo "Use '\$$PATH_SEPARATOR', not ':', in PATH definitions" \
+              "above." 1>&2; \
+         exit 1; \
+       fi
+
+## Try to make sure all @...@ substitutions are covered by our
+## substitution rule.
+sc_perl_at_substs:
+       @if test `grep -E '^[^#]*@[A-Za-z_0-9]+@' aclocal | wc -l` -ne 0; then \
+         echo "Unresolved @...@ substitution in aclocal" 1>&2; \
+         exit 1; \
+       fi
+       @if test `grep -E '^[^#]*@[A-Za-z_0-9]+@' automake | wc -l` -ne 0; then \
+         echo "Unresolved @...@ substitution in automake" 1>&2; \
+         exit 1; \
+       fi
+
+sc_unquoted_DESTDIR:
+       @if grep -E "[^\'\"]\\\$$\(DESTDIR" $(ams); then \
+         echo 'Suspicious unquoted DESTDIR uses.' 1>&2 ; \
+         exit 1; \
+       fi
+
+sc_tabs_in_texi:
+       @if grep '      ' $(srcdir)/doc/automake.texi; then \
+         echo 'Do not use tabs in the manual.' 1>&2; \
+         exit 1; \
+       fi
+
+sc_at_in_texi:
+       @if grep -E '([^@]|^)@([         ][^@]|$$)' $(srcdir)/doc/automake.texi; \
+       then \
+         echo 'Unescaped @.' 1>&2; \
+         exit 1; \
+       fi
+
+$(syntax_check_rules): automake aclocal
+maintainer-check: $(syntax_check_rules)
+.PHONY: maintainer-check $(syntax_check_rules)
+
+## Check that the list of tests given in the Makefile is equal to the
+## list of all test scripts in the Automake testsuite.
+maintainer-check: maintainer-check-list-of-tests
diff --git a/t/CheckListOfTests.am b/t/CheckListOfTests.am
new file mode 100644 (file)
index 0000000..a3913f2
--- /dev/null
@@ -0,0 +1,68 @@
+## -*- Automake -*-
+##
+## Copyright (C) 2011-2012 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+##
+
+## Temporary files used in the 'check-list-of-tests' recipe.
+am__tmk = tests-in-makefile-list.tmp
+am__tfs = tests-on-filesystem-list.tmp
+am__tdf = diff-in-tests-lists.tmp
+
+## Check that the list of tests given in the Makefile is equal to the
+## list of all test scripts in the Automake testsuite.
+.PHONY: maintainer-check-list-of-tests
+maintainer-check-list-of-tests:
+## Prefer unified diffs over plain diffs, for readability.
+        @if diff -u /dev/null /dev/null >/dev/null 2>&1; then \
+          diff='diff -u'; \
+        else \
+          diff='diff'; \
+        fi; \
+## List of tests in Makefile.
+        lst='$(expected_list_of_tests)'; \
+        test -n "$$lst" || lst='$(TESTS)'; \
+        for t in $$lst; do \
+          echo "$$t"; \
+        done | sort >$(am__tmk); \
+## List of subdirs where to look for tests.
+        dirs='$(test_subdirs)'; \
+        test -n "$$dirs" || dirs=.; \
+## List of tests on filesystem.  Be careful to cater for VPATH builds too.
+        test_extensions='$(TEST_EXTENSIONS)'; \
+        for ext in $$test_extensions; do \
+          for dir in $$dirs; do \
+            ls $$dir/*$$ext 2>/dev/null; \
+            if test $(srcdir) != $(builddir); then \
+              ($(am__cd) $(srcdir) && ls $$dir/*$$ext 2>/dev/null); \
+            fi; \
+          done; \
+        done | sed 's,^\./,,' | sort | uniq >$(am__tfs); \
+## Compare the two lists, complain if they differ.
+        if $$diff $(am__tmk) $(am__tfs) >$(am__tdf); then \
+           result=0; \
+        else \
+           echo '$@: list of tests in Makefile an on filesystem differ' >&2; \
+           echo "+ $$diff in-makefile on-filesystem" >&2; \
+           cat $(am__tdf) >&2; \
+           result=1; \
+        fi; \
+        rm -f $(am__tmk) $(am__tfs) $(am__tdf); \
+        exit $$result;
+
+.PHONY: clean-maintcheck-testslist-tmp
+clean-local: clean-maintcheck-testslist-tmp
+clean-maintcheck-testslist-tmp:
+       rm -f $(am__tmk) $(am__tfs) $(am__tdf)
diff --git a/t/README b/t/README
new file mode 100644 (file)
index 0000000..5f967d2
--- /dev/null
+++ b/t/README
@@ -0,0 +1,294 @@
+                           The Automake test suite
+
+
+User interface
+==============
+
+
+Running the tests
+-----------------
+
+  To run all tests:
+
+    make -k check
+
+  By default, verbose output of a test 't/foo.sh' or 't/foo.tap' is retained
+  in the log file 't/foo.log'.  Also, a summary log is created in the file
+  'test-suite.log' (in the top-level directory).
+
+  You can use '-jN' for faster completion (it even helps on a uniprocessor
+  system, due to unavoidable sleep delays, as noted below):
+
+    make -k -j4
+
+  To rerun only failed tests:
+
+    make -k recheck
+
+  To run only tests that are newer than their last results:
+
+    make -k check RECHECK_LOGS=
+
+  To run only selected tests:
+
+    make -k check TESTS="t/foo.sh t/bar.tap"           (GNU make)
+    env TESTS="t/foo.sh t/bar.tap" make -e -k check    (non-GNU make)
+
+ To run the tests in cross-compilation mode, you should first configure
+ the automake source tree to a cross-compilation setup.  For example, to
+ run with a Linux-to-MinGW cross compiler, you will need something like
+ this:
+
+   ./configure --host i586-mingw32msvc --build i686-pc-linux-gnu
+
+ To avoid possible spurious error, you really have to *explicitly* specify
+ '--build' in addition to '--host'; the 'lib/config.guess' script can help
+ determine the correct value to pass to '--build'.
+ Then you can just run the testsuite in the usual way, and the test cases
+ using a compiler should automatically use a cross-compilation setup.
+
+
+Interpretation
+--------------
+
+  Successes:
+    PASS  - success
+    XFAIL - expected failure
+
+  Failures:
+    FAIL  - failure
+    XPASS - unexpected success
+
+  Other:
+    SKIP  - skipped tests (third party tools not available)
+    ERROR - some unexpected error condition
+
+
+About the tests
+---------------
+
+  There are two kinds of tests in the Automake testsuite (both implemented
+  as shell scripts).  The scripts with the '.sh' suffix are "simple"
+  tests, their outcome completely determined by their exit status.  Those
+  with the '.tap' suffix use the TAP protocol.  If you want to run a test
+  by hand, you can do so directly if it is a simple test:
+
+    ./t/nogzip.sh
+
+  (it will be verbose by default), while if it is a TAP test you can pass
+  it to your preferred TAP runner, as in e.g.:
+
+    prove --verbose --merge ./t/add-missing.tap
+
+  The tests can also be run directly in a VPATH build, as with:
+
+    /path/to/srcdir/t/nogzip.sh
+    prove --verbose --merge /path/to/srcdir/t/add-missing.tap
+
+
+Supported shells
+----------------
+
+  By default, the tests are run by the $SHELL detected at configure
+  time.  They also take care to re-execute themselves with that shell,
+  unless told not to.  So, to run the tests with a different shell, say
+  '/path/to/another/sh', the user must use:
+
+    AM_TESTS_REEXEC=no /path/to/another/sh ./t/foo.sh
+    AM_TESTS_REEXEC=no prove -v -e /path/to/another/sh ./t/bar.tap
+
+  to run a test directly, and:
+
+    make check LOG_COMPILER=/path/to/sh         (GNU make)
+    LOG_COMPILER=/path/to/sh make -e check      (non-GNU make)
+
+  to run the test(s) through the makefile test driver.
+
+  The test scripts are written with portability in mind, so that they
+  should run with any decent Bourne-compatible shell.
+
+  However, some care must be used with Zsh, since, when not directly
+  started in Bourne-compatibility mode, it has some incompatibilities
+  in the handling of $0 which conflict with our usage.  Our testsuite
+  can automatically work around these incompatibilities when a version
+  4.3 or later of Zsh is used, but unfortunately not when an older
+  version of Zsh is used.  Thus, if you want to run a test script, say
+  'foo.sh', with Zsh 4.2, you *can't* simply do "zsh foo.sh", but
+  you *must* resort to:
+
+    AM_TESTS_REEXEC=no zsh -o no_function_argzero foo.sh
+
+  Note that this problem does not occur if Zsh is executed through
+  a symlink with a basename of 'sh', since in that case Zsh starts
+  in Bourne compatibility mode.  So you should be perfectly safe
+  when /bin/sh is Zsh, even a it's version < 4.3.
+
+
+Reporting failures
+------------------
+
+  Send verbose output, i.e., the contents of test-suite.log, of failing
+  tests to <bug-automake@gnu.org>, along with the usual version numbers
+  (which Automake, which Autoconf, which operating system, which make
+  version, which shell, etc.)
+
+
+
+Writing test cases
+==================
+
+
+Do
+--
+
+  If you plan to fix a bug, write the test case first.  This way you'll
+  make sure the test catches the bug, and that it succeeds once you have
+  fixed the bug.
+
+  Add a copyright/license paragraph.
+
+  Explain what the test does.
+
+  Cite the PR number (if any), and the original reporter (if any), so
+  we can find or ask for information if needed.
+
+  If a test checks examples or idioms given in the documentation, make
+  sure the documentation reference them appropriately in comments, as in:
+    @c Keep in sync with autodist-config-headers.sh
+    @example
+    ...
+    @end example
+
+  Use "required=..." for required tools.  Do not explicitly require
+  tools which can be taken for granted because they're listed in the
+  GNU Coding Standards (for example, 'gzip').
+
+  Include ./defs in every test script (see existing tests for examples
+  of how to do this).
+
+  Use the 'skip_' function to skip tests, with a meaningful message if
+  possible.  Where convenient, use the 'warn_' function to print generic
+  warnings, the 'fail_' function for test failures, and the 'fatal_'
+  function for hard errors.  In case a hard error is due to a failed
+  set-up of a test scenario, you can use the 'framework_fail_' function
+  instead.
+
+  For those tests checking the Automake-provided test harnesses that are
+  expected to work also when the 'serial-tests' Automake option is used
+  (thus causing the serial testsuite harness to be used in the generated
+  Makefile), place a line containing "try-with-serial-tests" somewhere
+  in the file.  That will ensure that the 'gen-testsuite-part' script
+  generates a sibling of that test which uses the serial harness instead
+  of the parallel one.  For those tests that are *not* meant to work with
+  the parallel testsuite harness at all (these should be very very few),
+  set the shell variable 'am_serial_tests' to "yes" before including
+  ./defs.
+
+  Some tests in the Automake testsuite are auto-generated; those tests
+  might have custom extensions, but their basename (that is, with such
+  extension stripped) is expected to end with "-w" string, optionally
+  followed by decimal digits.  For example, the name of a valid
+  auto-generated test can be 'color-w.sh' or 'tap-signal-w09.tap'.
+  Please don't name hand-written tests in a way that could cause them
+  to be confused with auto-generated tests; for example, 'u-v-w.sh'
+  or 'option-w0.tap' are *not* valid name for hand-written tests.
+
+  ./defs brings in some commonly required files, and sets a skeleton
+  configure.ac.  If possible, append to this file.  In some cases
+  you'll have to overwrite it, but this should be the exception.  Note
+  that configure.ac registers Makefile.in but do not output anything by
+  default.  If you need ./configure to create Makefile, append AC_OUTPUT
+  to configure.ac.  In case you don't want ./defs to pre-populate your
+  test directory (which is a rare occurrence), set the 'am_create_testdir'
+  shell variable to "empty" before sourcing ./defs.
+
+  By default, the testcases are run with the errexit shell flag on,
+  to make it easier to catch failures you might not have thought of.
+  If  this is undesirable in some testcase, you can use "set +e" to
+  disable the errexit flag (but please do so only if you have a very
+  good reason).
+
+  End the test script with a ":" or "Exit 0".  Otherwise, when somebody
+  changes the test by adding a failing command after the last command,
+  the test will spuriously fail because $? is nonzero at the end.  Note
+  that this is relevant even if the errexit shell flag is on, in case
+  the test contains commands like "grep ... Makefile.in && Exit 1" (and
+  there are indeed a lot of such tests).
+
+  Use $ACLOCAL, $AUTOMAKE, $AUTOCONF, $AUTOUPDATE, $AUTOHEADER,
+  $PERL, $MAKE, $EGREP, and $FGREP, instead of the corresponding
+  commands.
+
+  Use $sleep when you have to make sure that some file is newer
+  than another.
+
+  Use cat or grep or similar commands 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.  Display stderr
+  output on the stderr file descriptor.  If some redirected command is
+  likely to fail, display its output even in the failure case, before
+  exiting.
+
+  Use 'Exit' rather than 'exit' to abort for leave early from a test
+  case.
+
+  Use '$PATH_SEPARATOR', not hard-coded ':', as the separator of
+  PATH's entries.
+
+  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 fail to work.  In other words, prefer running 'make' over
+  grepping Makefile.in (or do both).
+
+  If you run $ACLOCAL, $AUTOMAKE or $AUTOCONF several times in the
+  same test and change configure.ac by the meantime, do
+    rm -rf autom4te*.cache
+  before the following runs.  On fast machines the new configure.ac
+  could otherwise have the same timestamp as the old autom4te.cache.
+
+  Use filenames with two consecutive spaces when testing that some
+  code preserves filenames with spaces.  This will catch errors like
+  `echo $filename | ...`.
+
+  Make sure your test script can be used to faithfully check an
+  installed version of automake (as with "make installcheck").  For
+  example, if you need to copy or grep an automake-provided script,
+  do not assume that they can be found in the '$top_srcdir/lib'
+  directory, but use '$am_scriptdir' instead.  The complete list of
+  such "$am_...dir" variables can be found in the 'defs-static.in'
+  file.
+
+  When writing input for lex, include the following in the definitions
+  section:
+    %{
+    #define YY_NO_UNISTD_H 1
+    %}
+  to accommodate non-ANSI systems, since GNU flex generates code that
+  includes unistd.h otherwise.  Also add:
+    int isatty (int fd) { return 0; }
+  to the definitions section if the generated code is to be compiled
+  by a C++ compiler, for similar reasons (i.e., the isatty(3) function
+  from that same unistd.h header would be required otherwise).
+
+  Before commit: make sure the test is executable, add the tests to
+  TESTS in Makefile.am, add it to XFAIL_TESTS in addition if needed,
+  write a ChangeLog entry, send the diff to <automake-patches@gnu.org>.
+
+
+Do not
+------
+
+  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
+     grep 'expected diagnostic' stderr
+  (Note this doesn't prevent the test from failing for another reason,
+  but at least it makes sure the original error is still here).
+
+  Do not override Makefile variables using make arguments, as in e.g.:
+    $MAKE prefix=/opt install
+  This is not portable for recursive targets (targets that call a
+  sub-make may not pass "prefix=/opt" along).  Use the following
+  instead:
+    prefix=/opt $MAKE -e install
diff --git a/t/ac-output-old.tap b/t/ac-output-old.tap
new file mode 100755 (executable)
index 0000000..5ba3d3e
--- /dev/null
@@ -0,0 +1,182 @@
+#!/bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for various older bugs related to quoting, escaping and
+# line breaking in the use of AC_OUTPUT.  Synthesised by a bunch
+# of older tests (referenced below).
+
+. ./defs || Exit 1
+
+plan_ 22
+
+rm -f configure.ac depcomp # Not required.
+
+AUTOMAKE="$AUTOMAKE -Wno-obsolete"
+
+# -----------------------------------------------------------------------
+
+# Test for bug reported by François Pinard.
+# If \ is in AC_OUTPUT, automake barfs.
+# This was the old test 'acoutbs.test'.
+
+# Also test for bug reported by David A. Swierczek.
+# Another bug with \ in AC_OUTPUT (this time with whitespace).
+# This was the old test 'acoutbs2.test'.
+
+acoutbs_check ()
+{
+  dir=acoutbs$1
+  mkdir $dir
+  cd $dir
+  cat > configure.ac
+  touch Makefile.am zot.in
+  command_ok_ "aclocal groks '\\' in AC_OUTPUT ($dir)" $ACLOCAL
+  command_ok_ "automake groks '\\' in AC_OUTPUT ($dir)" $AUTOMAKE
+  command_ok_ "autoconf groks '\\' in AC_OUTPUT ($dir)" $AUTOCONF
+  command_ok_ "can ./configure in $dir" ./configure
+  command_ok_ "zot created in $dir" test -f zot
+  ls -a > lst || bailout_ "cannot get file listing in $dir"
+  command_ok_ "'\\' not leaked in filenames in $dir" not grep '\\' lst
+  cd ..
+}
+
+acoutbs_check 1 << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AC_OUTPUT(Makefile \
+zot)
+END
+
+acoutbs_check 2 << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AC_ARG_PROGRAM
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+AC_OUTPUT(\
+   Makefile \
+   zot
+)
+END
+
+# -----------------------------------------------------------------------
+
+# Test for bug reported by Jerome Santini.
+# If I put this line in my configure.ac:
+#  AC_OUTPUT(Makefile src/Makefile tests/Makefile, echo timestamp > stamp-h)dnl
+# automake is not happy:
+#  [ ... ]
+# This was the old test 'acoutnoq.test'.
+
+mkdir acoutnoq
+cd acoutnoq
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AC_OUTPUT(Makefile, [true])
+END
+
+: > Makefile.am
+
+command_ok_ "aclocal and quoted AC_OUTPUT second argument" $ACLOCAL
+command_ok_ "automake and quoted AC_OUTPUT second argument" $AUTOMAKE
+
+cd ..
+
+# -----------------------------------------------------------------------
+
+# Test for bug when AC_OUTPUT has 2 args on the same line, eg:
+#   AC_OUTPUT([Makefile automake tests/Makefile],[chmod +x automake])
+# This was the old test 'acoutpt.test'.
+
+mkdir acoutpt
+cd acoutpt
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AC_OUTPUT([Makefile], [true])
+END
+
+: > Makefile.am
+
+command_ok_ "aclocal and two AC_OUTPUT arguments on same line" $ACLOCAL
+command_ok_ "automake and two AC_OUTPUT arguments on same line" $AUTOMAKE
+
+cd ..
+
+# -----------------------------------------------------------------------
+
+# Test for bug reported by Eric Magnien.
+# This was the old test 'acoutpt2.test'.
+
+mkdir acoutpt2
+cd acoutpt2
+
+# Name of the current "subtest".
+cur=acoutput2
+
+cat > configure.ac <<END
+AC_INIT([$cur], [1.0])
+AM_INIT_AUTOMAKE
+AC_OUTPUT([subdir/Makefile subdir/foo Makefile foo], [true])
+END
+
+mkdir subdir
+
+: > Makefile.am
+: > subdir/Makefile.am
+: > foo.in
+: > subdir/foo.in
+
+command_ok_ "aclocal and AC_OUTPUT ($cur)" $ACLOCAL
+command_ok_ "automake and AC_OUTPUT ($cur)" $AUTOMAKE
+command_ok_ "foo.in mentioned two times in Makefile.in ($cur)" \
+             test `$FGREP foo.in Makefile.in | wc -l` -eq 2
+
+# This ought to work as well.
+command_ok_ "'automake -a -f' and AC_OUTPUT ($cur)" \
+            $AUTOMAKE --add-missing --force-missing
+
+cd ..
+
+# -----------------------------------------------------------------------
+
+# Test for bug reported by François Pinard.
+# This was the old test 'acoutqnl.test'.
+
+mkdir acoutqnl
+cd acoutqnl
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AC_OUTPUT([Makefile],
+[echo zardoz has spoken])
+END
+
+: > Makefile.am
+
+command_ok_ "aclocal and two AC_OUTPUT arguments on two lines" $ACLOCAL
+command_ok_ "automake and two AC_OUTPUT arguments on two lines" $AUTOMAKE
+
+cd ..
+
+# -----------------------------------------------------------------------
+
+# And we're done.
+Exit 0
diff --git a/t/acloca10.sh b/t/acloca10.sh
new file mode 100755 (executable)
index 0000000..05db9b9
--- /dev/null
@@ -0,0 +1,100 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal define macros in the same order as -I's.
+# This is the same as aclocal9.test, with the macro calls reversed.
+# (It did make a difference.)
+#
+# Also check for --install.
+
+# TODO: write a sister test that doesn't use a 'dirlist' file, but
+# TODO: puts third-party macros directly into 'acdir'.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+MACRO1
+MACRO2
+MACRO3
+END
+
+ACLOCAL="$ACLOCAL --system-acdir acdir"
+
+mkdir m4_1 m4_2 acdir acdir2
+echo ./acdir2 > acdir/dirlist
+
+cat >m4_1/somedefs.m4 <<EOF
+AC_DEFUN([MACRO1], [:macro11:])
+AC_DEFUN([MACRO2], [:macro21:])
+EOF
+
+cat >m4_2/somedefs.m4 <<EOF
+AC_DEFUN([MACRO1], [:macro12:])
+EOF
+
+cat >acdir2/macro.m4 <<EOF
+AC_DEFUN([MACRO3], [:macro33:])
+EOF
+
+$ACLOCAL -I m4_1 -I m4_2
+$AUTOCONF
+$FGREP ':macro11:' configure
+$FGREP ':macro21:' configure
+$FGREP ':macro33:' configure
+grep MACRO3 aclocal.m4
+test ! -f m4_1/macro.m4
+test ! -f m4_2/macro.m4
+
+$sleep
+
+$ACLOCAL -I m4_2 -I m4_1
+$AUTOCONF
+$FGREP ':macro12:' configure
+$FGREP ':macro21:' configure
+$FGREP ':macro33:' configure
+grep MACRO3 aclocal.m4
+test ! -f m4_1/macro.m4
+test ! -f m4_2/macro.m4
+
+$sleep
+
+$ACLOCAL -I m4_1 -I m4_2 --install
+$AUTOCONF
+$FGREP ':macro11:' configure
+$FGREP ':macro21:' configure
+$FGREP ':macro33:' configure
+grep MACRO3 aclocal.m4 && Exit 1
+test -f m4_1/macro.m4
+test ! -f m4_2/macro.m4
+cp aclocal.m4 copy.m4
+
+$sleep
+
+echo '#GREPME' >>acdir2/macro.m4
+$ACLOCAL -I m4_1 -I m4_2 --install
+$AUTOCONF
+$FGREP ':macro11:' configure
+$FGREP ':macro21:' configure
+$FGREP ':macro33:' configure
+grep MACRO3 aclocal.m4 && Exit 1
+grep GREPME m4_1/macro.m4 && Exit 1
+test -f m4_1/macro.m4
+test ! -f m4_2/macro.m4
+diff aclocal.m4 copy.m4
+
+:
diff --git a/t/acloca11.sh b/t/acloca11.sh
new file mode 100755 (executable)
index 0000000..7a1cff6
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that when two files define the same macro in the same
+# directory, the macro from the lexically greatest file is used.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+MACRO2
+MACRO1
+END
+
+mkdir m4
+
+cat >m4/version1.m4 <<EOF
+AC_DEFUN([MACRO1], [:macro11:])
+AC_DEFUN([MACRO2], [:macro21:])
+EOF
+
+cat >m4/version2.m4 <<EOF
+AC_DEFUN([MACRO1], [:macro12:])
+EOF
+
+$ACLOCAL -I m4
+$AUTOCONF
+$FGREP ':macro12:' configure
+$FGREP ':macro21:' configure
+
+:
diff --git a/t/acloca12.sh b/t/acloca12.sh
new file mode 100755 (executable)
index 0000000..958238e
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that when two files define the same macro in the same
+# directory, the macro from the lexically greatest file is used.
+# Same as acloca11.test, but without calling MACRO2.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+MACRO1
+END
+
+mkdir m4
+
+cat >m4/version1.m4 <<EOF
+AC_DEFUN([MACRO1], [:macro11:])
+AC_DEFUN([MACRO2], [:macro21:])
+EOF
+
+cat >m4/version2.m4 <<EOF
+AC_DEFUN([MACRO1], [:macro12:])
+EOF
+
+$ACLOCAL --verbose -I m4
+$AUTOCONF
+$FGREP ':macro11:' configure && Exit 1
+$FGREP ':macro21:' configure && Exit 1
+$FGREP ':macro12:' configure
+
+:
diff --git a/t/acloca13.sh b/t/acloca13.sh
new file mode 100755 (executable)
index 0000000..e91a534
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure changes to m4_included files also cause aclocal.m4 to change.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+m4_include([somefile.m4])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'EOF'
+check-local:
+       test -f "$(srcdir)/somefile.m4"
+       test -f "$(srcdir)/m4/version1.m4"
+       test -f "$(srcdir)/m4/otherfile.m4"
+EOF
+
+mkdir m4
+
+echo MACRO1 >somefile.m4
+echo 'AC_PREREQ([2.58])' >m4/otherfile.m4
+
+cat >m4/version1.m4 <<EOF
+AC_DEFUN([MACRO1])
+AC_DEFUN([MACRO2])
+m4_sinclude(m4/otherfile.m4)
+EOF
+
+cat >m4/version2.m4 <<EOF
+AC_DEFUN([MACRO1])
+EOF
+
+$ACLOCAL -I m4
+grep version2 aclocal.m4
+grep version1 aclocal.m4 && Exit 1
+
+$sleep
+echo MACRO2 >somefile.m4
+
+$ACLOCAL -I m4
+grep version2 aclocal.m4 && Exit 1
+grep version1 aclocal.m4
+
+$sleep
+# aclocal.m4 should change if we touch otherfile.m4
+touch m4/otherfile.m4
+$sleep
+$ACLOCAL -I m4
+test `ls -1t aclocal.m4 m4/otherfile.m4 | sed 1q` = aclocal.m4
+
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE distcheck
diff --git a/t/acloca14.sh b/t/acloca14.sh
new file mode 100755 (executable)
index 0000000..ba1f072
--- /dev/null
@@ -0,0 +1,118 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure m4_included files are also scanned for definitions.
+# Report from Phil Edwards.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+echo 'm4_include([a.m4])' > acinclude.m4
+echo 'm4_include([b.m4])' > a.m4
+
+cat >b.m4 <<EOF
+m4_include([c.m4])
+AC_DEFUN([AM_PROG_LIBTOOL],
+[AC_REQUIRE([SOMETHING])dnl
+AC_REQUIRE([SOMETHING_ELSE])dnl
+])
+
+AC_DEFUN([SOMETHING])
+EOF
+
+echo 'm4_include([d.m4])' > c.m4
+echo 'AC_DEFUN([SOMETHING_ELSE])' >d.m4
+
+mkdir defs
+echo 'AC_DEFUN([SOMETHING_ELSE])' >defs/e.m4
+echo 'AC_DEFUN([ANOTHER_MACRO])' >defs/f.m4
+
+cat >>Makefile.am<<\EOF
+ACLOCAL_AMFLAGS = -I defs
+testdist1: distdir
+       test -f $(distdir)/acinclude.m4
+       test -f $(distdir)/a.m4
+       test -f $(distdir)/b.m4
+       test -f $(distdir)/c.m4
+       test -f $(distdir)/d.m4
+       test ! -d $(distdir)/defs
+testdist2: distdir
+       test -f $(distdir)/acinclude.m4
+       test -f $(distdir)/a.m4
+       test -f $(distdir)/b.m4
+       test -f $(distdir)/c.m4
+       test -f $(distdir)/d.m4
+       test ! -f $(distdir)/defs/e.m4
+       test -f $(distdir)/defs/f.m4
+EOF
+
+$ACLOCAL -I defs
+
+$FGREP acinclude.m4 aclocal.m4
+# None of the following macro should be included.  acinclude.m4
+# includes the first four, and the last two are not needed at all.
+$FGREP a.m4 aclocal.m4 && Exit 1
+$FGREP b.m4 aclocal.m4 && Exit 1
+$FGREP c.m4 aclocal.m4 && Exit 1
+$FGREP d.m4 aclocal.m4 && Exit 1
+$FGREP defs/e.m4 aclocal.m4 && Exit 1
+$FGREP defs/f.m4 aclocal.m4 && Exit 1
+
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE testdist1
+
+cp aclocal.m4 stamp
+$sleep
+
+cat >>c.m4 <<\EOF
+AC_DEFUN([FOO], [ANOTHER_MACRO])
+EOF
+
+$MAKE
+
+# Because c.m4 has changed, aclocal.m4 must have been rebuilt.
+test `ls -1t aclocal.m4 stamp | sed 1q` = aclocal.m4
+# However, since FOO is not used, f.m4 should not be included
+# and the contents of aclocal.m4 should remain the same
+diff aclocal.m4 stamp
+
+# If FOO where to be used, that would be another story, of course.
+cat >>configure.ac <<EOF
+FOO
+EOF
+
+cp aclocal.m4 stamp
+$sleep
+
+$MAKE
+
+$FGREP defs/f.m4 aclocal.m4
+$MAKE testdist2
+
+# Make sure aclocal diagnose missing included files with correct 'file:line:'.
+rm -f b.m4
+$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'a\.m4:1: .*b\.m4.*does not exist' stderr
+
+:
diff --git a/t/acloca15.sh b/t/acloca15.sh
new file mode 100755 (executable)
index 0000000..690c06c
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal scans configure.ac for macro definitions.
+# PR/319.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+# Start macros with AM_ because that causes aclocal to complain if it
+# cannot find them.
+
+cat > configure.ac << 'END'
+AC_INIT
+m4_include([somedef.m4])
+AC_DEFUN([AM_SOME_MACRO])
+AC_DEFUN([AM_SOME_OTHER_MACRO])
+AM_SOME_MACRO
+AM_SOME_OTHER_MACRO
+AM_MORE_MACRO
+END
+
+mkdir m4
+echo 'AC_DEFUN([AM_SOME_MACRO])' > m4/some.m4
+echo 'AC_DEFUN([AM_SOME_DEF])' > somedef.m4
+echo 'AC_DEFUN([AM_MORE_MACRO], [AC_REQUIRE([AM_SOME_DEF])])' > m4/more.m4
+
+$ACLOCAL -I m4
+$FGREP AM_SOME_MACRO aclocal.m4 && Exit 1
+$FGREP AM_MORE_MACRO aclocal.m4 && Exit 1
+$FGREP 'm4_include([m4/more.m4])' aclocal.m4
+test 1 = `grep m4_include aclocal.m4 | wc -l`
+
+:
diff --git a/t/acloca16.sh b/t/acloca16.sh
new file mode 100755 (executable)
index 0000000..ab894c7
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal does not include definitions that are not actually
+# evaluated.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_SUBST([POM])
+END
+
+mkdir m4
+cat >m4/some.m4 <<'EOF'
+AC_DEFUN([AM_SOME_MACRO],
+[AC_DEFUN([AC_SUBST], [GREPME])])
+EOF
+
+$ACLOCAL -I m4
+grep m4/some.m4 aclocal.m4 && Exit 1
+
+:
diff --git a/t/acloca17.sh b/t/acloca17.sh
new file mode 100755 (executable)
index 0000000..e6098f0
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal report unused required macros.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+SOME_DEFS
+END
+
+mkdir m4
+cat >m4/somedefs.m4 <<EOF
+AC_DEFUN([SOME_DEFS], [
+  AC_REQUIRE([UNDEFINED_MACRO])
+])
+EOF
+
+# FIXME: We want autom4te's 'undefined required macro' warning to be fatal,
+# but have no means to say so to aclocal.  We use WARNINGS=error instead.
+
+WARNINGS=error $ACLOCAL -I m4 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep '^configure\.ac:2:.*UNDEFINED_MACRO' stderr
+
+:
diff --git a/t/acloca18.sh b/t/acloca18.sh
new file mode 100755 (executable)
index 0000000..c0510e1
--- /dev/null
@@ -0,0 +1,137 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for --install with #serial numbers.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_MACRO1
+AM_MACRO2
+END
+
+mkdir 1 2 3 4 5 6
+
+cat >1/m1.m4 <<EOF
+#serial 1.8.1230.9
+AC_DEFUN([AM_MACRO1], [:macro11:])
+AC_DEFUN([AM_MACRO2], [:macro21:])
+EOF
+
+cat >2/m1.m4 <<EOF
+#serial 1.8.1231.9
+AC_DEFUN([AM_MACRO1], [:macro12:])
+EOF
+
+cat >3/m2.m4 <<EOF
+#serial 13
+AC_DEFUN([AM_MACRO2], [:macro23:])
+EOF
+
+cat >3/m1.m4 <<EOF
+#serial 1.8.1230.1
+AC_DEFUN([AM_MACRO1], [:macro13:])
+EOF
+
+cat >4/mumble.m4 <<EOF
+#serial 0
+AC_DEFUN([AM_MACRO1], [:macro14:])
+EOF
+
+cat >5/ill-formed.m4 <<EOF
+#serial bla
+#serial .2
+#serial
+AC_DEFUN([AM_MACRO1], [:macro15:])
+EOF
+
+cat >6/after-def.m4 <<EOF
+AC_DEFUN([AM_MACRO1], [:macro16:])
+#serial 1
+EOF
+
+clean_stale ()
+{
+  rm -rf aclocal.m4 configure autom4te*.cache
+}
+
+$ACLOCAL -I 1 -I 2 -I 3 -I 4
+$AUTOCONF
+$FGREP ':macro11:' configure
+$FGREP ':macro21:' configure
+
+clean_stale
+$ACLOCAL  -I 1 -I 2 -I 3 -I 4 --install
+$AUTOCONF
+$FGREP ':macro12:' configure
+$FGREP ':macro23:' configure
+
+cp -f aclocal.m4 aclocal-m4.sav
+clean_stale
+mv -f aclocal-m4.sav aclocal.m4
+$ACLOCAL -I 4 -I 1 -I 2 -I 3 --install --dry-run
+$AUTOCONF
+$FGREP ':macro12:' configure
+$FGREP ':macro23:' configure
+
+clean_stale
+$ACLOCAL -I 4 -I 1 -I 2 -I 3 --install
+$AUTOCONF
+$FGREP ':macro14:' configure
+$FGREP ':macro23:' configure
+
+clean_stale
+$ACLOCAL -I 4 -I 1 -I 2 --install 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'macro.*AM_MACRO2.*not found' stderr
+
+clean_stale
+$ACLOCAL -I 4 -I 1 --install
+$AUTOCONF
+$FGREP ':macro14:' configure
+$FGREP ':macro21:' configure
+
+mkdir acdir
+ACLOCAL="$ACLOCAL --system-acdir acdir"
+
+cat >acdir/m1.m4 <<EOF
+#serial 456
+AC_DEFUN([AM_MACRO1], [:macro1d:])
+AC_DEFUN([AM_MACRO2], [:macro2d:])
+EOF
+clean_stale
+$ACLOCAL -I 4 -I 1 --diff=diff >stdout 2>stderr || {
+  cat stderr >&2
+  cat stdout
+  Exit 1
+}
+cat stderr >&2
+cat stdout
+grep '#serial 456' stdout
+test ! -f 4/m1.m4
+grep 'installing.*4/m1\.m4' stderr
+
+$ACLOCAL -I 5 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+test `grep -c 'ill-formed serial' stderr` -eq 3
+
+$ACLOCAL -I 6 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'serial.*before any macro definition' stderr
+
+:
diff --git a/t/acloca19.sh b/t/acloca19.sh
new file mode 100755 (executable)
index 0000000..60e8afe
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal does not fail on configure.ac inclusions that do
+# more than just variable definitions.
+# Report from Peter Breitenlohner (PR/450).
+
+. ./defs || Exit 1
+
+cat >configure.ac <<'END'
+AC_INIT([acloca19], [1.0])
+m4_include([aconfig.ac])
+FOO
+AC_OUTPUT
+END
+
+cat >aconfig.ac <<'END'
+AM_INIT_AUTOMAKE
+AC_DEFUN([FOO], [echo GREPME])
+sinclude([bconfig.ac])
+END
+
+cat >bconfig.ac <<'END'
+AC_ARG_WITH([grepme], [string])
+END
+
+$ACLOCAL
+$AUTOCONF
+./configure >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep GREPME stdout
+grep 'aconfig\.ac' aclocal.m4 && Exit 1
+grep 'bconfig\.ac' aclocal.m4 && Exit 1
+grep with-grepme configure
+
+:
diff --git a/t/acloca20.sh b/t/acloca20.sh
new file mode 100755 (executable)
index 0000000..0305066
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal does not write into symlinked aclocal.m4.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+echo 'm4_define([FOO], [wrong foo])' > foo.m4
+echo 'm4_define([FOO], [right foo])' > acinclude.m4
+echo 'AC_INIT FOO' > configure.ac
+
+chmod a-w foo.m4
+
+# Setup.
+ln -s foo.m4 aclocal.m4 && test -h aclocal.m4 \
+  || skip_ "cannot create symlinks to files"
+
+# Sanity check.
+grep 'wrong foo' aclocal.m4 \
+  || fatal_ "weird error symlinking aclocal.m4 -> foo.m4"
+
+$ACLOCAL
+$AUTOCONF
+grep 'right foo' configure
+grep 'wrong foo' foo.m4
+
+:
diff --git a/t/acloca21.sh b/t/acloca21.sh
new file mode 100755 (executable)
index 0000000..d9b47af
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal ignores include() commands in comments.
+# Report from Mike Frysinger.
+# Also make sure aclocal does not think 'include' is
+# an Autoconf macro.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+dnl m4_include(__some_really_bogus_nonexistent_file__.m4)
+  # m4_include(__some_really_bogus_nonexistent_file__.m4)
+##  m4_include(__some_really_bogus_nonexistent_file__.m4)
+echo 'include(foobar)' is OK
+EOF
+$ACLOCAL
diff --git a/t/acloca22.sh b/t/acloca22.sh
new file mode 100755 (executable)
index 0000000..85ef29b
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the "deleted header file" issue is fixed w.r.t. aclocal.m4
+# dependencies.  See also related the tests 'remake-deleted-m4-file.test'
+# and 'remake-renamed-m4-macro-and-file.test'.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+FOO
+AC_OUTPUT
+EOF
+cat >foo.m4 <<EOF
+AC_DEFUN([FOO], [AC_SUBST([GREPFOO])])
+EOF
+cat >bar.m4 <<EOF
+AC_DEFUN([BAR], [AC_SUBST([GREPBAR])])
+EOF
+cat >Makefile.am <<EOF
+ACLOCAL_AMFLAGS = -I .
+EOF
+
+$ACLOCAL -I .
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE
+grep GREPFOO Makefile
+grep GREPBAR Makefile && Exit 1
+
+sed 's/FOO/BAR/' < configure.ac > t
+mv -f t configure.ac
+rm -f foo.m4
+$MAKE
+grep GREPFOO Makefile && Exit 1
+grep GREPBAR Makefile
+
+:
diff --git a/t/acloca23.sh b/t/acloca23.sh
new file mode 100755 (executable)
index 0000000..b5f66e4
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure we diagnose underquoted AC_DEFUN's.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+FOO
+END
+
+mkdir m4
+cat >m4/foo.m4 <<EOF
+AC_DEFUN(FOO, [echo foo])
+EOF
+
+$ACLOCAL -I m4 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'underquoted definition.*FOO' stderr
+grep 'warning.*warning' stderr && Exit 1
+
+:
diff --git a/t/aclocal-acdir.sh b/t/aclocal-acdir.sh
new file mode 100755 (executable)
index 0000000..88caef6
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test aclocal's '--acdir', '--automake-acdir' and '--system-acdir'
+# options.  Also check that stuff in the automake acdir takes precedence
+# over stuff in the system acdir.
+
+. ./defs || Exit 1
+
+mkdir am sys
+
+cat >> configure.ac <<'END'
+MY_MACRO
+END
+
+cat > am/foo.m4 <<'END'
+AC_DEFUN([AM_INIT_AUTOMAKE], [fake--init--automake])
+END
+
+cat > sys/foo.m4 <<'END'
+AC_DEFUN([MY_MACRO], [my--macro])
+END
+
+$ACLOCAL --automake-acdir am
+$AUTOCONF --force
+$FGREP 'fake--init--automake' configure
+$FGREP 'MY_MACRO' configure
+
+rm -rf autom4te*.cache
+
+$ACLOCAL --system-acdir sys
+$AUTOCONF --force
+$FGREP 'am__api_version' configure
+$FGREP 'my--macro' configure
+
+rm -rf autom4te*.cache
+
+$ACLOCAL --automake-acdir am --system-acdir sys
+$AUTOCONF --force
+$FGREP 'fake--init--automake' configure
+$FGREP 'my--macro' configure
+
+rm -rf autom4te*.cache
+
+$ACLOCAL --system-acdir sys --automake-acdir am
+$AUTOCONF --force
+$FGREP 'fake--init--automake' configure
+$FGREP 'my--macro' configure
+
+rm -rf autom4te*.cache
+
+# Stuff in automake acdir takes precedence over stuff in system acdir.
+cat > am/bar.m4 <<'END'
+AC_DEFUN([MY_MACRO], [am--macro])
+END
+$ACLOCAL --automake-acdir am --system-acdir sys
+$AUTOCONF --force
+$FGREP 'fake--init--automake' configure
+$FGREP 'am--macro' configure
+$FGREP 'my--macro' configure && Exit 1 # Just to be sure.
+
+rm -rf autom4te*.cache
+
+# Obsolescent '--acdir' option.
+$ACLOCAL -Wobsolete --acdir am 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep '.*--acdir.*deprecated' stderr
+
+rm -rf autom4te*.cache
+
+$ACLOCAL -Wno-obsolete --acdir am
+$AUTOCONF --force
+$FGREP 'fake--init--automake' configure
+$FGREP 'am--macro' configure
+
+rm -rf autom4te*.cache
+
+$ACLOCAL -Wno-obsolete --acdir sys 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'macro .*AM_INIT_AUTOMAKE.* not found' stderr
+
+:
diff --git a/t/aclocal-install-absdir.sh b/t/aclocal-install-absdir.sh
new file mode 100755 (executable)
index 0000000..b07f7fa
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure "aclocal --install" install files also in directories
+# passed to '-I' as absolute paths.  Now that we support the
+# ACLOCAL_PATH variable, it is clear that this is the right thing
+# to do.  See also automake bug#8407.
+
+. ./defs || Exit 1
+
+mkdir loc sys
+
+echo 'AM_DUMMY_MACRO' >> configure.ac
+echo 'AC_DEFUN([AM_DUMMY_MACRO], [:])' >> sys/foo.m4
+
+cwd=`pwd` || fatal_ "cannot get current working directory"
+env ACLOCAL_PATH="$cwd/sys" $ACLOCAL --verbose --install -I "$cwd/loc"
+diff sys/foo.m4 loc/foo.m4
+
+:
diff --git a/t/aclocal-install-fail.sh b/t/aclocal-install-fail.sh
new file mode 100755 (executable)
index 0000000..fae2997
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that "aclocal --install" fails when it should.
+# FIXME: this is a good candidate for a conversion to TAP.
+
+am_create_testdir=empty
+required=ro-dir
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+MY_MACRO
+END
+
+mkdir sys-acdir
+cat > sys-acdir/my-defs.m4 <<END
+AC_DEFUN([MY_MACRO], [:])
+END
+
+ACLOCAL="$ACLOCAL -Wnone --system-acdir=sys-acdir"
+
+: > a-regular-file
+mkdir unwritable-dir
+chmod a-w unwritable-dir
+
+$ACLOCAL -I a-regular-file --install 2>stderr \
+  && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$EGREP '(mkdir:|directory ).*a-regular-file' stderr
+test ! -f aclocal.m4
+
+$ACLOCAL --install -I unwritable-dir/sub 2>stderr \
+  && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$EGREP '(mkdir:|directory ).*unwritable-dir/sub' stderr
+test ! -f aclocal.m4
+
+$ACLOCAL -I unwritable-dir --install 2>stderr \
+  && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$EGREP '(cp:|copy ).*unwritable-dir' stderr
+test ! -f aclocal.m4
+
+# Sanity check.
+mkdir m4
+$ACLOCAL -I m4 --install && test -f aclocal.m4 \
+  || fatal_ "aclocal failed also when expected to succeed"
+
+:
diff --git a/t/aclocal-install-mkdir.sh b/t/aclocal-install-mkdir.sh
new file mode 100755 (executable)
index 0000000..ba4be2a
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that "aclocal --install" creates the local m4 directory if
+# necessary.
+# FIXME: this is a good candidate for a conversion to TAP.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+MY_MACRO
+END
+
+mkdir sys-acdir
+cat > sys-acdir/my-defs.m4 <<END
+AC_DEFUN([MY_MACRO], [:])
+END
+
+ACLOCAL="$ACLOCAL --system-acdir=sys-acdir"
+
+$ACLOCAL -I foo --install
+test -f foo/my-defs.m4
+
+$ACLOCAL --install -I "`pwd`/bar"
+test -f bar/my-defs.m4
+
+$ACLOCAL --install -I baz/sub/sub2
+test -f baz/sub/sub2/my-defs.m4
+
+# What should happen:
+#  * zardoz1 should be created, and required m4 files copied into there.
+#  * zardoz2 shouldn't be preferred to quux, even if the former exists
+#    while the latter does not.
+mkdir zardoz2
+$ACLOCAL --install -I zardoz1 -I zardoz2
+test -d zardoz1
+grep MY_MACRO zardoz1/my-defs.m4
+ls zardoz2 | grep . && Exit 1
+
+# Directories in ACLOCAL_PATH should never be created if they don't
+# exist.
+ACLOCAL_PATH="`pwd`/none:`pwd`/none2" $ACLOCAL --install && Exit 1
+test ! -d none
+test ! -d none2
+ACLOCAL_PATH="`pwd`/none:`pwd`/none2" $ACLOCAL --install -I x
+test -f x/my-defs.m4
+test ! -d none
+test ! -d none2
+
+# It's better if aclocal doesn't create the first include dir on failure.
+$ACLOCAL --install -I none -I none2 && Exit 1
+test ! -d none
+test ! -d none2
+
+:
diff --git a/t/aclocal-no-install-no-mkdir.sh b/t/aclocal-no-install-no-mkdir.sh
new file mode 100755 (executable)
index 0000000..3e685f0
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that aclocal does not create a non-existent local m4 directory
+# if the '--install' option is not given.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+MY_MACRO
+END
+
+mkdir sys-acdir
+cat > sys-acdir/my-defs.m4 <<END
+AC_DEFUN([MY_MACRO], [:])
+END
+
+$ACLOCAL -I foo --system-acdir=sys-acdir && Exit 1
+test ! -d foo
+test ! -r foo
+
+:
diff --git a/t/aclocal-path-install-serial.sh b/t/aclocal-path-install-serial.sh
new file mode 100755 (executable)
index 0000000..8a2b22c
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# ACLOCAL_PATH, acdir and '--install' interactions when serial number
+# are involved.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_FOO
+END
+
+set_serial ()
+{
+  serial=$1 file=$2
+  sed '/^# serial/d' $file > t
+  case $serial in
+    none) mv -f t $file;;
+       *) (echo "# serial $serial" && cat t) > $file; rm -f t;;
+  esac
+  cat $file # For debugging.
+}
+
+win ()
+{
+  case $1 in
+    sdir) ok=sdir ko=pdir;;
+    pdir) ok=pdir ko=sdir;;
+       *) fatal_ "win(): invalid argument '$1'";;
+  esac
+  # This is required on fast machine, to avoid caching and timestamp
+  # issues with the autotools (already happened in practice).
+  rm -rf configure aclocal.m4 autom4te*.cache m4/*
+  $ACLOCAL -I m4 --install
+  test -f m4/foo.m4 # Sanity check.
+  $AUTOCONF
+  $FGREP "::$ok:"  m4/foo.m4
+  $FGREP "::$ok::" configure
+  $FGREP "::$ko::" m4/foo.m4 configure && Exit 1
+  :
+}
+
+mkdir sdir pdir m4
+
+ACLOCAL="$ACLOCAL --system-acdir=`pwd`/sdir"
+ACLOCAL_PATH=./pdir; export ACLOCAL_PATH
+
+cat > sdir/foo.m4 << 'END'
+AC_DEFUN([AM_FOO], [::sdir::])
+END
+cat > pdir/foo.m4 << 'END'
+AC_DEFUN([AM_FOO], [::pdir::])
+END
+
+set_serial 2 sdir/foo.m4
+set_serial 1 pdir/foo.m4
+win sdir
+
+set_serial 3.3 sdir/foo.m4
+set_serial 5.7 pdir/foo.m4
+win pdir
+
+set_serial 0    sdir/foo.m4
+set_serial none pdir/foo.m4
+win sdir
+
+set_serial none  sdir/foo.m4
+set_serial 1.2.3 pdir/foo.m4
+win pdir
+
+:
diff --git a/t/aclocal-path-install.sh b/t/aclocal-path-install.sh
new file mode 100755 (executable)
index 0000000..a9a8b97
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# ACLOCAL_PATH and '--install' interactions.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_FOO
+END
+
+mkdir acdir pdir ldir
+
+ACLOCAL="$ACLOCAL --system-acdir=`pwd`/acdir"
+ACLOCAL_PATH=./pdir; export ACLOCAL_PATH
+
+cat > acdir/foo.m4 << 'END'
+AC_DEFUN([AM_FOO], [:])
+END
+
+cat > pdir/bar.m4 << 'END'
+AC_DEFUN([AM_BAR], [:])
+END
+
+# The '--install' option should never cause anything to be installed
+# in a directory specified in ACLOCAL_PATH.
+$ACLOCAL --install 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep ' no -I was supplied' stderr
+test ! -f pdir/foo.m4
+
+# The '--install' option should cause a required macro found in a
+# directory specified in ACLOCAL_PATH to be installed locally.
+echo AM_BAR >> configure.ac
+$ACLOCAL --install -I ldir
+diff pdir/bar.m4 ldir/bar.m4
+
+:
diff --git a/t/aclocal-path-nonexistent.sh b/t/aclocal-path-nonexistent.sh
new file mode 100755 (executable)
index 0000000..8c42ddc
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Non-existent directories in ACLOCAL_PATH are ok.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_FOO
+END
+
+mkdir mdir
+echo 'AC_DEFUN([AM_FOO], [am--foo])' > mdir/foo.m4
+
+ACLOCAL_PATH=./nonesuch:./mdir:`pwd`/nonesuch2:nonesuch3 $ACLOCAL
+$AUTOCONF
+$FGREP 'am--foo' configure
+
+:
diff --git a/t/aclocal-path-precedence.sh b/t/aclocal-path-precedence.sh
new file mode 100755 (executable)
index 0000000..91d9a42
--- /dev/null
@@ -0,0 +1,91 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check precedence rules for ACLOCAL_PATH.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([foo], [1.0])
+AM_INIT_AUTOMAKE([parallel-tests])
+FOO_MACRO
+BAR_MACRO
+AC_PROG_LIBTOOL
+AM_GNU_GETTEXT
+END
+
+mkdir mdir1 mdir2 mdir3 sysdir extradir
+
+cat > mdir1/foo1.m4 << 'END'
+AC_DEFUN([FOO_MACRO], [::pass-foo::])
+END
+
+cat > mdir2/foo2.m4 << 'END'
+AC_DEFUN([FOO_MACRO], [::fail-foo::])
+END
+
+cat > mdir1/baz.m4 << 'END'
+AC_DEFUN([BAR_MACRO], [::fail-bar::])
+END
+
+cat > mdir3/bar.m4 << 'END'
+AC_DEFUN([BAR_MACRO], [::pass-bar::])
+END
+
+cat > mdir2/quux.m4 << 'END'
+AC_DEFUN([AM_INIT_AUTOMAKE], [::fail-init::])
+AC_DEFUN([AC_PROG_LIBTOOL],  [::pass-libtool::])
+AC_DEFUN([AM_GNU_GETTEXT],   [::pass-gettext::])
+END
+
+cat > sysdir/libtool.m4 << 'END'
+AC_DEFUN([AC_PROG_LIBTOOL], [::fail-libtool::])
+END
+
+cat > extradir/gettext.m4 << 'END'
+AC_DEFUN([AM_GNU_GETTEXT], [::fail-gettext::])
+END
+
+echo ./extradir > sysdir/dirlist
+
+ACLOCAL_PATH=mdir1:mdir2 $ACLOCAL -I mdir3 --system-acdir sysdir
+$AUTOCONF
+
+$FGREP '::' configure # For debugging.
+
+# Directories coming first in ACLOCAL_PATH should take precedence
+# over those coming later.
+$FGREP '::pass-foo::' configure
+
+# Directories from '-I' options should take precedence over directories
+# in ACLOCAL_PATH.
+$FGREP '::pass-bar::' configure
+
+# Directories in ACLOCAL_PATH should take precedence over system acdir
+# (typically '${prefix}/share/aclocal'), and any directory added through
+# the 'dirlist' special file.
+$FGREP '::pass-gettext::' configure
+$FGREP '::pass-libtool::' configure
+
+# Directories in ACLOCAL_PATH shouldn't take precedence over the internal
+# automake acdir (typically '${prefix}/share/aclocal-${APIVERSION}').
+$FGREP 'am__api_version' configure
+
+# A final sanity check.
+$FGREP '::fail' configure && Exit 1
+
+:
diff --git a/t/aclocal-path.sh b/t/aclocal-path.sh
new file mode 100755 (executable)
index 0000000..d1279f0
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check basic ACLOCAL_PATH support.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_FOO_MACRO
+AM_BAR_MACRO
+AM_BAZ_MACRO
+END
+
+mkdir mdir1 mdir2 mdir3
+
+cat > mdir1/foo.m4 << 'END'
+AC_DEFUN([AM_FOO_MACRO], [am--foo])
+END
+
+cat > mdir2/bar.m4 << 'END'
+AC_DEFUN([AM_BAR_MACRO], [am--bar])
+END
+
+cat > mdir3/baz.m4 << 'END'
+AC_DEFUN([AM_BAZ_MACRO], [am--baz])
+END
+
+ACLOCAL_PATH=mdir1:./mdir2:`pwd`/mdir3 $ACLOCAL
+$AUTOCONF
+
+# there should be no m4_include in aclocal.m4, even though ACLOCAL_PATH
+# contains 'mdir1' and './mdir2' as relative directories.  Only -I
+# directories should be subject to file inclusion.
+$FGREP m4_include aclocal.m4 && Exit 1
+
+$EGREP 'AM_(FOO|BAR|BAZ)_MACRO' configure && Exit 1
+$FGREP 'am--foo' configure
+$FGREP 'am--bar' configure
+$FGREP 'am--baz' configure
+
+:
diff --git a/t/aclocal-print-acdir.sh b/t/aclocal-print-acdir.sh
new file mode 100755 (executable)
index 0000000..3d8bf4e
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on aclocal's '--print-ac-dir' option.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+$ACLOCAL --print-ac-dir
+test "`$ACLOCAL --print-ac-dir`" = "$am_system_acdir"
+
+$ACLOCAL -Wno-obsolete --acdir foo --print-ac-dir
+test "`$ACLOCAL -Wno-obsolete --acdir foo --print-ac-dir`" = foo
+
+$ACLOCAL --system-acdir /bar --print-ac-dir
+test "`$ACLOCAL --system-acdir /bar --print-ac-dir`" = /bar
+
+$ACLOCAL --automake-acdir /bar --print-ac-dir
+test "`$ACLOCAL --automake-acdir /bar --print-ac-dir`" = "$am_system_acdir"
+
+:
diff --git a/t/aclocal-verbose-install.sh b/t/aclocal-verbose-install.sh
new file mode 100755 (executable)
index 0000000..594c607
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check verbose messages by `aclocal --install'.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+MY_MACRO_BAR
+MY_MACRO_QUUX
+END
+
+mkdir sys-acdir
+cat > sys-acdir/bar.m4 <<END
+AC_DEFUN([MY_MACRO_BAR], [:])
+END
+cat > sys-acdir/quux.m4 <<END
+AC_DEFUN([MY_MACRO_QUUX], [:])
+END
+
+mkdir foodir
+: > foodir/bar.m4
+
+$ACLOCAL --system-acdir=sys-acdir --install --verbose -I foodir 2>stderr \
+ || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep ' installing .*sys-acdir/bar\.m4.* to .*foodir/bar\.m4' stderr
+grep ' installing .*sys-acdir/quux\.m4.* to .*foodir/quux\.m4' stderr
+grep ' overwriting .*foodir/bar\.m4.* with .*sys-acdir/bar\.m4' stderr
+grep ' installing .*foodir/quux\.m4.* from .*sys-acdir/quux\.m4' stderr
+
+# Sanity checks.
+ls -l foodir
+grep MY_MACRO_BAR foodir/bar.m4
+grep MY_MACRO_QUUX foodir/quux.m4
+
+:
diff --git a/t/aclocal.sh b/t/aclocal.sh
new file mode 100755 (executable)
index 0000000..3e0cac6
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on some aclocal options.  Report from Alexandre Oliva.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+echo "AC_INIT([$me], [0]) AM_INIT_AUTOMAKE" > configure.ac
+
+$ACLOCAL --output=fred
+test -f fred
+
+$ACLOCAL --output 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'option.*--output.*requires an argument' stderr
+grep '[Tt]ry.*--help.*for more information' stderr
+
+$ACLOCAL --unknown-option 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'unrecognized option.*--unknown-option' stderr
+grep '[Tt]ry.*--help.*for more information' stderr
+
+$ACLOCAL foobar 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'non-option argument.*foobar' stderr
+grep '[Tt]ry.*--help.*for more information' stderr
+
+$ACLOCAL --ver 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'unrecognized option.*--ver' stderr
+grep '[Tt]ry.*--help.*for more information' stderr
+
+$ACLOCAL --versi
+
+:
diff --git a/t/aclocal3.sh b/t/aclocal3.sh
new file mode 100755 (executable)
index 0000000..b2d2ab9
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure include of include detects missing macros
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_INIT([$me], [1.0])
+GNOME_X_CHECKS
+END
+
+mkdir macros
+
+cat > macros/gnome.m4 << 'END'
+AC_DEFUN([GNOME_X_CHECKS], [
+# Use a macro that cannot be installed in a third-party system-wide m4
+# file; otherwise, this test might fail under "make installcheck".
+       AM__PATH__GTK(0.99.5,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path))
+])
+END
+
+$ACLOCAL -I macros 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr
+grep '^macros/gnome\.m4:4:.*AM__PATH__GTK.*not found' stderr
+
+:
diff --git a/t/aclocal4.sh b/t/aclocal4.sh
new file mode 100755 (executable)
index 0000000..bc80f64
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure dependencies on aclocal.m4 are set correctly.
+# Report from Jim Meyering.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_PROG_RANLIB
+AM_PROG_AR
+AC_PROG_CC
+MY_MACRO
+AC_CONFIG_FILES([lib/Makefile])
+AC_OUTPUT
+EOF
+
+mkdir m4
+cat >m4/mymacro.m4 <<EOF
+AC_DEFUN([MY_MACRO], [])
+EOF
+
+mkdir lib
+: > lib/foo.c
+: > lib/bar.c
+cat >lib/Makefile.am <<'EOF'
+noinst_LIBRARIES = liberi.a
+liberi_a_SOURCES = bar.c
+liberi_a_LIBADD = $(LIBOBJS)
+EOF
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = lib
+EXTRA_DIST = m4/mymacro.m4
+ACLOCAL_AMFLAGS = -I m4
+check-foo: distdir
+       test -f $(distdir)/lib/foo.c
+       test -f $(distdir)/lib/bar.c
+
+check-not-foo: distdir
+       test ! -f $(distdir)/lib/foo.c
+       test -f $(distdir)/lib/bar.c
+EOF
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE check-not-foo
+
+# Update one of the macros.  This should cause ./configure, Makefile.in,
+# Makefile, lib/Makefile.in, and lib/Makefile to be updated.
+
+cat >m4/mymacro.m4 <<'EOF'
+AC_DEFUN([MY_MACRO], [AC_LIBOBJ([foo])])
+EOF
+
+using_gmake || $MAKE
+$MAKE check-foo
+
+:
diff --git a/t/aclocal5.sh b/t/aclocal5.sh
new file mode 100755 (executable)
index 0000000..23a7e5e
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that aclocal.m4's dependencies are honored in
+# sub-directories.  See also related tests 'remake-subdir*.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_TEST([GREPME])
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+ACLOCAL_AMFLAGS = -I m4
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+mkdir m4
+echo 'AC_DEFUN([AM_TEST], [echo $@])' > m4/moredefs.m4
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+./configure
+$MAKE
+
+# Update an aclocal.m4 dependency, then make sure all Makefiles are
+# updated, even from a sub-directory.  Check that AU_ALIAS is
+# recognized. Change the definition of AM_TEST to check that its new
+# definition is used.
+$sleep # Modified configure dependencies must be newer than config.status.
+echo 'AU_ALIAS([AM_TEST], [AC_SUBST])' > m4/moredefs.m4
+cd sub
+$MAKE
+cd ..
+grep GREPME Makefile
+grep GREPME sub/Makefile
+
+# Make sure configure dependencies are distributed.
+$MAKE distdir
+test -f $me-1.0/m4/moredefs.m4
+
+# Change the definition of AM_TEST to check that its new definition is
+# used.  Check that AC_DEFUN_ONCE is caught.
+$sleep # Modified configure dependencies must be newer than config.status.
+echo 'AC_DEFUN_ONCE([AM_TEST], [AC_SUBST(__$1__)])' > m4/moredefs.m4
+$MAKE
+grep 'm4/moredefs\.m4' aclocal.m4
+grep '__GREPME__' configure
+
+:
diff --git a/t/aclocal6.sh b/t/aclocal6.sh
new file mode 100755 (executable)
index 0000000..8923851
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal.m4 is rebuilt whenever a configure
+# dependency changes.  Test for acinclude.m4 and VPATH too.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+SOME_DEFS
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+ACLOCAL_AMFLAGS = -I m4
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+mkdir m4
+echo 'AC_DEFUN([SOME_DEFS], [])' > m4/somedefs.m4
+echo 'AC_DEFUN([MORE_DEFS], [AC_SUBST([GREPME])])' > m4/moredefs.m4
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+mkdir build
+cd build
+
+../configure
+$MAKE
+
+# Modified configure dependencies must be newer than config.status.
+$sleep
+# Update an aclocal.m4 dependency, then make sure all Makefiles
+# are updated, even from a sub-directory.
+echo 'AC_DEFUN([SOME_DEFS], [MORE_DEFS])' > ../m4/somedefs.m4
+# Because aclocal will run again, it should also pick up acinclude.m4.
+echo 'AC_SUBST([METOO])' > ../acinclude.m4
+
+cd sub
+$MAKE
+cd ..
+grep GREPME Makefile
+grep GREPME sub/Makefile
+grep GREPME sub/Makefile
+grep METOO Makefile
+grep METOO sub/Makefile
+grep METOO sub/Makefile
+
+# Make sure configure dependencies are distributed.
+$MAKE distdir
+test -f $me-1.0/m4/moredefs.m4
+test -f $me-1.0/m4/somedefs.m4
+test -f $me-1.0/acinclude.m4
+
+:
diff --git a/t/aclocal7.sh b/t/aclocal7.sh
new file mode 100755 (executable)
index 0000000..548d890
--- /dev/null
@@ -0,0 +1,116 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal does not overwrite aclocal.m4 needlessly.
+# Also make sure automake --no-force does not overwrite Makefile.in needlessly.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+SOME_DEFS
+AC_CONFIG_FILES([sub/Makefile])
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+cat >> Makefile.am << 'END'
+SUBDIRS = sub
+include fragment.inc
+END
+
+: > fragment.inc
+
+mkdir m4
+echo 'AC_DEFUN([SOME_DEFS], [])' > m4/somedefs.m4
+
+$sleep
+
+$ACLOCAL -I m4
+
+# Automake will take aclocal.m4 to be newer if it has the same timestamp
+# as Makefile.in.  Avoid the confusing by sleeping.
+$sleep
+
+$AUTOMAKE --no-force
+
+$sleep
+
+touch foo
+$ACLOCAL -I m4
+$AUTOMAKE --no-force
+
+# aclocal.m4 and Makefile.in should not have been updated, so 'foo'
+# should be younger
+test `ls -1t aclocal.m4 Makefile.in sub/Makefile.in foo | sed 1q` = foo
+
+$sleep
+$ACLOCAL -I m4 --force
+test `ls -1t aclocal.m4 foo | sed 1q` = aclocal.m4
+# We still use --no-force for automake, but since aclocal.m4 has
+# changed all Makefile.ins should be updated.
+$sleep
+$AUTOMAKE --no-force
+test `ls -1t Makefile.in foo | sed 1q` = Makefile.in
+test `ls -1t sub/Makefile.in foo | sed 1q` = sub/Makefile.in
+
+touch m4/somedefs.m4
+$sleep
+touch foo
+$sleep
+$ACLOCAL -I m4
+$sleep
+$AUTOMAKE --no-force
+
+# aclocal.m4 should have been updated, although its contents haven't changed.
+test `ls -1t aclocal.m4 foo | sed 1q` = aclocal.m4
+test `ls -1t Makefile.in foo | sed 1q` = Makefile.in
+test `ls -1t sub/Makefile.in foo | sed 1q` = sub/Makefile.in
+
+touch fragment.inc
+$sleep
+touch foo
+$sleep
+$ACLOCAL -I m4
+$AUTOMAKE --no-force
+# Only ./Makefile.in should change.
+test `ls -1t aclocal.m4 foo | sed 1q` = foo
+test `ls -1t Makefile.in foo | sed 1q` = Makefile.in
+test `ls -1t sub/Makefile.in foo | sed 1q` = foo
+
+grep README Makefile.in && Exit 1
+
+: > README
+$sleep
+touch foo
+$sleep
+$AUTOMAKE --no-force
+# Even if no dependency change, the content changed.
+test `ls -1t Makefile.in foo | sed 1q` = Makefile.in
+test `ls -1t sub/Makefile.in foo | sed 1q` = foo
+
+grep README Makefile.in
+
+: > sub/Makefile.in
+$sleep
+touch foo
+$sleep
+$ACLOCAL -I m4
+$AUTOMAKE --no-force
+# Only sub/Makefile.in should change.
+test `ls -1t aclocal.m4 foo | sed 1q` = foo
+test `ls -1t Makefile.in foo | sed 1q` = foo
+test `ls -1t sub/Makefile.in foo | sed 1q` = sub/Makefile.in
diff --git a/t/aclocal8.sh b/t/aclocal8.sh
new file mode 100755 (executable)
index 0000000..8df0835
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal does not require unused macros.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+SOME_DEFS
+END
+
+mkdir m4
+cat >m4/somedefs.m4 <<EOF
+AC_DEFUN([SOME_DEFS], [
+  m4_if([a], [a], [MACRO1], [MACRO2])
+])
+EOF
+
+echo 'AC_DEFUN([MACRO1],)' >m4/macro1.m4
+echo 'AC_DEFUN([MACRO2], [AC_REQUIRE([AM_UNUSED_MACRO])])' >m4/macro2.m4
+
+$ACLOCAL -I m4 >output 2>&1 || { cat output; Exit 1; }
+test 0 = `wc -l <output`
+grep macro1.m4 aclocal.m4
+grep macro2.m4 aclocal.m4 && Exit 1
+
+:
diff --git a/t/aclocal9.sh b/t/aclocal9.sh
new file mode 100755 (executable)
index 0000000..c7ce751
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal define macros in the same order as -I's.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+MACRO1
+MACRO2
+END
+
+mkdir m4_1 m4_2
+
+cat >m4_1/somedefs.m4 <<EOF
+AC_DEFUN([MACRO1], [:macro11:])
+AC_DEFUN([MACRO2], [:macro21:])
+EOF
+
+cat >m4_2/somedefs.m4 <<EOF
+AC_DEFUN([MACRO1], [:macro12:])
+EOF
+
+$ACLOCAL -I m4_1 -I m4_2
+$AUTOCONF
+$FGREP ':macro11:' configure
+$FGREP ':macro21:' configure
+
+$ACLOCAL --force -I m4_2 -I m4_1
+$AUTOCONF --force
+$FGREP ':macro12:' configure
+$FGREP ':macro21:' configure
+
+:
diff --git a/t/acsilent.sh b/t/acsilent.sh
new file mode 100755 (executable)
index 0000000..0f9c1cb
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure there are no spurious acinclude warnings.
+
+. ./defs || Exit 1
+
+cat >configure.ac <<EOF
+AC_INIT
+AM_INIT_GUILE_MODULE
+EOF
+
+cat > acinclude.m4 << 'END'
+AC_DEFUN([AM_INIT_GUILE_MODULE],[
+. $srcdir/../GUILE-VERSION
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+AC_CONFIG_AUX_DIR(..)
+module=[$1]
+AC_SUBST(module)])
+END
+
+$ACLOCAL >output 2>&1 || { cat output; Exit 1; }
+cat output
+test ! -s output
diff --git a/t/acsubst.sh b/t/acsubst.sh
new file mode 100755 (executable)
index 0000000..9390944
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_SUBST([FOOBAR_LDFLAGS],[blablabla])
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = mumble
+mumble_SOURCES = a.c b.c d.h
+mumble_LDFLAGS = $(FOOBAR_LDFLAGS)
+END
+
+$ACLOCAL
+$AUTOMAKE -a
diff --git a/t/acsubst2.sh b/t/acsubst2.sh
new file mode 100755 (executable)
index 0000000..e8c8663
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_SUBST([FOOBAR_CFLAGS],[blablabla])
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = mumble
+mumble_SOURCES = a.c b.c d.h
+mumble_CFLAGS = $(FOOBAR_CFLAGS)
+END
+
+$ACLOCAL
+$AUTOMAKE -a
diff --git a/t/add-missing.tap b/t/add-missing.tap
new file mode 100755 (executable)
index 0000000..39b7ae7
--- /dev/null
@@ -0,0 +1,391 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that automake complains when required auxiliary files are not
+# found, and that 'automake --add-missing' installs the files (and only
+# the files) it's supposed to, and that these files are symlinked by
+# default, but copied if the '--copy' option is used.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+plan_ "later"
+
+build_aux=build-aux
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+
+# Try to improve readability of displayed diffs.
+if diff -u /dev/null /dev/null; then
+  am_diff='diff -u'
+elif diff -c /dev/null /dev/null; then
+  am_diff='diff -c'
+else
+  am_diff=diff
+fi
+
+# MinGW/MSYS lacks real symlinks, so we'll have to skip some checks
+# on that system.  More details below.
+echo dummy > foo
+if ln -s foo bar && test -h bar; then
+  have_true_symlinks=yes
+else
+  have_true_symlinks=no
+fi
+rm -f foo bar
+
+cat > configure.stub << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([$build_aux])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+# Pre-compute aclocal.m4, in order to save several aclocal invocations.
+cat configure.stub - > configure.ac <<'END'
+AC_PROG_CC
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+AC_CANONICAL_SYSTEM
+AM_PATH_LISPDIR
+AM_PATH_PYTHON
+END
+$ACLOCAL || framework_failure_ "cannot pre-compute aclocal.m4"
+
+rm -rf configure.ac autom4te*.cache
+mv aclocal.m4 aclocal.stub
+
+# For debugging.
+cat configure.stub
+cat aclocal.stub
+
+check_count=0
+
+# This is hacky and ugly and complex, but allow us to organize our tests
+# below in a more "declarative fashion".  All in all, a good trade-off.
+check_ ()
+{
+  set +x # Temporary disable shell traces to remove noise from log files.
+  incr_ check_count
+  echo check count: $check_count
+  override=no
+  run_aclocal=no
+  fetch_file=
+  while test $# -gt 0; do
+    case $1 in
+      --override) override=yes;;
+      --run-aclocal) run_aclocal=yes;;
+      --fetch-file) fetch_file=$2; shift;;
+      *) framework_failure_ "check_: invalid argument '$1'";;
+    esac
+    shift
+  done
+  mkdir testdir-$check_count
+  cd testdir-$check_count
+  # Directory for common data files (specific to the current test, but
+  # shared by its "subtests").
+  mkdir generic
+  cd generic
+  # Use 'echo > ...', not ': > ...', here and below, as Solaris 10 /bin/sh
+  # might not execute the latter (the Autoconf manual gives more details).
+  echo > Makefile.am
+  if test $override = yes; then
+    echo > configure.ac
+  else
+    cp "$ocwd"/configure.stub configure.ac
+  fi
+  test -z "$fetch_file" || cp "$ocwd/$fetch_file" .
+  # Read description of "test scenario" from standard input.
+  what= line= name= files=
+  while read line; do
+    case $line in
+      '== Name ==') what=NAME;;
+      '== Makefile.am ==') what=Makefile.am;;
+      '== configure.ac ==') what=configure.ac;;
+      '== Files ==') what=LIST;;
+      '==*') framework_failure_ "invalid input line: $line";;
+      ''|'#%'*) : Empty line or ad-hoc comment, ignore. ;;
+      *)
+        if test $what = LIST; then
+          files="$files $line"
+        elif test $what = NAME; then
+          name=$line
+        else
+          printf '%s\n' "$line" >> "$what"
+        fi
+        ;;
+    esac
+  done
+  test -n "$name" || fatal_ "name of a test case not specified"
+  if test $run_aclocal = yes; then
+    if $ACLOCAL; then
+      ok_ "[$name] aclocal.m4 rebuilt"
+      echo == aclocal.m4 ==
+      cat aclocal.m4
+    else
+      not_ok_ "[$name] aclocal failure, aclocal.m4 not rebuilt"
+    fi
+  else
+    cp "$ocwd"/aclocal.stub aclocal.m4
+  fi
+  echo == Makefile.am ==
+  cat Makefile.am
+  echo == configure.ac ==
+  cat configure.ac
+  echo Expected files: $files
+  mkdir "$build_aux"
+  cd ..
+  # End of "test scenario" setup.
+  set -x # Re-enable shell traces.
+  pwd
+  ls -l generic
+  # Test once with '--copy', once without.
+  for action in link copy; do
+    case $action in
+      link) opts='--add-missing';;
+      copy) opts='-a --copy';;
+         *) fatal_ "invalid value '$action' for \$action";;
+    esac
+    pfx="[$action $name]"
+    cp -R generic $action
+    cd $action
+    # If the required auxiliary files are missing, and automake is
+    # not told to install them, it should complain and error out,
+    # and also give a useful suggestion.
+    AUTOMAKE_fails -d "$pfx missing files, automake fails"
+    for f in $files; do
+      command_ok_ \
+        "$pfx warn about missing file $f" \
+        grep "required file ['\`]$build_aux/$f' not found" stderr
+      # Suggest the user to use '--add-missing'.
+      command_ok_ \
+        "$pfx suggest --add-missing for $f" \
+        grep ".*--add-missing.* install .*$f" stderr
+    done
+    # No files should be automatically installed by automake if it
+    # is not told to.
+    if ls "$build_aux" | grep .; then r='not ok'; else r=ok; fi
+    result_ "$r" "$pfx no extra files installed"
+    AUTOMAKE_run -d "$pfx automake run successfully" -- $opts
+    ls -l . $build_aux
+    # The expected files should get installed correctly (e.g., no
+    # broken symlinks).
+    for f in $files; do
+      command_ok_ \
+        "$pfx file $f installed" \
+        test -f $build_aux/$f
+    done
+    # Automake should inform about which files it's installing.
+    for f in $files; do
+      command_ok_ \
+        "$pfx report installation of $f" \
+        grep ": installing ['\`]$build_aux/$f'$" stderr
+    done
+    # Only the expected files should be installed.  But automake always
+    # require 'missing' and 'install-sh', so account for them.
+    all_files="install-sh missing $files"
+    for f in $all_files; do echo $f; done | sort | uniq > files.exp
+    (cd $build_aux && ls) | sort > files.got
+    cat files.exp
+    cat files.got
+    command_ok_ \
+      "$pfx all and only expected files installed" \
+      $am_diff files.exp files.got
+    # The files should be copied by '--copy' and symlinked otherwise.
+    # But these checks make no sense on systems like MSYS/MinGW where
+    # there are no true symlinks ('ln -s' behaves like 'cp -p'), so be
+    # ready to skip the checks in that case.  See automake bug#10441.
+    for f in $files; do
+      if test $have_true_symlinks = no; then
+        skip_ -r "system lacks true symlinks" "$pfx $f is a symlink or not"
+      else
+        if test -h $build_aux/$f; then
+          is_symlink=yes
+        else
+          is_symlink=no
+        fi
+        case $action,$is_symlink in
+          link,yes)     ok_ "$pfx $f has been symlinked"     ;;
+           link,no) not_ok_ "$pfx $f has not been symlinked" ;;
+          copy,yes) not_ok_ "$pfx $f has been symlinked"     ;;
+           copy,no)     ok_ "$pfx $f has not been symlinked" ;;
+                 *)  fatal_ "invalid condition in case"      ;;
+        esac
+      fi
+    done
+    # Now that the required auxiliary files have been installed, automake
+    # should not complain anymore even if the '--add-missing' option is
+    # not used.
+    AUTOMAKE_run -d "$pfx automake finds all added files"
+    cd ..
+  done # for action in link copy
+  cd "$ocwd" || fatal_ "cannot chdir back to top-level test directory"
+}
+
+# Automake should always and unconditionally require the 'missing'
+# and 'install-sh' scripts.
+check_ <<'END'
+== Name ==
+minimal
+== Files ==
+install-sh missing
+END
+
+check_ <<'END'
+== Name ==
+depcomp/C
+== Files ==
+depcomp
+== configure.ac ==
+AC_PROG_CC
+== Makefile.am ==
+bin_PROGRAMS = foo
+END
+
+check_ <<'END'
+== Name ==
+depcomp/C++
+== Files ==
+depcomp
+== configure.ac ==
+AC_PROG_CXX
+== Makefile.am ==
+bin_PROGRAMS = foo
+foo_SOURCES = foo.cc
+END
+
+check_ --run-aclocal <<'END'
+== Name ==
+compile
+== Files ==
+compile
+== configure.ac ==
+# Using AM_PROG_CC_C_O in configure.ac should be enough.  No need to
+# use AC_PROG_CC too, nor to define xxx_PROGRAMS in Makefile.am.
+AM_PROG_CC_C_O
+END
+
+# For config.guess and config.sub.
+for mach in build host target system; do
+  MACH=`echo "$mach" | LC_ALL=C tr '[a-z]' '[A-Z]'`
+  check_ <<END
+== Name ==
+cfg-$mach
+== Files ==
+config.sub
+config.guess
+== configure.ac ==
+AC_CANONICAL_$MACH
+END
+done
+
+check_ <<'END'
+== Name ==
+ylwrap/Lex
+== Files ==
+ylwrap
+== configure.ac ==
+AC_PROG_CC
+AC_PROG_LEX
+== Makefile.am ==
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo
+foo_SOURCES = foo.l
+END
+
+check_ <<'END'
+== Name ==
+ylwrap/Yacc
+== Files ==
+ylwrap
+== configure.ac ==
+AC_PROG_CC
+AC_PROG_YACC
+== Makefile.am ==
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+END
+
+echo '@setfilename foo.info' > foo.texi
+check_ --fetch-file foo.texi <<'END'
+== Name ==
+Texinfo
+== Files ==
+texinfo.tex
+== Makefile.am ==
+info_TEXINFOS = foo.texi
+END
+
+echo '@include version.texi' >> foo.texi
+check_ --fetch-file foo.texi <<'END'
+== Name ==
+Texinfo/mdate-sh
+== Files ==
+mdate-sh
+texinfo.tex
+== Makefile.am ==
+info_TEXINFOS = foo.texi
+END
+
+rm -f foo.texi
+
+check_ <<'END'
+== Name ==
+elisp-comp
+== Files ==
+elisp-comp
+== configure.ac ==
+AM_PATH_LISPDIR
+== Makefile.am ==
+lisp_LISP = foo.el
+END
+
+check_ <<'END'
+== Name ==
+py-compile
+== Files ==
+py-compile
+== configure.ac ==
+AM_PATH_PYTHON
+== Makefile.am ==
+python_PYTHON = foo.py
+END
+
+# Try few unrelated auxiliary scripts together.
+check_ <<'END'
+== Name ==
+misc
+== Files ==
+py-compile
+depcomp
+ylwrap
+config.sub
+config.guess
+== configure.ac ==
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_PROG_CXX
+== Makefile.am ==
+PYTHON = python
+pythondir = $(prefix)/py
+YACC = bison -y
+bin_PROGRAMS = foo
+foo_SOURCES = bar.yxx baz.c++
+python_PYTHON = zardoz.py
+END
+
+:
diff --git a/t/all.sh b/t/all.sh
new file mode 100755 (executable)
index 0000000..0baf9da
--- /dev/null
+++ b/t/all.sh
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure several *-local's in a single rule work.
+
+. ./defs || Exit 1
+
+targets='all install-exec install-data uninstall'
+echo "$targets:" | sed -e 's/[ :]/-local&/g' > Makefile.am
+cat Makefile.am # For debugging.
+
+$ACLOCAL
+$AUTOMAKE
+
+for target in $targets; do
+  grep "${target}-local" Makefile.in # For debugging.
+  grep "${target}-am:.*${target}-local" Makefile.in
+done
+
+:
diff --git a/t/all2.sh b/t/all2.sh
new file mode 100755 (executable)
index 0000000..da22e68
--- /dev/null
+++ b/t/all2.sh
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure all-local and other -local targets work correctly.
+
+. ./defs || Exit 1
+
+$ACLOCAL
+
+targets='all install-exec install-data uninstall'
+for target in $targets; do
+  : Doing $target
+  echo "${target}-local:" > Makefile.am
+  $AUTOMAKE
+  grep "${target}-local ${target}-local" Makefile.in && Exit 1
+  grep "${target}-am:.*${target}-local" Makefile.in
+done
+
+:
diff --git a/t/alloca.sh b/t/alloca.sh
new file mode 100755 (executable)
index 0000000..c87904b
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we complain if @ALLOCA@ is used without being set in configure.ac
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AM_PROG_AR
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = @ALLOCA@
+END
+
+: > alloca.c
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile\.am:1:.*define .*RANLIB.* add .*AC_PROG_RANLIB' stderr
+grep '^Makefile\.am:3:.*define .*ALLOCA.* add .*AC_FUNC_ALLOCA' stderr
+
+:
diff --git a/t/alloca2.sh b/t/alloca2.sh
new file mode 100755 (executable)
index 0000000..08fad97
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we complain if @LTALLOCA@ is used without being set in configure.ac
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+END
+
+cat > Makefile.am << 'END'
+noinst_LTLIBRARIES = libtu.la
+libtu_la_SOURCES =
+libtu_la_LIBADD = @LTALLOCA@
+END
+
+: > alloca.c
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile\.am:1:.*define.*LIBTOOL.* add .*LT_INIT' stderr
+grep '^Makefile\.am:3:.*LTALLOCA' stderr
+
+:
diff --git a/t/alpha.sh b/t/alpha.sh
new file mode 100755 (executable)
index 0000000..90f2cc2
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure README-alpha is distributed when appropriate.  Report from
+# Jim Meyering.
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([alpha], [1.0a])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = gnits
+SUBDIRS = sub
+check-local: distdir
+       test -f $(distdir)/README-alpha
+       test -f $(distdir)/sub/README
+       test ! -f $(distdir)/sub/README-alpha
+       : > works
+END
+
+mkdir sub
+cat > sub/Makefile.am << 'END'
+AUTOMAKE_OPTIONS = gnits
+END
+
+: > README-alpha
+: > sub/README-alpha
+: > sub/README
+
+# Gnits stuff.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+: > THANKS
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+# "make distdir" should fail because NEWS does not mention 1.0a
+$MAKE check 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'NEWS not updated' stderr
+test ! -f works
+
+echo 'alpha 1.0a released' > NEWS
+$MAKE check
+test -f works
diff --git a/t/alpha2.sh b/t/alpha2.sh
new file mode 100755 (executable)
index 0000000..6d5207f
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another check for README-alpha support.  This time it is requested
+# from configure.ac.  Report from Akim Demaille.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([alpha], [1.0b])
+AM_INIT_AUTOMAKE([readme-alpha])
+AC_CONFIG_FILES([Makefile sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+check-local: distdir
+       test -f $(distdir)/README-alpha
+       test -f $(distdir)/sub/README
+       test ! -f $(distdir)/sub/README-alpha
+       : > works
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+: > README-alpha
+: > sub/README-alpha
+: > sub/README
+
+# Gnits stuff.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+: > THANKS
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE check
+test -f works
diff --git a/t/am-tests-environment.sh b/t/am-tests-environment.sh
new file mode 100755 (executable)
index 0000000..f2931e6
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests: check AM_TESTS_ENVIRONMENT support, and its
+# interactions with TESTS_ENVIRONMENT.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_MKDIR_P
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_EXTENSIONS = .sh .test
+TESTS = foo.test bar.sh
+SH_LOG_COMPILER = sh
+AM_TESTS_ENVIRONMENT = \
+  $(MKDIR_P) quux.dir; \
+  if test -f $(srcdir)/test-env.sh; then \
+    . $(srcdir)/test-env.sh; \
+  fi; \
+  FOO=1; export FOO;
+EXTRA_DIST = $(TESTS) test-env.sh
+END
+
+cat > foo.test << 'END'
+#! /bin/sh
+ls -l && test -d quux.dir
+END
+chmod a+x foo.test
+
+cat > bar.sh << 'END'
+echo "FOO='$FOO'"
+echo "BAR='$BAR'"
+test x"$FOO" = x"$BAR"
+END
+
+debug_info ()
+{
+  cat test-suite.log
+  cat foo.log
+  cat bar.log
+}
+
+minicheck ()
+{
+  debug_info
+  test -d quux.dir
+}
+
+miniclean ()
+{
+  rmdir quux.dir
+  rm -f foo.log bar.log test-suite.log
+}
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+TESTS_ENVIRONMENT='BAR=1' $MAKE check || { debug_info; Exit 1; }
+minicheck
+miniclean
+
+TESTS_ENVIRONMENT='BAR=2' $MAKE check && { debug_info; Exit 1; }
+minicheck
+miniclean
+
+echo 'BAR=1 && export BAR' > test-env.sh
+$MAKE check || { debug_info; Exit 1; }
+minicheck
+$MAKE distcheck
+
+:
diff --git a/t/amassign.sh b/t/amassign.sh
new file mode 100755 (executable)
index 0000000..1649dd0
--- /dev/null
@@ -0,0 +1,28 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to see if AM_ name can be assigned to in configure.ac.
+# Report from Steve Robbins.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CFLAGS=foo
+AC_SUBST(AM_BAR)
+AC_SUBST([AM_ZARDOZ])
+END
+
+$ACLOCAL
diff --git a/t/amhello-binpkg.sh b/t/amhello-binpkg.sh
new file mode 100755 (executable)
index 0000000..4b3e0e2
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test an example from the manual about the 'amhello' package:
+# using DESTDIR to build simple, no-frills binary packages.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cp "$am_docdir"/amhello-1.0.tar.gz . \
+  || fatal_ "cannot get amhello tarball"
+
+gzip -dc amhello-1.0.tar.gz | tar xf -
+cd amhello-1.0
+
+./configure --prefix /usr
+$MAKE
+$MAKE DESTDIR="`pwd`/inst" install
+cd inst
+find . -type f -print > ../files.lst
+tar cvf amhello-1.0-i686.tar.gz `cat ../files.lst` > tar.got 2>&1
+
+EXEEXT=`sed -n -e 's/^EXEEXT *= *//p' < ../Makefile`
+
+if tar --version </dev/null | grep GNU; then
+  LC_ALL=C sort tar.got > t
+  mv -f t tar.got
+  diff - tar.got <<END
+./usr/bin/hello$EXEEXT
+./usr/share/doc/amhello/README
+END
+else
+  : Be laxer with other tar implementations, to avoid spurious failures.
+  $EGREP '(^| )\./usr/bin/hello'$EXEEXT'( |$)' tar.got
+  $EGREP '(^| )\./usr/share/doc/amhello/README( |$)' tar.got
+fi
+
+:
diff --git a/t/amhello-cflags.sh b/t/amhello-cflags.sh
new file mode 100755 (executable)
index 0000000..4132bc1
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test an example from the manual about the 'amhello' package:
+# using VPATH builds to configure the same package with different
+# options.
+
+am_create_testdir=empty
+required=gcc
+. ./defs || Exit 1
+
+cp "$am_docdir"/amhello-1.0.tar.gz . \
+  || fatal_ "cannot get amhello tarball"
+
+gzip -dc amhello-1.0.tar.gz | tar xf -
+cd amhello-1.0
+
+mkdir debug optim
+cd debug
+../configure CFLAGS='-g -O0'
+$MAKE
+ls -l . src # For debugging.
+cd ../optim
+../configure CFLAGS='-O3 -fomit-frame-pointer'
+$MAKE
+ls -l . src # For debugging.
+cd ..
+
+# Check that we have really compiled the objects with two different
+# configurations.
+for exeext in '' .exe :; do
+  test -f optim/src/hello$exeext && break
+  test "$exeext" = : && fatal_ "cannot determine extension of executables"
+done
+cmp optim/src/hello$exeext debug/src/hello$exeext && Exit 1
+
+:
diff --git a/t/amhello-cross-compile.sh b/t/amhello-cross-compile.sh
new file mode 100755 (executable)
index 0000000..b138d87
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test an example from the manual about the 'amhello' package:
+# cross-compiling a package from Linux/Unix to MinGW.
+
+am_create_testdir=empty
+required=i586-mingw32msvc-gcc
+. ./defs || Exit 1
+
+cp "$am_docdir"/amhello-1.0.tar.gz . \
+  || fatal_ "cannot get amhello tarball"
+
+host=i586-mingw32msvc
+build=`"$am_scriptdir"/config.guess` && test -n "$build" \
+  || fatal_ "cannot guess build platform"
+case $build in *mingw*) skip_ "build system is MinGW too";; esac
+
+gzip -dc amhello-1.0.tar.gz | tar xf -
+cd amhello-1.0
+
+./configure --build "$build" --host "$host" > stdout \
+  || { cat stdout ; Exit 1; }
+cat stdout
+grep '^checking for i586-mingw32msvc-strip\.\.\.' stdout
+grep '^checking for i586-mingw32msvc-gcc\.\.\.' stdout
+grep '^checking for suffix of executables\.\.\. \.exe *$' stdout
+grep '^checking for suffix of object files\.\.\. o *$' stdout
+grep '^checking whether i586-mingw32msvc-gcc accepts -g\.\.\. yes' stdout
+
+$MAKE
+
+cd src
+file hello.exe > whatis
+cat whatis
+$EGREP 'DOS|Win' whatis
+grep 'executable' whatis
+grep 'ELF' whatis && Exit 1
+
+:
diff --git a/t/aminit-moreargs-deprecation.sh b/t/aminit-moreargs-deprecation.sh
new file mode 100755 (executable)
index 0000000..ac91d1d
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake warns against old-style usages of AM_INIT_AUTOMAKE
+# (i.e., calls with two or three arguments).
+
+. ./defs || Exit 1
+
+warn_rx='AM_INIT_AUTOMAKE.* two-.* three-arguments form.*deprecated'
+
+cat > configure.ac <<'END'
+AC_INIT([Makefile.am])
+AM_INIT_AUTOMAKE([twoargs], [1.0])
+AC_CONFIG_FILES([Makefile])
+END
+
+$ACLOCAL
+
+do_check()
+{
+  rm -rf autom4te*.cache
+  for cmd in "$AUTOCONF" "$AUTOMAKE"; do
+    $cmd -Werror -Wnone -Wobsolete 2>stderr && { cat stderr; Exit 1; }
+    cat stderr >&2
+    grep "^configure\.ac:2:.*$warn_rx" stderr
+    $cmd -Werror -Wall -Wno-obsolete || Exit 1
+  done
+}
+
+: > Makefile.am
+do_check
+
+sed "/^AM_INIT_AUTOMAKE/s|)$|, [NODEFINE])|" configure.ac > t
+diff configure.ac t && fatal_ "failed to edit configure.ac"
+mv -f t configure.ac
+do_check
+
+:
diff --git a/t/ammissing.sh b/t/ammissing.sh
new file mode 100755 (executable)
index 0000000..aa28126
--- /dev/null
@@ -0,0 +1,25 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to see if aclocal correctly reports missing AM_ macro.
+
+. ./defs || Exit 1
+
+echo AM_ZARDOZ >> configure.ac
+
+$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr
+grep 'configure.ac:.*AM_ZARDOZ.*not found' stderr
diff --git a/t/amopt.sh b/t/amopt.sh
new file mode 100755 (executable)
index 0000000..7861184
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make Automake diagnose a conditional AUTOMAKE_OPTIONS.
+# Report from Bas Wijnen.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<END
+AM_CONDITIONAL([COND], [true])
+END
+
+mkdir sub
+
+cat >Makefile.am <<END
+if COND
+AUTOMAKE_OPTIONS = -Wall
+endif
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile\.am:2.*AUTOMAKE_OPTIONS.*conditional' stderr
+
+:
diff --git a/t/amopts-location.sh b/t/amopts-location.sh
new file mode 100755 (executable)
index 0000000..0219f18
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that errors about AUTOMAKE_OPTIONS refers to correct
+# locations.
+
+. ./defs || Exit 1
+
+cat > Makefile.am <<'END'
+# comment \
+# continued
+include Makefile0.am
+END
+
+cat > Makefile0.am <<'END'
+#1
+#2
+#3
+include Makefile1.am
+END
+
+cat > Makefile1.am <<'END'
+AUTOMAKE_OPTIONS = tar-pax
+# comment
+END
+
+cat > Makefile2.am <<'END'
+## automake comment
+bar:
+       :
+line = \
+continued
+AUTOMAKE_OPTIONS = tar-ustar
+END
+
+cat > Makefile3.am <<'END'
+quux = a
+AUTOMAKE_OPTIONS =
+quux += b
+AUTOMAKE_OPTIONS += tar-v7
+zardoz = 1
+END
+
+cat >>configure.ac <<'END'
+AC_CONFIG_FILES([Makefile2 Makefile3])
+END
+
+$ACLOCAL
+# Automake options 'tar-v7', 'tar-ustar' and 'tar-pax' can only be used
+# as argument to AM_INIT_AUTOMAKE, and not in AUTOMAKE_OPTIONS.
+AUTOMAKE_fails
+
+# Check that all the expected line numbers are correctly reported
+# in automake warning/error messages.
+grep '^Makefile1\.am:1:.*tar-pax' stderr
+grep '^Makefile2\.am:6:.*tar-ustar' stderr
+grep '^Makefile3\.am:2:.*tar-v7' stderr
+grep '^Makefile\.am:3:.*Makefile0\.am.*included from here' stderr
+grep '^Makefile0\.am:4:.*Makefile1\.am.*included from here' stderr
+
+# And also check that no botched line number is reported.
+cat stderr \
+  | grep -v '^Makefile\.am:3:'  \
+  | grep -v '^Makefile0\.am:4:' \
+  | grep -v '^Makefile1\.am:1:' \
+  | grep -v '^Makefile2\.am:6:' \
+  | grep -v '^Makefile3\.am:2:' \
+  | grep . && Exit 1
+
+:
diff --git a/t/amopts-variable-expansion.sh b/t/amopts-variable-expansion.sh
new file mode 100755 (executable)
index 0000000..8a035d1
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that AUTOMAKE_OPTIONS support variable expansion.
+
+. ./defs || Exit 1
+
+# We want complete control over automake options.
+AUTOMAKE=$am_original_AUTOMAKE
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([-Wall -Werror gnu])
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am <<'END'
+# The following should expand to '-Wnone -Wno-error foreign -Wportability'.
+AUTOMAKE_OPTIONS = $(foo) foreign
+AUTOMAKE_OPTIONS += ${bar}
+foo = $(foo1)
+foo1 = ${foo2}
+foo2 = -Wnone
+foo2 += $(foo3)
+foo3 = -Wno-error
+bar = -Wportability
+# This will give a warning with '-Wportability'.
+zardoz :=
+# This would give a warning with '-Woverride'.
+install:
+END
+
+$ACLOCAL
+AUTOMAKE_run
+grep '^Makefile\.am:.*:=.*not portable' stderr
+grep README stderr && Exit 1
+$EGREP '(install|override)' stderr && Exit 1
+
+:
diff --git a/t/amsubst.sh b/t/amsubst.sh
new file mode 100755 (executable)
index 0000000..b655ce4
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for _AM_SUBST_NOTMAKE.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([backslash], "\\")
+_AM_SUBST_NOTMAKE([backslash])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+test:
+       @echo $(backslash) @backslash@$$
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+# If _AM_SUBST_NOTMAKE is not honored, the backslash
+# variable will not be empty.
+$MAKE test | grep '^[$]$'
diff --git a/t/ansi2knr-no-more.sh b/t/ansi2knr-no-more.sh
new file mode 100755 (executable)
index 0000000..fb2e2a5
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that any attempt to use the obsolete de-ANSI-fication support
+# is diagnosed.
+
+. ./defs || Exit 1
+
+warn_rx='automatic de-ANSI-fication.*removed'
+
+echo AC_PROG_CC >> configure.ac
+$ACLOCAL
+mv aclocal.m4 aclocal.sav
+cp configure.ac configure.sav
+
+echo AM_C_PROTOTYPES >> configure.ac
+
+$ACLOCAL -Wnone 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep "^configure\\.ac:5:.*$warn_rx" stderr
+
+cat aclocal.sav "$am_automake_acdir"/protos.m4 > aclocal.m4
+$AUTOCONF -Wnone 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep "^configure\\.ac:5:.*$warn_rx" stderr
+
+for opt in ansi2knr lib/ansi2knr; do
+  # ansi2knr option in Makefile.am
+  cp configure.sav configure.ac
+  echo "AUTOMAKE_OPTIONS = $opt" > Makefile.am
+  rm -rf autom4te*.cache
+  AUTOMAKE_fails -Wnone
+  grep "^Makefile\.am:1:.*$warn_rx" stderr
+  # ansi2knr option in configure.ac
+  echo > Makefile.am # `echo', not `:', for Solaris /bin/sh.
+  sed "s|^\\(AM_INIT_AUTOMAKE\\).*|\1([$opt])|" configure.sav >configure.ac
+  cat configure.ac # For debugging.
+  rm -rf autom4te*.cache
+  AUTOMAKE_fails -Wnone
+  grep "^configure\\.ac:2:.*$warn_rx" stderr
+done
+
+:
diff --git a/t/ar-lib-w.sh b/t/ar-lib-w.sh
new file mode 100755 (executable)
index 0000000..3fcf779
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/ar-lib.sh"; then
+    echo "$0: will source $dir/t/ar-lib.sh"
+    . "$dir/t/ar-lib.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/ar-lib.sh'" >&2
+exit '99'
diff --git a/t/ar-lib.sh b/t/ar-lib.sh
new file mode 100755 (executable)
index 0000000..1ddec64
--- /dev/null
@@ -0,0 +1,113 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'ar-lib' wraps the Microsoft Library Manager (lib) correctly.
+
+am_create_testdir=empty
+required=xsi-lib-shell
+. ./defs || Exit 1
+
+get_shell_script ar-lib
+
+# Use a dummy lib, since lib isn't readily available on all systems.
+cat >lib <<'END'
+#! /bin/sh
+if test x"$2" = x-LIST && test x"$3" = xfake.lib; then
+  echo fake.obj
+elif test x"$2" = x-LIST && test x"$3" = xfake2.lib; then
+  printf "%s\n" "dir\\fake2.obj"
+else
+  printf "%s\n" "lib $*"
+fi
+END
+
+chmod +x ./lib
+
+# Check if ar-lib can create an archive with "cr".
+opts=`./ar-lib ./lib cr foo.lib foo.obj`
+test x"$opts" = x"lib -NOLOGO -OUT:foo.lib foo.obj"
+
+# Check if ar-lib can update an existing archive with "r".
+touch foo.lib
+opts=`./ar-lib ./lib r foo.lib foo.obj`
+test x"$opts" = x"lib -NOLOGO -OUT:foo.lib foo.lib foo.obj"
+
+# Check if ar-lib can update an existing archive with "q".
+opts=`./ar-lib ./lib q foo.lib foo.obj`
+test x"$opts" = x"lib -NOLOGO -OUT:foo.lib foo.lib foo.obj"
+
+# Check if ar-lib accepts "u" as a modifier.
+# NOTE: "u" should have an effect, but currently doesn't.
+opts=`./ar-lib ./lib ru foo.lib foo.obj`
+test x"$opts" = x"lib -NOLOGO -OUT:foo.lib foo.lib foo.obj"
+
+# Check if ar-lib accepts "s" as a modifier.
+opts=`./ar-lib ./lib rs foo.lib foo.obj`
+test x"$opts" = x"lib -NOLOGO -OUT:foo.lib foo.lib foo.obj"
+
+# Check if ar-lib accepts "S" as a modifier.
+opts=`./ar-lib ./lib rS foo.lib foo.obj`
+test x"$opts" = x"lib -NOLOGO -OUT:foo.lib foo.lib foo.obj"
+
+# Check if ar-lib passes on @FILE with "r"
+opts=`./ar-lib ./lib r foo.lib @list`
+test x"$opts" = x"lib -NOLOGO -OUT:foo.lib foo.lib @list"
+
+# Check if ar-lib can delete a member from an archive with "d".
+opts=`./ar-lib ./lib d foo.lib foo.obj`
+test x"$opts" = x"lib -NOLOGO -REMOVE:foo.obj foo.lib"
+
+# Check if ar-lib can delete members in an @FILE.
+echo foo.obj > foolist
+opts=`./ar-lib ./lib d foo.lib @foolist`
+test x"$opts" = x"lib -NOLOGO -REMOVE:foo.obj foo.lib"
+
+# Check if ar-lib can list archive members with "t".
+opts=`./ar-lib ./lib t foo.lib`
+test x"$opts" = x"lib -NOLOGO -LIST foo.lib"
+
+# Check if ar-lib accepts "v" as a modifier.
+# NOTE: "v" should have an effect, but currently doesn't.
+opts=`./ar-lib ./lib tv foo.lib`
+test x"$opts" = x"lib -NOLOGO -LIST foo.lib"
+
+# Check if ar-lib can extract archive members with "x".
+touch fake.lib
+opts=`./ar-lib ./lib x fake.lib`
+test x"$opts" = x"lib -NOLOGO -EXTRACT:fake.obj fake.lib"
+
+# Check if ar-lib can extract specified archive members with "x".
+opts=`./ar-lib ./lib x foo.lib foo.obj`
+test x"$opts" = x"lib -NOLOGO -EXTRACT:foo.obj foo.lib"
+
+# Check if ar-lib can extract members in an @FILE.
+opts=`./ar-lib ./lib x foo.lib @foolist`
+test x"$opts" = x"lib -NOLOGO -EXTRACT:foo.obj foo.lib"
+
+# Check if ar-lib passes -lib and -LTCG through to the wrappee.
+opts=`./ar-lib ./lib -lib -LTCG x foo.lib foo.obj`
+test x"$opts" = x"lib -lib -LTCG -NOLOGO -EXTRACT:foo.obj foo.lib"
+
+# Check if ar-lib can extract backslashed members.
+touch fake2.lib
+opts=`./ar-lib ./lib x fake2.lib`
+test x"$opts" = x"lib -NOLOGO -EXTRACT:dir\\fake2.obj fake2.lib"
+
+# Check if ar-lib accepts "s" as an action.
+opts=`./ar-lib ./lib s foo.lib`
+test x"$opts" = x
+
+:
diff --git a/t/ar-lib2.sh b/t/ar-lib2.sh
new file mode 100755 (executable)
index 0000000..7d7e9b5
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if AM_PROG_AR installs ar-lib.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = wish
+wish_SOURCES = a.c
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+# Make sure ar-lib is installed, and that Automake says so.
+grep '^configure\.ac:.*install.*ar-lib' stderr
+test -f ar-lib
+
+:
diff --git a/t/ar-lib3.sh b/t/ar-lib3.sh
new file mode 100755 (executable)
index 0000000..02696f6
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if lib_LIBRARIES requests AM_PROG_AR.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+END
+
+cat > Makefile.am << 'END'
+lib_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+
+grep 'requires.*AM_PROG_AR' stderr
+
+cat >> configure.ac << 'END'
+AM_PROG_AR
+END
+
+rm -rf autom4te*.cache
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+:
diff --git a/t/ar-lib4.sh b/t/ar-lib4.sh
new file mode 100755 (executable)
index 0000000..d1be2eb
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if lib_LTLIBRARIES requests AM_PROG_AR.
+
+required=libtoolize
+. ./defs || Exit 1
+
+cp configure.ac X
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.c
+END
+
+libtoolize
+$ACLOCAL
+AUTOMAKE_fails
+
+grep 'requires.*AM_PROG_AR' stderr
+
+cp X configure.ac
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+:
diff --git a/t/ar-lib5a.sh b/t/ar-lib5a.sh
new file mode 100755 (executable)
index 0000000..1987936
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if AM_PROG_AR triggers the use of the ar-lib script.
+# This test requires Microsoft lib.
+# Keep this test in sync with sister test 'ar-lib5b.test'.
+
+required=lib
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([auxdir])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+# We want to test the content of am_cv_ar_interface in the Makefile.
+AC_SUBST([am_cv_ar_interface])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LIBRARIES = libwish.a
+libwish_a_SOURCES = wish.c
+
+check-local:
+       test x'$(am_cv_ar_interface)' = x'lib'
+       test -f ar-lib-worked
+       test -f libwish.a
+MOSTLYCLEANFILES = ar-lib-worked
+END
+
+cat > wish.c << 'END'
+int wish(void) { return 0; }
+END
+
+mkdir auxdir
+cat - "$am_scriptdir/ar-lib" > auxdir/ar-lib << 'END'
+#! /bin/sh
+:> ar-lib-worked
+END
+chmod +x auxdir/ar-lib
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Sanity check: test that it is ok to use 'am_cv_ar_interface' as we do.
+$FGREP 'am_cv_ar_interface=' configure
+
+./configure AR=lib RANLIB=:
+
+$MAKE check
+$MAKE distcheck DISTCHECK_CONFIGURE_FLAGS='AR=lib RANLIB=:'
+
+:
diff --git a/t/ar-lib5b.sh b/t/ar-lib5b.sh
new file mode 100755 (executable)
index 0000000..2fb0cf4
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if AM_PROG_AR triggers the use of the ar-lib script.
+# This test does not require Microsoft lib.
+# Keep this test in sync with sister test 'ar-lib5a.test'.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([auxdir])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+# We want to test the content of am_cv_ar_interface in the Makefile.
+AC_SUBST([am_cv_ar_interface])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LIBRARIES = libwish.a
+libwish_a_SOURCES = wish.c
+
+check-local:
+       test x'$(am_cv_ar_interface)' = x'lib'
+       test -f ar-lib-worked
+MOSTLYCLEANFILES = ar-lib-worked
+END
+
+cat > wish.c << 'END'
+int wish(void) { return 0; }
+END
+
+mkdir auxdir
+cat > auxdir/ar-lib << 'END'
+#! /bin/sh
+:> ar-lib-worked
+END
+chmod +x auxdir/ar-lib
+
+# Let's fake microsoft lib.
+mkdir bin
+cat > bin/lib << 'END'
+#! /bin/sh
+echo lib command line: $* >&2 # For debugging.
+case " $* " in
+  # The '-OUT:' option is used by tests in configure.  So don't create
+  # the 'ar-lib-worked' file here, as that might cause spurious passes
+  # of this test; but don't fail either, as that would confuse said
+  # configure tests.
+  *' -OUT:'*) exit 0;;
+  # This means that $* looks like a command-line for 'ar'.  We have to
+  # exit with failure here, to accommodate the two following ortoghonal
+  # scenarios:
+  #  1. when 'lib' is tested by configure, this will tell that it does
+  #     not use the ar(1) interface, so that the 'ar-lib' script will
+  #     get involved;
+  #  2. when 'lib' is called by the Makefile, an ar-style command line
+  #     passed to it would mean that the 'ar-lib' script has failed to
+  #     properly munge the command line, or hasn't been invoked to do so.
+  *\ c*) exit 1;;
+  # Assume everything else is OK.
+  *) : > ar-lib-worked;;
+esac
+END
+chmod +x bin/lib
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Sanity check: test that it is ok to use 'am_cv_ar_interface' as we do.
+$FGREP 'am_cv_ar_interface=' configure
+
+./configure AR=lib RANLIB=:
+
+$MAKE check
+$MAKE distcheck DISTCHECK_CONFIGURE_FLAGS="AR=lib RANLIB=:"
+
+:
diff --git a/t/ar-lib6a.sh b/t/ar-lib6a.sh
new file mode 100755 (executable)
index 0000000..be6afcd
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test AM_PROG_AR ordering requirements
+# Keep this test in sync with sister test 'ar-lib6b.test'.
+
+required=libtoolize
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+m4_ifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL])
+AM_PROG_AR
+END
+
+libtoolize
+$ACLOCAL
+$AUTOCONF 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+
+$EGREP '(AC_PROG_LIBTOOL|LT_INIT).*before.*AM_PROG_AR' stderr
+
+:
diff --git a/t/ar-lib6b.sh b/t/ar-lib6b.sh
new file mode 100755 (executable)
index 0000000..54c0222
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test AM_PROG_AR ordering requirements for older Libtools
+# Keep this test in sync with sister test 'ar-lib6a.test'.
+
+required=libtoolize
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AM_PROG_AR
+END
+
+libtoolize
+$ACLOCAL
+$AUTOCONF 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+
+$EGREP 'AC_PROG_LIBTOOL.*before.*AM_PROG_AR' stderr
+
+:
diff --git a/t/ar-lib7.sh b/t/ar-lib7.sh
new file mode 100755 (executable)
index 0000000..34e6c6e
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if automake warns if ar-lib is missing when AM_PROG_AR is used.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_AR
+END
+
+:> Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+
+grep '^configure\.ac:.*ar-lib.*not found' stderr
+
+$AUTOMAKE --add-missing
+
+:
diff --git a/t/ar.sh b/t/ar.sh
new file mode 100755 (executable)
index 0000000..b8d9901
--- /dev/null
+++ b/t/ar.sh
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that AR, ARFLAGS, and RANLIB can be substituted from configure.ac.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_AR
+AC_SUBST([AR], ['echo it works'])
+AC_SUBST([ARFLAGS], ['>'])
+AC_SUBST([RANLIB], ['echo really works >>'])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LIBRARIES = libfoo.a
+libfoo_a_SOURCES =
+END
+
+:> ar-lib
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
+grep 'it works' libfoo.a
+grep 'really works' libfoo.a
+
+:
diff --git a/t/ar2.sh b/t/ar2.sh
new file mode 100755 (executable)
index 0000000..c71afea
--- /dev/null
+++ b/t/ar2.sh
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure AR and ARFLAGS are defined for EXTRA_LIBRARIES.
+# Report from Kevin Ryde.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+EXTRA_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+END
+
+$ACLOCAL
+$AUTOMAKE -Wno-extra-portability
+grep '^ARFLAGS =' Makefile.in
+grep '^AR =' Makefile.in
+
+:
diff --git a/t/ar3.sh b/t/ar3.sh
new file mode 100755 (executable)
index 0000000..ba0b4b7
--- /dev/null
+++ b/t/ar3.sh
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that AR, ARFLAGS, etc. works also when the macro AM_PROG_AR
+# is used.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+EXTRA_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+END
+
+: > ar-lib
+
+$ACLOCAL
+$AUTOMAKE
+$EGREP '^ARFLAGS =' Makefile.in
+$EGREP '^AR =' Makefile.in
+
+:
diff --git a/t/ar4.sh b/t/ar4.sh
new file mode 100755 (executable)
index 0000000..424a776
--- /dev/null
+++ b/t/ar4.sh
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if configure bails out if $AR does not work and AM_PROG_AR is used.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_AR
+END
+
+$ACLOCAL
+$AUTOCONF
+
+st=0; ./configure AR=/bin/false >stdout 2>stderr || st=$?
+cat stdout
+cat stderr >&2
+test $st -eq 1
+
+grep '^checking.* archiver .*interface.*\.\.\. unknown' stdout
+grep '^configure: error: could not determine /bin/false interface' stderr
+ls *conftest* && Exit 1
+
+:
diff --git a/t/ar5.sh b/t/ar5.sh
new file mode 100755 (executable)
index 0000000..711fad6
--- /dev/null
+++ b/t/ar5.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the optional argument of AM_PROG_AR.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_AR([
+  echo spy > bad-archiver-interface-detected
+  AC_MSG_CHECKING([for something else])
+  AC_MSG_RESULT([found it])
+  echo Grep This
+])
+END
+
+$ACLOCAL
+$AUTOCONF
+
+./configure AR=/bin/false >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^checking.* archiver .*interface.*\.\.\. unknown$' stdout
+grep '^checking for something else\.\.\. found it$' stdout
+grep '^Grep This$' stdout
+test -f bad-archiver-interface-detected
+
+:
diff --git a/t/asm.sh b/t/asm.sh
new file mode 100755 (executable)
index 0000000..b9a958d
--- /dev/null
+++ b/t/asm.sh
@@ -0,0 +1,100 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of basic assembly functionality.
+# Keep this in sync with sister tests asm2.test and asm3.test.
+
+. ./defs || Exit 1
+
+mv configure.ac configure.stub
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = maude
+maude_SOURCES = maude.s
+END
+
+echo '*** Try 1 -- should fail because we need CC and CCAS ***'
+cat configure.stub - > configure.ac << 'END'
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCAS.* undefined' stderr
+grep 'define .*CCAS.* add .*AM_PROG_AS' stderr
+
+# On fast machines the autom4te.cache created during the above run of
+# $AUTOMAKE is likely to have the same time stamp as the configure.ac
+# created below; thus causing traces for the old configure.ac to be
+# used.  We could do '$sleep', but it's faster to erase the
+# directory.  (Erase autom4te*.cache, not autom4te.cache, because some
+# bogus installations of Autoconf use a versioned cache.)
+rm -rf autom4te*.cache
+
+echo '*** Try 2 -- we still need CCAS ***'
+cat configure.stub - > configure.ac << 'END'
+AC_PROG_CC
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCAS.* undefined' stderr
+grep 'define .*CCAS.* add .*AM_PROG_AS' stderr
+
+rm -rf autom4te*.cache
+
+echo '*** Try 3 -- we need CCASFLAGS ***'
+cat configure.stub - > configure.ac << 'END'
+CCAS='$(CC)'
+AC_SUBST([CCAS])
+AC_PROG_CC
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCASFLAGS.* undefined' stderr
+grep 'define .*CCASFLAGS.* add .*AM_PROG_AS' stderr
+
+rm -rf autom4te*.cache
+
+echo '*** Try 4 -- we have everything needed, expect success ***'
+cat configure.stub - > configure.ac << 'END'
+CCAS='$(CC)'
+AC_SUBST([CCAS])
+AC_PROG_CC
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+rm -rf autom4te*.cache
+
+echo '*** Try 5 -- we have everything needed, expect success ***'
+cat configure.stub - > configure.ac << 'END'
+AM_PROG_AS
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/asm2.sh b/t/asm2.sh
new file mode 100755 (executable)
index 0000000..737d46d
--- /dev/null
+++ b/t/asm2.sh
@@ -0,0 +1,116 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of basic preprocessed assembly functionality.
+# Keep this in sync with sister tests asm.test and asm3.test.
+
+. ./defs || Exit 1
+
+mv configure.ac configure.stub
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = maude
+maude_SOURCES = maude.S
+END
+
+echo '*** Try 1 -- should fail because we need CC and CCAS ***'
+cat configure.stub - > configure.ac << 'END'
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCAS.* undefined' stderr
+grep 'define .*CCAS.* add .*AM_PROG_AS' stderr
+
+# On fast machines the autom4te.cache created during the above run of
+# $AUTOMAKE is likely to have the same time stamp as the configure.ac
+# created below; thus causing traces for the old configure.ac to be
+# used.  We could do '$sleep', but it's faster to erase the
+# directory.  (Erase autom4te*.cache, not autom4te.cache, because some
+# bogus installations of Autoconf use a versioned cache.)
+rm -rf autom4te*.cache
+
+echo '*** Try 2 -- we still need CCAS ***'
+cat configure.stub - > configure.ac << 'END'
+AC_PROG_CC
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCAS.* undefined' stderr
+grep 'define .*CCAS.* add .*AM_PROG_AS' stderr
+
+rm -rf autom4te*.cache
+
+echo '*** Try 3 -- we need CCASFLAGS ***'
+cat configure.stub - > configure.ac << 'END'
+CCAS='$(CC)'
+AC_SUBST([CCAS])
+AC_PROG_CC
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCASFLAGS.* undefined' stderr
+grep 'define .*CCASFLAGS.* add .*AM_PROG_AS' stderr
+
+rm -rf autom4te*.cache
+
+echo '*** Try 4 -- we need dependency tracking. ***'
+cat configure.stub - > configure.ac << 'END'
+CCAS='$(CC)'
+AC_SUBST([CCAS])
+AC_PROG_CC
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep ' add .*AM_PROG_AS' stderr
+
+rm -rf autom4te*.cache
+
+echo '*** Try 5 -- we have everything needed, expect success. ***'
+cat configure.stub - > configure.ac << 'END'
+CCAS='$(CC)'
+AC_SUBST([CCAS])
+AC_PROG_CC
+_AM_DEPENDENCIES([CCAS])
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+rm -rf autom4te*.cache
+
+echo '*** Try 6 -- we have everything needed, expect success. ***'
+cat configure.stub - > configure.ac << 'END'
+AM_PROG_AS
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/asm3.sh b/t/asm3.sh
new file mode 100755 (executable)
index 0000000..f7f835a
--- /dev/null
+++ b/t/asm3.sh
@@ -0,0 +1,116 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of basic preprocessed assembly functionality with extension .sx.
+# Keep this in sync with sister tests asm.test and asm2.test.
+
+. ./defs || Exit 1
+
+mv configure.ac configure.stub
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = maude
+maude_SOURCES = maude.sx
+END
+
+echo '*** Try 1 -- should fail because we need CC and CCAS ***'
+cat configure.stub - > configure.ac << 'END'
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCAS.* undefined' stderr
+grep 'define .*CCAS.* add .*AM_PROG_AS' stderr
+
+# On fast machines the autom4te.cache created during the above run of
+# $AUTOMAKE is likely to have the same time stamp as the configure.ac
+# created below; thus causing traces for the old configure.ac to be
+# used.  We could do '$sleep', but it's faster to erase the
+# directory.  (Erase autom4te*.cache, not autom4te.cache, because some
+# bogus installations of Autoconf use a versioned cache.)
+rm -rf autom4te*.cache
+
+echo '*** Try 2 -- we still need CCAS ***'
+cat configure.stub - > configure.ac << 'END'
+AC_PROG_CC
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCAS.* undefined' stderr
+grep 'define .*CCAS.* add .*AM_PROG_AS' stderr
+
+rm -rf autom4te*.cache
+
+echo '*** Try 3 -- we need CCASFLAGS ***'
+cat configure.stub - > configure.ac << 'END'
+CCAS='$(CC)'
+AC_SUBST([CCAS])
+AC_PROG_CC
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Aa]ssembler source.*CCASFLAGS.* undefined' stderr
+grep 'define .*CCASFLAGS.* add .*AM_PROG_AS' stderr
+
+rm -rf autom4te*.cache
+
+echo '*** Try 4 -- we need dependency tracking. ***'
+cat configure.stub - > configure.ac << 'END'
+CCAS='$(CC)'
+AC_SUBST([CCAS])
+AC_PROG_CC
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep ' add .*AM_PROG_AS' stderr
+
+rm -rf autom4te*.cache
+
+echo '*** Try 5 -- we have everything needed, expect success. ***'
+cat configure.stub - > configure.ac << 'END'
+CCAS='$(CC)'
+AC_SUBST([CCAS])
+AC_PROG_CC
+_AM_DEPENDENCIES([CCAS])
+AC_SUBST([CCASFLAGS])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+rm -rf autom4te*.cache
+
+echo '*** Try 6 -- we have everything needed, expect success. ***'
+cat configure.stub - > configure.ac << 'END'
+AM_PROG_AS
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/autodist-acconfig-no-subdir.sh b/t/autodist-acconfig-no-subdir.sh
new file mode 100755 (executable)
index 0000000..d4ad1d9
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that 'acconfig.h' is *not* automatically distributed when
+# placed in a subdirectory.
+# Related to automake bug#7819.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+sub/acconfig.h:
+       echo target $@ should not be built >&2; exit 1
+check-local: distdir
+       ls -l $(distdir)/sub
+       test ! -f $(distdir)/sub/acconfig.h
+END
+
+mkdir sub
+
+cat > sub/Makefile.am <<'END'
+acconfig.h:
+       echo target $@ should not be built >&2; exit 1
+check-local:
+       echo $(DISTFILES) | grep 'acconfig\.h' && exit 1; :
+       echo $(DIST_COMMON) | grep 'acconfig\.h' && exit 1; :
+END
+
+: > sub/acconfig.h
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE check
+
+:
diff --git a/t/autodist-acconfig.sh b/t/autodist-acconfig.sh
new file mode 100755 (executable)
index 0000000..18b280c
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that 'acconfig.h' is automatically distributed if it exists
+# (at automake runtime).
+# Related to automake bug#7819.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+.PHONY: test
+test: distdir
+       ls -l $(distdir)
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]acconfig\.h '
+       test -f $(distdir)/acconfig.h
+END
+
+: > acconfig.h
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE test
+
+:
diff --git a/t/autodist-aclocal-m4.sh b/t/autodist-aclocal-m4.sh
new file mode 100755 (executable)
index 0000000..6108f57
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that 'aclocal.m4' is not automatically distributed if not
+# required to build 'configure'.  This is *really* a corner-case
+# check, and the behaviour it checks is not documented either, so
+# if that behaviour is deliberately changed in the future, just
+# remove this test.
+# Related to automake bug#7819.
+
+. ./defs || Exit 1
+
+{ echo 'm4_include([defs.m4])'
+  cat configure.ac
+  echo 'AC_OUTPUT'
+} > t
+mv -f t configure.ac
+
+cat > Makefile.am <<'END'
+.PHONY: test
+test: distdir
+       ls -l $(distdir)
+       test ! -f $(distdir)/aclocal.m4
+       echo $(DISTFILES) | grep 'aclocal\.m4' && exit 1; :
+       echo $(DIST_COMMON) | grep 'aclocal\.m4' && exit 1; :
+check-local: test
+END
+
+: > defs.m4
+$ACLOCAL
+mv -f aclocal.m4 defs.m4
+
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE test
+$MAKE distcheck
+
+:
diff --git a/t/autodist-config-headers.sh b/t/autodist-config-headers.sh
new file mode 100755 (executable)
index 0000000..65888f8
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that config.h.bot and config.h.top are automatically
+# distributed if the AC_CONFIG_HADERS macro is used and they
+# exist at automake runtime.
+# Related to automake bug#7819.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_CONFIG_HEADERS([config.h sub/config.h cfg2.h:conf2.hin])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+.PHONY: test
+test: distdir
+       ls -l $(distdir) $(distdir)/sub
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]config\.h\.bot '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]config\.h\.top '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]cfg2\.h\.bot '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]cfg2\.h\.top '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]sub/config\.h\.bot '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]sub/config\.h\.top '
+       test -f $(distdir)/config.h.bot
+       test -f $(distdir)/config.h.top
+       test -f $(distdir)/cfg2.h.bot
+       test -f $(distdir)/cfg2.h.top
+       test -f $(distdir)/sub/config.h.bot
+       test -f $(distdir)/sub/config.h.top
+END
+
+mkdir sub
+touch config.h.in config.h.top config.h.bot \
+      conf2.hin cfg2.h.top cfg2.h.bot \
+      sub/config.h.in sub/config.h.top sub/config.h.bot
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE test
+
+:
diff --git a/t/autodist-configure-no-subdir.sh b/t/autodist-configure-no-subdir.sh
new file mode 100755 (executable)
index 0000000..cc53caf
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that 'configure', 'configure.ac' and 'configure.in' are *not*
+# automatically distributed when placed in a subdirectory.
+# Related to automake bug#7819.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+dontbuild = echo target $@ should not be built >&2; exit 1
+sub/configure:
+       $(dontbuild)
+sub/configure.ac:
+       $(dontbuild)
+sub/configure.in:
+       $(dontbuild)
+check-local: distdir
+       ls -l $(distdir)/sub
+       test ! -f $(distdir)/sub/configure
+       test ! -f $(distdir)/sub/configure.in
+       test ! -f $(distdir)/sub/configure.ac
+END
+
+mkdir sub
+
+cat > sub/Makefile.am <<'END'
+dontbuild = echo target $@ should not be built >&2; exit 1
+configure:
+       $(dontbuild)
+configure.ac:
+       $(dontbuild)
+configure.in:
+       $(dontbuild)
+check-local:
+       echo $(DISTFILES) | grep 'configure' && exit 1; :
+       echo $(DIST_COMMON) | grep 'configure' && exit 1; :
+END
+
+: > sub/configure.ac
+: > sub/configure.in
+: > sub/configure
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE check
+
+:
diff --git a/t/autodist-no-duplicate.sh b/t/autodist-no-duplicate.sh
new file mode 100755 (executable)
index 0000000..90a2c7d
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that there are no duplicates in the list of files automatically
+# distributed by automake.
+
+. ./defs || Exit 1
+
+re='Files .*automatically distributed.*if found'
+
+# The automake manual states that the list of automatically-distributed
+# files should be given by 'automake --help'.
+
+list1=`$AUTOMAKE --help \
+        | sed -n "/^$re.*always/,/^ *$/p" \
+        | sed 1d`
+list1=`echo $list1`
+
+list2=`$AUTOMAKE --help \
+        | sed -n "/^$re.*under certain conditions/,/^ *$/p" \
+        | sed 1d`
+list2=`echo $list2`
+
+test -n "$list1"
+test -n "$list2"
+
+st=0
+for i in 1 2; do
+  eval list=\${list$i}
+  for f in $list; do echo $f; done | sort > files$i.lst
+  uniq files$i.lst > files$i.uniq
+  cat files$i.lst
+  cat files$i.uniq
+  diff files$i.lst files$i.uniq || st=1
+done
+
+Exit $st
diff --git a/t/autodist-stamp-vti.sh b/t/autodist-stamp-vti.sh
new file mode 100755 (executable)
index 0000000..4db1f14
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that 'stamp-vti' is automatically distributed when info_TEXINFOS
+# and version.texi are involved.
+# Related to automake bug#7819.
+
+required=makeinfo
+. ./defs || Exit 1
+
+cat >> configure.ac << END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = foo.texi
+.PHONY: test
+test: all distdir
+       ls -l $(distdir)
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]stamp-vti '
+       test -f $(distdir)/stamp-vti
+END
+
+cat > foo.texi << 'END'
+\input texinfo
+@setfilename foo.info
+@settitle Zardoz
+@node Top
+@include version.texi
+bar baz quux
+@bye
+END
+
+# Required when using Texinfo.
+: > texinfo.tex
+cp "$am_scriptdir"/mdate-sh .
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE test
+
+:
diff --git a/t/autodist-subdir.sh b/t/autodist-subdir.sh
new file mode 100755 (executable)
index 0000000..5e1f044
--- /dev/null
@@ -0,0 +1,120 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake really automatically distributes all the files
+# it advertises to do, even when in subdirectories.
+#
+# This behavior might be suboptimal, but it has been in place for quite
+# a long time, and it would be risky to change it now.  See also the
+# discussion of automake bug#7819:
+#  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7819>
+#
+# Keep this test in sync with sister test 'autodist.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+
+# The automake manual states that the list of automatically-distributed
+# files should be given by 'automake --help'.
+list=`$AUTOMAKE --help \
+        | sed -n '/^Files.*automatically distributed.*if found.*always/,/^ *$/p' \
+        | sed 1d`
+# Normalize whitespace, just in case.
+list=`echo $list`
+
+test -n "$list"
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+check-local:
+## For debugging.
+       @echo DIST_COMMON:
+       @for f in $(DIST_COMMON); do echo "  $$f"; done
+       @echo DISTDIR:
+       @ls -l $(distdir) | sed 's/^/  /'
+## Now the checks.
+       @for f in $(autodist_list); do \
+         echo "file: sub/$$f"; \
+         test -f $(distdir)/sub/$$f \
+           || { echo $$f: distdir fail >&2; exit 1; }; \
+       done
+END
+
+mkdir sub
+
+cat > sub/Makefile.am <<'END'
+include distfiles.am
+check-local:
+## For debugging.
+       @echo DIST_COMMON:
+       @for f in $(DIST_COMMON); do echo "  $$f"; done
+       @echo DISTDIR:
+       @ls -l $(distdir) | sed 's/^/  /'
+## Now the checks.
+       @for f in $(autodist_list); do \
+         echo "file: $$f"; \
+## Some filenames might contain dots, but this won't cause spurious
+## failures, and "spurious successes" are so unlikely that they're
+## not worth worrying about.
+         echo ' ' $(DIST_COMMON) ' ' | grep "[ /]$$f " >/dev/null \
+           || { echo $$f: distcom fail >&2; exit 1; }; \
+       done
+END
+
+: First try listing the automatically-distributed files in proper
+: targets in Makefile.am
+
+echo "MAINTAINERCLEANFILES = $list" > sub/distfiles.am
+for f in $list; do echo "$f :; touch $f"; done >> sub/distfiles.am
+
+cat sub/distfiles.am # For debugging.
+
+$AUTOMAKE -a
+
+./configure
+
+$MAKE distdir
+autodist_list="$list" $MAKE check
+
+$MAKE maintainer-clean
+test ! -f sub/README    # Sanity check.
+rm -rf $me-1.0          # Remove $(distdir).
+
+: Now try creating the automatically-distributed files before
+: running automake.
+
+: > sub/distfiles.am
+for f in $list; do
+  echo dummy > sub/$f
+done
+
+ls -l # For debugging.
+
+$AUTOMAKE
+
+./configure
+
+$MAKE distdir
+autodist_list="$list" $MAKE check
+
+:
diff --git a/t/autodist.sh b/t/autodist.sh
new file mode 100755 (executable)
index 0000000..e6435c5
--- /dev/null
@@ -0,0 +1,103 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake really automatically distributes all the files
+# it advertises to do.
+# Related to automake bug#7819.
+# Keep this test in sync with sister test 'autodist-subdir.test'.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+
+# The automake manual states that the list of automatically-distributed
+# files should be given by 'automake --help'.
+list=`$AUTOMAKE --help \
+        | sed -n '/^Files.*automatically distributed.*if found.*always/,/^ *$/p' \
+        | sed 1d`
+# Normalize whitespace, just in case.
+list=`echo $list`
+
+test -n "$list"
+
+cat > Makefile.am <<'END'
+include distfiles.am
+check-local:
+## For debugging.
+       @echo DIST_COMMON:
+       @for f in $(DIST_COMMON); do echo "  $$f"; done
+       @echo DISTDIR:
+       @ls -l $(distdir) | sed 's/^/  /'
+## Now the checks.
+       @for f in $(autodist_list); do \
+         echo "file: $$f"; \
+         test -f $(distdir)/$$f \
+           || { echo $$f: distdir fail >&2; exit 1; }; \
+## Some filenames might contain dots, but this won't cause spurious
+## failures, and "spurious successes" are so unlikely that they're
+## not worth worrying about.
+         echo ' ' $(DIST_COMMON) ' ' | grep "[ /]$$f " >/dev/null \
+           || { echo $$f: distcom fail >&2; exit 1; }; \
+       done
+END
+
+: First try listing the automatically-distributed files in proper
+: targets in Makefile.am
+
+echo "MAINTAINERCLEANFILES = $list" > distfiles.am
+for f in $list; do echo "$f :; touch $f"; done >> distfiles.am
+
+cat distfiles.am # For debugging.
+
+$AUTOMAKE -a
+
+./configure
+
+$MAKE distdir
+autodist_list="$list" $MAKE check
+
+$MAKE maintainer-clean
+test ! -f README        # Sanity check.
+rm -rf $me-1.0          # Remove $(distdir).
+
+: Now try creating the automatically-distributed files before
+: running automake.
+
+: > distfiles.am
+for f in $list; do
+  echo dummy > $f
+done
+
+ls -l # For debugging.
+
+$AUTOMAKE
+
+./configure
+
+$MAKE distdir
+autodist_list="$list" $MAKE check
+
+:
diff --git a/t/autohdr.sh b/t/autohdr.sh
new file mode 100755 (executable)
index 0000000..bef7027
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that autoheaders works, despite our AC_CONFIG_HEADERS hack.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_CONFIG_HEADERS([thisfile.h])
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOHEADER
+
+test -f thisfile.h.in
diff --git a/t/autohdr2.sh b/t/autohdr2.sh
new file mode 100755 (executable)
index 0000000..6f5415e
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that autoheaders works, despite our AC_CONFIG_HEADERS hack.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AM_CONFIG_HEADER([thisfile.h])
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOHEADER
+
+test -f thisfile.h.in
diff --git a/t/autohdr3.sh b/t/autohdr3.sh
new file mode 100755 (executable)
index 0000000..ad55130
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check rebuild rules for autoheader.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+m4_include([foo.m4])
+AC_CONFIG_HEADERS([config.h:config.hin])
+AC_OUTPUT
+EOF
+
+: > foo.m4
+
+cat > Makefile.am <<'END'
+.PHONY: test
+check-local: test
+test: all
+       cat $(srcdir)/config.hin ;: For debugging.
+       cat config.h             ;: Likewise.
+       grep '#.*GREPME' $(srcdir)/config.hin
+       grep '#.*define.*GREPME' config.h
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE
+
+./configure
+$MAKE
+
+$sleep
+echo 'AC_DEFINE([GREPME], 1, [Doc for GREPME])' > foo.m4
+
+$MAKE test
+$MAKE distcheck
+
+:
diff --git a/t/autohdr4.sh b/t/autohdr4.sh
new file mode 100755 (executable)
index 0000000..9acbab1
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check rebuild rules for AC_CONFIG_HEADERS.
+# (This should also work without GNU Make.)
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_PROG_CC
+AC_SUBST([BOT], [bot])
+AC_CONFIG_HEADERS([defs.h config.h:sub1/config.top:sub2/config.${BOT}],,
+                  [BOT=$BOT])
+AC_CONFIG_FILES([sub3/Makefile])
+AC_OUTPUT
+EOF
+
+mkdir sub1 sub2 sub3
+
+: > sub1/config.top
+echo '#define NAME "grepme1"' >sub2/config.bot
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub3
+.PHONY: test-prog-updated
+test-prog-updated:
+       stat older sub3/run$(EXEEXT) || : For debugging.
+       test `ls -t older sub3/run$(EXEEXT) | sed 1q` = sub3/run$(EXEEXT)
+END
+
+cat > sub3/Makefile.am <<'END'
+noinst_PROGRAMS = run
+END
+
+cat >sub3/run.c <<'EOF'
+#include <defs.h>
+#include <config.h>
+#include <stdio.h>
+
+int main (void)
+{
+  puts (NAME); /* from config.h */
+  puts (PACKAGE); /* from defs.h */
+}
+EOF
+
+
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE
+
+# Do not reject slow dependency extractors: we need dependency tracking.
+./configure --enable-dependency-tracking
+$MAKE
+# Sanity check.
+cross_compiling || { sub3/run | grep grepme1; }
+
+: > older
+$sleep
+echo '#define NAME "grepme2"' > sub2/config.bot
+$MAKE
+cross_compiling || { sub3/run | grep grepme2; }
+$MAKE test-prog-updated
+
+$MAKE distcheck
+
+:
diff --git a/t/autohdrdry.sh b/t/autohdrdry.sh
new file mode 100755 (executable)
index 0000000..9df36f1
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Removal recovery rules for AC_CONFIG_HEADERS should not remove files
+# with 'make -n'.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_CONFIG_HEADERS([config.h])
+AC_OUTPUT
+EOF
+
+: >Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE
+
+./configure
+$MAKE
+
+rm -f config.h
+$MAKE -n
+test -f stamp-h1
+test ! -f config.h
+
+:
diff --git a/t/automake-cmdline.tap b/t/automake-cmdline.tap
new file mode 100755 (executable)
index 0000000..72c559a
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test Automake's command-line options.
+
+. ./defs || Exit 1
+
+plan_ 17
+
+# Usage: bad_cmdline DESCRIPTION REGEX-FOR-STDERR [ARGS-FOR-AUTOMAKE...]
+do_check ()
+{
+  test $# -ge 3 || fatal_ "do_check: invalid usage"
+  desc=$1; shift
+  regex=$1; shift
+  AUTOMAKE_fails -d "$desc (run)" -- "$@"
+  command_ok_ "$desc (stderr)" grep "$regex" stderr
+}
+
+do_check 'invalid long option' 'unrecognized option.*--voo' --voo
+
+# Older perl has a buggy Getopt::Long which makes this fail.
+if $PERL -e 'require 5.8.2;'; then
+  do_check "list of options terminated by '--'" \
+           'input file.*--voo' -- --voo
+else
+  skip_row_ 2 -r "older perl with buggy Getopt::Long"
+fi
+
+do_check "empty argument" \
+         'empty argument' ''
+
+do_check "missing argument for long option" \
+         'option.*-W.*requires an argument' -W
+
+do_check "missing argument for short option" \
+         'option.*--warnings.*requires an argument' --warnings
+
+do_check "'--help' as option argument" \
+         'unknown warning.*--help' --warnings --help
+
+do_check "'--help' as option argument" \
+         'unknown warning.*--help' --warnings --help
+
+do_check "ambiguous incomplete option" \
+         'unrecognized option.*--ver' --ver
+
+command_ok_ "unambiguous incomplete long option" $AUTOMAKE --vers
+
+:
diff --git a/t/auxdir-autodetect.sh b/t/auxdir-autodetect.sh
new file mode 100755 (executable)
index 0000000..41a73d5
--- /dev/null
@@ -0,0 +1,130 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that, if AC_CONFIG_AUX_DIR is not specified, Automake tries
+# to use '.', '..' and '../..', in precisely that order.
+
+. ./defs || Exit 1
+
+nil=__no_such_program
+
+unset NONESUCH || :
+
+cat >>configure.ac << END
+AM_MISSING_PROG([NONESUCH],[$nil])
+AC_OUTPUT
+END
+
+mkdir d3
+mkdir d3/d2
+mkdir d3/d2/d1
+mkdir d3/d2/d1/d0
+
+echo 'echo %%d3%% $*' > d3/missing
+chmod +x d3/missing
+echo 'echo %%d2%% $*' > d3/d2/missing
+chmod +x d3/d2/missing
+echo 'echo %%d1%% $*' > d3/d2/d1/missing
+chmod +x d3/d2/d1/missing
+echo 'echo %%d0%% $*' > d3/d2/d1/d0/missing
+chmod +x d3/d2/d1/d0/missing
+
+mv configure.ac d3/d2/d1/d0/
+
+cd d3/d2/d1/d0
+
+cat > Makefile.am << 'EOF'
+.PHONY: test
+test:
+       $(NONESUCH) >$(out)
+EOF
+
+$ACLOCAL
+$AUTOCONF
+
+# ------------------------------------------- #
+:  We must end up with AC_CONFIG_AUX_DIR = .  #
+# ------------------------------------------- #
+
+: > install-sh
+$AUTOMAKE
+./configure
+out=out0 $MAKE test
+cat out0
+grep "%%d0%%.*$nil" out0
+grep '%%d[123]' out0 && Exit 1
+
+rm -f missing install-sh
+
+# -------------------------------------------- #
+:  We must end up with AC_CONFIG_AUX_DIR = ..  #
+# -------------------------------------------- #
+
+# Automake finds 'install-sh' in '.', so it assumes that auxdir is '.';
+# but it won't find 'missing' in '.', so it will fail.
+: > install-sh
+AUTOMAKE_fails
+grep 'required file.*[^.]\./missing.*not found' stderr
+rm -f install-sh
+
+# Now things should work.
+: > ../install-sh
+$AUTOMAKE
+./configure
+out=out1 $MAKE test
+cat out1
+grep "%%d1%%.*$nil" out1
+grep '%%d[023]' out1 && Exit 1
+
+rm -f ../missing ../install-sh
+
+# ----------------------------------------------- #
+:  We must end up with AC_CONFIG_AUX_DIR = ../..  #
+# ----------------------------------------------- #
+
+# Automake finds 'install-sh' in '.', so it assumes that auxdir is '.';
+# but it won't find 'missing' in '.', so it will fail.
+: > install-sh
+AUTOMAKE_fails
+grep 'required file.*[^.]\./missing.*not found' stderr
+rm -f install-sh
+
+# Automake finds 'install-sh' in '..', so it assumes that auxdir is '..';
+# but it won't find 'missing' in '.', so it will fail.
+: > ../install-sh
+AUTOMAKE_fails
+grep 'required file.*[^.]\.\./missing.*not found' stderr
+rm -f ../install-sh
+
+# Now things should work.
+: > ../../install-sh
+$AUTOMAKE
+./configure
+out=out2 $MAKE test
+cat out2
+grep "%%d2%%.*$nil" out2
+grep '%%d[013]' out2 && Exit 1
+
+rm -f ../../missing ../../install-sh
+
+# --------------------------------------------------------- #
+:  AC_CONFIG_AUX_DIR will not be found: Automake must fail  #
+# --------------------------------------------------------- #
+
+AUTOMAKE_fails
+grep 'required file.*missing.*not found' stderr
+
+:
diff --git a/t/auxdir-computed.tap b/t/auxdir-computed.tap
new file mode 100755 (executable)
index 0000000..487958d
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# It should be possible to use a computed auxdir.  This might seem
+# bizarre, but it is actually used in multilib builds.
+
+. ./defs || Exit 1
+
+plan_ 3
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([\$foo])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+: > Makefile.am
+
+command_ok_ "aclocal" $ACLOCAL
+# Both these two invocations are meant.
+# They exercise both code paths concerning auxiliary files.
+command_ok_ "automake -a" -D TODO -r "long-standing limitation" $AUTOMAKE -a
+command_ok_ "automake"    -D TODO -r "long-standing limitation" $AUTOMAKE
+
+:
diff --git a/t/auxdir-misplaced.sh b/t/auxdir-misplaced.sh
new file mode 100755 (executable)
index 0000000..33f5db0
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure we diagnose misplaced AC_CONFIG_AUX_DIR.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_AUX_DIR([.]) dnl this will appear after AM_INIT_AUTOMAKE
+END
+
+: > Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'AC_CONFIG_AUX_DIR.*AM_INIT_AUTOMAKE' stderr
+
+:
diff --git a/t/auxdir-nonexistent.sh b/t/auxdir-nonexistent.sh
new file mode 100755 (executable)
index 0000000..5575b28
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we diagnose non-existent AC_CONFIG_AUX_DIR names.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([nonesuch])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+: > Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^configure\.ac:2:.*nonesuch.* not exist' stderr
+
+:
diff --git a/t/auxdir-unportable.tap b/t/auxdir-unportable.tap
new file mode 100755 (executable)
index 0000000..d04b38c
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we diagnose unportable AC_CONFIG_AUX_DIR names.
+
+. ./defs || Exit 1
+
+plan_ 4
+
+cat >configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([aux])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+: > Makefile.am
+
+am_warn_unportable_auxdir ()
+{
+  details=$1
+  AUTOMAKE_fails
+  command_ok_ \
+    "warn about $details unportable auxdir name" \
+    grep '^configure\.ac:2:.*aux.*W32' stderr
+}
+
+$ACLOCAL || fatal_ "aclocal failed"
+
+am_warn_unportable_auxdir "non-existent"
+
+if mkdir aux; then
+  am_warn_unportable_auxdir "existent"
+else
+  skip_row_ 2 -r "cannot create directory named 'aux'"
+fi
+
+:
diff --git a/t/auxdir.sh b/t/auxdir.sh
new file mode 100755 (executable)
index 0000000..c4860f4
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure AC_CONFIG_AUX_DIR works correctly.
+
+. ./defs || Exit 1
+
+# The "./." is here so we don't have to mess with subdirs.
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([./.])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+cp "$am_scriptdir/mkinstalldirs" .
+
+# The "././" prefix confuses Automake into thinking it is doing a
+# subdir build.  Yes, this is hacky.
+$ACLOCAL
+$AUTOMAKE ././Makefile
+
+grep '/\./\./mkinstalldirs' Makefile.in
+
+:
diff --git a/t/auxdir6.sh b/t/auxdir6.sh
new file mode 100755 (executable)
index 0000000..08de241
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure AC_CONFIG_AUX_DIR works correctly.
+# This test calls AC_CONFIG_AUX_DIR with an explicit literal argument,
+# thus explicitly making the directory named by that argument the
+# config auxdir.
+# Keep this in sync with sister tests auxdir7.test and auxdir8.test.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([auxdir])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile subdir/Makefile])
+END
+
+mkdir subdir auxdir
+
+cat > Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+cp Makefile.am subdir/Makefile.am
+
+: > auxdir/mkinstalldirs
+: > auxdir/install-sh
+: > auxdir/missing
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP '$(top_srcdir)/auxdir/mkinstalldirs' Makefile.in
+$FGREP '$(top_srcdir)/auxdir/mkinstalldirs' subdir/Makefile.in
+
+:
diff --git a/t/auxdir7.sh b/t/auxdir7.sh
new file mode 100755 (executable)
index 0000000..9a32bcb
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure AC_CONFIG_AUX_DIR works correctly.
+# This test calls AC_CONFIG_AUX_DIR with a '.' argument, thus explicitly
+# making the top-level directory the config auxdir.
+# Keep this in sync with sister tests auxdir6.test and auxdir8.test.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile subdir/Makefile])
+END
+
+mkdir subdir
+
+cat > Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+cp Makefile.am subdir/Makefile.am
+
+: > mkinstalldirs
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP '$(top_srcdir)/mkinstalldirs' Makefile.in
+$FGREP '$(top_srcdir)/mkinstalldirs' subdir/Makefile.in
+
+:
diff --git a/t/auxdir8.sh b/t/auxdir8.sh
new file mode 100755 (executable)
index 0000000..4dd0835
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure AC_CONFIG_AUX_DIR works correctly.
+# This test tries without an explicit call to AC_CONFIG_AUX_DIR;
+# the config auxdir should be implicitly defined to '.' since
+# the install-sh, mkinstalldirs, etc., scripts are in the top-level
+# directory.
+# Keep this in sync with sister tests auxdir6.test and auxdir7.test.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([subdir/Makefile])
+END
+
+mkdir subdir
+
+cat > Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+cp Makefile.am subdir/Makefile.am
+
+: > mkinstalldirs
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP '$(top_srcdir)/mkinstalldirs' Makefile.in
+$FGREP '$(top_srcdir)/mkinstalldirs' subdir/Makefile.in
+
+:
diff --git a/t/ax/depcomp.sh b/t/ax/depcomp.sh
new file mode 100644 (file)
index 0000000..a9180e9
--- /dev/null
@@ -0,0 +1,420 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check dependency tracking in various flavours.
+# Contains both libtool and non-libtool case.
+# Sourced by the various (autogenerated) 'depcomp*.tap' tests.
+# Examples of reported failures that motivated those test are
+# listed below.
+
+# -------------------------------------------------------------------------
+
+# <http://lists.gnu.org/archive/html/automake-patches/2011-04/msg00028.html>
+#
+# Here's the bug: makedepend will prefix VPATH to the object file name,
+# thus the second make will invoke depcomp with object='../../src/foo.o',
+# causing errors such as:
+#
+#  touch: cannot touch '../../src/.deps/foo.TPo': No such file or directory
+#  makedepend: error:  cannot open "../../src/.deps/foo.TPo"
+#  ../../depcomp: line 560: ../../src/.deps/foo.TPo: No such file or directory
+
+# -------------------------------------------------------------------------
+
+# <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8473>
+# <http://lists.gnu.org/archive/html/automake-patches/2011-04/msg00079.html>
+#
+# Here's the bug: hp depmode will prefix VPATH to the object file name,
+# thus the second gmake will invoke depcomp with object='../../src/foo.o',
+# causing errors such as (broken on multiple lines for clarity):
+#
+#   cpp: "", line 0: error 4066: Cannot create
+#        "../../gllib/.deps/nonblocking.TPo" file for
+#        "-M../../gllib/.deps/nonblocking.TPo" option.
+#        (No such file or directory[errno=2])
+#
+
+# -------------------------------------------------------------------------
+
+# <http://lists.gnu.org/archive/html/automake-patches/2011-04/msg00140.html>
+# <http://lists.gnu.org/archive/html/automake-patches/2011-05/msg00019.html>
+#
+# A partial failure of an earlier version of this test; some bad
+# post-processing of the '*.Po' files led to the following broken
+# contents of 'src/sub/.deps/subfoo.Po':
+#
+#  > sub/subfoo.o: ../../depmod-data.dir/src/sub/subfoo.c \
+#  >   ../../depmod-data.dir/src/foo.h
+#  > ../../depmod-data.dir/src/sub/subfoo.c \:
+#  >   ../../depmod-data.dir/src/foo.h:
+#
+# which caused make to die with an error like:
+#
+#  "sub/.deps/subfoo.Po:3: *** missing separator.  Stop."
+
+# -------------------------------------------------------------------------
+
+# This expects ./defs has already been included has already been included..
+
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+longpath=this-is/a-path/which-has/quite-a/definitely/truly/long_long_name
+cachevar=am_cv_CC_dependencies_compiler_type
+
+srctree=depmod-1.0
+mkdir $srctree
+cd $srctree
+
+cd_top ()
+{
+  cd "$ocwd" || fatal_ "cannot chdir back to top directory"
+}
+
+delete ()
+{
+  test -f "$1" || fatal_ "$1: file does not exist"
+  rm -f "$1" || fatal_ "$1: couldn't remove"
+}
+
+edit ()
+{
+  file=$1; shift
+  sed "$@" <"$file" > t && mv -f t "$file" \
+    || fatal_ "$file: editing of file failed"
+}
+
+rewrite ()
+{
+  file=$1; shift
+  "$@" > "$file" || fatal_ "$file: couldn't rewrite"
+}
+
+setup_srcdir ()
+{
+  srcdir=$1 # This is intended to be global.
+  mkdir -p "$srcdir" \
+    || fatal_ "couldn't create source directory '$srcdir'"
+  cp -pR "$ocwd/$srctree"/* "$srcdir"/ \
+    || fatal_ "couldn't populate source directory '$srcdir'"
+}
+
+
+check_no_depfiles ()
+{
+  find . -name '*.Plo' -o -name '*.Po' | grep . && return 1
+  return 0
+}
+
+check_distclean ()
+{
+  # "make distcleancheck" can only run from a VPATH build.
+  if test $vpath = no; then
+    make_ok distclean && check_no_depfiles
+  else
+    $MAKE distcleancheck
+  fi
+}
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+`if test $depcomp_with_libtool = yes; then
+  echo AC_PROG_LIBTOOL
+else
+  echo AC_PROG_RANLIB
+fi`
+AC_CONFIG_FILES([Makefile src/Makefile])
+AC_OUTPUT
+END
+
+mkdir build-aux sub src src/sub2
+
+case $depcomp_with_libtool in
+  yes)
+    po=Plo objext=lo a=la
+    normalized_target=libfoo_la
+    # On platforms requiring that no undefined symbols exist in order
+    # to build shared libraries (e.g. Windows DLLs), you have to
+    # explicitly declare that the libtool library you are building
+    # does not actually have any undefined symbols, for libtool to
+    # even try to build it as a shared library.  Without that
+    # explicit declaration, libtool falls back to a static library
+    # only, regardless of any --enable-shared flags etc.
+    LIBPRIMARY=LTLIBRARIES LINKADD=LIBADD NOUNDEF=-no-undefined
+    libbaz_ldflags="libbaz_${a}_LDFLAGS = $NOUNDEF"
+    echo lib_LTLIBRARIES = libfoo.la >> Makefile.am
+    make_ok ()
+    {
+      $MAKE ${1+"$@"} >output 2>&1 || { cat output; return 1; }
+      cat output
+      $FGREP 'unknown directive' output && return 1
+      rm -f output
+      # Checks for stray files possibly left around by less common
+      # depmodes.
+      find . -name '*.[ud]' | grep . && return 1
+      return 0
+    }
+    ;;
+  no)
+    po=Po objext='$(OBJEXT)' a=a
+    normalized_target=foo
+    LIBPRIMARY=LIBRARIES LINKADD=LDADD NOUNDEF=
+    libbaz_ldflags=
+    echo bin_PROGRAMS = foo >> Makefile.am
+    make_ok ()
+    {
+      $MAKE ${1+"$@"}
+    }
+    ;;
+  *)
+    fatal_ "invalid value '$depcomp_with_libtool' for variable" \
+           "\$depcomp_with_libtool"
+    ;;
+esac
+
+cat >> Makefile.am <<END
+SUBDIRS = src
+# We include subfoo only to be sure that the munging in depcomp
+# doesn't remove too much from the object file name.
+${normalized_target}_SOURCES = foo.c sub/subfoo.c foo.h sub/subfoo.h
+${normalized_target}_LDFLAGS = $NOUNDEF
+${normalized_target}_${LINKADD} = src/libbaz.$a
+
+.PHONY: grep-test
+grep-test:
+## For debugging.
+       cat \$(DEPDIR)/foo.$po || :
+       cat \$(DEPDIR)/subfoo.$po || :
+       cat src/\$(DEPDIR)/baz.$po || :
+       cat src/sub2/\$(DEPDIR)/sub2foo.$po || :
+## Checks done here.
+       grep '^foo.$objext.*:' \$(DEPDIR)/foo.$po
+       grep '^subfoo\.$objext.*:' \$(DEPDIR)/subfoo.$po
+       grep '^baz\.$objext.*:' src/\$(DEPDIR)/baz.$po
+       grep '^sub2/sub2foo\.$objext.*:' src/sub2/\$(DEPDIR)/sub2foo.$po
+END
+
+cat > src/Makefile.am <<END
+AUTOMAKE_OPTIONS = subdir-objects
+noinst_${LIBPRIMARY} = libbaz.$a
+# We include sub2foo only to be sure that the munging in depcomp
+# doesn't remove too much from the object file name.
+libbaz_${a}_SOURCES = baz.c sub2/sub2foo.c baz.h sub2/sub2foo.h
+$libbaz_ldflags
+END
+
+cat > foo.c <<'END'
+#include "foo.h"
+#include "src/baz.h"
+#include <stdlib.h>
+int main (void)
+{
+  printf ("foo bar\n");
+  exit (EXIT_SUCCESS + subfoo () + baz ());
+}
+END
+
+cat > foo.h <<'END'
+#include <stdio.h>
+#include "sub/subfoo.h"
+END
+
+cat > sub/subfoo.c <<'END'
+#include "sub/subfoo.h"
+int subfoo (void) { return 0; }
+END
+
+echo '/* empty */' > src/sub2/sub2foo.h
+
+cat > sub/subfoo.h <<'END'
+#include <stdio.h>
+extern int subfoo (void);
+END
+
+cat > src/baz.c <<'END'
+#include "baz.h"
+int baz (void) { return 0; }
+END
+
+cat > src/baz.h <<'END'
+extern int baz (void);
+END
+
+cat > src/sub2/sub2foo.c <<'END'
+#include "sub2foo.h"
+int sub2foo (void) { return 0; }
+END
+
+test $depcomp_with_libtool = no || libtoolize \
+  || fatal_ "libtoolize failed"
+$ACLOCAL && $AUTOCONF && $AUTOMAKE -a \
+  || fatal_ "autotools failed"
+test -f build-aux/depcomp \
+  || fatal_ "depcomp script not installed"
+
+# To offer extra coverage for the depmodes (like "aix" of "hp2") where the
+# name of the compiler-generated depfiles can depend on whether libtool is
+# in use *and* on which kind of libraries libtool is building (static,
+# shared, or both), we would like to run the libtool-oriented tests thrice:
+# once after having run configure with the '--disable-shared' option, once
+# after having run it with the '--enable-shared' options, and once by
+# leaving it to configure to automatically select which kind of library (or
+# libraries) to build.
+#
+# But doing such three-fold checks unconditionally for all the depmodes
+# would slow down the already too slow libtool tests unacceptably (up to a
+# 150-200% factor), with no real gain in coverage for most of the depmodes.
+# So, since the depmodes that would benefit from the extra tests are never
+# forced to configure in out tests below, but can only be automatically
+# selected by '--enable-dependency-tracking', we make this threefold check
+# only in this later case.
+
+if test $depmode,$depcomp_with_libtool = auto,yes; then
+  do_all_tests ()
+  {
+    do_test default
+    do_test noshared --disable-shared
+    do_test nostatic --disable-static
+  }
+else
+  do_all_tests () { do_test; }
+fi
+
+case $depmode in
+  auto)
+    displayed_depmode='..*' # At least one character long.
+    cfg_deptrack=--enable-dependency-tracking ;;
+  disabled)
+    displayed_depmode=none
+    cfg_deptrack=--disable-dependency-tracking ;;
+  *)
+    displayed_depmode="(cached) $depmode"
+    cfg_deptrack="$cachevar=$depmode"
+    # Sanity check: ensure the cache variable we force is truly
+    # used by configure.
+    $FGREP $cachevar configure \
+      || fatal_ "configure lacks required cache variable '$cachevar'";;
+esac
+
+cd_top
+
+do_test ()
+{
+  cd_top
+  if test $vpath = no; then
+    pfx="in-tree build"
+  else
+    pfx="$vpath VPATH"
+  fi
+  if test $# -gt 0; then
+    subdir=$1; shift
+    pfx="$pfx, $subdir"
+    test -d $subdir || mkdir $subdir || fatal_ "creating directory $subdir"
+    cd $subdir
+  fi
+  pfx="[$pfx]"
+  case $vpath in
+    simple)
+      mkdir -p vpath-simple/build
+      cd vpath-simple/build
+      setup_srcdir ..
+      ;;
+    long)
+      mkdir -p vpath-long/src vpath-long/wrk
+      cd vpath-long/wrk
+      setup_srcdir ../src/$longpath
+      ;;
+    absolute)
+      mkdir -p vpath-abs/build
+      cd vpath-abs/build
+      absdir="`(cd .. && pwd)`" || fatal_ "getting absolute directory"
+      setup_srcdir "$absdir/vpath-abs"
+      unset absdir
+      ;;
+    no)
+      mkdir intree
+      cd intree
+      setup_srcdir .
+      ;;
+    *)
+      fatal_ "invalid value '$vpath' for variable \$vpath"
+      ;;
+  esac
+
+  command_ok_ \
+    "$pfx configure" \
+    "$srcdir/configure" $cfg_deptrack ${1+"$@"} >stdout
+  cat stdout
+
+  command_ok_ \
+    "$pfx right depmode selected" \
+    grep "^checking dependency style .*\.\.\. $displayed_depmode$" stdout
+  rm -f stdout
+
+  command_ok_ "$pfx simple make" make_ok
+  # Some bugs in VPATH builds only kick in during a rebuild.
+  command_ok_ "$pfx clean & rebuild" eval '$MAKE clean && make_ok'
+
+  if test $depmode = disabled; then
+      command_ok_ "$pfx no dependency files generated" check_no_depfiles
+      r=ok \
+        && grep "[ $tab]depmode=none" Makefile \
+        && rewrite "$srcdir"/src/sub2/sub2foo.h echo 'choke me' \
+        && delete "$srcdir"/sub/subfoo.h \
+        && make_ok \
+        || r='not ok'
+      result_ "$r" "$pfx dependency tracking is truly disabled"
+  elif grep "[ $tab]depmode=none" Makefile; then
+    skip_row_ 2 -r "automatic dependency tracking couldn't be activated"
+  else
+    command_ok_ "$pfx generated $po files look correct" $MAKE grep-test
+    r=ok \
+      && : "Some checks in the subdir." \
+      && $sleep \
+      && : "Ensure rebuild rules really kick in." \
+      && rewrite "$srcdir"/src/sub2/sub2foo.h echo 'choke me' \
+      && cd src \
+      && not $MAKE  \
+      && cd .. \
+      && : "Ensure the deleted header bug is fixed." \
+      && delete "$srcdir"/src/sub2/sub2foo.h \
+      && edit "$srcdir"/src/sub2/sub2foo.c -e 1d \
+      && cd src \
+      && make_ok \
+      && : "Now do similar checks for the parent directory." \
+      && cd .. \
+      && rewrite "$srcdir"/sub/subfoo.h echo 'choke me' \
+      && not $MAKE \
+      && delete "$srcdir"/sub/subfoo.h \
+      && edit "$srcdir"/sub/subfoo.c -e 1d \
+      && edit "$srcdir"/foo.h -e 2d \
+      && make_ok \
+      || r='not ok'
+    result_ "$r" "$pfx dependency tracking works"
+  fi
+
+  command_ok_ "$pfx make distclean" check_distclean
+  cd_top
+}
+
+for vpath in no simple long absolute; do
+  do_all_tests
+done
+
+:
diff --git a/t/ax/distcheck-hook-m4.am b/t/ax/distcheck-hook-m4.am
new file mode 100644 (file)
index 0000000..5d36102
--- /dev/null
@@ -0,0 +1,30 @@
+## Data files for some tests.  Not used in the automake build system.
+##
+## Copyright (C) 2011-2012 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+distcheck-hook:
+       @fatal () { echo "$@: $$*" >&2; exit 1; }; \
+       $(am__cd) $(distdir) && chmod u+w . && mkdir _m4 \
+         || fatal "cannot setup distdir"; \
+       $(ACLOCAL) -I _m4 $(ACLOCAL_AMFLAGS) --install --output=_am.m4 \
+         || fatal "cannot regenerate aclocal.m4"; \
+       lst=`ls _m4 | tr '\012\015' '  '`; \
+       if test -n "$$lst"; then \
+         fatal "required m4 files not distributed or outdated: $$lst"; \
+       fi; \
+       $(AUTOCONF) -o /dev/null || fatal "can't remake configure"; \
+       rm -rf _m4 _am.m4 autom4te.cache && chmod a-w . \
+         || fatal "cannot reset distdir"
diff --git a/t/ax/extract-testsuite-summary.pl b/t/ax/extract-testsuite-summary.pl
new file mode 100644 (file)
index 0000000..28a9c35
--- /dev/null
@@ -0,0 +1,30 @@
+#! /usr/bin/env perl
+# Extract the testsuite summary generated by the parallel-tests harness
+# from the output of "make check".
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+use warnings FATAL => 'all';
+use strict;
+
+my $br = '=' x 76;
+my @sections = ('');
+while (<>)
+  {
+    push @sections, $_, '' if /$br/;
+    $sections[-1] .= $_ if !/$br/;
+  }
+print @sections[1..$#sections-1];
diff --git a/t/ax/is b/t/ax/is
new file mode 100755 (executable)
index 0000000..1e1c0ce
--- /dev/null
+++ b/t/ax/is
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that two whitespace-separated lists are equal.
+# Assumes the two lists are passed on the command line separated by
+# a '==' string.
+# This script is useful to test equality of lists in makefile rules,
+# in the face of variables defined through line-continuations,
+# automake rewrites and expansions of empty variables.
+
+set -e
+set -u
+
+# Initialize before unsetting, for shells (like older bash or Solaris
+# ksh) that fail to unset variables that are already unset.
+exp= got=; unset exp got
+seen_eqeq=no
+while test $# -gt 0; do
+  if test x"$1" = x"=="; then
+    if test $seen_eqeq = no; then
+      seen_eqeq=yes
+    else
+      echo "$0: more than one '==' argument seen on command line" >&2
+      exit 2
+    fi
+  else
+    if test $seen_eqeq = no; then
+      got=${got+"$got "}$1
+    else
+      exp=${exp+"$exp "}$1
+    fi
+  fi
+  shift
+done
+
+if test $seen_eqeq = no; then
+  echo "$0: no '==' argument seen on command line" >&2
+  exit 2
+fi
+
+test x"${exp-}" = x"${got-}"
diff --git a/t/ax/plain-functions.sh b/t/ax/plain-functions.sh
new file mode 100644 (file)
index 0000000..e6483dc
--- /dev/null
@@ -0,0 +1,40 @@
+# -*- shell-script -*-
+#
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Helper functions used by "plain" tests of the Automake testsuite
+# (i.e., tests that don't use any test protocol).
+
+# Print warnings (e.g., about skipped and failed tests) to this file
+# number.  Override by putting, say:
+#   AM_TESTS_ENVIRONMENT = stderr_fileno_=9; export stderr_fileno_;
+#   AM_TESTS_FD_REDIRECT = 9>&2
+# in your Makefile.am.
+# This is useful when using automake's parallel tests mode, to print the
+# reason for skip/failure to console, rather than to the *.log files.
+: ${stderr_fileno_=2}
+
+# Copied from Gnulib's 'tests/init.sh'.
+warn_ () { echo "$@" 1>&$stderr_fileno_; }
+fail_ () { warn_ "$me: failed test: $@"; Exit 1; }
+skip_ () { warn_ "$me: skipped test: $@"; Exit 77; }
+fatal_ () { warn_ "$me: hard error: $@"; Exit 99; }
+framework_failure_ () { warn_ "$me: set-up failure: $@"; Exit 99; }
+
+# For compatibility with TAP functions.
+skip_all_ () { skip_ "$@"; }
+
+:
diff --git a/t/ax/tap-functions.sh b/t/ax/tap-functions.sh
new file mode 100644 (file)
index 0000000..3a5db03
--- /dev/null
@@ -0,0 +1,239 @@
+# -*- shell-script -*-
+#
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Helper functions used by TAP-producing tests of the Automake testsuite.
+
+#
+# IMPORTANT: All the functions defined in this file can *not* be used
+#            from within a subshell, unless explicitly noted otherwise.
+#
+
+# The counts of the TAP test results seen so far: total count and
+# per-result counts.
+tap_count_=0
+tap_pass_count_=0
+tap_skip_count_=0
+tap_fail_count_=0
+tap_xfail_count_=0
+tap_xpass_count_=0
+
+# The first "test -n" tries to avoid extra forks when possible.
+if test -n "${ZSH_VERSION}${BASH_VERSION}" \
+     || (eval 'test $((1 + 1)) = 2') >/dev/null 2>&1
+then
+  # Outer use of 'eval' needed to protect dumber shells from parsing
+  # errors.
+  eval 'incr_ () { eval "$1=\$((\${$1} + 1))"; }'
+else
+  incr_ () { eval "$1=\`expr \${$1} + 1\`"; }
+fi
+
+# not COMMAND [ARGS...]
+# ---------------------
+# Run the given command and invert its exit status.
+not ()
+{
+  if "$@"; then return 1; else return 0; fi
+}
+
+# plan_ [unknown|later|lazy|now|NUMBER-OF-PLANNED-TESTS]
+# ------------------------------------------------------
+# Print a TAP plan for the given number of tests.  This must be called
+# before reporting any test result.  If called with the special argument
+# "unknown" or "later", it will do nothing, expecting the calling script
+# to declare the plan later.  If called with the special argument "lazy"
+# or "now", it will print a TAP plan that accounts for the number of tests
+# seen so far.
+plan_ ()
+{
+  if test $# -eq 0; then
+    bailout_ "plan_: missing argument"
+  elif test $# -ge 2; then
+    bailout_ "plan_: too many arguments"
+  elif test x"$planned_" != x"none" && test x"$planned_" != x"later"; then
+    bailout_ "plan_: called to many times"
+  elif test x"$1" = x"unknown" || test x"$1" = x"later"; then
+    # This means we want to get back later to declaring the TAP plan.
+    planned_=later
+    return 0
+  elif test x"$1" = x"lazy" || test x"$1" = x"now"; then
+    planned_=$tap_count_ # Number of test results seen so far.
+  elif test $1 -ge 0; then
+    planned_=$1
+  else
+    bailout_ "plan_: invalid argument '$1'"
+  fi
+  echo "1..$planned_"
+}
+planned_=none
+
+# diag_ [EXPLANATION]
+# ------------------
+# Report the given text as TAP diagnostic.  Assumes the string denoting
+# TAP diagnostic lines is stored in the '$diag_string_' variable; this is
+# done to allow better interplay with TAP drivers that allow such a string
+# to be configured.
+diag_ ()
+{
+  test $# -eq 0 || echo "$diag_string_ $*"
+}
+
+# Used by the 'diag_' function above.  User-overridable.
+diag_string_="#"
+
+# warn_ [EXPLANATION]
+# ------------------
+# Give a warning (using TAP diagnostic).
+warn_ ()
+{
+  case $# in
+    0) diag_ "WARNING: (unknown warning)";;
+    *) diag_ "WARNING: $*";;
+  esac
+}
+
+# result_ RESULT [-D DIRECTIVE] [-r REASON] [--] [DESCRIPTION...]
+# ---------------------------------------------------------------
+# Report a test case with the given RESULT (valid values are "ok" and
+# "not ok") and the given DESCRIPTION (if any).  If DIRECTIVE is given
+# and non-empty (valid values being "TODO" and "SKIP"), it will be
+# reported too, with the REASON (if given) appended.
+result_ ()
+{
+  set +x # Don't pollute the log files.
+  test $# -gt 0 || bailout_ "result_: missing argument"
+  tap_result_=$1; shift
+  case $tap_result_ in
+    "ok"|"not ok") ;;
+    *) bailout_ "result_: invalid result '$tap_result'" ;;
+  esac
+  tap_directive_= tap_reason_=
+  while test $# -gt 0; do
+    case $1 in
+      -D|--directive) tap_directive_=$2; shift;;
+      -r|--reason) tap_reason_=$2; shift;;
+      --) shift; break;;
+      -*) bailout_ "result_: invalid option '$1'";;
+       *) break;;
+    esac
+    shift
+  done
+  case $tap_directive_ in
+    ""|TODO|SKIP) ;;
+    *) bailout_ "result_: invalid directive '$directive_'" ;;
+  esac
+  incr_ tap_count_
+  case $tap_result_,$tap_directive_ in
+    ok,) incr_ tap_pass_count_;;                # Passed.
+    not\ ok,TODO) incr_ tap_xfail_count_;;      # Expected failure.
+    not\ ok,*) incr_ tap_fail_count_ ;;         # Failed.
+    ok,TODO) incr_ tap_xpass_count_ ;;          # Unexpected pass.
+    ok,SKIP) incr_ tap_skip_count_ ;;           # Skipped.
+    *) bailout_ "internal error in 'result_'";; # Can't happen.
+  esac
+  tap_text_="$tap_result_ $tap_count_"
+  if test x"$*" != x; then
+    tap_text_="$tap_text_ - $*"
+  fi
+  if test x"$tap_directive_" != x; then
+    tap_text_="$tap_text_ # $tap_directive_"${tap_reason_:+" $tap_reason_"}
+  fi
+  printf '%s\n' "$tap_text_"
+  set -x # Restore shell xtraces.
+}
+
+#  Shorthands for common usages of 'result_'.
+ok_ () { result_ 'ok' ${1+"$@"}; }
+not_ok_ () { result_ 'not ok' ${1+"$@"}; }
+skip_ () { result_ 'ok' -D SKIP ${1+"$@"}; }
+
+# skip_row_ COUNT [-r REASON] [--] [DESCRIPTION...]
+# -------------------------------------------------
+# Report a COUNT of skipped test, with the given reason and descriptions
+# (if any).  Useful to avoid cascade failures in case a fair number of
+# tests depend on an earlier one that failed.
+skip_row_ ()
+{
+  skip_count_=$1; shift
+  for i_ in `seq_ $skip_count_`; do skip_ ${1+"$@"}; done
+}
+
+# skip_all_ [REASON ...]
+# ----------------------
+# Skip all the tests in a test script.  Must be used before calling 'plan_'
+# or reporting any test result.  Can't be used from within a subshell.
+skip_all_ ()
+{
+  echo "1..0 # SKIP" ${1+"$@"}
+  planned_=0
+  Exit 0
+}
+
+# bailout_ [REASON ...]
+# ---------------------
+# Stop the execution of the current test suite right now, due to an
+# unrecoverable error.  Can be called at any point, but cannot be used
+# from within a subshell.
+bailout_ ()
+{
+  echo 'Bail out!' ${1+"$@"}
+  Exit 99
+}
+
+# fatal_ [REASON ...]
+# -------------------
+# Same as 'bailout_'; for compatibility with 'plain-functions.sh'.
+fatal_ ()
+{
+  bailout_ ${1+"$@"}
+}
+
+# framework_failure_ [REASON ...]
+# -------------------------------
+# Stop the execution of the current test suite right now, due to an
+# unrecoverable error in the set-up of the test case.  Can be called
+# at any point, but cannot be used from within a subshell.
+framework_failure_ ()
+{
+  bailout_ "set-up failure"${1+": $*"}
+}
+
+# command_ok_ TEST-DESCRIPTION [OPTIONS..] [--] CMD [ARGS...]
+# -----------------------------------------------------------
+# Helper subroutine for when a TAP result must be determined by the
+# outcome of a command.
+command_ok_ ()
+{
+  tap_directive_= tap_reason_=
+  test $# -gt 0 || bailout_ "command_ok_: missing argument"
+  tap_description_=$1; shift
+  while test $# -gt 0; do
+    case $1 in
+      -D|--directive) tap_directive_=$2; shift;;
+      -r|--reason) tap_reason_=$2; shift;;
+      --) shift; break;;
+      -*) bailout_ "command_ok_: invalid option '$1'";;
+       *) break;;
+    esac
+    shift
+  done
+  tap_result_="ok"; "$@" || tap_result_="not ok"
+  result_ "$tap_result_" -D "$tap_directive_" -r "$tap_reason_" \
+          -- "$tap_description_"
+}
+
+:
diff --git a/t/ax/tap-setup.sh b/t/ax/tap-setup.sh
new file mode 100644 (file)
index 0000000..70487c3
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Auxiliary shell script that copies the common data and files used by
+# many tests on TAP support into the current directory.  It should be
+# sourced by client test scripts, and assumes the auxiliary test
+# 'tap-common-setup.test' has been run beforehand (it will error out
+# if this is not the case).
+
+# Check that we are running from a proper directory: last thing we want
+# is to overwrite some random user files.
+test -f ../../defs-static && test -f ../../defs && test -d ../../t \
+  || fatal_ "running from a wrong directory"
+
+test ! -f Makefile.am || mv Makefile.am Makefile.am~ \
+  || fatal_ "failed to save Makefile.am"
+
+test -d ../tap-common-setup.dir && cp -fpR ../tap-common-setup.dir/* . \
+  || fatal_ "couldn't get precomputed data files"
+
+fetch_tap_driver
+
+if test -f Makefile.am~; then
+  mv -f Makefile.am~ Makefile.am \
+    || fatal_ "failed to restore Makefile.am"
+  echo 'TEST_LOG_DRIVER = $(PERL) $(srcdir)/tap-driver' >> Makefile.am \
+    || fatal_ "failed to update Makefile.am"
+  $AUTOMAKE Makefile \
+    || fatal_ "failed to remake Makefile.in"
+  ./config.status Makefile \
+    || fatal_ "failed to remake Makefile"
+fi
+
+:
diff --git a/t/ax/tap-summary-aux.sh b/t/ax/tap-summary-aux.sh
new file mode 100644 (file)
index 0000000..f5d1fbd
--- /dev/null
@@ -0,0 +1,360 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Auxiliary script for tests on TAP support: checking testsuite summary.
+
+. ./defs || Exit 1
+
+br='============================================================================'
+
+case $use_colors in
+  yes|no) ;;
+  *) fatal_ "invalid \$use_colors value '$use_colors'"
+esac
+
+fetch_tap_driver
+
+cat > configure.ac <<END
+AC_INIT([GNU AutoTAP], [5.12], [bug-automake@gnu.org])
+AM_INIT_AUTOMAKE([parallel-tests])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(srcdir)/tap-driver
+TEST_LOG_COMPILER = cat
+TESTS = all.test
+END
+
+# The following shell variables are influential for this function:
+#  - expect_failure
+#  - use_colors
+do_check ()
+{
+  case $#,$1 in
+    1,--pass) expect_failure=no;;
+    1,--fail) expect_failure=yes;;
+           *) fatal_ "invalid usage of 'do_check'";;
+  esac
+  shift
+  cat > summary.exp
+  cat all.test
+  st=0
+  if test $use_colors = yes; then
+    # Forced colorization should take place also with non-ANSI terminals;
+    # hence the "TERM=dumb" definition.
+    make_cmd="env TERM=dumb AM_COLOR_TESTS=always $MAKE -e"
+  else
+    make_cmd=$MAKE
+  fi
+  $make_cmd check > stdout || st=$?
+  cat stdout
+  if test $expect_failure = yes; then
+    test $st -gt 0 || Exit 1
+  else
+    test $st -eq 0 || Exit 1
+  fi
+  $PERL "$am_testauxdir"/extract-testsuite-summary.pl stdout >summary.got \
+    || fatal_ "cannot extract testsuite summary"
+  cat summary.exp
+  cat summary.got
+  if test $use_colors = yes; then
+    # Use cmp, not diff, because the files might contain binary data.
+    compare=cmp
+  else
+    compare=diff
+  fi
+  $compare summary.exp summary.got || Exit 1
+}
+
+if test $use_colors = yes; then
+  red='\e[0;31m'
+  grn='\e[0;32m'
+  lgn='\e[1;32m'
+  blu='\e[1;34m'
+  mgn='\e[0;35m'
+  brg='\e[1m'
+  std='\e[m'
+  echo AUTOMAKE_OPTIONS = color-tests >> Makefile.am
+else
+  red= grn= lgn= blu= mgn= brg= std=
+fi
+
+  success_header="\
+${grn}${br}${std}
+${grn}Testsuite summary for GNU AutoTAP 5.12${std}
+${grn}${br}${std}"
+
+  success_footer=${grn}${br}${std}
+
+  failure_header="\
+${red}${br}${std}
+${red}Testsuite summary for GNU AutoTAP 5.12${std}
+${red}${br}${std}"
+
+  failure_footer="\
+${red}${br}${std}
+${red}See ./test-suite.log${std}
+${red}Please report to bug-automake@gnu.org${std}
+${red}${br}${std}"
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+# 1 pass.
+{ echo 1..1 && echo ok; } > all.test
+do_check --pass <<END
+$success_header
+${brg}# TOTAL: 1${std}
+${grn}# PASS:  1${std}
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+# 1 skip.
+{ echo 1..1 && echo 'ok # SKIP'; } > all.test
+do_check --pass <<END
+$success_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+${blu}# SKIP:  1${std}
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+# 1 xfail.
+{ echo 1..1 && echo 'not ok # TODO'; } > all.test
+do_check --pass <<END
+$success_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+# SKIP:  0
+${lgn}# XFAIL: 1${std}
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+# 1 fail.
+{ echo 1..1 && echo not ok; } > all.test
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+${red}# FAIL:  1${std}
+# XPASS: 0
+# ERROR: 0
+$failure_footer
+END
+
+# 1 xpass.
+{ echo 1..1 && echo 'ok # TODO'; } > all.test
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+${red}# XPASS: 1${std}
+# ERROR: 0
+$failure_footer
+END
+
+# 1 hard error.
+{ echo 1..1 && echo 'Bail out!'; } > all.test
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+${mgn}# ERROR: 1${std}
+$failure_footer
+END
+
+# 3 non-failing results.
+cat > all.test <<END
+1..3
+ok
+not ok # TODO
+ok # SKIP
+END
+do_check --pass <<END
+$success_header
+${brg}# TOTAL: 3${std}
+${grn}# PASS:  1${std}
+${blu}# SKIP:  1${std}
+${lgn}# XFAIL: 1${std}
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+# 1 pass, 1 skip, 1 fail.
+cat > all.test <<END
+1..3
+ok
+ok # SKIP
+not ok
+END
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 3${std}
+${grn}# PASS:  1${std}
+${blu}# SKIP:  1${std}
+# XFAIL: 0
+${red}# FAIL:  1${std}
+# XPASS: 0
+# ERROR: 0
+$failure_footer
+END
+
+# 1 pass, 1 xfail, 1 xpass.
+cat > all.test <<END
+1..3
+ok
+ok # TODO
+not ok # TODO
+END
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 3${std}
+${grn}# PASS:  1${std}
+# SKIP:  0
+${lgn}# XFAIL: 1${std}
+# FAIL:  0
+${red}# XPASS: 1${std}
+# ERROR: 0
+$failure_footer
+END
+
+# 1 skip, 1 xfail, 1 error.
+cat > all.test <<END
+1..3
+ok # SKIP
+not ok # TODO
+Bail out!
+END
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 3${std}
+# PASS:  0
+${blu}# SKIP:  1${std}
+${lgn}# XFAIL: 1${std}
+# FAIL:  0
+# XPASS: 0
+${mgn}# ERROR: 1${std}
+$failure_footer
+END
+
+# 1 of each kind
+cat > all.test <<END
+1..6
+ok
+not ok
+ok # TODO
+not ok # TODO
+ok # SKIP
+Bail out!
+END
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 6${std}
+${grn}# PASS:  1${std}
+${blu}# SKIP:  1${std}
+${lgn}# XFAIL: 1${std}
+${red}# FAIL:  1${std}
+${red}# XPASS: 1${std}
+${mgn}# ERROR: 1${std}
+$failure_footer
+END
+
+# Prepare some common data for later.
+for i in 0 1 2 3 4 5 6 7 8 9; do
+  for j in 0 1 2 3 4 5 6 7 8 9; do
+    echo "ok"
+    echo "not ok # TODO"
+    echo "ok # SKIP"
+  done
+done > tap
+
+# Lots of non-failures (300 per kind).
+(cat tap && cat tap && cat tap) > all.test
+test `wc -l <all.test` -eq 900 || Exit 99 # Sanity check.
+echo 1..900 >> all.test # Test plan.
+do_check --pass <<END
+$success_header
+${brg}# TOTAL: 900${std}
+${grn}# PASS:  300${std}
+${blu}# SKIP:  300${std}
+${lgn}# XFAIL: 300${std}
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+# 1 failure and lots of non-failures means failure.
+(cat tap && echo "not ok" && cat tap) > all.test
+test `wc -l <all.test` -eq 601 || Exit 99 # Sanity check.
+echo 1..601 >> all.test # Test plan.
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 601${std}
+${grn}# PASS:  200${std}
+${blu}# SKIP:  200${std}
+${lgn}# XFAIL: 200${std}
+${red}# FAIL:  1${std}
+# XPASS: 0
+# ERROR: 0
+$failure_footer
+END
+
+# 1 error and lots of non-failures means failure.
+(cat tap && sed 30q tap && echo 'Bail out!') > all.test
+test `wc -l <all.test` -eq 331 || Exit 99 # Sanity check.
+echo 1..331 >> all.test # Test plan.
+do_check --fail <<END
+$failure_header
+${brg}# TOTAL: 331${std}
+${grn}# PASS:  110${std}
+${blu}# SKIP:  110${std}
+${lgn}# XFAIL: 110${std}
+# FAIL:  0
+# XPASS: 0
+${mgn}# ERROR: 1${std}
+$failure_footer
+END
+
+:
diff --git a/t/ax/testsuite-summary-checks.sh b/t/ax/testsuite-summary-checks.sh
new file mode 100644 (file)
index 0000000..0c8e98c
--- /dev/null
@@ -0,0 +1,107 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check the testsuite summary with the parallel-tests harness.  This
+# script is meant to be sourced by other test script, so that it can
+# be used to check different scenarios (colorized and non-colorized
+# testsuite output, packages with and without bug-report addresses,
+# testsuites in subdirectories, ...)
+
+. ./defs || Exit 1
+
+case $use_colors in
+  yes)
+    AM_COLOR_TESTS=always; export AM_COLOR_TESTS
+    # Forced colorization should take place also with non-ANSI
+    # terminals; hence this setting.
+    TERM=dumb; export TERM
+    am_opts='parallel-tests color-tests'
+    ;;
+  no)
+    am_opts='parallel-tests'
+    ;;
+  *)
+    fatal_ "invalid use_colors='$use_colors'";;
+esac
+
+cat > configure.ac <<END
+AC_INIT([GNU AutoFoo], [7.1], [bug-automake@gnu.org])
+AM_INIT_AUTOMAKE([$am_opts])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TEST_EXTENSIONS = .t
+T_LOG_COMPILER = $(SHELL) $(srcdir)/log-compiler
+## Will be defined at runtime.
+TESTS =
+$(TESTS):
+END
+
+cat > log-compiler <<'END'
+#!/bin/sh
+case "$1" in
+  pass*|*/pass*|xpass*|*/xpass*) exit 0;;
+  fail*|*/fail*|xfail*|*/xfail*) exit 1;;
+  skip*|*/skip*) exit 77;;
+  error*|/error*) exit 99;;
+  copy*|*/copy*) cat "$1";;
+  *) exit 99;;
+esac
+END
+
+# Quite complexish, but allow the tests in client scripts to be written
+# in a "data-driven fashion".
+do_check ()
+{
+  cat > summary.exp
+  expect_failure=false
+  xfail_tests=''
+  tests="TESTS='$*'"
+  for t in $*; do
+    case $t in fail*|xpass*|error*) expect_failure=:;; esac
+    case $t in xfail*|xpass*) xfail_tests="$xfail_tests $t";; esac
+  done
+  test -z "$xfail_tests" || xfail_tests="XFAIL_TESTS='$xfail_tests'"
+  st=0
+  eval "env $tests $xfail_tests \$MAKE -e check > stdout || st=\$?"
+  cat stdout
+  if $expect_failure; then
+    test $st -gt 0 || Exit 1
+  else
+    test $st -eq 0 || Exit 1
+  fi
+  $PERL "$am_testauxdir"/extract-testsuite-summary.pl stdout >summary.got \
+   || fatal_ "cannot extract testsuite summary"
+  cat summary.exp
+  cat summary.got
+  if test $use_colors = yes; then
+    # Use cmp, not diff, because the files might contain binary data.
+    compare=cmp
+  else
+    compare=diff
+  fi
+  $compare summary.exp summary.got || Exit 1
+}
+
+br='============================================================================'
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+:
diff --git a/t/ax/trivial-test-driver b/t/ax/trivial-test-driver
new file mode 100644 (file)
index 0000000..3968acb
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Test driver for a very simple test protocol used by the Automake
+# testsuite to check support for custom test drivers allowing for more
+# test results per test script.
+#
+# The exit status of the wrapped script is ignored.  Lines in its stdout
+# and stderr beginning with 'PASS', 'FAIL', 'XFAIL', 'XPASS', 'SKIP' or
+# 'ERROR' count as a test case result with the obviously-corresponding
+# outcome.  Every other line is ignored for what concerns the testsuite
+# outcome.
+#
+# This script is used at least by the 'driver-custom-multitest*.test'
+# tests.
+#
+
+# Help to avoid typo-related bugs.
+set -u
+
+## Option parsing.
+
+test_name=INVALID.NAME
+log_file=BAD.LOG
+trs_file=BAD.TRS
+while test $# -gt 0; do
+  case $1 in
+    --test-name) test_name=$2; shift;;
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    # Ignored.
+    --expect-failure) shift;;
+    --color-tests) shift;;
+    --enable-hard-errors) shift;;
+    # Explicitly terminate option list.
+    --) shift; break;;
+    # Shouldn't happen
+    *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+
+## Log file header.
+{
+  echo "RUN: $test_name"
+  echo "RUN: $test_name" | sed 's/./=/g'
+  echo
+} > $log_file
+
+## Run the test script, get test cases results, display them on console.
+
+"$@" 2>&1 | tee -a $log_file | (
+  i=0 st=0
+  exec 5> $trs_file
+  while read line; do
+    result=
+    case $line in
+      PASS:*)  result=PASS  ;;
+      FAIL:*)  result=FAIL  ;;
+      XPASS:*) result=XPASS ;;
+      XFAIL:*) result=XFAIL ;;
+      SKIP:*)  result=SKIP  ;;
+      ERROR:*) result=ERROR ;;
+    esac
+    if test -n "$result"; then
+      case $result in FAIL|XPASS|ERROR) st=1;; esac
+      # Output testcase result to console.
+      echo "$result: $test_name"
+      # Register testcase outcome for the log file.
+      echo ":test-result: $line" >&5
+      echo >&5
+    fi
+  done
+  if test $st -eq 0; then
+    recheck=no
+    copy_in_global_log=no
+  else
+    recheck=yes
+    copy_in_global_log=yes
+  fi
+  echo ":recheck: $recheck" >&5
+  echo ":copy-in-global-log: $copy_in_global_log" >&5
+  exec 5>&-
+) | awk '{ print $0 ", testcase " NR }'
+
+## And we're done.
+
+exit 0
diff --git a/t/backcompat.sh b/t/backcompat.sh
new file mode 100755 (executable)
index 0000000..8a93141
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test usage of AM_INIT_AUTOMAKE with two or three arguments, for
+# backward-compatibility.
+
+. ./defs || Exit 1
+
+cat > Makefile.am <<'END'
+.PHONY: test display
+
+## Might be useful for debugging.
+display:
+## The following should be substituted by AM_INIT_AUTOMAKE.
+       @echo PACKAGE = $(PACKAGE)
+       @echo VERSION = $(VERSION)
+## The following should not be substituted, as we used the
+## old form of AC_INIT.
+       @echo PACKAGE_NAME = $(PACKAGE_NAME)
+       @echo PACKAGE_VERSION = $(PACKAGE_VERSION)
+       @echo PACKAGE_TARNAME = $(PACKAGE_TARNAME)
+       @echo PACKAGE_STRING = $(PACKAGE_STRING)
+
+test: display
+       test x'$(PACKAGE)' = x'FooBar'
+       test x'$(VERSION)' = x'0.7.1'
+       test x'$(PACKAGE_NAME)' = x
+       test x'$(PACKAGE_VERSION)' = x
+       test x'$(PACKAGE_TARNAME)' = x
+       test x'$(PACKAGE_STRING)' = x
+END
+
+for ac_init in 'AC_INIT' 'AC_INIT([Makefile.am])'; do
+  for am_extra_args in '' ', []' ', [:]' ', [false]'; do
+    rm -rf autom4te*.cache config* Makefile.in Makefile
+    unindent > configure.in <<END
+      $ac_init
+      AM_INIT_AUTOMAKE([FooBar], [0.7.1]$am_extra_args)
+      AC_CONFIG_FILES([Makefile])
+      AC_OUTPUT
+END
+    cat configure.in # For debugging.
+    $ACLOCAL
+    $AUTOCONF
+    $AUTOMAKE -Wno-obsolete
+    ./configure
+    $MAKE test
+  done
+done
+
+:
diff --git a/t/backcompat2.sh b/t/backcompat2.sh
new file mode 100755 (executable)
index 0000000..ba9ec3b
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Backward-compatibility test: check that AM_INIT_AUTOMAKE with two or
+# three arguments does AC_DEFINE the symbols PACKAGE and VERSION iff the
+# third argument is empty or non-existent.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+# A trick to make the test run muuuch faster, by avoiding repeated
+# runs of aclocal (one order of magnitude improvement in speed!).
+echo 'AC_INIT(x,0) AM_INIT_AUTOMAKE' > configure.in
+$ACLOCAL
+rm -rf configure.in autom4te.*
+
+touch install-sh missing
+
+cat > config.h.in <<'END'
+#undef PACKAGE
+#undef VERSION
+END
+
+for am_arg3 in ':' 'false' '#' ' '; do
+  unindent > configure.in <<END
+    AC_INIT
+    AC_CONFIG_HEADERS([config.h])
+    AM_INIT_AUTOMAKE([pkgname], [pkgversion], [$am_arg3])
+    AC_OUTPUT
+END
+  cat configure.in # For debugging.
+  $AUTOCONF
+  ./configure
+  cat config.h # For debugging.
+  # The non-empty third argument should prevent PACKAGE and VERSION
+  # from being AC_DEFINE'd.
+  $EGREP 'pkg(name|version)' config.h && Exit 1
+  # This is required because even relatively-recent versions of the
+  # BSD shell wrongly exit when the 'errexit' shell flag is active if
+  # the last command of a compound statement fails, even if it should
+  # be protected by the use of "&&".
+  :
+done
+
+for am_extra_args in '' ',' ', []'; do
+  unindent > configure.in <<END
+    AC_INIT
+    AC_CONFIG_HEADERS([config.h])
+    AM_INIT_AUTOMAKE([pkgname], [pkgversion]$am_extra_args)
+    AC_OUTPUT
+END
+  cat configure.in # For debugging.
+  $AUTOCONF
+  ./configure
+  cat config.h # For debugging.
+  grep '^ *# *define  *PACKAGE  *"pkgname" *$' config.h
+  grep '^ *# *define  *VERSION  *"pkgversion" *$' config.h
+done
+
+:
diff --git a/t/backcompat3.sh b/t/backcompat3.sh
new file mode 100755 (executable)
index 0000000..5dc78f6
--- /dev/null
@@ -0,0 +1,154 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Backward-compatibility test: check what happens when AC_INIT and
+# AM_INIT_AUTOMAKE are both given two or more arguments.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+empty=''
+
+AUTOMAKE="$AUTOMAKE -Wno-obsolete"
+
+cat > Makefile.am <<'END'
+## Leading ':;' here required to work around bugs of (at least) bash 3.2
+got: Makefile
+       @:; { \
+         echo 'PACKAGE = $(PACKAGE)'; \
+         echo 'VERSION = $(VERSION)'; \
+         echo 'PACKAGE_NAME = $(PACKAGE_NAME)'; \
+         echo 'PACKAGE_VERSION = $(PACKAGE_VERSION)'; \
+         echo 'PACKAGE_STRING = $(PACKAGE_STRING)'; \
+         echo 'PACKAGE_TARNAME = $(PACKAGE_TARNAME)'; \
+         echo 'PACKAGE_BUGREPORT = $(PACKAGE_BUGREPORT)'; \
+         echo 'PACKAGE_URL = $(PACKAGE_URL)'; \
+       } >$@
+END
+
+
+### Run 1 ###
+
+cat > configure.in <<END
+AC_INIT([ac_name], [ac_version])
+AM_INIT_AUTOMAKE([am_name], [am_version])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat configure.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+cat >exp <<END
+PACKAGE = am_name
+VERSION = am_version
+PACKAGE_NAME = ac_name
+PACKAGE_VERSION = ac_version
+PACKAGE_STRING = ac_name ac_version
+PACKAGE_TARNAME = ac_name
+PACKAGE_BUGREPORT = $empty
+PACKAGE_URL = $empty
+END
+
+$MAKE got
+
+diff exp got
+
+
+### Run 2 ###
+
+cat > configure.in <<'END'
+dnl: 'AC_INIT' in Autoconf <= 2.63 doesn't have an URL argument.
+dnl: Luckily, 'AC_AUTOCONF_VERSION' and 'm4_version_prereq' are
+dnl: both present in autoconf 2.62, which we require; so that we
+dnl: can at least use the following workaround.
+m4_version_prereq([2.64],
+    [AC_INIT([ac_name], [ac_version], [ac_bugreport], [ac_tarname],
+             [ac_url])],
+    [AC_INIT([ac_name], [ac_version], [ac_bugreport], [ac_tarname])
+     AC_SUBST([PACKAGE_URL], [ac_url])])
+AM_INIT_AUTOMAKE([am_name], [am_version])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat configure.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+cat >exp <<END
+PACKAGE = am_name
+VERSION = am_version
+PACKAGE_NAME = ac_name
+PACKAGE_VERSION = ac_version
+PACKAGE_STRING = ac_name ac_version
+PACKAGE_TARNAME = ac_tarname
+PACKAGE_BUGREPORT = ac_bugreport
+PACKAGE_URL = ac_url
+END
+
+$MAKE got
+
+diff exp got
+
+
+### Run 3 ###
+
+cat > configure.in <<END
+AC_INIT([ac_name], [ac_version])
+AM_INIT_AUTOMAKE([am_name], [am_version], [am_foo_quux])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat configure.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+cat >exp <<END
+PACKAGE = am_name
+VERSION = am_version
+PACKAGE_NAME = ac_name
+PACKAGE_VERSION = ac_version
+PACKAGE_STRING = ac_name ac_version
+PACKAGE_TARNAME = ac_name
+PACKAGE_BUGREPORT = $empty
+PACKAGE_URL = $empty
+END
+
+$MAKE got
+
+diff exp got
+
+$FGREP am_foo_quux Makefile.in Makefile configure config.status && Exit 1
+
+
+### Done ###
+
+:
diff --git a/t/backcompat4.sh b/t/backcompat4.sh
new file mode 100755 (executable)
index 0000000..9088aae
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Backward-compatibility: AC_OUTPUT with arguments.
+
+. ./defs || Exit 1
+
+mkdir sub
+: > Makefile.am
+: > zardoz
+: > foo.in
+: > foo1.in
+: > foo2.in
+: > foo3.in
+: > sub/bar.in
+
+ls -l # For debugging.
+
+for args in \
+  'foo' \
+  'foo:foo1.in' \
+  'foo:zardoz' \
+  'foo:sub/bar.in' \
+  'foo:foo1.in:foo2.in' \
+  'foo:zardoz:zardoz' \
+  'foo:foo1.in:foo2.in:foo3.in' \
+  'foo:foo1.in:foo2.in:sub/bar.in:foo3.in' \
+; do
+  rm -rf autom4te*.cache aclocal.m4
+  unindent >configure.ac <<END
+    AC_INIT([$me], [1.0])
+    AM_INIT_AUTOMAKE
+    AC_CONFIG_FILES([$args])
+    AC_OUTPUT
+END
+  cat configure.ac # For debugging.
+  $ACLOCAL
+  $AUTOMAKE Makefile
+  mv -f Makefile.in Makefile.acf
+  rm -rf autom4te*.cache aclocal.m4
+  unindent >configure.ac <<END
+    AC_INIT([$me], [1.0])
+    AM_INIT_AUTOMAKE
+    AC_OUTPUT([$args])
+END
+  cat configure.ac # For debugging.
+  $ACLOCAL
+  $AUTOMAKE Makefile
+  mv -f Makefile.in Makefile.aco
+  diff Makefile.acf Makefile.aco
+done
+
+:
diff --git a/t/backcompat5.sh b/t/backcompat5.sh
new file mode 100755 (executable)
index 0000000..fda98f4
--- /dev/null
@@ -0,0 +1,125 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Backward-compatibility test: try to build and distribute a package
+# using obsoleted forms of AC_INIT, AM_INIT_AUTOMAKE and AC_OUTPUT.
+# This script can also serve as mild stress-testing for Automake.
+# See also the similar test 'backcompat6.test'.
+
+am_serial_tests=yes
+am_create_testdir=empty
+. ./defs || Exit 1
+
+makefiles='hacky/Makefile src/Makefile data/Makefile tests/Makefile'
+
+# Yuck!
+cat > configure.in <<END
+dnl: Everything here is *deliberately* underquoted!
+AC_INIT(src/foo.input)
+AM_INIT_AUTOMAKE(foo, 1.0)
+AC_CONFIG_FILES(Makefile:mkfile.in)
+AC_OUTPUT($makefiles)
+END
+
+distdir=foo-1.0
+
+cat > mkfile.am <<'END'
+SUBDIRS = src data tests hacky
+installcheck-local:
+       grep DataDataData $(DESTDIR)$(prefix)/data/$(PACKAGE)-$(VERSION)/bar
+END
+
+mkdir hacky src tests data
+
+echo 'This is a dummy package' > README
+
+cat > src/foo.input <<'END'
+#!sh
+echo Zardoz
+END
+
+cat > tests/a.test <<'END'
+#!/bin/sh
+"$srcdir/../src/foo" | grep Zardoz
+END
+chmod a+x tests/a.test
+
+cat > data/bar <<'END'
+line1
+line2
+line3
+END
+
+cat >hacky/Makefile.am <<'END'
+dist-hook:
+       find $(top_distdir) -print
+       chmod a+rx $(top_distdir)/tests/*.test
+END
+
+cat > src/Makefile.am <<'END'
+dist_bin_SCRIPTS = foo
+foo: foo.input
+       sed '1s,^#!.*$$,#!/bin/sh,' $(srcdir)/foo.input >$@
+       chmod a+x $@
+EXTRA_DIST = foo.input
+DISTCLEANFILES = foo
+END
+
+cat > data/Makefile.am <<'END'
+nodist_data_DATA = bar
+datadir = $(prefix)/data/$(PACKAGE)-$(VERSION)
+bar:
+       echo DataDataData >$@
+distclean-local:
+       rm -f bar
+END
+
+cat > tests/Makefile.am <<'END'
+TESTS = a.test
+EXTRA_DIST = $(TESTS)
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a -Wno-obsolete
+test -f install-sh
+for f in $makefiles; do mv -f $f.in $f.sav; done
+$AUTOMAKE -Wno-obsolete
+for f in $makefiles; do diff $f.sav $f.in; done
+
+./configure
+ls -l . hacky src data tests # For debugging.
+test ! -f mkfile
+$MAKE
+$MAKE distdir
+test ! -f $distdir/Makefile.in
+test ! -f $distdir/data/bar
+test -f $distdir/src/foo
+diff README $distdir/README
+diff mkfile.in $distdir/mkfile.in
+diff tests/a.test $distdir/tests/a.test
+diff src/foo.input $distdir/src/foo.input
+
+$MAKE check
+$MAKE distcheck
+
+test -f $distdir.tar.gz
+
+chmod a-x tests/a.test
+# dist-hook should take care of making test files executables.
+$MAKE distcheck
+
+:
diff --git a/t/backcompat6.sh b/t/backcompat6.sh
new file mode 100755 (executable)
index 0000000..4523a65
--- /dev/null
@@ -0,0 +1,104 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Backward-compatibility test: try to build and distribute a package
+# using obsoleted forms of AC_INIT, AM_INIT_AUTOMAKE and AC_OUTPUT.
+# This script can also serve as mild stress-testing for Automake.
+# See also the similar test 'backcompat5.test'.
+
+required=cc
+am_create_testdir=empty
+. ./defs || Exit 1
+
+# Anyone doing something like this in a real-life package probably
+# deserves to be killed.
+cat > configure.in <<'END'
+dnl: Everything here is *deliberately* underquoted!
+AC_INIT(quux.c)
+PACKAGE=nonesuch-zardoz
+VERSION=nonesuch-0.1
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+AC_SUBST(one,1)
+two=2
+AC_SUBST(two, $two)
+three=3
+AC_SUBST(three)
+AC_PROG_CC
+AC_CONFIG_HEADERS(config.h:config.hin)
+AM_CONDITIONAL(CROSS_COMPILING, test "$cross_compiling" = yes)
+AC_OUTPUT(Makefile foo.got:foo1.in:foo2.in:foo3.in)
+END
+
+echo @one@ > foo1.in
+echo @two@ > foo2.in
+echo @three@ > foo3.in
+
+cat >config.hin <<'END'
+#undef PACKAGE
+#undef VERSION
+END
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = quux.c
+check-local:
+       test x'$(PACKAGE)' = x'nonesuch-zardoz'
+       test x'$(VERSION)' = x'nonesuch-0.1'
+if ! CROSS_COMPILING
+       ./foo
+## Do not anchor the regexps w.r.t. the end of line, because on
+## MinGW/MSYS, grep may assume LF line endings only, while our
+## 'foo' program may generate CRLF line endings.
+       ./foo | grep '^PACKAGE = nonesuch-zardoz!'
+       ./foo | echo '^VERSION = nonesuch-0\.1!'
+endif
+END
+
+cat > quux.c <<'END'
+#include <config.h>
+#include <stdio.h>
+int main (void)
+{
+  printf("PACKAGE = %s!\nVERSION = %s!\n", PACKAGE, VERSION);
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOMAKE -Wno-obsolete --add-missing
+$AUTOCONF
+
+./configure
+
+cat >foo.exp <<'END'
+1
+2
+3
+END
+
+diff foo.exp foo.got
+
+$MAKE
+$MAKE check
+
+distdir=nonesuch-zardoz-nonesuch-0.1
+$MAKE distdir
+test -f $distdir/quux.c
+test ! -f $distdir/foo.got
+
+$MAKE distcheck
+
+:
diff --git a/t/backsl.sh b/t/backsl.sh
new file mode 100755 (executable)
index 0000000..48d70c7
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for "\" problems.  Bug report from Joerg-Martin Schwarz.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = \
+   frob
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^_SOURCE' Makefile.in && Exit 1
+Exit 0
diff --git a/t/backsl2.sh b/t/backsl2.sh
new file mode 100755 (executable)
index 0000000..82e2f08
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# We must skip the backslash, not complain about './\' not existing.
+# Reported by Rick Scott <rwscott@omnisig.com>
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+SUBDIRS = \
+   .
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/backsl3.sh b/t/backsl3.sh
new file mode 100755 (executable)
index 0000000..36fab7f
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we diagnose trailing backslash at the end of a file.
+# Report from Akim Demaile <akim@epita.fr>.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+foo = \
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+cat stderr
+grep 'trailing backslash' stderr
diff --git a/t/backsl4.sh b/t/backsl4.sh
new file mode 100755 (executable)
index 0000000..c11d20d
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we diagnose and fix white spaces following backslash.
+# Report from Peter Muir.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >>configure.ac
+
+# Note: trailing whitespace used during the test should not appear as
+# trailing whitespace in this file, or it will get stripped by any
+# reasonable editor.
+
+echo 'bin_SCRIPTS = foo \ ' >Makefile.am
+cat >>Makefile.am <<'END'
+bar
+ok:
+       :
+END
+echo 'data_DATA = baz \  ' >>Makefile.am
+echo ' fum' >>Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+AUTOMAKE_fails
+grep ':1:.*whitespace' stderr
+grep ':5:.*whitespace' stderr
+$AUTOMAKE -Wno-error
+./configure
+# Older versions of Automake used to produce invalid Makefiles such input.
+$MAKE ok
diff --git a/t/badline.sh b/t/badline.sh
new file mode 100755 (executable)
index 0000000..3f548f7
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that line number and file name in error message
+# referring to variable is always correct.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_SUBST(TEXINFOS)
+AC_CONFIG_FILES([Makefile])
+END
+
+: > Makefile.am
+
+$ACLOCAL || Exit 1
+AUTOMAKE_fails
+grep 'configure.ac:3:.*info_TEXINFOS' stderr
diff --git a/t/badopt.sh b/t/badopt.sh
new file mode 100755 (executable)
index 0000000..b06657f
--- /dev/null
@@ -0,0 +1,25 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure bad options cause error.
+
+. ./defs || Exit 1
+
+echo 'AUTOMAKE_OPTIONS = zardoz' > Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+grep zardoz stderr
diff --git a/t/badprog.sh b/t/badprog.sh
new file mode 100755 (executable)
index 0000000..81ff5b7
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that programs with bad names are properly
+# transformed.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = a,b
+a_b_SOURCES = ab.c
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/block.sh b/t/block.sh
new file mode 100755 (executable)
index 0000000..a6e9e32
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure block comments are not double-spaced.
+# Report from François Pinard.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+#START
+#a
+#b
+#c
+#END
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+(sed -e '/^#START/,/^#END/ !d' Makefile.in | grep -v '^#') && Exit 1
+Exit 0
diff --git a/t/bsource.sh b/t/bsource.sh
new file mode 100755 (executable)
index 0000000..482015f
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for install-recursive appearing in a non recursive Makefile.
+# Report from Bruno Haible.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+noinst_SCRIPTS = hostname
+include_HEADERS = gettext-po.h
+BUILT_SOURCES = po-hash-gen.c
+END
+
+$ACLOCAL
+$AUTOMAKE
+grep 'install-recursive' Makefile.in && Exit 1
+
+:
diff --git a/t/candist.sh b/t/candist.sh
new file mode 100755 (executable)
index 0000000..88d8854
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, 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 things that cannot be dist_'ed are diagnosed.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >>configure.ac
+
+cat > Makefile.am << 'END'
+dist_bin_PROGRAMS = foo
+dist_lib_LIBRARIES = libfoo.a
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+test 2 -eq `grep -c 'dist.*forbidden' stderr`
+
+Exit 0
diff --git a/t/canon-name.sh b/t/canon-name.sh
new file mode 100755 (executable)
index 0000000..3e8de08
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# PR 511: Make sure we warn about e.g. AC_CONFIG_FILES([./gmakefile]),
+# as not all make implementations treat 'file' and './file' equally.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([./gmakefile ./sub/gmakefile])
+AC_OUTPUT
+END
+
+mkdir sub
+echo 'SUBDIRS = sub' >gmakefile.am
+: >sub/gmakefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'leading.*\./.*\./gmakefile' stderr
+grep 'leading.*\./.*\./sub/gmakefile' stderr
+
+:
diff --git a/t/canon.sh b/t/canon.sh
new file mode 100755 (executable)
index 0000000..b5038a5
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that name canonicalization error works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = sniff-glue
+sniff-glue_SOURCES = sg.c
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile\.am:2:.* bad .*variable.*sniff-glue_SOURCES' stderr
+grep 'Makefile\.am:2:.* use .*sniff_glue_SOURCES' stderr
+
+:
diff --git a/t/canon2.sh b/t/canon2.sh
new file mode 100755 (executable)
index 0000000..4d39a7e
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure name canonicalization happens for texinfo.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = zar-doz.texi
+zar_doz_TEXINFOS = frob.texi
+END
+
+: > texinfo.tex
+echo '@setfilename zar-doz.info' > zar-doz.texi
+echo '@setfilename frob' > frob.texi
+
+$ACLOCAL
+$AUTOMAKE
+
+grep zar-doz_TEXINFOS Makefile.in && Exit 1
+
+:
diff --git a/t/canon3.sh b/t/canon3.sh
new file mode 100755 (executable)
index 0000000..25a8e71
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Yet another canonicalization test.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = perm-number
+END
+
+: > perm-number.c
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP 'perm_number.c' Makefile.in && Exit 1
+
+:
diff --git a/t/canon4.sh b/t/canon4.sh
new file mode 100755 (executable)
index 0000000..6cdfd41
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure name canonicalization happens for static libraries.
+# Keep this in sync with sister test 'canon6.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libx-y.a
+libx_y_a_SOURCES = xy.c
+END
+
+: > ar-lib
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^ *libx-y.*=' Makefile.in && Exit 1
+
+:
diff --git a/t/canon5.sh b/t/canon5.sh
new file mode 100755 (executable)
index 0000000..0d71d83
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that we allow variable names starting in
+# non-letters.  Whatever that might mean.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+$ACLOCAL
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = 123test
+123test_SOURCES = 123.c
+END
+
+$AUTOMAKE
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = _foo
+_foo_SOURCES = foo.c
+END
+
+$AUTOMAKE
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = ,foo
+,foo_SOURCES = foo.c
+END
+
+AUTOMAKE_fails
+grep 'Makefile\.am:2:.* bad .*variable.*,foo_SOURCES' stderr
+grep 'Makefile\.am:2:.* use .*_foo_SOURCES' stderr
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = ,foo
+_foo_SOURCES = foo.c
+END
+
+$AUTOMAKE -Wno-portability
+
+:
diff --git a/t/canon6.sh b/t/canon6.sh
new file mode 100755 (executable)
index 0000000..64f946c
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure name canonicalization happens for libtool libraries.
+# Keep this in sync with sister test 'canon4.test'.
+
+required='libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+END
+
+cat > Makefile.am << 'END'
+noinst_LTLIBRARIES = libx-y.la
+libx_y_la_SOURCES = xy.c
+END
+
+: > ltmain.sh
+: > ar-lib
+
+$ACLOCAL
+$AUTOMAKE -a
+
+grep '^ *libx-y.*=' Makefile.in && Exit 1
+
+:
diff --git a/t/canon7.sh b/t/canon7.sh
new file mode 100755 (executable)
index 0000000..d9d22c2
--- /dev/null
@@ -0,0 +1,101 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Stress test on canonicalization.
+
+required='cc libtool libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB  dnl: for static libraries
+AC_PROG_LIBTOOL dnl: for libtool libraries
+AM_CONDITIONAL([CROSS_COMPILING], [test "$cross_compiling" = yes])
+AC_OUTPUT
+END
+
+if touch ,foo-bar libb.az+baz lib~zardoz,,; then
+  rm -f ,foo-bar libb.az+baz lib~zardoz,,
+else
+  skip_ "cannot create regular files with \"tricky\" names"
+fi
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = dummy_static dummy_dynamic ,foo-bar
+noinst_LIBRARIES = libb.az+baz.a
+noinst_LTLIBRARIES = lib~zardoz,,.la
+
+dummy_static_SOURCES = dummy.c lib.h
+dummy_dynamic_SOURCES = $(dummy_static_SOURCES)
+
+dummy_static_LDADD = $(noinst_LIBRARIES)
+dummy_dynamic_LDADD = $(noinst_LTLIBRARIES)
+
+_foo_bar_SOURCES = foobar.c
+libb_az_baz_a_SOURCES = libs.c
+lib_zardoz___la_SOURCES = libd.c
+
+check-local:
+       ls -l
+if CROSS_COMPILING
+       test -f ./,foo-bar$(EXEEXT)
+       test -f ./dummy_static$(EXEEXT)
+       test -f ./dummy_dynamic$(EXEEXT)
+else !CROSS_COMPILING
+       ./,foo-bar
+       ./dummy_static
+       ./dummy_dynamic
+       ./,foo-bar | grep 'Hello, FooBar!'
+       ./dummy_static | grep 'Hello from Static!'
+       ./dummy_dynamic | grep 'Hello from Dynamic!'
+endif !CROSS_COMPILING
+END
+
+cat > foobar.c << 'END'
+#include <stdio.h>
+int main(void)
+{
+  printf("Hello, FooBar!\n");
+  return 0;
+}
+END
+
+cat > dummy.c << 'END'
+#include <stdio.h>
+#include "lib.h"
+int main(void)
+{
+  printf("Hello from %s!\n", dummy_func());
+  return 0;
+}
+END
+
+echo 'const char *dummy_func(void);' > lib.h
+echo 'const char *dummy_func(void) { return "Dynamic"; }' > libd.c
+echo 'const char *dummy_func(void) { return "Static"; }' > libs.c
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/canon8.sh b/t/canon8.sh
new file mode 100755 (executable)
index 0000000..180e333
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that canonicalization does not transliterate the '@' charactrer.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foob@rquux
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# The first grep is here mostly for debugging.
+grep foob.rquux Makefile.in
+grep foob@rquux Makefile.in
+grep 'foob[^@]rquux' Makefile.in && Exit 1
+
+:
diff --git a/t/ccnoco.sh b/t/ccnoco.sh
new file mode 100755 (executable)
index 0000000..1df950d
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure we can compile when the compiler doesn't
+# understand '-c -o'.
+
+required=gcc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+# Make sure that $CC can be used after AM_PROG_CC_C_O.
+$CC -v || exit 1
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = wish
+wish_SOURCES = a.c
+# Make sure we need something strange.
+wish_CFLAGS = -g
+END
+
+cat > a.c << 'END'
+#include <stdio.h>
+
+int main ()
+{
+   printf ("hi\n");
+}
+END
+
+cat > Mycomp << END
+#!/bin/sh
+
+case " \$* " in
+ *\ -c*\ -o* | *\ -o*\ -c*)
+    exit 1
+    ;;
+esac
+
+# Use '$CC', not 'gcc', to honour the compiler chosen by 't/defs'.
+exec $CC "\$@"
+END
+
+chmod +x Mycomp
+
+# Make sure the compiler doesn't understand '-c -o'
+CC=`pwd`/Mycomp
+export CC
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+for vpath in : false; do
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+  $srcdir/configure
+  $MAKE
+  cd $srcdir
+done
+
+:
diff --git a/t/ccnoco2.sh b/t/ccnoco2.sh
new file mode 100755 (executable)
index 0000000..e6c9c64
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake requires AM_PROG_CC_C_O when either per-targets
+# flags or subdir-objects are used.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_PROG_CC
+AC_OUTPUT
+EOF
+
+cat >Makefile.am <<EOF
+bin_PROGRAMS = wish
+wish_SOURCES = a.c
+wish_CPPFLAGS = -DWHATEVER
+EOF
+
+touch a.c
+
+$ACLOCAL
+$AUTOCONF
+AUTOMAKE_fails --copy --add-missing
+grep '^Makefile\.am:2:.*per-target.*AM_PROG_CC_C_O' stderr
+
+
+cat >Makefile.am <<EOF
+bin_PROGRAMS = wish
+wish_SOURCES = sub/a.c
+EOF
+
+mkdir sub
+mv a.c sub
+
+$AUTOMAKE --copy --add-missing
+
+echo 'AUTOMAKE_OPTIONS = subdir-objects' >> Makefile.am
+AUTOMAKE_fails --copy --add-missing
+grep '^Makefile\.am:2:.*subdir.*AM_PROG_CC_C_O' stderr
+
+:
diff --git a/t/ccnoco3.sh b/t/ccnoco3.sh
new file mode 100755 (executable)
index 0000000..eb291ec
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure 'compile' doesn't call 'mv SRC SRC'.
+
+required=gcc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+$CC --version; $CC -v; # For debugging.
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = wish
+wish_SOURCES = a.c
+END
+
+mkdir sub
+
+cat > a.c << 'END'
+#include <stdio.h>
+
+int main ()
+{
+  printf ("hi\n");
+}
+END
+
+cat > Mycomp << END
+#!/bin/sh
+
+case " \$* " in
+ *\ -c*\ -o* | *\ -o*\ -c*)
+    exit 1
+    ;;
+esac
+
+# Use '$CC', not 'gcc', to honour the compiler chosen by 't/defs'.
+exec $CC "\$@"
+END
+
+chmod +x Mycomp
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+mkdir build
+cd build
+
+# Make sure the compiler doesn't understand '-c -o'
+CC=`pwd`/../Mycomp
+export CC
+
+../configure
+$MAKE 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'mv.*the same file' stderr && Exit 1
+
+:
diff --git a/t/check-concurrency-bug9245.sh b/t/check-concurrency-bug9245.sh
new file mode 100755 (executable)
index 0000000..1cb8422
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Look for a bug where FreeBSD make in concurrent mode reported success
+# even when the Automake-generated parallel testsuite harness failed.
+# See automake bug#9245.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.test
+END
+
+cat > foo.test <<'END'
+#!/bin/sh
+exit 1
+END
+chmod a+x foo.test
+
+cp foo.test bar.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+# Some make implementations don't grok the '-j' option.
+$MAKE -j1 || Exit 77
+
+for j in '' -j1 -j2; do
+  $MAKE $j check && Exit 1
+  TESTS=foo.test $MAKE $j -e check && Exit 1
+  $MAKE $j recheck && Exit 1
+  TEST_LOGS=foo.log $MAKE $j -e check && Exit 1
+  rm -f test-suite.log
+  $MAKE $j test-suite.log && Exit 1
+  test -f test-suite.log || Exit 1
+done
+
+:
diff --git a/t/check-exported-srcdir-w.sh b/t/check-exported-srcdir-w.sh
new file mode 100755 (executable)
index 0000000..29db586
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check-exported-srcdir.sh"; then
+    echo "$0: will source $dir/t/check-exported-srcdir.sh"
+    . "$dir/t/check-exported-srcdir.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check-exported-srcdir.sh'" >&2
+exit '99'
diff --git a/t/check-exported-srcdir.sh b/t/check-exported-srcdir.sh
new file mode 100755 (executable)
index 0000000..c6fda21
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the testsuite driver (either with or without the
+# parallel-tests option enabled) exports the 'srcdir' value in the
+# environment of the tests.  This is documented in the manual.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+show_info ()
+{
+  if test x"$am_serial_tests" != x"yes"; then
+     cat foo.log
+     cat test-suite.log
+  else
+     :
+  fi
+}
+
+mkdir SrcDir
+mv [!S]* SrcDir
+mkdir BuildDir
+cd SrcDir
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test
+END
+
+cat > foo.test <<'END'
+#!/bin/sh
+echo "foo.test: srcdir='$srcdir'"
+test x"$srcdir" = x"../SrcDir"
+END
+chmod a+x foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cd ../BuildDir
+../SrcDir/configure
+
+$MAKE check || { show_info; Exit 1; }
+show_info
+
+:
diff --git a/t/check-fd-redirect-w.sh b/t/check-fd-redirect-w.sh
new file mode 100755 (executable)
index 0000000..aab066d
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check-fd-redirect.sh"; then
+    echo "$0: will source $dir/t/check-fd-redirect.sh"
+    . "$dir/t/check-fd-redirect.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check-fd-redirect.sh'" >&2
+exit '99'
diff --git a/t/check-fd-redirect.sh b/t/check-fd-redirect.sh
new file mode 100755 (executable)
index 0000000..618aa80
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Simple Tests support: redirection of file descriptors with
+# AM_TESTS_FD_REDIRECT.
+# See also related test 'parallel-tests-fd-redirect.test'.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TESTS = foo.test
+AM_TESTS_FD_REDIRECT = 3<three 4>four 5>>five 7<&0 8>&1 9>&2
+END
+
+echo '3333' > three
+chmod a-w three
+
+: > foo.test
+chmod a+x foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+
+do_check ()
+{
+  cat foo.test # For debugging.
+  echo 'this line will be removed' > four
+  echo 'this line will not be removed' > five
+  st=0
+  echo 'ok ok ok' | $MAKE check >stdout 2>stderr || st=1
+  cat stdout
+  cat stderr >&2
+  cat four
+  test x"$am_serial_tests" = x"yes" || cat foo.log
+  test $st -eq 0
+  grep '[ /]foo\.test: foofoofoo$' stdout
+  grep '[ /]foo\.test: barbarbar$' stderr
+  grep 'this line' four && Exit 1
+  grep '^3333$' four
+  grep '^this line will not be removed$' five
+  grep '^ok ok ok$' five
+  $EGREP '(foofoofoo|barbarbar|3333|ok ok ok|this line)' foo.log && Exit 1
+  :
+}
+
+# Try using both shell script and a perl script as the test, for
+# better coverage.
+
+cat > foo.test <<'END'
+#! /bin/sh
+set -e
+
+read FOO <&3
+test 3333 -eq "$FOO"
+echo "$FOO" >&4
+
+grep '^ok ok ok$' <&7 >&5
+
+echo " " $0: foofoofoo >&8
+echo " " $0: barbarbar >&9
+END
+
+do_check
+
+echo "#! $PERL -w" > foo.test
+cat >> foo.test <<'END'
+use warnings FATAL => 'all';
+use strict;
+
+open (FD3, "<&=3") or die "opening FD3: $!";
+open (FD4, ">&=4") or die "opening FD4: $!";
+open (FD5, ">&=5") or die "opening FD5: $!";
+open (FD7, "<&=7") or die "opening FD7: $!";
+open (FD8, ">&=8") or die "opening FD8: $!";
+open (FD9, ">&=9") or die "opening FD9: $!";
+
+chomp (my $FOO = <FD3>);
+die "$FOO != 3333" if not $FOO eq "3333";
+print FD4 "$FOO\n";
+
+chomp ($_ = <FD7>);
+die "$_ != 'ok ok ok'" if not $_ eq 'ok ok ok';
+print FD5 "$_\n";
+
+print FD8 "  $0: foofoofoo\n";
+print FD9 "  $0: barbarbar\n";
+END
+
+do_check
+
+:
diff --git a/t/check-no-test-driver.sh b/t/check-no-test-driver.sh
new file mode 100755 (executable)
index 0000000..84ea325
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that auxiliary script 'test-driver' doesn't get needlessly
+# installed or referenced when the 'parallel-tests' option is not
+# used.
+
+am_serial_tests=yes
+. ./defs || Exit 1
+
+echo 'TESTS = foo.test' > Makefile.am
+
+$ACLOCAL
+
+for opts in '' '-a' '--add-missing --copy'; do
+  $AUTOMAKE $opts
+  $FGREP 'test-driver' Makefile.in && Exit 1
+  find . | $FGREP 'test-driver' && Exit 1
+  : For shells with busted 'set -e'.
+done
+
+:
diff --git a/t/check-subst-prog-w.sh b/t/check-subst-prog-w.sh
new file mode 100755 (executable)
index 0000000..d23d202
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check-subst-prog.sh"; then
+    echo "$0: will source $dir/t/check-subst-prog.sh"
+    . "$dir/t/check-subst-prog.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check-subst-prog.sh'" >&2
+exit '99'
diff --git a/t/check-subst-prog.sh b/t/check-subst-prog.sh
new file mode 100755 (executable)
index 0000000..540c749
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check @substituted@ TESTS, some of which are also PROGRAMS.
+# See also sister test 'check-subst.test'.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << '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]dnl
+         [ xfail-prog$(EXEEXT) subst-xfail-prog.test$(EXEEXT)'])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = pass-script.test xfail-script.test @script_tests@ $(check_PROGRAMS)
+XFAIL_TESTS = @xfail_tests@
+check_PROGRAMS = pass-prog xfail-prog @prog_tests@
+EXTRA_PROGRAMS = subst-pass-prog.test subst-xfail-prog.test
+END
+
+cat > pass-script.test <<'END'
+#! /bin/sh
+exit 0
+END
+cat > xfail-script.test <<'END'
+#! /bin/sh
+exit 1
+END
+chmod a+x pass-script.test xfail-script.test
+cp pass-script.test subst-pass-script.test
+cp xfail-script.test subst-xfail-script.test
+
+cat > pass-prog.c <<'END'
+int main (void) { return 0; }
+END
+cat > xfail-prog.c <<'END'
+#include <stdlib.h>
+int main (void) { return EXIT_FAILURE; }
+END
+# The .test extension is removed for the default source file name:
+cp pass-prog.c subst-pass-prog.c
+cp xfail-prog.c subst-xfail-prog.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE all
+$MAKE check
+$MAKE distclean
+
+mkdir build
+cd build
+../configure
+$MAKE all
+$MAKE check
+$MAKE distclean
+
+:
diff --git a/t/check-subst-w.sh b/t/check-subst-w.sh
new file mode 100755 (executable)
index 0000000..ecf3d8c
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check-subst.sh"; then
+    echo "$0: will source $dir/t/check-subst.sh"
+    . "$dir/t/check-subst.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check-subst.sh'" >&2
+exit '99'
diff --git a/t/check-subst.sh b/t/check-subst.sh
new file mode 100755 (executable)
index 0000000..ac8fe89
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check @substituted@ TESTS.
+# Note that in this test, we rely on the .test extension for the
+# substituted names: this is necessary for parallel-tests.
+# See also sister test 'check-subst-prog.test'.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([script_tests], ['subst-pass-script.sh subst-xfail-script.sh'])
+AC_SUBST([xfail_tests], ['xfail-script.test subst-xfail-script.sh'])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = pass-script.test xfail-script.test @script_tests@
+XFAIL_TESTS = @xfail_tests@
+END
+
+if test x"$am_serial_tests" != x"yes"; then
+  unindent >> Makefile.am <<'END'
+    TEST_EXTENSIONS = .sh .test
+    SH_LOG_COMPILER = $(SHELL)
+END
+fi
+
+cat > pass-script.test <<'END'
+#! /bin/sh
+exit 0
+END
+cat > xfail-script.test <<'END'
+#! /bin/sh
+exit 1
+END
+cp pass-script.test subst-pass-script.sh
+cp xfail-script.test subst-xfail-script.sh
+chmod a+x pass-script.test xfail-script.test
+
+if test x"$am_serial_tests" = x"yes"; then
+  chmod a+x subst-pass-script.sh subst-xfail-script.sh
+fi
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+for vpath in false : ; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE all
+  $MAKE check
+  if test x"$am_serial_tests" != x"yes"; then
+    ls -l
+    test -f pass-script.log
+    test -f xfail-script.log
+    test -f subst-pass-script.log
+    test -f subst-xfail-script.log
+  fi
+  $MAKE distclean
+  cd $srcdir
+
+done
+
+:
diff --git a/t/check-tests-in-builddir-w.sh b/t/check-tests-in-builddir-w.sh
new file mode 100755 (executable)
index 0000000..08575db
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check-tests-in-builddir.sh"; then
+    echo "$0: will source $dir/t/check-tests-in-builddir.sh"
+    . "$dir/t/check-tests-in-builddir.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check-tests-in-builddir.sh'" >&2
+exit '99'
diff --git a/t/check-tests-in-builddir.sh b/t/check-tests-in-builddir.sh
new file mode 100755 (executable)
index 0000000..323c3bc
--- /dev/null
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the testsuite driver can find test in the srcdir as
+# well as in builddir, and that is prefers those in the builddir.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.test
+EXTRA_DIST = $(TESTS)
+END
+
+cat > foo.test << 'END'
+#! /bin/sh
+exit ${FOO_EXIT_STATUS-0}
+END
+chmod a+x foo.test
+
+unset FOO_EXIT_STATUS || :
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir build
+cd build
+
+../configure
+
+cat > bar.test << 'END'
+#! /bin/sh
+exit 0
+END
+chmod a+x bar.test
+
+$MAKE check >out 2>&1 || { cat out; Exit1; }
+cat out
+# The simple-tests driver does not strip VPATH components from
+# the name of the test, but the parallel-tests driver should.
+if test x"$am_serial_tests" = x"yes"; then
+  grep '^PASS: .*foo\.test *$' out
+else
+  grep '\.\./foo' out && Exit 1
+  grep '^PASS: foo\.test *$' out
+fi
+grep '^PASS: bar\.test *$' out
+
+rm -f test-suite.log foo.log bar.log
+
+FOO_EXIT_STATUS=1 $MAKE check >out 2>&1 && { cat out; Exit1; }
+cat out
+# The simple-tests driver does not strip VPATH components from
+# the name of the test, but the parallel-tests driver should.
+if test x"$am_serial_tests" = x"yes"; then
+  grep '^FAIL: .*foo\.test *$' out
+else
+  grep '\.\./foo' out && Exit 1
+  grep '^FAIL: foo\.test *$' out
+fi
+grep '^PASS: bar\.test *$' out
+
+rm -f test-suite.log foo.log bar.log
+
+# Check that if the same test is present in srcdir and builddir,
+# the one in builddir is preferred.
+cp bar.test foo.test
+FOO_EXIT_STATUS=1 $MAKE check >out 2>&1 || { cat out; Exit1; }
+cat out
+grep '^PASS: foo\.test *$' out
+grep '^PASS: bar\.test *$' out
+
+# The tests in the builddir must be preferred also by "make dist".
+FOO_EXIT_STATUS=1 $MAKE distcheck
+
+:
diff --git a/t/check-w.sh b/t/check-w.sh
new file mode 100755 (executable)
index 0000000..8b7d76a
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check.sh"; then
+    echo "$0: will source $dir/t/check.sh"
+    . "$dir/t/check.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check.sh'" >&2
+exit '99'
diff --git a/t/check.sh b/t/check.sh
new file mode 100755 (executable)
index 0000000..1edd60f
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test Automake style tests.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+TESTS = frob.test
+END
+
+test x"$am_serial_tests" = x"yes" || : > test-driver
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'check-TESTS.*:' Makefile.in
+grep 'check-DEJAGNU' Makefile.in && Exit 1
+
+# 'check-TESTS' is phony.
+sed -n '/^\.PHONY:/,/^$/p' Makefile.in | $EGREP '(^| )check-TESTS($| )'
+
+# 'check' should depend directly on 'check-am' (similar tests are
+# in check2.test and check3.test).
+$EGREP '^check:.* check-am( |$)' Makefile.in
+
+:
diff --git a/t/check10.sh b/t/check10.sh
new file mode 100755 (executable)
index 0000000..9f436ad
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check singular and plural in test summaries.
+
+# This test only makes sense for the older serial testsuite driver.
+am_serial_tests=yes
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = fail pass skip xfail xpass fail2 pass2 skip2 xfail2 xpass2
+XFAIL_TESTS = xfail xpass xfail2 xpass2
+END
+
+cat > pass <<'END'
+#! /bin/sh
+exit 0
+END
+cat > fail <<'END'
+#! /bin/sh
+exit 1
+END
+cat > skip <<'END'
+#! /bin/sh
+exit 77
+END
+chmod a+x pass fail skip
+cp pass pass2
+cp pass xpass
+cp xpass xpass2
+cp fail xfail
+cp fail fail2
+cp xfail xfail2
+cp skip skip2
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+(
+  # Do not check for failure in this subshell
+  set +e
+  env TESTS=pass $MAKE -e check
+  env TESTS=fail $MAKE -e check
+  env TESTS=skip $MAKE -e check
+  env TESTS=xfail $MAKE -e check
+  env TESTS=xpass $MAKE -e check
+  env TESTS="pass pass2" $MAKE -e check
+  env TESTS="fail fail2" $MAKE -e check
+  env TESTS="skip skip2" $MAKE -e check
+  env TESTS="xfail xfail2" $MAKE -e check
+  env TESTS="xpass xpass2" $MAKE -e check
+  env TESTS='pass skip xfail' $MAKE -e check
+  $MAKE check
+  :
+) >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep '1 [tT]ests' stdout && Exit 1
+grep '[02-9] [tT]est ' stdout && Exit 1
+grep '1 .* were ' stdout && Exit 1
+grep '[02-9].* was .*run' stdout && Exit 1
+grep 'All 1 ' stdout && Exit 1
+$EGREP '1 (un)?expected (failures|passes)' stdout && Exit 1
+$EGREP '[^1] (un)?expected (failure|pass)\)' stdout && Exit 1
+
+:
diff --git a/t/check11-w.sh b/t/check11-w.sh
new file mode 100755 (executable)
index 0000000..111d71a
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check11.sh"; then
+    echo "$0: will source $dir/t/check11.sh"
+    . "$dir/t/check11.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check11.sh'" >&2
+exit '99'
diff --git a/t/check11.sh b/t/check11.sh
new file mode 100755 (executable)
index 0000000..fc1209c
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check skip summary.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = skip skip2
+END
+
+cat > skip <<'END'
+#! /bin/sh
+exit 77
+END
+chmod a+x skip
+cp skip skip2
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+env TESTS=skip $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+if test x"$am_serial_tests" = x"yes"; then
+  grep '1.*passed' stdout && Exit 1
+  : For shells with buggy 'set -e'.
+else
+  count_test_results total=1 pass=0 fail=0 skip=1 xfail=0 xpass=0 error=0
+fi
+
+env TESTS="skip skip2" $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+if test x"$am_serial_tests" = x"yes"; then
+  grep '2.*passed' stdout && Exit 1
+  : For shells with buggy 'set -e'.
+else
+  count_test_results total=2 pass=0 fail=0 skip=2 xfail=0 xpass=0 error=0
+fi
+
+:
diff --git a/t/check12-w.sh b/t/check12-w.sh
new file mode 100755 (executable)
index 0000000..a263f21
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check12.sh"; then
+    echo "$0: will source $dir/t/check12.sh"
+    . "$dir/t/check12.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check12.sh'" >&2
+exit '99'
diff --git a/t/check12.sh b/t/check12.sh
new file mode 100755 (executable)
index 0000000..dbb3101
--- /dev/null
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure dejagnu tests, automake-style tests, and check-local
+# target can coexist.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+required=runtest
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS =
+EXTRA_DIST =
+CLEANFILES =
+END
+
+## Simple tests.
+
+cat > a.test << 'END'
+#!/bin/sh
+echo a.test: exit status: ${A_EXIT_STATUS-0}
+exit ${A_EXIT_STATUS-0}
+END
+cat > b.test << 'END'
+#!/bin/sh
+echo b.test: exit status: ${B_EXIT_STATUS-0}
+exit ${B_EXIT_STATUS-0}
+END
+chmod +x a.test b.test
+
+cat >> Makefile.am << 'END'
+TESTS = a.test b.test
+EXTRA_DIST += $(TESTS)
+END
+
+A_EXIT_STATUS=0; export A_EXIT_STATUS
+B_EXIT_STATUS=0; export B_EXIT_STATUS
+
+## DejaGnu tests.
+
+cat >> Makefile.am << 'END'
+AUTOMAKE_OPTIONS += dejagnu
+DEJATOOL = hammer spanner
+AM_RUNTESTFLAGS = HAMMER=$(srcdir)/hammer SPANNER=$(srcdir)/spanner
+EXTRA_DIST += hammer.test/hammer.exp
+EXTRA_DIST += spanner.test/spanner.exp
+END
+
+cat > hammer << 'END'
+#! /bin/sh
+echo "Everything looks like a ${NAIL-nail} to me!"
+END
+
+NAIL=nail; export NAIL
+
+cat > spanner << 'END'
+#! /bin/sh
+echo "I'm a right spanner!"
+END
+chmod +x hammer spanner
+
+mkdir hammer.test spanner.test
+
+cat > hammer.test/hammer.exp << 'END'
+set test test_hammer
+spawn $HAMMER
+expect {
+    "Everything looks like a nail to me!" { pass "$test" }
+    default { fail "$test" }
+}
+END
+
+cat > spanner.test/spanner.exp << 'END'
+set test test_spanner
+spawn $SPANNER
+expect {
+    "I'm a right spanner!" { pass "$test" }
+    default { fail "$test" }
+}
+END
+
+## User-defined extra tests.
+
+cat >> Makefile.am <<'END'
+check-local:
+       case $$CHECKLOCAL_EXIT_STATUS in \
+         0) echo 'check-local succeeded :-)';; \
+         *) echo 'check-local failed :-(';; \
+       esac >local.log
+       exit $$CHECKLOCAL_EXIT_STATUS
+CLEANFILES += local.log
+END
+CHECKLOCAL_EXIT_STATUS=0; export CHECKLOCAL_EXIT_STATUS
+
+## Go with the testcase execution.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+for vpath in : false; do
+
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+
+  if test -f config.status; then
+    $MAKE distclean
+  fi
+
+  $srcdir/configure
+
+  $MAKE check
+  test -f hammer.log
+  test -f hammer.sum
+  test -f spanner.log
+  test -f spanner.sum
+  # This checks will be run only by the autogenerated 'check12-p.test'.
+  if test x"$am_serial_tests" != x"yes"; then
+    test -f test-suite.log
+    test -f a.log
+    test -f b.log
+  else :; fi
+  grep 'check-local succeeded :-)' local.log
+
+  cp -f config.status config-status.sav
+
+  $MAKE distclean
+  test ! -r hammer.log
+  test ! -r hammer.sum
+  test ! -r spanner.log
+  test ! -r spanner.sum
+  test ! -r test-suite.log
+  test ! -r a.log
+  test ! -r b.log
+  test ! -r local.log
+
+  mv -f config-status.sav config.status
+  ./config.status
+
+  NAIL=screw $MAKE check && Exit 1
+  test -f hammer.log
+  test -f hammer.sum
+  test -f spanner.log
+  test -f spanner.sum
+  grep 'FAIL: test_hammer' hammer.sum
+  grep 'FAIL:' spanner.sum && Exit 1
+
+  B_EXIT_STATUS=1 $MAKE check && Exit 1
+  # This checks will be run only by the autogenerated 'check12-p.test'.
+  if test x"$am_serial_tests" != x"yes"; then
+    cat test-suite.log
+    cat a.log
+    cat b.log
+    grep '^a\.test: exit status: 0$' a.log
+    grep '^b\.test: exit status: 1$' b.log
+    grep '^FAIL: b$' test-suite.log
+    grep '^b\.test: exit status: 1$' test-suite.log
+    grep '^a\.test' test-suite.log && Exit 1
+    : For shells with busted 'set -e'.
+  else :; fi
+
+  CHECKLOCAL_EXIT_STATUS=1 $MAKE check && Exit 1
+  grep 'check-local failed :-(' local.log
+
+  # Do not trust the exit status of 'make -k'.
+  NAIL=screw B_EXIT_STATUS=23 CHECKLOCAL_EXIT_STATUS=1 $MAKE -k check || :
+  test -f hammer.log
+  test -f hammer.sum
+  test -f spanner.log
+  test -f spanner.sum
+  grep 'FAIL: test_hammer' hammer.sum
+  grep 'FAIL:' spanner.sum && Exit 1
+  # This checks will be run only by the autogenerated 'check12-p.test'.
+  if test x"$am_serial_tests" != x"yes"; then
+    cat test-suite.log
+    cat a.log
+    cat b.log
+    grep '^a\.test: exit status: 0$' a.log
+    grep '^b\.test: exit status: 23$' b.log
+    grep '^FAIL: b$' test-suite.log
+    grep '^b\.test: exit status: 23$' test-suite.log
+    grep '^a\.test' test-suite.log && Exit 1
+    : For shells with busted 'set -e'.
+  else :; fi
+  grep 'check-local failed :-(' local.log
+
+  cd $srcdir
+
+done
+
+$MAKE distcheck
+
+:
diff --git a/t/check2-w.sh b/t/check2-w.sh
new file mode 100755 (executable)
index 0000000..9405d9f
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check2.sh"; then
+    echo "$0: will source $dir/t/check2.sh"
+    . "$dir/t/check2.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check2.sh'" >&2
+exit '99'
diff --git a/t/check2.sh b/t/check2.sh
new file mode 100755 (executable)
index 0000000..73eb0b7
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test Automake style tests.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([dir/Makefile])
+AC_OUTPUT
+END
+
+mkdir dir
+
+cat > Makefile.am << 'END'
+SUBDIRS = dir
+TESTS = \
+  subrun.sh
+subrun.sh:
+       (echo '#! /bin/sh'; echo 'dir/echo.sh') > $@
+       chmod +x $@
+CLEANFILES = subrun.sh
+END
+
+cat > dir/Makefile.am << 'END'
+check_SCRIPTS = echo.sh
+echo.sh:
+       (echo '#! /bin/sh'; echo 'echo Hello') > $@
+       chmod +x $@
+CLEANFILES = echo.sh
+END
+
+test x"$am_serial_tests" = x"yes" || cp "$am_scriptdir/test-driver" .
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^PASS: subrun\.sh *$' stdout
+grep 'PASS.*echo\.sh' stdout && Exit 1
+
+# 'check' should depend directly on 'check-am' (similar tests are
+# in check.test and check3.test).
+$EGREP '^check:.* check-recursive( |$)' Makefile.in
+$EGREP '^check:.* check-am( |$)' dir/Makefile.in
+
+# Make sure subrun.sh is still on its line as above.  This means Automake
+# hasn't rewritten the TESTS line unnecessarily (we can tell, because all
+# Automake variables are reformatted by VAR_PRETTY).
+grep '^  subrun\.sh$' Makefile.in
+
+:
diff --git a/t/check3-w.sh b/t/check3-w.sh
new file mode 100755 (executable)
index 0000000..c8ee701
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check3.sh"; then
+    echo "$0: will source $dir/t/check3.sh"
+    . "$dir/t/check3.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check3.sh'" >&2
+exit '99'
diff --git a/t/check3.sh b/t/check3.sh
new file mode 100755 (executable)
index 0000000..69b6a67
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'check:' and 'install:' honor $(BUILT_SOURCES).
+# PR/359.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([dir/Makefile])
+AC_OUTPUT
+END
+
+mkdir dir
+
+cat > Makefile.am << 'END'
+BUILT_SOURCES = command1.inc
+SUBDIRS = dir
+TESTS = subrun.sh
+subrun.sh:
+       (echo '#! /bin/sh'; cat command1.inc) > $@
+       chmod +x $@
+command1.inc:
+       echo 'dir/echo.sh' > $@
+CLEANFILES = subrun.sh command1.inc
+END
+
+cat > dir/Makefile.am << 'END'
+BUILT_SOURCES = command2.inc
+check_SCRIPTS = echo.sh
+echo.sh:
+## The next line ensures that command1.inc has been built before
+## recurring into the subdir.
+       test -f ../command1.inc
+       (echo '#! /bin/sh'; cat command2.inc) > $@
+       chmod +x $@
+command2.inc:
+       echo 'echo Hello' > $@
+CLEANFILES = echo.sh command2.inc
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure --prefix "`pwd`/inst"
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^PASS: subrun\.sh *$' stdout
+grep 'PASS.*echo\.sh' stdout && Exit 1
+
+# check should depend directly on $(BUILT_SOURCES) (similar tests
+# are in check.test and check2.test).
+$EGREP '^check:.* \$\(BUILT_SOURCES\)( |$)' Makefile.in
+$EGREP '^check:.* \$\(BUILT_SOURCES\)( |$)' dir/Makefile.in
+
+$MAKE clean
+# Sanity checks
+test ! -f command1.inc
+test ! -f dir/command2.inc
+# Now make sure these two files are rebuilt during make install.
+$MAKE install
+test -f command1.inc
+test -f dir/command2.inc
+
+:
diff --git a/t/check4-w.sh b/t/check4-w.sh
new file mode 100755 (executable)
index 0000000..7018f83
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check4.sh"; then
+    echo "$0: will source $dir/t/check4.sh"
+    . "$dir/t/check4.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check4.sh'" >&2
+exit '99'
diff --git a/t/check4.sh b/t/check4.sh
new file mode 100755 (executable)
index 0000000..78415e0
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'make -k check' processes all directories.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([dir/Makefile])
+AC_OUTPUT
+END
+
+mkdir dir
+
+cat > Makefile.am <<'END'
+SUBDIRS = dir
+TESTS = ok.sh
+END
+
+echo TESTS = fail.sh >dir/Makefile.am
+
+cat >ok.sh <<'END'
+#!/bin/sh
+:
+END
+
+cat >dir/fail.sh <<'END'
+#!/bin/sh
+exit 1
+END
+
+chmod +x ok.sh dir/fail.sh
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure --prefix "`pwd`/inst"
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^FAIL: fail\.sh *$' stdout
+grep '^PASS: ok\.sh *$' stdout && Exit 1
+
+# The exit status of 'make -k' can be anything
+# (depending on the Make implementation)
+$MAKE -k check >stdout || :
+cat stdout
+grep '^FAIL: fail\.sh *$' stdout
+grep '^PASS: ok\.sh *$' stdout
+
+# Should also works when -k is not in first position.
+$MAKE -s -k check >stdout || :
+cat stdout
+grep '^FAIL: fail\.sh *' stdout
+grep '^PASS: ok\.sh *' stdout
+
+# The rest of the test is for GNU Make.
+
+if using_gmake; then
+  # Try with a long-option that do not have a short option equivalent
+  # (here, --no-print-directory).  That should cause all options to
+  # appear verbatim in MAKEFLAGS.
+  $MAKE --no-print-directory -k check >stdout || :
+  cat stdout
+  grep '^FAIL: fail\.sh *$' stdout
+  grep '^PASS: ok\.sh *$' stdout
+fi
+
+:
diff --git a/t/check5-w.sh b/t/check5-w.sh
new file mode 100755 (executable)
index 0000000..f6cb8d6
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check5.sh"; then
+    echo "$0: will source $dir/t/check5.sh"
+    . "$dir/t/check5.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check5.sh'" >&2
+exit '99'
diff --git a/t/check5.sh b/t/check5.sh
new file mode 100755 (executable)
index 0000000..8865f3e
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test TESTS = $(check_PROGRAMS)
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+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
+.PHONY: print-tests
+print-tests:
+       echo BEG: $(TESTS) :END
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cat > one.c << 'END'
+int main (void)
+{
+  return 0;
+}
+END
+cp one.c two.c
+
+./configure
+$MAKE check
+test -f ok
+EXEEXT=.bin $MAKE -e print-tests >stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP 'BEG: one.bin two.bin :END' stdout
+# No am__EXEEXT_* variable is needed.
+grep '_EXEEXT_[1-9]' Makefile.in && Exit 1
+$FGREP 'TESTS = $(check_PROGRAMS)' Makefile.in
+
+:
diff --git a/t/check6-w.sh b/t/check6-w.sh
new file mode 100755 (executable)
index 0000000..9bd01e2
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check6.sh"; then
+    echo "$0: will source $dir/t/check6.sh"
+    . "$dir/t/check6.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check6.sh'" >&2
+exit '99'
diff --git a/t/check6.sh b/t/check6.sh
new file mode 100755 (executable)
index 0000000..0f33f8d
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 400: XFAIL_TESTS delimited by TABs.
+# Also test that Solaris make VPATH rewriting is honored
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = $(XFAIL_TESTS)
+XFAIL_TESTS = a        b       c
+END
+
+cat >>a <<'END'
+#! /bin/sh
+exit 1
+END
+
+cp a b
+cp a c
+
+chmod a+x a b c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check
+$MAKE distclean
+mkdir build
+cd build
+../configure
+$MAKE check
+
+:
diff --git a/t/check7-w.sh b/t/check7-w.sh
new file mode 100755 (executable)
index 0000000..921a314
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check7.sh"; then
+    echo "$0: will source $dir/t/check7.sh"
+    . "$dir/t/check7.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check7.sh'" >&2
+exit '99'
diff --git a/t/check7.sh b/t/check7.sh
new file mode 100755 (executable)
index 0000000..54d2b2b
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check EXEEXT extension for XFAIL_TESTS.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = $(XFAIL_TESTS)
+XFAIL_TESTS = a b c d
+check_PROGRAMS = a c d
+check_SCRIPTS = b
+EXTRA_DIST = $(check_SCRIPTS)
+
+.PHONY: print-xfail-tests
+print-xfail-tests:
+       @echo BEG: $(XFAIL_TESTS) :END
+END
+
+cat > b <<'END'
+#! /bin/sh
+exit 1
+END
+chmod a+x b
+
+cat > a.c <<'END'
+#include <stdlib.h>
+int main (void)
+{
+  return EXIT_FAILURE;
+}
+END
+
+cp a.c c.c
+cp a.c d.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check
+EXEEXT=.bin $MAKE -e print-xfail-tests >stdout || {  cat stdout; Exit 1; }
+cat stdout
+$FGREP 'BEG: a.bin b c.bin d.bin :END' stdout
+
+$MAKE distcheck
+
+:
diff --git a/t/check8-w.sh b/t/check8-w.sh
new file mode 100755 (executable)
index 0000000..ff2fd06
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/check8.sh"; then
+    echo "$0: will source $dir/t/check8.sh"
+    . "$dir/t/check8.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/check8.sh'" >&2
+exit '99'
diff --git a/t/check8.sh b/t/check8.sh
new file mode 100755 (executable)
index 0000000..d33c002
--- /dev/null
@@ -0,0 +1,100 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check subdir TESTS.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+TESTS = foo sub/foo $(check_PROGRAMS)
+XFAIL_TESTS = foo sub/baz
+check_PROGRAMS = bar sub/bar baz sub/baz
+END
+
+mkdir sub
+
+cat > foo <<'END'
+#! /bin/sh
+test -f "$srcdir/Makefile.am"
+END
+cat > sub/foo <<'END'
+#! /bin/sh
+test -f "$srcdir/Makefile.am"
+END
+chmod a+x foo sub/foo
+
+cat > bar.c <<'END'
+int main (void) { return 0; }
+END
+cat > sub/bar.c <<'END'
+int main (void) { return 0; }
+END
+cat > baz.c <<'END'
+#include <stdlib.h>
+int main (void) { return EXIT_FAILURE; }
+END
+cat > sub/baz.c <<'END'
+#include <stdlib.h>
+int main (void) { return EXIT_FAILURE; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+AM_COLOR_TESTS=always $MAKE 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
+# '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
+
+mkdir build
+cd build
+../configure
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+# Note: we are not grepping for the space in the lines from the 'foo'
+# tests, due to the Solaris make VPATH 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
+
+:
diff --git a/t/checkall.sh b/t/checkall.sh
new file mode 100755 (executable)
index 0000000..3b04d56
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug where check target doesn't depend on all.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_SCRIPTS = derived
+check-local:
+       true
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^check-am:.*all-am' Makefile.in
+grep 'MAKE.*check-local' Makefile.in
diff --git a/t/clean.sh b/t/clean.sh
new file mode 100755 (executable)
index 0000000..279e162
--- /dev/null
@@ -0,0 +1,26 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure a clean target depends on previous one.
+
+. ./defs || Exit 1
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^clean-am:.*mostlyclean-am' Makefile.in
diff --git a/t/clean2.sh b/t/clean2.sh
new file mode 100755 (executable)
index 0000000..b5f5df2
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure distclean works in cygnus mode.
+# Report from Daniel Jacobowitz.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_MAINTAINER_MODE
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+
+data_DATA = bar
+
+bar:
+       touch $@
+
+DISTCLEANFILES = bar
+END
+
+mkdir sub
+
+cat > sub/Makefile.am << 'END'
+data_DATA = foo
+
+foo:
+       touch $@
+
+CLEANFILES = $(data_DATA)
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --cygnus -Wno-obsolete
+
+./configure
+$MAKE
+ls -l
+test -f bar
+test -f sub/foo
+$MAKE distclean
+ls -l
+test ! -r bar
+test ! -r sub/foo
+test ! -r Makefile
+test ! -r config.status
+test -f Makefile.in
+test -f configure
+
+:
diff --git a/t/colneq.sh b/t/colneq.sh
new file mode 100755 (executable)
index 0000000..0b5bbcd
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that := definitions produce warnings, but otherwise work.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+ICONS := $(wildcard *.xbm)
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep ':=.*not portable' stderr
+
+$AUTOMAKE -Wno-portability
+grep '^ICONS *:= *\$(wildcard \*\.xbm) *$' Makefile.in
+
+:
diff --git a/t/colneq2.sh b/t/colneq2.sh
new file mode 100755 (executable)
index 0000000..b313441
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that := in var substitutions works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+t = a b c
+EXTRA_DIST = $(t:=.test)
+.PHONY: test
+test:
+       is $(EXTRA_DIST) == a.test b.test c.test
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+:
diff --git a/t/colneq3.sh b/t/colneq3.sh
new file mode 100755 (executable)
index 0000000..728cc32
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that := definitions work as expected at make time.
+
+required=GNUmake
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+BAR := $(FOO)
+BAZ = $(FOO)
+FOO := foo
+.PHONY: test
+test:
+       test x'$(FOO)' = x'foo'
+       test x'$(BAZ)' = x'foo'
+       test x'$(BAR)' = x
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -Wno-portability
+
+./configure
+$MAKE test
+
+:
diff --git a/t/colon.sh b/t/colon.sh
new file mode 100755 (executable)
index 0000000..f5cb4e0
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug reported by Nyul Laszlo.  When using the ":" syntax in
+# AC_OUTPUT, Automake fails to find the correct file.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_CONFIG_FILES([foo.h:foo.hin])
+AC_OUTPUT
+END
+
+: > foo.hin
+
+cat > Makefile.am <<'END'
+.PHONY: test
+test: distdir
+       ls -l . $(distdir)
+       test -f foo.h
+       test -f $(distdir)/foo.hin
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+
+$MAKE test
+$MAKE distcheck
+
+:
diff --git a/t/colon2.sh b/t/colon2.sh
new file mode 100755 (executable)
index 0000000..2b06151
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure ":" works with files automake generates.
+# See also sister test 'colon3.test'.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile:zardoz.in])
+AC_OUTPUT
+END
+
+cat > zardoz.am <<END
+.PHONY: dummy
+dummy:
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# Automake should have created zardoz.in.
+test -f zardoz.in
+
+# The generated file should refer to zardoz.in and zardoz.am, but
+# never just "zardoz".
+$FGREP 'zardoz.am' zardoz.in
+$FGREP 'zardoz.in' zardoz.in
+sed -e 's|zardoz\.am|zrdz.am|g' \
+    -e 's|zardoz\.in|zrdz.in|g' \
+  <zardoz.in | $FGREP 'zardoz' && Exit 1
+
+# The configure-generated Makefile should depend on zardoz.in, two.in and
+# three.in.  The automake-generated zardoz.in should depend on zardoz.am.
+# Let's do this check the right way by running configure and make.
+
+str='%% ZaR DoZ %%'
+
+$AUTOCONF
+./configure
+test -f Makefile # Sanity check.
+
+$MAKE dummy
+# Again, make sure that the generated Makefile do not unduly
+# refer to 'zardoz' .
+$MAKE -n zardoz && Exit 1
+
+$sleep
+cat >> zardoz.am <<END
+check-local: testam testin testmk
+.PHONY: testam testin testmk
+testam:
+       grep '$str' \$(srcdir)/zardoz.am
+testin:
+       grep '$str' \$(srcdir)/zardoz.in
+testmk:
+       grep '$str' Makefile
+END
+$MAKE Makefile # For non-GNU make.
+$MAKE testam testin testmk
+
+$MAKE distcheck
+
+:
diff --git a/t/colon3.sh b/t/colon3.sh
new file mode 100755 (executable)
index 0000000..5d7b3b2
--- /dev/null
@@ -0,0 +1,91 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure ":" works with files automake generates.
+# This test is for multiple ":"s.
+# See also sister test 'colon2.test'.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile:zardoz.in:two.in:three.in])
+AC_OUTPUT
+END
+
+cat > zardoz.am <<END
+.PHONY: dummy
+dummy:
+END
+
+: > two.in
+: > three.in
+
+$ACLOCAL
+$AUTOMAKE
+
+# Automake should have created zardoz.in.
+test -f zardoz.in
+
+# The generated file should refer to zardoz.in and zardoz.am, but
+# never just "zardoz".
+$FGREP 'zardoz.am' zardoz.in
+$FGREP 'zardoz.in' zardoz.in
+sed -e 's|zardoz\.am|zrdz.am|g' \
+    -e 's|zardoz\.in|zrdz.in|g' \
+  <zardoz.in | $FGREP 'zardoz' && Exit 1
+
+# The configure-generated Makefile should depend on zardoz.in, two.in and
+# three.in.  The automake-generated zardoz.in should depend on zardoz.am.
+# Let's do this check the right way by running configure and make.
+
+str='%% ZaR DoZ %%'
+str2='// 2_TwO_2 //'
+str3='== @thr33@ =='
+
+$AUTOCONF
+./configure
+test -f Makefile # Sanity check.
+
+$MAKE dummy
+# Again, make sure that the generated Makefile do not unduly
+# refer to 'zardoz' .
+$MAKE -n zardoz && Exit 1
+
+$sleep
+cat >> zardoz.am <<END
+check-local: testam testin testmk test2 test3
+.PHONY: testam testin test2 testmk test3
+testam:
+       grep '$str' \$(srcdir)/zardoz.am
+testin:
+       grep '$str' \$(srcdir)/zardoz.in
+testmk:
+       grep '$str' Makefile
+test2:
+       grep '$str2' \$(srcdir)/two.in
+test3:
+       grep '$str3' \$(srcdir)/three.in
+END
+echo "# $str2" >> two.in
+echo "# $str3" >> three.in
+$MAKE Makefile # For non-GNU make.
+$MAKE testam testin testmk test2 test3
+
+$MAKE distcheck
+
+:
diff --git a/t/colon4.sh b/t/colon4.sh
new file mode 100755 (executable)
index 0000000..6dad3ab
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure multiple ":"s in AC_CONFIG_FILES do not generate broken
+# rebuild rules.
+# Test from Maciej W. Rozycki.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_CONFIG_FILES([zardoz:one:two:three])
+AC_OUTPUT
+END
+
+: > Makefile.am
+: > one
+: > two
+: > three
+
+$ACLOCAL
+$AUTOMAKE
+
+# The rule should regenerate the file "zardoz", not a meaningless
+# file "'zardoz:one:two".
+$FGREP 'zardoz:one:two' Makefile.in && Exit 1
+Exit 0
diff --git a/t/colon5.sh b/t/colon5.sh
new file mode 100755 (executable)
index 0000000..5a0ef37
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another multi-":" test, this time from Doug Evans.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile:Makefile.in:Makefile.dep])
+AC_OUTPUT
+END
+
+: > Makefile.dep
+
+cat > Makefile.am <<'END'
+.PHONY: test-fs-layout test-grep test-distcommon test-distdir
+check-local: test-fs-layout test-grep test-distcommon test-distdir
+test-fs-layout:
+       test x'$(srcdir)' = '.' || test ! -r Makefile.dep
+test-grep:
+## The use of $(empty) prevents spurious matches.
+       grep '=GrEp$(empty)Me_am=' $(srcdir)/Makefile.in
+       grep '=GrEp$(empty)Me_dep=' $(srcdir)/Makefile.dep
+       grep '=GrEp$(empty)Me_am=' Makefile
+       grep '=GrEp$(empty)Me_dep=' Makefile
+test-distcommon:
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]Makefile.dep '
+test-distdir: distdir
+       test -f $(distdir)/Makefile.dep
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+grep '=GrEpMe_am=' Makefile && Exit 1  # Sanity check.
+grep '=GrEpMe_dep=' Makefile && Exit 1 # Likewise.
+
+$MAKE test-distcommon
+$MAKE test-distdir
+
+$sleep
+
+echo '# =GrEpMe_am=' >> Makefile.am
+echo '# =GrEpMe_dep=' >> Makefile.dep
+
+$MAKE Makefile # For non-GNU make.
+$MAKE test-grep
+$MAKE test-distcommon
+$MAKE test-distdir
+
+$MAKE distcheck
+
+:
diff --git a/t/colon6.sh b/t/colon6.sh
new file mode 100755 (executable)
index 0000000..9f14d2a
--- /dev/null
@@ -0,0 +1,103 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Yet another multi-":" test, this time from Ken Pizzini.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+# With this, version.good should depend on version.gin, while
+# Makefile should not depend on either of them.
+AC_CONFIG_FILES([demo/Makefile demo/version.good:demo/version.gin])
+AC_OUTPUT
+END
+
+mkdir demo
+: > demo/version.gin
+: > demo/Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+# These are older "grepping checks", kept mostly for backward-compatibility.
+# They might (unlikely, but possibly) require updating when automake
+# internals are changed.  Just relax or remove if they become too fragile.
+$EGREP 'Makefile:.*(demo|version)' demo/Makefile.in && Exit 1
+grep 'version\.good:.*version\.gin' demo/Makefile.in
+
+$AUTOCONF
+
+for vpath in : false; do
+
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+
+  test -f demo/version.good   # Sanity check.
+  test ! -s demo/version.good # Likewise.
+
+  cd demo
+
+  $sleep
+  # HP-UX make considers targets with exact time stamps as one of their
+  # prerequisites out of date.  Ensure Makefile is newer than config.status to
+  # avoid triggering the am--refresh rule in the (here-nonexistent) toplevel
+  # Makefile.
+  touch Makefile
+
+  # version.good should depend on version.gin.
+  echo "Rebuilt (srcdir=$srcdir)" > ../$srcdir/demo/version.gin
+  $MAKE version.good
+  $FGREP "Rebuilt (srcdir=$srcdir)" version.good
+
+  # Makefile should not depend on version.good.
+  rm -f version.good
+  $MAKE Makefile
+  test ! -r version.good
+
+  # version.good should be rebuilt from version.gin.
+  $MAKE version.good
+  test -f version.good
+
+  # Makefile should not depend on version.gin.
+  rm -f ../$srcdir/demo/version.gin
+  $MAKE Makefile
+  test ! -r ../$srcdir/demo/version.gin # Sanity check.
+
+  # version.good should depend on version.gin.
+  rm -f version.good
+  $MAKE version.good >output 2>&1 && { cat output; Exit 1; }
+  cat output
+  # Try to verify that we errored out for the right reason.
+  $FGREP version.gin output
+
+  cd .. # Back in top builddir.
+  cd $srcdir
+
+  # Re-create it for the next pass (if any).
+  : > demo/version.gin
+
+done
+
+:
diff --git a/t/colon7.sh b/t/colon7.sh
new file mode 100755 (executable)
index 0000000..1b84d80
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another test for a failing ":" in AC_OUTPUT.
+# Report from Maciej Stachowiak.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([colon7], [1.0])
+AM_INIT_AUTOMAKE
+dnl: Please do not add proper m4 quoting here.
+AC_OUTPUT(subdir/bar:subdir/foo \
+   Makefile \
+   subdir/Makefile
+)
+END
+
+mkdir subdir
+: > Makefile.am
+: > subdir/foo
+cat > subdir/Makefile.am << 'END'
+# DIST_COMMON should contain 'foo', not 'subdir/foo'.
+test:
+       case '$(DIST_COMMON)' in *subdir/foo*) exit 1;; *) exit 0;; esac
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]foo '
+.PHONY: test
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# Should nowhere refer to 'bar.in'.
+$FGREP 'bar.in' Makefile.in subdir/Makefile.in && Exit 1
+
+$AUTOCONF
+./configure
+cd subdir
+$MAKE test
+
+:
diff --git a/t/color-w.sh b/t/color-w.sh
new file mode 100755 (executable)
index 0000000..387a433
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/color.sh"; then
+    echo "$0: will source $dir/t/color.sh"
+    . "$dir/t/color.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/color.sh'" >&2
+exit '99'
diff --git a/t/color.sh b/t/color.sh
new file mode 100755 (executable)
index 0000000..6f5c902
--- /dev/null
@@ -0,0 +1,158 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test Automake TESTS color output, by forcing it.
+# Keep this in sync with the sister test 'color2.test'.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+esc='\e'
+# Escape '[' for grep, below.
+red="$esc\[0;31m"
+grn="$esc\[0;32m"
+lgn="$esc\[1;32m"
+blu="$esc\[1;34m"
+mgn="$esc\[0;35m"
+std="$esc\[m"
+
+# Check that grep can parse nonprinting characters.
+# BSD 'grep' works from a pipe, but not a seekable file.
+# GNU or BSD 'grep -a' works on files, but is not portable.
+case `echo "$std" | grep .` in
+  "$std") ;;
+  *) skip_ "grep can't parse nonprinting characters";;
+esac
+
+cat >>configure.ac <<END
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+AUTOMAKE_OPTIONS = color-tests
+TESTS = $(check_SCRIPTS)
+check_SCRIPTS = pass fail skip xpass xfail error
+XFAIL_TESTS = xpass xfail
+END
+
+cat >pass <<END
+#! /bin/sh
+exit 0
+END
+
+cat >fail <<END
+#! /bin/sh
+exit 1
+END
+
+cat >skip <<END
+#! /bin/sh
+exit 77
+END
+
+cat >error <<END
+#! /bin/sh
+exit 99
+END
+
+cp fail xfail
+cp pass xpass
+chmod +x pass fail skip xpass xfail error
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+test_color ()
+{
+  # Not a useless use of cat; see above comments about grep.
+  cat stdout | grep "^${grn}PASS${std}: .*pass"
+  cat stdout | grep "^${red}FAIL${std}: .*fail"
+  cat stdout | grep "^${blu}SKIP${std}: .*skip"
+  cat stdout | grep "^${lgn}XFAIL${std}: .*xfail"
+  cat stdout | grep "^${red}XPASS${std}: .*xpass"
+  # The old serial testsuite driver doesn't distinguish between failures
+  # and hard errors.
+  if test x"$am_serial_tests" = x"yes"; then
+    cat stdout | grep "^${red}FAIL${std}: .*error"
+  else
+    cat stdout | grep "^${mgn}ERROR${std}: .*error"
+  fi
+  :
+}
+
+test_no_color ()
+{
+  # With make implementations that, like Solaris make, in case of errors
+  # print the whole failing recipe on standard output, we should content
+  # ourselves with a laxer check, to avoid false positives.
+  # Keep this in sync with lib/am/check.am:$(am__color_tests).
+  if $FGREP '= Xalways; then' stdout; then
+    # Extra verbose make, resort to laxer checks.
+    # Note that we also want to check that the testsuite summary is
+    # not unduly colorized.
+    (
+      set +e # In case some grepped regex below isn't matched.
+      # Not a useless use of cat; see above comments about grep.
+      cat stdout | grep "TOTAL.*:"
+      cat stdout | grep "PASS.*:"
+      cat stdout | grep "FAIL.*:"
+      cat stdout | grep "SKIP.*:"
+      cat stdout | grep "XFAIL.*:"
+      cat stdout | grep "XPASS.*:"
+      cat stdout | grep "ERROR.*:"
+      cat stdout | grep 'test.*expected'
+      cat stdout | grep 'test.*not run'
+      cat stdout | grep '===='
+      cat stdout | grep '[Ss]ee .*test-suite\.log'
+      cat stdout | grep '[Tt]estsuite summary'
+    ) | grep "$esc" && Exit 1
+    : For shells with broken 'set -e'
+  else
+    cat stdout | grep "$esc" && Exit 1
+    : For shells with broken 'set -e'
+  fi
+}
+
+for vpath in false :; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+
+  # Forced colorization should take place also with non-ANSI terminals;
+  # hence the "TERM=dumb" definition.
+  TERM=dumb AM_COLOR_TESTS=always $MAKE -e check >stdout \
+    && { cat stdout; Exit 1; }
+  cat stdout
+  test_color
+
+  TERM=ansi $MAKE -e check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  test_no_color
+
+  $MAKE distclean
+  cd $srcdir
+
+done
+
+:
diff --git a/t/color2-w.sh b/t/color2-w.sh
new file mode 100755 (executable)
index 0000000..8f0b213
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/color2.sh"; then
+    echo "$0: will source $dir/t/color2.sh"
+    . "$dir/t/color2.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/color2.sh'" >&2
+exit '99'
diff --git a/t/color2.sh b/t/color2.sh
new file mode 100755 (executable)
index 0000000..b073d5c
--- /dev/null
@@ -0,0 +1,197 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test Automake TESTS color output, using the expect(1) program.
+# Keep this in sync with the sister test 'color.test'.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+esc='\e'
+# Escape '[' for grep, below.
+red="$esc\[0;31m"
+grn="$esc\[0;32m"
+lgn="$esc\[1;32m"
+blu="$esc\[1;34m"
+mgn="$esc\[0;35m"
+std="$esc\[m"
+
+# Check that grep can parse nonprinting characters.
+# BSD 'grep' works from a pipe, but not a seekable file.
+# GNU or BSD 'grep -a' works on files, but is not portable.
+case `echo "$std" | grep .` in
+  "$std") ;;
+  *) skip_ "grep can't parse nonprinting characters";;
+esac
+
+# This test requires a working a working 'expect' program.
+# Creative quoting required to avoid spurious maintainer-check failure.
+(set +e; expect -c 'exit ''77'; test $? -eq 77) \
+  || skip_ "requires a working expect program"
+
+# Also, if the $MAKE program fails to consider the standard output as a
+# tty (this happens with e.g., BSD make and Solaris dmake when they're
+# run in parallel mode; see the autoconf manual), there is little point
+# in proceeding.
+cat > Makefile <<'END'
+all:
+## Creative quoting in the 'echo' below to avoid risk of spurious output
+## matches by 'expect', below.
+       @test -t 1 && echo "stdout" "is" "a" "tty"
+END
+
+cat > expect-check <<'END'
+eval spawn $env(MAKE)
+expect {
+  "stdout is a tty" { exit 0 }
+  default { exit 1 }
+}
+exit 1
+END
+MAKE=$MAKE expect -f expect-check \
+  || skip_ "make spawned by expect should have a tty stdout"
+rm -f expect-check Makefile
+
+# Do the tests.
+
+cat >>configure.ac <<END
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+AUTOMAKE_OPTIONS = color-tests
+TESTS = $(check_SCRIPTS)
+check_SCRIPTS = pass fail skip xpass xfail error
+XFAIL_TESTS = xpass xfail
+END
+
+cat >pass <<END
+#! /bin/sh
+exit 0
+END
+
+cat >fail <<END
+#! /bin/sh
+exit 1
+END
+
+cat >skip <<END
+#! /bin/sh
+exit 77
+END
+
+cat >error <<END
+#! /bin/sh
+exit 99
+END
+
+cp fail xfail
+cp pass xpass
+chmod +x pass fail skip xpass xfail error
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+test_color ()
+{
+  # Not a useless use of cat; see above comments about grep.
+  cat stdout | grep "^${grn}PASS${std}: .*pass"
+  cat stdout | grep "^${red}FAIL${std}: .*fail"
+  cat stdout | grep "^${blu}SKIP${std}: .*skip"
+  cat stdout | grep "^${lgn}XFAIL${std}: .*xfail"
+  cat stdout | grep "^${red}XPASS${std}: .*xpass"
+  # The old serial testsuite driver doesn't distinguish between failures
+  # and hard errors.
+  if test x"$am_serial_tests" = x"yes"; then
+    cat stdout | grep "^${red}FAIL${std}: .*error"
+  else
+    cat stdout | grep "^${mgn}ERROR${std}: .*error"
+  fi
+  :
+}
+
+test_no_color ()
+{
+  # With make implementations that, like Solaris make, in case of errors
+  # print the whole failing recipe on standard output, we should content
+  # ourselves with a laxer check, to avoid false positives.
+  # Keep this in sync with lib/am/check.am:$(am__color_tests).
+  if $FGREP '= Xalways; then' stdout; then
+    # Extra verbose make, resort to laxer checks.
+    # Note that we also want to check that the testsuite summary is
+    # not unduly colorized.
+    (
+      set +e # In case some grepped regex below isn't matched.
+      # Not a useless use of cat; see above comments about grep.
+      cat stdout | grep "TOTAL.*:"
+      cat stdout | grep "PASS.*:"
+      cat stdout | grep "FAIL.*:"
+      cat stdout | grep "SKIP.*:"
+      cat stdout | grep "XFAIL.*:"
+      cat stdout | grep "XPASS.*:"
+      cat stdout | grep "ERROR.*:"
+      cat stdout | grep 'test.*expected'
+      cat stdout | grep 'test.*not run'
+      cat stdout | grep '===='
+      cat stdout | grep '[Ss]ee .*test-suite\.log'
+      cat stdout | grep '[Tt]estsuite summary'
+    ) | grep "$esc" && Exit 1
+    : For shells with broken 'set -e'
+  else
+    cat stdout | grep "$esc" && Exit 1
+    : For shells with broken 'set -e'
+  fi
+}
+
+cat >expect-make <<'END'
+eval spawn $env(MAKE) -e check
+expect eof
+END
+
+for vpath in false :; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+
+  TERM=ansi MAKE=$MAKE expect -f $srcdir/expect-make >stdout \
+    || { cat stdout; Exit 1; }
+  cat stdout
+  test_color
+
+  TERM=dumb MAKE=$MAKE expect -f $srcdir/expect-make >stdout \
+    || { cat stdout; Exit 1; }
+  cat stdout
+  test_no_color
+
+  AM_COLOR_TESTS=no MAKE=$MAKE expect -f $srcdir/expect-make >stdout \
+    || { cat stdout; Exit 1; }
+  cat stdout
+  test_no_color
+
+  $MAKE distclean
+  cd $srcdir
+
+done
+
+:
diff --git a/t/commen10.sh b/t/commen10.sh
new file mode 100755 (executable)
index 0000000..d0c246a
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure comments following trailing backslashes are diagnosed.
+# Report from Harald Dunkel.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+SUBDIRS = foo \
+# bar
+
+END
+
+mkdir foo
+
+$ACLOCAL
+AUTOMAKE_fails
+grep backslash stderr
diff --git a/t/commen11.sh b/t/commen11.sh
new file mode 100755 (executable)
index 0000000..d4b264a
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure backslash-newline-hash combinations are diagnosed as
+# comments following a trailing backslash, even when the combination
+# follows a variable assignment that is preceded by a comment.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+# initial comment
+variable = value-before-comment \
+#
+
+# comment
+SUBDIRS = foo \
+# bar
+
+END
+
+mkdir foo
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile\.am:3:.*backslash' stderr
+grep '^Makefile\.am:7:.*backslash' stderr
+
+:
diff --git a/t/comment.sh b/t/comment.sh
new file mode 100755 (executable)
index 0000000..6ca98ba
--- /dev/null
@@ -0,0 +1,27 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that '#' as start of word in AUTOMAKE_OPTIONS means
+# comment.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = #no such option
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/comment2.sh b/t/comment2.sh
new file mode 100755 (executable)
index 0000000..a63075c
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure comment recognition works in PROGRAMS.  Report from Mark
+# Galassi.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = sim_products receive_th receive_pos # image_proc
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^image_proc' Makefile.in && Exit 1
+Exit 0
diff --git a/t/comment3.sh b/t/comment3.sh
new file mode 100755 (executable)
index 0000000..8f80945
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that '#' after a tab is a failure.
+# The Tru64 Unix V5.1 system make will pass these to the
+# shell, which in turn can't find '#' as a command.
+# Sigh.  Some vendors must be destroyed.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+install-data-local:
+       # Tru64 Unix must die
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile.am:2:.*#' stderr
diff --git a/t/comment4.sh b/t/comment4.sh
new file mode 100755 (executable)
index 0000000..42e7bf9
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure commented variables are output near their comments.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'EOF'
+# UnIqUe_COPYRIGHT_BOILERPLATE
+
+# UnIqUe_MUMBLE_COMMENT
+mumble = UnIqUe_MUMBLE_VALUE
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+# UnIqUe_COPYRIGHT_BOILERPLATE should appear near the top of the file
+test `sed -n -e '1,/UnIqUe_COPYRIGHT_BOILERPLATE/p' Makefile.in \
+      | wc -l` -le 30
+# UnIqUe_MUMBLE_COMMENT should appear right before the mumble declaration.
+test `sed -n -e '/UnIqUe_MUMBLE_COMMENT/,/UnIqUe_MUMBLE_VALUE/p' Makefile.in \
+      | wc -l` -eq 2
diff --git a/t/comment5.sh b/t/comment5.sh
new file mode 100755 (executable)
index 0000000..0c2a4d6
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR/280.
+# (Automake should complain about trailing backslashes in comments.)
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'EOF'
+all-local:
+       @echo ${var}
+
+# a comment with backslash \
+
+
+var = foo
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile.am:5: error: blank line following trailing backslash' stderr
+
+
+## Here is a second test because head comments are
+## handled differently in Automake 1.5.
+
+cat > Makefile.am << 'EOF'
+# a comment with backslash \
+
+
+all-local:
+       @echo ${var}
+
+var = foo
+EOF
+
+AUTOMAKE_fails
+grep '^Makefile.am:2: error: blank line following trailing backslash' stderr
+
+
+## Make sure we print an 'included' stack on errors.
+
+echo 'include Makefile.inc'> Makefile.am
+cat > Makefile.inc << 'EOF'
+# a comment with backslash \
+
+EOF
+
+AUTOMAKE_fails
+grep '^Makefile.inc:2: error: blank line following trailing backslash' stderr
+grep '^Makefile.am:1: .*included from here' stderr
+grep -v '^Makefile.am:1: .*error:' stderr
+
+
+## Make sure backslashes are still allowed within a comment.
+## This usually happens when commenting out a Makefile rule.
+
+cat > Makefile.am << 'EOF'
+all-local:
+       @echo ${var}
+
+# a comment with backslash \
+# but terminated by a line without backslash
+
+var = foo
+EOF
+
+$AUTOMAKE
diff --git a/t/comment6.sh b/t/comment6.sh
new file mode 100755 (executable)
index 0000000..9fd8d10
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR/322.
+# Automake 1.6.1 seems to have a problem parsing comments that use
+# '\' to span multiple lines.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AC_OUTPUT
+EOF
+
+## There are two tests: one with backslashed comments at the top
+## of the file, and one with a rule first.  This is because
+## Comments at the top of the file are handled specially
+## since Automake 1.5.
+
+cat > Makefile.am << 'EOF'
+# SOME_FILES = \
+         file1 \
+         file2 \
+         file3
+
+all-local:
+       @echo Good
+
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
+
+grep '# SOME_FILES' Makefile
+grep '# *file3' Makefile
+
+cat > Makefile.am << 'EOF'
+all-local:
+       @echo Good
+
+# SOME_FILES = \
+         file1 \
+         file2 \
+         file3
+EOF
+
+$AUTOMAKE
+./configure
+$MAKE
+grep '# SOME_FILES' Makefile
+grep '# *file3' Makefile
+
+:
diff --git a/t/comment7.sh b/t/comment7.sh
new file mode 100755 (executable)
index 0000000..5637fb7
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure comment for conditional variables are output near the
+# corresponding conditional definitions.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AM_CONDITIONAL([COND], [true])
+EOF
+
+cat > Makefile.am << 'EOF'
+if COND
+# Comment for VAR in COND_TRUE.
+VAR = foo
+else
+# Comment for VAR in COND_FALSE.
+VAR = bar
+endif
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+
+# The VAR definition appears once for each condition.
+test `grep '@COND_TRUE@VAR' Makefile.in | wc -l` = 1
+test `grep '@COND_FALSE@VAR' Makefile.in | wc -l` = 1
+
+# Make sure the right definition follows each comment.
+sed -n '/^#.*VAR.*COND_TRUE/ {
+          n
+          p
+        }' Makefile.in |
+  grep '@COND_TRUE@VAR = foo'
+sed -n '/^#.*VAR.*COND_FALSE/ {
+          n
+          p
+        }' Makefile.in |
+  grep '@COND_FALSE@VAR = bar'
diff --git a/t/comment8.sh b/t/comment8.sh
new file mode 100755 (executable)
index 0000000..3ed31e7
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure += does not append to a comment.
+# Report from Stepan Kasal.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [true])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'EOF'
+VAR = valA# comA ## com C
+VAR += valB # comB
+if COND1
+  VAR += val1 # com1
+endif COND1
+VAR += valC
+if COND2
+  VAR += val2 # com2
+endif COND2
+
+.PHONY: test
+test:
+       is $(VAR) == valA valB val1 valC val2
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE test
diff --git a/t/comment9.sh b/t/comment9.sh
new file mode 100755 (executable)
index 0000000..a75fafc
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure ##-comments are ignored in variable definitions.
+# Report from Julien Sopena.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+TESTS = \
+   1.test \
+   2.test \
+   3.test \
+## 4.test \
+   5.test \
+   6.test \
+   7.test
+EOF
+
+: > test-driver
+
+$ACLOCAL
+$AUTOMAKE
+
+sed -n -e '/^TESTS =.*\\$/ {
+   :loop
+   p
+   n
+   t clear
+   :clear
+   s/\\$/\\/
+   t loop
+   p
+   n
+   }' -e '/^TESTS =/ p' Makefile.in > tests
+
+grep '3\.test' tests
+grep '##' tests && Exit 1
+grep '4\.test' tests && Exit 1
+grep '5\.test' tests
diff --git a/t/comments-in-var-def.sh b/t/comments-in-var-def.sh
new file mode 100755 (executable)
index 0000000..5c01d76
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake ignores in-line comments when using variables,
+# but preserve them in the output.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+# Use a slash in the comment, because automake takes the dirname
+# of TEXINFO_TEX to compute $(am__TEXINFO_TEX_DIR).
+cat > Makefile.am << 'END'
+TEXINFO_TEX = tex/texinfo.tex    # some comment w/ a slash
+info_TEXINFOS = main.texi
+.PHONY: test
+test:
+       test tex/texinfo.tex = $(TEXINFO_TEX)
+       test -d '$(am__TEXINFO_TEX_DIR)'
+       case '$(am__TEXINFO_TEX_DIR)' in tex|./tex) :;; *) exit 1;; esac
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+END
+
+mkdir tex
+: > tex/texinfo.tex
+
+$ACLOCAL
+$AUTOMAKE
+
+grep TEX Makefile.in # For debugging.
+grep '^TEXINFO_TEX *= *tex/texinfo\.tex  *# some comment w/ a slash *$' Makefile.in
+
+$AUTOCONF
+./configure
+$MAKE test
+
+:
diff --git a/t/compile-w.sh b/t/compile-w.sh
new file mode 100755 (executable)
index 0000000..86ce9ef
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/compile.sh"; then
+    echo "$0: will source $dir/t/compile.sh"
+    . "$dir/t/compile.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/compile.sh'" >&2
+exit '99'
diff --git a/t/compile.sh b/t/compile.sh
new file mode 100755 (executable)
index 0000000..638a0d7
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'compile' preserves spaces in its arguments.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+get_shell_script compile
+
+# -o 'a  c' should not be stripped because 'a  c' is not an object
+# (it does not matter whether touch creates ./-- or not)
+./compile touch a.o -- -o 'a  c' a.c
+test -f 'a  c'
+test -f ./-o
+test -f a.o
+test -f a.c
+
+rm -f 'a  c' ./-o a.o a.c
+
+./compile touch a.o -- -o 'a  c.o' a.c
+test -f 'a  c.o'
+test ! -f ./-o
+test ! -f a.o
+test -f a.c
+
+# Make sure 'compile' works for .obj too.
+./compile touch a.obj -- -o ac.obj a.c
+test ! -f a.obj
+test ac.obj
+
+:
diff --git a/t/compile2-w.sh b/t/compile2-w.sh
new file mode 100755 (executable)
index 0000000..aecb103
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/compile2.sh"; then
+    echo "$0: will source $dir/t/compile2.sh"
+    . "$dir/t/compile2.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/compile2.sh'" >&2
+exit '99'
diff --git a/t/compile2.sh b/t/compile2.sh
new file mode 100755 (executable)
index 0000000..f808607
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'compile' deals correctly with Windows-style paths.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+get_shell_script compile
+
+cat >mycc <<'END'
+source_seen=no
+for arg
+do
+  test "X$arg" = X-o && exit 1
+  test "X$arg" = "X$amtest_source" && source_seen=yes
+done
+if test "$source_seen" != yes; then
+  echo "$0: no source file seen" >&2
+  exit 1
+fi
+if test ! -f "$amtest_source"; then
+  echo "$0: $amtest_source not readable" >&2
+  exit 1
+fi
+if test ! -d "$amtest_lock"; then
+  echo "$0: no lockdir $amtest_lock" >&2
+  exit 1
+fi
+touch "$amtest_obj"
+END
+
+chmod +x ./mycc
+
+# In case this test runs on a system with backslash directory separators:
+mkdir libltdl libltdl/libltdl
+
+# Backslashes in the input and the output name should be accepted.
+# Since this test might run on non-w32 systems, we need to be careful not
+# to use any backslash sequences which might be interpreted by 'echo'.
+amtest_source='libltdl\libltdl\slist.c'
+amtest_object='libltdl\libltdl\libltdl_libltdl_la-slist.obj'
+amtest_obj='slist.o'
+amtest_lock='slist_o.d'
+export amtest_source amtest_object amtest_obj amtest_lock
+
+: > "$amtest_source"
+./compile ./mycc -c "$amtest_source" -o "$amtest_object"
+test -f "$amtest_object"
+
+# Absolute Windows paths should be accepted.
+# Do not actually run this test on anything that could be Windows.
+if test -d 'C:\'; then
+  skip_ "this test shouldn't run on a Windows-like system"
+fi
+case $PATH_SEPARATOR in
+ ';'|':');;
+ *) skip_ "unrecognized PATH separator '$PATH_SEPARATOR'"
+esac
+
+amtest_source='C:\libltdl\libltdl\slist.c'
+amtest_object='C:\libltdl\libltdl\libltdl_libltdl_la-slist.obj'
+amtest_obj='slist.o'
+amtest_lock='slist_o.d'
+export amtest_source amtest_object amtest_obj amtest_lock
+
+: > "$amtest_source"
+./compile ./mycc -c "$amtest_source" -o "$amtest_object"
+test -f "$amtest_object"
+
+:
diff --git a/t/compile3-w.sh b/t/compile3-w.sh
new file mode 100755 (executable)
index 0000000..f740c3a
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/compile3.sh"; then
+    echo "$0: will source $dir/t/compile3.sh"
+    . "$dir/t/compile3.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/compile3.sh'" >&2
+exit '99'
diff --git a/t/compile3.sh b/t/compile3.sh
new file mode 100755 (executable)
index 0000000..009de70
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'compile' wraps the Microsoft C/C++ compiler (cl) correctly
+
+am_create_testdir=empty
+required=xsi-lib-shell
+. ./defs || Exit 1
+
+get_shell_script compile
+
+# Use a dummy cl, since cl isn't readily available on all systems
+cat >cl <<'END'
+#! /bin/sh
+echo "$@"
+END
+
+chmod +x ./cl
+
+# POSIX mandates that the compiler accepts a space between the -I,
+# -l and -L options and their respective arguments.  Traditionally,
+# this should work also without a space.  Try both usages.
+for sp in '' ' '; do
+  # Check if compile handles "-o foo", -I, -l, -L, -Xlinker -Wl,
+  opts=`LIB= ./compile ./cl foo.c -o foo -l${sp}bar -L${sp}gazonk -I${sp}baz -Xlinker foobar -Wl,-foo,bar`
+  test x"$opts" = x"foo.c -Fefoo bar.lib -Ibaz -link -LIBPATH:gazonk foobar -foo bar"
+
+  # Check if compile handles "-o foo.obj"
+  opts=`./compile ./cl -c foo.c -o foo.obj -I${sp}baz`
+  test x"$opts" = x"-c foo.c -Fofoo.obj -Ibaz"
+
+  # Check if compile handles "-o foo.o"
+  opts=`./compile ./cl -c foo.c -o foo.o -I${sp}baz`
+  test x"$opts" = x"-c foo.c -Fofoo.o -Ibaz"
+
+  # Check if compile handles "foo.cc" as C++.
+  opts=`./compile ./cl -c foo.cc -o foo.o -I${sp}baz`
+  test x"$opts" = x"-c -Tpfoo.cc -Fofoo.o -Ibaz"
+
+  # Check if compile clears the "eat" variable properly.
+  opts=`eat=1 ./compile ./cl -c foo.c -o foo.obj -I${sp}baz`
+  test x"$opts" = x"-c foo.c -Fofoo.obj -Ibaz"
+done
+
+:
diff --git a/t/compile4-w.sh b/t/compile4-w.sh
new file mode 100755 (executable)
index 0000000..88b0155
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/compile4.sh"; then
+    echo "$0: will source $dir/t/compile4.sh"
+    . "$dir/t/compile4.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/compile4.sh'" >&2
+exit '99'
diff --git a/t/compile4.sh b/t/compile4.sh
new file mode 100755 (executable)
index 0000000..bb9f671
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'compile' wraps the Microsoft C/C++ compiler (cl) correctly
+# with respect to absolute paths.
+
+required='cl'
+. ./defs || Exit 1
+
+get_shell_script compile
+
+mkdir sub
+
+cat >sub/foo.c <<'EOF'
+int
+foo ()
+{
+  return 0;
+}
+EOF
+
+cat >main.c <<'EOF'
+extern int foo ();
+int
+main ()
+{
+  return foo ();
+}
+EOF
+
+absfoodir=`pwd`/sub
+absmainc=`pwd`/main.c
+absmainobj=`pwd`/main.obj
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+END
+
+cat > sub/Makefile.am << 'END'
+lib_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE
+
+./compile cl $CPPFLAGS $CFLAGS -c -o "$absmainobj" "$absmainc"
+
+# cl expects archives to be named foo.lib, not libfoo.a so
+# make a simple copy here if needed. This is a severe case
+# of badness, but ignore that since this is not what is
+# being tested here...
+if test -f sub/libfoo.a; then
+  cp sub/libfoo.a sub/foo.lib
+fi
+
+# POSIX mandates that the compiler accepts a space between the -I,
+# -l and -L options and their respective arguments.  Traditionally,
+# this should work also without a space.  Try both usages.
+for sp in '' ' '; do
+  rm -f main
+
+  ./compile cl $CFLAGS $LDFLAGS -L${sp}"$absfoodir" "$absmainobj" -o main -l${sp}foo
+
+  ./main
+done
+
+:
diff --git a/t/compile5-w.sh b/t/compile5-w.sh
new file mode 100755 (executable)
index 0000000..92f0f1f
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/compile5.sh"; then
+    echo "$0: will source $dir/t/compile5.sh"
+    . "$dir/t/compile5.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/compile5.sh'" >&2
+exit '99'
diff --git a/t/compile5.sh b/t/compile5.sh
new file mode 100755 (executable)
index 0000000..02afca3
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the file name translation in the 'compile' script works
+# correctly
+
+. ./defs || Exit 1
+
+get_shell_script compile
+
+# Use a dummy cl, since cl isn't readily available on all systems
+cat >cl <<'END'
+#! /bin/sh
+echo "$@"
+END
+
+chmod +x ./cl
+
+cat >>configure.ac << 'END'
+AC_CANONICAL_HOST
+AC_CONFIG_FILES([check_host], [chmod +x check_host])
+AC_OUTPUT
+END
+
+: >Makefile.am
+
+# This will be sourced, nor executed.
+cat >check_host.in << 'END'
+case '@host_os@' in
+  mingw*)
+    ;;
+  *)
+    skip_ "target OS is not MinGW"
+    ;;
+esac
+case @build_os@ in
+  mingw* | cygwin*)
+    ;;
+  *)
+    winepath -w / \
+      || skip_ "not on MinGW or Cygwin, and winepath not available"
+    ;;
+esac
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+. ./check_host
+
+pwd=`pwd`
+
+# POSIX mandates that the compiler accepts a space between the -I,
+# -l and -L options and their respective arguments.  Traditionally,
+# this should work also without a space.  Try both usages.
+for sp in '' ' '; do
+  # Check if "compile cl" transforms absolute file names to
+  # host format (e.g /somewhere -> c:/msys/1.0/somewhere).
+
+  res=`./compile ./cl -L${sp}"$pwd" | sed -e 's/-link -LIBPATH://'`
+
+  case $res in
+    ?:[\\/]*)
+      ;;
+    *)
+      Exit 1
+      ;;
+  esac
+done
+
+:
diff --git a/t/compile6-w.sh b/t/compile6-w.sh
new file mode 100755 (executable)
index 0000000..b4e0716
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/compile6.sh"; then
+    echo "$0: will source $dir/t/compile6.sh"
+    . "$dir/t/compile6.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/compile6.sh'" >&2
+exit '99'
diff --git a/t/compile6.sh b/t/compile6.sh
new file mode 100755 (executable)
index 0000000..9db3373
--- /dev/null
@@ -0,0 +1,105 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'compile' searches libraries correctly
+
+am_create_testdir=empty
+required=xsi-lib-shell
+. ./defs || Exit 1
+
+get_shell_script compile
+
+# Use a dummy cl, since cl isn't readily available on all systems
+cat >cl <<'END'
+#! /bin/sh
+echo "$@"
+END
+
+chmod +x ./cl
+
+# POSIX mandates that the compiler accepts a space between the -I,
+# -l and -L options and their respective arguments.  Traditionally,
+# this should work also without a space.  Try both usages.
+for sp in '' ' '; do
+  rm -rf lib lib2 syslib "sys  lib2"
+
+  mkdir syslib
+  :> syslib/foo.lib
+
+  syslib=`pwd`/syslib
+  LIB=$syslib
+  export LIB
+
+  mkdir lib
+  :> lib/bar.lib
+  :> lib/bar.dll.lib
+
+  # Check if compile library search correctly
+  opts=`./compile ./cl foo.c -o foo -L${sp}lib -l${sp}bar -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link -LIBPATH:lib"
+
+  # Check if -static makes compile avoid bar.dll.lib
+  opts=`./compile ./cl foo.c -o foo -L${sp}lib -static -l${sp}bar -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo lib/bar.lib $syslib/foo.lib -link -LIBPATH:lib"
+
+  :> syslib/bar.lib
+  :> syslib/bar.dll.lib
+
+  # Check if compile finds bar.dll.lib in syslib
+  opts=`./compile ./cl foo.c -o foo -l${sp}bar -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo $syslib/bar.dll.lib $syslib/foo.lib"
+
+  # Check if compile prefers -L over $LIB
+  opts=`./compile ./cl foo.c -o foo -L${sp}lib -l${sp}bar -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link -LIBPATH:lib"
+
+  mkdir lib2
+  :> lib2/bar.dll.lib
+
+  # Check if compile avoids bar.dll.lib in lib2 when -static
+  opts=`./compile ./cl foo.c -o foo -L${sp}lib2 -static -l${sp}bar -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo $syslib/bar.lib $syslib/foo.lib -link -LIBPATH:lib2"
+
+  # Check if compile gets two different bar libraries when -static
+  # is added in the middle
+  opts=`./compile ./cl foo.c -o foo -L${sp}lib2 -L${sp}lib -l${sp}bar -static -l${sp}bar`
+  test x"$opts" = x"foo.c -Fefoo lib2/bar.dll.lib lib/bar.lib -link -LIBPATH:lib2 -LIBPATH:lib"
+
+  # Check if compile gets the correct bar.dll.lib
+  opts=`./compile ./cl foo.c -o foo -L${sp}lib -L${sp}lib2 -l${sp}bar -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link -LIBPATH:lib -LIBPATH:lib2"
+
+  # Check if compile gets the correct bar.dll.lib
+  opts=`./compile ./cl foo.c -o foo -L${sp}lib2 -L${sp}lib -l${sp}bar -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo lib2/bar.dll.lib $syslib/foo.lib -link -LIBPATH:lib2 -LIBPATH:lib"
+
+  mkdir "sys  lib2"
+  :> "sys  lib2/foo.dll.lib"
+
+  syslib2="`pwd`/sys  lib2"
+  LIB="$syslib2;$LIB"
+
+  # Check if compile handles spaces in $LIB and that it prefers the order
+  # in a multi-component $LIB.
+  opts=`./compile ./cl foo.c -o foo -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo $syslib2/foo.dll.lib"
+
+  # Check if compile handles the 2nd directory in a multi-component $LIB.
+  opts=`./compile ./cl foo.c -o foo -static -l${sp}foo`
+  test x"$opts" = x"foo.c -Fefoo $syslib/foo.lib"
+done
+
+:
diff --git a/t/compile_f90_c_cxx.sh b/t/compile_f90_c_cxx.sh
new file mode 100755 (executable)
index 0000000..806c59f
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure rules to invoke all compilers are selected with
+# mixed source objects.
+# (copied from compile_f_c_cxx.test) Mike Nolta <mrnolta@princeton.edu>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_FC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES  = foo.f90 bar.c baz.cc
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# Look for the macros at the beginning of rules.
+tab=
+$FGREP "$tab\$(COMPILE)"    Makefile.in
+$FGREP "$tab\$(CXXCOMPILE)" Makefile.in
+$FGREP "$tab\$(FCCOMPILE)"  Makefile.in
+
+:
diff --git a/t/compile_f_c_cxx.sh b/t/compile_f_c_cxx.sh
new file mode 100755 (executable)
index 0000000..99893d8
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure rules to invoke all compilers are selected with
+# mixed source objects.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_F77
+AC_F77_LIBRARY_LDFLAGS
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES  = foo.f bar.c baz.cc
+END
+
+: > config.guess
+: > config.sub
+
+$ACLOCAL
+$AUTOMAKE
+
+# Look for the macros at the beginning of rules.
+$FGREP "$tab\$(COMPILE)"    Makefile.in
+$FGREP "$tab\$(CXXCOMPILE)" Makefile.in
+$FGREP "$tab\$(F77COMPILE)" Makefile.in
+
+:
diff --git a/t/cond-basic.sh b/t/cond-basic.sh
new file mode 100755 (executable)
index 0000000..5d18b5c
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check basic use of conditionals.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([TEST], [true])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if TEST
+target: true
+       action
+else
+target: false
+endif
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^@TEST_TRUE@target: true' Makefile.in
+grep "^@TEST_TRUE@${tab}action" Makefile.in
+grep '^@TEST_FALSE@target: false' Makefile.in
+
+:
diff --git a/t/cond.sh b/t/cond.sh
new file mode 100755 (executable)
index 0000000..f7f0a8c
--- /dev/null
+++ b/t/cond.sh
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check basic use of conditionals.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([TEST], [true])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if TEST
+VAR = true
+else
+VAR = false
+endif
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^TEST_FALSE' Makefile.in && Exit 1
+grep '^TEST_TRUE' Makefile.in && Exit 1
+grep '^@TEST_TRUE@VAR = true$' Makefile.in
+grep '^@TEST_FALSE@VAR = false$' Makefile.in
+
+:
diff --git a/t/cond10.sh b/t/cond10.sh
new file mode 100755 (executable)
index 0000000..56a9083
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in conditionals.  From Raja R Harinath.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([USE_A], [test x = y])
+AM_CONDITIONAL([USE_B], [test x = z])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if USE_A
+out=output_a.c
+else
+if USE_B
+out=output_b.c
+else
+out=output_c.c
+endif
+endif
+
+noinst_PROGRAMS=foo
+foo_SOURCES=foo.c $(out)
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+grep 'USE_A_FALSE.*USE_B_FALSE.*output_c\...OBJEXT.' Makefile.in
+
+:
diff --git a/t/cond11.sh b/t/cond11.sh
new file mode 100755 (executable)
index 0000000..b53cb70
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in conditionals.  From Richard Boulton.
+# This checks that, if LDADD is set from a conditional variable
+# and an AC_SUBST, the _DEPENDENCIES variable is set correctly.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([CC], [false])
+AM_CONDITIONAL([USE_A], [test -z "$two"])
+AC_SUBST([SUBSTVAR], [bar])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if USE_A
+foolibs=faz.la
+else
+foolibs=
+endif
+
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.c
+LDADD = $(SUBSTVAR) $(foolibs)
+
+.PHONY: test1 test2
+test1:
+       is faz.la == $(foo_DEPENDENCIES)
+test2:
+       is "" == $(foo_DEPENDENCIES)
+END
+
+: > config.guess
+: > config.sub
+: > compile
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --ignore-deps
+
+./configure
+$MAKE test1
+
+./configure two=yes
+$MAKE test2
+
+:
diff --git a/t/cond13.sh b/t/cond13.sh
new file mode 100755 (executable)
index 0000000..1ab328d
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in conditionals.
+# Report from Lars J. Aas.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_AR
+AC_PROG_RANLIB
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [true])
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtest.a
+
+if COND1
+SOURCEVAR1 =
+SOURCEVAR2 = habla.cpp espanol.cpp
+else
+SOURCEVAR1 = dummy.cpp
+SOURCEVAR2 =
+endif
+
+if COND2
+TESTSOURCES = $(SOURCEVAR1)
+else
+TESTSOURCES = $(SOURCEVAR2)
+endif
+
+libtest_a_SOURCES = $(TESTSOURCES)
+END
+
+: > ar-lib
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^am_libtest_a_OBJECTS =' Makefile.in
+
+:
diff --git a/t/cond14.sh b/t/cond14.sh
new file mode 100755 (executable)
index 0000000..f3725c3
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in conditionals.
+# Report from Robert Boehne.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([COND1], [true])
+END
+
+cat > Makefile.am << 'END'
+if COND1
+BUILD_helldl = helldl
+helldl_SOURCES = dlmain.c
+helldl_DEPENDENCIES = libhello.la
+else
+BUILD_helldl =
+bin_SCRIPTS = helldl
+helldl$(EXEEXT):
+       rm -f $@
+       echo '#! /bin/sh' > $@
+       echo '-dlopen is unsupported' >> $@
+       chmod +x $@
+endif
+
+bin_PROGRAMS = $(BUILD_helldl)
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP helldl Makefile.in # For debugging.
+test `$FGREP -c 'helldl$(EXEEXT):' Makefile.in` -eq 2
+
+:
diff --git a/t/cond15.sh b/t/cond15.sh
new file mode 100755 (executable)
index 0000000..68f70fd
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for conditionally defined overriding of automatic rules.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [true])
+END
+
+cat > Makefile.am << 'END'
+if COND1
+if COND2
+bin_SCRIPTS = helldl
+helldl$(EXEEXT):
+       rm -f $@
+       echo '#! /bin/sh' > $@
+       echo '-dlopen is unsupported' >> $@
+       chmod +x $@
+endif
+else
+if COND2
+else
+bin_SCRIPTS = helldl
+helldl$(EXEEXT):
+       rm -f $@
+       echo '#! /bin/sh' > $@
+       echo '-dlopen is unsupported' >> $@
+       chmod +x $@
+endif
+endif
+
+bin_PROGRAMS = helldl
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP helldl Makefile.in # For debugging.
+num1=`$FGREP 'helldl$(EXEEXT):' Makefile.in | wc -l`
+num2=`$FGREP '@COND1_FALSE@@COND2_TRUE@helldl$(EXEEXT):' Makefile.in | wc -l`
+test $num1 -eq 4
+test $num2 -eq 1
+
+:
diff --git a/t/cond16.sh b/t/cond16.sh
new file mode 100755 (executable)
index 0000000..11a4f68
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in conditionals in SOURCES with variable substitution
+# references.
+# Report from Richard Boulton.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND1], [true])
+AC_OUTPUT
+END
+
+: > hello.c
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+OBJEXT = o
+
+if COND1
+var = foo.c
+else
+var = foo.c
+endif
+
+bin_PROGRAMS = hell
+hell_SOURCES = $(var:=)
+
+.PHONY: test
+test:
+       is $(hell_SOURCES) $(hell_OBJECTS) == foo.c foo.o
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE test
+
+:
diff --git a/t/cond17.sh b/t/cond17.sh
new file mode 100755 (executable)
index 0000000..37a0793
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for being able to define an object to be generated in different ways
+# according to a conditional.
+# Report from Richard Boulton.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AM_CONDITIONAL([COND1], [true])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = helldl
+if COND1
+helldl_SOURCES = foo.cc
+else
+helldl_SOURCES = foo.c
+endif
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+:
diff --git a/t/cond18.sh b/t/cond18.sh
new file mode 100755 (executable)
index 0000000..32c0ab2
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for substitution references to conditional variables.
+# Report from Richard Boulton.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [true])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+OBJEXT = obj
+
+var1 = dlmain
+
+if COND1
+var2 = $(var1:=.c) foo.cc
+else
+var2 = $(var1:=.c)
+endif
+
+if COND2
+var3 = $(var2:.cc=.c)
+else
+var3 = $(var2:.cc=.c)
+endif
+
+helldl_SOURCES = $(var3)
+
+.PHONY: test
+test:
+       is $(helldl_SOURCES) $(helldl_OBJECTS) == \
+           dlmain.c foo.c dlmain.obj foo.obj
+
+bin_PROGRAMS = helldl
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE test
+
+:
diff --git a/t/cond19.sh b/t/cond19.sh
new file mode 100755 (executable)
index 0000000..86f677e
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for substitution references to conditional variables.
+# Report from Richard Boulton.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([CC], [false])
+AC_SUBST([OBJEXT], [o])
+AM_CONDITIONAL([COND1], [test "x$CONDITION1" = "xtrue"])
+AM_CONDITIONAL([COND2], [test "x$CONDITION2" = "xtrue"])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = helldl
+
+var1 = dlmain
+
+if COND1
+var2 = $(var1:=.c)
+else
+var2 = $(var1:=.c)
+endif
+
+if COND2
+var3 = $(var2:.c=a.c)
+var4 = $(var2:.c=b.c)
+else
+var3 = $(var2:.c=b.c)
+var4 = $(var2:.c=a.c)
+endif
+
+helldl_SOURCES = $(var3:.c=1.c) $(var4:.c=2.c)
+
+.PHONY: test
+test:
+       is $(exp) == $(helldl_SOURCES) $(helldl_OBJECTS)
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a -i
+
+CONDITION1=true CONDITION2=true ./configure
+$MAKE test exp='dlmaina1.c dlmainb2.c dlmaina1.o dlmainb2.o'
+CONDITION1=true CONDITION2=false ./configure
+$MAKE test exp='dlmainb1.c dlmaina2.c dlmainb1.o dlmaina2.o'
+CONDITION1=false CONDITION2=true ./configure
+$MAKE test exp='dlmaina1.c dlmainb2.c dlmaina1.o dlmainb2.o'
+CONDITION1=false CONDITION2=false ./configure
+$MAKE test exp='dlmainb1.c dlmaina2.c dlmainb1.o dlmaina2.o'
+
+:
diff --git a/t/cond2.sh b/t/cond2.sh
new file mode 100755 (executable)
index 0000000..1b5fcea
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check SUBDIRS set based on conditionals.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([TEST], [true])
+END
+
+cat > Makefile.am << 'END'
+if TEST
+DIR = dir1
+else
+DIR = dir2
+endif
+SUBDIRS = $(DIR)
+END
+
+mkdir dir1
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile\.am:4:.*dir2.*does not exist' stderr
+
+:
diff --git a/t/cond20.sh b/t/cond20.sh
new file mode 100755 (executable)
index 0000000..40e41f1
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for recursion handling in substitution references to
+# conditional variables.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([COND1], [true])
+END
+
+cat > Makefile.am << 'END'
+var1 = $(var2)
+
+if COND1
+var2 = $(var1:=.c) foo.c
+else
+var2 = $(var1:=.c)
+endif
+
+helldl_SOURCES = $(var2)
+
+bin_PROGRAMS = helldl
+END
+
+$ACLOCAL
+$AUTOCONF
+AUTOMAKE_fails -a
+grep "variable.*var2.*recursively defined" stderr
+
+:
diff --git a/t/cond21.sh b/t/cond21.sh
new file mode 100755 (executable)
index 0000000..7719c83
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for use of = and += in different conditions.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [true])
+AM_CONDITIONAL([COND3], [true])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+
+FOO = foo
+if COND1
+  FOO += foo1
+else
+  FOO += foon1
+endif
+if COND2
+  FOO += foo2
+else
+  FOO += foon2
+endif
+if COND1
+  FOO += foo1b
+else
+  FOO += foon1b
+endif
+
+if COND1
+if COND2
+  BAR = bar12
+else
+  BAR = bar1n2
+endif
+else
+  BAR = barn1
+endif
+
+BAR += bar
+
+if COND3
+  BAR += bar3
+endif
+
+.PHONY: test
+test:
+       @echo BAR: $(BAR) :BAR
+       @echo FOO: $(FOO) :FOO
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE test | $FGREP 'BAR: bar12 bar bar3 :BAR'
+$MAKE test | $FGREP 'FOO: foo foo1 foo2 foo1b :FOO'
+
+:
diff --git a/t/cond22.sh b/t/cond22.sh
new file mode 100755 (executable)
index 0000000..7a58c24
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for bug when sources listed in conditional.
+# Report from Richard Boulton.  PR/326.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+CC=false; AC_SUBST([CC])
+OBJEXT=oo; AC_SUBST([OBJEXT])
+AM_CONDITIONAL([ONE], [true])
+AM_CONDITIONAL([TWO], [false])
+AM_CONDITIONAL([THREE], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = targ
+
+if ONE
+SONE = one.c
+endif
+
+if TWO
+STWO =
+else
+STWO = two.c
+endif
+
+if THREE
+STHREE =
+else
+STHREE = three.c
+endif
+
+if THREE
+STHREE2 =
+else
+STHREE2 = three2.c
+endif
+
+targ_SOURCES = $(SONE) $(STWO) $(STHREE) $(STHREE2)
+
+.PHONY: test
+test:
+       is $(targ_OBJECTS) == one.oo two.oo three.oo three2.oo
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --ignore-deps
+./configure
+$MAKE test
+
+:
diff --git a/t/cond23.sh b/t/cond23.sh
new file mode 100755 (executable)
index 0000000..d6c2bdf
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that conditional redefinitions of AC_SUBST'ed variables are detected.
+# Report from Patrik Weiskircher.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AM_CONDITIONAL([COND], [true])
+AC_OUTPUT
+EOF
+
+cat >Makefile.am <<EOF
+if COND
+libdir = mumble
+endif
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile\.am:2:.* libdir was already defined' stderr
+
+:
diff --git a/t/cond24.sh b/t/cond24.sh
new file mode 100755 (executable)
index 0000000..b7038cc
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that conditional redefinitions of AC_SUBST'ed variables are detected.
+# Report from Patrik Weiskircher.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_SUBST([foo], [bar])
+AM_CONDITIONAL([COND], [true])
+EOF
+
+cat >Makefile.am <<EOF
+if COND
+## A dummy comment to change line numer.
+foo = baz
+endif
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile\.am:3:.* foo was already defined' stderr
+grep '^configure\.ac:4:.*foo.* previously defined here' stderr
+
+:
diff --git a/t/cond25.sh b/t/cond25.sh
new file mode 100755 (executable)
index 0000000..c427033
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that conditional primaries can use non-conditional directories.
+# From Pavel Roskin.
+
+. ./defs || Exit 1
+
+cat >>configure.ac << 'EOF'
+AM_CONDITIONAL([USE_FOO], [true])
+AC_PROG_CC
+EOF
+
+cat >Makefile.am << 'EOF'
+if USE_FOO
+foo_PROGRAMS = foo
+endif
+
+foodir = $(libdir)/foo
+foo_SOURCES = foo.c
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/cond26.sh b/t/cond26.sh
new file mode 100755 (executable)
index 0000000..f0aac96
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that non-conditional primaries can use conditional directories.
+# Reported by Juergen Keil.
+
+. ./defs || Exit 1
+
+cat >>configure.ac << 'EOF'
+AM_CONDITIONAL([USE_FOO], [true])
+EOF
+
+cat >Makefile.am << 'EOF'
+if USE_FOO
+mydir = /foo
+else
+mydir = /bar
+endif
+my_DATA = foo
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/cond27.sh b/t/cond27.sh
new file mode 100755 (executable)
index 0000000..0a8263d
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that non-conditional primaries cannot use directories defined
+# in some conditions (but not others).
+
+. ./defs || Exit 1
+
+cat >>configure.ac << 'EOF'
+AM_CONDITIONAL([USE_FOO], [true])
+EOF
+
+cat >Makefile.am << 'EOF'
+if USE_FOO
+mydir = /foo
+endif
+my_DATA = foo
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails
+grep ' USE_FOO' stderr && Exit 1
+grep '!USE_FOO' stderr
+
+:
diff --git a/t/cond28.sh b/t/cond28.sh
new file mode 100755 (executable)
index 0000000..7a6bcff
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that conditional primaries can use directories defined
+# in the same conditions (but not others).
+
+. ./defs || Exit 1
+
+cat >>configure.ac << 'EOF'
+AM_CONDITIONAL([USE_FOO], [true])
+EOF
+
+cat >Makefile.am << 'EOF'
+if USE_FOO
+mydir = /foo
+endif
+if USE_FOO
+my_DATA = foo
+endif
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/cond3.sh b/t/cond3.sh
new file mode 100755 (executable)
index 0000000..2bcb8c1
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test sources listed in conditional.
+# Report from Rob Savoye <rob@cygnus.com>, and Lars J. Aas.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([ONE], [true])
+AM_CONDITIONAL([TWO], [false])
+AM_CONDITIONAL([THREE], [maybe])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = targ
+
+if ONE
+SONE = one.c
+else
+SONE =
+endif
+
+if TWO
+STWO = two.c
+else
+STWO =
+endif
+
+if THREE
+STHREE = three.c
+else
+STHREE =
+endif
+
+targ_SOURCES = $(SONE) $(STWO) $(STHREE)
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# 'b top' so that
+sed -n '
+/[oO][bB][jJ][eE][cC][tT].* =/ {
+  : loop
+  /\\$/ {
+    p
+    n
+    b loop
+  }
+  p
+}' Makefile.in >produced
+
+cat >expected << 'EOF'
+@ONE_TRUE@am__objects_1 = one.$(OBJEXT)
+@TWO_TRUE@am__objects_2 = two.$(OBJEXT)
+@THREE_TRUE@am__objects_3 = three.$(OBJEXT)
+am_targ_OBJECTS = $(am__objects_1) $(am__objects_2) $(am__objects_3)
+targ_OBJECTS = $(am_targ_OBJECTS)
+EOF
+
+diff expected produced
+
+:
diff --git a/t/cond30.sh b/t/cond30.sh
new file mode 100755 (executable)
index 0000000..6c2b396
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# For PR/352: make sure we support bin_PROGRAMS being defined conditionally.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_CONDITIONAL([C1], [test -z "$two"])
+AM_CONDITIONAL([C2], [test -n "$two"])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+EXEEXT = .foo
+
+if C1
+bin_PROGRAMS = a
+endif
+if C2
+bin_PROGRAMS = b $(undefined)
+endif
+
+.PHONY: test-a test-b
+test-a:
+       test a.foo = $(bin_PROGRAMS)
+test-b:
+       test b.foo = $(bin_PROGRAMS)
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+$FGREP 'a_SOURCES = a.c' Makefile.in
+$FGREP 'b_SOURCES = b.c' Makefile.in
+
+./configure
+$MAKE test-a
+
+./configure two=yes
+$MAKE test-b
+
+:
diff --git a/t/cond31.sh b/t/cond31.sh
new file mode 100755 (executable)
index 0000000..d6006cb
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we define conditional _DEPENDENCIES correctly.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_SUBST([CC], [false])
+AC_SUBST([OBJEXT], [o])
+AM_CONDITIONAL([C1], [test -z "$two"])
+AM_CONDITIONAL([C2], [test -n "$two"])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+bin_PROGRAMS = a
+a_LDADD = c0.o -L/some/where
+if C1
+a_LDADD += c1.o -llibfoo.a
+endif
+if C2
+a_LDADD += c2.o -dlopen c3.la
+endif
+
+.PHONY: test1 test2
+test1:
+       is $(a_DEPENDENCIES) == c0.o c1.o
+test2:
+       is $(a_DEPENDENCIES) == c0.o c2.o c3.la
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --ignore-deps
+
+./configure
+$MAKE test1
+
+./configure two=yes
+$MAKE test2
+
+:
diff --git a/t/cond32.sh b/t/cond32.sh
new file mode 100755 (executable)
index 0000000..7ff1a41
--- /dev/null
@@ -0,0 +1,71 @@
+#!/bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the user can override a conditional _DEPENDENCIES.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_CONDITIONAL([C1], [test -z "$two"])
+AM_CONDITIONAL([C2], [test -n "$two"])
+AM_CONDITIONAL([C3], [test -z "$three"])
+# We define CC in Makefile.am, but OBJEXT here.
+OBJEXT=o; AC_SUBST([OBJEXT])
+AC_SUBST([MYSUB], ["foo.$OBJEXT"])
+AC_OUTPUT
+EOF
+
+cat >>Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = no-dependencies
+CC = :
+
+bin_PROGRAMS = a
+
+if C1
+a_LDADD = $(MYSUB)
+a_DEPENDENCIES = $(MYSUB) nonsense.a
+# Note that 'nonsense.a' is there just to make sure Automake insn't
+# using some self computed a_DEPENDENCIES variable.
+endif
+
+if C2
+if C3
+BAR = bar.o
+else
+BAR = baz.o
+endif
+a_LDADD = $(BAR)
+endif
+
+test:
+       is $(exp) == $(a_DEPENDENCIES)
+.PHONY: test
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test exp='foo.o nonsense.a'
+
+./configure two=yes three=
+$MAKE test exp='bar.o'
+
+./configure two=yes three=yes
+$MAKE test exp='baz.o'
+
+:
diff --git a/t/cond33.sh b/t/cond33.sh
new file mode 100755 (executable)
index 0000000..9655d3b
--- /dev/null
@@ -0,0 +1,79 @@
+#!/bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that conditionally-defined install directories are handled
+# correctly.
+# Report from Ralf Corsepius.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_CONDITIONAL([INC], [test -z "$two"])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+if INC
+include_foodir = $(includedir)/foo
+include_foo_HEADERS = foo.h
+else
+bardir = $(bindir)
+dist_bar_SCRIPTS = x.sh
+endif
+
+foo.h x.sh:
+       :>$@
+
+.PHONY: distdircheck
+distdircheck: distdir
+       test -f $(distdir)/foo.h
+       test -f $(distdir)/x.sh
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+cwd=`pwd` || fatal_ "cannot get current directory"
+mkdir nowhere
+chmod a-w nowhere
+
+./configure --prefix="$cwd"/nowhere --bindir="$cwd"/bin \
+            --includedir="$cwd"/inc
+$MAKE installdirs
+test ! -d bin
+test -d inc/foo
+test ! -f inc/foo/foo.h
+rm -rf inc
+$MAKE install
+test ! -d bin
+test -f inc/foo/foo.h
+$MAKE distdircheck
+
+rm -rf inc
+
+./configure two=two --prefix="$cwd"/nowhere --bindir="$cwd"/bin \
+                    --includedir="$cwd"/inc
+$MAKE install
+test ! -d inc
+test -f bin/x.sh
+rm -rf inc
+$MAKE installdirs
+test ! -d inc
+test -d bin
+$MAKE distdircheck
+
+:
diff --git a/t/cond34.sh b/t/cond34.sh
new file mode 100755 (executable)
index 0000000..8349406
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for _DEPENDENCIES definition with conditional _LDADD.
+# Report from Elena A. Vengerova.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_CONDITIONAL([TWO], [test -n "$two"])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+OBJEXT=z
+CC=false
+AUTOMAKE_OPTIONS=no-dependencies
+
+bin_PROGRAMS = test1 test2
+
+if TWO
+  test1_LDADD = two.$(OBJEXT)
+  test2_LDADD = two.$(OBJEXT)
+  test2_DEPENDENCIES = $(test2_LDADD) somethingelse.a
+else !TWO
+  test1_LDADD = one.$(OBJEXT)
+  test2_LDADD = three.$(OBJEXT)
+endif !TWO
+
+test1_DEPENDENCIES = $(test1_LDADD) somethingelse.a
+
+.PHONY: dep-test1 dep-test2
+dep-test1:
+       echo BEG: $(test1_DEPENDENCIES) :END
+dep-test2:
+       echo BEG: $(test2_DEPENDENCIES) :END
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+$MAKE dep-test1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP 'BEG: one.z somethingelse.a :END' stdout
+
+$MAKE dep-test2 >stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP 'BEG: three.z :END' stdout
+
+./configure two=2
+
+$MAKE dep-test1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP 'BEG: two.z somethingelse.a :END' stdout
+
+$MAKE dep-test2 >stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP 'BEG: two.z somethingelse.a :END' stdout
+
+:
diff --git a/t/cond35.sh b/t/cond35.sh
new file mode 100755 (executable)
index 0000000..043b3b0
--- /dev/null
@@ -0,0 +1,100 @@
+#!/bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check rules output for parser defined conditionally.
+# Report from Roman Fietze.
+
+required='cc lex yacc'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_CONDITIONAL([CASE_A], [test -z "$case_B"])
+AC_PROG_CC
+AM_PROG_LEX
+AC_PROG_YACC
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+AM_YFLAGS               =       -d
+
+BUILT_SOURCES           =       tparse.h
+
+if CASE_A
+bin_PROGRAMS            =       ta
+ta_SOURCES              =       ta.c tparse.h tscan.l tparse.y
+ta_LDADD                =       $(LEXLIB)
+else
+bin_PROGRAMS            =       tb
+tb_SOURCES              =       tb.c tparse.h tscan.l tparse.y
+tb_LDADD                =       $(LEXLIB)
+endif
+
+
+test-ta:
+       test -f ta$(EXEEXT)
+test-tb:
+       test -f tb$(EXEEXT)
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+$FGREP 'tparse.h' Makefile.in # For debugging.
+test `$FGREP -c 'tparse.h:' Makefile.in` = 1
+
+cat > tscan.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END"   return EOF;
+%%
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+cat > tparse.y << 'END'
+%{
+void yyerror (char *s) {}
+%}
+%token EOF
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' EOF {};
+END
+
+cat > ta.c << 'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+cp ta.c tb.c
+
+./configure
+$MAKE
+$MAKE test-ta
+
+./configure case_B=yes
+$MAKE
+$MAKE test-tb
+
+:
diff --git a/t/cond36.sh b/t/cond36.sh
new file mode 100755 (executable)
index 0000000..82200cc
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check rules output for parser defined conditionally.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_CONDITIONAL([CASE_A], [test -z "$case_B"])
+AC_PROG_CC
+AM_PROG_LEX
+AC_PROG_YACC
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+AM_YFLAGS               =       -d
+
+BUILT_SOURCES           =       tparse.h
+
+if CASE_A
+bin_PROGRAMS            =       ta
+ta_SOURCES              =       ta.c tparse.h tscan.l tparse.y
+ta_LDADD                =       $(LEXLIB)
+else
+bin_PROGRAMS            =       tb
+tb_SOURCES              =       tb.c tparse.h tscan.l tparse.y
+tb_LDADD                =       $(LEXLIB)
+tparse.h: tparce.c
+       echo whatever
+endif
+EOF
+
+$ACLOCAL
+
+# Presently Automake doesn't fully support partially overriden rules
+# and should complain.
+AUTOMAKE_fails --add-missing
+grep 'tparse\.h.*already defined' stderr
+$AUTOMAKE -Wno-error
+
+# Still and all, it should generate two rules.
+$FGREP 'tparse.h' Makefile.in # For debugging.
+test `$FGREP -c 'tparse.h:' Makefile.in` = 2
+$FGREP '@CASE_A_TRUE@tparse.h:' Makefile.in
+$FGREP '@CASE_A_FALSE@tparse.h:' Makefile.in
+
+:
diff --git a/t/cond37.sh b/t/cond37.sh
new file mode 100755 (executable)
index 0000000..6423d39
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check conditional local rules.
+# Report from Simon Josefsson.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_CONDITIONAL([CASE_A], [test -n "$case_A"])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+if CASE_A
+check-local:
+       @echo GrepMe1
+else
+install-data-local:
+       @echo GrepMe2
+endif
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep GrepMe1 stdout && Exit 1
+$MAKE install >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep GrepMe2 stdout
+
+./configure case_A=1
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep GrepMe1 stdout
+$MAKE install >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep GrepMe2 stdout && Exit 1
+
+:
diff --git a/t/cond38.sh b/t/cond38.sh
new file mode 100755 (executable)
index 0000000..71ae69a
--- /dev/null
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check conditional variable ordering.
+# Report from Ed Hartnett.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_CONDITIONAL([CASE_A], :)
+AM_CONDITIONAL([CASE_B], :)
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+SUBDIRS = a
+if CASE_A
+SUBDIRS += b
+endif
+SUBDIRS += c
+if CASE_A
+SUBDIRS += d
+if CASE_B
+SUBDIRS += e
+endif
+SUBDIRS += f
+endif
+SUBDIRS += g
+if CASE_B
+SUBDIRS += h
+endif
+if CASE_B
+SUBDIRS += iXYZ
+SUBDIRS += jZYX
+endif
+
+.PHONY: test
+test:
+       is $(SUBDIRS) == a b c d e f g h iXYZ jZYX
+EOF
+
+mkdir a b c d e f g h iXYZ jZYX
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+# Make sure no extra variable was created for the last 3 items.
+grep 'append.*=.* h iXYZ jZYX' Makefile
+# Check good ordering.
+$MAKE test
+
+:
diff --git a/t/cond39.sh b/t/cond39.sh
new file mode 100755 (executable)
index 0000000..840b8b8
--- /dev/null
@@ -0,0 +1,107 @@
+#!/bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Build either as CONFIG_FILE or as PROGRAM.
+
+required=cc
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AM_CONDITIONAL([COND], [test "$COND" = true])
+AM_COND_IF([COND], [],
+          [AC_CONFIG_FILES([prog1], [chmod 755 prog1])
+           AC_CONFIG_FILES([sub/prog2], [chmod 755 sub/prog2])])
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+SUBDIRS = sub
+if COND
+bin_PROGRAMS = prog1
+prog1_SOURCES = prog.c
+else
+bin_SCRIPTS = prog1
+CLEANFILES = prog1
+endif
+
+sure-exist:
+       test -f prog1 || test -f prog1$(EXEEXT)
+       test -f sub/prog2 || test -f sub/prog2$(EXEEXT)
+
+sure-not-exist:
+       test ! -f prog1 && test ! -f prog1$(EXEEXT)
+       test ! -f sub/prog2 && test ! -f sub/prog2$(EXEEXT)
+END
+
+cat >sub/Makefile.am <<'END'
+if COND
+bin_PROGRAMS = prog2
+prog2_SOURCES = prog.c
+else
+bin_SCRIPTS = prog2
+CLEANFILES = prog2
+endif
+END
+
+cat >prog.c <<'END'
+int main () { return 42; }
+END
+
+cat >prog1.in <<'END'
+#! /bin/sh
+bindir='@bindir@'
+echo "hi, this is $0, and bindir is $bindir"
+END
+
+cp prog.c sub
+cp prog1.in sub/prog2.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure COND=true
+$MAKE 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'overriding commands' stderr && Exit 1
+$MAKE sure-exist
+./prog1 && Exit 1
+./sub/prog2 && Exit 1
+$MAKE clean
+$MAKE sure-not-exist
+$MAKE
+$MAKE sure-exist
+./prog1 && Exit 1
+./sub/prog2 && Exit 1
+$MAKE distclean
+
+./configure COND=false
+$MAKE 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'overriding commands' stderr && Exit 1
+./prog1
+./sub/prog2
+$MAKE clean
+$MAKE sure-not-exist
+$MAKE
+./prog1
+./sub/prog2
+
+:
diff --git a/t/cond4.sh b/t/cond4.sh
new file mode 100755 (executable)
index 0000000..9bd0cc6
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another sources-in-conditional test.  Report from Tim Goodwin.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([CC], [false])
+AC_SUBST([OBJEXT], [o])
+AM_CONDITIONAL([ONE], [test "x$CONDITION1" = "xtrue"])
+AM_CONDITIONAL([TWO], [test "x$CONDITION2" = "xtrue"])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = targ
+
+if ONE
+OPT1 = one.c
+endif
+
+if TWO
+OPT2 = two.c
+endif
+
+targ_SOURCES = main.c $(OPT1) $(OPT2)
+
+.PHONY: test
+test:
+       is $(exp) == $(targ_OBJECTS)
+END
+
+$ACLOCAL
+$AUTOMAKE -i
+
+# We should not output useless definitions.
+grep '^@ONE_FALSE@' Makefile.in && Exit 1
+grep '^@TWO_FALSE@' Makefile.in && Exit 1
+
+$AUTOCONF
+
+CONDITION1=true CONDITION2=true ./configure
+$MAKE test exp='main.o one.o two.o'
+CONDITION1=true CONDITION2=false ./configure
+$MAKE test exp='main.o one.o'
+CONDITION1=false CONDITION2=true ./configure
+$MAKE test exp='main.o two.o'
+CONDITION1=false CONDITION2=false ./configure
+$MAKE test exp='main.o'
+
+:
diff --git a/t/cond40.sh b/t/cond40.sh
new file mode 100755 (executable)
index 0000000..7dadfc1
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test AM_COND_IF.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_DEFUN([FOO],
+        [AC_CONFIG_FILES([$1])])
+
+AM_CONDITIONAL([COND], [test "$cond" = yes])
+# Next lines should not cause a shell syntax error.
+AM_COND_IF([COND])
+AM_COND_IF([COND],
+          [AC_SUBST([BAR])])
+AM_COND_IF([COND],
+          [AC_CONFIG_FILES([file1])])
+
+# Things should work even at a time when the shell expressions
+# for the conditional are not valid any more.
+ok=$cond1
+AM_CONDITIONAL([COND1], [test "$ok" = yes])
+ok=$cond2
+AM_CONDITIONAL([COND2], [test "$ok" = yes])
+ok=$cond3
+AM_CONDITIONAL([COND3], [test "$ok" = yes])
+
+AM_COND_IF([COND1],
+          [AM_COND_IF([COND2], [FOO([file2])],
+                      [AM_COND_IF([COND3],
+                                  [FOO([file3])])])])
+
+AC_OUTPUT
+END
+
+: >Makefile.am
+: >file1.in
+: >file2.in
+: >file3.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure cond=yes cond1=yes cond2=no cond3=yes
+test -f file1
+test ! -f file2
+test -f file3
+rm -f file1 file3
+$MAKE file1 file3
+$MAKE file2 && Exit 1
+test -f file1
+test ! -f file2
+test -f file3
+$MAKE distclean
+
+./configure cond=no cond1=yes cond2=yes
+test ! -f file1
+test -f file2
+test ! -f file3
+rm -f file2
+$MAKE file1 && Exit 1
+$MAKE file2
+$MAKE file3 && Exit 1
+test ! -f file1
+test -f file2
+test ! -f file3
+
+:
diff --git a/t/cond41.sh b/t/cond41.sh
new file mode 100755 (executable)
index 0000000..7c59a0a
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# AM_COND_IF with an undefined condition should fail.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_COND_IF([BAD_COND], [AC_CONFIG_FILES([file1])])
+AC_OUTPUT
+END
+
+$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep '^configure\.ac:4:.*AM_COND_IF.* no such condition.*BAD_COND' stderr
+
+:
diff --git a/t/cond42.sh b/t/cond42.sh
new file mode 100755 (executable)
index 0000000..d4eee01
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure an error with inconsistent state of conditionals in configure.ac.
+# This shouldn't happen with user input, as _AM_COND_* are not documented,
+# but better to be safe.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_CONDITIONAL([COND], [:])
+# The next line is needed so that cond-if.m4 is pulled in.
+AM_COND_IF([COND])
+_AM_COND_IF([COND])
+AC_OUTPUT
+END
+
+edit_configure_in ()
+{
+  sed "$@" < configure.ac >configure.int
+  mv -f configure.int configure.ac
+  rm -rf autom4te*.cache
+}
+
+: >Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^configure\.ac:8:.* condition stack' stderr
+
+edit_configure_in 's/_AM_COND_IF/_AM_COND_ELSE/'
+AUTOMAKE_fails
+grep '^configure\.ac:7:.* else without if' stderr
+
+edit_configure_in 's/_AM_COND_ELSE/_AM_COND_ENDIF/'
+AUTOMAKE_fails
+grep '^configure\.ac:7:.* endif without if' stderr
+
+edit_configure_in 's/\(_AM_COND_ENDIF\).*/_AM_COND_IF\
+_AM_COND_ENDIF/'
+AUTOMAKE_fails
+grep '^configure\.ac:7:.* not enough arguments.* _AM_COND_IF' stderr
+grep '^configure\.ac:8:.* not enough arguments.* _AM_COND_ENDIF' stderr
+test 2 = `grep -c 'not enough arguments' stderr`
+
+:
diff --git a/t/cond43.sh b/t/cond43.sh
new file mode 100755 (executable)
index 0000000..028168e
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure an error with underquoted usage of AM_COND_IF in configure.ac.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_CONDITIONAL([COND1], [:])
+AM_CONDITIONAL([COND2], [:])
+AM_COND_IF([COND1],
+           AM_COND_IF([COND2], [:])
+)
+AC_OUTPUT
+END
+
+: >Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+$EGREP '^configure\.ac:7:.* missing m4 quoting.*macro depth 2( |$)' stderr
+
+sed '/.AM_COND_IF/{
+        s/^/[/
+        s/$/]/
+     }' < configure.ac > configure.int
+mv -f configure.int configure.ac
+rm -rf autom4te*.cache
+$AUTOMAKE
+
+:
diff --git a/t/cond44.sh b/t/cond44.sh
new file mode 100755 (executable)
index 0000000..8cc2c2e
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that redefinitions of AC_SUBST'ed AM_SUBST_NOTMAKE'd variables
+# are not diagnosed.  See cond23.test.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AM_CONDITIONAL([COND], [true])
+AM_SUBST_NOTMAKE([libdir])
+AC_OUTPUT
+EOF
+
+cat >Makefile.am <<EOF
+if COND
+libdir = mumble
+endif
+EOF
+
+$ACLOCAL
+AUTOMAKE_run
+grep 'libdir was already defined' stderr && Exit 1
+grep '^libdir = ' Makefile.in && Exit 1
+Exit 0
diff --git a/t/cond45.sh b/t/cond45.sh
new file mode 100755 (executable)
index 0000000..1296cd1
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that redefinitions of AC_SUBST'ed AM_SUBST_NOTMAKE'd variables
+# are not diagnosed.  See cond24.test.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_SUBST([foo], [bar])
+AM_SUBST_NOTMAKE([foo])
+AM_CONDITIONAL([COND], [true])
+AC_OUTPUT
+EOF
+
+cat >Makefile.am <<EOF
+if COND
+foo = baz
+endif
+EOF
+
+$ACLOCAL
+AUTOMAKE_run
+grep 'foo was already defined' stderr && Exit 1
+grep '^foo =' Makefile.in && Exit 1
+Exit 0
diff --git a/t/cond46.sh b/t/cond46.sh
new file mode 100755 (executable)
index 0000000..c89caf9
--- /dev/null
@@ -0,0 +1,112 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, 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/>.
+
+# Ensure the right condition is listed after 'else' and 'endif'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([USE_A], [test x = y])
+AM_CONDITIONAL([USE_B], [test x = z])
+AC_OUTPUT
+END
+
+notcompat="incompatible with current conditional"
+
+$ACLOCAL
+
+cat > Makefile.am << 'END'
+if USE_A
+endif !USE_A
+END
+
+AUTOMAKE_fails
+grep "^Makefile\\.am:2:.*endif.*!USE_A.*$notcompat.*[^!]USE_A" stderr
+
+cat > Makefile.am << 'END'
+if USE_A
+endif USE_B
+END
+
+AUTOMAKE_fails
+grep "^Makefile\\.am:2:.*endif.*[^!]USE_B.*$notcompat.*[^!]USE_A" stderr
+
+cat > Makefile.am << 'END'
+if USE_A
+else
+endif USE_A
+END
+
+AUTOMAKE_fails
+grep "^Makefile\\.am:3:.*endif.*[^!]USE_A.*$notcompat.*USE_A" stderr
+
+cat > Makefile.am << 'END'
+if USE_A
+else
+endif !USE_A
+END
+
+$AUTOMAKE
+
+cat > Makefile.am << 'END'
+if USE_A
+if USE_B
+else
+endif !USE_A
+endif
+END
+
+AUTOMAKE_fails
+grep "^Makefile\\.am:4:.*endif.*!USE_A.*$notcompat.*USE_B" stderr
+
+cat > Makefile.am << 'END'
+if USE_A
+else USE_A
+endif
+END
+
+AUTOMAKE_fails
+grep "^Makefile\\.am:2:.*else.*[^!]USE_A.*$notcompat.*[^!]USE_A" stderr
+
+cat > Makefile.am << 'END'
+if USE_A
+else !USE_A
+endif
+END
+
+$AUTOMAKE
+
+cat > Makefile.am << 'END'
+if USE_A
+else USE_B
+endif
+END
+
+AUTOMAKE_fails
+grep "^Makefile\\.am:2:.*else.*[^!]USE_B.*$notcompat.*[^!]USE_A" stderr
+
+cat > Makefile.am << 'END'
+if USE_A
+if USE_B
+else USE_A
+endif
+endif
+END
+
+AUTOMAKE_fails
+grep "^Makefile\\.am:3:.*else.*[^!]USE_A.*$notcompat.*[^!]USE_B" stderr
+
+:
diff --git a/t/cond5.sh b/t/cond5.sh
new file mode 100755 (executable)
index 0000000..3961303
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Yet another sources-in-conditional test.  Report from Tim Goodwin.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([ONE], [true])
+AM_CONDITIONAL([TWO], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = targ
+
+if ONE
+OPT_SRC = one.c
+endif
+
+if TWO
+OPT_SRC = $(OPT_SRC) two.c
+endif
+
+targ_SOURCES = main.c $(OPT_SRC)
+END
+
+# The bug is that automake hangs.  So we give it an appropriate grace
+# time, then kill it if necessary.
+$ACLOCAL
+$AUTOMAKE 2>stderr &
+pid=$!
+
+# MSYS bash seems to have a bug in kill, so don't try to kill too soon;
+# and avoid maintainer-check test.
+sleep '2'
+
+# Make at most 30 tries, one every 10 seconds (= 300 seconds = 5 min).
+try=1
+while test $try -le 30; do
+  if kill -0 $pid; then
+    : process $pid is still alive, wait and retry
+    sleep '10'
+    try=`expr $try + 1`
+  else
+    cat stderr >&2
+    # Automake must fail with a proper error message.
+    grep 'variable.*OPT_SRC.*recursively defined' stderr
+    Exit 0
+  fi
+done
+# The automake process probably hung.  Kill it, and exit with failure.
+echo "$me: Automake process $pid hung"
+kill $pid
+Exit 1
diff --git a/t/cond6.sh b/t/cond6.sh
new file mode 100755 (executable)
index 0000000..f6a499d
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for an odd conditional bug.  Report from Matt Leach.
+
+. ./defs || Exit 1
+
+echo 'AM_CONDITIONAL([FOO], [true])' >> configure.ac
+
+cat > Makefile.am << 'END'
+if FOO
+
+helpdir = $(prefix)/Help
+# The continuation line below must start with a Tab to see the bug.
+help_DATA = a b c d e \
+       f g h
+
+else
+
+helpdir = $(prefix)/help
+help_DATA = foo
+
+endif
+
+a b c d e f g h:
+       touch $@
+
+.PHONY: test
+test:
+       is $(help_DATA) == a b c d e f g h
+END
+
+
+# Older versions of this test checked that automake could process the above
+# Makefile.am even with no AC_OUTPUT in configure.  So continue to do this
+# check, for completeness.
+$ACLOCAL
+$AUTOMAKE
+
+rm -rf autom4te*.cache
+
+echo AC_OUTPUT >> configure.ac
+touch aclocal.m4 # Avoid unnecessary firing the remake rules.
+$AUTOCONF
+$AUTOMAKE Makefile
+
+./configure --prefix="`pwd`/_inst"
+
+$MAKE test
+
+$MAKE install
+for x in a b c d e f g h; do
+  test -f _inst/Help/$x
+done
+
+:
diff --git a/t/cond7.sh b/t/cond7.sh
new file mode 100755 (executable)
index 0000000..1651ac9
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for an odd conditional bug.  Report from Pavel Roskin.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+compat=yes
+AM_CONDITIONAL([Compatible], [test x$compat = xyes])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if Compatible
+abdir = none
+ab_HEADERS = \
+        minus.h
+endif
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^[^#].*002' Makefile.in && Exit 1
+Exit 0
diff --git a/t/cond8.sh b/t/cond8.sh
new file mode 100755 (executable)
index 0000000..f21aacb
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure _PROGRAMS conditionals can be written in a useful
+# way.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([X], [test "$x" = yes])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if X
+bin_PROGRAMS = x y
+else
+noinst_PROGRAMS = x y
+endif
+
+.PHONY: get-built get-install not-install
+get-built:
+       test -f x.$(OBJEXT)
+       test -f y.$(OBJEXT)
+       test -f x$(EXEEXT)
+       test -f y$(EXEEXT)
+get-installed:
+       test -f $(bindir)/x$(EXEEXT)
+       test -f $(bindir)/y$(EXEEXT)
+not-installed:
+       if find $(prefix) -type f | grep .; then exit 1; else :; fi
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+cat > x.c <<'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+cp x.c y.c
+
+instdir=`pwd`/_inst || fatal_ "cannot get current directory"
+
+# Skip the rest of the test in case of e.g. missing C compiler.
+./configure --prefix="$instdir" x=yes || Exit $?
+$MAKE install
+$MAKE get-built
+$MAKE get-installed
+
+$MAKE distclean
+rm -rf _inst
+
+./configure --prefix="$instdir" x=no
+$MAKE install
+$MAKE get-built
+$MAKE not-installed
+
+:
diff --git a/t/cond9.sh b/t/cond9.sh
new file mode 100755 (executable)
index 0000000..b9addab
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in conditionals.  From Raja R Harinath.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([WRONG], [test x = y])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if WRONG
+this=
+else
+this=is_something_interesting
+endif
+
+.PHONY: test-this
+test-this:
+       test '$(this)' = is_something_interesting
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE test-this
+
+:
diff --git a/t/condd.sh b/t/condd.sh
new file mode 100755 (executable)
index 0000000..be32b7d
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in conditionals.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+dnl Define a macro with the same name as the conditional to exhibit
+dnl any underquoted bug.
+AC_DEFUN([COND1], ["some'meaningless;characters`])
+AM_CONDITIONAL([COND1], [false])
+AC_CONFIG_FILES([foo/Makefile])
+AC_CONFIG_FILES([bar/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+
+SUBDIRS = foo
+if COND1
+SUBDIRS += bar
+endif
+
+# Small example from the manual.
+bin_PROGRAMS = hello
+hello_SOURCES = hello-common.c
+if COND1
+hello_SOURCES += hello-cond1.c
+else
+hello_SOURCES += hello-generic.c
+endif
+
+.PHONY: test
+test: distdir
+       test -f $(distdir)/foo/Makefile.am
+       test -f $(distdir)/bar/Makefile.am
+       test -f $(distdir)/hello-common.c
+       test -f $(distdir)/hello-cond1.c
+       test -f $(distdir)/hello-generic.c
+END
+
+mkdir foo bar
+
+: > foo/Makefile.am
+: > bar/Makefile.am
+: > hello-common.c
+: > hello-cond1.c
+: > hello-generic.c
+
+$ACLOCAL
+$AUTOCONF
+grep "meaningless;characters" configure && Exit 1
+$AUTOMAKE
+./configure
+$MAKE test
+
+:
diff --git a/t/condhook.sh b/t/condhook.sh
new file mode 100755 (executable)
index 0000000..3b0f89c
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test install when a conditional install-*-hook is not defined.
+# Keep this in sync with sister test condhook2.test.
+# Report by Nik A. Melchior (PR/428).
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([TEST], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+sysconf_DATA = mumble
+if TEST
+install-data-hook:
+       : > $(top_srcdir)/bad
+endif
+END
+
+: > mumble
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --prefix "`pwd`/inst"
+
+$MAKE install
+test -f inst/etc/mumble
+test ! -f bad
+
+:
diff --git a/t/condhook2.sh b/t/condhook2.sh
new file mode 100755 (executable)
index 0000000..a853e37
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test install when a conditional install-*-hook is defined.
+# Keep this in sync with sister test condhook.test.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([TEST], [true])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+sysconf_DATA = mumble
+if TEST
+install-data-hook:
+       : > $(top_srcdir)/good
+endif
+END
+
+: > mumble
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --prefix "`pwd`/inst"
+
+$MAKE install
+test -f inst/etc/mumble
+test -f good
+
+:
diff --git a/t/condinc.sh b/t/condinc.sh
new file mode 100755 (executable)
index 0000000..b7011e7
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure a conditional include statement is handled properly.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([TOBE], [false])
+END
+
+cat > Makefile.am << 'END'
+if TOBE
+include adjunct
+endif
+END
+
+cat > adjunct << 'END'
+target: dependency
+       rule
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^target:' Makefile.in && Exit 1
+grep '^@TOBE_TRUE@target:' Makefile.in
+
+:
diff --git a/t/condinc2.sh b/t/condinc2.sh
new file mode 100755 (executable)
index 0000000..e88b0d2
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another test of conditional include statements.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([TOBE], [false])
+END
+
+cat > Makefile.am << 'END'
+if TOBE
+include adjunct
+endif
+END
+
+cat > adjunct << 'END'
+target: dependency
+       rule
+endif
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'adjunct:3: error: too many conditionals closed' stderr
+
+cat > adjunct << 'END'
+if TOBE
+target: dependency
+       rule
+END
+
+AUTOMAKE_fails
+grep 'unterminated conditionals' stderr
+
+cat > adjunct << 'END'
+if TOBE
+target: dependency
+       rule
+endif
+END
+
+$AUTOMAKE
+
+:
diff --git a/t/condlib.sh b/t/condlib.sh
new file mode 100755 (executable)
index 0000000..fae04bf
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug with conditional library.
+# From Harlan Stenn.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_RANLIB
+AM_MAINTAINER_MODE
+AM_PROG_AR
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = @LIBRSAREF@
+EXTRA_LIBRARIES = librsaref.a
+
+nodist_librsaref_a_SOURCES = desc.c digit.c
+
+BUILT_SOURCES = $(nodist_librsaref_a_SOURCES)
+END
+
+: > ar-lib
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP librsaref.a.c Makefile.in && Exit 1
+Exit 0
diff --git a/t/condman2.sh b/t/condman2.sh
new file mode 100755 (executable)
index 0000000..fbb3844
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure appropriate man install targets generated in all cases.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+man_MANS = foo.1 foo.2
+man5_MANS = foo.5
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^install-man1:' Makefile.in
+grep '^install-man2:' Makefile.in
+grep '^install-man5:' Makefile.in
+
+:
diff --git a/t/condman3.sh b/t/condman3.sh
new file mode 100755 (executable)
index 0000000..9f2714f
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure conditionals work with man pages.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND], [test x"$FOO" = x"true"])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if COND
+man_MANS = foo.1
+man4_MANS = 6.man
+else
+man_MANS = bar.2 baz.1
+man5_MANS = zap.5
+endif
+
+.PHONY: test1 test2
+test1:
+       find $(mandir) ;: For debugging.
+       test -f $(mandir)/man1/foo.1
+       test -f $(mandir)/man4/6.4
+       test ! -f $(mandir)/man2/bar.2
+       test ! -f $(mandir)/man1/baz.1
+       test ! -f $(mandir)/man5/zap.5
+test2:
+       find $(mandir) ;: For debugging.
+       test -f $(mandir)/man2/bar.2
+       test -f $(mandir)/man1/baz.1
+       test -f $(mandir)/man5/zap.5
+       test ! -f $(mandir)/man1/foo.1
+       test ! -f $(mandir)/man4/6.4
+       test ! -f $(mandir)/man4/6.man
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+$EGREP 'MANS|\.([123456789]|man)' Makefile.in # For debugging.
+
+mkdir build
+cd build
+../configure FOO=true --prefix="`pwd`/_inst"
+$EGREP 'MANS|\.([123456789]|man)' Makefile # For debugging.
+touch foo.1 6.man
+$MAKE install
+$MAKE test1
+
+cd ..
+./configure FOO=false --prefix="`pwd`/_inst"
+$EGREP 'MANS|\.([123456789]|man)' Makefile # For debugging.
+touch bar.2 baz.1 zap.5
+$MAKE install
+$MAKE test2
+
+:
diff --git a/t/confdeps.sh b/t/confdeps.sh
new file mode 100755 (executable)
index 0000000..f508d45
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that config* files are properly regenerated.
+
+. ./defs || Exit 1
+
+echo "FOO = foo" > Makefile.am
+
+$ACLOCAL
+
+echo "$me: Generated by aclocal ..."
+$AUTOMAKE
+grep '^\$(ACLOCAL_M4):' Makefile.in
+
+echo "$me: Not generated by aclocal ..."
+# Pretend it is not from aclocal (remove the signature),
+# but keep it correct, i.e., with AM_INIT_AUTOMAKE etc.
+sed -n '3,$p' aclocal.m4 >aclocal.m4t
+mv -f aclocal.m4t aclocal.m4
+$AUTOMAKE
+grep '^\$(ACLOCAL_M4):' Makefile.in && Exit 1
+
+:
diff --git a/t/conff.sh b/t/conff.sh
new file mode 100755 (executable)
index 0000000..d969660
--- /dev/null
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure rebuild rules work even when AC_CONFIG_FILES uses colons.
+# Report from Alexander Turbov.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([bar/Makefile:bar/Makefile.in:Makefile.bot])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = bar
+EXTRA_DIST = Makefile.bot
+END
+
+mkdir bar
+cat > bar/Makefile.am << 'END'
+top-rule:
+       @echo 'top rule'
+END
+
+cat > Makefile.bot << 'END'
+bot-rule:
+       @echo 'bot rule'
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
+
+cd bar
+$MAKE top-rule >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'top rule' stdout
+$MAKE bot-rule >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'bot rule' stdout
+cd ..
+
+$sleep
+
+cat > bar/Makefile.am << 'END'
+top-rule:
+       @echo 'top2 rule'
+END
+$MAKE
+
+cd bar
+$MAKE top-rule >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'top2 rule' stdout
+$MAKE bot-rule >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'bot rule' stdout
+cd ..
+
+$sleep
+
+cat > Makefile.bot << 'END'
+bot-rule:
+       @echo 'bot2 rule'
+END
+$MAKE
+
+cd bar
+$MAKE top-rule >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'top2 rule' stdout
+$MAKE bot-rule >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'bot2 rule' stdout
+cd ..
+
+$MAKE distcheck
+
+:
diff --git a/t/conff2.sh b/t/conff2.sh
new file mode 100755 (executable)
index 0000000..2c42f29
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure empty calls to AC_CONFIG_FILES or AC_CONFIG_HEADERS are diagnosed.
+
+. ./defs || Exit 1
+
+# We avoid using configure.ac stub initialized by ./defs, since we need
+# to keep track of line numbers (to grep for error messages).
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES ([oops])
+AC_CONFIG_HEADERS
+AC_OUTPUT
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'configure\.ac:3:.* arguments .*AC_CONFIG_FILES' stderr
+grep 'configure\.ac:4:.* arguments .*AC_CONFIG_HEADERS' stderr
+
+:
diff --git a/t/conffile-leading-dot.sh b/t/conffile-leading-dot.sh
new file mode 100755 (executable)
index 0000000..9c4cb4f
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Automake must complain if AC_CONFIG_FILES is passed something starting
+# with a dot (like "./Makefile"), since the remake rules might be subtly
+# broken in that case.
+
+required=GNUmake
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([./Makefile])
+AC_CONFIG_FILES([./foo:a.in:b.in:c.in])
+AC_OUTPUT
+END
+
+touch a.in b.in c.in Makefile.am
+
+$ACLOCAL
+
+AUTOMAKE_fails -Wnone -Wunsupported
+grep "^configure\.ac:3:.*'\\./Makefile'" stderr
+grep "^configure\.ac:3:.* omit leading '\\./'" stderr
+grep "^configure\.ac:3:.*remake rules might be subtly broken" stderr
+grep "^configure\.ac:4:.*'\\./foo'" stderr
+grep "^configure\.ac:4:.* omit leading '\\./'" stderr
+grep "^configure\.ac:4:.*remake rules might be subtly broken" stderr
+
+# Check that our warning was actually justified.
+sed 's/^AM_INIT_AUTOMAKE/&([-Wall -Wno-unsupported])/' <configure.ac >t
+mv -f t configure.ac
+rm -rf autom4te*.cache
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -Wall -Wno-unsupported
+./configure
+$MAKE
+$sleep
+touch Makefile.am
+# Check that remake rules do truly break -- otherwise automake is
+# giving a bogus warning.
+$MAKE 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep "config\\.status:.*invalid argument.*Makefile" stderr
+
+:
diff --git a/t/confh.sh b/t/confh.sh
new file mode 100755 (executable)
index 0000000..4759619
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure config.h works in a subdir.
+# Report from Alexandre Oliva.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONFIG_HEADER([include/config.h])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+.PHONY: test1 test2
+test1:
+       @echo DIST_COMMON = $(DIST_COMMON)
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]acconfig\.h '
+test2: distdir
+       ls -l $(distdir)/*
+       test -f $(distdir)/acconfig.h
+check-local: test1 test2
+END
+
+mkdir include
+: > include/config.h.in
+: > acconfig.h
+
+# The test used to fail if 'include/Makefile.am' was created (!)
+: > include/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE
+
+./configure
+
+$MAKE test1
+$MAKE test2
+$MAKE distcheck
+
+# Make sure re-running automake in a different way generates same
+# Makefile.in.
+mv Makefile.in Makefile.sav
+$ACLOCAL
+$AUTOMAKE Makefile
+diff Makefile.sav Makefile.in
+
+:
diff --git a/t/confh4.sh b/t/confh4.sh
new file mode 100755 (executable)
index 0000000..ea6a9ff
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 34.
+# > Description:
+#  Automake fails to add -I option to include configuration
+#  header indicated like AM_CONFIG_HEADER(magick/config.h)
+# > How-To-Repeat:
+#  Use AM_CONFIG_HEADER(subdir/config.h) to place configuration
+#  header in subdirectory and observe that it is not included.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([include/Makefile])
+AM_CONFIG_HEADER([include/config.h])
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+END
+
+mkdir include
+: > include/Makefile.am
+: > include/config.h.in
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^ *DEFAULT_INCLUDES *=.* -I\$(top_builddir)/include' Makefile.in
+
+:
diff --git a/t/confh5.sh b/t/confh5.sh
new file mode 100755 (executable)
index 0000000..c35c3e8
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we do not distribute header sources when they are built.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([FOO], [NameToBeGrepped])
+AC_CONFIG_FILES([include/config.h.in])
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_HEADERS([include/config.h])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+.PHONY: test
+test: distdir
+       test -f $(distdir)/config.h.in
+       test -f $(distdir)/include/config.h.in.in
+       : # Solaris Sh does not support 'test -e'.
+       test ! -f $(distdir)/include/config.h.in
+       test ! -r $(distdir)/include/config.h.in
+END
+
+mkdir include
+: > include/config.h.in.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE
+
+./configure
+$MAKE
+
+$sleep
+echo '#undef @FOO@' > include/config.h.in.in
+$MAKE include/config.h
+# Don't try to be too strict in this grepping, since the substitution
+# is done by config.status, and we don't have too much control on it.
+grep '/\*.*#undef.*NameToBeGrepped' include/config.h
+$MAKE test
+$MAKE distcheck
+
+:
diff --git a/t/confh6.sh b/t/confh6.sh
new file mode 100755 (executable)
index 0000000..c5e7d7e
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure config.h rule made even if it is in a subdir.  The
+# idea is that if config.h is in a subdir, and there is no Makefile in
+# that subdir, then we want to build config.h as the top level.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONFIG_HEADER([subdir/config.h])
+AC_OUTPUT
+END
+
+: > Makefile.am
+mkdir subdir
+: > subdir/config.h.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
+
+$sleep
+echo '#define gRePmE' > subdir/config.h.in
+$MAKE subdir/config.h
+$FGREP gRePmE subdir/config.h
+
+$MAKE distcheck
+
+:
diff --git a/t/confh7.sh b/t/confh7.sh
new file mode 100755 (executable)
index 0000000..4080779
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure several config headers are allowed.
+# See also sister "semantic" test 'confh8.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONFIG_HEADER([config.h two.h])
+END
+
+: > Makefile.am
+
+: > config.h.in
+: > two.h.in
+
+$ACLOCAL
+$AUTOMAKE
+
+# Try again with more macros.
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+$ACLOCAL --force
+$AUTOMAKE
+
+:
diff --git a/t/confh8.sh b/t/confh8.sh
new file mode 100755 (executable)
index 0000000..c3a27d1
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure several config headers are allowed.
+# See also sister "minimalistic" test 'confh7.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONFIG_HEADER([one.h two.h])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+.PHONY: test0 test1 test2
+test0:
+       @echo DIST_COMMON = $(DIST_COMMON)
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]one\.h\.in '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]two\.h\.in '
+       : Processed header files should not be distributed.
+       if echo ' ' $(DIST_COMMON) ' ' | grep '\.h '; then \
+         exit 1; \
+       else \
+         exit 0; \
+       fi
+test1: all
+       test -f one.h
+       test -f two.h
+test2: distdir
+       ls -l $(distdir)/*
+       test -f $(distdir)/one.h.in
+       test -f $(distdir)/two.h.in
+       : Processed header files should not be distributed.
+       test ! -r $(distdir)/one.h
+       test ! -r $(distdir)/two.h
+check-local: test0 test1 test2
+END
+
+: > one.h.in
+: > two.h.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+$MAKE test0
+$MAKE test1
+$MAKE test2
+$MAKE distcheck
+
+:
diff --git a/t/configure.sh b/t/configure.sh
new file mode 100755 (executable)
index 0000000..cedba55
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Diagnose if both configure.in and configure.ac are present, prefer
+# configure.ac.
+
+. ./defs || Exit 1
+
+cat >configure.ac <<EOF
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+EOF
+
+cat >configure.in <<EOF
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([an-invalid-automake-option])
+AC_CONFIG_FILES([Makefile])
+EOF
+
+: >Makefile.am
+
+$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'configure\.ac.*configure\.in.*both present' stderr
+
+$ACLOCAL -Wno-error 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'configure\.ac.*configure\.in.*both present' stderr
+grep 'proceeding.*configure\.ac' stderr
+
+# Ensure we really proceed with configure.ac.
+AUTOMAKE_fails -Werror
+grep 'configure\.ac.*configure\.in.*both present' stderr
+grep 'proceeding.*configure\.ac' stderr
+
+AUTOMAKE_run -Wno-error
+grep 'configure\.ac.*configure\.in.*both present' stderr
+grep 'proceeding.*configure\.ac' stderr
+
+:
diff --git a/t/confincl.sh b/t/confincl.sh
new file mode 100755 (executable)
index 0000000..dfc7551
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This tests for a bug reported by Gord Matzigkeit.
+# If config.h is not used, @CONFIG_INCLUDE_SPEC@ should not appear
+# in Makefile.in.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = fred
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP '@CONFIG_INCLUDE_SPEC@' Makefile.in && Exit 1
+
+:
diff --git a/t/conflnk.sh b/t/conflnk.sh
new file mode 100755 (executable)
index 0000000..93851ca
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure links created by AC_CONFIG_LINKS get removed with
+# 'make distclean'
+
+. ./defs || Exit 1
+
+echo 'SUBDIRS = sdir' > Makefile.am
+: > src
+mkdir sdir
+: > sdir/Makefile.am
+: > sdir/src2
+mkdir sdir-no-make
+
+cat >>configure.ac << 'EOF'
+AC_CONFIG_FILES([sdir/Makefile])
+AC_CONFIG_LINKS([dest:src])
+AC_CONFIG_LINKS([dest2:src])
+AC_CONFIG_LINKS([sdir/dest3:src])
+AC_CONFIG_LINKS([dest4:sdir/src2])
+AC_CONFIG_LINKS([sdir/dest5:sdir/src2 sdir-no-make/dest6:src])
+AC_OUTPUT
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+
+# Make sure nothing is deleted by 'make clean'
+$MAKE clean
+
+test -r dest
+test -r dest2
+test -r sdir/dest3
+test -r dest4
+test -r sdir/dest5
+test -r sdir-no-make/dest6
+test -f src
+test -f sdir/src2
+
+# Make sure the links are deleted by 'make distclean' and the original files
+# are not.
+$MAKE distclean
+
+test -f src
+test -f sdir/src2
+
+test -r dest && Exit 1
+test -r dest2 && Exit 1
+test -r sdir/dest3 && Exit 1
+test -r dest4 && Exit 1
+test -r sdir/dest5 && Exit 1
+test -r sdir-no-make/dest6 && Exit 1
+
+:
diff --git a/t/conflnk2.sh b/t/conflnk2.sh
new file mode 100755 (executable)
index 0000000..4a1478b
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that sources for links created by AC_CONFIG_LINKS
+# are distributed.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+SUBDIRS = sdir
+.PHONY: test
+test: distdir
+       test -f $(distdir)/src
+       test -f $(distdir)/src2
+       test -f $(distdir)/sdir/src3
+       test -f $(distdir)/sdir-no-make/src4
+       test 2 -gt `find $(distdir)/sdir -type d | wc -l`
+       test 2 -gt `find $(distdir)/sdir-no-make -type d | wc -l`
+       test 4 -gt `find $(distdir) -type d | wc -l`
+END
+
+: > src
+: > src2
+mkdir sdir
+: > sdir/Makefile.am
+: > sdir/src3
+mkdir sdir-no-make
+: > sdir-no-make/src4
+
+cat >>configure.ac << 'EOF'
+AC_CONFIG_FILES([sdir/Makefile])
+AC_CONFIG_LINKS([dest:src])
+AC_CONFIG_LINKS([sdir/dest2:src2 sdir-no-make/dest3:sdir/src3])
+AC_CONFIG_LINKS([sdir/dest4:sdir-no-make/src4])
+AC_OUTPUT
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+$MAKE test
+
+:
diff --git a/t/conflnk3.sh b/t/conflnk3.sh
new file mode 100755 (executable)
index 0000000..ffb0d98
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that AC_CONFIG_LINKS using a variable source
+# is not broken.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+SUBDIRS = sdir
+.PHONY: test
+test: distdir
+       test ! -r $(distdir)/sdir/dest3
+       test ! -r $(distdir)/sdir/dest2
+       test ! -r $(distdir)/dest3
+       test ! -r $(distdir)/dest2
+       test -f $(distdir)/src2
+## src3 cannot be distributed, Automake knows nothing about it.
+       test ! -r $(distdir)/sdir/src3
+       test ! -r $(distdir)/src3
+END
+
+: > src
+: > src2
+mkdir sdir
+: > sdir/Makefile.am
+: > sdir/src3
+
+cat >>configure.ac << 'EOF'
+AC_CONFIG_FILES([sdir/Makefile])
+my_src_dir=sdir
+my_dest=dest
+AC_CONFIG_LINKS([sdir/dest2:src2 sdir/dest3:$my_src_dir/src3])
+AC_CONFIG_LINKS([$my_dest:src])
+# The following is a link whose source is itself a link.
+AC_CONFIG_LINKS([dest4:sdir/dest2])
+# Some package prefer to compute links.
+cmplink='dest5:src';
+AC_CONFIG_LINKS([$cmplink])
+AC_OUTPUT
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# $my_src_dir and $my_dest are variables local to configure, they should
+# not appear in Makefile.
+grep my_src_dir Makefile.in && Exit 1
+grep my_dest Makefile.in && Exit 1
+
+./configure
+test -r sdir/dest2
+test -r sdir/dest3
+test -r dest
+test -r dest4
+test -r dest5
+$MAKE test
+
+$MAKE distclean
+test ! -r sdir/dest2
+test ! -r sdir/dest3
+test -r dest  # Should still exist, Automake knows nothing about it.
+test -r dest5 # Ditto.
+rm -f dest dest5
+test ! -r dest4
+
+mkdir build
+cd build
+../configure
+$MAKE test
+
+:
diff --git a/t/conflnk4.sh b/t/conflnk4.sh
new file mode 100755 (executable)
index 0000000..a1f2f0e
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure links to _identical files_ created by AC_CONFIG_LINKS get
+# removed with 'make distclean' only if doing a VPATH build.
+
+. ./defs || Exit 1
+
+mkdir nonmk-subdir sdir sdir/mk-subdir
+: > src
+: > sdir/Makefile.am
+: > sdir/src2
+: > nonmk-subdir/src3
+: > sdir/mk-subdir/src4
+
+cat >> Makefile.am <<'EOF'
+SUBDIRS = sdir
+.PHONY: test
+test: distdir
+       test -f $(distdir)/src
+       test -f $(distdir)/sdir/src2
+       test -f $(distdir)/nonmk-subdir/src3
+       test -f $(distdir)/sdir/mk-subdir/src4
+EOF
+
+cat >>configure.ac << 'EOF'
+AC_CONFIG_FILES([sdir/Makefile])
+AC_CONFIG_LINKS([src:src])
+AC_CONFIG_LINKS([sdir/src2:sdir/src2])
+AC_CONFIG_LINKS([nonmk-subdir/src3:nonmk-subdir/src3])
+AC_CONFIG_LINKS([sdir/mk-subdir/src4:sdir/mk-subdir/src4])
+AC_OUTPUT
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+
+$MAKE test
+
+# Make sure nothing is deleted by 'make clean'
+$MAKE clean
+
+test -f ../src
+test -f ../sdir/src2
+test -f ../nonmk-subdir/src3
+test -f ../sdir/mk-subdir/src4
+
+# Make sure the links are deleted by 'make distclean' and the original files
+# are not.
+$MAKE distclean
+
+test -f ../src
+test -f ../sdir/src2
+test -f ../nonmk-subdir/src3
+test -f ../sdir/mk-subdir/src4
+
+test -r src && Exit 1
+test -r sdir/src2 && Exit 1
+test -r nonmk-subdir/src3 && Exit 1
+test -r sdir/mk-subdir/src4 && Exit 1
+
+cd ..
+./configure
+
+$MAKE test
+
+# Make sure nothing is deleted by 'make distclean'
+$MAKE distclean
+
+test -f src
+test -f sdir/src2
+test -f nonmk-subdir/src3
+test -f sdir/mk-subdir/src4
+
+:
diff --git a/t/confsub.sh b/t/confsub.sh
new file mode 100755 (executable)
index 0000000..b13f26a
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure config.h can be in subdir.
+# Also, make sure config.h is properly rebuilt.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([subdir/Makefile])
+AM_CONFIG_HEADER([subdir/config.h:subdir/config.hin])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = subdir
+END
+
+mkdir subdir
+cat > subdir/Makefile.am << 'END'
+END
+
+echo 'Before.' > subdir/config.hin
+
+$ACLOCAL
+$AUTOMAKE
+
+# Make sure subdir Makefile.in doesn't itself look in the subdir.
+# One line is allowed though:
+#
+# cd $(top_builddir) && $(SHELL) ./config.status subdir/config.h
+($FGREP 'subdir/config.h' subdir/Makefile.in |
+   $FGREP -v 'cd $(top_builddir)') && Exit 1
+
+$AUTOCONF
+./configure
+$FGREP 'Before.' subdir/config.h
+
+$sleep
+echo 'After.' > subdir/config.hin
+$MAKE
+$FGREP 'After.' subdir/config.h
+
+:
diff --git a/t/confvar.sh b/t/confvar.sh
new file mode 100755 (executable)
index 0000000..e77563e
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure configure_vars stuff works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([QBERT])
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^QBERT =' Makefile.in
+
+:
diff --git a/t/confvar2.sh b/t/confvar2.sh
new file mode 100755 (executable)
index 0000000..bc6ffca
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug reported by Jim Meyering.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([OTHER_SCRIPTS])
+END
+
+cat > Makefile.am << 'END'
+bin_SCRIPTS = foo
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^OTHER_SCRIPTS =' Makefile.in
+
+:
diff --git a/t/copy.sh b/t/copy.sh
new file mode 100755 (executable)
index 0000000..a9f0f56
--- /dev/null
+++ b/t/copy.sh
@@ -0,0 +1,101 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure '-c' works.  Report from Andris Pavenis.
+# See also the much more in-depth test 'add-missing'.
+
+. ./defs || Exit 1
+
+# We'll have to cater to systems like MSYS/MinGW where there are no
+# true symlinks ('ln -s' behaves like 'cp -p'); see automake bug#10441.
+
+echo dummy > foo
+if ln -s foo bar && test -h bar; then
+  is_symlink () { test -h "$1"; }
+  is_not_symlink () { test ! -h "$1"; }
+else
+  is_symlink () { return 0; } # Avoid spurious failures.
+  is_not_symlink () { return 0; }
+fi
+rm -f foo bar
+
+# First a simple test, where the auxdir is automatically determined
+# by automake.
+
+: > Makefile.am
+rm -f install-sh
+
+$ACLOCAL
+$AUTOMAKE -c -a
+ls -l # For debugging.
+
+test -f install-sh
+is_not_symlink install-sh
+
+# Let's do a couple of more elaborated tests, this time with the auxdir
+# explicitly defined in configure.ac.
+
+mkdir sub
+cd sub
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([auxdir])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<END
+bin_PROGRAMS = foo
+END
+
+$ACLOCAL
+
+# 'automake -a' called without '-c' should create symlinks by default,
+# even when there is already a non-symlinked required auxiliary file.
+
+mkdir auxdir
+echo FAKE-DEPCOMP > auxdir/depcomp
+$AUTOMAKE -a
+ls -l auxdir # For debugging.
+test -f auxdir/install-sh
+is_symlink auxdir/install-sh
+test -f auxdir/depcomp
+is_not_symlink auxdir/depcomp
+test FAKE-DEPCOMP = `cat auxdir/depcomp`
+
+# 'automake -a -c' should not create symlinks, even when there are
+# already symlinked required auxiliary files.
+
+rm -rf auxdir
+mkdir auxdir
+cd auxdir
+ln -s "$am_scriptdir/missing" "$am_scriptdir/install-sh" .
+cd ..
+
+$AUTOMAKE -a -c
+ls -l auxdir # For debugging.
+test -f auxdir/install-sh
+is_symlink auxdir/install-sh
+test -f auxdir/missing
+is_symlink auxdir/missing
+test -f auxdir/depcomp
+is_not_symlink auxdir/depcomp
+diff "$am_scriptdir"/depcomp auxdir/depcomp
+
+:
diff --git a/t/cscope.tap b/t/cscope.tap
new file mode 100755 (executable)
index 0000000..dbc4993
--- /dev/null
@@ -0,0 +1,169 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test cscope functionality.
+
+. ./defs || Exit 1
+
+plan_ 18
+
+ocwd=`pwd` || fatal_ "getting top-level directory"
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_SUBST([CC],  [who-cares])
+AC_SUBST([CXX], [who-cares])
+AC_SUBST([FC],  [who-cares])
+AC_SUBST([GCJ], [who-cares])
+AM_PATH_LISPDIR
+AC_OUTPUT
+END
+
+mkdir sub sub/subsub
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c bar.cpp baz.f90
+lisp_LISP = foo.el
+EXTRA_DIST = foo.el
+END
+
+cat > sub/Makefile.am <<'END'
+bin_PROGRAMS = bar
+bar_SOURCES = subsub/dist.c
+nodist_bar_SOURCES = subsub/gen.c
+subsub/gen.c:
+       $(MKDIR_P) subsub
+       echo 'int generated_subsub () { return 0; }' > $@
+CLEANFILES = subsub/gen.c
+END
+
+echo 'int foo_func () { return 0; }' > foo.c
+echo 'int main () { return 0; }' > bar.cpp
+cat > baz.f90 <<'END'
+      subroutine baz
+      end
+END
+: > foo.el
+echo 'int main () { return 0; }' > sub/subsub/dist.c
+
+$ACLOCAL || fatal_ "aclocal failed"
+$AUTOCONF || fatal_ "autoconf failed"
+$AUTOMAKE -i -a || fatal_ "automake -i -a failed"
+
+# Sun cscope is interactive without redirection; also, it might not
+# support the '-q' option, which is required by our generated recipes.
+if cscope -q --version </dev/null; then
+  have_cscope=yes
+else
+  have_cscope=no
+fi
+
+test_cleanup ()
+{
+  r=ok
+  if test -f configure; then
+    # In-tree build.
+    $MAKE distclean
+  else
+    # VPATH build.
+    $MAKE distcleancheck
+  fi \
+    && test ! -f cscope.files \
+    && test ! -f cscope.out \
+    && test ! -f cscope.in.out \
+    && test ! -f cscope.po.out \
+    || r='not ok'
+  result_ "$r" "[$pfx] make distcheck"
+}
+
+test_cscope ()
+{
+  r=ok
+  $MAKE -n cscope || r='not ok'
+  result_ "$r" "[$pfx] make -n cscope"
+
+  if test $have_cscope = no; then
+    # For later tests.
+    touch cscope.files cscope.out cscope.in.out cscope.po.out
+    skip_row_ 3 -r "no proper cscope program available"
+    return 0
+  fi
+
+  r=ok
+  $MAKE cscope 2>stderr || r='not ok'
+  cat stderr >&2
+  grep 'cannot find file' stderr && r='not ok'
+  rm -f stderr
+  result_ "$r" "[$pfx] make cscope"
+
+  r=ok
+  test -f cscope.files \
+    && $FGREP foo.c cscope.files \
+    && $FGREP bar.cpp cscope.files \
+    && $FGREP sub/subsub/dist.c cscope.files \
+    && $FGREP sub/subsub/gen.c cscope.files \
+    || r='not ok'
+  result_ "$r" "[$pfx] cscope.files looks correct"
+
+  r=ok
+  # cscope.files might not exist of the earlier "make cscope" failed.
+  cp cscope.files cscope.files1 \
+    && $MAKE cscope \
+    && diff cscope.files cscope.files1 \
+    || r='not ok'
+  rm -f cscope.files1
+  result_ "$r" "[$pfx] second \"make cscope\" is consistent"
+}
+
+my_configure ()
+{
+  command_ok_ "[$pfx] configure" \
+              "$1"/configure EMACS=no --with-lispdir=/who/cares
+}
+
+if using_gmake; then
+
+  cd "$ocwd"
+  pfx="relative VPATH"
+  mkdir build
+  cd build
+  my_configure ..
+  test_cscope
+  test_cleanup
+
+  cd "$ocwd"
+  pfx="absolute VPATH"
+  mkdir build2
+  cd build2
+  my_configure "$ocwd"
+  test_cscope
+  test_cleanup
+
+else
+
+  skip_row_ 12 -r "cscope in VPATH required GNU make"
+
+fi
+
+cd "$ocwd"
+pfx="in-tree build"
+my_configure .
+test_cscope
+test_cleanup
+
+:
diff --git a/t/cscope2.sh b/t/cscope2.sh
new file mode 100755 (executable)
index 0000000..f72bb6a
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The 'cscope' target should not fail if there are no sources.
+
+required=
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+: >Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE cscope
+
+:
diff --git a/t/cscope3.sh b/t/cscope3.sh
new file mode 100755 (executable)
index 0000000..47bcd4d
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The 'cscope' target should not fail if there are no sources in a subdir.
+# In practice this means 'cscope' should not be invoked if cscope.files
+# is empty.
+
+required=cscope
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+mkdir sub
+echo 'SUBDIRS = sub' >Makefile.am
+: >sub/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE cscope
+
+:
diff --git a/t/cxx.sh b/t/cxx.sh
new file mode 100755 (executable)
index 0000000..63e55b8
--- /dev/null
+++ b/t/cxx.sh
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that '.c++' extension works.
+# From Ralf Corsepius.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = hello
+hello_SOURCES = hello.c++
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^\.SUFFIXES:.*c[+][+]' Makefile.in
diff --git a/t/cxx2.sh b/t/cxx2.sh
new file mode 100755 (executable)
index 0000000..243e607
--- /dev/null
+++ b/t/cxx2.sh
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that Automake suggests using AC_PROG_CXX if C++ sources are used.
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >>configure.ac
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = hello
+hello_SOURCES = hello.cpp
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep AC_PROG_CXX stderr
diff --git a/t/cxxcpp.sh b/t/cxxcpp.sh
new file mode 100755 (executable)
index 0000000..cc69163
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure automake sees AC_PROG_CXXCPP.  From Garth Corral.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXXCPP
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^CXXCPP' Makefile.in
diff --git a/t/cxxlibobj.sh b/t/cxxlibobj.sh
new file mode 100755 (executable)
index 0000000..6f4ce2e
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure LIBOBJS and C++ sources work right.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_CC
+AC_REPLACE_FUNCS(strdup)
+END
+
+cat > Makefile.am << 'END'
+sbin_PROGRAMS = anonymous
+anonymous_SOURCES = doe.C jane.C
+anonymous_LDADD = @LIBOBJS@
+END
+
+: > strdup.c
+: > doe.C
+: > jane.C
+
+$ACLOCAL
+$AUTOMAKE
+
+grep CC Makefile.in
diff --git a/t/cxxlink.sh b/t/cxxlink.sh
new file mode 100755 (executable)
index 0000000..5ce3beb
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure C++ linker is used when appropriate.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lavalamp
+lavalamp_SOURCES = lava.c lamp.cxx
+END
+
+: > lava.c
+: > lamp.cxx
+
+$ACLOCAL
+$AUTOMAKE
+
+# Look for this macro not at the beginning of any line; that will have
+# to be good enough for now.
+grep '.CXXLINK' Makefile.in
diff --git a/t/cxxnoc.sh b/t/cxxnoc.sh
new file mode 100755 (executable)
index 0000000..66d0b0d
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure pure C++ sources don't include C-specific code.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+END
+
+cat > Makefile.am << 'END'
+sbin_PROGRAMS = anonymous
+anonymous_SOURCES = doe.C jane.C
+END
+
+: > doe.C
+: > jane.C
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP '(CC)' Makefile.in && Exit 1
+Exit 0
diff --git a/t/cxxo.sh b/t/cxxo.sh
new file mode 100755 (executable)
index 0000000..a754701
--- /dev/null
+++ b/t/cxxo.sh
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure C++ files are rewritten to ".o" and not just "o".
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+END
+
+cat > Makefile.am << 'END'
+sbin_PROGRAMS = anonymous
+anonymous_SOURCES = doe.C
+END
+
+: > doe.C
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP 'doe.$(OBJEXT)' Makefile.in
diff --git a/t/cygnus-check-without-all.sh b/t/cygnus-check-without-all.sh
new file mode 100755 (executable)
index 0000000..121c657
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that, in cygnus mode, target "check" does not depend target
+# "all".
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AM_MAINTAINER_MODE
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+all-local:
+       : > all-target-has-failed
+       exit 1
+check-local:
+       touch check-target-has-run
+END
+
+$ACLOCAL
+$AUTOMAKE --cygnus -Wno-obsolete
+
+$EGREP '(^| )all.*(:|:.* )check' Makefile.in && Exit 1
+
+$AUTOCONF
+./configure
+
+$MAKE check
+test -f check-target-has-run
+test ! -r all-target-has-failed
+# Sanity checks.
+$MAKE && Exit 1
+test -f all-target-has-failed
+
+:
diff --git a/t/cygnus-dependency-tracking.sh b/t/cygnus-dependency-tracking.sh
new file mode 100755 (executable)
index 0000000..6c858c1
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that cygnus mode disables automatic dependency tracking.
+# And check that this *cannot* be overridden.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AM_MAINTAINER_MODE
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = -Wno-obsolete
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+.PHONY: test-nodeps
+test-nodeps:
+       test ! -d .deps
+       test ! -d _deps
+       test ! -d '$(DEPDIR)'
+END
+
+cat > foo.c <<'END'
+#include "bar.h"
+int main ()
+{
+  GIVE_BACK 0;
+}
+END
+
+cat > bar.sav <<'END'
+#define GIVE_BACK return
+END
+
+cp bar.sav bar.h
+
+$ACLOCAL
+$AUTOMAKE --include-deps --cygnus --include-deps
+$AUTOCONF
+
+# Unknown options should cause just warnings from configure.
+./configure --enable-dependency-tracking
+$MAKE
+$MAKE test-nodeps
+
+: > bar.h
+$MAKE
+$MAKE test-nodeps
+
+# Sanity check.
+$MAKE clean
+$MAKE >out 2>&1 && { cat out; Exit 1; }
+cat out
+# Not all compilers mention the undefined symbol in the error message.
+grep GIVE_BACK out || grep main out
+
+:
diff --git a/t/cygnus-deprecation.sh b/t/cygnus-deprecation.sh
new file mode 100755 (executable)
index 0000000..779914b
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that support for Cygnus-style trees is deprecated.
+# That feature will be removed in the next major Automake release.
+# See automake bug#11034.
+
+. ./defs || Exit 1
+
+warn_rx='support for Cygnus.*trees.*deprecated'
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_MAINTAINER_MODE
+END
+
+$ACLOCAL
+$AUTOCONF
+
+: > Makefile.am
+
+# 'cygnus' option from command line
+$AUTOMAKE --cygnus -Wno-obsolete
+AUTOMAKE_fails --cygnus
+grep "^automake.*: .*$warn_rx" stderr
+AUTOMAKE_fails -Wnone -Wobsolete --cygnus
+grep "^automake.*: .*$warn_rx" stderr
+AUTOMAKE_fails --cygnus -Wnone -Wobsolete
+grep "^automake.*: .*$warn_rx" stderr
+
+rm -rf autom4te*.cache
+
+# 'cygnus' option in Makefile.am
+echo "AUTOMAKE_OPTIONS = cygnus" > Makefile.am
+cat Makefile.am # For debugging.
+$AUTOMAKE -Wno-obsolete
+AUTOMAKE_fails
+grep "^Makefile\.am:1:.*$warn_rx" stderr
+AUTOMAKE_fails -Wnone -Wobsolete
+grep "^Makefile\.am:1:.*$warn_rx" stderr
+
+rm -rf autom4te*.cache
+
+# 'cygnus' option in configure.ac
+: > Makefile.am
+sed "s|^\\(AM_INIT_AUTOMAKE\\).*|\1([cygnus])|" configure.ac > t
+diff configure.ac t && fatal_ "failed to edit configure.ac"
+mv -f t configure.ac
+$AUTOMAKE -Wno-obsolete
+AUTOMAKE_fails
+grep "^configure\.ac:2:.*$warn_rx" stderr
+AUTOMAKE_fails -Wnone -Wobsolete
+grep "^configure\.ac:2:.*$warn_rx" stderr
+
+:
diff --git a/t/cygnus-imply-foreign.sh b/t/cygnus-imply-foreign.sh
new file mode 100755 (executable)
index 0000000..1173a47
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that 'cygnus' mode imply 'foreign' mode.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+# This is *required* in cygnus mode
+AM_MAINTAINER_MODE
+END
+
+$ACLOCAL
+
+: > Makefile.am
+
+# We want complete control automake flags, while honouring the
+# user overrides for $AUTOMAKE.
+AUTOMAKE=$am_original_AUTOMAKE
+
+# Sanity check: gnu mode must complain about missing files and
+# portability problems.
+AUTOMAKE_fails
+grep 'required file.*README' stderr
+
+# But cygnus mode should imply foreign mode, so no complaints.
+# And cygnus mode should by able to override gnu and gnits modes.
+$AUTOMAKE --cygnus -Werror
+$AUTOMAKE --gnu --cygnus -Werror
+$AUTOMAKE --gnits --cygnus -Werror
+
+# Try again, this time enabling cygnus mode from Makefile.am.
+cp Makefile.am Makefile.sav
+echo 'AUTOMAKE_OPTIONS = gnu cygnus' >> Makefile.am
+$AUTOMAKE -Werror
+mv -f Makefile.sav Makefile.am
+
+# Try again, this time enabling cygnus mode from configure.ac.
+cp configure.ac configure.sav
+sed 's/^AM_INIT_AUTOMAKE/&([gnits cygnus])/' configure.sav >configure.ac
+cmp configure.ac configure.sav && fatal_ 'failed to edit configure.ac'
+
+$ACLOCAL --force
+$AUTOMAKE -Werror
+mv -f configure.sav configure.ac
+
+:
diff --git a/t/cygnus-no-dist.sh b/t/cygnus-no-dist.sh
new file mode 100755 (executable)
index 0000000..d94a8f5
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that cygnus mode forbids creation of distribution tarball.
+
+. ./defs || Exit 1
+
+echo AM_MAINTAINER_MODE >> configure.ac
+mv -f configure.ac configure.stub
+
+cat configure.stub - > configure.ac <<'END'
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --cygnus -Wno-obsolete
+
+./configure
+$MAKE
+
+for target in dist distdir distcheck dist-all dist-gzip; do
+  $MAKE -n $target >out 2>&1 && { cat out; Exit 1; }
+  cat out
+  grep $target out
+done
+
+# Now check that cygnus mode in a subdirectory disables
+# distribution-building in that subdirectory.
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub1 sub2
+END
+
+mkdir sub1 sub2
+: > sub1/Makefile.am
+cat > sub2/Makefile.am <<'END'
+# The '-Wall' after 'cygnus' should ensure no warning gets
+# unintentionally disabled.  We are particularly interested
+# in override warnings, for when (below) we add the 'distdir'
+# target.
+AUTOMAKE_OPTIONS = cygnus -Wall
+# This is required because the 'cygnus' option is now deprecated.
+AUTOMAKE_OPTIONS += -Wno-obsolete
+END
+
+cat configure.stub - > configure.ac <<'END'
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+cd sub2
+$MAKE -n distdir >out 2>&1 && { cat out; Exit 1; }
+grep distdir out
+cd ..
+
+cat >> sub2/Makefile.am <<'END'
+distdir:
+END
+$AUTOMAKE sub2/Makefile
+./config.status sub2/Makefile
+
+$MAKE distdir
+$MAKE dist
+
+:
diff --git a/t/cygnus-no-installinfo.sh b/t/cygnus-no-installinfo.sh
new file mode 100755 (executable)
index 0000000..d46b6b3
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that cygnus mode enables the 'no-installinfo' option.
+
+required=makeinfo
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AM_MAINTAINER_MODE
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+info_TEXINFOS = foo.texi
+END
+
+cat > foo.texi <<'END'
+@setfilename foo.info
+END
+
+$ACLOCAL
+# -Wno-override works around a buglet in definition of $(MAKEINFO)
+# in cygnus mode; see also xfailing test 'txinfo5.test'.
+# -Wno-obsolete accounts for the fact that the cygnus mode is now
+# deprecated.
+$AUTOMAKE --cygnus -Wno-override -Wno-obsolete
+$AUTOCONF
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd"/_inst
+$MAKE
+$MAKE install
+test ! -d _inst
+test ! -r foo.info
+test ! -d _inst/share/info
+$MAKE install-info
+ls -l _inst
+test -f foo.info
+test -f _inst/share/info/foo.info
+
+:
diff --git a/t/cygnus-requires-maintainer-mode.sh b/t/cygnus-requires-maintainer-mode.sh
new file mode 100755 (executable)
index 0000000..546e898
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that, in cygnus mode, maintainer mode is required.
+
+. ./defs || Exit 1
+
+: > Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails -Wno-obsolete --cygnus
+grep '^configure\.ac:.*AM_MAINTAINER_MODE.*required.*cygnus' stderr
+
+cat >> configure.ac <<'END'
+AC_CONFIG_FILES([sub/Makefile])
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+END
+
+mkdir sub
+cat > sub/Makefile.am <<'END'
+AUTOMAKE_OPTIONS = -Wno-obsolete cygnus
+END
+
+rm -rf autom4te.cache
+$ACLOCAL
+AUTOMAKE_fails
+grep '^configure\.ac:.*AM_MAINTAINER_MODE.*required.*cygnus' stderr
+
+cat >> configure.ac <<'END'
+AM_MAINTAINER_MODE
+END
+
+rm -rf autom4te.cache
+$ACLOCAL
+$AUTOMAKE --cygnus -Wno-obsolete
+
+:
diff --git a/t/cygwin32.sh b/t/cygwin32.sh
new file mode 100755 (executable)
index 0000000..9415fb6
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test basic Cygwin32 functionality.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = www
+www_SOURCES = www.c
+EXTRA_www_SOURCES = xtra.c
+www_LDADD = @extra_stuff@
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^CYGWIN' Makefile.in && Exit 1
+grep 'EXEEXT' Makefile.in
+
+:
diff --git a/t/dash.sh b/t/dash.sh
new file mode 100755 (executable)
index 0000000..992bf62
--- /dev/null
+++ b/t/dash.sh
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure '-' can be used in path.
+# Report from Matthew D. Langston.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+include Make-lang
+END
+
+: > Make-lang
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/defun.sh b/t/defun.sh
new file mode 100755 (executable)
index 0000000..9b66a56
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal picks up on all macro definitions.
+
+. ./defs || Exit 1
+
+cat > acinclude.m4 << 'END'
+AC_DEFUN([AM_FUNC_THREE])
+AC_DEFUN([AM_FUNC_TWO], [@!GrepThisString!@AM_FUNC_THREE])
+AC_DEFUN([AM_FUNC_ONE], [AC_REQUIRE([AM_FUNC_TWO])])
+END
+
+cat >>configure.ac << 'END'
+AM_FUNC_ONE
+END
+
+$ACLOCAL
+$AUTOCONF
+grep '^@!GrepThisString!@$' configure
+
+:
diff --git a/t/defun2.sh b/t/defun2.sh
new file mode 100755 (executable)
index 0000000..0b3f96b
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we don't mistake a macro definition for an invocation.
+# From Jim Meyering.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+dnl if buggy this will require getloadavg.c
+AC_PROG_CC
+AC_DEFUN([AC_FUNC_GETLOADAVG])
+dnl need this to avoid LIBOBJS used but not defined.
+AC_FUNC_MEMCMP
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_LDADD = @LIBOBJS@
+END
+
+: > memcmp.c
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/dejagnu-absolute-builddir.sh b/t/dejagnu-absolute-builddir.sh
new file mode 100755 (executable)
index 0000000..8cdc3a1
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that DejaGnu testsuites have 'objdir' defined (as a TCL variable)
+# to an absolute path.
+
+required=runtest
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+DEJATOOL = tcl env
+EXTRA_DIST = tcl.test/tcl.exp
+END
+
+mkdir tcl.test
+
+cat > tcl.test/tcl.exp << 'END'
+send_user "tcl_objdir: $objdir\n"
+if { [ regexp "^/" $objdir ] } {
+    pass "test_tcl_objdir"
+} else {
+    fail "test_tcl_objdir"
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE check
+
+# Sanity check: all tests have run.
+test -f env.log
+test -f env.sum
+test -f tcl.log
+test -f tcl.sum
+
+$MAKE distcheck
+
+:
diff --git a/t/dejagnu-relative-srcdir.sh b/t/dejagnu-relative-srcdir.sh
new file mode 100755 (executable)
index 0000000..05ae200
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that DejaGnu testsuites have 'srcdir' defined to a relative path
+# (both as TCL variable and as environment variable).
+
+required=runtest
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+DEJATOOL = tcl env
+EXTRA_DIST = env.test/env.exp tcl.test/tcl.exp lib/tcl.exp
+END
+
+mkdir env.test tcl.test lib
+
+# DejaGnu can change $srcdir behind our backs, so we have to
+# save its original value.  Thanks to Ian Lance Taylor for the
+# suggestion.
+cat > lib/tcl.exp << 'END'
+send_user "tcl_lib_srcdir: $srcdir\n"
+set orig_srcdir $srcdir
+END
+
+cat > env.test/env.exp << 'END'
+set env_srcdir $env(srcdir)
+send_user "env_srcdir: $env_srcdir\n"
+if { [ regexp "^\.\.?$" $env_srcdir ] } {
+    pass "test_env_src"
+} else {
+    fail "test_env_src"
+}
+END
+
+cat > tcl.test/tcl.exp << 'END'
+send_user "tcl_srcdir: $srcdir\n"
+if { [ regexp "^\.\.?$" $srcdir ] } {
+    pass "test_tcl_src"
+} else {
+    fail "test_tcl_src"
+}
+send_user "tcl_orig_srcdir: $orig_srcdir\n"
+if { [ regexp "^\.\.?$" $orig_srcdir ] } {
+    pass "test_tcl_orig_src"
+} else {
+    fail "test_tcl_orig_src"
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure --srcdir=.
+
+$MAKE check
+
+# Sanity check: all tests have run.
+test -f env.log
+test -f env.sum
+test -f tcl.log
+test -f tcl.sum
+
+$MAKE distcheck
+
+:
diff --git a/t/dejagnu-siteexp-append.sh b/t/dejagnu-siteexp-append.sh
new file mode 100755 (executable)
index 0000000..c3bfff6
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the files in $(EXTRA_DEJAGNU_SITE_CONFIG) get appended to
+# site.exp in the same order in which they're listed in that variable.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+DEJATOOL = tool
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE site.exp
+sed '/^##.*##$/d' site.exp > expected
+
+cat > foo.exp << 'END'
+foo1
+foo2
+foo3
+END
+
+cat foo.exp - >> expected << 'END'
+BAR 1
+# foo
+BAR 2
+END
+
+cat >> Makefile.am << 'END'
+EXTRA_DEJAGNU_SITE_CONFIG = foo.exp bar.exp
+bar.exp:
+       @(echo 'BAR 1' && echo '# foo' && echo 'BAR 2') > $@
+END
+
+$AUTOMAKE Makefile
+./config.status Makefile
+
+rm -f site.exp
+$MAKE site.exp
+sed '/^##.*##$/d' site.exp > obtained
+
+cat expected
+cat site.exp
+
+diff expected obtained
+
+:
diff --git a/t/dejagnu-siteexp-extend.sh b/t/dejagnu-siteexp-extend.sh
new file mode 100755 (executable)
index 0000000..f0f6194
--- /dev/null
@@ -0,0 +1,159 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the developer can extend the site.exp generated by the
+# automake-generated Makefile.
+
+required=runtest
+. ./defs || Exit 1
+
+write_check_for ()
+{
+  echo "send_user \"$1: \$$1\\n\""
+  unindent << END
+    if { \$$1 == "/$1/" } {
+        pass "test_$1"
+    } else {
+        fail "test_$1"
+    }
+END
+}
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+DEJATOOL = tool
+
+EXTRA_DIST = tool.test/tool.exp
+
+EXTRA_DEJAGNU_SITE_CONFIG = foo.exp
+EXTRA_DIST += foo.exp
+END
+
+echo 'set foo "/foo/"' > foo.exp
+
+mkdir tool.test
+write_check_for foo > tool.test/tool.exp
+cat tool.test/tool.exp
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE check
+cat foo.exp
+cat site.exp
+grep 'PASS: test_foo' tool.sum
+
+write_check_for bar >> tool.test/tool.exp
+write_check_for baz >> tool.test/tool.exp
+cat tool.test/tool.exp
+
+# Ensure that foo.exp will be newer than site.exp, which will
+# thus have to be remade.
+$sleep
+# With this, below we'll also check that settings in files coming later in
+# $(EXTRA_DEJAGNU_SITE_CONFIG) override those in files coming earlier.
+cat >> foo.exp <<'END'
+set bar "/foo/"
+set baz "/foo/"
+set qux "/foo/"
+END
+
+$MAKE check && { cat site.exp; Exit 1; }
+grep 'PASS: test_foo' tool.sum
+grep 'FAIL: test_bar' tool.sum
+grep 'FAIL: test_baz' tool.sum
+
+cat >> Makefile.am << 'END'
+EXTRA_DEJAGNU_SITE_CONFIG += bar bar.dir/bar
+EXTRA_DIST += bar
+DISTCLEANFILES = bar.dir/bar
+bar.dir/bar:
+       test -d bar.dir || mkdir bar.dir
+       echo 'set baz "/baz/"' > $@
+END
+
+echo 'set bar "/bar/"' > bar
+# This will allow us to check one more time that settings in files
+# coming later in $(EXTRA_DEJAGNU_SITE_CONFIG) override those in
+# files coming earlier.
+echo 'set baz "/xyz/"' >> bar
+
+# Ensure that the Makefile will be newer than site.exp, which will
+# thus have to be remade.
+$sleep
+$AUTOMAKE Makefile
+./config.status Makefile
+
+$MAKE check || { cat site.exp; Exit 1; }
+cat site.exp
+cat bar.dir/bar
+$FGREP '/bar/' site.exp
+$FGREP '/baz/' site.exp
+grep 'PASS: test_foo' tool.sum
+grep 'PASS: test_bar' tool.sum
+grep 'PASS: test_baz' tool.sum
+
+# Check that the features we're testing behave well in VPATH builds.
+$MAKE distcheck
+
+# Check that the user can edit the site.exp file, and that his edits
+# are retained.
+write_check_for zardoz >> tool.test/tool.exp
+cat tool.test/tool.exp
+echo 'set zardoz "/zardoz/"' >> site.exp
+
+$MAKE check
+cat site.exp
+grep 'PASS: test_zardoz' tool.sum
+
+cat >> Makefile.am << 'END'
+EXTRA_DEJAGNU_SITE_CONFIG += quux.exp
+quux.exp:
+       echo 'set zardoz "/quux/"' > $@
+END
+
+# Ensure that the Makefile will be newer than on site.exp, which will
+# thus have to be remade.
+$sleep
+$AUTOMAKE Makefile
+./config.status Makefile
+grep 'zardoz.*/quux/' Makefile
+
+$MAKE site.exp
+cat site.exp
+cat quux.exp
+grep 'zardoz.*/quux/' site.exp
+
+$MAKE check
+grep 'PASS: test_zardoz' tool.sum
+grep 'zardoz: /zardoz/' tool.log
+grep 'zardoz.*quux' tool.log && Exit 1
+
+# Check that files in $(EXTRA_DEJAGNU_SITE_CONFIG) are not distributed
+# by default.
+$MAKE distdir
+ls -l $distdir
+test ! -r $distdir/bar.dir/bar
+test ! -r $distdir/quux.exp
+
+:
diff --git a/t/dejagnu-siteexp-useredit.sh b/t/dejagnu-siteexp-useredit.sh
new file mode 100755 (executable)
index 0000000..9be5eba
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the user can edit the Makefile-generated site.exp, and
+# have its edits survive to the remaking of that file.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+DEJATOOL = foo
+END
+
+# Deliberately select a variable defined automatically by
+# the Makefile-generated site.exp.
+mkdir foo.test
+cat > foo.test/foo.exp << 'END'
+send_user "objdir: $objdir\n"
+set pipe "|"
+if { $objdir == "${pipe}objdir${pipe}" } {
+    pass "test_obj"
+} else {
+    fail "test_obj"
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE site.exp
+echo 'set objdir "|objdir|"' >> site.exp
+cat site.exp
+$sleep
+touch Makefile
+$MAKE site.exp
+cat site.exp
+is_newest site.exp Makefile  # Sanity check.
+grep '|objdir|' site.exp
+test `grep -c '|objdir|' site.exp` -eq 1
+
+# We can do a "more semantic" check if DejaGnu is available.
+if runtest SOMEPROGRAM=someprogram --version; then
+  $MAKE check
+  grep 'PASS: test_obj' foo.sum
+fi
+
+:
diff --git a/t/dejagnu.sh b/t/dejagnu.sh
new file mode 100755 (executable)
index 0000000..583158f
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Superficial test to check that dejagnu tests and automake-style
+# tests can coexist.  See also related deeper test 'check12.test'.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+TESTS = frob.test
+END
+
+test x"$am_serial_tests" = x"yes" || : > test-driver
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^check-TESTS' Makefile.in
+grep '^check-DEJAGNU' Makefile.in
+
+:
diff --git a/t/dejagnu2.sh b/t/dejagnu2.sh
new file mode 100755 (executable)
index 0000000..0a0d091
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we don't override the user's site.exp rule.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+
+site.exp:
+       echo :GREP:ME: > $@
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -Wno-override
+
+grep 'site\.exp' Makefile.in
+test `grep -c '^site\.exp:' Makefile.in` -eq 1
+
+./configure
+$MAKE site.exp
+grep ':GREP:ME:' site.exp
+
+AUTOMAKE_fails
+grep '^Makefile\.am:3:.*site\.exp' stderr
+
+:
diff --git a/t/dejagnu3.sh b/t/dejagnu3.sh
new file mode 100755 (executable)
index 0000000..7d15bc9
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the DejaGnu rules work for a simple program and test case.
+
+required=runtest
+. ./defs || Exit 1
+
+cat > hammer << 'END'
+#! /bin/sh
+echo "Everything looks like a nail to me!"
+END
+
+chmod +x hammer
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+DEJATOOL = hammer
+AM_RUNTESTFLAGS = HAMMER=$(srcdir)/hammer
+EXTRA_DIST = hammer hammer.test/hammer.exp
+END
+
+mkdir hammer.test
+
+cat > hammer.test/hammer.exp << 'END'
+set test test
+spawn $HAMMER
+expect {
+    "Everything looks like a nail to me!" { pass "$test" }
+    default { fail "$test" }
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE check
+test -f hammer.log
+test -f hammer.sum
+
+$MAKE distcheck
+
+# Ensure that the envvar RUNTESTFLAGS is used.
+# Report from Mark Mitchell.
+RUNTESTFLAGS=--unknown-runtest-option $MAKE check >output 2>&1 \
+  && { cat output; Exit 1; }
+cat output
+$FGREP 'unknown-runtest-option' output
+
+:
diff --git a/t/dejagnu4.sh b/t/dejagnu4.sh
new file mode 100755 (executable)
index 0000000..44904df
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the DejaGnu rules work for a simple program and test case.
+# Also check PR 488: Failure of the first of several tools tested.
+# From the original bug report:
+# ``If you use dejagnu for testing and have multiple tools (i.e.,
+#   multiple entries in the DEJATOOL variable) then the success/failure
+#   of "make check" is only dependent on the success/failure of the
+#   tests on the final tool. Thus there may be failures in the tests on
+#   previous tools, but at first glance "make check" has passed.''
+
+required=runtest
+. ./defs || Exit 1
+
+cat > hammer << 'END'
+#! /bin/sh
+echo "Everything looks like a nail to me!"
+END
+chmod +x hammer
+
+cat > spanner << 'END'
+#! /bin/sh
+echo "I'm a right spanner!"
+END
+chmod +x spanner
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+
+DEJATOOL = hammer spanner
+
+AM_RUNTESTFLAGS = HAMMER=$(srcdir)/hammer SPANNER=$(srcdir)/spanner
+
+EXTRA_DIST  = hammer  hammer.test/hammer.exp
+EXTRA_DIST += spanner spanner.test/spanner.exp
+END
+
+mkdir hammer.test spanner.test
+
+cat > hammer.test/hammer.exp << 'END'
+set test test
+spawn $HAMMER
+expect {
+    "Everything looks like a nail to me!" { pass "$test" }
+    default { fail "$test" }
+}
+END
+
+cat > spanner.test/spanner.exp << 'END'
+set test test
+spawn $SPANNER
+expect {
+    "I'm a right spanner!" { pass "$test" }
+    default { fail "$test" }
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE check
+test -f hammer.log
+test -f hammer.sum
+test -f spanner.log
+test -f spanner.sum
+
+$MAKE distcheck
+
+# Test for PR 488.
+sed 's/E\(verything\)/Not e\1/' hammer > thammer
+mv -f thammer hammer
+chmod +x hammer
+
+rm -f hammer.log hammer.sum spanner.log spanner.sum
+$MAKE check && Exit 1
+test -f hammer.log
+test -f hammer.sum
+test -f spanner.log
+test -f spanner.sum
+
+:
diff --git a/t/dejagnu5.sh b/t/dejagnu5.sh
new file mode 100755 (executable)
index 0000000..26eaa60
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the DejaGnu rules do look for a testsuite named after
+# the package by default.
+
+required=runtest
+. ./defs || Exit 1
+
+package=$me
+
+cat > $package << 'END'
+#! /bin/sh
+echo "Ah, we have been expecting you, Mr. Blond."
+END
+chmod +x $package
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << END
+AUTOMAKE_OPTIONS = dejagnu
+EXTRA_DIST = $package $package.test/$package.exp
+AM_RUNTESTFLAGS = PACKAGE=\$(srcdir)/$package
+END
+
+mkdir $package.test
+cat > $package.test/$package.exp << 'END'
+set test "a_dejagnu_test"
+spawn $PACKAGE
+expect {
+    "Ah, we have been expecting you, Mr. Blond." { pass "$test" }
+    default { fail "$test" }
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE check
+test -f $package.log
+test -f $package.sum
+
+$MAKE distcheck
+
+:
diff --git a/t/dejagnu6.sh b/t/dejagnu6.sh
new file mode 100755 (executable)
index 0000000..38255f6
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that "make check" fails, when a DejaGnu test fails.
+
+required=runtest
+. ./defs || Exit 1
+
+cat > faildeja << 'END'
+#! /bin/sh
+echo whatever
+END
+chmod +x faildeja
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+DEJATOOL = faildeja
+AM_RUNTESTFLAGS = FAILDEJA=$(srcdir)/faildeja
+END
+
+mkdir faildeja.test
+cat > faildeja.test/faildeja.exp << 'END'
+set test failing_deja_test
+spawn $FAILDEJA
+expect {
+    default { fail "$test" }
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE check && Exit 1
+test -f faildeja.log
+test -f faildeja.sum
+$FGREP 'FAIL: failing_deja_test' faildeja.sum
+
+:
diff --git a/t/dejagnu7.sh b/t/dejagnu7.sh
new file mode 100755 (executable)
index 0000000..a926955
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that "make check" fails, when we invoke DejaGnu tests with --status
+# (to detect TCL errors) on a file with TCL errors.
+
+required=runtest
+. ./defs || Exit 1
+
+runtest --help | grep '.*--status' \
+  || skip_ "dejagnu lacks support for '--status'"
+
+cat > failtcl << 'END'
+#! /bin/sh
+echo whatever
+END
+chmod +x failtcl
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = dejagnu
+DEJATOOL = failtcl
+AM_RUNTESTFLAGS = --status FAILTCL=$(srcdir)/failtcl
+END
+
+mkdir failtcl.test
+cat > failtcl.test/failtcl.exp << 'END'
+set test test
+spawn $FAILTCL
+expect {
+    default { pass "$test" }
+# Oops, no closing brace.
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE check && Exit 1
+test -f failtcl.log
+test -f failtcl.sum
+$FGREP 'missing close-brace' failtcl.sum
+
+:
diff --git a/t/deleted-am.sh b/t/deleted-am.sh
new file mode 100755 (executable)
index 0000000..636286c
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The stub rules emitted to work around the "deleted header problem"
+# for '.am' files shouldn't prevent the remake rules from correctly
+# erroring out when a still-required file is missing.
+# See also discussion about automake bug#9768.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+echo 'include $(top_srcdir)/foobar.am' > Makefile.am
+echo 'include zardoz.am' > foobar.am
+: > zardoz.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+
+rm -f zardoz.am
+$sleep # Required to avoid racy failures with FreeBSD make.
+$MAKE >output 2>&1 && { cat output; Exit 1; }
+cat output
+# This error will come from automake, not make, so we can be stricter
+# in our grepping of it.
+grep 'cannot open.*zardoz\.am' output
+grep 'foobar\.am' output && Exit 1 # No spurious error, please.
+
+# Try with one less indirection.
+: > foobar.am
+$AUTOMAKE Makefile
+./config.status Makefile
+$MAKE # Sanity check.
+rm -f foobar.am
+$sleep # Required to avoid racy failures with FreeBSD make.
+$MAKE >output 2>&1 && { cat output; Exit 1; }
+cat output
+# This error will come from automake, not make, so we can be stricter
+# in our grepping of it.
+grep 'cannot open.*foobar\.am' output
+
+:
diff --git a/t/deleted-m4.sh b/t/deleted-m4.sh
new file mode 100755 (executable)
index 0000000..e1bbfce
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The stub rules emitted to work around the "deleted header problem"
+# for '.m4' files shouldn't prevent the remake rules from correctly
+# erroring out when a still-required file is missing.
+# See also discussion about automake bug#9768.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+m4_include([foobar.m4])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+echo 'm4_include([zardoz.m4])' > foobar.m4
+: > zardoz.m4
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+
+rm -f zardoz.m4
+$MAKE >output 2>&1 && { cat output; Exit 1; }
+cat output
+# This error will come from aclocal, not make, so we can be stricter
+# in our grepping of it.
+grep ' foobar\.m4:1:.*zardoz\.m4.*does not exist' output
+# No spurious errors, please.
+$FGREP -v ' foobar.m4:1:' output | $FGREP 'foobar.m4' && Exit 1
+
+# Try with one less indirection.
+: > foobar.m4
+$ACLOCAL --force
+$AUTOCONF
+./configure
+$MAKE # Sanity check.
+rm -f foobar.m4
+$MAKE >output 2>&1 && { cat output; Exit 1; }
+cat output
+# This error will come from aclocal, not make, so we can be stricter
+# in our grepping of it.
+grep 'foobar\.m4.*does not exist' output
+# No spurious errors, please (ok, this is really paranoid).
+$FGREP 'zardoz.m4' output && Exit 1
+
+:
diff --git a/t/depacl2.sh b/t/depacl2.sh
new file mode 100755 (executable)
index 0000000..378a1a2
--- /dev/null
@@ -0,0 +1,27 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure dependencies work when required macro is part of
+# autoconf.
+
+. ./defs || Exit 1
+
+echo 'AM_FOO' >> configure.ac
+echo 'AC_DEFUN([AM_FOO], [AC_REQUIRE([AC_HEADER_STDC])])' > AM_FOO.m4
+
+$ACLOCAL -I .
+
+:
diff --git a/t/depcomp-auto.tap b/t/depcomp-auto.tap
new file mode 100755 (executable)
index 0000000..b4e26de
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=auto depcomp_with_libtool=no
+required="cc"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-cpp.tap b/t/depcomp-cpp.tap
new file mode 100755 (executable)
index 0000000..a415f21
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=cpp depcomp_with_libtool=no
+required="gcc"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-dashmstdout.tap b/t/depcomp-dashmstdout.tap
new file mode 100755 (executable)
index 0000000..6e5fa6f
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=dashmstdout depcomp_with_libtool=no
+required="gcc"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-disabled.tap b/t/depcomp-disabled.tap
new file mode 100755 (executable)
index 0000000..a6b3b93
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=disabled depcomp_with_libtool=no
+required="cc"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-gcc.tap b/t/depcomp-gcc.tap
new file mode 100755 (executable)
index 0000000..4026ed7
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=gcc depcomp_with_libtool=no
+required="gcc"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-lt-auto.tap b/t/depcomp-lt-auto.tap
new file mode 100755 (executable)
index 0000000..61abb2b
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=auto depcomp_with_libtool=yes
+required="cc libtoolize"
+. ./defs || Exit 1
+plan_ 84
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-lt-cpp.tap b/t/depcomp-lt-cpp.tap
new file mode 100755 (executable)
index 0000000..322916e
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=cpp depcomp_with_libtool=yes
+required="gcc libtoolize"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-lt-dashmstdout.tap b/t/depcomp-lt-dashmstdout.tap
new file mode 100755 (executable)
index 0000000..b5df560
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=dashmstdout depcomp_with_libtool=yes
+required="gcc libtoolize"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-lt-disabled.tap b/t/depcomp-lt-disabled.tap
new file mode 100755 (executable)
index 0000000..1ab998e
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=disabled depcomp_with_libtool=yes
+required="cc libtoolize"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-lt-gcc.tap b/t/depcomp-lt-gcc.tap
new file mode 100755 (executable)
index 0000000..13e34fd
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=gcc depcomp_with_libtool=yes
+required="gcc libtoolize"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-lt-makedepend.tap b/t/depcomp-lt-makedepend.tap
new file mode 100755 (executable)
index 0000000..af2e422
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=makedepend depcomp_with_libtool=yes
+required="cc makedepend libtoolize"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-lt-msvcmsys.tap b/t/depcomp-lt-msvcmsys.tap
new file mode 100755 (executable)
index 0000000..ce6d3cb
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=msvcmsys depcomp_with_libtool=yes
+required="cl mingw libtoolize"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-lt-msvisualcpp.tap b/t/depcomp-lt-msvisualcpp.tap
new file mode 100755 (executable)
index 0000000..2f1f4e0
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=msvisualcpp depcomp_with_libtool=yes
+required="cl cygpath libtoolize"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-makedepend.tap b/t/depcomp-makedepend.tap
new file mode 100755 (executable)
index 0000000..c0338c9
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=makedepend depcomp_with_libtool=no
+required="cc makedepend"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-msvcmsys.tap b/t/depcomp-msvcmsys.tap
new file mode 100755 (executable)
index 0000000..7b4a0db
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=msvcmsys depcomp_with_libtool=no
+required="cl mingw"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp-msvisualcpp.tap b/t/depcomp-msvisualcpp.tap
new file mode 100755 (executable)
index 0000000..ed94b11
--- /dev/null
@@ -0,0 +1,7 @@
+#! /bin/sh
+# Automatically generated test.  DO NOT EDIT BY HAND!
+am_create_testdir=empty depmode=msvisualcpp depcomp_with_libtool=no
+required="cl cygpath"
+. ./defs || Exit 1
+plan_ 28
+. "$am_testauxdir/depcomp.sh"; exit "$?"
diff --git a/t/depcomp.sh b/t/depcomp.sh
new file mode 100755 (executable)
index 0000000..f2e0370
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure depcomp is installed and found properly
+# when required for multiple directories.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([subdir/Makefile subdir2/Makefile])
+AC_PROG_CC
+AC_OUTPUT
+END
+
+rm -f depcomp
+mkdir subdir
+mkdir subdir2
+
+cat > subdir/Makefile.am << 'END'
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.c
+END
+
+cp subdir/Makefile.am subdir2/Makefile.am
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+# There used to be a bug where this was created in the first subdir with C
+# sources in it instead of in $top_srcdir or $ac_auxdir.
+test -f depcomp
+
+:
diff --git a/t/depcomp2.sh b/t/depcomp2.sh
new file mode 100755 (executable)
index 0000000..624dee6
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that depcomp is not used when it's not installed
+# From Pavel Roskin.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([subdir/Makefile])
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = subdir
+END
+
+rm -f depcomp
+mkdir subdir
+
+cat > subdir/Makefile.in << 'END'
+foo:
+       $(CC) -o foo foo.c
+END
+
+: > subdir/foo.c
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+./configure 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+test ! -s stderr
+
+:
diff --git a/t/depcomp8a.sh b/t/depcomp8a.sh
new file mode 100755 (executable)
index 0000000..01a2403
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for regressions in computation of names of .Po files for
+# automatic dependency tracking.
+# Keep this in sync with sister test 'depcomp8b.test', which checks the
+# same thing for libtool objects.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+#x AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = foo.c sub/bar.c
+END
+
+mkdir sub
+cat > foo.c << 'END'
+int main (void)
+{
+  extern int bar;
+  return bar;
+}
+END
+cat > sub/bar.c << 'END'
+extern int bar = 0;
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+grep include Makefile.in # For debugging.
+grep 'include.*\./\$(DEPDIR)/foo\.P' Makefile.in
+grep 'include.*\./\$(DEPDIR)/bar\.P' Makefile.in
+grep 'include.*/\./\$(DEPDIR)' Makefile.in && Exit 1
+
+$AUTOCONF
+# Don't reject slower dependency extractors, for better coverage.
+./configure --enable-dependency-tracking
+$MAKE
+cross_compiling || ./zardoz
+DISTCHECK_CONFIGURE_FLAGS='--enable-dependency-tracking' $MAKE distcheck
+
+# Try again with subdir-objects option.
+
+sed 's/#x //' configure.ac >configure.int
+mv -f configure.int configure.ac
+echo AUTOMAKE_OPTIONS = subdir-objects >> Makefile.am
+
+$ACLOCAL
+$AUTOMAKE -a
+grep include Makefile.in # For debugging.
+grep 'include.*\./\$(DEPDIR)/foo\.P' Makefile.in
+grep 'include.*[^a-zA-Z0-9_/]sub/\$(DEPDIR)/bar\.P' Makefile.in
+$EGREP 'include.*/(\.|sub)/\$\(DEPDIR\)' Makefile.in && Exit 1
+
+$AUTOCONF
+# Don't reject slower dependency extractors, for better coverage.
+./configure --enable-dependency-tracking
+$MAKE
+cross_compiling || ./zardoz
+DISTCHECK_CONFIGURE_FLAGS='--enable-dependency-tracking' $MAKE distcheck
+
+:
diff --git a/t/depcomp8b.sh b/t/depcomp8b.sh
new file mode 100755 (executable)
index 0000000..b5f7371
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for regressions in computation of names of .Plo files for
+# automatic dependency tracking.
+# Keep this in sync with sister test 'depcomp8a.test', which checks the
+# same thing for non-libtool objects.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+#x AM_PROG_CC_C_O
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libzardoz.la
+libzardoz_la_SOURCES = foo.c sub/bar.c
+END
+
+mkdir sub
+echo 'extern int foo = 0;' > foo.c
+echo 'extern int bar = 0;' > sub/bar.c
+
+libtoolize
+
+$ACLOCAL
+$AUTOMAKE -a
+grep include Makefile.in # For debugging.
+grep 'include.*\./\$(DEPDIR)/foo\.P' Makefile.in
+grep 'include.*\./\$(DEPDIR)/bar\.P' Makefile.in
+grep 'include.*/\./\$(DEPDIR)' Makefile.in && Exit 1
+
+$AUTOCONF
+# Don't reject slower dependency extractors, for better coverage.
+./configure --enable-dependency-tracking
+$MAKE
+DISTCHECK_CONFIGURE_FLAGS='--enable-dependency-tracking' $MAKE distcheck
+
+# Try again with subdir-objects option.
+
+sed 's/#x //' configure.ac >configure.int
+mv -f configure.int configure.ac
+echo AUTOMAKE_OPTIONS = subdir-objects >> Makefile.am
+
+$ACLOCAL
+$AUTOMAKE -a
+grep include Makefile.in # For debugging.
+grep 'include.*\./\$(DEPDIR)/foo\.P' Makefile.in
+grep 'include.*[^a-zA-Z0-9_/]sub/\$(DEPDIR)/bar\.P' Makefile.in
+$EGREP 'include.*/(\.|sub)/\$\(DEPDIR\)' Makefile.in && Exit 1
+
+$AUTOCONF
+# Don't reject slower dependency extractors, for better coverage.
+./configure --enable-dependency-tracking
+$MAKE
+DISTCHECK_CONFIGURE_FLAGS='--enable-dependency-tracking' $MAKE distcheck
+
+:
diff --git a/t/depdist.sh b/t/depdist.sh
new file mode 100755 (executable)
index 0000000..e81e097
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure depcomp is found for the distribution.
+# From Eric Magnien.
+
+required=cc
+. ./defs || Exit 1
+
+rm -f configure.ac
+
+mkdir config
+for i in *; do
+   if test "$i" != "config"; then
+      mv -f "$i" config
+   fi
+done
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([config])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AC_CONFIG_FILES([subdir/Makefile Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = subdir
+check-local: test1 test2
+.PHONY: test1 test2
+test1:
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]config/depcomp '
+test2: distdir
+       ls -l $(distdir)/*
+       test -f $(distdir)/config/depcomp
+END
+
+mkdir subdir
+cat > subdir/foo.c << 'END'
+int main(void)
+{
+  return 0;
+}
+END
+
+cat > subdir/Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/depend.sh b/t/depend.sh
new file mode 100755 (executable)
index 0000000..a2e3bd8
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This tests for a bug reported by Henrik Frystyk Nielsen <frystyk@w3.org>
+# In some cases the auto-dependency can get confused and try
+# to '-include' a directory (if a backslash-newline appears in _SOURCES).
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >> configure.ac
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = fred
+fred_SOURCES = \
+   fred.c
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+test 1 = `grep '^@AMDEP_TRUE@@am__include@' Makefile.in | wc -l`
diff --git a/t/depend3.sh b/t/depend3.sh
new file mode 100755 (executable)
index 0000000..8f8431a
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test _DEPENDENCIES variable.  From Lee Iverson.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_SUBST(DEPS)
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = TerraVision
+
+TerraVision_SOURCES = \
+       AboutDialog.c Clock.c Dialogs.c DrawModel.c \
+       TsmWidget.c Gats.c GATSDialogs.c Model.c ModelAnim.c \
+       ScannedMap.c \
+        TerraVision.c TerraVisionAvs.c TerraVisionCAVE.c \
+       Texture.c ThreeDControl.c ThreeDPanel.c \
+       ThreeDWidget.c ThreeDWidget1.c TileManager.c \
+       TileRequester.c TwoDWidget.c \
+        Visible.c RequestGenerator.c X11FrameGrab.c \
+       matrix.c pixmaps.c xpmhash.c xpmread.c xcolor.c xv24to8.c
+
+DEPS = @DEPS@
+
+TerraVision_DEPENDENCIES = $(DEPS)
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/depend4.sh b/t/depend4.sh
new file mode 100755 (executable)
index 0000000..d9896f8
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that dependencies are included when there are many header files.
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >> configure.ac
+
+$ACLOCAL
+
+headers=
+for header in one.h two.h three.h four.h five.h six.h; do
+  headers="$headers $header"
+  unindent > Makefile.am << END
+    bin_PROGRAMS = fred
+    fred_SOURCES = fred1.c $headers
+END
+  $AUTOMAKE
+  test 1 = `grep '^@AMDEP_TRUE@@am__include@' Makefile.in | wc -l`
+done
+
+:
diff --git a/t/depend5.sh b/t/depend5.sh
new file mode 100755 (executable)
index 0000000..ca900f0
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that _AM_OUTPUT_DEPENDENCY_COMMANDS works with eval-style
+# quoting in $CONFIG_FILES, done by newer Autoconf.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac << END
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << END
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c foo.h
+END
+
+cat >foo.c << END
+#include "foo.h"
+END
+: >foo.h
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure --enable-dependency-tracking
+if test -d .deps; then
+  depdir=.deps
+elif test -d _deps; then
+  depdir=_deps
+else
+  depdir=
+fi
+
+# For the fun of it, we should also cope with makefile
+# names that contain weird characters, with Autoconf 2.62
+# and newer.
+# Pick the first name that the file system will accept.
+for name in \
+  'weird  name with $ `#() &! characters"' \
+  'weird  name with $ `#()  characters"' \
+  'weird  name with  characters'
+do
+  cp Makefile.in "$name.in" && break || :
+done
+
+for arg in Makefile \
+  --file=Makefile \
+  "--file=$name"
+do
+  rm -rf .deps _deps
+  ./config.status "$arg" depfiles >stdout 2>stderr ||
+    { cat stdout; cat stderr >&2; Exit 1; }
+  cat stdout
+  cat stderr >&2
+  grep '[Nn]o such file' stderr && Exit 1
+
+  if test -n "$depdir"; then
+    test -d $depdir || Exit 1
+  fi
+done
+
+:
diff --git a/t/depend6.sh b/t/depend6.sh
new file mode 100755 (executable)
index 0000000..fb4c140
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for _AM_OUTPUT_DEPENDENCY_COMMANDS grouping bug,
+# reported by Markus Duft.
+
+. ./defs || Exit 1
+
+cat >>configure.ac << END
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << END
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c foo.h
+END
+
+cat >foo.c << END
+#include "foo.h"
+END
+: >foo.h
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure --disable-dependency-tracking 2>stderr || {
+  stat=$?; cat stderr >&2; Exit $stat;
+}
+cat stderr >&2
+grep shift stderr && Exit 1
+
+:
diff --git a/t/deprecated-acinit.sh b/t/deprecated-acinit.sh
new file mode 100755 (executable)
index 0000000..d130f9c
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake and autoconf complain about an old-style AC_INIT
+# call used with a new-style AM_AUTOMAKE_INIT call.
+
+. ./defs || Exit 1
+
+: > Makefile.am
+
+# We'll need a proper aclocal.m4, but aclocal is expected to fail
+# later, so get and store it now.
+$ACLOCAL
+mv aclocal.m4 aclocal-m4.sav
+
+errmsg='AC_INIT should be called with package and version argument'
+
+for ac_init in AC_INIT 'AC_INIT([Makefile.am])'; do
+  for am_init_automake in AM_INIT_AUTOMAKE 'AM_INIT_AUTOMAKE([1.11])'; do
+    rm -rf autom4te*.cache aclocal.m4
+    unindent > configure.ac <<END
+        $ac_init
+        $am_init_automake
+        AC_CONFIG_FILES([Makefile])
+END
+    cat configure.ac # For debugging.
+    $ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+    cat stderr >&2
+    grep "^configure\\.ac:.* $errmsg" stderr
+    cp aclocal-m4.sav aclocal.m4
+    $AUTOCONF 2>stderr && { cat stderr >&2; Exit 1; }
+    cat stderr >&2
+    grep "^configure\\.ac:.* $errmsg" stderr
+    AUTOMAKE_fails
+    grep "^configure\\.ac:.* $errmsg" stderr
+  done
+done
+
+:
diff --git a/t/destdir.sh b/t/destdir.sh
new file mode 100755 (executable)
index 0000000..22bf184
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that 'make distcheck' can find some $(DESTDIR) omissions.
+# PR/186.
+
+# The feature we test here relies on read-only directories.
+# It will only work for non-root users.
+required='ro-dir'
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+dist_data_DATA = foo
+
+# This rule is bogus because it doesn't use $(DESTDIR) on the
+# second argument of cp.  distcheck is expected to catch this.
+install-data-hook:
+       cp $(DESTDIR)$(datadir)/foo $(datadir)/bar
+
+uninstall-local:
+       rm -f $(DESTDIR)$(datadir)/bar
+EOF
+
+: > foo
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE distcheck && Exit 1
+
+:
diff --git a/t/dirlist-abspath.sh b/t/dirlist-abspath.sh
new file mode 100755 (executable)
index 0000000..78af8b1
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check use of absolute paths in dirlist.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+mkdir acdir-more sub sub/acdir
+echo "`pwd`/acdir-more" > sub/acdir/dirlist
+
+echo 'AC_DEFUN([AM_FOO], [foo-foo--foo])' > acdir-more/foo.m4
+
+cd sub
+
+cat > configure.ac <<EOF
+AC_INIT([$me], [1.0])
+AM_FOO
+EOF
+
+$ACLOCAL --system-acdir acdir
+$AUTOCONF
+
+# Only -I directories are subject to file inclusion.
+grep m4_include aclocal.m4 && Exit 1
+
+grep 'foo-foo--foo' configure
+
+:
diff --git a/t/dirlist.sh b/t/dirlist.sh
new file mode 100755 (executable)
index 0000000..76daa35
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check dirlist support.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<EOF
+AC_INIT
+AM_INIT_GUILE_MODULE
+EOF
+
+mkdir acdir dirlist-test
+echo ./dirlist-test > acdir/dirlist
+
+cat >dirlist-test/dirlist-check.m4 <<'END'
+AC_DEFUN([AM_INIT_GUILE_MODULE],[
+. $srcdir/../GUILE-VERSION
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+AC_CONFIG_AUX_DIR(..)
+module=[$1]
+AC_SUBST(module)])
+END
+
+cat >dirlist-test/init.m4 <<EOF
+AC_DEFUN([AM_INIT_AUTOMAKE], [I should not be included])
+EOF
+
+$ACLOCAL --system-acdir acdir
+$AUTOCONF
+
+# There should be no m4_include in aclocal.m4, even though m4/dirlist
+# contains './dirlist-test' as a relative directory.  Only -I directories
+# are subject to file inclusion.
+grep m4_include aclocal.m4 && Exit 1
+
+grep 'GUILE-VERSION' configure
+
+# This bug can occur only when we do a VPATH build of Automake
+# (because of the '-I' passed to aclocal in tests/defs/aclocal.in) but
+# it's OK because VPATH builds are done by 'make distcheck'.
+grep 'I should not be included' configure && Exit 1
+
+:
diff --git a/t/dirlist2.sh b/t/dirlist2.sh
new file mode 100755 (executable)
index 0000000..f3b9c4d
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check dirlist globbing support.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<EOF
+AC_INIT
+AM_INIT_GUILE_MODULE
+AM_FOO_BAR
+EOF
+
+mkdir dirlist21-test dirlist22-test
+
+cat >dirlist21-test/dirlist21-check.m4 <<'END'
+AC_DEFUN([AM_INIT_GUILE_MODULE],[
+. $srcdir/../GUILE-VERSION
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+AC_CONFIG_AUX_DIR(..)
+module=[$1]
+AC_SUBST(module)])
+END
+
+cat >dirlist22-test/dirlist22-check.m4 <<'END'
+AC_DEFUN([AM_FOO_BAR],[
+: foo bar baz
+])
+END
+
+mkdir my-acdir
+cat > my-acdir/dirlist <<'END'
+dirlist2*-test
+END
+
+$ACLOCAL --system-acdir my-acdir
+$AUTOCONF
+
+# There should be no m4_include in aclocal.m4, even though m4/dirlist
+# contains './dirlist-test' as a relative directory.  Only -I directories
+# are subject to file inclusion.
+grep m4_include aclocal.m4 && Exit 1
+
+grep 'GUILE-VERSION' configure
+grep 'foo bar baz' configure
+
+:
diff --git a/t/discover.sh b/t/discover.sh
new file mode 100755 (executable)
index 0000000..7a01dc7
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure LIBOBJS file cannot be mentioned explicitly.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_RANLIB
+AM_PROG_AR
+AC_PROG_CC
+AC_LIBOBJ([fsusage])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES = fsusage.c
+libtu_a_LIBADD = @LIBOBJS@
+END
+
+: > fsusage.c
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+
+grep 'automatically discovered.*fsusage\.c.*explicitly mentioned' stderr
+
+:
diff --git a/t/dist-auxdir-many-subdirs.sh b/t/dist-auxdir-many-subdirs.sh
new file mode 100755 (executable)
index 0000000..f84514a
--- /dev/null
@@ -0,0 +1,139 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# It should be legitimate for many subdir Makefiles to require the
+# same config-aux files.
+
+am_create_testdir=empty
+required=cc
+. ./defs || Exit 1
+
+count=0
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+
+# Usage: do_check [--add-missing] [CONFIG-AUXDIR-PATH=.]
+do_check ()
+{
+  case $1 in
+    -a|--add-missing) add_missing=yes; shift;;
+    *) add_missing=no;;
+  esac
+  auxdir=${1-.}
+
+  count=`expr $count + 1`
+  mkdir T$count.d
+  cd T$count.d
+
+  distdir=$me-$count
+  unindent > configure.ac << END
+    AC_INIT([$me], [$count])
+    AC_CONFIG_AUX_DIR([$auxdir])
+    AM_INIT_AUTOMAKE([parallel-tests])
+    AC_PROG_CC
+    # We don't want to require python or emcas in this test, so
+    # the tricks below.
+    AM_PATH_PYTHON([2.2], [], [:])
+    EMACS=no; AM_PATH_LISPDIR
+    AC_CONFIG_FILES([Makefile])
+END
+
+  unindent > Makefile.stub <<'END'
+    ## For depcomp.
+    bin_PROGRAMS = foo
+    foo_SOURCES = foo.c
+    ## For py-compile.
+    python_PYTHON = bar.py
+    ## For elisp-comp.
+    lisp_LISP = baz.el
+    ## For test-driver.
+    TESTS =
+END
+
+  required_files='
+    install-sh
+    missing
+    depcomp
+    py-compile
+    elisp-comp
+    test-driver
+  '
+
+  echo "SUBDIRS =" > Makefile.am
+
+  suffixes='0 1 2 3 4 5 6 7 8 9'
+
+  for x in $suffixes; do
+    mkdir sub$x
+    echo "SUBDIRS += sub$x" >> Makefile.am
+    echo "AC_CONFIG_FILES([sub$x/Makefile])" >> configure.ac
+    cp Makefile.stub sub$x/Makefile.am
+    echo 'int main (void) { return 0; }' > sub$x/foo.c
+    touch sub$x/bar.py sub$x/baz.el
+  done
+  echo AC_OUTPUT >> configure.ac
+
+  $ACLOCAL
+  $AUTOCONF
+
+  "$am_scriptdir"/install-sh -d $auxdir \
+    || fatal_ "creating directory '$auxdir' with install-sh"
+  if test $add_missing = yes; then
+    $AUTOMAKE -a --copy
+    for f in $required_files; do
+      test -f $auxdir/$f
+      # To ensure that if a auxiliary file is required and distributed
+      # by many Makefiles, the "dist" rule won't try to copy it multiple
+      # times in $(distdir).
+      chmod a-w $auxdir/$f
+    done
+  else
+    for f in $required_files; do
+      cp "$am_scriptdir"/$f $auxdir/$f \
+        || fatal_ "faild to fetch auxiliary script '$f'"
+      # See comments above.
+      chmod a-w $auxdir/$f
+    done
+    $AUTOMAKE
+  fi
+
+  for vpath in : false; do
+    if $vpath; then
+      mkdir build
+      cd build
+      srcdir=..
+    else
+      srcdir=.
+    fi
+    $srcdir/configure
+    $MAKE distdir
+    find $distdir # For debugging.
+    for f in $required_files; do
+      test -f $distdir/$auxdir/$f
+    done
+    cd $srcdir
+  done
+
+  cd "$ocwd" || fatal_ "cannot chdir back to '$ocwd'"
+}
+
+do_check .
+do_check --add-missing .
+do_check build-aux
+do_check --add-missing build-aux
+do_check a/b/c
+do_check --add-missing a/b/c
+
+:
diff --git a/t/dist-auxfile-2.sh b/t/dist-auxfile-2.sh
new file mode 100755 (executable)
index 0000000..b7e2e2d
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Files specified by AC_REQUIRE_AUX_FILE must exist, and if a Makefile
+# is present in the build-aux directory, they correctly get automatically
+# distributed.
+# Related to automake bug#9651.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([sub])
+AM_INIT_AUTOMAKE
+AC_REQUIRE_AUX_FILE([zardoz])
+AC_CONFIG_FILES([Makefile sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+test: distdir
+       ls -l $(distdir) $(distdir)/* ;: For debugging.
+       test -f $(distdir)/sub/zardoz
+.PHONY: test
+check-local: test
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+echo dummy > sub/zardoz
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+test -f sub/install-sh
+# Should work also without '--add-missing'.
+$AUTOMAKE
+
+./configure
+
+$MAKE test
+$MAKE distcheck
+
+:
diff --git a/t/dist-auxfile.sh b/t/dist-auxfile.sh
new file mode 100755 (executable)
index 0000000..9f7e8ee
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Files specified by AC_REQUIRE_AUX_FILE must exist, and they get
+# automatically distributed by the top-level Makefile.am.
+# Automake bug#9651 reported that this didn't happen when the build-aux
+# directory was set to '.' by AC_CONFIG_AUX_DIR.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+i=0
+for auxdir in build-aux ''; do
+
+  echo "*** Testing with auxdir '$auxdir' ***"
+
+  i=`expr $i + 1`
+  mkdir T$i.d
+  cd T$i.d
+
+  unindent > configure.ac <<END
+    AC_INIT([$me], [1.0])
+    AC_CONFIG_AUX_DIR([${auxdir:-.}])
+    AM_INIT_AUTOMAKE
+    AC_REQUIRE_AUX_FILE([foo.txt])
+    AC_REQUIRE_AUX_FILE([bar.sh])
+    AC_REQUIRE_AUX_FILE([zardoz])
+    AC_CONFIG_FILES([Makefile subdir/Makefile])
+    AC_OUTPUT
+END
+
+  echo auxdir = ${auxdir:+"$auxdir/"} > Makefile.am
+  unindent >> Makefile.am <<'END'
+    SUBDIRS = subdir
+    test: distdir
+       ls -l $(distdir) $(distdir)/*      ;: For debugging.
+       @echo DIST_COMMON = $(DIST_COMMON) ;: Likewise.
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]$(auxdir)foo.txt '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]$(auxdir)bar.sh '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]$(auxdir)zardoz '
+       test -f $(distdir)/$(auxdir)foo.txt
+       test -f $(distdir)/$(auxdir)bar.sh
+       test -f $(distdir)/$(auxdir)zardoz
+    .PHONY: test
+    check-local: test
+END
+
+  mkdir subdir
+  echo > subdir/Makefile.am # 'echo', not ':', for Solaris /bin/sh.
+
+  test -z "$auxdir" || mkdir "$auxdir" || Exit 99
+
+  if test -z "$auxdir"; then
+    auxdir=.
+    auxdir_rx='\.'
+  else
+    auxdir_rx=$auxdir
+  fi
+
+  $ACLOCAL
+  $AUTOCONF
+
+  AUTOMAKE_fails
+  grep "^configure\\.ac:4:.* required file.*$auxdir_rx/foo\\.txt" stderr
+  grep "^configure\\.ac:5:.* required file.*$auxdir_rx/bar\\.sh"  stderr
+  grep "^configure\\.ac:6:.* required file.*$auxdir_rx/zardoz"    stderr
+
+  touch $auxdir/foo.txt $auxdir/bar.sh $auxdir/zardoz
+  cp "$am_scriptdir"/missing "$am_scriptdir"/install-sh $auxdir \
+    || fatal_ "fetching auxiliary scripts 'missing' and 'install-sh'"
+  $AUTOMAKE
+  ./configure
+  $MAKE test
+  $EGREP '(foo\.txt|bar\.sh|zardoz)' subdir/Makefile.in && Exit 1
+
+  $MAKE distcheck
+
+  cd ..
+
+done
+
+:
diff --git a/t/dist-formats.tap b/t/dist-formats.tap
new file mode 100755 (executable)
index 0000000..26c6c97
--- /dev/null
@@ -0,0 +1,451 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for different compression formats used by distribution
+# archives.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+plan_ 70
+
+# ---------------------------------------------------- #
+#  Common and/or auxiliary subroutines and variables.  #
+# ---------------------------------------------------- #
+
+ocwd=`pwd` || fatal_ "obtaining current working directory"
+
+TAR='' && unset TAR
+
+# Create common aclocal.m4 file, for later tests.
+mkdir setup \
+  && cd setup \
+  && echo 'AC_INIT([x], [0]) AM_INIT_AUTOMAKE' > configure.ac \
+  && $ACLOCAL \
+  && mv aclocal.m4 .. \
+  && cd .. \
+  && rm -rf setup \
+  || fatal_ "creating common aclocal.m4 file"
+
+# Some make implementations (e.g., HP-UX) don't grok '-j', some require
+# no space between '-j' and the number of jobs (e.g., older GNU make
+# versions), and some *do* require a space between '-j' and the number
+# of jobs (e.g., Solaris dmake).  We need a runtime test to see what
+# works.
+for MAKE_j4 in "$MAKE -j4" "$MAKE -j 4" false; do
+  echo all: | $MAKE_j4 -f - && break
+  : For shells with buggy 'set -e'.
+done
+
+# Set variables '$compressor' and '$suffix'.
+setup_vars_for_compression_format ()
+{
+  suffix=NONE compressor=NONE
+  case $1 in
+    gzip) suffix=tar.gz  compressor=gzip     ;;
+    tarZ) suffix=tar.Z   compressor=compress ;;
+    lzip) suffix=tar.lz  compressor=lzip     ;;
+      xz) suffix=tar.xz  compressor=xz       ;;
+   bzip2) suffix=tar.bz2 compressor=bzip2    ;;
+     zip) suffix=zip     compressor=zip      ;;
+    shar) suffix=shar.gz compressor=shar     ;;
+       *) fatal_ "invalid compression format '$1'";;
+  esac
+}
+
+all_compression_formats='gzip tarZ lzip xz bzip2 zip shar'
+
+all_compressors=`
+  for x in $all_compression_formats; do
+    setup_vars_for_compression_format $x
+    echo $compressor
+  done | tr "$nl" ' '`
+echo All compressors: $all_compressors
+
+missing_compressors=`
+  for c in $all_compressors; do
+    case $c in
+      # Assume gzip(1) is available on every reasonable portability target.
+      gzip)
+        continue
+        ;;
+      # On Cygwin, as of 9/2/2012, 'compress' is provided by sharutils
+      # and is just a dummy script that is not able to actually compress
+      # (it can only decompress).  So, check that the 'compress' program
+      # is actually able to compress input.
+      # Note that, at least on GNU/Linux, 'compress' does (and is
+      # documented to) exit with status 2 if the output is larger than
+      # the input after (attempted) compression; so we need to pass it
+      # an input that it can actually reduce in size when compressing.
+      compress)
+        for x in 1 2 3 4 5 6 7 8; do
+          echo aaaaaaaaaaaaaaa
+        done | $c -c >/dev/null && continue
+        : For shells with busted 'set -e'.
+        ;;
+      *)
+        $c --version </dev/null >&2 && continue
+        : For shells with busted 'set -e'.
+        ;;
+    esac
+    echo $c
+  done | tr "$nl" ' '`
+echo Missing compressors: $missing_compressors
+
+have_compressor ()
+{
+  case " $missing_compressors " in *\ $1\ *) false;; *) : ;; esac
+}
+
+have_all_compressors ()
+{
+  test -z "$missing_compressors"
+}
+
+start_subtest ()
+{
+  name=$1; shift
+  test -n "$name" || fatal_ "start_subtest: no subtest name given"
+  if test $# -gt 0; then
+    eval "$@" || fatal_ "start_subtest: evaluating assignments"
+  fi
+  ac_opts=`echo $ac_opts | tr ',' ' '`
+  am_opts=`echo $am_opts | tr ',' ' '`
+  mkdir "$name"
+  cd "$name"
+  unindent > configure.ac <<END
+    AC_INIT([$name], [1.0])
+    AM_INIT_AUTOMAKE([$ac_opts])
+    AC_CONFIG_FILES([Makefile])
+    AC_OUTPUT
+END
+  echo "AUTOMAKE_OPTIONS = $am_opts" > Makefile.am
+  # It is imperative that aclocal.m4 is copied after configure.ac has
+  # been created, to avoid a spurious trigger of the automatic remake
+  # rules for configure & co.
+  cp "$ocwd"/aclocal.m4 \
+     "$am_scriptdir"/missing \
+     "$am_scriptdir"/install-sh \
+     .
+}
+
+end_subtest ()
+{
+  unset name; unset ac_opts; unset am_opts;
+  cd "$ocwd" || fatal_ "couldn't chdir back to '$ocwd'"
+}
+
+command_ok_if_have_compressor ()
+{
+  if have_compressor "$compressor"; then
+    command_ok_ "$@"
+  else
+    skip_ -r "'$compressor' not available" "$1"
+  fi
+}
+
+can_compress ()
+{
+  test $# -eq 2 || fatal_ "can_compress: bad number of arguments"
+  tarname=$1 format=$2
+  setup_vars_for_compression_format "$format"
+
+  command_ok_ "'dist-$format' target always created" $MAKE -n dist-$format
+
+  command_ok_if_have_compressor "'make dist-$format' work by default" \
+    eval '
+      rm -rf *$tarname* \
+        && $MAKE dist-$format \
+        && test -f $tarname-1.0.$suffix \
+        && ls -l *$tarname* \
+        && test "`ls *$tarname*`" = $tarname-1.0.$suffix'
+
+  unset suffix compressor format tarname
+}
+
+# ---------------------------------------- #
+#  Defaults layout of the dist-* targets.  #
+# ---------------------------------------- #
+
+start_subtest defaults
+
+command_ok_ "default [automake]"        $AUTOMAKE
+command_ok_ "default [autoconf]"        $AUTOCONF
+command_ok_ "default [configure]"       ./configure
+command_ok_ "default [make distcheck]"  $MAKE distcheck
+
+command_ok_ "'make dist' only builds *.tar.gz by default" \
+            test "`ls *defaults*`" = defaults-1.0.tar.gz
+
+rm -rf *defaults*
+
+for fmt in $all_compression_formats; do
+  can_compress defaults $fmt
+done
+unset fmt
+
+end_subtest
+
+# ----------------------------------------------------------- #
+#  Check diagnostic for no-dist-gzip without another dist-*.  #
+# ----------------------------------------------------------- #
+
+nogzip_stderr ()
+{
+  grep "$1:.*no-dist-gzip" stderr \
+    && grep "$1:.* at least one archive format must be enabled" stderr
+}
+
+nogzip_automake_failure ()
+{
+  AUTOMAKE_fails -d "no-dist-gzip ($1) without other formats is an error"
+  command_ok_ "no-dist-gzip ($1) without other formats gives diagnostic" \
+              nogzip_stderr "$2"
+}
+
+start_subtest am-nogz-only am_opts=no-dist-gzip ac_opts=
+nogzip_automake_failure 'am' 'Makefile\.am:1'
+end_subtest
+
+start_subtest ac-nogz-only am_opts= ac_opts=no-dist-gzip
+nogzip_automake_failure 'ac' 'configure\.ac:2'
+end_subtest
+
+# ------------------------------------------------- #
+#  Check use of no-dist-gzip with a dist-* option.  #
+# ------------------------------------------------- #
+
+append_to_opt ()
+{
+  var=$1_opts val=$2
+  eval "$var=\${$var:+\"\$$var,\"}\$val" || fatal_ "evaluating \${$var}"
+  unset var val
+}
+
+nogzip ()
+{
+  test $#,$1,$3,$5 = 6,in,and,in \
+    && case $2,$6 in ac,ac|ac,am|am,ac|am,am) :;; *) false;; esac \
+    || fatal_ "nogzip: invalid usage"
+  format=$4 where_dist_nogzip=$2 where_dist_format=$6
+  shift 6
+
+  am_opts= ac_opts=
+  append_to_opt $where_dist_format dist-$format
+  append_to_opt $where_dist_nogzip no-dist-gzip
+  setup_vars_for_compression_format "$format"
+  # Do these before the am_opts and ac_opts variable can be munged
+  # by 'start_subtest'.
+  desc=
+  test -n "$am_opts" && desc=${desc:+"$desc "}"am=$am_opts"
+  test -n "$ac_opts" && desc=${desc:+"$desc "}"ac=$ac_opts"
+
+  start_subtest nogzip-$format am_opts=$am_opts ac_opts=$ac_opts
+
+  unindent >> Makefile.am <<END
+    check-ark-name:
+       test \$(DIST_ARCHIVES) = \$(distdir).$suffix
+    check-ark-exists:
+       test -f \$(distdir).$suffix
+    check-no-tar-gz:
+       test ! -f \$(distdir).tar.gz
+END
+
+  command_ok_ "$desc [automake]" $AUTOMAKE
+  command_ok_ "$desc [autoconf]" $AUTOCONF
+  command_ok_ "$desc [configure]" ./configure
+  command_ok_ "$desc [ark-name]" $MAKE check-ark-name
+  command_ok_if_have_compressor "$desc [distcheck]" $MAKE distcheck
+  command_ok_if_have_compressor "$desc [ark-exists]" $MAKE check-ark-exists
+  command_ok_ "$desc [no .tar.gz]"  $MAKE check-no-tar-gz
+
+  unset desc
+
+  end_subtest
+}
+
+#      $1 $2  $3   $4     $5  $6
+nogzip in am  and  bzip2  in  am
+nogzip in ac  and  xz     in  am
+nogzip in am  and  lzip   in  ac
+nogzip in ac  and  tarZ   in  ac
+
+
+# ----------------------------------------------------------- #
+#  The 'dist-gzip' target is created also with no-dist-gzip.  #
+# ----------------------------------------------------------- #
+
+start_subtest dist-gzip-persistence am_opts=no-dist-gzip,dist-xz
+command_ok_ "dist-gzip persistence [automake]"  $AUTOMAKE
+command_ok_ "dist-gzip persistence [autoconf]"  $AUTOCONF
+command_ok_ "dist-gzip persistence [configure]" ./configure
+can_compress dist-gzip-persistence gzip
+end_subtest
+
+
+# ----------------------- #
+#  Parallel compression.  #
+# ----------------------- #
+
+# We only use formats requiring 'gzip', 'bzip2' and 'compress' programs,
+# since there are the most likely to be all found on the great majority
+# of systems.
+
+start_subtest parallel-compression ac_opts=dist-bzip2 am_opts=dist-tarZ
+
+desc=gzip+bzip2+tarZ
+tarname=parallel-compression-1.0
+
+check_tarball ()
+{
+  format=$1
+  setup_vars_for_compression_format $format
+  (
+    tarball=$tarname.$suffix \
+      && test -f $tarball \
+      && mkdir check-$format \
+      && cp $tarball check-$format \
+      && cd check-$format \
+      && $compressor -d $tarball \
+      && tar xvf $tarname.tar \
+      && diff ../Makefile.in $tarname/Makefile.in \
+      && cd .. \
+      && rm -rf check-$format
+   )
+}
+
+command_ok_ "$desc [automake]" $AUTOMAKE
+
+skip_reason=
+have_compressor compress || skip_reason="'compress' not available"
+have_compressor bzip2 || skip_reason="'bzip2' not available"
+if test "$MAKE_j4" = false; then
+  test -z "$skip_reason" || skip_reason="$skip_reason and "
+  skip_reason="${skip_reason}make concurrency unavailable"
+fi
+
+if test -n "$skip_reason"; then
+  skip_row_ 6 -r "$skip_reason" "$desc"
+else
+  command_ok_ "$desc [autoconf]" $AUTOCONF
+  command_ok_ "$desc [configure]" ./configure
+  command_ok_ "$desc [make -j4 dist-all]"  $MAKE_j4 dist
+  ls -l # For debugging.
+  command_ok_ "$desc [check .tar.gz tarball]"  check_tarball gzip
+  command_ok_ "$desc [check .tar.bz2 tarball]" check_tarball bzip2
+  command_ok_ "$desc [check .tar.Z tarball]"   check_tarball tarZ
+fi
+
+unset tarname desc skip_reason
+
+end_subtest
+
+
+# --------------------------------------------------------- #
+#  The various 'dist-*' targets can happily work together.  #
+# --------------------------------------------------------- #
+
+start_subtest all-together
+
+desc='all compressors together'
+tarname=all-together-1.0
+
+echo 'AM_INIT_AUTOMAKE([' > am-init.m4
+echo 'AUTOMAKE_OPTIONS =' > Makefile.am
+
+# Add half 'dist-*' options to AM_INIT_AUTOMAKE, half to AUTOMAKE_OPTIONS.
+flip=:
+for fmt in $all_compression_formats; do
+  test $fmt = gzip && continue
+  if $flip; then
+    echo "  dist-$fmt" >> am-init.m4
+    flip=false
+  else
+    echo "AUTOMAKE_OPTIONS += dist-$fmt" >> Makefile.am
+    flip=:
+  fi
+done
+unset flip fmt
+
+echo '])' >> am-init.m4
+
+sed 's/AM_INIT_AUTOMAKE.*/m4_include([am-init.m4])/' configure.ac > t
+mv -f t configure.ac
+
+# For debugging.
+cat Makefile.am
+cat configure.ac
+cat am-init.m4
+
+command_ok_ "$desc [aclocal]" $ACLOCAL --force
+command_ok_ "$desc [automake]" $AUTOMAKE
+command_ok_ "$desc [autoconf]" $AUTOCONF
+command_ok_ "$desc [configure]" ./configure
+
+if have_all_compressors; then
+  command_ok_ "$desc [make distcheck, real]" $MAKE distcheck
+else
+  skip_ -r "not all compressors available" "$desc [make distcheck, real]"
+fi
+
+# We fake existence of all the compressors here, so that we don't have
+# to require any of them to run the further tests.  This is especially
+# important since it's very unlikely that a non-developer has all the
+# compression tools installed on his machine at the same time.
+
+mkdir bin
+cd bin
+cat > check-distdir <<END
+#!/bin/sh
+{ ls -l '$tarname' && diff Makefile.am '$tarname'/Makefile.am; } >&2 \
+  || { echo "== distdir fail =="; exit 1; }
+END
+cat > grep-distdir-error <<'END'
+#!/bin/sh
+grep 'distdir fail' && exit 1
+:
+END
+chmod a+x check-distdir grep-distdir-error
+for prog in tar $all_compressors; do
+  case $prog in
+    tar|shar|zip) cp check-distdir $prog;;
+               *) cp grep-distdir-error $prog;;
+  esac
+done
+unset prog
+ls -l # For debugging.
+cd ..
+
+oPATH=$PATH
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH
+
+command_ok_ \
+  "$desc ['make dist-all', stubbed]" \
+  $MAKE dist-all
+
+subdesc="$desc ['make dist -j4', stubbed]"
+if test "$MAKE_j4" = false; then
+  skip_ -r "make concurrency unavailable" "$subdesc"
+else
+  command_ok_ "$subdesc" $MAKE_j4 dist
+fi
+unset subdesc
+
+PATH=$oPATH; export PATH
+
+end_subtest
+
+:
diff --git a/t/dist-included-parent-dir.sh b/t/dist-included-parent-dir.sh
new file mode 100755 (executable)
index 0000000..ae135ae
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure included files in parent directory are distributed.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+test: distdir
+       test -f $(distdir)/foo
+       test -f $(distdir)/bar
+       test 2 -gt `find $(distdir)/sub -type d | wc -l`
+END
+
+: > foo
+: > bar
+
+mkdir sub
+cat > sub/Makefile.am << 'END'
+include $(top_srcdir)/foo
+include ../bar
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+# Use --srcdir with an absolute path because it's harder
+# to support in 'distdir'.
+./configure --srcdir "`pwd`"
+$MAKE test
diff --git a/t/dist-missing-am.sh b/t/dist-missing-am.sh
new file mode 100755 (executable)
index 0000000..0765b0c
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The stub rules emitted to work around the "deleted header problem"
+# for '.am' files shouldn't prevent "make" from diagnosing a missing
+# required '.am' file from a distribution tarball.
+# See discussion about automake bug#9768.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+include $(srcdir)/foobar.am
+include $(srcdir)/zardoz.am
+END
+
+: > foobar.am
+: > zardoz.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# A faulty distribution tarball, with a required '.am' file missing.
+# Building from it should fail, both for in-tree and VPATH builds.
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+for vpath in false :; do
+  $MAKE distdir
+  test -f $distdir/zardoz.am # Sanity check.
+  rm -f $distdir/zardoz.am
+  if $vpath; then
+    # We can't just build in a subdirectory of $distdir, otherwise
+    # we'll hit automake bug#10111.
+    mkdir vpath-distcheck
+    cd vpath-distcheck
+    ../$distdir/configure
+  else
+    cd $distdir
+    ./configure
+  fi
+  $MAKE >output 2>&1 && { cat output; Exit 1; }
+  cat output
+  # This error comes from automake, not make, so we can be stricter
+  # in our grepping of it.
+  grep 'cannot open.*zardoz\.am' output
+  grep 'foobar\.am' output && Exit 1 # No spurious error, please.
+  cd "$ocwd" || fatal_ "cannot chdir back to top-level test directory"
+done
+
+:
diff --git a/t/dist-missing-included-m4.sh b/t/dist-missing-included-m4.sh
new file mode 100755 (executable)
index 0000000..5960003
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The stub rules emitted to work around the "deleted header problem"
+# for '.m4' files shouldn't prevent "make" from diagnosing a missing
+# required '.m4' file from a distribution tarball.
+# See discussion about automake bug#9768.
+# See also sister test 'dist-missing-m4.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+m4_include([foobar.m4])
+m4_include([zardoz.m4])
+AC_OUTPUT
+END
+
+: > foobar.m4
+: > zardoz.m4
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# A faulty distribution tarball, with a required '.m4' file missing.
+# Building from it should fail, both for in-tree and VPATH builds.
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+for vpath in false :; do
+  $MAKE distdir
+  test -f $distdir/zardoz.m4 # Sanity check.
+  rm -f $distdir/zardoz.m4
+  if $vpath; then
+    # We can't just build in a subdirectory of $distdir, otherwise
+    # we'll hit automake bug#10111.
+    mkdir vpath-distcheck
+    cd vpath-distcheck
+    ../$distdir/configure
+  else
+    cd $distdir
+    ./configure
+  fi
+  $MAKE >output 2>&1 && { cat output; Exit 1; }
+  cat output
+  # This error will come from automake, not make, so we can be stricter
+  # in our grepping of it.
+  grep 'zardoz\.m4.*does not exist' output
+  grep 'foobar\.m4' output && Exit 1 # No spurious error, please.
+  cd "$ocwd" || fatal_ "cannot chdir back to top-level test directory"
+done
+
+:
diff --git a/t/dist-missing-m4.sh b/t/dist-missing-m4.sh
new file mode 100755 (executable)
index 0000000..9a418d3
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The stub rules emitted to work around the "deleted header problem"
+# for '.m4' files shouldn't prevent "make" from diagnosing a missing
+# required '.m4' file from a distribution tarball.
+# See discussion about automake bug#9768.
+# See also sister test 'dist-missing-included-m4.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+m4_pattern_forbid([^MY_])
+MY_FOOBAR || exit 1
+MY_ZARDOZ || exit 1
+AC_OUTPUT
+END
+
+mkdir m4
+echo 'AC_DEFUN([MY_FOOBAR], [:])' > m4/foobar.m4
+echo 'AC_DEFUN([MY_ZARDOZ], [:])' > m4/zardoz.m4
+
+echo 'ACLOCAL_AMFLAGS = -I m4' > Makefile.am
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# A faulty distribution tarball, with a required '.m4' file missing.
+# Building from it should fail, both for in-tree and VPATH builds.
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+for vpath in false :; do
+  $MAKE distdir
+  test -f $distdir/m4/zardoz.m4 # Sanity check.
+  rm -f $distdir/m4/zardoz.m4
+  if $vpath; then
+    # We can't just build in a subdirectory of $distdir, otherwise
+    # we'll hit automake bug#10111.
+    mkdir vpath-distcheck
+    cd vpath-distcheck
+    ../$distdir/configure
+  else
+    cd $distdir
+    ./configure
+  fi
+  $MAKE >output 2>&1 && { cat output; Exit 1; }
+  cat output
+  # This error will come from autoconf, not make, so we can be stricter
+  # in our grepping of it.
+  grep 'possibly undefined .*MY_ZARDOZ' output
+  grep 'MY_FOOBAR' output && Exit 1 # No spurious error, please.
+  cd "$ocwd" || fatal_ "cannot chdir back to top-level test directory"
+done
+
+:
diff --git a/t/dist-pr109765.sh b/t/dist-pr109765.sh
new file mode 100755 (executable)
index 0000000..2e22e84
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Expose automake bug#10975: when several "dist-*" targets are invoked
+# on the make command line, the first one ends up removing the distdir,
+# so that the latter ones fail.
+
+required=bzip2
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+: > Makefile.am
+
+$ACLOCAL  || fatal_ "aclocal failed"
+$AUTOCONF || fatal_ "autoconf failed"
+$AUTOMAKE || fatal_ "automake failed"
+
+./configure
+$MAKE dist-gzip dist-bzip2
+
+gzip -dc $distdir.tar.gz | tar tf - > one || { cat one; Exit 1; }
+cat one
+bzip2 -dc $distdir.tar.gz | tar tf - > two || { cat two; Exit 1; }
+cat two
+
+$FGREP "$distdir/Makefile.am" one
+diff one two
+
+:
diff --git a/t/dist-readonly.sh b/t/dist-readonly.sh
new file mode 100755 (executable)
index 0000000..2bf2a6d
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that a readonly files are distributed as such, and not make
+# writable while being copied in the $(distdir).
+
+# This test expect the user to be unable to write on files lacking
+# write permissions -- so it won't work if the user is 'root'.
+required='non-root cc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+EXTRA_DIST = bar.txt
+check-local: test
+.PHONY: test
+test:
+       test -f $(srcdir)/foo.c && test ! -w $(srcdir)/foo.c
+       if (echo x > $(srcdir)/foo.c); then exit 1; else :; fi
+       grep 'main (void)' $(srcdir)/foo.c
+       test -f $(srcdir)/bar.txt && test ! -w $(srcdir)/bar.txt
+       if (echo x > $(srcdir)/bar.txt); then exit 1; else :; fi
+       grep 'To be, or not to be' $(srcdir)/bar.txt
+END
+
+echo 'int main (void) { return 0; }' > foo.c
+echo To be, or not to be ... > bar.txt
+chmod a-w foo.c bar.txt
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE distdir
+ls -l $distdir # For debugging.
+test -f foo.c && test ! -w foo.c || Exit 1
+(echo x > foo.c) && Exit 1
+test -f bar.txt && test ! -w bar.txt || Exit 1
+(echo x > bar.txt) && Exit 1
+$MAKE distcheck
+
+:
diff --git a/t/dist-repeated.sh b/t/dist-repeated.sh
new file mode 100755 (executable)
index 0000000..6651e72
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that we can distribute the same file as many times as we want.
+# The distdir target should take care of not copying it more than one
+# time anyway.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo bar
+foo_SOURCES = foo.c
+bar_SOURCES = foo.c
+python_PYTHON = bar.py
+EXTRA_DIST = foo.c bar.py
+
+.PHONY: sanity-check
+sanity-check:
+       for f in $(DISTFILES); do echo " $$f "; done > dist.txt
+       cat dist.txt
+       test `grep ' foo\.c '  dist.txt | wc -l` -eq 3
+       test `grep ' bar\.py ' dist.txt | wc -l` -eq 2
+
+# So that we don't have to require a C compiler.
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+
+# So that we don't have to require a Python interpreter.
+pythondir = ${prefix}/py
+PYTHON = false
+END
+
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+
+# Help to ensure cp won't see the same file twice.
+mkdir bin
+cat > bin/cp <<END
+#!/bin/sh
+PATH='$PATH'; export PATH
+
+case " \$* " in
+  *foo.c\ *)
+    if test -f '$ocwd'/foo-c-copied; then
+      echo "\$0: we tried to copy foo.c twice" >&2
+      exit 1
+    else
+      # For a sanity check later.
+      echo ok > '$ocwd'/cp-wrapper-has-seen-foo-c
+    fi
+    ;;
+esac
+
+case " \$* " in
+  *bar.py\ *)
+    if test -f '$ocwd'/bar-py-copied; then
+      echo "\$0: we tried to copy bar.py twice" >&2
+      exit 1
+    else
+      # For a sanity check later.
+      echo ok > '$ocwd'/cp-wrapper-has-seen-bar-py
+    fi
+    ;;
+esac
+
+exec cp "\$@"
+END
+chmod a+x bin/cp
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH;
+
+: > foo.c
+: > bar.py
+: > py-compile
+
+# Help to ensure cp won't try to copy the same file twice.
+chmod a-w foo.c bar.py
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE sanity-check || fatal_ "expected invariants not verified"
+$MAKE distdir
+test -f cp-wrapper-has-seen-foo-c && test -f cp-wrapper-has-seen-bar-py \
+  || fatal_ "our cp wrapper hasn't run correctly"
+
+:
diff --git a/t/distcheck-configure-flags-am.sh b/t/distcheck-configure-flags-am.sh
new file mode 100755 (executable)
index 0000000..7dbe2ab
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for AM_DISTCHECK_CONFIGURE_FLAGS at "make distcheck"
+# time, and its interactions with DISTCHECK_CONFIGURE_FLAGS.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_ARG_ENABLE([success], [], [success=$enableval], [success=no])
+AS_IF([test $success = yes && test "$sentence" = 'it works :-)'],
+      [:],
+      [AC_MSG_ERROR([success='$success', sentence='$sentence'])])
+AC_OUTPUT
+END
+
+unset sentence || :
+
+cat > Makefile.am << 'END'
+AM_DISTCHECK_CONFIGURE_FLAGS = $(dc_flags1) $(dc_flags2)
+dc_flags1 = --enable-success sentence='it works :-)'
+dc_flags2 =
+END
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP '$(DISTCHECK_CONFIGURE_FLAGS)' Makefile.in
+$FGREP '$(AM_DISTCHECK_CONFIGURE_FLAGS)' Makefile.in
+grep 'DISTCHECK_CONFIGURE_FLAGS.*AM_DISTCHECK_CONFIGURE_FLAGS' Makefile.in \
+  && Exit 1
+
+$AUTOCONF
+./configure --enable-success sentence='it works :-)'
+
+# The configure call in "make distcheck" should honour
+# $(AM_DISTCHECK_CONFIGURE_FLAGS).
+
+$MAKE distcheck
+
+# $(DISTCHECK_CONFIGURE_FLAGS) takes precedence over
+# $(AM_DISTCHECK_CONFIGURE_FLAGS)
+
+cat >> Makefile.am << 'END'
+dc_flags2 += --disable-success
+END
+$AUTOMAKE Makefile
+./config.status Makefile
+
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+grep "^configure:.* success='no', sentence='it works :-)'" output
+
+$MAKE distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-success=yes"
+
+:
diff --git a/t/distcheck-configure-flags-subpkg.sh b/t/distcheck-configure-flags-subpkg.sh
new file mode 100755 (executable)
index 0000000..45d0e0c
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check AM_DISTCHECK_CONFIGURE_FLAGS and DISTCHECK_CONFIGURE_FLAGS
+# are not honored in a subpackage Makefile.am, but the flags from
+# AM_DISTCHECK_CONFIGURE_FLAGS and DISTCHECK_CONFIGURE_FLAGS are
+# passed down to the configure script of the subpackage.  This is
+# explicitly documented in the manual.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_SUBDIRS([subpkg])
+if test $dc != ok || test $am_dc != ok; then
+  AC_MSG_ERROR([dc=$dc am_dc=$dc])
+fi
+AC_OUTPUT
+END
+
+mkdir subpkg
+
+sed <configure.ac >subpkg/configure.ac \
+    -e 's/^AC_INIT.*/AC_INIT([subpkg], [2.0])/' \
+    -e '/^AC_CONFIG_SUBDIRS/d' \
+
+cat configure.ac
+cat subpkg/configure.ac
+
+dc=KO am_dc=KO; export dc am_dc
+
+cat > Makefile.am << 'END'
+AM_DISTCHECK_CONFIGURE_FLAGS = am_dc=ok
+DISTCHECK_CONFIGURE_FLAGS = dc=ok
+END
+
+: > subpkg/Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+cd subpkg
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+cd ..
+
+# For debugging.
+$FGREP 'DISTCHECK_CONFIGURE_FLAGS' Makefile.in subpkg/Makefile.in
+
+grep '^AM_DISTCHECK_CONFIGURE_FLAGS =' Makefile.in
+grep '^DISTCHECK_CONFIGURE_FLAGS =' Makefile.in
+$EGREP '^(AM_)?DISTCHECK_CONFIGURE_FLAGS' subpkg/Makefile.in && Exit 1
+
+./configure dc=ok am_dc=ok
+
+# Flags in $(DISTCHECK_CONFIGURE_FLAGS) and $(AM_DISTCHECK_CONFIGURE_FLAGS)
+# should be passed down to the subpackage configure when "make distcheck"
+# is run from the top-level package ...
+$MAKE distcheck
+
+# ... but not when "make distcheck" is run from the subpackage.
+cd subpkg
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+grep '^configure:.* dc=KO am_dc=KO' output
+
+:
diff --git a/t/distcheck-configure-flags.sh b/t/distcheck-configure-flags.sh
new file mode 100755 (executable)
index 0000000..ae9fe40
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for DISTCHECK_CONFIGURE_FLAGS at "make distcheck" time.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_ARG_ENABLE([success], [], [success=$enableval], [success=no])
+AS_IF([test $success = yes && test "$sentence" = 'it works :-)'],
+      [:],
+      [AC_MSG_ERROR([success='$success', sentence='$sentence'])])
+AC_OUTPUT
+END
+
+unset sentence || :
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP '$(DISTCHECK_CONFIGURE_FLAGS)' Makefile.in
+
+$AUTOCONF
+./configure --enable-success sentence='it works :-)'
+
+# It should be ok to define DISTCHECK_CONFIGURE_FLAGS either on the
+# make command line or in the environment.
+
+env DISTCHECK_CONFIGURE_FLAGS='--enable-success sentence=it\ works\ :-\)' \
+  $MAKE distcheck # Not 'make -e' here, deliberately.
+
+$MAKE distcheck \
+  DISTCHECK_CONFIGURE_FLAGS="--enable-success=yes sentence='it works :-)'"
+
+# Sanity check.
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+grep "^configure:.* success='no', sentence=''" output
+
+:
diff --git a/t/distcheck-hook.sh b/t/distcheck-hook.sh
new file mode 100755 (executable)
index 0000000..dfc2001
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check basic support for distcheck-hook.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+distcheck-hook:
+       ls -l $(distdir)
+       chmod u+w $(distdir)
+       : > $(distdir)/dc-hook-has-run
+       chmod a-w $(distdir)
+check-local:
+       ls -l $(srcdir)
+       test -f $(srcdir)/dc-hook-has-run
+END
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP 'distcheck-hook' Makefile.in
+$FGREP '$(MAKE) $(AM_MAKEFLAGS) distcheck-hook' Makefile.in
+grep '^distcheck-hook:' Makefile.in
+
+$AUTOCONF
+./configure
+
+$MAKE
+$MAKE check && Exit 1
+$MAKE distdir
+test -f $distdir/dc-hook-has-run && Exit 1
+$MAKE distcheck
+
+:
diff --git a/t/distcheck-hook2.sh b/t/distcheck-hook2.sh
new file mode 100755 (executable)
index 0000000..93446b3
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that no 'distcheck-hook' target is created automatically by
+# Automake, and that a used-defined 'distcheck-hook' is *not* honored
+# in a subpackage Makefile.am.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_SUBDIRS([subpkg])
+AC_OUTPUT
+END
+
+mkdir subpkg
+
+cat > subpkg/configure.ac << 'END'
+AC_INIT([subpkg], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+distcheck-hook:
+       ls -l $(distdir)
+       chmod u+w $(distdir)
+       : > $(distdir)/dc-hook-has-run
+       chmod a-w $(distdir)
+check-local:
+       ls -l $(srcdir)
+       test -f $(srcdir)/dc-hook-has-run
+END
+
+cat > subpkg/Makefile.am <<'END'
+check-local:
+       ls -l $(srcdir)
+       test ! -r $(srcdir)/dc-hook-has-run
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+cd subpkg
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+cd ..
+
+# For debugging.
+$FGREP 'distcheck-hook' Makefile.in subpkg/Makefile.in
+
+$FGREP 'distcheck-hook' subpkg/Makefile.in && Exit 1
+$FGREP '$(MAKE) $(AM_MAKEFLAGS) distcheck-hook' Makefile.in
+grep '^distcheck-hook:' Makefile.in
+
+./configure
+
+$MAKE
+$MAKE check && Exit 1
+cd subpkg
+$MAKE check
+cd ..
+$MAKE distcheck
+
+:
diff --git a/t/distcheck-missing-m4.sh b/t/distcheck-missing-m4.sh
new file mode 100755 (executable)
index 0000000..e583be1
--- /dev/null
@@ -0,0 +1,118 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that we can define a distcheck-hook to diagnose m4 files
+# missing from the dist tarball (interaction with '--install').
+# See automake bug#9037.
+
+. ./defs || Exit 1
+
+cwd=`pwd` || fatal_ "cannot get current working directory"
+
+cp "$am_testauxdir"/distcheck-hook-m4.am . \
+  || fatal_ "cannot fetch makefile fragment 'distcheck-hook-m4.am'"
+
+cat > Makefile.am << 'END'
+## The lack of '--install' here is meant.
+ACLOCAL_AMFLAGS = -I m4
+include $(srcdir)/distcheck-hook-m4.am
+END
+
+cat >> configure.ac << 'END'
+dnl We *deliberately* don't use m4_pattern_forbid here.
+AC_OUTPUT
+MY_FOO
+MY_BAR
+MY_BAZ
+MY_ZAR
+END
+
+mkdir m4 acdir acdir1 acdir2 pth
+
+cat > acdir/dirlist << END
+$cwd/acdir1
+$cwd/acdir2
+END
+
+echo 'AC_DEFUN([MY_FOO], [:])' > m4/foo.m4
+echo 'AC_DEFUN([MY_BAR], [:])' > acdir1/bar.m4
+echo 'AC_DEFUN([MY_BAZ], [:])' > acdir1/baz.m4
+echo 'AC_DEFUN([MY_QUX], [:])' > acdir2/qux.m4
+echo 'AC_DEFUN([MY_ZAR], [:])' > pth/zar.m4
+echo 'AC_DEFUN([MY_BLA], [:])' > pth/bla.m4
+
+ACLOCAL="$ACLOCAL --system-acdir=$cwd/acdir"; export ACLOCAL
+ACLOCAL_PATH=$cwd/pth; export ACLOCAL_PATH
+
+# We don't use '--install' here.  Our distcheck-hook should catch this.
+$ACLOCAL -I m4
+$AUTOCONF
+$EGREP 'MY_(FOO|BAR|BAZ|ZAR)' configure && Exit 1 # Sanity check.
+$AUTOMAKE
+
+check_no_spurious_error ()
+{
+  $EGREP -i 'mkdir:|:.*(permission|denied)' output && Exit 1
+  # On failure, some make implementations (such as Solaris make) print the
+  # whole failed recipe on stdout.  The first grep works around this.
+  grep -v 'rm -rf ' output | grep -i 'autom4te.*\.cache' && Exit 1
+  : To placate 'set -e'.
+}
+
+./configure
+
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+for x in bar baz zar; do
+  $EGREP "required m4 file.*not distributed.* $x.m4( |$)" output
+done
+check_no_spurious_error
+
+# Now we use '--install', and "make distcheck" should pass.
+$ACLOCAL -I m4 --install
+test -f m4/bar.m4 # Sanity check.
+test -f m4/baz.m4 # Likewise.
+test -f m4/zar.m4 # Likewise.
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+
+# We start to use new "third-party" macros from new .m4 files, but forget
+# to re-run "aclocal --install" by hand, relying on automatic remake rules.
+# Our distcheck-hook should catch this too.
+cat >> configure.ac << 'END'
+MY_QUX
+MY_BLA
+END
+
+$MAKE
+$EGREP 'MY_(FOO|BAR|BAZ|QUX|ZAR|BLA)' configure && Exit 1 # Sanity check.
+
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+$EGREP "required m4 file.*not distributed.* qux.m4( |$)" output
+$EGREP "required m4 file.*not distributed.* bla.m4( |$)" output
+check_no_spurious_error
+# Check that we don't complain for files that should have been found.
+$FGREP " (bar|baz|zar).m4" output && Exit 1
+
+# Now we again use '--install', and "make distcheck" should pass.
+$ACLOCAL -I m4 --install
+test -f m4/qux.m4 # Sanity check.
+test -f m4/bla.m4 # Likewise.
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+
+:
diff --git a/t/distcheck-outdated-m4.sh b/t/distcheck-outdated-m4.sh
new file mode 100755 (executable)
index 0000000..71ae3dd
--- /dev/null
@@ -0,0 +1,137 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that we can define a distcheck-hook to diagnose outdated m4
+# files in a dist tarball (interaction with '--install').
+# See automake bug#9037.
+
+. ./defs || Exit 1
+
+cwd=`pwd` || fatal_ "cannot get current working directory"
+
+cp "$am_testauxdir"/distcheck-hook-m4.am . \
+  || fatal_ "cannot fetch makefile fragment 'distcheck-hook-m4.am'"
+
+cat > Makefile.am << 'END'
+## The lack of '--install' here is meant.
+ACLOCAL_AMFLAGS = -I m4
+include $(srcdir)/distcheck-hook-m4.am
+END
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+MY_FOO
+MY_BAR
+MY_BAZ
+END
+
+mkdir m4 acdir
+echo 'AC_DEFUN([MY_FOO], [:])' > m4/foo.m4
+echo 'AC_DEFUN([MY_BAR], [:])' > acdir/bar.m4
+cat > acdir/baz.m4 << 'END'
+# serial 1
+AC_DEFUN([MY_BAZ], [:])
+END
+
+ACLOCAL="$ACLOCAL --system-acdir=$cwd/acdir"; export ACLOCAL
+
+# The use of '--install' here won't help when the installed file '.m4'
+# will become out-of-date w.r.t. the one in the system acdir.
+$ACLOCAL -I m4 --install
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE distcheck # Sanity check.
+
+check_no_spurious_error ()
+{
+  $EGREP -i 'mkdir:|:.*(permission|denied)' output && Exit 1
+  # On failure, some make implementations (such as Solaris make) print the
+  # whole failed recipe on stdout.  The first grep works around this.
+  grep -v 'rm -rf ' output | grep -i 'autom4te.*\.cache' && Exit 1
+  : To placate 'set -e'.
+}
+
+# We start to use a new "third-party" macro in a new version
+# of a pre-existing third-party m4 file, but forget to re-run
+# "aclocal --install" by hand, relying on automatic remake
+# rules.  Our distcheck-hook should catch this too.
+echo MY_ZARDOZ >> configure.ac
+
+cat > acdir/baz.m4 << 'END'
+# serial 2
+AC_DEFUN([MY_BAZ], [:])
+AC_DEFUN([MY_ZARDOZ], [:])
+END
+
+$MAKE # Rebuild configure and makefiles.
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+
+$EGREP "required m4 file.* outdated.* baz.m4( |$)" output
+check_no_spurious_error
+# Check that we don't complain for files that aren't outdated.
+$EGREP " (foo|bar).m4" output && Exit 1
+
+# Now we again use '--install' explicitly, and "make distcheck"
+# should pass.
+$ACLOCAL -I m4 --install
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+
+# Similar to what have been done above, but this time we:
+#  - use ACLOCAL_PATH, and
+#  - do not add the use of a new macro.
+
+echo MY_FNORD >> configure.ac
+
+mkdir pth
+cat > pth/fnord.m4 << 'END'
+# serial 1
+AC_DEFUN([MY_FNORD], [:])
+END
+
+ACLOCAL_PATH="$cwd/pth"; export ACLOCAL_PATH
+
+# The explicit use of '--install' here won't help when the installed file
+# '.m4' will become out-of-date w.r.t. the one in the system acdir.
+$ACLOCAL -I m4 --install
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+
+# Only increase serial number, without changing the other contents; this
+# is deliberate.
+cat > pth/fnord.m4 << 'END'
+# serial 2
+AC_DEFUN([MY_FNORD], [:])
+END
+
+$MAKE # Rebuild configure and makefiles.
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+$EGREP "required m4 file.* outdated.* fnord.m4( |$)" output
+check_no_spurious_error
+# Check that we don't complain for files that aren't outdated.
+$EGREP " (foo|bar|baz).m4" output && Exit 1
+
+# Now we again use '--install' explicitly, and "make distcheck"
+# should pass.
+$ACLOCAL -I m4 --install
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+
+:
diff --git a/t/distcheck-override-infodir.sh b/t/distcheck-override-infodir.sh
new file mode 100755 (executable)
index 0000000..746b5f8
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that we can override ${infodir} while having distcheck still
+# working.  Related to automake bug#9579.
+
+required='makeinfo tex texi2dvi install-info'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+infodir = ${prefix}/blah/blah/foobar
+info_TEXINFOS = main.texi
+## Sanity check.
+installcheck-local:
+       if test x$${infodir+set} != xset; then \
+         ls -l "$(DESTDIR)$(prefix)/blah/blah/foobar/" || exit 1; \
+         test -f "$(DESTDIR)$(prefix)/blah/blah/foobar/dir" || exit 1; \
+       else \
+         ls -l "$(DESTDIR)$$infodir/" || exit 1; \
+         test -f "$(DESTDIR)$$infodir/dir" || exit 1; \
+       fi
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@bye
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+./configure
+$MAKE
+
+$MAKE distcheck
+infodir="`pwd`"/_info $MAKE -e distcheck
+test -f _info/dir || Exit 99 # Sanity check.
+
+:
diff --git a/t/distcheck-pr10470.sh b/t/distcheck-pr10470.sh
new file mode 100755 (executable)
index 0000000..e4d8252
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure "make distcheck" does not experience racy failures on
+# systems (like MinGW/MSYS) that cannot remove a directory "in use"
+# by a process (e.g., that is its "current working directory").
+# See automake bug#10470.
+
+. ./defs || Exit 1
+
+mkdir foo.d
+sh -c "cd foo.d && sleep '4'" &
+# Without this sleep, the "rm -rf foo.d" below would reliably beat
+# the "cd foo.d" in the subshell above, and the test would be always
+# skipped, even on MinGW/MSYS.
+sleep '1'
+rm -rf foo.d && skip_ 'system is able to remove "in use" directories'
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<END
+TESTS = foo.test
+EXTRA_DIST= foo.test
+END
+
+cat > foo.test <<END
+#!/bin/sh
+sleep '4' &
+exit 0
+END
+chmod a+x foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+# We can build the distribution.
+$MAKE distcheck >output 2>&1 || { cat output; Exit 1; }
+cat output
+# Sanity check: verify that our code has hit a problem removing
+# the distdir, but has recovered from it.
+grep "rm:.*$destdir" output || fatal_ "expected code path not covered"
+
+:
diff --git a/t/distcheck-pr9579.sh b/t/distcheck-pr9579.sh
new file mode 100755 (executable)
index 0000000..8c78900
--- /dev/null
@@ -0,0 +1,96 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check against automake bug#9579: distcheck does not always detect
+# incomplete uninstall as advertised.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+# NOTE: the use of 'dir' as the name of the data file installed by hand
+# is deliberate, and enhances coverage -- see definition and comments of
+# lib/am/distdir.am:$(am__distuninstallcheck_listfiles).
+
+cat > Makefile.am << 'END'
+dist_data_DATA = foo
+EXTRA_DIST = dir
+install-data-local:
+       $(MKDIR_P) '$(DESTDIR)$(datadir)'
+       cp '$(srcdir)/dir' '$(DESTDIR)$(datadir)/dir'
+END
+
+: > foo
+: > dir
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure --prefix="`pwd`/inst"
+
+# Sanity checks.
+$MAKE install
+find inst -type f
+test -f inst/share/foo
+test -f inst/share/dir
+# We expect the uninstall target of our Makefile to be definitely broken.
+$MAKE uninstall
+test -f inst/share/dir
+rm -rf inst
+
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+
+$FGREP 'ERROR: files left after uninstall:' output
+grep '/share/dir *$' output
+
+# A few trickier corner cases.
+
+cat > Makefile.am << 'END'
+EXTRA_DIST = dir
+install-data-local:
+install-data-local:
+       $(MKDIR_P) '$(DESTDIR)$(prefix)/mu/share/info'
+       cp '$(srcdir)/dir' '$(DESTDIR)$(prefix)/mu/share/info'
+       $(MKDIR_P) '$(DESTDIR)$(infodir)/more'
+       cp '$(srcdir)/dir' '$(DESTDIR)$(infodir)/more'
+END
+
+$AUTOMAKE
+./config.status Makefile
+
+# Sanity checks, again.
+$MAKE install
+find inst -type f
+test -f inst/mu/share/info/dir
+test -f inst/share/info/more/dir
+# We expect the uninstall target of our Makefile to be definitely broken.
+$MAKE uninstall
+test -f inst/mu/share/info/dir
+test -f inst/share/info/more/dir
+rm -rf inst
+
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+
+$FGREP 'ERROR: files left after uninstall:' output
+grep '/mu/share/info/dir *$' output
+grep '/share/info/more/dir *$' output
+
+:
diff --git a/t/distcheck-writable-srcdir.sh b/t/distcheck-writable-srcdir.sh
new file mode 100755 (executable)
index 0000000..bbc50f4
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the user abuse 'distcheck-hook' to ensure his packages
+# is built by "make distcheck" with a writable srcdir.  This goes
+# against the GNU Coding Standards, but some package authors might
+# not care about them too much, and it's nice to support their use
+# case too (since it doesn't cost us anything but this test).
+# See automake bug#10878.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+EXTRA_DIST = old
+distcheck-hook:
+       find $(distdir) -exec chmod u+w '{}' ';'
+check-local:
+       test -f $(srcdir)/old
+       test ! -f $(srcdir)/new
+       test ! -r $(srcdir)/new
+## Don't do this in real life, or I'll kill you.
+       echo foo > $(srcdir)/old
+       echo bar > $(srcdir)/new
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+: > old
+$MAKE distcheck
+
+:
diff --git a/t/distcleancheck.sh b/t/distcleancheck.sh
new file mode 100755 (executable)
index 0000000..39197d7
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the suggested 'distcleancheck_listfiles' in the manual works.
+# The example Makefile.am we use is from the FAQ entry 'distcleancheck'.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# This Makefile.am is bogus.  See @node{distcleancheck} in the manual
+# for how to fix it properly.
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+dist_man_MANS = foo.1
+
+# We write './foo.1' inside the rule on purpose, to avoid VPATH rewriting
+# done by some 'make' implementations.
+foo.1: foo$(EXEEXT)
+       echo man page for foo$(EXEEXT) > ./foo.1
+
+## Ignore warnings about overridden variables
+AUTOMAKE_OPTIONS = -Wno-override
+distcleancheck_listfiles = \
+  find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
+       sh '{}' ';'
+END
+
+cat >foo.c <<'END'
+int main () { return 0; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+$MAKE distcheck
+
+# Now ensure that we really needed the override.
+sed '/distcleancheck_listfiles/,$d' Makefile.am > t
+mv -f t Makefile.am
+$AUTOMAKE
+./configure
+$MAKE
+$MAKE distcheck 2>stderr && { cat srderr >&2; Exit 1; }
+cat stderr >&2
+
+grep 'ERROR:.*files left in build directory after distclean' stderr
+grep '^\./foo\.1$' stderr
+
+:
diff --git a/t/distcom-subdir.sh b/t/distcom-subdir.sh
new file mode 100755 (executable)
index 0000000..4da74d0
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that if an auxfile (here depcomp) is required
+# by a subdir Makefile.am, it is distributed by that Makefile.am.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([subdir/Makefile])
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = subdir
+END
+
+rm -f depcomp
+mkdir subdir
+
+: > subdir/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+test ! -f depcomp
+
+cat > subdir/Makefile.am << 'END'
+bin_PROGRAMS = foo
+END
+
+: > subdir/foo.c
+
+$AUTOMAKE -a subdir/Makefile
+test -f depcomp
+
+# FIXME: the logic of this check and other similar ones in other
+# FIXME: 'distcom*.test' files should be factored out in a common
+# FIXME: subroutine in 'defs'...
+sed -n -e "
+  /^DIST_COMMON =.*\\\\$/ {
+    :loop
+    p
+    n
+    t clear
+    :clear
+    s/\\\\$/\\\\/
+    t loop
+    s/$/ /
+    s/[$tab ][$tab ]*/ /g
+    p
+    n
+  }" subdir/Makefile.in > dc.txt
+cat dc.txt
+$FGREP ' $(top_srcdir)/depcomp ' dc.txt
+
+./configure
+$MAKE distdir
+test -f $distdir/depcomp
+
+:
diff --git a/t/distcom2.sh b/t/distcom2.sh
new file mode 100755 (executable)
index 0000000..4b86f92
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that depcomp and compile are added to DIST_COMMON.
+# Report from Pavel Roskin.  Report of problems with '--no-force' from
+# Scott James Remnant (Debian #206299)
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_CONFIG_FILES([subdir/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = subdir
+END
+
+mkdir subdir
+: > subdir/foo.c
+
+cat > subdir/Makefile.am << 'END'
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.c
+foo_CFLAGS = -DBAR
+END
+
+$ACLOCAL
+
+for opt in '' --no-force; do
+
+  $AUTOMAKE $opt --add-missing
+
+  test -f compile
+  test -f depcomp
+
+  for dir in . subdir; do
+    # FIXME: the logic of this check and other similar ones in other
+    # FIXME: 'distcom*.test' files should be factored out in a common
+    # FIXME: subroutine in 'defs'...
+    sed -n -e "
+      /^DIST_COMMON =.*\\\\$/ {
+        :loop
+        p
+        n
+        t clear
+        :clear
+        s/\\\\$/\\\\/
+        t loop
+        s/$/ /
+        s/[$tab ][$tab ]*/ /g
+        p
+        n
+      }" $dir/Makefile.in > $dir/dc.txt
+  done
+
+  cat dc.txt # For debugging.
+  cat subdir/dc.txt # Likewise.
+
+  $FGREP ' $(top_srcdir)/depcomp ' subdir/dc.txt
+  # The 'compile' script will be listed in the DIST_COMMON of the top-level
+  # Makefile because it's required in configure.ac (by AM_PROG_CC_C_O).
+  $FGREP ' $(top_srcdir)/compile ' dc.txt || $FGREP ' compile ' dc.txt
+
+done
+
+:
diff --git a/t/distcom3.sh b/t/distcom3.sh
new file mode 100755 (executable)
index 0000000..34ad709
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that non-existing common files are distributed
+# if they are buildable.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+README:
+       echo 'I bet you are reading me.' > README
+END
+
+# Files required by '--gnu'.
+: > NEWS
+: > AUTHORS
+: > ChangeLog
+
+$ACLOCAL
+
+# Should not warn about missing README, since it is a target.
+$AUTOMAKE --add-missing --gnu >output 2>&1 || { cat output; Exit 1; }
+cat output
+grep README output && Exit 1
+
+sed -n -e '/^DIST_COMMON =.*\\$/ {
+   :loop
+   p
+   n
+   t clear
+   :clear
+   s/\\$/\\/
+   t loop
+   p
+   n
+   }' -e '/^DIST_COMMON =/ p' Makefile.in | grep README
+
+
+# Should warn about missing README.
+: > Makefile.am
+AUTOMAKE_fails --add-missing --gnu
+grep 'required file.*README.*not found' stderr
+
+:
diff --git a/t/distcom4.sh b/t/distcom4.sh
new file mode 100755 (executable)
index 0000000..dc37fcf
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure config files are distributed, and only once.
+# This tries to distribute a file from a subdirectory, without
+# Makefile in that directory.  distcom5.test performs the same
+# test with a Makefile in the directory.
+# Also make sure that README appears first in DIST_COMMON.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+   AC_CONFIG_FILES([tests/autoconf:tests/wrapper.in],
+                   [chmod +x tests/autoconf])
+   AC_CONFIG_FILES([tests/autoheader:tests/wrapper.in],
+                   [chmod +x tests/autoheader])
+   AC_CONFIG_FILES([tests/autom4te:tests/wrapper.in],
+                   [chmod +x tests/autom4te])
+   AC_CONFIG_FILES([tests/autoreconf:tests/wrapper.in],
+                   [chmod +x tests/autoreconf])
+   AC_CONFIG_FILES([tests/autoscan:tests/wrapper.in],
+                   [chmod +x tests/autoscan])
+   AC_CONFIG_FILES([tests/autoupdate:tests/wrapper.in],
+                   [chmod +x tests/autoupdate])
+   AC_CONFIG_FILES([tests/ifnames:tests/wrapper.in],
+                   [chmod +x tests/ifnames])
+   AC_OUTPUT
+END
+
+mkdir tests
+: > README
+: > tests/wrapper.in
+cat > Makefile.am << 'END'
+.PHONY: test
+test: distdir
+       test -f $(distdir)/tests/wrapper.in
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE test
+
+sed -n -e '/^DIST_COMMON =.*\\$/ {
+   :loop
+   p
+   n
+   t clear
+   :clear
+   s/\\$/\\/
+   t loop
+   p
+   n
+   }' -e '/^DIST_COMMON =/ p' Makefile.in > dc.txt
+
+cat dc.txt # For debugging.
+
+test 1 = `grep tests dc.txt | wc -l`
+grep configure dc.txt
+# README must come first.
+grep 'DIST_COMMON = README' Makefile.in
+
+:
diff --git a/t/distcom5.sh b/t/distcom5.sh
new file mode 100755 (executable)
index 0000000..adfbe52
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure config files are distributed, and only once.
+# This tries to distribute a file from a subdirectory, with
+# a Makefile in that directory.  distcom4.test performs the same
+# test without Makefile in the directory.
+
+. ./defs || Exit 1
+
+extract_distcommon ()
+{
+  sed -n -e '/^DIST_COMMON =.*\\$/ {
+    :loop
+    p
+    n
+    t clear
+    :clear
+    s/\\$/\\/
+    t loop
+    p
+    n
+    }' -e '/^DIST_COMMON =/ p' ${1+"$@"}
+}
+
+cat >> configure.ac << 'END'
+   AC_CONFIG_FILES([tests/autoconf:tests/wrapper.in],
+                   [chmod +x tests/autoconf])
+   AC_CONFIG_FILES([tests/autoheader:tests/wrapper.in],
+                   [chmod +x tests/autoheader])
+   AC_CONFIG_FILES([tests/autom4te:tests/wrapper.in],
+                   [chmod +x tests/autom4te])
+   AC_CONFIG_FILES([tests/autoreconf:tests/wrapper.in],
+                   [chmod +x tests/autoreconf])
+   AC_CONFIG_FILES([tests/autoscan:tests/wrapper.in],
+                   [chmod +x tests/autoscan])
+   AC_CONFIG_FILES([tests/autoupdate:tests/wrapper.in],
+                   [chmod +x tests/autoupdate])
+   AC_CONFIG_FILES([tests/ifnames:tests/wrapper.in],
+                   [chmod +x tests/ifnames])
+   AC_CONFIG_FILES([tests/Makefile])
+   AC_OUTPUT
+END
+
+mkdir tests
+: > tests/wrapper.in
+: > tests/Makefile.am
+cat > Makefile.am << 'END'
+SUBDIRS = tests
+.PHONY: test
+test: distdir
+       test -f $(distdir)/tests/wrapper.in
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE test
+
+extract_distcommon Makefile.in > top.txt
+extract_distcommon tests/Makefile.in > inner.txt
+
+# Might be useful for debugging.
+cat top.txt
+cat inner.txt
+
+test 0 = `grep tests top.txt | wc -l`
+test 1 = `grep wrapper inner.txt | wc -l`
+
+:
diff --git a/t/distdir.sh b/t/distdir.sh
new file mode 100755 (executable)
index 0000000..0657928
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure subdirs in EXTRA_DIST work.  Also tests to make
+# sure *srcdir is properly handled.  Note that using './', as in
+#   EXTRA_DIST = ./joe
+# does not work portably: it fails with HP-UX and Tru64 make.
+# Also test DISTFILES containing a directory and a file in it,
+# and repeated directories.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+include_HEADERS = some/file another/sub/subsub/file2 yet/another/file3
+EXTRA_DIST = foo/bar joe $(top_srcdir)/woo/doo $(srcdir)/dada \
+            some another/sub yet \
+            some another/sub yet
+
+
+all-local:
+       $(MKDIR_P) another/sub/subsub
+       touch another/sub/subsub/file2
+
+CLEANFILES = another/sub/subsub/file2
+
+check-local:
+       test -f $(srcdir)/foo/bar
+       test -f $(srcdir)/woo/doo
+       test -f $(srcdir)/joe
+       test -f $(srcdir)/dada
+       test -f $(srcdir)/some/file
+       test -f $(srcdir)/another/sub/subsub/file2 \
+       || test -f /another/sub/subsub/file2
+       test -f $(srcdir)/yet/another/file3
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+mkdir foo woo some another another/sub another/sub/subsub yet yet/another
+touch foo/bar joe woo/doo dada some/file another/sub/subsub/file2
+touch yet/another/file3
+
+mkdir build
+cd build
+../configure
+$MAKE distdir
+# Check to make sure 'foo' isn't made in build directory.
+test -d foo && Exit 1
+
+rm -rf $me-1.0
+# Remove the dot from VERSION for the next grep.
+VERSION=10 MKDIR_P='echo MKDIR_P' $MAKE -e distdir >stdout || :
+cat stdout
+
+# Make sure no './' appear in the directory names.  srcdir is '..', so
+# this also checks that no directory is created in the source tree.
+grep 'MKDIR_P.*\.' stdout && Exit 1
+
+cd ..
+./configure --prefix "`pwd`"
+$MAKE distcheck
+
+:
diff --git a/t/disthook.sh b/t/disthook.sh
new file mode 100755 (executable)
index 0000000..9804e99
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that 'dist-hook' works.  See automake bug#10878.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+EXTRA_DIST = write execute removed doc
+
+removed:
+       echo I will be deleted > $@
+DISTCLEANFILES = removed
+
+dist-hook:
+       chmod u+w $(distdir)/write $(distdir)/doc
+       chmod u+x $(distdir)/execute
+       rm -f $(distdir)/removed
+       rm -f $(distdir)/doc/HACKING
+       rm -f $(distdir)/doc/RELEASE-DATE
+       date > $(distdir)/doc/RELEASE-DATE
+       echo all is ok > $(distdir)/write
+
+check-local:
+       ls -l $(srcdir) $(srcdir)/doc
+       test "`cat $(srcdir)/write`" = "all is ok"
+       test -f $(srcdir)/doc/README
+       test -f $(srcdir)/doc/RELEASE-DATE
+       test ! -f $(srcdir)/removed
+       test ! -r $(srcdir)/removed
+       test ! -f $(srcdir)/doc/HACKING
+       test ! -r $(srcdir)/doc/HACKING
+       $(srcdir)/execute
+       $(srcdir)/execute | grep 'I run successfully'
+## Sanity check.
+       echo ok > $(srcdir)/../distcheck-run
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+mkdir doc
+: > doc/README
+: > doc/HACKING
+echo will be clobbered > write
+cat > execute <<'END'
+#!/bin/sh
+echo I run successfully
+END
+
+chmod a-w write
+chmod a-x execute
+
+$MAKE distdir
+ls -l $distdir $distdir/doc
+cd $distdir
+test "`cat write`" = "all is ok"
+test ! -f removed
+test ! -r removed
+test -f doc/README
+test -f doc/RELEASE-DATE
+test ! -f doc/HACING
+test ! -r doc/HACING
+./execute
+./execute | grep 'I run successfully'
+cd ..
+
+
+$MAKE distcheck
+test -f distcheck-run
+
+:
diff --git a/t/distlinks.sh b/t/distlinks.sh
new file mode 100755 (executable)
index 0000000..08244c0
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that distributed symlinks in the source tree will be expanded
+# as regular files in $(distdir).
+
+. ./defs || Exit 1
+
+echo text > file
+
+ln -s file lnk || skip_ "cannot create symlinks to files"
+
+mkdir A
+mkdir B
+echo aaa > A/aaa
+cd B
+ln -s ../A/aaa bbb
+cd ..
+
+echo FooBarBaz > foo
+
+ln -s foo  bar1
+ln -s bar1 bar2
+ln -s bar2 bar3
+
+ln -s "`pwd`/foo" quux
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+echo "me = $me" > Makefile.am # For better failure messages.
+cat >> Makefile.am << 'END'
+EXTRA_DIST = lnk B/bbb bar1 bar2 bar3 quux
+.PHONY: test
+test: distdir
+       ls -l $(distdir) $(distdir)/B
+       fail() { echo "$(me): $$*" >&2; e=1; }; \
+       e=0; \
+       set file lnk A/aaa B/bbb foo quux foo bar1 foo bar2 foo bar3; \
+       while test $$# -ge 2; do \
+         file=$$1; shift; link=$(distdir)/$$1; shift; \
+         test -f $$link || fail "$$link is not a regular file"; \
+         test ! -h $$link || fail "$$link is a symlink"; \
+         diff $$file $$link || fail "$$link differs from $$file"; \
+       done; \
+       exit $$e;
+END
+
+ls -l . A B
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+:
diff --git a/t/distlinksbrk.sh b/t/distlinksbrk.sh
new file mode 100755 (executable)
index 0000000..b7732ca
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that distributed broken symlinks cause 'make dist' to fail, and
+# to do so with (mostly) meaningful diagnostic.
+
+. ./defs || Exit 1
+
+# We need, for our broken symlinks, names that make it hard to get false
+# positives when grepping make output to look for them.
+lnk_base=BrknSymlnk
+lnk1=${lnk_base}__001
+lnk2=${lnk_base}__002
+lnka=${lnk_base}__aaa
+lnkb=${lnk_base}__bbb
+
+ln -s nonesuch $lnk1 || skip_ "cannot create broken symlinks"
+
+ln -s "`pwd`/nonesuch" $lnk2
+
+ln -s $lnk1 $lnka
+ln -s $lnka $lnkb
+
+# Sanity checks.  Use 'test -r', since Solaris Sh doesn't grok 'test -e'.
+test ! -r $lnk1
+test ! -r $lnk2
+test ! -r $lnka
+test ! -r $lnkb
+test -h $lnk1
+test -h $lnk2
+test -h $lnka
+test -h $lnkb
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+
+ls -l # For debugging.
+
+# Don't try to use "make -k", because some botched make implementations
+# (HP-UX, IRIX) might still exit on the first error in this situations.
+for lnk in $lnk1 $lnk2 $lnka $lnkb; do
+  echo "EXTRA_DIST = $lnk" > Makefile.am
+  $AUTOMAKE
+  ./configure
+  # Distribution must fail, with a decent error message.
+  $MAKE distdir >out 2>&1 && { cat out; Exit 1; }
+  cat out
+  $FGREP $lnk out
+done
+
+:
diff --git a/t/distname.sh b/t/distname.sh
new file mode 100755 (executable)
index 0000000..0ef3cdb
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of names in tar file.
+# From Rainer Orth.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_SRCDIR([a.c])
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = wish
+wish_SOURCES = a.c
+END
+
+: > a.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --include-deps --copy --add-missing
+./configure
+$MAKE dist
+
+gzip -d $me-1.0.tar.gz
+tar tf $me-1.0.tar > stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP ./$me-1.0/a.c stdout && Exit 1
+
+:
diff --git a/t/dmalloc.sh b/t/dmalloc.sh
new file mode 100755 (executable)
index 0000000..2bf6a7c
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Simple checks on the 'AM_WITH_DMALLOC' macro.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_HEADERS([config.h])
+AM_WITH_DMALLOC
+AC_SUBST([LDFLAGS])
+AC_OUTPUT
+END
+
+cat > config.h.in <<'END'
+#undef WITH_DMALLOC
+END
+
+cat > Makefile.am <<'END'
+check-with-dmalloc:
+## The AM_WITH_DMALLOC assumes that the user is a developer, so that
+## he is expected to install and make available the 'dmalloc' library
+## by his own.  So we just check that proper linker and libs flags get
+## added.
+       echo ' ' $(LDFLAGS) ' ' | grep ' -g '
+       echo ' ' $(LIBS) ' ' | grep ' -ldmalloc '
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+cat config.h # For debugging.
+grep '^ */\* *# *undef  *WITH_DMALLOC *\*/ *$' config.h
+
+./configure --without-dmalloc
+cat config.h # For debugging.
+grep '^ */\* *# *undef  *WITH_DMALLOC *\*/ *$' config.h
+
+./configure --with-dmalloc
+cat config.h # For debugging.
+grep '^# *define  *WITH_DMALLOC  *1 *$' config.h
+$MAKE check-with-dmalloc
+
+:
diff --git a/t/doc-parsing-buglets-colneq-subst.sh b/t/doc-parsing-buglets-colneq-subst.sh
new file mode 100755 (executable)
index 0000000..8ff27f1
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check a documented limitation of the Automake's Makefile parser
+# w.r.t. POSIX variable substitutions used in the name of targets.
+# See Section "General Operation" in the Automake manual.
+# If you cause some parts of this test to fail, chances are that you've
+# improved the Automake parser ;-)
+# See: <http://lists.gnu.org/archive/html/automake/2010-08/msg00074.html>
+# or: <http://thread.gmane.org/gmane.comp.sysutils.automake.general/11943/focus=11962>
+
+. ./defs || Exit 1
+
+cat > Makefile.am <<'END'
+$(FOO:=x): bar
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+
+grep 'bad characters.*variable name.*\$(FOO' stderr
+grep ':=.*assignments.*not portable' stderr
+
+:
diff --git a/t/doc-parsing-buglets-tabs.sh b/t/doc-parsing-buglets-tabs.sh
new file mode 100755 (executable)
index 0000000..22c981c
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check the documented limitation of the Automake's Makefile parser w.r.t.
+# use of TAB characters; see Section "General Operation" in the Automake
+# manual, and automake bug#8360.
+# If you cause some parts of this test to fail, chances are that you've
+# improved the Automake parser ;-)
+
+. ./defs || Exit 1
+
+cat > Makefile.am <<END
+.PHONY: test
+test: all check
+
+fail:
+${tab}@echo "'\$@ recipe executed'"; exit 1
+
+## This won't be recognized as a target+recipe by Automake.
+all-local${tab}:
+${tab}@exit 1
+
+## This won't be recognized as a target+rdependency by Automake.
+all-local${tab}: fail
+
+just_to_separate: dummy deps
+
+## This won't be recognized as a variable assignment by Automake.
+${tab}bin_PROGRAMS = foo
+END
+
+echo AC_OUTPUT >> configure.ac
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP '$(EXEEEXT)' Makefile.in && Exit 1
+grep 'all:.*all-local' Makefile.in && Exit 1
+grep "^${tab}bin_PROGRAMS = foo" Makefile.in
+
+$AUTOCONF
+./configure
+
+$MAKE test
+
+:
diff --git a/t/dollar.sh b/t/dollar.sh
new file mode 100755 (executable)
index 0000000..92ed26a
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# We should support files with '$' characters in their names.
+# Java people need this.
+# PR/317, reported by Eric Siegerman and Philip Fong.
+
+# Require GNU make for this test.  SunOS Make does not support
+# '$$' in a target or a dependency (it outputs the empty string instead).
+required=GNUmake
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'EOF'
+mydir = $(prefix)/my
+dist_my_DATA = hello$$world
+
+check-dist: distdir
+       test -f '$(distdir)/hello$$world'
+EOF
+
+: > 'hello$world'
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure --prefix "`pwd`/inst"
+$MAKE install
+test -f 'inst/my/hello$world'
+$MAKE check-dist
diff --git a/t/dollarvar.sh b/t/dollarvar.sh
new file mode 100755 (executable)
index 0000000..940ef23
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# 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 || Exit 1
+
+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.ac
+
+$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/t/dollarvar2.sh b/t/dollarvar2.sh
new file mode 100755 (executable)
index 0000000..cef85bb
--- /dev/null
@@ -0,0 +1,91 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that -Wportability turns on portability-recursive,
+# likewise for -Wno-...
+
+. ./defs || Exit 1
+
+#
+# First, try a setup where we have a 'portability-recursive' warning,
+# but no "simple" 'portability' warning.
+#
+
+cat >Makefile.am <<'EOF'
+x = 1
+bla = $(foo$(x))
+EOF
+
+$ACLOCAL
+
+# Enabling 'portability' warnings should enable 'portability-recursive'
+# warnings.
+AUTOMAKE_fails -Wnone -Wportability
+grep 'recursive variable expansion' stderr
+# 'portability-recursive' warnings can be enabled by themselves.
+AUTOMAKE_fails -Wnone -Wportability-recursive
+grep 'recursive variable expansion' stderr
+
+# Various ways to disable 'portability-recursive'.
+$AUTOMAKE -Wno-all
+$AUTOMAKE -Wno-portability
+$AUTOMAKE -Wall -Wno-portability-recursive
+
+# '-Wno-portability-recursive' after '-Wportability' correctly disables
+# 'portability-recursive' warnings.
+$AUTOMAKE -Wportability -Wno-portability-recursive
+
+# '-Wno-portability' disables 'portability-recursive' warnings; but
+# a later '-Wportability-recursive' re-enables them.  This time, we
+# use AUTOMAKE_OPTIONS to specify the warning levels.
+echo 'AUTOMAKE_OPTIONS = -Wno-portability' >> Makefile.am
+$AUTOMAKE
+echo 'AUTOMAKE_OPTIONS += -Wportability-recursive' >> Makefile.am
+AUTOMAKE_fails
+grep 'recursive variable expansion' stderr
+
+#
+# Now try a setup where we have both a 'portability' warning and
+# a 'portability-recursive' one.
+#
+
+cat >Makefile.am <<'EOF'
+x = 1
+bla = $(foo$(x))
+noinst_PROGRAMS = foo
+foo_CPPFLAGS = -Dwhatever
+EOF
+
+echo AC_PROG_CC >> configure.ac
+
+$ACLOCAL --force
+
+# Can disable both 'portability' and 'portability-recursive' warnings.
+$AUTOMAKE -Wno-portability
+
+# Disabling 'portability-recursive' warnings should not disable
+# 'portability' warnings.
+AUTOMAKE_fails -Wportability -Wno-portability-recursive
+grep AM_PROG_CC_C_O stderr
+grep 'recursive variable expansion' stderr && Exit 1
+
+# Enabling 'portability-recursive' warnings should not enable
+# all the 'portability' warning.
+AUTOMAKE_fails -Wno-portability -Wportability-recursive
+grep AM_PROG_CC_C_O stderr && Exit 1
+grep 'recursive variable expansion' stderr
+
+:
diff --git a/t/double.sh b/t/double.sh
new file mode 100755 (executable)
index 0000000..7f353b7
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure listing a program twice is ok.
+# Report from Manu Rouat.
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >> configure.ac
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = spice nutmeg help sconvert multidec nutmeg
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/dup2.sh b/t/dup2.sh
new file mode 100755 (executable)
index 0000000..d405828
--- /dev/null
+++ b/t/dup2.sh
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure aclocal only warns about definitions overridden by acinclude.m4.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_FUNC_STRTOD
+END
+
+cat > acinclude.m4 << 'END'
+AC_DEFUN([AM_FUNC_STRTOD])
+END
+
+$ACLOCAL
diff --git a/t/else.sh b/t/else.sh
new file mode 100755 (executable)
index 0000000..74d2158
--- /dev/null
+++ b/t/else.sh
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure line numbers are correct in some error reports.
+
+. ./defs || Exit 1
+
+echo 'AM_CONDITIONAL(FOO, true)' >> configure.ac
+
+cat > Makefile.am << 'END'
+# Flag to tell us if apache dir is a source distribution.
+APACHE_DIR_IS_SRC = @APACHE_DIR_IS_SRC@
+
+# We only need to descend into the c dir if we're doing a 1.3 DSO
+# configuration.
+ifeq ("${APACHE_DIR_IS_SRC}","yes")
+SUBDIRS = java
+else
+SUBDIRS = c java
+endif
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile\.am:8:.*else without if' stderr
diff --git a/t/empty.sh b/t/empty.sh
new file mode 100755 (executable)
index 0000000..795f922
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug where if the list of installables is empty, invalid sh
+# code is generated.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >>configure.ac
+echo 'data_DATA =' >Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure --prefix "`pwd`/inst"
+$MAKE install
diff --git a/t/empty2.sh b/t/empty2.sh
new file mode 100755 (executable)
index 0000000..7d12423
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure empty _SOURCES suppresses assumption about default
+# name.  Report from Pavel Roskin.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = pavel
+pavel_SOURCES =
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'pavel\.[co]' Makefile.in && Exit 1
+Exit 0
diff --git a/t/empty3.sh b/t/empty3.sh
new file mode 100755 (executable)
index 0000000..6aabfba
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# A test for missing _SOURCES variable.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = pavel
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'pavel\.[co]' Makefile.in
diff --git a/t/empty4.sh b/t/empty4.sh
new file mode 100755 (executable)
index 0000000..8106426
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure empty _SOURCES works.
+# From Paul Berrevoets.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_SUBST(ZOO_OBJ)
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = zoo
+zoo_SOURCES =
+EXTRA_zoo_SOURCES = bar.c foo.c
+zoo_DEPENDENCIES = $(ZOO_OBJ)
+zoo_LDADD = $(zoo_DEPENDENCIES)
+END
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP zoo. Makefile.in && Exit 1
+Exit 0
diff --git a/t/exdir.sh b/t/exdir.sh
new file mode 100755 (executable)
index 0000000..6e048d2
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure new extended directory mechanism works.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+htmldir = $(prefix)/html
+html_DATA = zot.html
+pkgdata_DATA = qbert
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^DATA' Makefile.in | grep html
diff --git a/t/exdir2.sh b/t/exdir2.sh
new file mode 100755 (executable)
index 0000000..ddaac58
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure undefined directories are invalid.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+quuz_DATA = zot.html
+pkgdata_DATA = qbert
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'pkgdatadir' stderr && Exit 1
+grep 'Makefile.am:1:.*quuzdir.*undefined' stderr
diff --git a/t/exdir3.sh b/t/exdir3.sh
new file mode 100755 (executable)
index 0000000..672548c
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure pkgdatadir can be overridden via AC_SUBST.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_SUBST([pkgdatadir], ["FOO"])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'EOF'
+showme:
+       @echo $(pkgdatadir)
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE showme | grep FOO
diff --git a/t/exeext.sh b/t/exeext.sh
new file mode 100755 (executable)
index 0000000..42fa574
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure '.' in an exe name doesn't fool us.
+# Report from Robert Collins.
+# Also make sure we rewrite conditionals variables.
+# Also check for PR/352.
+# Also make sure the old definitions of bin_PROGRAMS and friend
+# aren't left around.  Report from Jim Meyering.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([WANT_MT], [test -z "$revert"])
+AM_CONDITIONAL([WANT_RMT], [test -z "$revert"])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+## Use a different dir for each to make grep easy.
+bin_PROGRAMS = maude
+sbin_PROGRAMS = maude.static
+## We don't define this one for now.  Probably it is an error.
+## noinst_PROGRAMS = maude2.exe
+check_PROGRAMS = maude3$(EXEEXT)
+
+if WANT_MT
+  bin_PROGRAMS += mt
+endif
+if WANT_RMT
+  libexec_PROGRAMS = rmt
+endif
+
+print:
+       @echo 1BEG: $(bin_PROGRAMS) :END1
+       @echo 2BEG: $(sbin_PROGRAMS) :END2
+       @echo 3BEG: $(check_PROGRAMS) :END3
+       @echo 4BEG: $(libexec_PROGRAMS) :END4
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+grep '^maude$(EXEEXT):' Makefile.in
+grep '^maude\.static$(EXEEXT):' Makefile.in
+grep '^maude3$(EXEEXT):' Makefile.in
+grep '^mt$(EXEEXT):' Makefile.in
+grep '^rmt$(EXEEXT):' Makefile.in
+test `grep '^bin_PROGRAMS =' Makefile.in | wc -l` = 1
+
+# Make sure $(EXEEXT) gets stripped before canonicalization.
+grep 'maude3__EXEEXT__OBJECTS' Makefile.in && Exit 1
+
+./configure
+
+EXEEXT=.foo $MAKE -e print > stdout
+cat stdout
+
+grep '1BEG: maude.foo mt.foo :END1' stdout
+grep '2BEG: maude.static.foo :END2' stdout
+grep '3BEG: maude3.foo :END3' stdout
+grep '4BEG: rmt.foo :END4' stdout
+
+./configure revert=yes
+
+EXEEXT=.foo $MAKE -e print > stdout
+cat stdout
+
+grep '1BEG: maude.foo :END1' stdout
+grep '2BEG: maude.static.foo :END2' stdout
+grep '3BEG: maude3.foo :END3' stdout
+grep '4BEG: :END4' stdout
diff --git a/t/exeext2.sh b/t/exeext2.sh
new file mode 100755 (executable)
index 0000000..3315ad8
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure no-exeext option works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = maude
+
+maude:
+       yeah
+END
+
+$ACLOCAL
+
+$AUTOMAKE -Wnone
+AUTOMAKE_fails -Wnone -Wobsolete
+grep 'deprecated.*maude' stderr
+AUTOMAKE_fails -Wall
+grep 'deprecated.*maude' stderr
+grep 'overrid.*maude' stderr
+
+echo 'AUTOMAKE_OPTIONS = no-exeext' >> Makefile.am
+
+$AUTOMAKE -Wall -Wno-override
diff --git a/t/exeext3.sh b/t/exeext3.sh
new file mode 100755 (executable)
index 0000000..1bc1a10
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we can override a program rule.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = maude 3dldf
+
+maude$(EXEEXT):
+       yeah
+
+3dldf$(EXEEXT):
+       yippie
+END
+
+$ACLOCAL
+$AUTOMAKE -Wno-override
+
+$FGREP 'maude$(EXEEXT):' Makefile.in
+test 1 = `grep 'maude.*:' Makefile.in | wc -l`
+$FGREP '3dldf$(EXEEXT):' Makefile.in
+test 1 = `grep '3dldf.*:' Makefile.in | wc -l`
diff --git a/t/exeext4-w.sh b/t/exeext4-w.sh
new file mode 100755 (executable)
index 0000000..b3d3e3e
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/exeext4.sh"; then
+    echo "$0: will source $dir/t/exeext4.sh"
+    . "$dir/t/exeext4.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/exeext4.sh'" >&2
+exit '99'
diff --git a/t/exeext4.sh b/t/exeext4.sh
new file mode 100755 (executable)
index 0000000..d9099b6
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure $(EXEEXT) is appended to programs and to tests that are
+# programs, but not to @substitutions@.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND], [test -n "$cond"])
+AC_SUBST([programs], ['prg1$(EXEEXT) prg2$(EXEEXT)'])
+AC_SUBST([CC], [whocares])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+EXEEXT = .x
+if COND
+  BAR = bar
+  DEP = bar
+  BAZE = baz$(EXEEXT)
+  BAZ = baz $(DEP)
+endif
+bin_PROGRAMS = $(programs) @programs@ prg3 $(BAR) $(BAZE)
+EXTRA_PROGRAMS = prg1 prg2 prg3
+TESTS = prg1 prg3 prg4 $(BAZ)
+
+.PHONY: test-cond test-nocond
+test-nocond:
+       is $(bin_PROGRAMS) == prg1.x prg2.x prg1.x prg2.x prg3.x
+       is $(EXTRA_PROGRAMS) == prg1.x prg2.x prg3.x
+       is $(TESTS) == prg1.x prg3.x prg4
+test-cond:
+       is $(bin_PROGRAMS) == prg1.x prg2.x prg1.x prg2.x prg3.x bar.x baz.x
+       is $(EXTRA_PROGRAMS) == prg1.x prg2.x prg3.x
+       is $(TESTS) == prg1.x prg3.x prg4 baz.x bar.x
+       is $(BAR) $(BAZ) == bar baz bar
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing --copy
+
+./configure
+$MAKE test-nocond
+
+./configure cond=yes
+$MAKE test-cond
+
+# Only two am__EXEEXT_* variables are needed here: one for BAR, and one
+# BAZ.  The latter must use the former.
+test 2 = `grep '__EXEEXT_. =' Makefile.in | wc -l`
+grep 'am__EXEEXT_2 = .*am__EXEEXT_1' Makefile.in
+
+:
diff --git a/t/exsource.sh b/t/exsource.sh
new file mode 100755 (executable)
index 0000000..15b274f
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure EXTRA_..._SOURCES actually works.
+# Bug report from Henrik Frystyk Nielsen.
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >> configure.ac
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = www
+www_SOURCES = www.c
+EXTRA_www_SOURCES = xtra.c
+www_LDADD = @extra_stuff@
+END
+
+: > www.c
+: > xtra.c
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '@am__include@ .*/xtra\.P' Makefile.in
diff --git a/t/ext.sh b/t/ext.sh
new file mode 100755 (executable)
index 0000000..c62dbd3
--- /dev/null
+++ b/t/ext.sh
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure extensions are set correctly for various languages.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_F77
+AC_PROG_FC
+AC_PROG_OBJC
+# FIXME: this is to cater to older autoconf; remove this once we
+# FIXME: automake requires Autoconf 2.65 or later.
+m4_ifdef([AC_PROG_OBJCXX], [AC_PROG_OBJCXX], [
+  AC_SUBST([OBJCXX], [whocares])
+  AM_CONDITIONAL([am__fastdepOBJCXX], [whocares])
+])
+AM_PROG_UPC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = 1.f 2.for 3.f90 4.f95 5.F 6.F90 7.F95 8.r 9.m 10.mm 11.upc
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+for ext in f for f90 f95 F F90 F95 r m mm upc
+do
+   # Some versions of the BSD shell wrongly exit when 'set -e' is active
+   # if the last command within a compound statement fails and is guarded
+   # by an && only.  So we play safe and use the following idiom, instead
+   # of the apparently simpler 'grep ... && Exit 1'.
+   if grep "^$ext\.o:" Makefile.in; then Exit 1; else :; fi
+   grep "^\.$ext\.o:" Makefile.in
+done
+Exit 0
diff --git a/t/ext2.sh b/t/ext2.sh
new file mode 100755 (executable)
index 0000000..ac5b777
--- /dev/null
+++ b/t/ext2.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for a bug reported by Ladislav Strojil.
+# Using different extensions for the same language should not
+# output the build rules several times.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_PROG_CXX
+EOF
+
+cat >Makefile.am <<EOF
+bin_PROGRAMS = p q r
+p_SOURCES = a.cc b.cpp c.cxx
+q_SOURCES = sub/d.cc sub/e.cpp sub/f.cxx
+r_SOURCES = g.cc h.cpp i.cxx
+r_CXXFLAGS = -DFOO
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '\.o:' Makefile.in > rules
+cat rules
+
+# Here is an example of bogus output.  The rules are output several
+# times.
+#|  .cc.o:
+#|  d.o: sub/d.cc
+#|  e.o: sub/e.cpp
+#|  f.o: sub/f.cxx
+#|  r-g.o: g.cc
+#|  r-h.o: h.cpp
+#|  r-i.o: i.cxx
+#|  .cpp.o:
+#|  d.o: sub/d.cc
+#|  e.o: sub/e.cpp
+#|  f.o: sub/f.cxx
+#|  r-g.o: g.cc
+#|  r-h.o: h.cpp
+#|  r-i.o: i.cxx
+#|  .cxx.o:
+#|  #d.o: sub/d.cc
+#|  #e.o: sub/e.cpp
+#|  #f.o: sub/f.cxx
+#|  #r-g.o: g.cc
+#|  #r-h.o: h.cpp
+#|  #r-i.o: i.cxx
+
+# Bail out if we find a duplicate.
+$PERL -ne 'if (exists $a{$_}) { exit (1) } else { $a{$_} = 1 }' < rules
diff --git a/t/ext3.sh b/t/ext3.sh
new file mode 100755 (executable)
index 0000000..bd5ed6d
--- /dev/null
+++ b/t/ext3.sh
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, 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/>.
+
+# Cover corner cases of derive_suffix wrt. file extensions:
+# - extension declared with SUFFIXES but with no suffix rule for it
+# - extension with a suffix rule but none that leads us to $(OBJEXT)
+# In both cases, we don't try to create a rule; but we shouldn't
+# fail either, because magic might be happening behind our back.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar
+foo_SOURCES = foo.goo
+SUFFIXES = .goo
+bar_SOURCES = bar.woo
+.woo.zoo: ; making a zoo $@ from a woo $<
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+Exit 0
diff --git a/t/extra-portability.sh b/t/extra-portability.sh
new file mode 100755 (executable)
index 0000000..3ad6375
--- /dev/null
@@ -0,0 +1,96 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check interactions between the 'portability' and 'extra-portability'
+# warning categories:
+#   1. '-Wextra-portability' must imply '-Wportability'.
+#   2. '-Wno-portability' must imply '-Wno-extra-portability'.
+#   3. '-Wall' must imply '-Wextra-portability'.
+
+. ./defs || Exit 1
+
+# We want (almost) complete control over automake options.
+AUTOMAKE="$am_original_AUTOMAKE --foreign -Werror"
+
+cat >>configure.ac <<END
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+$ACLOCAL
+
+#
+# First, a setup where only an extra-portability warning is present
+# (no "simple" portability-warnings are).
+#
+
+cat >Makefile.am <<END
+EXTRA_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = sub/foo.c
+END
+
+# Sanity check: extra-portability warnings causes the expected error.
+AUTOMAKE_fails -Wextra-portability
+grep 'requires.*AM_PROG_AR' stderr
+
+# Warnings in extra-portability category are not enabled by default.
+$AUTOMAKE
+
+# -Wall enables extra-portability.
+AUTOMAKE_fails -Wall
+grep 'requires.*AM_PROG_AR' stderr
+
+# Disabling portability disables extra-portability as well.
+$AUTOMAKE -Wextra-portability -Wno-portability
+$AUTOMAKE -Wall -Wno-portability
+
+#
+# Now, a setup where also a "simple" portability warning is present.
+#
+
+# Per-target flags require the use of AM_PROG_CC_C_O in configure.ac.
+echo libfoo_a_CPPFLAGS = -Dwhatever >> Makefile.am
+
+# Enabling extra-portability enables portability as well ...
+AUTOMAKE_fails -Wextra-portability
+grep 'requires.*AM_PROG_CC_C_O' stderr
+grep 'requires.*AM_PROG_AR' stderr
+# ... even if it had been previously disabled.
+AUTOMAKE_fails -Wno-portability -Wextra-portability
+grep 'requires.*AM_PROG_CC_C_O' stderr
+grep 'requires.*AM_PROG_AR' stderr
+
+# Disabling extra-portability leaves portability intact (1).
+AUTOMAKE_fails -Wportability -Wno-extra-portability
+grep 'requires.*AM_PROG_CC_C_O' stderr
+grep 'requires.*AM_PROG_AR' stderr && Exit 1
+# Disabling extra-portability leaves portability intact (2).
+AUTOMAKE_fails -Wall -Wno-extra-portability
+grep 'requires.*AM_PROG_CC_C_O' stderr
+grep 'requires.*AM_PROG_AR' stderr && Exit 1
+
+# Enabling portability does not enable extra-portability.
+AUTOMAKE_fails -Wportability
+grep 'requires.*AM_PROG_CC_C_O' stderr
+grep 'requires.*AM_PROG_AR' stderr && Exit 1
+
+# Disabling portability disables extra-portability.
+$AUTOMAKE -Wno-portability
+$AUTOMAKE -Wextra-portability -Wno-portability
+$AUTOMAKE -Wall -Wno-portability
+
+:
diff --git a/t/extra-portability2.sh b/t/extra-portability2.sh
new file mode 100755 (executable)
index 0000000..2d33008
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that extra-portability warnings are not enabled by --gnits,
+# --gnu and --foreign.
+
+. ./defs || Exit 1
+
+# We want complete control over automake options.
+AUTOMAKE=$am_original_AUTOMAKE
+
+cat >>configure.ac <<END
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat >Makefile.am <<END
+EXTRA_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+END
+
+$ACLOCAL
+
+# Make sure the test is useful.
+AUTOMAKE_fails -Wextra-portability \
+  || fatal_ "setup doesn't trigger 'extra-portability' warnings"
+
+$AUTOMAKE --foreign
+
+touch INSTALL NEWS README AUTHORS ChangeLog COPYING # Satisfy --gnu.
+$AUTOMAKE --gnu
+
+touch THANKS # Satisfy also --gnits.
+$AUTOMAKE --gnits
+
+:
diff --git a/t/extra-portability3.sh b/t/extra-portability3.sh
new file mode 100755 (executable)
index 0000000..13d6084
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check interactions between the 'portability-recursive' and
+# 'extra-portability' warning categories.
+
+. ./defs || Exit 1
+
+# We want (almost) complete control over automake options.
+AUTOMAKE="$am_original_AUTOMAKE --foreign -Werror"
+
+cat >>configure.ac <<END
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+$ACLOCAL
+
+cat >Makefile.am <<'END'
+baz = $(foo$(bar))
+lib_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+END
+
+# 'extra-portability' implies 'portability-recursive'.
+AUTOMAKE_fails -Wextra-portability
+grep 'requires.*AM_PROG_AR' stderr
+grep 'recursive variable expansion' stderr
+
+# We can disable 'extra-portability' while leaving
+# 'portability-recursive' intact.
+AUTOMAKE_fails -Wportability-recursive -Wno-extra-portability
+grep 'requires.*AM_PROG_AR' stderr && Exit 1
+grep 'recursive variable expansion' stderr
+
+# We can disable 'portability-recursive' while leaving
+# 'extra-portability' intact.
+AUTOMAKE_fails -Wextra-portability -Wno-portability-recursive
+grep 'requires.*AM_PROG_AR' stderr
+grep 'recursive variable expansion' stderr && Exit 1
+
+# Disabling 'portability' disables 'portability-recursive' and
+# 'extra-portability'.
+$AUTOMAKE -Wextra-portability -Wno-portability
+
+:
diff --git a/t/extra-programs-empty.sh b/t/extra-programs-empty.sh
new file mode 100755 (executable)
index 0000000..37e1a2b
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that EXTRA_PROGRAMS doesn't get removed because it is empty.
+# This check has been introduced in commit 'Release-1-9-254-g9d0eaef'
+# into the former test 'subst2.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([Makefile2 Makefile3])
+AC_SUBST([prog])
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+EXTRA_PROGRAMS =
+END
+
+cat > Makefile2.am <<'END'
+bin_PROGRAMS = a @prog@ b
+EXTRA_PROGRAMS =
+END
+
+cat > Makefile3.am <<'END'
+empty =
+EXTRA_PROGRAMS = $(empty)
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^EXTRA_PROGRAMS = *$' Makefile.in
+grep '^EXTRA_PROGRAMS = *$' Makefile2.in
+# Be laxer here, since EXTRA_PROGRAMS might be internally rewritten
+# by Automake when it contains references to other variables.
+grep '^EXTRA_PROGRAMS =' Makefile3.in
+
+:
diff --git a/t/extra.sh b/t/extra.sh
new file mode 100755 (executable)
index 0000000..7bad9ef
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure EXTRA_ targets are generated.  This test used to
+# make sure the targets were *not* generated.  That is wrong; the
+# targets should always be generated.  However, they should not be
+# built by default.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = @foo@
+EXTRA_PROGRAMS = zardoz
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep "^zardoz" Makefile.in
+
+# Can't have EXTRA clean rules.
+grep 'clean.*EXTRA' Makefile.in && Exit 1
+Exit 0
diff --git a/t/extra10.sh b/t/extra10.sh
new file mode 100755 (executable)
index 0000000..8fe7133
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that wildcards in EXTRA_DIST are honoured.
+# Suggested by observations from Braden McDaniel.
+# See also sister test 'extra11.test', that check a similar usage
+# with the involvement of the $(wildcard) GNU make builtin.
+
+required=GNUmake
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+EXTRA_DIST = *.foo
+.PHONY: test
+test: distdir
+       diff a.foo $(distdir)/a.foo
+       diff b.foo $(distdir)/b.foo
+       test ! -r $(distdir)/c.bar
+check-local:
+       test -f $(srcdir)/a.foo
+       test -f $(srcdir)/b.foo
+       test ! -r $(srcdir)/c.bar
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+echo aaa > a.foo
+echo bbb > b.foo
+echo ccc > c.bar
+./configure
+$MAKE test
+
+:
diff --git a/t/extra11.sh b/t/extra11.sh
new file mode 100755 (executable)
index 0000000..a645afb
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for more complex usage of wildcards in EXTRA_DIST.
+# Suggested by observations from Braden McDaniel.
+
+required=GNUmake
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = -Wno-portability
+
+EXTRA_DIST = $(wildcard [!c-z].t d.t [ab].dir foo.* *zardoz*)
+
+.PHONY: prereq
+prereq:
+       echo a > a.t
+       echo b > b.t
+       echo c > c.t
+       echo d > d.t
+       echo m > m.t
+       echo z > z.t
+       mkdir a.dir b.dir c.dir
+       echo a1 > a.dir/f1
+       echo a2 > a.dir/f2
+       echo bb > b.dir/f
+       echo cc > c.dir/x
+       echo 0 > foo
+       echo 1 > foo.x
+       echo 2 > foo.bar
+       echo foo > _zardoz_
+
+.PHONY: test
+test: distdir
+       ls -l $(distdir) $(distdir)/*.dir ;: For debugging.
+       diff a.t $(distdir)/a.t
+       diff b.t $(distdir)/b.t
+       test ! -r $(distdir)/c.t
+       diff d.t $(distdir)/d.t
+       test ! -r $(distdir)/m.t
+       test ! -r $(distdir)/z.t
+       diff a.dir/f1 $(distdir)/a.dir/f1
+       diff a.dir/f2 $(distdir)/a.dir/f2
+       diff b.dir/f $(distdir)/b.dir/f
+       test ! -r $(distdir)/c.dir
+       diff foo.x $(distdir)/foo.x
+       diff foo.bar $(distdir)/foo.bar
+       test ! -r $(distdir)/foo
+       diff _zardoz_ $(distdir)/_zardoz_
+check-local:
+       ls -l . *.dir ;: For debugging.
+       test -f $(srcdir)/a.t
+       test -f $(srcdir)/b.t
+       test ! -r $(srcdir)/c.t
+       test -f $(srcdir)/d.t
+       test ! -r $(srcdir)/m.t
+       test ! -r $(srcdir)/z.t
+       test -f $(srcdir)/a.dir/f1
+       test -f $(srcdir)/a.dir/f2
+       test -f $(srcdir)/b.dir/f
+       test ! -r $(srcdir)/c.dir
+       test -f $(srcdir)/foo.x
+       test -f $(srcdir)/foo.bar
+       test ! -r $(srcdir)/foo
+       test -f $(srcdir)/_zardoz_
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE prereq
+ls -l . *.dir # For debugging.
+$MAKE test
+$MAKE distcheck
+
+:
diff --git a/t/extra12.sh b/t/extra12.sh
new file mode 100755 (executable)
index 0000000..9794115
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that wildcards in elements of EXTRA_DIST are honoured when
+# $srcdir != $builddir, if properly declared.
+# Suggested by observations from Braden McDaniel.
+
+required=GNUmake
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+
+cat > Makefile.am <<'END'
+EXTRA_DIST = *.foo $(srcdir)/*.foo $(builddir)/*.bar $(srcdir)/*.bar
+
+.PHONY: test
+test: distdir
+       ls -l $(srcdir) $(builddir) $(distdir)
+       diff $(srcdir)/a.foo $(distdir)/a.foo
+       diff $(srcdir)/b.bar $(distdir)/b.bar
+       diff $(builddir)/c.foo $(distdir)/c.foo
+       diff $(builddir)/d.bar $(distdir)/d.bar
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+echo aaa > a.foo
+echo bbb > b.bar
+mkdir build
+echo ccc > build/c.foo
+echo ddd > build/d.bar
+
+cd build
+../configure
+$MAKE test
diff --git a/t/extra2.sh b/t/extra2.sh
new file mode 100755 (executable)
index 0000000..30eaeed
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure EXTRA_foo_SOURCES not defined unnecessarily.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep EXTRA_foo_SOURCES Makefile.in && Exit 1
+Exit 0
diff --git a/t/extra3.sh b/t/extra3.sh
new file mode 100755 (executable)
index 0000000..4065801
--- /dev/null
@@ -0,0 +1,28 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure EXTRA_DATA not required.
+
+. ./defs || Exit 1
+
+echo 'AC_SUBST(CODICIL)' >> configure.ac
+
+cat > Makefile.am << 'END'
+sysconf_DATA = @CODICIL@
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/extra4.sh b/t/extra4.sh
new file mode 100755 (executable)
index 0000000..5b31b63
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure EXTRA_DATA can be specified.
+
+. ./defs || Exit 1
+
+echo 'AC_SUBST(CODICIL)' >> configure.ac
+
+cat > Makefile.am << 'END'
+sysconf_DATA = @CODICIL@
+EXTRA_DATA = codicil.txt
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/extra5.sh b/t/extra5.sh
new file mode 100755 (executable)
index 0000000..7fdd983
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure EXTRA_DIST can contain a directory from $buildir.
+# From Dean Povey.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+EXTRA_DIST=foo
+
+foo:
+       mkdir foo
+       touch foo/bar
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+mkdir build
+cd build
+../configure
+$MAKE distdir
diff --git a/t/extra6.sh b/t/extra6.sh
new file mode 100755 (executable)
index 0000000..6b51211
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure EXTRA_DIST can contain a directory or
+# a subdirectory, in $(builddir) or $(srcdir).
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+EXTRA_DIST=foo/bar baz foo2/bar2 baz2
+
+check: distdir
+       test -f $(distdir)/foo/bar/baz
+       test -f $(distdir)/baz/foo
+       test -f $(distdir)/foo2/bar2/baz2
+       test -f $(distdir)/baz2/foo2
+END
+
+# Create some files in $(srcdir)
+mkdir foo
+mkdir foo/bar
+touch foo/bar/baz
+mkdir baz
+touch baz/foo
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+mkdir build
+cd build
+../configure
+
+# Create some files in $(builddir)
+mkdir foo2
+mkdir foo2/bar2
+touch foo2/bar2/baz2
+mkdir baz2
+touch baz2/foo2
+
+$MAKE check
diff --git a/t/extra7.sh b/t/extra7.sh
new file mode 100755 (executable)
index 0000000..4ad7789
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure that when distdir is invoked in a VPATH
+# configuration and has to distribute directory X, it actually merge
+# $(srcdir)/X and ./X, with the files from the later overriding the
+# files from the former.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+EXTRA_DIST=foo/bar baz
+
+check: distdir
+       test -f $(distdir)/foo/bar/baz
+       test -f $(distdir)/foo/bar/baz2
+       test -f $(distdir)/baz/foo
+       test -f $(distdir)/baz/foo2
+       grep source $(distdir)/foo/bar/baz
+       grep build $(distdir)/foo/bar/baz2
+       grep source $(distdir)/baz/foo
+       grep build $(distdir)/baz/foo2
+END
+
+# Create some files in $(srcdir)
+mkdir foo
+mkdir foo/bar
+echo source > foo/bar/baz
+echo source > foo/bar/baz2
+mkdir baz
+echo source > baz/foo
+echo source > baz/foo2
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+mkdir build
+cd build
+../configure
+
+# Create some files in $(builddir) that will override part of the
+# files if $(srcdir) when the distribution is made.
+mkdir foo
+mkdir foo/bar
+echo build > foo/bar/baz2
+mkdir baz
+echo build > baz/foo2
+
+$MAKE check
diff --git a/t/extra8.sh b/t/extra8.sh
new file mode 100755 (executable)
index 0000000..9eef189
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure defining bin_PROGRAMS in terms of EXTRA_PROGRAMS works,
+# and that referring to the same program with inconsistent addition
+# of $(EXEEXT) works, too.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+cat >Makefile.am <<'END'
+EXTRA_PROGRAMS = foo bar
+bin_PROGRAMS = $(EXTRA_PROGRAMS) baz
+noinst_PROGRAMS = baz$(EXEEXT)
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/extra9.sh b/t/extra9.sh
new file mode 100755 (executable)
index 0000000..b5a6007
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure we warn about substitutions in bin_PROGRAMS if EXTRA_PROGRAMS
+# are missing; but only if the former is not AC_SUBSTed itself
+# (lib_LIBRARIES is in the same boat here).
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_SUBST([lib_LIBRARIES])
+AC_SUBST([bins])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = @bins@
+END
+
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'bin_PROGRAMS.*contains configure substitution' stderr
+grep 'lib_LIBRARIES.*contains configure substitution' stderr && Exit 1
+
+Exit 0
diff --git a/t/extradep.sh b/t/extradep.sh
new file mode 100755 (executable)
index 0000000..77b806a
--- /dev/null
@@ -0,0 +1,107 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test EXTRA_*_DEPENDENCIES.  See extradep2 for libtool variant.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_SUBST([deps], [bardep])
+AM_CONDITIONAL([COND], [test -n "$cond"])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libfoo.a
+EXTRA_libfoo_a_DEPENDENCIES = libfoodep
+libfoodep:
+       @echo making $@
+       @: > $@
+CLEANFILES = libfoodep
+
+bin_PROGRAMS = foo bar
+EXTRA_foo_DEPENDENCIES = foodep
+if COND
+EXTRA_foo_DEPENDENCIES += foodep2
+endif
+bar_LDADD = libfoo.a
+EXTRA_bar_DEPENDENCIES = $(deps)
+
+EXTRA_DIST = foodep bardep
+
+.PHONY: bar-has-been-updated
+bar-has-been-updated:
+       stat older bar$(EXEEXT) libfoo.a || : For debugging.
+       test `ls -t bar$(EXEEXT) older | sed q` = bar$(EXEEXT)
+END
+
+cat >libfoo.c <<'END'
+int libfoo () { return 0; }
+END
+
+cat >foo.c <<'END'
+int main () { return 0; }
+END
+
+cat >bar.c <<'END'
+extern int libfoo ();
+int main () { return libfoo (); }
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure cond=yes
+
+# Hypotheses:
+#  - EXTRA_*_DEPENDENCIES are honored.
+#  - Conditionals and substitutions are honored.
+#  - *_DEPENDENCIES are not overwritten by their EXTRA_* counterparts.
+
+: >foodep
+: >foodep2
+: >bardep
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'making libfoodep' stdout
+
+rm -f foodep
+$MAKE && Exit 1
+: >foodep
+
+rm -f foodep2
+$MAKE && Exit 1
+: >foodep2
+
+rm -f bardep
+$MAKE && Exit 1
+: >bardep
+
+$MAKE
+: > older
+$sleep
+touch libfoo.a
+$MAKE
+$MAKE bar-has-been-updated
+
+$MAKE distcheck
+
+:
diff --git a/t/extradep2.sh b/t/extradep2.sh
new file mode 100755 (executable)
index 0000000..91722bd
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test EXTRA_*_DEPENDENCIES, libtool version; see extradep.test.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_SUBST([deps], [bardep])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LTLIBRARIES = libfoo.la
+EXTRA_libfoo_la_DEPENDENCIES = libfoodep
+libfoodep:
+       @echo making $@
+       @: > $@
+CLEANFILES = libfoodep
+
+bin_PROGRAMS = bar
+bar_LDADD = libfoo.la
+EXTRA_bar_DEPENDENCIES = $(deps)
+
+EXTRA_DIST = bardep
+
+.PHONY: bar-has-been-updated
+bar-has-been-updated:
+       stat older bar$(EXEEXT) libfoo.la || : For debugging.
+       test `ls -t bar$(EXEEXT) older | sed q` = bar$(EXEEXT)
+END
+
+cat >libfoo.c <<'END'
+int libfoo () { return 0; }
+END
+
+cat >bar.c <<'END'
+extern int libfoo ();
+int main () { return libfoo (); }
+END
+
+libtoolize
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure
+
+# Hypothesis: EXTRA_*_DEPENDENCIES are honored.
+
+: >foodep
+: >foodep2
+: >bardep
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'making libfoodep' stdout
+
+rm -f bardep
+$MAKE && Exit 1
+: >bardep
+
+$MAKE
+: > older
+$sleep
+touch libfoo.la
+$MAKE
+$MAKE bar-has-been-updated
+
+$MAKE distcheck
+
+:
diff --git a/t/f90only.sh b/t/f90only.sh
new file mode 100755 (executable)
index 0000000..a65a91e
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure programs with only Fortran 90 source are handled properly.
+# (copied from fonly.test) Mike Nolta <mrnolta@princeton.edu>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_FC
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.f90
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'zardoz.f90' Makefile.in
diff --git a/t/flavor.sh b/t/flavor.sh
new file mode 100755 (executable)
index 0000000..6a1fddb
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# 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
+
+cat >> configure.ac << 'END'
+AM_MAINTAINER_MODE
+AC_OUTPUT
+END
+
+: > Makefile.am
+: > NEWS
+: > README
+: > AUTHORS
+: > ChangeLog
+: > THANKS
+
+$ACLOCAL
+$AUTOCONF
+# Order flavors so that all needed files are installed early.
+for flavor in --gnits --gnu --foreign --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
+
+# Cygnus mode is deprecated now, and must be handled separately.
+$AUTOMAKE --cygnus -Wno-obsolete
+./configure --enable-maintainer-mode
+grep " --cygnus" Makefile
+$MAKE
+# Two code paths in configure.am:
+# - either a file in $(am__configure_deps) has been updated ...
+$sleep
+touch aclocal.m4
+$MAKE
+grep " --cygnus" Makefile
+# - ... or not; i.e., Makefile.am or an included file has.
+$sleep
+touch Makefile.am
+$MAKE
+grep " --cygnus" Makefile
+
+:
diff --git a/t/flibs.sh b/t/flibs.sh
new file mode 100755 (executable)
index 0000000..4f5701b
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'AC_F77_LIBRARY_LDFLAGS' works properly.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_F77
+AC_F77_LIBRARY_LDFLAGS
+END
+
+# Tue Aug 11 09:50:48 1998  Matthew D. Langston  <langston@SLAC.Stanford.EDU>
+#
+# This test currently fails with automake v. 1.3 since automake assumes
+# that elements of 'bin_PROGRAMS' (e.g. zardoz) without a corresponding
+# '_SOURCES' (e.g. zardoz_SOURCES) should be compiled from 'zardoz.c'
+# whether or not 'zardoz.c' actually exists.  For example, even if the
+# file 'zardoz.c' doesn't exist but the file 'zardoz.f' does exist, this
+# tests would still fail.
+#
+# Therefore, for now I have put in the line 'zardoz_SOURCES = zardoz.f'
+# (see below) so that automake's top-level 'make check' won't fail, but
+# this line should be removed once automake handles this situation
+# correctly.
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.f
+zardoz_LDADD = @FLIBS@
+END
+
+: > zardoz.f
+: > config.guess
+: > config.sub
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '@FLIBS@' Makefile.in
diff --git a/t/fn99.sh b/t/fn99.sh
new file mode 100755 (executable)
index 0000000..900b36b
--- /dev/null
+++ b/t/fn99.sh
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check the filename-length-max=99 option.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat >Makefile.am <<'END'
+AUTOMAKE_OPTIONS = filename-length-max=99
+EXTRA_DIST = 12345678
+END
+
+(for i in 1 2 3 4 5 6 7 8 9; do
+  mkdir -p 12345678 && cd 12345678 && touch x || Exit 1
+done) || skip_ "failed to create deep directory hierarchy"
+
+# AIX 5.3 'cp -R' is too buggy for 'make dist'.
+cp -R 12345678 t \
+  || skip_ "'cp -R' failed to copy deep directory hierarchy"
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE distcheck
+
+(for i in 1 2 3 4 5 6 7 8 9 10 11; do
+  mkdir -p 12345678 && cd 12345678 && touch x || Exit 1
+done) || skip_ "failed to create deeper directory hierarchy"
+
+$MAKE dist 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'filenames are too long' stderr
+test 2 = `grep 12345678 stderr | wc -l`
+
+:
diff --git a/t/fn99subdir.sh b/t/fn99subdir.sh
new file mode 100755 (executable)
index 0000000..beb0261
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# PR 507: Check the filename-length-max=99 option
+# in conjunction with AC_CONFIG_SUBDIRS.
+
+. ./defs || Exit 1
+
+# The name is so that 99 is exactly hit (including final \0).
+subdirname='cnfsubdir'
+
+cat >>configure.ac <<END
+AC_CONFIG_SUBDIRS([$subdirname])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<END
+AUTOMAKE_OPTIONS = filename-length-max=99
+SUBDIRS = $subdirname
+END
+
+mkdir $subdirname
+
+cat >> $subdirname/configure.ac <<EOF
+AC_INIT([$subdirname], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+EOF
+
+cat >$subdirname/Makefile.am <<'END'
+AUTOMAKE_OPTIONS = filename-length-max=99
+EXTRA_DIST = 12345678
+END
+
+(cd $subdirname || Exit 1
+for i in 1 2 3 4 5 6 7 8; do
+  mkdir -p 12345678 && cd 12345678 && touch x || Exit 1
+done) || skip_ "failed to create deep directory hierarchy"
+
+# AIX 5.3 'cp -R' is too buggy for 'make dist'.
+cp -R $subdirname t \
+  || skip_ "'cp -R' failed to copy deep directory hierarchy"
+
+cd $subdirname
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+cd ..
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE distcheck
+
+(cd $subdirname || Exit 1
+for i in 1 2 3 4 5 6 7 8 9; do
+  mkdir -p 12345678 && cd 12345678 && touch x || Exit 1
+done) || skip_ "failed to create deeper directory hierarchy"
+
+$MAKE dist 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'filenames are too long' stderr
+test 1 = `grep 12345678 stderr | wc -l`
+
+:
diff --git a/t/fnoc.sh b/t/fnoc.sh
new file mode 100755 (executable)
index 0000000..fbd2135
--- /dev/null
+++ b/t/fnoc.sh
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that pure Fortran 77 sources don't include
+# C-specific code.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_F77
+END
+
+cat > Makefile.am << 'END'
+sbin_PROGRAMS = anonymous
+anonymous_SOURCES = doe.f jane.f
+END
+
+: > doe.f
+: > jane.f
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '[^F]CC' Makefile.in | grep -v MKDEP && Exit 1
+Exit 0
diff --git a/t/fo.sh b/t/fo.sh
new file mode 100755 (executable)
index 0000000..50b4f4a
--- /dev/null
+++ b/t/fo.sh
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Fortran 77 files are rewritten to ".o" and not just "o".
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_F77
+END
+
+cat > Makefile.am << 'END'
+sbin_PROGRAMS = anonymous
+anonymous_SOURCES = doe.f
+END
+
+: > doe.f
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP 'doe.$(OBJEXT)' Makefile.in
diff --git a/t/fonly.sh b/t/fonly.sh
new file mode 100755 (executable)
index 0000000..c3ae614
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure programs with only Fortran 77 source are handled properly.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_F77
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.f
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'zardoz.f' Makefile.in
diff --git a/t/forcemiss.sh b/t/forcemiss.sh
new file mode 100755 (executable)
index 0000000..d7d0800
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that 'automake --force-missing' works.
+
+. ./defs || Exit 1
+
+rm -f install-sh
+
+echo zot > install-sh
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE --add-missing --force-missing
+
+ls -l install-sh
+test -f install-sh
+grep zot install-sh && Exit 1
+
+:
diff --git a/t/forcemiss2.sh b/t/forcemiss2.sh
new file mode 100755 (executable)
index 0000000..3c75722
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that 'automake --force-missing' works, even with
+# symlinked files.
+
+. ./defs || Exit 1
+
+rm -f install-sh
+
+echo zot > foo
+cp foo foo2
+
+ln -s foo2 install-sh || skip_ "cannot create symlinks to files"
+
+: > Makefile.am
+
+$ACLOCAL
+ls -l install-sh
+$AUTOMAKE --add-missing --force-missing
+ls -l install-sh
+
+test -f install-sh
+grep zot install-sh && Exit 1
+diff foo foo2
+
+:
diff --git a/t/fort1.sh b/t/fort1.sh
new file mode 100755 (executable)
index 0000000..6bf58fe
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that Automake suggests using AC_PROG_F77/FC if Fortran sources
+# are used.
+
+. ./defs || Exit 1
+
+cat >Makefile.am <<END
+bin_PROGRAMS = hello
+hello_SOURCES = hello.f foo.f95
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep AC_PROG_F77 stderr
+grep AC_PROG_FC stderr
diff --git a/t/fort2.sh b/t/fort2.sh
new file mode 100755 (executable)
index 0000000..d345592
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that AC_FC_SRCEXT(f9x) works as intended:
+# - $(FCFLAGS_f) will be used
+
+# Cf. fort1.test and link_f90_only.test.
+
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'END'
+AC_PROG_FC
+AC_FC_SRCEXT([f90])
+AC_FC_SRCEXT([f95])
+AC_FC_SRCEXT([f03])
+AC_FC_SRCEXT([f08])
+AC_FC_SRCEXT([blabla])
+END
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = hello goodbye
+hello_SOURCES = hello.f90 foo.f95 sub/bar.f95 hi.f03 sub/howdy.f03 greets.f08 sub/bonjour.f08
+goodbye_SOURCES = bye.f95 sub/baz.f90
+goodbye_FCFLAGS =
+END
+
+$ACLOCAL
+$AUTOMAKE
+# The following tests aren't fool-proof, but they don't
+# need a Fortran compiler.
+grep '.\$(LINK)'       Makefile.in && Exit 1
+grep '.\$(FCLINK)'     Makefile.in
+grep '.\$(FCCOMPILE)'  Makefile.in > stdout
+cat stdout
+grep -v '\$(FCFLAGS_f' stdout && Exit 1
+grep '.\$(FC.*\$(FCFLAGS_blabla' Makefile.in && Exit 1
+# Notice the TAB:
+grep '^[       ].*\$(FC.*\$(FCFLAGS_f90).*\.f90' Makefile.in
+grep '^[       ].*\$(FC.*\$(FCFLAGS_f95).*\.f95' Makefile.in
+grep '^[       ].*\$(FC.*\$(FCFLAGS_f03).*\.f03' Makefile.in
+grep '^[       ].*\$(FC.*\$(FCFLAGS_f08).*\.f08' Makefile.in
+grep '^[       ].*\$(FC.*\$(FCFLAGS_f90).*\.f95' Makefile.in && Exit 1
+grep '^[       ].*\$(FC.*\$(FCFLAGS_f95).*\.f90' Makefile.in && Exit 1
+grep '^[       ].*\$(FC.*\$(FCFLAGS_f90).*\.f03' Makefile.in && Exit 1
+grep '^[       ].*\$(FC.*\$(FCFLAGS_f08).*\.f90' Makefile.in && Exit 1
+
+:
diff --git a/t/fort4.sh b/t/fort4.sh
new file mode 100755 (executable)
index 0000000..a23c9bd
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test mixing Fortran 77 and Fortran (FC).
+
+# For now, require the GNU compilers (to avoid some Libtool/Autoconf
+# issues).
+required='g77 gfortran'
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >hello.f <<'END'
+      program hello
+      call foo
+      call bar
+      stop
+      end
+END
+
+cat >bye.f90 <<'END'
+program goodbye
+  call baz
+  stop
+end
+END
+
+cat >foo.f90 <<'END'
+      subroutine foo
+      return
+      end
+END
+
+sed s,foo,bar, foo.f90 > sub/bar.f90
+sed s,foo,baz, foo.f90 > sub/baz.f
+
+cat >>configure.ac <<'END'
+AC_PROG_F77
+AC_PROG_FC
+AC_FC_SRCEXT([f90], [],
+  [AC_MSG_FAILURE([$FC compiler cannot create executables], 77)])
+AC_FC_LIBRARY_LDFLAGS
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = hello goodbye
+hello_SOURCES = hello.f foo.f90 sub/bar.f90
+goodbye_SOURCES = bye.f90 sub/baz.f
+goodbye_FCFLAGS =
+LDADD = $(FCLIBS)
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+# The Fortran 77 linker should be preferred:
+grep '.\$(FCLINK)' Makefile.in && Exit 1
+
+$AUTOCONF
+# ./configure may exit with status 77 if no compiler is found,
+# or if the compiler cannot compile Fortran 90 files).
+./configure
+$MAKE
+subobjs=`echo sub/*.o sub/*.obj`
+test "$subobjs" = 'sub/*.o sub/*.obj'
+$MAKE distcheck
+
+$MAKE distclean
+echo 'AUTOMAKE_OPTIONS = subdir-objects' >> Makefile.am
+$AUTOMAKE
+./configure
+$MAKE
+test ! -f bar.o
+test ! -f bar.obj
+test ! -f baz.o
+test ! -f baz.obj
+test ! -f goodbye-baz.o
+test ! -f goodbye-baz.obj
+$MAKE distcheck
diff --git a/t/fort5.sh b/t/fort5.sh
new file mode 100755 (executable)
index 0000000..4614b66
--- /dev/null
@@ -0,0 +1,105 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test mixing Fortran 77 and Fortran (FC), libtool version.
+
+# For now, require the GNU compilers (to avoid some Libtool/Autoconf
+# issues).
+required='libtoolize g77 gfortran'
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >hello.f <<'END'
+      program hello
+      call foo
+      call bar
+      call goodbye
+      stop
+      end
+END
+
+cat >bye.f90 <<'END'
+subroutine goodbye
+  call baz
+  return
+end
+END
+
+cat >foo.f90 <<'END'
+      subroutine foo
+      return
+      end
+END
+
+sed s,foo,bar, foo.f90 > sub/bar.f90
+sed s,foo,baz, foo.f90 > sub/baz.f
+
+cat >>configure.ac <<'END'
+AC_PROG_F77
+AC_PROG_FC
+AC_FC_SRCEXT([f90], [],
+  [AC_MSG_FAILURE([$FC compiler cannot create executables], 77)])
+AC_FC_LIBRARY_LDFLAGS
+AM_PROG_AR
+LT_PREREQ([2.0])
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = hello
+lib_LTLIBRARIES = libhello.la
+noinst_LTLIBRARIES = libgoodbye.la
+hello_SOURCES = hello.f
+hello_LDADD = libhello.la
+libhello_la_SOURCES = foo.f90 sub/bar.f90
+libhello_la_LIBADD = libgoodbye.la
+libgoodbye_la_SOURCES = bye.f90 sub/baz.f
+libgoodbye_la_FCFLAGS =
+LDADD = $(FCLIBS)
+END
+
+libtoolize --force
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+# This test requires Libtool >= 2.0.  Earlier Libtool does not
+# have the LT_PREREQ macro to cause autoconf failure.
+grep LT_PREREQ configure && skip_ "libtool is too old (probably < 2.0)"
+
+# Ensure we use --tag for f90, too.
+grep " --tag=FC" Makefile.in
+
+# ./configure may exit with status 77 if no compiler is found,
+# or if the compiler cannot compile Fortran 90 files).
+./configure
+$MAKE
+subobjs=`echo sub/*.lo`
+test "$subobjs" = 'sub/*.lo'
+$MAKE distcheck
+
+# The following will be fixed in a later patch:
+$MAKE distclean
+echo 'AUTOMAKE_OPTIONS = subdir-objects' >> Makefile.am
+$AUTOMAKE -a
+./configure
+$MAKE
+test ! -f bar.lo
+test ! -f baz.lo
+test ! -f libgoodbye_la-baz.lo
+$MAKE distcheck
diff --git a/t/fortdep.sh b/t/fortdep.sh
new file mode 100755 (executable)
index 0000000..d10644d
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure dependency tracking doesn't interfere with Fortran.
+# For PR 75.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_SRCDIR([foo.f])
+AC_PROG_F77
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS=foo
+foo_SOURCES=foo.f
+END
+
+: > foo.f
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'foo\.Po' Makefile.in && Exit 1
+Exit 0
diff --git a/t/gcj.sh b/t/gcj.sh
new file mode 100755 (executable)
index 0000000..b510f1c
--- /dev/null
+++ b/t/gcj.sh
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of compiled java.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+_AM_DEPENDENCIES([GCJ])
+AC_SUBST([GCJ])
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = convert
+convert_SOURCES = x/y/convert.java
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^x/y/convert' Makefile.in
+
+:
diff --git a/t/gcj2.sh b/t/gcj2.sh
new file mode 100755 (executable)
index 0000000..2c4d60f
--- /dev/null
+++ b/t/gcj2.sh
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure '..' invalid in subdir .o's.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+_AM_DEPENDENCIES(GCJ)
+AC_SUBST(GCJ)
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = convert
+convert_SOURCES = x/../convert.java
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile.am:.*\.\.' stderr
diff --git a/t/gcj3.sh b/t/gcj3.sh
new file mode 100755 (executable)
index 0000000..a8ec120
--- /dev/null
+++ b/t/gcj3.sh
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure dependency tracking works for java.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+_AM_DEPENDENCIES([GCJ])
+AC_SUBST([GCJ])
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = convert
+convert_SOURCES = x/y/convert.java
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+num=`grep depcomp Makefile.in | wc -l`
+test $num -gt 1
+
+:
diff --git a/t/gcj4.sh b/t/gcj4.sh
new file mode 100755 (executable)
index 0000000..a860f89
--- /dev/null
+++ b/t/gcj4.sh
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure dependency tracking works for Java.
+
+required=gcj
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_GCJ
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = convert
+convert_SOURCES = convert.java
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure >stdout
+cat stdout
+
+# Configure must be checking the dependency style of gcj ...
+grep 'dependency style of gcj' stdout >filt
+cat filt
+
+# ... only once.
+test `wc -l < filt` = 1
+
+# Accept any outcome but 'none'
+# (at the time of writing it should be gcc or gcc3).
+grep -v none filt
+
+:
diff --git a/t/gcj5.sh b/t/gcj5.sh
new file mode 100755 (executable)
index 0000000..f3c218f
--- /dev/null
+++ b/t/gcj5.sh
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake suggests AM_PROG_GCJ when GCJ is needed.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+_AM_DEPENDENCIES(GCJ)
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = convert
+convert_SOURCES = convert.java
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep AM_PROG_GCJ stderr
diff --git a/t/gcj6.sh b/t/gcj6.sh
new file mode 100755 (executable)
index 0000000..3fe4a31
--- /dev/null
+++ b/t/gcj6.sh
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# AM_PROG_GCJ should cause OBJEXT and EXEEXT to be set.
+
+required='gcj'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_GCJ
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = test
+test_SOURCES = Test.java
+test_LDFLAGS = --main=Test
+END
+
+cat >Test.java << 'END'
+public class Test {
+    public static void main(String[] argv) {
+        System.out.println("Hello, automake!");
+    }
+}
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+
+# These fail without e.g., AC_PROG_CC.
+$MAKE
+grep "OBJEXT = " Makefile
+grep "EXEEXT = " Makefile
+
+:
diff --git a/t/get-sysconf.sh b/t/get-sysconf.sh
new file mode 100755 (executable)
index 0000000..ac09a63
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Dummy test case, aimed at reporting useful system information in the
+# final 'test-suite.log'.  This way, if a user experiences a failure in
+# the Automake test suite and then only sends us the 'test-suite.log',
+# we won't have to ask him for more information to start analyzing the
+# failure (that had happened too many times in the past!).
+
+. ./defs || Exit 1
+
+st=0
+if test -d "$am_top_srcdir"/.git; then
+  # We are running from a git checkout.
+  (cd "$am_top_srcdir" && git log -1) || st=1
+elif test -f "$am_top_srcdir"/ChangeLog; then
+  # We are probably running from a distribution tarball.
+  awk '
+    BEGIN { first = 1 }
+    (first == 1) { print; first = 0; next; }
+    /^[^\t]/ { exit(0); }
+    { print }
+  ' "$am_top_srcdir"/ChangeLog || st=1
+else
+  # Some non-common but possibly valid setup (see for example the Homebrew
+  # problem reported in automake bug#10866); so just give an harmless
+  # warning instead of failing.
+  warn_ "no .git directory nor ChangeLog file found, some info won't" \
+        "be available"
+fi
+$PERL -V || st=1
+# It's OK for the user not to have the TAP::Parser module; this can
+# happen with older perl installation, or on MinGW/MSYS.
+$PERL -e 'use TAP::Parser; print $TAP::Parser::VERSION, "\n"' || :
+
+cat "$am_top_builddir/config.log" || st=1
+cat "$am_top_builddir/t/wrap/aclocal-$APIVERSION" || st=1
+cat "$am_top_builddir/t/wrap/automake-$APIVERSION" || st=1
+
+if test $st -eq 0; then
+  # This test SKIPs, so that all the information it has gathered and
+  # printed will get unconditionally copied into the 'test-suite.log'
+  # file.
+  Exit 77
+fi
+
+# Some unexpected error occurred; this must be reported as an hard
+# error by the testsuite driver.
+Exit 99
diff --git a/t/gettext-macros.sh b/t/gettext-macros.sh
new file mode 100755 (executable)
index 0000000..416a8e5
--- /dev/null
@@ -0,0 +1,105 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Try to find the gettext '.m4' files and make them easily accessed
+# to the test cases requiring them.
+# See also automake bug#9807.
+
+. ./defs || Exit 1
+
+extract_program_version ()
+{
+  "$1" --version | sed 1q | $PERL -ne '/(\d(?:\.\d+)+)/ and print "$1\n"'
+}
+
+echo "# Automatically generated by $me." > get.sh
+echo : >> get.sh
+
+# The 'gettextize' and 'autopoint' scripts will look into Makefile.am.
+echo ACLOCAL_AMFLAGS = -I m4 > Makefile.am
+
+# Prefer autopoint to gettextize, since the more modern versions of the
+# latter might unconditionally require user interaction to complete;
+# yes, this means confirmation from /dev/tty (!) -- see:
+#  <http://lists.gnu.org/archive/html/bug-gettext/2011-12/msg00000.html>
+# Since this "forced interaction" behaviour of gettextize wasn't present
+# before the introduction of autopoint, we should be able to safely
+# fall back to calling gettextize non-interactively if autopoint is not
+# present.
+if autopoint --version; then
+  am_gettextize_command=autopoint
+else
+  am_gettextize_command=gettextize
+fi
+
+# We will need to specify the correct autopoint (or gettextize) version
+# in the AM_GNU_GETTEXT_VERSION call in configure.ac if we want autopoint
+# (or gettextize) to setup the correct infrastructure -- in particular,
+# for what concerns us, to bring in all the required .m4 files.
+autopoint_version=`extract_program_version $am_gettextize_command` \
+  && test -n "$autopoint_version" \
+  || autopoint_version=0.10.35
+
+cat > configure.ac <<END
+AC_INIT([foo], [1.0])
+AC_PROG_CC
+# Both required by autopoint.
+AM_GNU_GETTEXT
+AM_GNU_GETTEXT_VERSION([$autopoint_version])
+END
+
+if $am_gettextize_command --force && test -f m4/gettext.m4; then
+  echo "ACLOCAL_PATH='`pwd`/m4':\$ACLOCAL_PATH" >> get.sh
+  echo "export ACLOCAL_PATH" >> get.sh
+else
+  # Older versions of gettext might not have a gettextize program
+  # available, but this doesn't mean the user hasn't made the gettext
+  # macros available, e.g., by properly setting ACLOCAL_PATH.
+  rm -rf m4
+  mkdir m4
+  # See below for an explanation about the use the of '-Wno-syntax'.
+  if $ACLOCAL -Wno-syntax -I m4 --install && test -f m4/gettext.m4; then
+    : # Gettext macros already accessible by default.
+  else
+    echo "skip_all_ \"couldn't find or get gettext macros\"" >> get.sh
+  fi
+fi
+
+. ./get.sh
+
+cat >> get.sh <<'END'
+# Even recent versions of gettext used the now-obsolete 'AM_PROG_MKDIR_P'
+# m4 macro.  So we need the following to avoid spurious errors.
+ACLOCAL="$ACLOCAL -Wno-obsolete"
+AUTOMAKE="$AUTOMAKE -Wno-obsolete"
+END
+
+$ACLOCAL --force -I m4 || cat >> get.sh <<'END'
+# We need to use '-Wno-syntax', since we do not want our test suite
+# to fail merely because some third-party '.m4' file is underquoted.
+ACLOCAL="$ACLOCAL -Wno-syntax"
+END
+
+# Remove any Makefile.in possibly created by gettextize/autopoint, to
+# avoid spurious maintainer-check failures.
+rm -f `find . -name Makefile.in`
+
+# The file gettextize or autopoint might have copied in the 'm4'
+# subdirectory of the test directory are going to be needed by
+# other tests, so we must not remove the test directory.
+keep_testdirs=yes
+
+:
diff --git a/t/gettext.sh b/t/gettext.sh
new file mode 100755 (executable)
index 0000000..a9181e4
--- /dev/null
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check gettext support.
+
+required='gettext'
+. ./defs || Exit 1
+
+cat >>configure.ac <<END
+AM_GNU_GETTEXT
+AM_GNU_GETTEXT_VERSION([0.14.3])
+AC_OUTPUT
+END
+
+: >Makefile.am
+mkdir po intl
+
+# config.rpath is required by versions >= 0.14.3.  We try to verify
+# this requirement, but only when we find we have a working and recent
+# gettext installation.
+
+# If aclocal fails here, it may be that gettext is too old to
+# provide AM_GNU_GETTEXT_VERSION.
+if $ACLOCAL; then
+
+  # autopoint will fail if it's from an older version.
+  # If gettext is too old to provide autopoint, this will
+  # fail as well, so we're safe here.
+  if autopoint -n; then
+    AUTOMAKE_fails --add-missing
+    grep 'required.*config.rpath' stderr
+  fi
+fi
+
+: >config.rpath
+sed '/AM_GNU_GETTEXT_VERSION/d' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+$ACLOCAL
+
+# po/ and intl/ are required.
+
+AUTOMAKE_fails --add-missing
+grep 'AM_GNU_GETTEXT.*SUBDIRS' stderr
+
+echo 'SUBDIRS = po' >Makefile.am
+AUTOMAKE_fails --add-missing
+grep 'AM_GNU_GETTEXT.*intl' stderr
+
+echo 'SUBDIRS = intl' >Makefile.am
+AUTOMAKE_fails --add-missing
+grep 'AM_GNU_GETTEXT.*po' stderr
+
+# Ok.
+
+echo 'SUBDIRS = po intl' >Makefile.am
+$AUTOMAKE --add-missing
+
+# Make sure distcheck runs './configure --with-included-gettext'.
+grep 'with-included-gettext' Makefile.in
+
+# 'SUBDIRS = po intl' isn't required if po/ doesn't exist.
+# PR/381.
+
+rmdir po
+mkdir sub
+echo 'SUBDIRS = sub' >Makefile.am
+$AUTOMAKE
+
+# Still, SUBDIRS must be defined.
+
+: >Makefile.am
+AUTOMAKE_fails --add-missing
+grep 'AM_GNU_GETTEXT.*SUBDIRS' stderr
diff --git a/t/gettext2.sh b/t/gettext2.sh
new file mode 100755 (executable)
index 0000000..8b8a062
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check gettext 'external' support.
+# PR/338, reported by Charles Wilson.
+
+required='gettext'
+. ./defs || Exit 1
+
+cat >>configure.ac <<END
+AM_GNU_GETTEXT([external])
+AC_OUTPUT
+END
+
+: >Makefile.am
+mkdir foo po
+
+$ACLOCAL
+
+# config.rpath is required.
+: >config.rpath
+
+# po/ is required, but intl/ isn't.
+
+AUTOMAKE_fails --add-missing
+grep 'AM_GNU_GETTEXT.*SUBDIRS' stderr
+
+echo 'SUBDIRS = foo' >Makefile.am
+AUTOMAKE_fails --add-missing
+grep 'AM_GNU_GETTEXT.*po' stderr
+
+# Ok.
+
+echo 'SUBDIRS = po' >Makefile.am
+$AUTOMAKE --add-missing
+
+# Don't try running ./configure --with-included-gettext if the
+# user is using AM_GNU_GETTEXT([external]).
+grep 'with-included-gettext' Makefile.in && Exit 1
+
+# intl/ isn't wanted with AM_GNU_GETTEXT([external]).
+
+mkdir intl
+echo 'SUBDIRS = po intl' >Makefile.am
+AUTOMAKE_fails --add-missing
+grep 'intl.*AM_GNU_GETTEXT' stderr
+
+:
diff --git a/t/gettext3.sh b/t/gettext3.sh
new file mode 100755 (executable)
index 0000000..9a39af2
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check gettext 'AM_GNU_GETTEXT_INTL_SUBDIR' support.
+
+required='gettext'
+. ./defs || Exit 1
+
+cat >>configure.ac <<END
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_INTL_SUBDIR
+AC_OUTPUT
+END
+
+echo 'SUBDIRS = po' >Makefile.am
+mkdir po
+
+# If aclocal fails, assume the gettext macros are too old and do not
+# define AM_GNU_GETTEXT_INTL_SUBDIR.
+$ACLOCAL || skip_ "your gettext macros are probably too old"
+
+# config.rpath is required.
+: >config.rpath
+
+# intl/ is required.
+AUTOMAKE_fails --add-missing
+grep 'AM_GNU_GETTEXT.*intl.*SUBDIRS' stderr
+
+mkdir intl
+AUTOMAKE_fails --add-missing
+grep 'AM_GNU_GETTEXT.*intl.*SUBDIRS' stderr
+
+echo 'SUBDIRS = po intl' > Makefile.am
+$AUTOMAKE --add-missing
diff --git a/t/gnits.sh b/t/gnits.sh
new file mode 100755 (executable)
index 0000000..badb8b0
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to ensure --gnits version checking is correct.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [3.5.3.2])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES(Makefile)
+END
+
+cat > Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+# Files required by Gnits.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+: > THANKS
+
+$ACLOCAL
+AUTOMAKE_fails --gnits
+grep 'configure.ac:.*3\.5\.3\.2' stderr
diff --git a/t/gnits2.sh b/t/gnits2.sh
new file mode 100755 (executable)
index 0000000..ef7078c
--- /dev/null
@@ -0,0 +1,114 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to ensure std-options checking is correct.
+
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = gnits
+noinst_PROGRAMS = fubar2
+bin_PROGRAMS = fubar sub/fine
+nobase_bin_PROGRAMS = sub/fubar3
+fubar_SOURCES = fubar.c
+fubar2_SOURCES = fubar.c
+sub_fubar3_SOURCES = fubar.c
+sub_fine_SOURCES = fine.c
+bin_SCRIPTS = sub/scriptok.sh sub/scriptnok.sh
+
+grep-stderr:
+       grep 'pfubar$(EXEEXT) does not support' stderr
+       grep 'pfubar3$(EXEEXT) does not support' stderr
+       grep 'pscriptnok\.sh does not support' stderr
+## Only three failures please.
+       test `grep 'does not support --help' stderr | wc -l` = 3
+       test `grep 'does not support --version' stderr | wc -l` = 3
+
+test-install: install
+       test -f ../inst-dir/bin/pfine$(EXEEXT)
+       test ! -f ../inst-dir/bin/fine$(EXEEXT)
+END
+
+cat > fubar.c <<'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+cat > fine.c << 'END'
+#include <stdio.h>
+int main (void)
+{
+  puts ("Which version? Which usage?");
+  return 0;
+}
+END
+
+mkdir sub
+
+cat >sub/scriptok.sh <<EOF
+#!/bin/sh
+echo "Which version? Which usage?"
+EOF
+
+# Not only does this script not support --help/--version, but
+# it will also hang when run without input.
+cat >sub/scriptnok.sh <<EOF
+#!/bin/sh
+cat
+EOF
+
+chmod +x sub/scriptok.sh
+chmod +x sub/scriptnok.sh
+
+# Files required by Gnits.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+: > THANKS
+
+# The following file should not be distributed.
+# (alpha.test checks the case where it must be distributed.)
+: > README-alpha
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+grep README-alpha Makefile.in && Exit 1
+
+mkdir build
+cd build
+
+# Use --program-prefix to make sure the std-options check honors it.
+../configure "--prefix=`pwd`/../inst-dir" --program-prefix=p
+$MAKE all
+$MAKE test-install
+$MAKE -k installcheck 2>stderr || : # Never trust the exit status of make -k.
+cat stderr >&2
+$MAKE grep-stderr
+
+:
diff --git a/t/gnits3.sh b/t/gnits3.sh
new file mode 100755 (executable)
index 0000000..f479762
--- /dev/null
@@ -0,0 +1,104 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that AM_INSTALLCHECK_STD_OPTIONS_EXEMPT works.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+# We use the same basename for all targets on purpose.  This way
+# we make sure that 'AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = nok'
+# will not match anything containing 'nok'.
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = gnits
+
+nobase_bin_PROGRAMS = nok sub/nok
+nok_SOURCES = nok.c
+sub_nok_SOURCES = nok.c
+
+nobase_bin_SCRIPTS = nok.sh sub/nok.sh
+
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = nok$(EXEEXT) nok.sh
+
+grep-stderr:
+       grep 'sub/pnok$(EXEEXT) does not support' stderr
+       grep 'sub/pnok\.sh does not support' stderr
+## Only two failures please.
+       test `grep 'does not support --help' stderr | wc -l` = 2
+       test `grep 'does not support --version' stderr | wc -l` = 2
+END
+
+cat > nok.c <<'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+mkdir sub
+
+cat >nok.sh <<EOF
+#!/bin/sh
+echo "Which version? Which usage?"
+exit 1
+EOF
+
+cp nok.sh sub/nok.sh
+
+chmod +x nok.sh
+chmod +x sub/nok.sh
+
+# Files required by Gnits.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+: > THANKS
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir build
+cd build
+
+# Use --program-prefix to make sure the std-options check honors it.
+../configure "--prefix=`pwd`/../inst-dir" --program-prefix=p
+$MAKE
+$MAKE install
+$MAKE installcheck && Exit 1
+$MAKE -k installcheck 2>stderr || : # Never trust the exit status of make -k.
+cat stderr >&2
+$MAKE grep-stderr
+
+# Make sure there is no more error when all targets are exempted.
+cd ..
+cat >> Makefile.am <<'END'
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += sub/nok$(EXEEXT) sub/nok.sh
+END
+$AUTOMAKE
+cd build
+./config.status  # Don't rely on the rebuild rules (they need GNU make).
+$MAKE installcheck
+
+:
diff --git a/t/gnumake.sh b/t/gnumake.sh
new file mode 100755 (executable)
index 0000000..b1ea000
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Automake should not assume that make files are called Makefile.
+# Report from Braden McDaniel.
+
+required=GNUmake
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/GNUmakefile])
+AC_OUTPUT
+END
+
+mkdir sub
+
+echo SUBDIRS = sub > Makefile.am
+
+cat > sub/GNUmakefile.am <<'EOF'
+# In this project, the Makefile is an installed data file.
+dist_data_DATA = Makefile
+EOF
+
+echo 'this should not cause any problem' > sub/Makefile
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE distcheck
diff --git a/t/gnuwarn.sh b/t/gnuwarn.sh
new file mode 100755 (executable)
index 0000000..5aac432
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that Automake warns about user variables being overridden.
+
+. ./defs || Exit 1
+
+# We need (almost) complete control over automake options.
+AUTOMAKE="$am_original_AUTOMAKE -Werror"
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+# Needed by --gnu.
+: > NEWS
+: > README
+: > AUTHORS
+: > ChangeLog
+
+cat > Makefile.am << 'END'
+CFLAGS += -I..
+LDFLAGS = -lfoo
+CXXFLAGS = -Wall
+bin_PROGRAMS = bar
+END
+
+$ACLOCAL
+# Don't warn in foreign mode
+$AUTOMAKE --add-missing --foreign
+# Warn in gnu mode
+AUTOMAKE_fails --add-missing --gnu
+grep '^Makefile\.am:1:.*CFLAGS' stderr
+grep '^Makefile\.am:2:.*LDFLAGS' stderr
+# No reason to warn about CXXFLAGS since it's not used.
+grep CXXFLAGS stderr && Exit 1
+# Don't warn if -Wno-gnu.
+$AUTOMAKE --gnu -Wno-gnu
+
+:
diff --git a/t/gnuwarn2.sh b/t/gnuwarn2.sh
new file mode 100755 (executable)
index 0000000..6a68d65
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check diagnostics about no-installman being disallowed in 'gnu'.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([gnuwarn2], [1.0])
+AM_INIT_AUTOMAKE([no-installman])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+# --gnu files
+: > NEWS
+: > README
+: > AUTHORS
+: > ChangeLog
+: > COPYING
+: > INSTALL
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = gnu
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'configure.ac:2:.*no-installman' stderr
diff --git a/t/hdr-vars-defined-once.sh b/t/hdr-vars-defined-once.sh
new file mode 100755 (executable)
index 0000000..1e31cd2
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure header vars defined only once when including.
+# Report from Marcus G. Daniels.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+include Will_Be_Included_In_Makefile
+END
+
+: > Will_Be_Included_In_Makefile
+
+$ACLOCAL
+$AUTOMAKE
+len=`grep '^srcdir' Makefile.in | wc -l`
+test $len -eq 1
+
+# Also make sure include file is distributed.
+sed -n -e '/^DIST_COMMON =.*\\$/ {
+   :loop
+   p
+   n
+   t clear
+   :clear
+   s/\\$/\\/
+   t loop
+   p
+   n
+   }' -e '/^DIST_COMMON =/ p' Makefile.in | grep Will_Be_Included_In_Makefile
+
+:
diff --git a/t/header.sh b/t/header.sh
new file mode 100755 (executable)
index 0000000..dc93ac8
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 68.
+#
+# == Report ==
+#  If an autoconf substitution variable of the form "*_HEADERS" --
+#  for example "MY_HEADERS" -- is used in an "include_" variable
+#  in conjunction with EXTRA_HEADERS, $(MY_HEADERS) gets included
+#  in the HEADERS variable for *all* generated Makefile.ins in the
+#  project.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([MY_HEADERS])
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zoo
+zoo_SOURCES = joe.c
+END
+
+: > joe.c
+: > qq.h
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '[^@]MY_HEADERS' Makefile.in && Exit 1
+Exit 0
diff --git a/t/help-depend.sh b/t/help-depend.sh
new file mode 100755 (executable)
index 0000000..c69d564
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that our private macro 'AM_DEP_TRACK' adds proper text to
+# the configure help screen.
+# Keep this in sync with sister test 'help-depend2.test'
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_DEP_TRACK
+END
+
+$ACLOCAL
+$AUTOCONF
+
+grep_configure_help --enable-dependency-tracking \
+                    ' not reject slow dependency extract'
+
+grep_configure_help --disable-dependency-tracking \
+                    ' speeds up one-time build'
+
+:
diff --git a/t/help-depend2.sh b/t/help-depend2.sh
new file mode 100755 (executable)
index 0000000..58a8342
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that when automake automatically activates support for
+# dependency tracking, it adds proper text to the configure help screen.
+# Keep this in sync with sister test 'help-depend.test'
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+END
+
+$ACLOCAL
+$AUTOCONF
+
+grep_configure_help --enable-dependency-tracking \
+                    ' not reject slow dependency extract'
+
+grep_configure_help --disable-dependency-tracking \
+                    ' speeds up one-time build'
+
+:
diff --git a/t/help-dmalloc.sh b/t/help-dmalloc.sh
new file mode 100755 (executable)
index 0000000..a9ab69f
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that our macro 'AM_WITH_DMALLOC' adds proper text to
+# the configure help screen.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_WITH_DMALLOC
+END
+
+$ACLOCAL
+$AUTOCONF
+
+grep_configure_help --with-dmalloc ' use dmalloc.*http://www\.dmalloc\.com'
+
+:
diff --git a/t/help-init.sh b/t/help-init.sh
new file mode 100755 (executable)
index 0000000..d1cff1c
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that our grand macro 'AM_INIT_AUTOMAKE' add proper text
+# to the configure help screen.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+END
+
+$ACLOCAL
+$AUTOCONF
+
+./configure --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep '^  --program-prefix[= ]' stdout
+grep '^  --program-suffix[= ]' stdout
+grep '^  --program-transform-name[= ]' stdout
+
+:
diff --git a/t/help-lispdir.sh b/t/help-lispdir.sh
new file mode 100755 (executable)
index 0000000..ca1ddfc
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that our macro 'AM_PATH_LISPDIR' adds proper text to
+# the configure help screen.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_PATH_LISPDIR
+END
+
+$ACLOCAL
+$AUTOCONF
+
+./configure --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep_configure_help --with-lispdir ' override.*lisp directory'
+grep_configure_help EMACS          ' [eE]macs editor'
+grep_configure_help EMACSLOADPATH  ' [eE]macs library search path'
+
+:
diff --git a/t/help-multilib.sh b/t/help-multilib.sh
new file mode 100755 (executable)
index 0000000..c2a8d3c
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that our macro 'AM_ENABLE_MULTILIB' adds proper text to
+# the configure help screen.
+# FIXME: the features tested by this script has been moved in contrib.
+# FIXME: We should move this script accordingly.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_ENABLE_MULTILIB
+END
+
+cat "$am_top_srcdir"/contrib/multilib/multi.m4 > aclocal.m4
+$AUTOCONF
+
+grep_configure_help --enable-multilib ' many library versions \(default\)'
+
+:
diff --git a/t/help-python.sh b/t/help-python.sh
new file mode 100755 (executable)
index 0000000..501b545
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that macro 'AM_PATH_PYTHON' adds proper text to the
+# configure help screen.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_PATH_PYTHON
+END
+
+$ACLOCAL
+$AUTOCONF
+
+grep_configure_help PYTHON 'the Python interpreter'
+
+:
diff --git a/t/help-silent.sh b/t/help-silent.sh
new file mode 100755 (executable)
index 0000000..d5fc342
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that our macro 'AM_SILENT_RULES' adds proper text to
+# the configure help screen.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_SILENT_RULES
+END
+
+$ACLOCAL
+
+mv -f configure.ac configure.tmpl
+
+q="[\`'\"]"
+
+for args in '' '([])' '([yes])' '([no])'; do
+  sed "s/AM_SILENT_RULES.*/&$args/" configure.tmpl >configure.ac
+  cat configure.ac
+  $AUTOCONF --force
+  grep_configure_help --enable-silent-rules \
+                      " less verbose build.*\\(undo.*${q}make V=1${q}"
+  grep_configure_help --disable-silent-rules \
+                      " verbose build.*\\(undo.*${q}make V=0${q}"
+done
+
+:
diff --git a/t/help-upc.sh b/t/help-upc.sh
new file mode 100755 (executable)
index 0000000..b81b387
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that our macro 'AM_PROG_UPC' adds proper text to
+# the configure help screen.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_PROG_UPC
+END
+
+$ACLOCAL
+$AUTOCONF
+
+grep_configure_help UPC      '[Uu]nified Parallel C compiler command'
+grep_configure_help UPCFLAGS '[Uu]nified Parallel C compiler flags'
+
+:
diff --git a/t/help.sh b/t/help.sh
new file mode 100755 (executable)
index 0000000..2f7c2d1
--- /dev/null
+++ b/t/help.sh
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure --help and --version work, even when no configure.ac nor
+# configure.in is in the current directory.
+
+. ./defs || Exit 1
+
+# Ensure we run in an empty directory.
+mkdir emptydir
+cd emptydir
+
+# Honour user overrides for $ACLOCAL and $AUTOMAKE, but without
+# adding extra options.
+ACLOCAL=$am_original_ACLOCAL
+AUTOMAKE=$am_original_AUTOMAKE
+
+$ACLOCAL --version
+$ACLOCAL --help
+$AUTOMAKE --version
+$AUTOMAKE --help
+
+# Sanity checks: aclocal and automake cannot work without configure.ac
+# nor configure.in.
+$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$FGREP configure.ac stderr
+$FGREP configure.in stderr
+AUTOMAKE_fails
+$FGREP configure.ac stderr
+$FGREP configure.in stderr
+
+:
diff --git a/t/help2.sh b/t/help2.sh
new file mode 100755 (executable)
index 0000000..0d433f4
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure --help and --version work, even when the current directory
+# contains a broken configure.ac and a broken acinclude.m4.
+. ./defs || Exit 1
+
+# Ensure we run in a new, clean directory.
+mkdir cleandir
+cd cleandir
+
+# Honour user overrides for $ACLOCAL and $AUTOMAKE, but without
+# adding extra options.
+ACLOCAL=$am_original_ACLOCAL
+AUTOMAKE=$am_original_AUTOMAKE
+
+echo '[' > configure.ac
+echo '[' > acinclude.m4
+
+$AUTOMAKE --version
+$AUTOMAKE --help
+$ACLOCAL --version
+$ACLOCAL --help
+
+# Sanity check: aclocal cannot work with broken acinclude.m4.
+$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$FGREP acinclude.m4 stderr
+
+rm -f acinclude.m4
+
+# Sanity checks: aclocal and automake cannot work with broken configure.ac.
+$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$FGREP configure.ac stderr
+AUTOMAKE_fails
+$FGREP configure.ac stderr
+
+:
diff --git a/t/help3.sh b/t/help3.sh
new file mode 100755 (executable)
index 0000000..54e06d5
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure --help and --version takes precedence over other options.
+
+. ./defs || Exit 1
+
+# We must have full control over the content of the current directory.
+mkdir cleandir
+cd cleandir
+
+# Honour user overrides for $ACLOCAL and $AUTOMAKE, but without
+# adding extra options.
+ACLOCAL=$am_original_ACLOCAL
+AUTOMAKE=$am_original_AUTOMAKE
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([.]) dnl prevent automake from looking into '..'
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am <<END
+# So that install-sh will be required.
+pkgdata_DATA =
+END
+
+$ACLOCAL --force --help --output=foo.m4
+test ! -r foo.m4
+$ACLOCAL --output=foo.m4 --version --force
+test ! -r foo.m4
+# Sanity check.
+$ACLOCAL --output=foo.m4 --force
+test -f foo.m4
+
+mv -f foo.m4 aclocal.m4 # autoconf will need aclocal.m4
+
+$AUTOMAKE --add-missing --help --copy
+test ! -r install-sh
+$AUTOMAKE --copy --version --add-mising
+test ! -r install-sh
+# Sanity check.
+$AUTOMAKE --add-missing --copy
+test -f install-sh
+
+:
diff --git a/t/help4.sh b/t/help4.sh
new file mode 100755 (executable)
index 0000000..9747968
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the first among --help and --version to be specified on
+# the command line takes precedence over the following one.
+
+. ./defs || Exit 1
+
+# Ensure we run in an empty directory.
+mkdir emptydir
+cd emptydir
+
+# Honour user overrides for $ACLOCAL and $AUTOMAKE, but without
+# adding extra options.
+ACLOCAL=$am_original_ACLOCAL
+AUTOMAKE=$am_original_AUTOMAKE
+
+escape_dots () { sed 's/\./\\./g'; } # Avoid issues with "\" in backquotes.
+apiversion_rx=`echo "$APIVERSION" | escape_dots`
+
+$ACLOCAL --version --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^aclocal.*$apiversion_rx" stdout
+grep "^Usage" stdout && Exit 1
+
+$ACLOCAL --help --version >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^Usage" stdout
+grep "^aclocal.*$apiversion_rx" stdout && Exit 1
+
+$AUTOMAKE --version --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^automake.*$apiversion_rx" stdout
+grep "^Usage" stdout && Exit 1
+
+$AUTOMAKE --help --version >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^Usage" stdout
+grep "^automake.*$apiversion_rx" stdout && Exit 1
+
+:
diff --git a/t/hfs.sh b/t/hfs.sh
new file mode 100755 (executable)
index 0000000..6000040
--- /dev/null
+++ b/t/hfs.sh
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+# Automake should not think that ChangeLog == CHANGELOG on
+# case-preserving case-insensitive filesystems (such as HFS+, on
+# Darwin).
+# Report from Peter O'Gorman.
+
+. ./defs || Exit 1
+echo AC_OUTPUT >>configure.ac
+
+: >CHANGELOG
+echo 'EXTRA_DIST = CHANGELOG' >Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE distcheck
diff --git a/t/implicit.sh b/t/implicit.sh
new file mode 100755 (executable)
index 0000000..a9a068b
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure implicit .o's are listed as appropriate.  Report
+# from Henrik Frystyk Nielsen.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = libapp_1
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^libapp_1_OBJECTS' Makefile.in | $FGREP '.$(OBJEXT)'
+
+:
diff --git a/t/info.sh b/t/info.sh
new file mode 100755 (executable)
index 0000000..738ddfd
--- /dev/null
+++ b/t/info.sh
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure info files are distributed correctly.
+# FIXME: This test is probably obsoleted, or wrong.  The generated
+#        Makefile.in seems not to define any 'INFOS' variable!
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = foo.texi
+END
+
+echo '@setfilename foo.info' > foo.texi
+: > texinfo.tex
+
+$ACLOCAL
+$AUTOMAKE
+
+for i in `grep '^INFOS =' Makefile.in | sed -e 's/^INFOS = //'`; do
+   echo $i
+   case "$i" in
+    foo*)
+       ;;
+    *)
+       Exit 1
+       ;;
+   esac
+done
+
+:
diff --git a/t/init.sh b/t/init.sh
new file mode 100755 (executable)
index 0000000..d576814
--- /dev/null
+++ b/t/init.sh
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we give a sensible error message when AC_INIT and
+# AM_INIT_AUTOMAKE are both given less than two arguments.
+
+. ./defs || Exit 1
+
+for ac_init_args in '' '([x])'; do
+  for am_init_args in '' '([1.10])'; do
+    rm -rf aclocal.m4 autom4te*.cache
+    unindent >configure.ac <<END
+      AC_INIT$ac_init_args
+      AM_INIT_AUTOMAKE$am_init_args
+END
+    cat configure.ac # For debugging.
+    # The error message should mention AC_INIT, not AC_PACKAGE_VERSION.
+    ($ACLOCAL && $AUTOCONF) 2>stderr && { cat stderr >&2; Exit 1; }
+    cat stderr >&2
+    $FGREP AC_PACKAGE_VERSION stderr && Exit 1
+    grep 'configure\.ac:.* AC_INIT .*arguments' stderr
+  done
+done
+
+:
diff --git a/t/init2.sh b/t/init2.sh
new file mode 100755 (executable)
index 0000000..44e79cb
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, 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/>.
+
+# Make sure we give a sensible error message when AM_INIT_AUTOMAKE
+# contains junk.
+
+. ./defs || Exit 1
+
+cat >configure.ac <<END
+AC_INIT([init2], [1.0])
+AM_INIT_AUTOMAKE([nosuchoption])
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'nosuchoption.*recognized' stderr
+Exit 0
diff --git a/t/insh2.sh b/t/insh2.sh
new file mode 100755 (executable)
index 0000000..cd74f82
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug where install-sh not included in distribution.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+pkgdata_DATA =
+.PHONY: test
+test: distdir
+       find $(distdir) ;: For debugging.
+       echo ' ' $(DISTFILES) ' ' | grep '[ /]install-sh '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]install-sh '
+       test -f $(distdir)/install-sh
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE test
+
+:
diff --git a/t/install-info-dir.sh b/t/install-info-dir.sh
new file mode 100755 (executable)
index 0000000..12b2293
--- /dev/null
@@ -0,0 +1,189 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Checks on the 'install-info' target.
+# Details about the individual checks' purposes and motivations are
+# inlined, below.
+
+# FIXME: this test is a good candidate for a conversion to TAP,
+# FIXME: and could be merged with 'txinfo27.test'.
+
+required=makeinfo
+. ./defs || Exit 1
+
+cwd=`pwd` || fatal_ "cannot get current working directory"
+
+mkdir bin
+saved_PATH=$PATH; export saved_PATH
+PATH=$cwd/bin$PATH_SEPARATOR$PATH; export PATH
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = foo.texi
+END
+
+cat > foo.texi << 'END'
+\input texinfo
+@setfilename foo.info
+@c All the following directives might be required to allow older
+@c versions of the 'install-info' program (e.g., version 4.8) to
+@c create the 'dir' index file in ${infodir}.  Don't remove them.
+@settitle foo
+@dircategory Dummy utilities
+@direntry
+* Foo: (foo).  Does nothing at all, but has a nice name.
+@end direntry
+@node Top
+Hello world!
+@bye
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+instdir=_inst
+destdir=_dest
+
+./configure --prefix="$cwd/$instdir" --infodir="$cwd/$instdir/info"
+
+$MAKE info
+test -f foo.info
+
+if install-info --version; then
+  # Skip some checks even if 'install-info' is the one from dpkg, not
+  # the one from GNU info, as the former might try to create files in
+  # '/var/backups/', causing spurious failures like this for non-root
+  # users.
+  if install-info --version | $EGREP -i '(dpkg|debian) install-info'; then
+    have_installinfo=no
+  else
+    have_installinfo=yes
+  fi
+else
+  have_installinfo=no
+fi
+
+# The 'install-info' target updates the '${infodir}/dir' file
+# by default (if the 'install-info' program is available).
+# This should happen in a normal as well as in a DESTDIR installation.
+if test $have_installinfo = yes; then
+
+  $MAKE install-info
+  test -f $instdir/info/foo.info
+  test -f $instdir/info/dir
+  $FGREP 'Does nothing at all, but has a nice name' $instdir/info/dir
+
+  $MAKE uninstall
+  test ! -f $instdir/info/foo.info
+  $FGREP 'but has a nice name' $instdir/info/dir && Exit 1
+
+  dir="$destdir/$cwd/$instdir/info"
+
+  $MAKE DESTDIR="$cwd/$destdir" install-info
+  test -f "$dir"/foo.info
+  test -f "$dir"/dir
+  $FGREP 'Does nothing at all, but has a nice name' "$dir"/dir
+  $MAKE DESTDIR="$cwd/$destdir" uninstall
+  test ! -f "$dir"/foo.info
+  $FGREP 'but has a nice name' "$dir"/dir && Exit 1
+
+  unset dir
+
+fi
+
+rm -rf $instdir $destdir
+
+# The 'install-info' target doesn't fail if the 'install-info'
+# program is not available.
+cat > bin/install-info <<'END'
+#!/bin/sh
+echo error from install-info >&2
+exit 127
+END
+chmod a+x bin/install-info
+$MAKE install-info >output 2>&1 || { cat output; Exit 1; }
+cat output
+test -f $instdir/info/foo.info
+test ! -f $instdir/info/dir
+grep 'error from install-info' output && Exit 1
+
+rm -rf $instdir output
+
+if test $have_installinfo = yes; then
+  # The 'install-info' target doesn't try to guess whether the 'install-info'
+  # is the GNU or debian version.
+  unindent > bin/install-info <<'END'
+    #!/bin/sh
+    set -e; set -u;
+    for fd in 1 2; do
+      for str in dpkg debian Debian; do
+        eval "echo This is $str install-info >&$fd"
+      done
+    done
+    PATH=$saved_PATH; export PATH
+    exec install-info ${1+"$@"}
+END
+  $MAKE install-info
+  test -f $instdir/info/foo.info
+  test -f $instdir/info/dir
+  $MAKE uninstall
+  test ! -f $instdir/info/foo.info
+  test -f $instdir/info/dir
+  $FGREP 'but has a nice name' $instdir/info/dir && Exit 1
+  : For shells with busted 'set -e'.
+fi
+
+rm -rf $instdir bin/install-info
+
+# The 'AM_UPDATE_INFO_DIR' environment variable can be used to
+# prevent the creation or update of the '${infodir}/dir' file,
+# if set to a "no" value.
+for val in no NO n; do
+  rm -rf $instdir
+  env AM_UPDATE_INFO_DIR="$val" $MAKE install-info
+  test -f $instdir/info/foo.info
+  test ! -f $instdir/info/dir
+done
+
+$MAKE install-info
+if test $have_installinfo != yes; then
+  echo 'Does nothing at all, but has a nice name' > $instdir/info/dir
+fi
+
+chmod a-w $instdir/info/dir
+for val in no NO n; do
+  env AM_UPDATE_INFO_DIR="$val" $MAKE uninstall
+  $FGREP 'Does nothing at all, but has a nice name' $instdir/info/dir
+done
+
+if test $have_installinfo = yes; then
+  for val in 'yes' 'who cares!'; do
+    rm -rf $instdir
+    env AM_UPDATE_INFO_DIR="$val" $MAKE install-info
+    test -f $instdir/info/foo.info
+    test -f $instdir/info/dir
+    env AM_UPDATE_INFO_DIR="$val" $MAKE uninstall
+    test ! -f $instdir/info/foo.info
+    $FGREP 'but has a nice name' $instdir/info/dir && Exit 1
+    : For shells with busted 'set -e'.
+  done
+fi
+
+:
diff --git a/t/install2.sh b/t/install2.sh
new file mode 100755 (executable)
index 0000000..bd400f4
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in 'make dist'
+# From Pavel Roskin.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+dnl Prevent automake from looking in .. and ../..
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = .
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+chmod 000 Makefile.am
+
+# On some systems (like DOS and Windows), files are always readable.
+test ! -r Makefile.am || skip_ "cannot drop file read permissions"
+
+./configure
+
+# 'dist' should fail because we can't copy Makefile.am.
+if $MAKE dist; then
+  Exit 1
+else
+  Exit 0
+fi
diff --git a/t/installdir.sh b/t/installdir.sh
new file mode 100755 (executable)
index 0000000..dc83ee3
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 203.
+# See also automake bug#11030.
+#
+# == Original Report for PR/203 ==
+# Some standard targets are missing '-local' hooks.  For instance,
+# installdirs is missing this.  Ideally this would be an automatic
+# feature of any exported target.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+foodir = $(datadir)/$(distdir)
+installdirs-local:
+       $(MKDIR_P) $(DESTDIR)$(foodir)
+install-data-hook: installdirs-local
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+test `grep installdirs-local Makefile.in | wc -l` -eq 4
+
+cwd=`pwd` || fatal_ "getting current working directory"
+
+$AUTOCONF
+./configure --prefix="$cwd/inst"
+
+$MAKE installdirs
+test -d inst/share/$me-1.0
+rm -rf inst
+
+$MAKE install
+test -d inst/share/$me-1.0
+rm -rf inst
+
+./configure --prefix=/foo
+
+$MAKE installdirs DESTDIR="$cwd/dest"
+test -d dest/foo/share/$me-1.0
+rm -rf dest
+
+$MAKE install DESTDIR="$cwd/dest"
+test -d dest/foo/share/$me-1.0
+rm -rf dest
+
+:
diff --git a/t/instdat.sh b/t/instdat.sh
new file mode 100755 (executable)
index 0000000..0754a09
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to see if defining INSTALL_DATA causes problems.  From EGCS
+# list.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_SUBST([INSTALL_DATA])
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^DATA =' Makefile.in | grep 'INSTALL_DATA' && Exit 1
+Exit 0
diff --git a/t/instdat2.sh b/t/instdat2.sh
new file mode 100755 (executable)
index 0000000..8773fc3
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that installing under $exec_prefix is handled by install-exec.
+# Testing with headers for instance.
+
+. ./defs || Exit 1
+
+cat >Makefile.am << 'EOF'
+# User directories.
+inclexecdir = $(exec_prefix)/include
+inclexec_HEADERS = my-config.h
+
+incldatadir = $(prefix)/include
+incldata_HEADERS = my-data.h
+
+## Standard directories: _DATA
+## Commented out are invalid combinations.
+##bin_DATA = data
+##sbin_DATA = data
+##libexec_DATA = data
+data_DATA = data
+sysconf_DATA = data
+localstate_DATA = data
+##lib_DATA = data
+##info_DATA = data
+##man_DATA = data
+##include_DATA = data
+##oldinclude_DATA = data
+pkgdata_DATA = data
+##pkglib_DATA = data
+##pkginclude_DATA = data
+
+## Standard directories: _SCRIPTS
+## Commented out are invalid combinations.
+bin_SCRIPTS = script
+sbin_SCRIPTS = script
+libexec_SCRIPTS = script
+##data_SCRIPTS = script
+##sysconf_SCRIPTS = script
+##localstate_SCRIPTS = script
+##lib_SCRIPTS = script
+##info_SCRIPTS = script
+##man_SCRIPTS = script
+##include_SCRIPTS = script
+##oldinclude_SCRIPTS = script
+pkgdata_SCRIPTS = script
+##pkglib_SCRIPTS = script
+##pkginclude_SCRIPTS = script
+EOF
+
+$ACLOCAL || Exit 1
+$AUTOMAKE
+
+# install-SCRIPTS targets.
+sed -n '/^install-data-am/,/^  /p' Makefile.in > produced
+
+cat > expected <<'EOF'
+install-data-am: install-dataDATA install-incldataHEADERS \
+       install-pkgdataDATA install-pkgdataSCRIPTS
+EOF
+
+diff expected produced
+
+
+# install-exec targets.
+sed -n '/^install-exec-am/,/^  /p' Makefile.in > produced
+
+cat > expected <<'EOF'
+install-exec-am: install-binSCRIPTS install-inclexecHEADERS \
+       install-libexecSCRIPTS install-localstateDATA \
+EOF
+
+diff expected produced
+
+Exit 0
diff --git a/t/instdir-cond.sh b/t/instdir-cond.sh
new file mode 100755 (executable)
index 0000000..2965ff1
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check against automake bug#10997: directories holding only
+# conditionally-installed files should not be created unconditionally.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([ENABLE_FOO], [false])
+AC_OUTPUT
+END
+
+: > foo
+: > bar
+
+cat > Makefile.am << 'END'
+pkglibexec_SCRIPTS =
+if ENABLE_FOO
+pkgdata_DATA = foo
+pkglibexec_SCRIPTS += bar
+endif
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure --prefix="`pwd`/inst"
+
+$MAKE install
+test ! -d inst/share/instdir-cond
+test ! -d inst/libexec/instdir-cond
+
+:
diff --git a/t/instdir-cond2.sh b/t/instdir-cond2.sh
new file mode 100755 (executable)
index 0000000..1fc24b7
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check against automake bug#10997: directories holding only
+# conditionally-installed files should not be created unconditionally.
+# FIXME: this test tries to check that the above also hold for the
+# FIXME: "installdirs" target, but that doesn't currently work :-(
+# FIXME: So this test is still xfailing.
+# See sister test 'instdir-cond.test' for the succeeding part.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([ENABLE_FOO], [false])
+AC_OUTPUT
+END
+
+: > foo
+: > bar
+
+cat > Makefile.am << 'END'
+pkglibexec_SCRIPTS =
+if ENABLE_FOO
+pkgdata_DATA = foo
+pkglibexec_SCRIPTS += bar
+endif
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure --prefix="`pwd`/inst"
+
+$MAKE installdirs
+test ! -d inst || { find inst; Exit 1; }
+
+:
diff --git a/t/instdir-java.sh b/t/instdir-java.sh
new file mode 100755 (executable)
index 0000000..4d47d19
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If $(javadir) is the empty string, then nothing should be installed there.
+
+required=javac
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+javadir = $(datarootdir)/java
+java_JAVA = foo.java
+END
+
+cat >foo.java <<'END'
+class foo {
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+destdir=`pwd`/dest
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE
+
+javadir=
+export javadir
+$MAKE -e install
+test ! -d "$instdir"
+$MAKE -e install DESTDIR="$destdir"
+test ! -d "$instdir"
+test ! -d "$destdir"
+$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'rm -f' stdout && Exit 1
+$MAKE -e uninstall DESTDIR="$destdir"
+
+:
diff --git a/t/instdir-lisp.sh b/t/instdir-lisp.sh
new file mode 100755 (executable)
index 0000000..f019504
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If $(lispdir) is the empty string, then nothing should be installed there.
+
+required=emacs
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_PATH_LISPDIR
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+lisp_LISP = l.el
+END
+
+: >l.el
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+destdir=`pwd`/dest
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE
+
+lispdir=
+export lispdir
+
+$MAKE -e install
+test ! -d "$instdir"
+$MAKE -e install DESTDIR="$destdir"
+test ! -d "$instdir"
+test ! -d "$destdir"
+$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'rm -f' stdout && Exit 1
+$MAKE -e uninstall DESTDIR="$destdir"
+
+:
diff --git a/t/instdir-ltlib.sh b/t/instdir-ltlib.sh
new file mode 100755 (executable)
index 0000000..ded16cd
--- /dev/null
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If $(libdir) or $(pyexecdir) is the empty string, then nothing should
+# be installed there.
+# This test exercises the libtool code paths.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AM_PATH_PYTHON
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat >Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = p
+nobase_bin_PROGRAMS = np sub/np
+lib_LTIBRARIES = libfoo.la
+nobase_lib_LTLIBRARIES = libnfoo.la sub/libnfoo.la
+pyexec_LTIBRARIES = libpy.la
+nobase_pyexec_LTLIBRARIES = libnpy.la sub/libnpy.la
+END
+
+cat >p.c <<'END'
+int main () { return 0; }
+END
+cp p.c np.c
+cp p.c sub/np.c
+cp p.c libfoo.c
+cp p.c libnfoo.c
+cp p.c sub/libnfoo.c
+cp p.c libpy.c
+cp p.c libnpy.c
+cp p.c sub/libnpy.c
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+destdir=`pwd`/dest
+mkdir build
+cd build
+../configure --prefix="$instdir" PYTHON="echo" \
+             am_cv_python_pythondir="$instdir/python" \
+             am_cv_python_pyexecdir="$instdir/pyexec"
+$MAKE
+
+bindir= libdir= pyexecdir=
+export bindir libdir pyexecdir
+$MAKE -e install
+test ! -d "$instdir"
+$MAKE -e install DESTDIR="$destdir"
+test ! -d "$instdir"
+test ! -d "$destdir"
+$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
+cat stdout
+# Creative quoting below to please maintainer-check.
+grep 'rm'' ' stdout && Exit 1
+$MAKE -e uninstall DESTDIR="$destdir" > stdout || { cat stdout; Exit 1; }
+cat stdout
+# Creative quoting below to please maintainer-check.
+grep 'rm'' ' stdout && Exit 1
+
+:
diff --git a/t/instdir-no-empty.sh b/t/instdir-no-empty.sh
new file mode 100755 (executable)
index 0000000..d93add8
--- /dev/null
@@ -0,0 +1,121 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# An empty "foo_PRIMARY" declaration should *not* cause "make install"
+# to create directory $(foodir).  See automake bug#10997 and bug#11030.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_SUBST([CC], [whatever])
+AC_SUBST([JAVAC], [whatever])
+AM_PATH_PYTHON(,,:)
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+mydir = $(prefix)/my
+myexecdir = $(prefix)/myexec
+javadir = $(prefix)/java
+END
+
+# Write Makefile.am.
+{
+
+  for dir in sbin bin libexec pkglibexec myexec; do
+    for dst in '' dist_ nodist_; do
+      echo "${dst}${dir}_SCRIPTS ="
+    done
+    echo "${dir}_PROGRAMS ="
+  done
+
+  for dir in lib pkglib myexec my; do
+    echo "${dir}_LIBRARIES ="
+    echo "${dir}_LTLIBRARIES ="
+  done
+
+  for p1 in '' notrans_; do
+    for p2 in '' dist_ nodist_; do
+      for s in '' 1 2 3 4 5 6 7 8 9; do
+        echo "${p1}${p2}man${s}_MANS ="
+      done
+    done
+  done
+
+  for dst in '' dist_ nodist_; do
+    for dir in dataroot data pkgdata doc lisp my; do
+      echo "${dst}${dir}_DATA ="
+    done
+    for dir in include pkginclude oldinclude my; do
+      echo "${dst}${dir}_HEADERS ="
+    done
+    for dir in python my; do
+      echo "${dst}${dir}_PYTHON ="
+    done
+    for dir in info my; do
+      echo "${dst}${dir}_TEXINFOS ="
+    done
+    for dir in java my; do
+      echo "${dst}${dir}_JAVA ="
+    done
+    for dir in lisp my; do
+      echo "${dst}${dir}_LISP ="
+    done
+  done
+
+} > t
+
+cat t >> Makefile.am
+sed 's/^/nobase_/' t >> Makefile.am
+rm -f t
+
+cat Makefile.am # For debugging.
+
+# Sanity check.
+grep '^oldinclude_HEADERS =' Makefile.am \
+  && grep '^nodist_my_PYTHON =' Makefile.am \
+  && grep '^notrans_dist_man5_MANS =' Makefile.am \
+  || fatal_ "creating Makefile.am"
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cwd=`pwd` || fatal_ "getting current working directory"
+
+doinst ()
+{
+  $MAKE install install-pdf install-ps install-dvi ${1+"$@"}
+}
+
+: > foo.sh
+
+./configure --prefix="$cwd/inst"
+doinst
+test ! -d inst || { find inst; Exit 1; }
+$MAKE uninstall
+doinst bin_SCRIPTS=foo.sh AM_MAKEFLAGS='bin_SCRIPTS=foo.sh'
+test -f inst/bin/foo.sh
+
+./configure
+doinst DESTDIR="$cwd/dest"
+test ! -d dest || { find dest; Exit 1; }
+$MAKE uninstall
+doinst DESTDIR="$cwd/dest" bin_SCRIPTS=foo.sh AM_MAKEFLAGS='bin_SCRIPTS=foo.sh'
+test -f dest/usr/local/bin/foo.sh
+
+:
diff --git a/t/instdir-prog.sh b/t/instdir-prog.sh
new file mode 100755 (executable)
index 0000000..e0948c0
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If $(bindir), $(libdir) or $(pyexecdir) is the empty string, then
+# nothing should be installed there.
+# This test exercises the prog and libs code paths.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+AC_PROG_RANLIB
+AM_PATH_PYTHON
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat >Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = p
+nobase_bin_PROGRAMS = np sub/np
+lib_LIBRARIES = libfoo.a
+nobase_lib_LIBRARIES = libnfoo.a sub/libnfoo.a
+pyexec_PROGRAMS = py
+nobase_pyexec_PROGRAMS = npy sub/npy
+END
+
+cat >p.c <<'END'
+int main () { return 0; }
+END
+cp p.c np.c
+cp p.c sub/np.c
+cp p.c libfoo.c
+cp p.c libnfoo.c
+cp p.c sub/libnfoo.c
+cp p.c py.c
+cp p.c npy.c
+cp p.c sub/npy.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+destdir=`pwd`/dest
+mkdir build
+cd build
+../configure --prefix="$instdir" PYTHON="echo" \
+             am_cv_python_pythondir="$instdir/python" \
+             am_cv_python_pyexecdir="$instdir/pyexec"
+$MAKE
+
+bindir= libdir= pyexecdir=
+export bindir libdir pyexecdir
+$MAKE -e install
+test ! -d "$instdir"
+$MAKE -e install DESTDIR="$destdir"
+test ! -d "$instdir"
+test ! -d "$destdir"
+$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
+cat stdout
+# Creative quoting below to please maintainer-check.
+grep 'rm'' ' stdout && Exit 1
+$MAKE -e uninstall DESTDIR="$destdir" > stdout || { cat stdout; Exit 1; }
+cat stdout
+# Creative quoting below to please maintainer-check.
+grep 'rm'' ' stdout && Exit 1
+
+:
diff --git a/t/instdir-python.sh b/t/instdir-python.sh
new file mode 100755 (executable)
index 0000000..f48353d
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If $(pythondir) is the empty string, then nothing should be installed there.
+
+required=python
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_PATH_PYTHON
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat >Makefile.am <<'END'
+python_PYTHON = one.py
+END
+
+cat >one.py <<'END'
+def one(): return 1
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+destdir=`pwd`/dest
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE
+
+pythondir=
+export pythondir
+
+$MAKE -e install
+test ! -d "$instdir"
+$MAKE -e install DESTDIR="$destdir"
+test ! -d "$instdir"
+test ! -d "$destdir"
+$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'rm -f' stdout && Exit 1
+$MAKE -e uninstall DESTDIR="$destdir"
+
+:
diff --git a/t/instdir-texi.sh b/t/instdir-texi.sh
new file mode 100755 (executable)
index 0000000..4e4887a
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If $(infodir) is the empty string, then nothing should be installed there.
+# Likewise for the other install-* targets used for texinfo files.
+
+required='makeinfo-html tex texi2dvi'
+. ./defs || Exit 1
+
+dvips --help \
+  || skip_ "dvips is missing"
+pdfetex --version || pdftex --version \
+  || skip_ "pdeftex and pdftex are both missing"
+
+cat >>configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+info_TEXINFOS = foo.texi
+END
+
+cat >foo.texi << 'END'
+\input texinfo
+@setfilename foo.info
+@settitle foo
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+destdir=`pwd`/dest
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE all dvi ps pdf html
+ls -l
+
+infodir= htmldir= dvidir= psdir= pdfdir=
+export infodir htmldir dvidir psdir pdfdir
+
+$MAKE -e install install-html install-dvi install-ps install-pdf
+test ! -d "$instdir"
+$MAKE -e install install-html install-dvi install-ps install-pdf DESTDIR="$destdir"
+test ! -d "$instdir"
+test ! -d "$destdir"
+$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'rm -f' stdout && Exit 1
+$MAKE -e uninstall DESTDIR="$destdir"
+
+:
diff --git a/t/instdir.sh b/t/instdir.sh
new file mode 100755 (executable)
index 0000000..f09fdfa
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If $(foodir) is the empty string, then nothing should be installed there.
+# This test only ensures this if $(foo_PRIMARY) is also empty, see
+# instdir2.test and siblings instdir-*.test for nonempty contents.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_SUBST([foodir], ['${datadir}'/foo])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+bin_SCRIPTS =
+nobase_bin_SCRIPTS =
+data_DATA =
+nobase_data_DATA =
+include_HEADERS =
+nobase_include_HEADERS =
+foo_DATA =
+nobase_foo_DATA =
+bardir = $(datadir)/bar
+bar_DATA =
+nobase_bar_DATA =
+man1_MANS =
+man_MANS =
+notrans_man1_MANS =
+notrans_man_MANS =
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+destdir=`pwd`/dest
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE
+
+bindir= datadir= includedir= foodir= bardir= man1dir= man2dir=
+export bindir datadir includedir foodir bardir man1dir man2dir
+
+$MAKE -e install
+test ! -d "$instdir"
+$MAKE -e install DESTDIR="$destdir"
+test ! -d "$instdir"
+test ! -d "$destdir"
+$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'rm -f' stdout && Exit 1
+$MAKE -e uninstall DESTDIR="$destdir"
+
+:
diff --git a/t/instdir2.sh b/t/instdir2.sh
new file mode 100755 (executable)
index 0000000..bdfa809
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If $(foodir) is the empty string, then nothing should be installed there.
+# This test ensures this also if $(foo_PRIMARY) is nonempty, see
+# instdir.test.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_SUBST([foodir], ['${datadir}'/foo])
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat >Makefile.am <<'END'
+bin_SCRIPTS = s
+nobase_bin_SCRIPTS = ns sub/ns
+data_DATA = d
+nobase_data_DATA = nd sub/nd
+include_HEADERS = h
+nobase_include_HEADERS = nh sub/nh
+foo_DATA = f
+nobase_foo_DATA = nf sub/nf
+bardir = $(datadir)/bar
+bar_DATA = b
+nobase_bar_DATA = nb sub/nb
+man1_MANS = m1.1
+man_MANS = m.2
+notrans_man1_MANS = nm1.1
+notrans_man_MANS = nm.2
+END
+
+: >s
+: >ns
+: >sub/ns
+: >d
+: >nd
+: >sub/nd
+: >h
+: >nh
+: >sub/nh
+: >f
+: >nf
+: >sub/nf
+: >b
+: >nb
+: >sub/nb
+: >m1.1
+: >m.2
+: >nm1.1
+: >nm.2
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+destdir=`pwd`/dest
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE
+
+bindir= datadir= includedir= foodir= bardir= man1dir= man2dir=
+export bindir datadir includedir foodir bardir man1dir man2dir
+
+$MAKE -e install
+test ! -d "$instdir"
+$MAKE -e install DESTDIR="$destdir"
+test ! -d "$instdir"
+test ! -d "$destdir"
+$MAKE -e uninstall > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'rm -f' stdout && Exit 1
+$MAKE -e uninstall DESTDIR="$destdir"
+
+:
diff --git a/t/instexec.sh b/t/instexec.sh
new file mode 100755 (executable)
index 0000000..c033ecd
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for this bug: when a Makefile.am builds nothing, no
+# install-exec target is generated.
+
+. ./defs || Exit 1
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^install-exec:' Makefile.in
diff --git a/t/instfail-info.sh b/t/instfail-info.sh
new file mode 100755 (executable)
index 0000000..58aef97
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The install rule should honor failures of the install program.
+# Some of these are already caught by instmany.test.
+
+# This test has a few sister tests, for java, info, libtool.
+
+required='makeinfo'
+. ./defs || Exit 1
+
+cat >>configure.ac <<END
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+info_TEXINFOS = info1.texi info2.texi info3.texi
+END
+
+for n in 1 2 3; do
+  cat >info$n.texi <<END
+\input texinfo
+@setfilename info$n.info
+@settitle main
+@node Top
+Hello walls.
+@bye
+END
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+./configure --prefix="$instdir"
+$MAKE
+
+$MAKE install
+$MAKE uninstall
+
+for file in info1.info
+do
+  chmod a-r $file
+  test ! -r $file || skip_ "cannot drop file read permissions"
+  $MAKE install-data && Exit 1
+  chmod u+r $file
+done
+
+:
diff --git a/t/instfail-java.sh b/t/instfail-java.sh
new file mode 100755 (executable)
index 0000000..0ae80f5
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The install rule should honor failures of the install program.
+# Some of these are already caught by instmany.test.
+
+# This is the java sister test of instfail.test.
+
+required=javac
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+javadir = $(datadir)/java
+java_JAVA = java1.java java2.java java3.java
+END
+
+for n in 1 2 3; do
+  echo "class java$n { }" >java$n.java
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+./configure --prefix="$instdir"
+$MAKE
+
+$MAKE install
+$MAKE uninstall
+
+for file in java1.class
+do
+  chmod a-r $file
+  test ! -r $file || skip_ "cannot drop file read permissions"
+  $MAKE install-data && Exit 1
+  chmod u+r $file
+done
+
+:
diff --git a/t/instfail-libtool.sh b/t/instfail-libtool.sh
new file mode 100755 (executable)
index 0000000..0acfd2c
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The install rule should honor failures of the install program.
+# Some of these are already caught by instmany.test.
+
+# This is the libtool sister test of instfail.test
+
+required='cc libtool libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<END
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = prog1 prog2 prog3
+nobase_bin_PROGRAMS = progn1 progn2 progn3
+lib_LTLIBRARIES = liblt1.la liblt2.la liblt3.la
+nobase_lib_LTLIBRARIES = libltn1.la libltn2.la libltn3.la
+unreadable-prog:
+       chmod a-r prog1$(EXEEXT)
+readable-prog:
+       chmod a+r prog1$(EXEEXT)
+unreadable-progn:
+       chmod a-r progn1$(EXEEXT)
+readable-progn:
+       chmod a+r progn1$(EXEEXT)
+END
+
+for n in 1 2 3; do
+  echo "int main () { return 0; }" > prog$n.c
+  echo "int main () { return 0; }" > progn$n.c
+  echo "int foolt$n () { return 0; }" > liblt$n.c
+  echo "int fooltn$n () { return 0; }" > libltn$n.c
+done
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+./configure --prefix="$instdir"
+$MAKE
+
+$MAKE install
+$MAKE uninstall
+
+for file in liblt1.la libltn1.la
+do
+  chmod a-r $file
+  test ! -r $file || skip_ "cannot drop file read permissions"
+  $MAKE install-exec && Exit 1
+  chmod u+r $file
+done
+
+$MAKE unreadable-prog
+$MAKE install-exec && Exit 1
+$MAKE readable-prog
+
+$MAKE unreadable-progn
+$MAKE install-exec && Exit 1
+$MAKE readable-progn
+
+:
diff --git a/t/instfail.sh b/t/instfail.sh
new file mode 100755 (executable)
index 0000000..1e5a340
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The install rule should honor failures of the install program.
+# Some of these are already caught by instmany.test.
+
+# This test has a few sister tests, for java, info, libtool.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<END
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AM_PATH_LISPDIR
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = prog1 prog2 prog3
+nobase_bin_PROGRAMS = progn1 progn2 progn3
+lisp_LISP = lisp1.el lisp2.el lisp3.el
+nobase_lisp_LISP = lispn1.el lispn2.el lispn3.el
+lib_LIBRARIES = lib1.a lib2.a lib3.a
+nobase_lib_LIBRARIES = libn1.a libn2.a libn3.a
+unreadable-prog:
+       chmod a-r prog1$(EXEEXT)
+readable-prog:
+       chmod a+r prog1$(EXEEXT)
+unreadable-progn:
+       chmod a-r progn1$(EXEEXT)
+readable-progn:
+       chmod a+r progn1$(EXEEXT)
+END
+
+for n in 1 2 3; do
+  echo "int main () { return 0; }" > prog$n.c
+  echo "int main () { return 0; }" > progn$n.c
+  echo "int foo$n () { return 0; }" > lib$n.c
+  echo "int foon$n () { return 0; }" > libn$n.c
+  echo >lisp$n.el
+  echo >lispn$n.el
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+./configure --prefix="$instdir"
+$MAKE
+
+$MAKE install
+$MAKE uninstall
+
+for file in lib1.a libn1.a
+do
+  chmod a-r $file
+  test ! -r $file || skip_ "cannot drop file read permissions"
+  $MAKE install-exec && Exit 1
+  chmod u+r $file
+done
+
+$MAKE unreadable-prog
+$MAKE install-exec && Exit 1
+$MAKE readable-prog
+
+$MAKE unreadable-progn
+$MAKE install-exec && Exit 1
+$MAKE readable-progn
+
+if grep "^EMACS = no" Makefile; then :; else
+  for file in lisp1.el lisp1.elc
+  do
+    chmod a-r $file
+    $MAKE install-data && Exit 1
+    chmod u+r $file
+  done
+fi
+
+:
diff --git a/t/insthook.sh b/t/insthook.sh
new file mode 100755 (executable)
index 0000000..23bc4e0
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the install-exec-hook example we give in the manual works.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_PROG_LN_S
+AC_OUTPUT
+EOF
+
+cat >Makefile.am <<'END'
+dist_bin_SCRIPTS = foo
+
+install-exec-hook:
+       cd "$(DESTDIR)$(bindir)" && \
+       mv -f foo foo-$(VERSION) && \
+       $(LN_S) foo-$(VERSION) foo
+
+installcheck-local:
+       test -f "$(bindir)/foo"
+       test -f "$(bindir)/foo-$(VERSION)"
+       : > $(top_srcdir)/../ok
+
+uninstall-hook:
+       rm -f $(DESTDIR)$(bindir)/foo-$(VERSION)
+END
+
+echo 1 > foo
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE distcheck
+# Sanity check to make sure installcheck-local was run.
+test -f ok
+
+# Make sure that installing a second version doesn't erase the first
+# one.  (This is error prone since 'foo' symlinks to 'foo-1.0' and the
+# second version will overwrite 'foo'.  Hopefully 'install' and 'install-sh'
+# are smart enough to erase the 'foo' symlink before installing the new
+# version.)
+./configure "--bindir=`pwd`/bin"
+$MAKE install
+echo 2 > foo
+VERSION=2.0 $MAKE -e install
+grep 1 bin/foo-1.0
+grep 2 bin/foo-2.0
+grep 2 bin/foo
+
+# install-hook is an error.
+cat >>Makefile.am <<EOF
+install-hook:
+       echo test
+EOF
+
+AUTOMAKE_fails
+grep install-data-hook stderr
+grep install-exec-hook stderr
+
+:
diff --git a/t/instman.sh b/t/instman.sh
new file mode 100755 (executable)
index 0000000..7871045
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the MKDIR_P invocation is correct in install-man
+# target.  Bug reported by Gordon Irlam <gordoni@cygnus.com>.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'EOF'
+man_MANS = frob.8
+EOF
+
+: > frob.8
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '[^(/]MKDIR_P' Makefile.in > out
+test `wc -l < out` -eq 1
diff --git a/t/instman2.sh b/t/instman2.sh
new file mode 100755 (executable)
index 0000000..04663db
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure mkinstalldirs invocation correct in install-man
+# target.  Bug reported by Gordon Irlam <gordoni@cygnus.com>.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+man8_MANS = frob.8
+EOF
+
+: > frob.8
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^install-man' Makefile.in
+
+:
diff --git a/t/instmany-mans.sh b/t/instmany-mans.sh
new file mode 100755 (executable)
index 0000000..ceb3a9e
--- /dev/null
@@ -0,0 +1,141 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Installing many files should not exceed the command line length limit.
+
+# This is the mans sister test of instmany.test, see there for details.
+
+. ./defs || Exit 1
+
+# In order to have a useful test on modern systems (which have a high
+# limit, if any), use a fake install program that errors out for more
+# than 2K characters in a command line.  The POSIX limit is 4096, but
+# that may include space taken up by the environment.
+
+limit=2500
+subdir=long_subdir_name_with_many_characters
+nfiles=81
+list=`seq_ 1 $nfiles`
+
+sed "s|@limit@|$limit|g" >myinstall.in <<'END'
+#! /bin/sh
+# Fake install script.  This doesn't really install
+# (the INSTALL path below would be wrong outside this directory).
+limit=@limit@
+INSTALL='@INSTALL@'
+len=`expr "$INSTALL $*" : ".*" 2>/dev/null || echo $limit`
+if test $len -ge $limit; then
+  echo "$0: safe command line limit of $limit characters exceeded" >&2
+  exit 1
+fi
+exit 0
+END
+
+# Creative quoting in the next line to please maintainer-check.
+sed "s|@limit@|$limit|g" >'rm' <<'END'
+#! /bin/sh
+limit=@limit@
+PATH=$save_PATH
+export PATH
+RM='rm -f'
+len=`expr "$RM $*" : ".*" 2>/dev/null || echo $limit`
+if test $len -ge $limit; then
+  echo "$0: safe command line limit of $limit characters exceeded" >&2
+  exit 1
+fi
+exec $RM "$@"
+exit 1
+END
+
+chmod +x rm
+
+cat >>configure.ac <<END
+AC_CONFIG_FILES([myinstall], [chmod +x ./myinstall])
+AC_CONFIG_FILES([$subdir/Makefile])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<END
+SUBDIRS = $subdir
+END
+
+mkdir $subdir
+cd $subdir
+
+cat >Makefile.am <<'END'
+man_MANS =
+man3_MANS =
+notrans_man_MANS =
+notrans_man3_MANS =
+END
+
+for n in $list; do
+  unindent >>Makefile.am <<END
+    man_MANS += page$n.1
+    man3_MANS += page$n.man
+    notrans_man_MANS += npage$n.1
+    notrans_man3_MANS += npage$n.man
+END
+  echo >page$n.1
+  echo >page$n.man
+  echo >npage$n.1
+  echo >npage$n.man
+done
+
+cd ..
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE
+# Try whether native install (or install-sh) works.
+$MAKE install
+# Multiple uninstall should work, too.
+$MAKE uninstall
+$MAKE uninstall
+test `find "$instdir" -type f -print | wc -l` = 0
+
+# Try whether we don't exceed the low limit.
+INSTALL='$(SHELL) $(top_builddir)/myinstall' $MAKE -e install
+env save_PATH="$PATH" PATH="`pwd`/..$PATH_SEPARATOR$PATH" $MAKE uninstall
+
+cd $subdir
+srcdir=../../$subdir
+
+# Ensure 'make install' fails when 'install' fails.
+
+# We cheat here, for efficiency, knowing the internal rule names.
+# For correctness, one should '$MAKE install' here always, or at
+# least use install-exec or install-data.
+
+for file in page3.1 page$nfiles.1 npage3.1 npage$nfiles.1; do
+  chmod a-r $srcdir/$file
+  test ! -r $srcdir/$file || skip_ "cannot drop file read permissions"
+  $MAKE install-man1 && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+for file in page3.man page$nfiles.man npage3.man npage$nfiles.man; do
+  chmod a-r $srcdir/$file
+  $MAKE install-man3 && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+:
diff --git a/t/instmany-python.sh b/t/instmany-python.sh
new file mode 100755 (executable)
index 0000000..d0c5b1a
--- /dev/null
@@ -0,0 +1,130 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Installing many files should not exceed the command line length limit.
+
+# This is the python sister test of instmany.test, see there for details.
+
+required='python'
+. ./defs || Exit 1
+
+limit=2500
+subdir=long_subdir_name_with_many_characters
+nfiles=81
+list=`seq_ 1 $nfiles`
+
+sed "s|@limit@|$limit|g" >myinstall.in <<'END'
+#! /bin/sh
+# Fake install script.  This doesn't really install
+# (the INSTALL path below would be wrong outside this directory).
+limit=@limit@
+INSTALL='@INSTALL@'
+len=`expr "$INSTALL $*" : ".*" 2>/dev/null || echo $limit`
+if test $len -ge $limit; then
+  echo "$0: safe command line limit of $limit characters exceeded" >&2
+  exit 1
+fi
+exit 0
+END
+
+# Creative quoting in the next line to please maintainer-check.
+sed "s|@limit@|$limit|g" >'rm' <<'END'
+#! /bin/sh
+limit=@limit@
+PATH=$save_PATH
+export PATH
+RM='rm -f'
+len=`expr "$RM $*" : ".*" 2>/dev/null || echo $limit`
+if test $len -ge $limit; then
+  echo "$0: safe command line limit of $limit characters exceeded" >&2
+  exit 1
+fi
+exec $RM "$@"
+exit 1
+END
+
+chmod +x rm
+
+cat >>configure.ac <<END
+AM_PATH_PYTHON
+AC_CONFIG_FILES([myinstall], [chmod +x ./myinstall])
+AC_CONFIG_FILES([$subdir/Makefile])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<END
+SUBDIRS = $subdir
+END
+
+mkdir $subdir
+cd $subdir
+
+cat >Makefile.am <<'END'
+python_PYTHON =
+nobase_python_PYTHON =
+END
+
+for n in $list; do
+  unindent >>Makefile.am <<END
+    python_PYTHON += python$n.py
+    nobase_python_PYTHON += npython$n.py
+END
+  echo >python$n.py
+  echo >npython$n.py
+done
+
+cd ..
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE
+# Try whether native install (or install-sh) works.
+$MAKE install
+# Multiple uninstall should work, too.
+$MAKE uninstall
+$MAKE uninstall
+test `find "$instdir" -type f -print | wc -l` = 0
+
+# Try whether we don't exceed the low limit.
+INSTALL='$(SHELL) $(top_builddir)/myinstall' $MAKE -e install
+env save_PATH="$PATH" PATH="`pwd`/..$PATH_SEPARATOR$PATH" $MAKE uninstall
+
+cd $subdir
+srcdir=../../$subdir
+
+# Ensure 'make install' fails when 'install' fails.
+
+for file in python3.py python$nfiles.py
+do
+  chmod a-r $srcdir/$file
+  test ! -r $srcdir/$file || skip_ "cannot drop file read permissions"
+  $MAKE install && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+for file in npython3.py npython$nfiles.py
+do
+  chmod a-r $srcdir/$file
+  $MAKE install && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+:
diff --git a/t/instmany.sh b/t/instmany.sh
new file mode 100755 (executable)
index 0000000..d334ebe
--- /dev/null
@@ -0,0 +1,185 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Installing many files should not exceed the command line length limit.
+# Here, the main issue is that we may prepend '$(srcdir)/' to each file,
+# which may cause much longer command lines.  The list of files must
+# anyway remain below the limit, otherwise 'make' won't be able to even
+# fork the command.
+#
+# Further, the install rule should honor failures of the install program.
+
+# Python is done in the sister test.
+# For texinfos, we expand names using $(srcdir) in the first place.
+# Let's hope nobody uses many texinfos.
+
+. ./defs || Exit 1
+
+# In order to have a useful test on modern systems (which have a high
+# limit, if any), use a fake install program that errors out for more
+# than 2K characters in a command line.  The POSIX limit is 4096, but
+# that may include space taken up by the environment.
+
+limit=2500
+subdir=long_subdir_name_with_many_characters
+nfiles=81
+list=`seq_ 1 $nfiles`
+
+sed "s|@limit@|$limit|g" >myinstall.in <<'END'
+#! /bin/sh
+# Fake install script.  This doesn't really install
+# (the INSTALL path below would be wrong outside this directory).
+limit=@limit@
+INSTALL='@INSTALL@'
+len=`expr "$INSTALL $*" : ".*" 2>/dev/null || echo $limit`
+if test $len -ge $limit; then
+  echo "$0: safe command line limit of $limit characters exceeded" >&2
+  exit 1
+fi
+exit 0
+END
+
+# Creative quoting in the next line to please maintainer-check.
+sed "s|@limit@|$limit|g" >'rm' <<'END'
+#! /bin/sh
+limit=@limit@
+PATH=$save_PATH
+export PATH
+RM='rm -f'
+len=`expr "$RM $*" : ".*" 2>/dev/null || echo $limit`
+if test $len -ge $limit; then
+  echo "$0: safe command line limit of $limit characters exceeded" >&2
+  exit 1
+fi
+exec $RM "$@"
+exit 1
+END
+
+chmod +x rm
+
+cat >>configure.ac <<END
+AC_CONFIG_FILES([myinstall], [chmod +x ./myinstall])
+AC_CONFIG_FILES([$subdir/Makefile])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<END
+SUBDIRS = $subdir
+END
+
+mkdir $subdir
+cd $subdir
+
+cat >Makefile.am <<'END'
+bin_SCRIPTS =
+nobase_bin_SCRIPTS =
+data_DATA =
+nobase_data_DATA =
+include_HEADERS =
+nobase_include_HEADERS =
+END
+
+for n in $list; do
+  unindent >>Makefile.am <<END
+    bin_SCRIPTS += script$n
+    nobase_bin_SCRIPTS += nscript$n
+    data_DATA += data$n
+    nobase_data_DATA += ndata$n
+    include_HEADERS += header$n.h
+    nobase_include_HEADERS += nheader$n.h
+END
+  echo >script$n
+  echo >nscript$n
+  echo >data$n
+  echo >ndata$n
+  echo >header$n.h
+  echo >nheader$n.h
+done
+
+cd ..
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+instdir=`pwd`/inst
+mkdir build
+cd build
+../configure --prefix="$instdir"
+$MAKE
+# Try whether native install (or install-sh) works.
+$MAKE install
+# Multiple uninstall should work, too.
+$MAKE uninstall
+$MAKE uninstall
+test `find "$instdir" -type f -print | wc -l` = 0
+
+# Try whether we don't exceed the low limit.
+INSTALL='$(SHELL) $(top_builddir)/myinstall' $MAKE -e install
+env save_PATH="$PATH" PATH="`pwd`/..$PATH_SEPARATOR$PATH" $MAKE uninstall
+
+cd $subdir
+srcdir=../../$subdir
+
+# Ensure 'make install' fails when 'install' fails.
+
+# We cheat here, for efficiency, knowing the internal rule names.
+# For correctness, one should '$MAKE install' here always, or at
+# least use install-exec or install-data.
+
+for file in script3 script$nfiles
+do
+  chmod a-r $srcdir/$file
+  test ! -r $srcdir/$file || skip_ "cannot drop file read permissions"
+  $MAKE install-binSCRIPTS && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+for file in nscript3 nscript$nfiles
+do
+  chmod a-r $srcdir/$file
+  $MAKE install-nobase_binSCRIPTS && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+for file in data3 data$nfiles
+do
+  chmod a-r $srcdir/$file
+  $MAKE install-dataDATA && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+for file in ndata3 ndata$nfiles
+do
+  chmod a-r $srcdir/$file
+  $MAKE install-nobase_dataDATA && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+for file in header3.h header$nfiles.h
+do
+  chmod a-r $srcdir/$file
+  $MAKE install-includeHEADERS && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+for file in nheader3.h nheader$nfiles.h
+do
+  chmod a-r $srcdir/$file
+  $MAKE install-nobase_includeHEADERS && Exit 1
+  chmod u+r $srcdir/$file
+done
+
+:
diff --git a/t/instsh.sh b/t/instsh.sh
new file mode 100755 (executable)
index 0000000..1fd1b3b
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for this bug:
+# automake: Makefile.am: required file "../../install-sh" not found; installing
+# This also makes sure that install-sh is created in the correct directory.
+
+. ./defs || Exit 1
+
+: > Makefile.am
+rm -f install-sh
+
+# Since the default path includes '../..', we must run this test in
+# yet another subdir.
+mkdir frob
+mv Makefile.am configure.ac frob/
+cd frob
+
+$ACLOCAL
+$AUTOMAKE --add-missing > output 2>&1
+
+# Only one '/' should appear in the output.
+cat output
+grep '/.*/' output && Exit 1
+
+test -f install-sh
diff --git a/t/instsh2-w.sh b/t/instsh2-w.sh
new file mode 100755 (executable)
index 0000000..a0abf8e
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/instsh2.sh"; then
+    echo "$0: will source $dir/t/instsh2.sh"
+    . "$dir/t/instsh2.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/instsh2.sh'" >&2
+exit '99'
diff --git a/t/instsh2.sh b/t/instsh2.sh
new file mode 100755 (executable)
index 0000000..054beb9
--- /dev/null
@@ -0,0 +1,118 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Various install-sh checks.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+get_shell_script install-sh
+
+# Basic errors.
+./install-sh && Exit 1
+./install-sh -m 644 dest && Exit 1
+
+# Directories.
+
+# It should be OK to create no directory.  We sometimes need
+# this when directory are conditionally defined.
+./install-sh -d
+# One directory.
+./install-sh -d d0
+test -d d0
+# Multiple directories (for make installdirs).
+./install-sh -d d1 d2 d3 d4
+test -d d1
+test -d d2
+test -d d3
+test -d d4
+# Subdirectories.
+./install-sh -d p1/p2/p3 p4//p5//p6//
+test -d p1/p2/p3
+test -d p4/p5/p6
+
+# Files.
+: > x
+./install-sh -c -m 644 x y
+test -f x
+test -f y
+./install-sh -m 644 y z
+test -f y
+test -f z
+# Multiple files.
+./install-sh -m 644 -c x z d1
+test -f x
+test -f z
+test -f d1/x
+test -f d1/z
+./install-sh -m 644 x z d2//
+test -f x
+test -f z
+test -f d2/x
+test -f d2/z
+./install-sh -t d3 -m 644 x z
+test -f x
+test -f z
+test -f d3/x
+test -f d3/z
+./install-sh -t d4// -m 644 x z
+test -f x
+test -f z
+test -f d4/x
+test -f d4/z
+./install-sh -T x d3/y
+test -f x
+test -f d3/y
+./install-sh -T x d3 && Exit 1
+./install-sh -T x d4// && Exit 1
+
+# Ensure that install-sh works with names that include spaces.
+touch 'a  b'
+mkdir 'x  y'
+./install-sh 'a  b' 'x  y'
+test -f x\ \ y/a\ \ b
+test -f 'a  b'
+
+# Ensure we do not run into 'test' operator precedence bugs with Tru64 sh.
+for c in = '(' ')' '!'; do
+  ./install-sh $c 2>stderr && { cat stderr >&2; Exit 1; }
+  cat stderr >&2
+  grep 'test: ' stderr && Exit 1
+  # Skip tests if the file system is not capable.
+  mkdir ./$c || continue
+  rmdir ./$c
+  ./install-sh -d $c/$c/$c
+  rm -rf ./$c
+  ./install-sh -d $c d5/$c/$c
+  test -d ./$c
+  test -d d5/$c/$c
+  ./install-sh x $c
+  test -f ./$c/x
+  rm -f ./$c/x
+  ./install-sh -t $c x
+  test -f ./$c/x
+  rm -rf ./$c
+  ( : > ./$c ) || continue
+  ./install-sh $c x d5/$c/$c
+  test -f d5/$c/$c/x
+  test -f d5/$c/$c/$c
+  rm -f d5/$c/$c/?
+  ./install-sh -t d5/$c/$c $c x
+  test -f d5/$c/$c/x
+  test -f d5/$c/$c/$c
+done
+
+:
diff --git a/t/instsh3-w.sh b/t/instsh3-w.sh
new file mode 100755 (executable)
index 0000000..ef0242f
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/instsh3.sh"; then
+    echo "$0: will source $dir/t/instsh3.sh"
+    . "$dir/t/instsh3.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/instsh3.sh'" >&2
+exit '99'
diff --git a/t/instsh3.sh b/t/instsh3.sh
new file mode 100755 (executable)
index 0000000..3a527cb
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# More install-sh checks: check -C.
+
+am_create_testdir=empty
+required=non-root
+. ./defs || Exit 1
+
+# Solaris /usr/ucb/touch does not accept -t.
+touch -t $old_timestamp foo \
+  || skip_ "touch utility doesn't accept '-t' option"
+
+get_shell_script install-sh
+
+./install-sh -d d1
+
+# Do not change the timestamps when using -C.
+echo foo >file
+./install-sh -C file d1
+TZ=UTC0 touch -t $old_timestamp d1/file
+./install-sh -C file d1
+is_newest file d1/file
+echo foo1 >file
+./install-sh -C file d1
+diff file d1/file
+# Rights must be updated.
+./install-sh -C -m 444 file d1
+test -r d1/file
+test ! -w d1/file
diff --git a/t/instspc.tap b/t/instspc.tap
new file mode 100755 (executable)
index 0000000..cbe0fdf
--- /dev/null
@@ -0,0 +1,335 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that building from, or installing to, directories with shell
+# metacharacters succeed.
+# Original report from James Amundson about file names with spaces.
+# Other characters added by Paul Eggert.
+
+. ./defs || Exit 99
+
+# Usage: is_in_list ITEM [LIST...]
+is_in_list ()
+{
+  item=$1; shift;
+  case " $* " in
+    *[\ \      ]"$item"[\ \    ]*) return 0;;
+    *) return 1;;
+  esac
+}
+
+# Helper subroutine for test data definition.
+# Usage: define_problematic_string NAME STRING
+define_problematic_string ()
+{
+  tst=$1; shift
+  eval "instspc__$tst=\$1" \
+    || fatal_ "define_problematic_string: bad argument: '$tst'"
+  shift
+  all_test_names_list="$all_test_names_list $tst"
+  # Some of the "problematic" characters cannot be used in the name of
+  # a build or install directory on a POSIX host.  These lists should
+  # be empty, but are not due to limitations in Autoconf, Automake, Make,
+  # M4, or the shell.
+  if is_in_list fail-builddir "$@"; then
+    builddir_xfails="$builddir_xfails $tst"
+  fi
+  if is_in_list fail-destdir "$@"; then
+    destdir_xfails="$destdir_xfails $tst"
+  fi
+}
+
+# Be sure to avoid interferences from the environment.
+all_test_names_list=''
+builddir_xfails=''
+destdir_xfails=''
+
+expected_to_fail ()
+{
+   case $1 in
+     build) is_in_list "$2" $builddir_xfails;;
+      dest) is_in_list "$2" $destdir_xfails;;
+         *) fatal_ "incorrect 'expected_to_fail' usage";;
+   esac
+}
+
+# Helper subroutines for creation of input data files.
+create_input_data ()
+{
+  mkdir sub
+
+  unindent >> configure.ac << 'EOF'
+    AC_PROG_CC
+    AM_PROG_AR
+    AC_PROG_RANLIB
+    AC_OUTPUT
+EOF
+
+  : > sub/base.h
+  : > sub/nobase.h
+  : > sub/base.dat
+  : > sub/nobase.dat
+  : > sub/base.sh
+  : > sub/nobase.sh
+
+  unindent > source.c << 'EOF'
+    int
+    main (int argc, char **argv)
+    {
+      return 0;
+    }
+EOF
+
+  unindent > Makefile.am << 'EOF'
+    foodir = $(prefix)/foo
+    fooexecdir = $(prefix)/foo
+
+    foo_HEADERS = sub/base.h
+    nobase_foo_HEADERS = sub/nobase.h
+
+    dist_foo_DATA = sub/base.dat
+    nobase_dist_foo_DATA = sub/nobase.dat
+
+    dist_fooexec_SCRIPTS = sub/base.sh
+    nobase_dist_fooexec_SCRIPTS = sub/nobase.sh
+
+    fooexec_PROGRAMS = sub/base
+    nobase_fooexec_PROGRAMS = sub/nobase
+    sub_base_SOURCES = source.c
+    sub_nobase_SOURCES = source.c
+
+    fooexec_LIBRARIES = sub/libbase.a
+    nobase_fooexec_LIBRARIES = sub/libnobase.a
+    sub_libbase_a_SOURCES = source.c
+    sub_libnobase_a_SOURCES = source.c
+
+    .PHONY: test-inst
+    test-inst: install
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.h'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.h'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.h'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.dat'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.dat'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.dat'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.sh'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.sh'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/base.sh'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase$(EXEEXT)'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase$(EXEEXT)'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/base$(EXEEXT)'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/sub/libnobase.a'
+       test ! -f '$(DESTDIR)/$(file)-prefix/foo/libnobase.a'
+       test   -f '$(DESTDIR)/$(file)-prefix/foo/libbase.a'
+EOF
+
+  $ACLOCAL     || framework_failure_ "aclocal failed"
+  $AUTOCONF    || framework_failure_ "autoconf failed"
+  $AUTOMAKE -a || framework_failure_ "automake failed"
+}
+
+# ================= #
+#  Test data begin  #
+# ----------------- #
+
+# Some control characters that are white space.
+bs='\b'   # back space
+cr='\r'   # carriage return
+ff='\f'   # form feed
+ht='   ' # horizontal tab
+lf='
+'         # line feed (aka newline)
+
+# Hack to save typing and make code visually clearer.
+def=define_problematic_string
+
+$def    squote          \'          fail-builddir  fail-destdir
+$def    dquote          '"'         fail-builddir  fail-destdir
+$def    bquote          '`'         fail-builddir  fail-destdir
+$def    sharp           '#'         fail-builddir  fail-destdir
+$def    dollar          '$'         fail-builddir  fail-destdir
+$def    bang            '!'
+$def    bslash          '\'         fail-builddir
+$def    ampersand       '&'         fail-builddir
+$def    percent         '%'
+$def    leftpar         '('
+$def    rightpar        ')'
+$def    pipe            '|'
+$def    caret           '^'
+$def    tilde           '~'
+$def    qmark           '?'
+$def    star            '*'
+$def    plus            '+'
+$def    minus           '-'
+$def    comma           ','
+$def    colon           ':'
+$def    semicol         ';'
+$def    equal           '='
+$def    less            '<'
+$def    more            '>'
+$def    at              '@'
+$def    lqbrack         '['
+$def    rqbrack         ']'
+$def    lcbrack         '{'
+$def    rcbrack         '}'
+$def    space           ' '
+$def    tab             "$ht"
+$def    linefeed        "$lf"       fail-builddir  fail-destdir
+$def    backspace       "$bs"
+$def    formfeed        "$ff"
+$def    carriageret     "$cr"
+$def    quadrigraph0    '@&t@'      fail-builddir
+$def    quadrigraph1    '@<:@'
+$def    quadrigraph2    '@:>@'
+$def    quadrigraph3    '@S|@'
+$def    quadrigraph4    '@%:@'
+$def    a_b             'a b'
+$def    a__b            'a  b'
+$def    a_lf_b          "a${lf}b"   fail-builddir  fail-destdir
+$def    dotdotdot       '...'
+$def    dosdrive        'a:'
+$def    miscglob1       '?[a-z]*'
+$def    miscglob2       '.*?[0-9]'
+
+unset def
+
+# --------------- #
+#  Test data end  #
+# =============== #
+
+# Allow the user to select a subset of the tests.
+if test $# -gt 0; then
+  test_names_list=$*
+  for test_name in $test_names_list; do
+    case " $all_test_names_list " in
+      *" $test_name "*);;
+      *) fatal_ "invalid user-specified test_name '$test_name'"
+    esac
+  done
+  # We need to determine the TAP plan adaptively.
+  n=`for t in $test_names_list; do echo $t; done | wc -l`
+  plan_ `expr $n '*' 2` # Two tests per "problematic string".
+  unset n
+else
+  test_names_list=$all_test_names_list
+  # Prefer static TAP plan if possible, it minimizes the chance of errors.
+  plan_ 94
+fi
+
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+
+create_input_data
+
+for test_name in $test_names_list; do
+
+  eval "test_string=\${instspc__$test_name}" \
+    || fatal_ "invalid test name: '$test_name'"
+
+  if test x"$test_string" = x; then
+    if test x"$test_name" != xcarriageret; then
+      fatal_ "invalid test name: '$test_name'"
+    else
+      # MSYS version 1.0.17 still mishandles carriage returns; see
+      # automake bug#7849.
+      skip_ -r "carriage-return treated as null char" "$test_name in builddir"
+      skip_ -r "carriage-return treated as null char" "$test_name in destdir"
+      continue
+    fi
+  fi
+
+  # Skip the next checks if this system doesn't support the required
+  # characters in file names.
+
+  mkdir "./$test_string" || {
+    skip_ -r "mkdir failed" "$test_name in builddir"
+    skip_ -r "mkdir failed" "$test_name in destdir"
+    continue
+  }
+
+  case $test_string in
+  *:*)
+    # On MSYS 1.0.17, "mkdir ./a:" creates ./a, and "cd ./a:" takes you
+    # to a strange directory with pwd equal to "a".  But only for
+    # interactive shells.  Or something?  In this script, "cd ./a:" fails
+    # on MSYS.  Marvelous.
+    ( cd "./$test_string" ) || {
+      rmdir "./$test_string" || fatal_ "removing directory"
+      skip_ -r "cd failed" "$test_name in builddir"
+      skip_ -r "cd failed" "$test_name in destdir"
+      continue
+    }
+    ;;
+  esac
+
+  # Where are the "weird" characters going to be used, in $(builddir)
+  # or in $(DESTDIR)?  They are always going to be used in $(prefix)
+  # though; should we maybe separate this into a dedicated check?
+  for where in build dest; do
+
+    case $where in
+      build)
+        build=./$test_string
+        dest=$ocwd/dest-$test_name
+        ;;
+      dest)
+        build=build-$test_name
+        dest=$ocwd/$test_string
+        mkdir "$build" || fatal_ "cannot create '$build'"
+        ;;
+      *)
+        fatal_ "invalid where '$where'"
+        ;;
+    esac
+
+    cd "$build" || fatal_ "cannot chdir into '$build'"
+
+    # Some make implementations eliminate leading and trailing whitespace
+    # from macros passed on the command line, and some eliminate leading
+    # whitespace from macros set from environment variables, so prepend
+    # './' and use the latter here.
+    r=ok
+    ../configure --prefix "/$test_string-prefix" \
+      && $MAKE all \
+      && DESTDIR="$dest" file="./$test_string" $MAKE -e test-inst \
+      || r='not ok'
+
+    description="$test_name in ${where}dir"
+    if expected_to_fail "$where" "$test_name"; then
+      directive=TODO
+      reason="long-standing limitation"
+    else
+      directive=
+      reason=
+    fi
+    # Test case outcome is here.
+    result_ "$r" -D "$directive" -r "$reason" -- "$description"
+
+    cd "$ocwd" || fatal_ "cannot chdir back to test directory"
+
+    # Remove subdirectories for tests that have passed, to avoid ending up
+    # with a too big test directory.  This is especially important since
+    # some tests in this tests are expected to fail, and this will cause
+    # the test directory not to be removed when the script terminates.
+    if not am_keeping_testdirs && test "$r" = ok; then
+      rm_rf_ "$build" "$dest" || fatal_ "removing temporary subdirectory"
+    else
+      : For lesser shells with broken 'set -e'.
+    fi
+
+  done # $instspc_action
+
+done # $test_name
+
+:
diff --git a/t/interp.sh b/t/interp.sh
new file mode 100755 (executable)
index 0000000..b45d449
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure variable interpolation works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+xs = a.c b.c
+foo_SOURCES = c.c $(xs)
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP ' a.$(OBJEXT)' Makefile.in
+$FGREP ' b.$(OBJEXT)' Makefile.in
+$FGREP ' c.$(OBJEXT)' Makefile.in
+
+:
diff --git a/t/interp2.sh b/t/interp2.sh
new file mode 100755 (executable)
index 0000000..3ce33e2
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure variable interpolation doesn't break other
+# features.  Report from Joel N. Weber, II.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PATH_X
+AC_PATH_XTRA
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = x
+x_SOURCES = x.c
+x_LDADD = $(X_EXTRA_LIBS)
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/java-check.sh b/t/java-check.sh
new file mode 100755 (executable)
index 0000000..230fb96
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that check_JAVA causes *.class files to be built only with
+# "make check", and not also with "make all".
+# See automake bug#8234.
+
+required=javac
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+check_JAVA = One.java Two.java
+END
+
+cat > One.java <<'END'
+class One { }
+END
+
+cat > Two.java <<'END'
+class Two { // Deliberately missing closing bracket.
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+inst=`pwd`/_inst
+
+./configure --prefix="$inst"
+
+$MAKE
+ls | $EGREP '\.(class|stamp)$' && Exit 1
+
+# Make Two.java compilable.
+echo '}' >> Two.java
+
+# "make check" should compile files in $(check_JAVA) ...
+$MAKE check
+ls -l # For debugging.
+test -f One.class
+test -f Two.class
+# ... but should *not* install them.
+$FGREP checkdir Makefile && Exit 1
+$MAKE install
+test -d _inst && Exit 1
+
+:
diff --git a/t/java-clean.sh b/t/java-clean.sh
new file mode 100755 (executable)
index 0000000..2399201
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test cleaning of Java class files and timestamps.
+
+required=javac
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+
+java_JAVA = Class.java
+dist_java_JAVA = ClassDist.java
+nodist_java_JAVA = ClassNodist.java
+
+nobase_java_JAVA = ClassNobase.java
+nobase_dist_java_JAVA = ClassNobaseDist.java
+nobase_nodist_java_JAVA = ClassNobaseNodist.java
+END
+
+for base in '' Nobase; do
+  for dist in '' Dist Nodist; do
+    echo "class Class$base$dist {}" > Class$base$dist.java
+  done
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+ls -l
+test -f classjava.stamp
+for base in '' Nobase; do
+  for dist in '' Dist Nodist; do
+    test -f Class$base$dist.class
+  done
+done
+$MAKE clean
+find . -name '*.class' -o -name '*.stamp' | grep . && Exit 1
+# We should not remove unrelated stamp files.
+echo timestamp > classjava2.stamp
+echo timestamp > classdist_java.stamp
+$MAKE clean
+test -f classjava2.stamp
+test -f classdist_java.stamp
+
+:
diff --git a/t/java-compile-install.sh b/t/java-compile-install.sh
new file mode 100755 (executable)
index 0000000..f3340ff
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on compilation and installation of Java class files.
+
+required=javac
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+java_JAVA = Foo.java
+nobase_java_JAVA = Foo2.java
+nobase_dist_java_JAVA = Bar.java
+nodist_java_JAVA = Baz.java
+
+# Java files are not distributed by default, so we distribute
+# one "by hand" ...
+EXTRA_DIST = Foo.java
+# ... and make the other one generated.
+Foo2.java:
+       rm -f $@ $@-t
+       echo 'class bClass {}' > $@-t
+       chmod a-w $@-t && mv -f $@-t $@
+
+# Explicitly declared as 'nodist_', so generate it.
+Baz.java:
+       rm -f $@ $@-t
+       echo 'class Baz {}' > $@-t
+       echo 'class Baz2 {}' >> $@-t
+       chmod a-w $@-t && mv -f $@-t $@
+
+test:
+       ls -l $(srcdir) . ;: For debugging.
+       test   -f $(srcdir)/Foo.java
+       test   -f $(srcdir)/Bar.java
+       test   -f Foo2.java
+       test   -f Baz.java
+       test   -f aClass.class
+       test   -f bClass.class
+       test   -f Zardoz.class
+       test   -f Baz.class
+       test   -f Baz2.class
+       test ! -r Foo.class
+       test ! -r Bar.class
+       test   -f classjava.stamp
+
+test-install:
+       ls -l $(javadir) ;: For debugging.
+       test   -f '$(javadir)/bClass.class'
+       test   -f '$(javadir)/aClass.class'
+       test   -f '$(javadir)/Zardoz.class'
+       test   -f '$(javadir)/Baz.class'
+       test   -f '$(javadir)/Baz2.class'
+       test ! -r '$(javadir)/Foo.class'
+       test ! -r '$(javadir)/Bar.class'
+       if find $(prefix) | grep '\.stamp$$'; then exit 1; else :; fi
+
+check-local: test
+installcheck-local: test-install
+
+.PHONY: test test-install
+
+DISTCLEANFILES = Baz.java Foo2.java
+END
+
+echo 'class aClass {}' > Foo.java
+echo 'class Zardoz {}' > Bar.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --prefix="`pwd`"/_inst
+$MAKE
+$MAKE test
+$MAKE install
+$MAKE test-install
+$MAKE distcheck
+
+:
diff --git a/t/java-compile-run-flat.sh b/t/java-compile-run-flat.sh
new file mode 100755 (executable)
index 0000000..9f3c184
--- /dev/null
@@ -0,0 +1,241 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on compilation and execution of Java class files.
+# Also meddle with wrapper scripts, as would be probably seen in a real
+# "UNIX-style" use case.
+# This test uses a "flat" setup for the source tree (i.e., everything in
+# the top-level directory), and forces the use of the old, non-parallel
+# testsuite driver.  The sister test 'java-compile-run-nested.test' do
+# similar checks with a more usual, "nested" setup, and using the newer
+# 'parallel-tests' driver.
+
+required='java javac'
+am_serial_tests=yes
+. ./defs || Exit 1
+
+echo "AC_SUBST([PATH_SEPARATOR], ['$PATH_SEPARATOR'])" >> configure.ac
+
+cat >> configure.ac <<'END'
+AC_SUBST([JAVA], [java])
+AC_CONFIG_SRCDIR([PkgLocation.jin])
+AC_CONFIG_FILES([PkgLocation.java:PkgLocation.jin])
+AC_OUTPUT
+END
+
+## TOP-LEVEL SETUP AND TARGETS ##
+
+cat > Makefile.am <<'END'
+EXTRA_DIST = # Will be updated later.
+
+test-built:
+       ls -l $(srcdir)               ;: For debugging.
+       test $(srcdir) = . || ls -l . ;: Likewise.
+       test -f $(srcdir)/Main.java
+       test -f $(srcdir)/HelloStream.java
+       test -f $(srcdir)/PkgLocation.jin
+       test -f PkgLocation.java
+       test -f HelloStream.class
+       test -f PkgLocation.class
+       test -f Main.class
+       test -f classjava.stamp
+
+test-installed:
+       ls -l $(javadir) ;: For debugging.
+       test -f $(javadir)/HelloStream.class
+       test -f $(javadir)/PkgLocation.class
+       test -f $(javadir)/Main.class
+       if find $(prefix) | grep '\.stamp$$'; then exit 1; else :; fi
+
+run-installed:
+       jprog_doing_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check
+
+check-local: test-built
+installcheck-local: test-installed run-installed
+
+.PHONY: test-built test-installed run-installed
+END
+
+## WRAPPER SCRIPT ##
+
+cat >> Makefile.am <<'END'
+bin_SCRIPTS = jprog
+
+edit_script = sed -e 's|[@]JAVA@|$(JAVA)|g' \
+                  -e 's|[@]javadir@|$(javadir)|g' \
+                  -e 's|[@]SHELL@|$(SHELL)|g' \
+                  -e 's|[@]PATH_SEPARATOR@|$(PATH_SEPARATOR)|g'
+
+jprog: jprog.sh
+       rm -f $@ $@-t
+       $(edit_script) `test -f '$@.sh' || echo $(srcdir)/`$@.sh >$@-t
+       chmod a-w $@-t && chmod a+x $@-t && mv -f $@-t $@
+       sed 's/^/ | /' $@ ;: for debugging.
+
+EXTRA_DIST += jprog.sh
+CLEANFILES = jprog
+END
+
+cat > jprog.sh <<'END'
+#!@SHELL@
+CLASSPATH=${jprog_classpath-'@javadir@'}${CLASSPATH+"@PATH_SEPARATOR@$CLASSPATH"}
+export CLASSPATH
+case $# in
+  0) exec @JAVA@ Main;;
+  *) exec @JAVA@ Main "$@";;
+esac
+END
+
+## JAVA SOURCES ##
+
+cat >> Makefile.am <<'END'
+javadir = $(pkgdatadir)/java
+
+dist_java_JAVA = Main.java HelloStream.java
+nodist_java_JAVA = PkgLocation.java
+END
+
+cat > PkgLocation.jin <<'END'
+public class PkgLocation {
+    public static String prefix() {
+        return new String("@prefix@");
+    }
+}
+END
+
+cat > Main.java <<'END'
+public class Main {
+    public static void main(String[] args) {
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("--print-prefix")) {
+                System.out.println(PkgLocation.prefix());
+            } else if (args[i].equals("--hello-stdout")) {
+                HelloStream.to(System.out);
+            } else if (args[i].equals("--hello-stderr")) {
+                HelloStream.to(System.err);
+            } else {
+               System.err.println("jprog: invalid option '" + args[i] +
+                                  "'");
+               System.exit(2);
+            }
+        }
+        System.exit(0);
+    }
+}
+END
+
+cat > HelloStream.java <<'END'
+import java.io.PrintStream;
+class HelloStream {
+    public static void to(PrintStream stream) {
+        stream.println("Hello, Stream!");
+    }
+}
+END
+
+## TESTS ##
+
+cat >> Makefile.am <<'END'
+## We must use 'TESTS_ENVIRONMENT', not 'AM_TESTS_ENVIRONMENT',
+## because the latter is not hnoured by the old serial test
+## harness.
+TESTS_ENVIRONMENT = \
+    if test x"$$jprog_doing_installcheck" != x"yes"; then \
+        jprog_classpath='$(abs_top_builddir):$(abs_top_srcdir)'; \
+        export jprog_classpath; \
+        PATH='$(abs_top_builddir)$(PATH_SEPARATOR)'$$PATH; \
+        export PATH; \
+    else \
+        unset jprog_classpath || :; \
+        PATH='$(prefix)/bin$(PATH_SEPARATOR)'$$PATH; \
+        export PATH; \
+    fi; \
+    config_time_prefix='@prefix@'; export config_time_prefix;
+
+TESTS = \
+  simple.test \
+  prefix.test \
+  stdout.test \
+  stderr.test \
+  badarg.test
+
+XFAIL_TESTS = badarg.test
+
+EXTRA_DIST += $(TESTS)
+END
+
+cat > simple.test <<'END'
+#!/bin/sh
+jprog
+END
+
+cat > prefix.test <<'END'
+#!/bin/sh
+jprefix=`jprog --print-prefix` || exit 1
+echo "$0: exp prefix: $config_time_prefix"
+echo "$0: got prefix: $jprefix"
+test x"$jprefix" = x"$config_time_prefix"
+END
+
+cat > stdout.test <<'END'
+#!/bin/sh
+rc=0
+jprog --hello-stdout >stdout.out 2>stdout.err || { echo \$?=$?; rc=1; }
+sed 's/^/out:/' <stdout.out      # For debugging.
+sed 's/^/err:/' <stdout.err >&2  # Likewise.
+test -s stdout.err && rc=1
+test "`cat stdout.out`" = 'Hello, Stream!' || rc=1
+rm -f stdout.out stdout.err || rc=1
+exit $rc
+END
+
+cat > stderr.test <<'END'
+#!/bin/sh
+rc=0
+jprog --hello-stderr >stderr.out 2>stderr.err || { echo \$?=$?; rc=1; }
+sed 's/^/out:/' <stderr.out      # For debugging.
+sed 's/^/err:/' <stderr.err >&2  # Likewise.
+test -s stderr.out && rc=1
+test "`cat stderr.err`" = 'Hello, Stream!' || rc=1
+rm -f stderr.out stderr.err || rc=1
+exit $rc
+END
+
+cat > badarg.test <<'END'
+#!/bin/sh
+jprog --bad-argument
+END
+
+chmod a+x *.test
+
+## DO CHECKS ##
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# To have the parallel testsuite more verbose.
+VERBOSE=yes; export VERBOSE
+
+./configure --prefix="`pwd`/_inst"
+cat PkgLocation.java # For debugging.
+$MAKE check
+$MAKE install
+$MAKE test-installed
+$MAKE run-installed
+$MAKE distcheck
+
+:
diff --git a/t/java-compile-run-nested.sh b/t/java-compile-run-nested.sh
new file mode 100755 (executable)
index 0000000..61727f7
--- /dev/null
@@ -0,0 +1,250 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on compilation and execution of Java class files.
+# Also meddle with wrapper scripts, as would be probably seen in a real
+# "UNIX-style" use case.
+# This test uses a typical "nested" source tree setup (i.e., different
+# components/aspects are separated into different subdirectories),
+# and uses the 'parallel-tests' testsuite driver.  The sister test
+# 'java-compile-run-flat.test' do similar checks with a "flat" setup
+# (i.e., everything in the top-level directory), and forcing the use
+# of the older non-parallel 'simple-tests' driver.
+
+required='java javac'
+. ./defs || Exit 1
+
+echo "AC_SUBST([PATH_SEPARATOR], ['$PATH_SEPARATOR'])" >> configure.ac
+
+cat >> configure.ac <<'END'
+AC_SUBST([JAVA], [java])
+AC_CONFIG_SRCDIR([jprog/PkgLocation.jin])
+AC_SUBST([jprogdatadir],  ['${pkgdatadir}'])
+AC_SUBST([jprogclassdir], ['${jprogdatadir}/jprog'])
+AC_CONFIG_FILES([jprog/PkgLocation.java:jprog/PkgLocation.jin])
+AC_CONFIG_FILES([jprog/Makefile bin/Makefile tests/Makefile])
+AC_OUTPUT
+END
+
+## TOP-LEVEL SETUP AND TARGETS ##
+
+cat > Makefile.am <<'END'
+SUBDIRS = bin jprog tests
+
+test-built:
+       ls -l $(srcdir)/*             ;: For debugging.
+       test $(srcdir) = . || ls -l * ;: Likewise.
+       test -f $(srcdir)/jprog/Main.java
+       test -f $(srcdir)/jprog/HelloStream.java
+       test -f $(srcdir)/jprog/PkgLocation.jin
+       test -f jprog/PkgLocation.java
+       test -f jprog/HelloStream.class
+       test -f jprog/Main.class
+       test -f jprog/PkgLocation.class
+       test -f jprog/classjprogclass.stamp
+
+test-installed:
+       ls -l $(jprogclassdir) ;: For debugging.
+       test -f $(jprogclassdir)/HelloStream.class
+       test -f $(jprogclassdir)/Main.class
+       test -f $(jprogclassdir)/PkgLocation.class
+       if find $(prefix) | grep '\.stamp$$'; then exit 1; else :; fi
+
+run-installed:
+       jprog_doing_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check
+
+check-local: test-built
+installcheck-local: test-installed run-installed
+
+.PHONY: test-built test-installed run-installed
+END
+
+## WRAPPER SCRIPT ##
+
+mkdir bin
+
+cat > bin/Makefile.am <<'END'
+bin_SCRIPTS = jprog
+
+edit_script = sed -e 's|[@]JAVA@|$(JAVA)|g' \
+                  -e 's|[@]jprogdatadir@|$(jprogdatadir)|g' \
+                  -e 's|[@]SHELL@|$(SHELL)|g' \
+                  -e 's|[@]PATH_SEPARATOR@|$(PATH_SEPARATOR)|g'
+
+jprog: jprog.sh
+       rm -f $@ $@-t
+       $(edit_script) `test -f '$@.sh' || echo $(srcdir)/`$@.sh >$@-t
+       chmod a-w $@-t && chmod a+x $@-t && mv -f $@-t $@
+       sed 's/^/ | /' $@ ;: for debugging.
+
+EXTRA_DIST = jprog.sh
+CLEANFILES = jprog
+END
+
+cat > bin/jprog.sh <<'END'
+#!@SHELL@
+CLASSPATH=${jprog_classpath-'@jprogdatadir@'}${CLASSPATH+"@PATH_SEPARATOR@$CLASSPATH"}
+export CLASSPATH
+case $# in
+  0) exec @JAVA@ jprog.Main;;
+  *) exec @JAVA@ jprog.Main "$@";;
+esac
+END
+
+## JAVA SOURCES ##
+
+mkdir jprog
+
+cat > jprog/Makefile.am <<'END'
+dist_jprogclass_JAVA = Main.java HelloStream.java
+nodist_jprogclass_JAVA = PkgLocation.java
+END
+
+cat > jprog/PkgLocation.jin <<'END'
+package jprog;
+public class PkgLocation {
+    public static String prefix() {
+        return new String("@prefix@");
+    }
+}
+END
+
+cat > jprog/Main.java <<'END'
+package jprog;
+import jprog.PkgLocation;
+import jprog.HelloStream;
+public class Main {
+    public static void main(String[] args) {
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("--print-prefix")) {
+                System.out.println(PkgLocation.prefix());
+            } else if (args[i].equals("--hello-stdout")) {
+                HelloStream.to(System.out);
+            } else if (args[i].equals("--hello-stderr")) {
+                HelloStream.to(System.err);
+            } else {
+               System.err.println("jprog: invalid option '" + args[i] +
+                                  "'");
+               System.exit(2);
+            }
+        }
+        System.exit(0);
+    }
+}
+END
+
+cat > jprog/HelloStream.java <<'END'
+package jprog;
+import java.io.PrintStream;
+class HelloStream {
+    public static void to(PrintStream stream) {
+        stream.println("Hello, Stream!");
+    }
+}
+END
+
+## TESTS ##
+
+mkdir tests
+
+cat > tests/Makefile.am <<'END'
+AM_TESTS_ENVIRONMENT = \
+    if test x"$$jprog_doing_installcheck" != x"yes"; then \
+        jprog_classpath='$(abs_top_builddir):$(abs_top_srcdir)'; \
+        export jprog_classpath; \
+        PATH='$(abs_top_builddir)/bin$(PATH_SEPARATOR)'$$PATH; \
+        export PATH; \
+    else \
+        unset jprog_classpath || :; \
+        PATH='$(prefix)/bin$(PATH_SEPARATOR)'$$PATH; \
+        export PATH; \
+    fi; \
+    config_time_prefix='@prefix@'; export config_time_prefix;
+
+TESTS = \
+  simple.test \
+  prefix.test \
+  stdout.test \
+  stderr.test \
+  badarg.test
+
+XFAIL_TESTS = badarg.test
+
+EXTRA_DIST = $(TESTS)
+END
+
+cat > tests/simple.test <<'END'
+#!/bin/sh
+jprog
+END
+
+cat > tests/prefix.test <<'END'
+#!/bin/sh
+jprefix=`jprog --print-prefix` || exit 1
+echo "$0: exp prefix: $config_time_prefix"
+echo "$0: got prefix: $jprefix"
+test x"$jprefix" = x"$config_time_prefix"
+END
+
+cat > tests/stdout.test <<'END'
+#!/bin/sh
+rc=0
+jprog --hello-stdout >stdout.out 2>stdout.err || { echo \$?=$?; rc=1; }
+sed 's/^/out:/' <stdout.out      # For debugging.
+sed 's/^/err:/' <stdout.err >&2  # Likewise.
+test -s stdout.err && rc=1
+test "`cat stdout.out`" = 'Hello, Stream!' || rc=1
+rm -f stdout.out stdout.err || rc=1
+exit $rc
+END
+
+cat > tests/stderr.test <<'END'
+#!/bin/sh
+rc=0
+jprog --hello-stderr >stderr.out 2>stderr.err || { echo \$?=$?; rc=1; }
+sed 's/^/out:/' <stderr.out      # For debugging.
+sed 's/^/err:/' <stderr.err >&2  # Likewise.
+test -s stderr.out && rc=1
+test "`cat stderr.err`" = 'Hello, Stream!' || rc=1
+rm -f stderr.out stderr.err || rc=1
+exit $rc
+END
+
+cat > tests/badarg.test <<'END'
+#!/bin/sh
+jprog --bad-argument
+END
+
+chmod a+x tests/*.test
+
+## DO CHECKS ##
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# To have the parallel testsuite more verbose.
+VERBOSE=yes; export VERBOSE
+
+./configure --prefix="`pwd`/_inst"
+cat jprog/PkgLocation.java # For debugging.
+$MAKE check
+$MAKE install
+$MAKE test-installed
+$MAKE run-installed
+$MAKE distcheck
+
+:
diff --git a/t/java-empty-classpath.sh b/t/java-empty-classpath.sh
new file mode 100755 (executable)
index 0000000..9ec48b2
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Java compilation works also when CLASSPATH is unset or empty at
+# compilation time.  See automake bug#9306.
+
+required=javac
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_CONFIG_SRCDIR([org/gnu/bug/Library.java])
+AC_CONFIG_FILES([
+    org/Makefile
+    org/gnu/Makefile
+    org/gnu/bug/Makefile
+])
+AC_OUTPUT
+END
+
+mkdir org org/gnu org/gnu/bug
+cat > Makefile.am <<END
+CLEANFILES = *.class
+SUBDIRS = org
+END
+echo SUBDIRS = gnu > org/Makefile.am
+echo SUBDIRS = bug > org/gnu/Makefile.am
+cat > org/gnu/bug/Makefile.am <<'END'
+JAVAROOT = ../../..
+dist_noinst_JAVA = Library.java Application.java
+END
+
+cat > org/gnu/bug/Library.java <<'END'
+package org.gnu.bug;
+public class Library
+{
+    public Library ()
+    {
+      // Nothing to do.
+    }
+    public static void doSomethingUseful (String arg)
+    {
+      System.out.println (arg);
+    }
+}
+END
+
+cat > org/gnu/bug/Application.java <<'END'
+import org.gnu.bug.*;
+public class Application
+{
+    public static void main (String args[])
+    {
+        Library lib = new Library ();
+        lib.doSomethingUseful ("PLUGH");
+    }
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+unset CLASSPATH || :
+$MAKE
+$MAKE clean
+
+CLASSPATH=''; export CLASSPATH
+$MAKE
+$MAKE clean
+
+unset CLASSPATH || :
+$MAKE distcheck
+
+:
diff --git a/t/java-extra.sh b/t/java-extra.sh
new file mode 100755 (executable)
index 0000000..f2fc76d
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check use of EXTRA with the JAVA primary.  Also test interaction
+# of JAVA with conditionals (it's natural to test it here, since
+# EXTRA_JAVA exists mostly for ensuring interoperation with Automake
+# conditionals).
+
+required=javac
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND], [test x"$cond" = x"yes"])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+javadir = $(pkgdatadir)/java
+
+EXTRA_JAVA = Class1.java Class2.java Class3.java
+
+java_JAVA = Class1.java
+
+if COND
+java_JAVA += Class2.java
+else !COND
+java_JAVA += Class3.java
+endif !COND
+
+Class3.java: Makefile
+       echo 'class Class3 {}' > $@
+CLEANFILES = Class3.java
+END
+
+echo "class Class1 {}" > Class1.java
+echo "class Class2 {}" > Class2.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure cond=yes
+$MAKE
+ls -l
+test -f Class1.class
+test -f Class2.class
+test ! -f Class3.class
+test ! -f Class3.java
+
+$MAKE distclean
+
+./configure cond=no
+$MAKE
+ls -l
+test -f Class1.class
+test ! -f Class2.class
+test -f Class3.class
+test -f Class3.java
+
+:
diff --git a/t/java-mix.sh b/t/java-mix.sh
new file mode 100755 (executable)
index 0000000..6ec9185
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the JAVA primary can be used freely in the same Makefile.am
+# with proper combinations of the 'dist_', 'nodist_' and 'nobase_'
+# modifiers.  Also check that '.java' files are not distributed by
+# default.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# This test does not require compilation of *.java files.
+JAVAC = false
+javadir = $(prefix)
+
+java_JAVA = Class.java
+dist_java_JAVA = ClassDist.java
+nodist_java_JAVA = ClassNodist.java
+
+nobase_java_JAVA = ClassNobase.java
+nobase_dist_java_JAVA = ClassNobaseDist.java
+nobase_nodist_java_JAVA = ClassNobaseNodist.java
+
+Class.java ClassNodist.java ClassNobase.java ClassNobaseNodist.java:
+       @echo '$@ should not be generated!' >&2; exit 1
+END
+
+: > ClassDist.java
+: > ClassNobaseDist.java
+
+$ACLOCAL
+$AUTOCONF
+# Automake used to display non-fatal warnings with this test, but
+# they were unexpected, so we want to consider them as failures in
+# this test.
+$AUTOMAKE 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+test ! -s stderr
+
+./configure
+
+$MAKE distdir
+ls -l $distdir # For debugging.
+test ! -f $distdir/Class.java
+test -f $distdir/ClassDist.java
+test ! -f $distdir/ClassNobase.java
+test -f $distdir/ClassNobaseDist.java
+test ! -f $distdir/ClassNodist.java
+test ! -f $distdir/ClassNobaseNodist.java
+
+:
diff --git a/t/java-no-duplicate.sh b/t/java-no-duplicate.sh
new file mode 100755 (executable)
index 0000000..416fdb9
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that some Java-related variables and rules are not repeatedly
+# defined.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+java_JAVA = a.java
+dist_java_JAVA = b.java
+nodist_java_JAVA = c.java
+nobase_java_JAVA = d.java
+nobase_dist_java_JAVA = e.java
+nobase_nodist_java_JAVA = f.java
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$EGREP -i '\.stamp|\.class|java|classpath' Makefile.in # For debugging.
+
+for var in JAVAC JAVAROOT CLASSPATH_ENV am__java_sources; do
+  grep "^$var =" Makefile.in
+  test `grep -c "^[$sp$tab]*$var[$sp$tab]*=" Makefile.in` = 1
+done
+
+grep '^classjava\.stamp:' Makefile.in
+test `grep -c "class.*java.*\.stamp.*:" Makefile.in` = 1
+
+:
diff --git a/t/java-nobase.sh b/t/java-nobase.sh
new file mode 100755 (executable)
index 0000000..ff72a13
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test support of 'nobase_' with the 'JAVA' primary.
+
+required=javac
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+nobase_java_JAVA = sub/subsub/Foo.java
+nobase_dist_java_JAVA = sub/Bar.java
+nobase_nodist_java_JAVA = sub2/Baz.java
+
+# Java files are not distributed by default.
+EXTRA_DIST = sub/subsub/Foo.java
+
+sub2/Baz.java:
+       rm -f $@ $@-t
+       test -d sub2 || mkdir sub2
+       echo 'class Baz {}' > $@-t
+       chmod a-w $@-t && mv -f $@-t $@
+
+.PHONY: test-install
+test-install:
+       find $(prefix) ;: For debugging.
+       test   -f $(javadir)/sub/subsub/Foo.class
+       test   -f $(javadir)/sub/Bar.class
+       test   -f $(javadir)/sub2/Baz.class
+installcheck-local: test-install
+DISTCLEANFILES = sub2/Baz.java
+END
+
+mkdir sub sub/subsub
+echo 'class Foo {}' > sub/subsub/Foo.java
+echo 'class Bar {}' > sub/Bar.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --prefix="`pwd`"/_inst
+$MAKE check
+$MAKE install
+$MAKE test-install
+$MAKE distcheck
+
+:
diff --git a/t/java-noinst.sh b/t/java-noinst.sh
new file mode 100755 (executable)
index 0000000..b11e6a0
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that noinst_JAVA causes generated *.class files not to
+# be installed.
+
+required=javac
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+noinst_JAVA = 1.java
+dist_noinst_JAVA = 2.java
+nodist_noinst_JAVA = 3.java
+nobase_noinst_JAVA = 4.java
+nobase_dist_noinst_JAVA = 5.java
+nobase_nodist_noinst_JAVA = 6.java
+END
+
+for i in 1 2 3 4 5 6; do
+  echo "class Class$i {}" > $i.java
+done
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure --prefix="`pwd`/_inst"
+
+$MAKE
+ls -l
+for i in 1 2 3 4 5 6; do
+  test -f Class$i.class
+done
+
+$MAKE install
+test -d _inst && { ls -l _inst; Exit 1; }
+
+:
diff --git a/t/java-rebuild.sh b/t/java-rebuild.sh
new file mode 100755 (executable)
index 0000000..7672943
--- /dev/null
@@ -0,0 +1,124 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test rebuild rules for Java class files.
+
+required='javac'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AM_JAVACFLAGS = -verbose
+foodir = $(datadir)/java
+foo_JAVA = a.java
+dist_foo_JAVA = d.java
+nodist_foo_JAVA = n.java
+nobase_foo_JAVA = Nobase.java
+nobase_dist_foo_JAVA = NobaseDist.java
+nobase_nodist_foo_JAVA = NobaseNoDist.java
+END
+
+echo 'class _x {}' > a.java
+echo 'class x_ {}' > d.java
+echo 'class a {} class d {}' > n.java
+echo 'class Nobase_Foo {} class Nobase_Bar {}' > Nobase.java
+echo 'class NobaseDist {}' > NobaseDist.java
+echo 'class NobaseNoDist {}' > NobaseNoDist.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+all_classes='_x x_ a d Nobase_Foo Nobase_Bar NobaseDist NobaseNoDist'
+
+for vpath in : false; do
+
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE
+  ls -l # For debugging.
+
+  # Sanity check.
+  test -f classfoo.stamp
+  for cls in $all_classes; do
+    test -f $cls.class
+  done
+
+  # When the stampfile is removed, all the *.class files should
+  # be considered out-of-date.
+  echo timestamp > older
+  $sleep
+  rm -f classfoo.stamp
+  $MAKE
+  for cls in $all_classes; do
+    is_newest $cls.class older
+  done
+
+  # When only a java file is modified, only the *.class files derived from
+  # it should be updated.
+  # The strings we loop on here have the following format:
+  # "JAVA-FILES-TO-BE-TOUCHED -- CLASSES-THAT-SHOULD-BE-UPDATED"
+  for args in \
+    'a -- _x' \
+    'd -- x_' \
+    'n -- a d' \
+    'a d Nobase -- _x x_ Nobase_Foo Nobase_Bar' \
+    'n NobaseDist -- a d NobaseDist' \
+    'd NobaseNoDist -- x_ NobaseNoDist' \
+    "a d n Nobase NobaseDist NobaseNoDist -- $all_classes" \
+  ; do
+    set $args
+    touched_javas=
+    while test $# -gt 0; do
+      if test x"$1" = x"--"; then
+        shift
+        break
+      else
+        touched_javas="$touched_javas $1"
+        shift
+      fi
+    done
+    updated_classes=$*
+    echo timestamp > older
+    $sleep
+    for j in $touched_javas; do
+      touch $srcdir/$j.java
+    done
+    $MAKE
+    is_newest classfoo.stamp older
+    for cls in $all_classes; do
+      case " $updated_classes " in
+        *" $cls "*) is_newest $cls.class older;;
+        *) is_newest older $cls.class;;
+      esac
+    done
+  done # $args ...
+
+  cd $srcdir
+
+done # $vpath ...
+
+:
diff --git a/t/java-sources.sh b/t/java-sources.sh
new file mode 100755 (executable)
index 0000000..2de9683
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test definition of automake-generated private Makefile variable
+# '$(am__java_sources)'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+foodir = $(prefix)
+
+foo_JAVA = a.java
+dist_foo_JAVA = b.java
+nodist_foo_JAVA = c.java
+nobase_foo_JAVA = d.java
+nobase_dist_foo_JAVA = e.java
+nobase_nodist_foo_JAVA = f.java
+
+.PHONY: debug
+debug:
+       @echo 'am__java_sources: "$(am__java_sources)"'
+got:
+       @lst='$(am__java_sources)'; \
+         for f in $$lst; do echo $$f; done | sort > $@
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+cat > exp << 'END'
+a.java
+b.java
+c.java
+d.java
+e.java
+f.java
+END
+
+./configure
+$MAKE debug
+$MAKE got
+
+cat got
+cat exp
+diff exp got
+
+:
diff --git a/t/java-uninstall.sh b/t/java-uninstall.sh
new file mode 100755 (executable)
index 0000000..fb6bfa1
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check uninstallation of Java class files.
+
+required=javac
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+javadir = $(prefix)/java
+java_JAVA = Foo.java
+nobase_java_JAVA = Foo2.java
+nobase_dist_java_JAVA = Bar.java
+nodist_java_JAVA = Baz.java
+
+# Java files are not distributed by default, so we distribute
+# one "by hand" ...
+EXTRA_DIST = Foo.java
+# ... and make the other one generated.
+Foo2.java:
+       rm -f $@ $@-t
+       echo 'class bClass {}' > $@-t
+       chmod a-w $@-t && mv -f $@-t $@
+
+# Explicitly declared as 'nodist_', so generate it.
+Baz.java:
+       rm -f $@ $@-t
+       echo 'class Baz {}' > $@-t
+       echo 'class Baz2 {}' >> $@-t
+       chmod a-w $@-t && mv -f $@-t $@
+
+DISTCLEANFILES = Baz.java Foo2.java
+END
+
+echo 'class aClass {}' > Foo.java
+echo 'class Zardoz {}' > Bar.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --prefix="`pwd`"/_inst
+javadir=_inst/java
+
+check_uninstallation()
+{
+  test ! -r $javadir/aClass.class
+  test ! -r $javadir/bClass.class
+  test ! -r $javadir/Zardoz.class
+  test ! -r $javadir/Baz.class
+  test ! -r $javadir/Baz2.class
+  test   -f $javadir/Foo.class
+  test   -f $javadir/Bar.class
+  test   -f $javadir/xClass.class
+}
+
+$MAKE
+ls -l
+$MAKE install
+: > $javadir/Foo.class
+: > $javadir/Bar.class
+: > $javadir/xClass.class
+ls -l $javadir
+$MAKE uninstall
+ls -l $javadir
+check_uninstallation
+
+# FIXME: "make uninstall" should continue to work also after "make clean",
+#        but currently this doesn't happen.  See automake bug#8540.
+$MAKE install
+ls -l $javadir
+$MAKE clean
+ls -l
+$MAKE uninstall
+ls -l $javadir
+#check_uninstallation
+
+$MAKE distcheck
+
+:
diff --git a/t/java.sh b/t/java.sh
new file mode 100755 (executable)
index 0000000..16b1250
--- /dev/null
+++ b/t/java.sh
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Minimal test of Java functionality.
+
+required=javac
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+dist_java_JAVA = a.java b.java
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+$EGREP '\.stamp|class' Makefile.in # For debugging.
+grep '^all[-a-z]*:.*classjava\.stamp' Makefile.in
+test `grep -c '^all[-a-z]*:.*classjava\.stamp' Makefile.in` -eq 1
+
+cat >a.java <<EOF
+class a
+{
+}
+EOF
+
+cat >b.java <<EOF
+class b
+{
+}
+EOF
+
+./configure --prefix "`pwd`"
+$MAKE distcheck
diff --git a/t/java2.sh b/t/java2.sh
new file mode 100755 (executable)
index 0000000..c0b9f95
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that Java rules doesn't attempt to run javac when there is
+# no classes to compile.
+# Report from Braden McDaniel.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL(WITH_JDK, false)
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+JAVAC = false
+JAVAROOT = $(top_builddir)/java
+
+JAVA_FILES = MyClass1.java
+
+if WITH_JDK
+noinst_JAVA = $(JAVA_FILES)
+endif
+
+EXTRA_DIST = $(JAVA_FILES)
+END
+
+: >MyClass1.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
diff --git a/t/java3.sh b/t/java3.sh
new file mode 100755 (executable)
index 0000000..7d94635
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that Java rules don't attempt to compile or install
+# *.java files when there are none.
+# Report from Johannes Nicolai (PR/441).
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([WHO_CARES], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if WHO_CARES
+JAVA_FILES = MyClass1.java
+endif
+
+javadir = $(prefix)/java
+java_JAVA = $(JAVA_FILES)
+END
+
+cat > MyClass1.java << 'END'
+class MyClass1 { // Deliberately missing right curly bracket.
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd/_inst"
+$MAKE
+$MAKE install
+ls -l .
+find . -name '*.class' | grep . && Exit 1
+# If we have nothing to install, we shouldn't create any installation
+# directory.  Related to automake bug#11030.
+test ! -d _inst
+$MAKE uninstall
+$MAKE distcheck
+
+:
diff --git a/t/javadir-undefined.sh b/t/javadir-undefined.sh
new file mode 100755 (executable)
index 0000000..e2ed7f6
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Use of JAVA primary should not allow the use of the 'java_' prefix
+# when $(javadir) is undefined.  Otherwise, we could silently end up
+# with a broken Makefile.in (where "make install" doesn't install
+# the *.class files).
+# See automake bug#8461.
+
+. ./defs || Exit 1
+
+$ACLOCAL
+
+echo java_JAVA = a.java > Makefile.am
+AUTOMAKE_fails
+grep '^Makefile\.am:1:.*java_JAVA.*javadir.* undefined' stderr
+$EGREP '(uninitialized|line) ' stderr && Exit 1
+
+echo javadir = a-dummy-value >> Makefile.am
+$AUTOMAKE
+
+:
diff --git a/t/javaflags.sh b/t/javaflags.sh
new file mode 100755 (executable)
index 0000000..364b21f
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for $(JAVACFLAGS) and $(AM_JAVACFLAGS).
+
+. ./defs || Exit 1
+
+cat > fake-javac <<'END'
+#!/bin/sh
+echo "$*" > javaflags.list
+END
+chmod a+x fake-javac
+
+# Remove JAVAC from the environment, so that it won't interfere
+# with 'make -e' below.
+unset JAVAC || :
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+# Simulate presence of the java compiler using our fake-javac script.
+AC_SUBST([JAVAC], ['$(abs_top_srcdir)'/fake-javac])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+foodir = $(prefix)
+foo_JAVA = bar.java
+AM_JAVACFLAGS = __am_flags__
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '\$(JAVACFLAGS).*\$(AM_JAVACFLAGS)' Makefile.in && Exit 1
+
+: > bar.java
+
+$AUTOCONF
+./configure
+env JAVACFLAGS=__user_flags__ $MAKE -e
+
+ls -l
+
+cat javaflags.list
+grep '__am_flags__.*__user_flags__' javaflags.list
+
+:
diff --git a/t/javaprim.sh b/t/javaprim.sh
new file mode 100755 (executable)
index 0000000..fe55535
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure JAVA variable can be defined by AC_SUBST.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([JAVA])
+END
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+java_JAVA = a.java b.java c.java
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep -i java Makefile.in # For debugging.
+grep '^JAVA = *@JAVA@ *$' Makefile.in
+
+:
diff --git a/t/javasubst.sh b/t/javasubst.sh
new file mode 100755 (executable)
index 0000000..455b8c6
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure redefining JAVAC with AC_SUBST works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([JAVAC])
+END
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+java_JAVA = a.java b.java c.java
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep -i java Makefile.in # For debugging.
+grep '^JAVAC = *@JAVAC@ *$' Makefile.in
+
+:
diff --git a/t/ldadd.sh b/t/ldadd.sh
new file mode 100755 (executable)
index 0000000..8e16fb3
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure incorrect LDADD usage is diagnosed.
+
+required=libtool
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_LIBTOOL
+AC_SUBST([LTLIBOBJS], [q.lo])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libtu.la
+libtu_la_SOURCES = foo.c
+libtu_la_LDADD = @LTLIBOBJS@
+END
+
+: > ltconfig
+: > ltmain.sh
+: > config.guess
+: > config.sub
+: > q.c
+
+$ACLOCAL || Exit 1
+AUTOMAKE_fails -Wno-extra-portability
+grep "libtu_la_LDADD" stderr
+grep " use 'libtu_la_LIBADD'" stderr
+
+:
diff --git a/t/ldflags.sh b/t/ldflags.sh
new file mode 100755 (executable)
index 0000000..269af34
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for LDFLAGS in conditional.
+# PR 77.
+
+required=libtool
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_SUBST([LTLIBOBJS], [q.o])
+AM_CONDITIONAL([USE_SWIG], [:])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if USE_SWIG
+lib_LTLIBRARIES = libtu.la
+libtu_la_SOURCES = foo.c
+libtu_la_LDFLAGS = -module
+endif
+END
+
+: > ltconfig
+: > ltmain.sh
+: > ar-lib
+: > config.guess
+: > config.sub
+: > q.c
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/lex-clean-cxx.sh b/t/lex-clean-cxx.sh
new file mode 100755 (executable)
index 0000000..8834a74
--- /dev/null
@@ -0,0 +1,126 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that C++ source files derived from non-distributed Lex sources
+# are cleaned by "make clean", while C++ source files derived from
+# distributed Lex sources are cleaned by "make maintainer-clean".
+# See also sister test 'lex-clean.test'.
+
+required='c++ lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz qux
+
+foo_SOURCES = mainfoo.cc parsefoo.lxx
+
+bar_SOURCES = mainbar.cpp parsebar.ll
+bar_LFLAGS = $(AM_LFLAGS)
+
+baz_SOURCES = mainbaz.c++
+nodist_baz_SOURCES = parsebaz.l++
+
+qux_SOURCES = mainqux.cxx
+nodist_qux_SOURCES = parsequx.lpp
+qux_LFLAGS = $(AM_LFLAGS)
+
+parsebaz.l++ parsequx.lpp:
+       cp $(srcdir)/parsefoo.lxx $@
+
+CLEANFILES = parsebaz.l++ parsequx.lpp
+
+LDADD = $(LEXLIB)
+END
+
+cat > parsefoo.lxx << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+int isatty (int fd) { return 0; }
+%}
+%%
+"GOOD"   return EOF;
+.
+%%
+int yywrap (void)
+{
+  return 1;
+}
+END
+cp parsefoo.lxx parsebar.ll
+
+cat > mainfoo.cc << 'END'
+// This file should contain valid C++ but invalid C.
+using namespace std;
+int main (int argc, char **argv)
+{
+  extern int yylex (void);
+  return yylex ();
+}
+END
+cp mainfoo.cc mainbar.cpp
+cp mainfoo.cc mainbaz.c++
+cp mainfoo.cc mainqux.cxx
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+cp config.status config.sav
+
+$MAKE
+ls -l
+# Sanity checks.
+test -f parsefoo.cxx
+test -f bar-parsebar.cc
+test -f parsebaz.l++
+test -f parsebaz.c++
+test -f parsequx.lpp
+test -f qux-parsequx.cpp
+
+for target in clean distclean; do
+  $MAKE $target
+  ls -l
+  test -f parsefoo.cxx
+  test -f bar-parsebar.cc
+  test ! -r parsebaz.l++
+  test ! -r parsebaz.c++
+  test ! -r parsequx.lpp
+  test ! -r qux-parsequx.cpp
+done
+
+cp config.sav config.status
+./config.status # re-create Makefile
+
+$MAKE maintainer-clean
+ls -l
+test -f parsefoo.lxx
+test -f parsebar.ll
+test ! -r parsefoo.cxx
+test ! -r bar-parsebar.cc
+test -f parsefoo.lxx
+test -f parsebar.ll
+test ! -r parsefoo.cxx
+test ! -r bar-parsebar.cc
+
+:
diff --git a/t/lex-clean.sh b/t/lex-clean.sh
new file mode 100755 (executable)
index 0000000..18cf32e
--- /dev/null
@@ -0,0 +1,114 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that .c files derived from non-distributed .l sources
+# are cleaned by "make clean", while .c files derived from
+# distributed .l sources are cleaned by "make maintainer-clean".
+# See also sister test 'lex-clean-cxx.test'.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz qux
+
+foo_SOURCES = main.c lexer.l
+
+bar_SOURCES = main.c lexer.l
+bar_LFLAGS = $(AM_LFLAGS)
+
+baz_SOURCES = main.c
+nodist_baz_SOURCES = baz.l
+
+qux_SOURCES = main.c
+nodist_qux_SOURCES = baz.l
+qux_LFLAGS = $(AM_LFLAGS)
+
+baz.l:
+       cp $(srcdir)/lexer.l $@
+
+CLEANFILES = baz.l
+
+LDADD = $(LEXLIB)
+END
+
+cat > lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"GOOD"   return EOF;
+.
+END
+
+cat > main.c << 'END'
+int main (void)
+{
+  return yylex ();
+}
+
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+cp config.status config.sav
+
+$MAKE
+ls -l
+# Sanity checks.
+test -f lexer.l
+test -f lexer.c
+test -f bar-lexer.c
+test -f baz.l
+test -f baz.c
+test -f qux-baz.c
+
+for target in clean distclean; do
+  $MAKE $target
+  ls -l
+  test -f lexer.l
+  test -f lexer.c
+  test -f bar-lexer.c
+  test ! -r baz.l
+  test ! -r baz.c
+  test ! -r qux-baz.c
+done
+
+cp config.sav config.status
+./config.status # re-create Makefile
+
+$MAKE maintainer-clean
+ls -l
+test -f lexer.l
+test ! -r lexer.c
+test ! -r bar-lexer.c
+
+:
diff --git a/t/lex-depend-cxx.sh b/t/lex-depend-cxx.sh
new file mode 100755 (executable)
index 0000000..7bdfdf9
--- /dev/null
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure dependencies work with Lex/C++.
+# Test synthesized from PR automake/6.
+
+required='c++ lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AM_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = joe moe
+joe_SOURCES = joe.ll
+moe_SOURCES = moe.l++
+LDADD = $(LEXLIB)
+
+.PHONY: test-deps-exist
+test-deps-exist:
+       ls -l $(DEPDIR) ;: For debugging.
+       test -f $(DEPDIR)/joe.Po
+       test -f $(DEPDIR)/moe.Po
+
+.PHONY: test-obj-updated
+test-obj-updated: joe.$(OBJEXT) moe.$(OBJEXT)
+       stat older my-hdr.hxx joe.$(OBJEXT) moe.$(OBJEXT) || :
+       test `ls -t older joe.$(OBJEXT) | sed 1q` = joe.$(OBJEXT)
+       test `ls -t older moe.$(OBJEXT) | sed 1q` = moe.$(OBJEXT)
+END
+
+cat > joe.ll << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+int isatty (int fd) { return 0; }
+%}
+%%
+"foo" return EOF;
+.
+%%
+#include "my-hdr.hxx"
+int yywrap (void)
+{
+  return 1;
+}
+int main (int argc, char **argv)
+{
+  return 0;
+}
+END
+
+cp joe.ll moe.l++
+
+cat > my-hdr.hxx <<'END'
+// This header contains deliberately invalid C (but valid C++).
+using namespace std;
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+$FGREP joe.Po Makefile.in
+$FGREP moe.Po Makefile.in
+
+$AUTOCONF
+# Try to enable dependency tracking if possible, even if that means
+# using slow dependency extractors.
+./configure --enable-dependency-tracking
+
+$MAKE test-deps-exist
+$MAKE
+
+: > older
+$sleep
+touch my-hdr.hxx
+$MAKE test-obj-updated
+
+:
diff --git a/t/lex-depend-grep.sh b/t/lex-depend-grep.sh
new file mode 100755 (executable)
index 0000000..0fe32ed
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure dependencies for Lex and C/C++ does not break
+# in obvious ways.  See PR automake/6, and related semantic tests
+# 'lex-depend.test' and 'lex-depend-cxx.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_LEX
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zoo foo
+zoo_SOURCES = joe.ll
+foo_SOURCES = moe.l
+noinst_PROGRAMS = zardoz
+zardoz_SOURCES = _0.l _1.ll _2.lxx _3.l++ _4.lpp
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+$EGREP '([mj]oe|_[01234]|include|\.P)' Makefile.in # For debugging.
+
+for x in joe moe _0 _1 _2 _3 _4; do
+  grep "include.*$x\.Po" Makefile.in
+done
+
+:
diff --git a/t/lex-depend.sh b/t/lex-depend.sh
new file mode 100755 (executable)
index 0000000..fce198d
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure automatic dependency tracking work with Lex/C.
+# Test suggested by PR automake/6.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zoo
+zoo_SOURCES = joe.l
+LDADD = $(LEXLIB)
+
+.PHONY: test-deps-exist
+test-deps-exist:
+       ls -l $(DEPDIR) ;: For debugging.
+       test -f $(DEPDIR)/joe.Po
+
+.PHONY: test-obj-updated
+test-obj-updated: joe.$(OBJEXT)
+       stat older my-hdr.h joe.$(OBJEXT) || : For debugging.
+       test `ls -t older joe.$(OBJEXT) | sed 1q` = joe.$(OBJEXT)
+END
+
+cat > joe.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"foo" return EOF;
+.
+%%
+#include "my-hdr.h"
+int main (void)
+{
+  printf("%s\n", MESSAGE);
+  return 0;
+}
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+cat > my-hdr.h <<'END'
+#include <stdio.h>
+#define MESSAGE "Hello, World!"
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+$FGREP joe.Po Makefile.in
+
+$AUTOCONF
+# Try to enable dependency tracking if possible, even if that means
+# using slow dependency extractors.
+./configure --enable-dependency-tracking
+
+$MAKE test-deps-exist
+$MAKE
+
+: > older
+$sleep
+touch my-hdr.h
+$MAKE test-obj-updated
+
+:
diff --git a/t/lex-lib-external.sh b/t/lex-lib-external.sh
new file mode 100755 (executable)
index 0000000..21802c5
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that we can get use the 'yywrap' function from a system-wide
+# library, if that's available.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lexer
+lexer_SOURCES = foo.l
+lexer_LDADD = $(LEXLIB)
+
+.PHONY: have-lexlib
+have-lexlib:
+       test x'$(LEXLIB)' != x
+       echo 'int main (void) { return yywrap (); }' > x.c
+       $(CC) -c x.c
+       $(CC) x.$(OBJEXT) $(LEXLIB)
+       rm -f x.c *.$(OBJEXT) *.o *.out *.exe
+END
+
+cat > foo.l <<'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"GOOD"   return EOF;
+.
+%%
+int main (void)
+{
+  /* We don't use a 'while' loop here (like a real lexer would do)
+     to avoid possible hangs. */
+  if (yylex () == EOF)
+    return 0;
+  else
+    return 1;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE have-lexlib || skip_ "no system-wide lex library found"
+
+# Program should build and run and distribute.
+$MAKE all
+if cross_compiling; then :; else
+  echo GOOD | ./lexer
+  echo BAD | ./lexer && Exit 1
+  : For shells with busted 'set -e'.
+fi
+yl_distcheck
+
+:
diff --git a/t/lex-lib.sh b/t/lex-lib.sh
new file mode 100755 (executable)
index 0000000..0320f75
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that we can provide a personal 'yywrap' function in a custom
+# library.
+# See also test 'lex-lib-external.test'.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+LEXLIB=libmylex.a
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lexer
+lexer_SOURCES = foo.l
+lexer_LDADD = $(LEXLIB)
+EXTRA_lexer_DEPENDENCIES = $(LEXLIB)
+noinst_LIBRARIES = libmylex.a
+libmylex_a_SOURCES = mu.c
+END
+
+cat > mu.c << 'END'
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+cat > foo.l <<'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END" return EOF;
+.
+%%
+int main (void)
+{
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+test -f foo.c
+test -f libmylex.a
+
+:
diff --git a/t/lex-libobj.sh b/t/lex-libobj.sh
new file mode 100755 (executable)
index 0000000..3f4b860
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that we can provide a personal 'yywrap' function through the
+# LIBOBJ machinery.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_PROG_LEX
+save_LIBS=$LIBS
+LIBS="$LEXLIB $LIBS"
+AC_REPLACE_FUNCS([yywrap])
+LIBS=$save_LIBS
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.l
+foo_LDADD = $(LEXLIB) $(LIBOBJS)
+END
+
+cat > yywrap.c << 'END'
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+cat > foo.l <<'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END" return EOF;
+.
+%%
+int main (void)
+{
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+grep LIBOBJS Makefile # For debugging.
+$MAKE
+$MAKE distclean
+
+# Force "no system lex library".  Setting LEXLIB to a non-empty value
+# ensures that configure won't search for a "lex library", and simply
+# rely on the LEXLIB to provide it, if needed.  So, by setting LEXLIB
+# to a blank but non-empty value we can fool configure into thinking
+# that no system-level library providing a 'yywrap' function is
+# available.  See also discussion on automake bug#11306.
+./configure LEXLIB=' '
+grep LIBOBJS Makefile # For debugging.
+grep '^LIBOBJS *=.*yywrap.*\.o' Makefile # Sanity check.
+$MAKE
+
+yl_distcheck
+
+:
diff --git a/t/lex-line.sh b/t/lex-line.sh
new file mode 100755 (executable)
index 0000000..a95faf3
--- /dev/null
@@ -0,0 +1,134 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake lex support ensures that lex-generated C
+# files use correct "#line" directives.  Try also with the
+# 'subdir-object' option enabled.
+# See also sister test 'yacc-line.test'.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+mkdir dir sub sub/dir
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+bin_PROGRAMS = foo bar
+LDADD = $(LEXLIB)
+bar_LFLAGS = -v
+foo_SOURCES = zardoz.l
+bar_SOURCES = dir/quux.l
+## Avoid spurious failures with Solaris make.
+zardoz.@OBJEXT@: zardoz.c
+bar-quux.@OBJEXT@: bar-quux.c
+END
+
+cat > sub/Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+noinst_PROGRAMS = foo bar
+## We already used $(LEXLIB) above, so try @LEXLIB@ now.
+LDADD = @LEXLIB@
+foo_LFLAGS = -v
+foo_SOURCES = zardoz.l
+bar_SOURCES = dir/quux.l
+## Avoid spurious failures with Solaris make.
+foo-zardoz.@OBJEXT@: foo-zardoz.c
+dir/quux.@OBJEXT@: dir/quux.c
+END
+
+cat > zardoz.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END"  return EOF;
+.
+%%
+int main ()
+{
+  while (yylex () != EOF)
+    ;
+  return 0;
+}
+
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+cp zardoz.l dir/quux.l
+cp zardoz.l sub/zardoz.l
+cp zardoz.l sub/dir/quux.l
+
+c_outputs='zardoz.c bar-quux.c sub/foo-zardoz.c sub/dir/quux.c'
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+for vpath in : false; do
+
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE
+
+  # For debugging,
+  ls -l . sub sub/dir
+  $EGREP 'line|\.l' $c_outputs
+
+  grep '#.*line.*build.*\.l' $c_outputs && Exit 1
+  # Adjusted "#line" should not contain reference to the absolute
+  # srcdir.
+  $EGREP '#.*line *"?/.*\.l' $c_outputs && Exit 1
+  # Adjusted "#line" should not contain reference to the default
+  # output file names, e.g., 'lex.yy.c'.
+  grep '#.*line.*lex\.yy' $c_outputs && Exit 1
+  # Look out for a silly regression.
+  grep "#.*\.l.*\.l" $c_outputs && Exit 1
+  if $vpath; then
+    grep '#.*line.*"\.\./zardoz\.l"' zardoz.c
+    grep '#.*line.*"\.\./dir/quux\.l"' bar-quux.c
+    grep '#.*line.*"\.\./\.\./sub/zardoz\.l"' sub/foo-zardoz.c
+    grep '#.*line.*"\.\./\.\./sub/dir/quux\.l"' sub/dir/quux.c
+  else
+    grep '#.*line.*"zardoz\.l"' zardoz.c
+    grep '#.*line.*"dir/quux\.l"' bar-quux.c
+    grep '#.*line.*"zardoz\.l"' sub/foo-zardoz.c
+    grep '#.*line.*"dir/quux\.l"' sub/dir/quux.c
+  fi
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/lex-nodist.sh b/t/lex-nodist.sh
new file mode 100755 (executable)
index 0000000..2e90032
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Checks for .c files derived from non-distributed .l sources.
+# The test 'lex-pr204.test' does similar check with AM_MAINTAINER_MODE
+# enabled.
+# The tests 'yacc-nodist.test' and 'yacc-pr204.test' does similar checks
+# for yacc-generated .c and .h files.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+dnl Sister test 'lex-pr204.test' should use 'AC_PROG_LEX' instead.
+AM_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+.PHONY: test-build test-dist
+test-build: all
+       ls -l
+       test -f lexer.l
+       test -f lexer.c
+test-dist: distdir
+       ls -l $(distdir)
+       test ! -r $(distdir)/lexer.l
+       test ! -r $(distdir)/lexer.c
+check-local: test-build test-dist
+
+lexer.l:
+       rm -f $@ $@-t
+       :; { : \
+         && echo '%{' \
+         && echo '#define YY_NO_UNISTD_H 1' \
+         && echo '%}' \
+         && echo '%%' \
+         && echo '"GOOD" return EOF;' \
+         && echo '.'; \
+       } > $@-t
+       chmod a-w $@-t && mv -f $@-t $@
+
+bin_PROGRAMS = prog
+prog_SOURCES = main.c
+nodist_prog_SOURCES = lexer.l
+prog_LDADD = $(LEXLIB)
+CLEANFILES = $(nodist_prog_SOURCES)
+END
+
+cat > main.c << 'END'
+int main ()
+{
+  return yylex ();
+}
+
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+$MAKE test-build
+$MAKE test-dist
+
+# But the distribution must work correctly, assuming the user has
+# the proper tools to process yacc files.
+$MAKE distcheck
+
+:
diff --git a/t/lex-noyywrap.sh b/t/lex-noyywrap.sh
new file mode 100755 (executable)
index 0000000..1c4a13b
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check Lex support with flex using the '%noyywrap' option.
+
+required='cc flex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.l
+
+.PHONY: test-no-lexlib
+check-local: test-no-lexlib
+test-no-lexlib:
+       test x'$(LEXLIB)' = x'none needed'
+END
+
+cat > foo.l << 'END'
+%option noyywrap
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"GOOD"   return EOF;
+.
+%%
+int main (void)
+{
+  /* We don't use a 'while' loop here (like a real lexer would do)
+     to avoid possible hangs. */
+  if (yylex () == EOF)
+    return 0;
+  else
+    return 1;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure LEXLIB="none needed"
+
+# Program should build and run.
+$MAKE
+if cross_compiling; then :; else
+  echo GOOD | ./foo
+  echo BAD | ./foo && Exit 1
+  : For shells with busted 'set -e'.
+fi
+
+# Sanity check on distribution.
+yl_distcheck DISTCHECK_CONFIGURE_FLAGS='LEXLIB="none needed"'
+
+:
diff --git a/t/lex-pr204.sh b/t/lex-pr204.sh
new file mode 100755 (executable)
index 0000000..3ebb572
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Related to PR 204.
+# C sources derived from nodist_ lex sources should not be distributed.
+# See also related test 'lex-nodist.test'.
+# The tests 'yacc-nodist.test' and 'yacc-pr204.test' does similar checks
+# for yacc-generated .c and .h files.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AM_MAINTAINER_MODE
+AC_PROG_CC
+dnl We use AC_PROG_LEX deliberately.
+dnl Sister 'lex-nodist.test' should use 'AM_PROG_LEX' instead.
+AC_PROG_LEX
+AC_OUTPUT
+EOF
+
+# The LEXER2 intermediate variable is there to make sure Automake
+# matches 'nodist_' against the right variable name...
+cat > Makefile.am << 'EOF'
+EXTRA_PROGRAMS = foo
+LEXER2 = lexer2.l
+nodist_foo_SOURCES = lexer.l $(LEXER2)
+
+distdirtest: distdir
+       test ! -f $(distdir)/lexer.c
+       test ! -f $(distdir)/lexer.l
+       test ! -f $(distdir)/lexer.h
+       test ! -f $(distdir)/lexer2.c
+       test ! -f $(distdir)/lexer2.l
+       test ! -f $(distdir)/lexer2.h
+EOF
+
+cat > lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"GOOD"   return EOF;
+.
+%%
+int main (void)
+{
+  return yylex ();
+}
+END
+
+cp lexer.l lexer2.l
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE distdirtest
+
+# Make sure lexer.c and lexer2.c are still targets.
+$MAKE lexer.c lexer2.c
+test -f lexer.c
+test -f lexer2.c
+
+# Ensure the rebuild rule works despite AM_MAINTAINER_MODE, because
+# it's a nodist_ lexer.
+$sleep
+touch lexer.l lexer2.l
+$sleep
+$MAKE lexer.c lexer2.c
+stat lexer.c lexer.l lexer2.c lexer2.l || : # For debugging.
+test `ls -t lexer.c lexer.l | sed 1q` = lexer.c
+test `ls -t lexer2.c lexer2.l | sed 1q` = lexer2.c
+
+:
diff --git a/t/lex-subobj-nodep.sh b/t/lex-subobj-nodep.sh
new file mode 100755 (executable)
index 0000000..44c9776
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure subdirs for subdir scanners are generated when subdir-objects
+# are used, even when dependency tracking is disabled.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >>configure.ac <<\END
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat >Makefile.am <<\END
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = p1 p2
+p1_SOURCES = sub1/s1.l
+p2_SOURCES = sub2/s2.l
+p2_CPPFLAGS = -DWHATEVER
+END
+
+mkdir sub1 sub2
+
+cat >sub1/s1.l <<\END
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END"   return EOF;
+.
+%%
+int main (void)
+{
+  while (yylex () != EOF)
+    ;
+  return 0;
+}
+
+int yywrap(void)
+{
+  return 1;
+}
+END
+
+cp sub1/s1.l sub2/s2.l
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+mkdir build
+cd build
+../configure --disable-dependency-tracking
+$MAKE sub1/s1.c
+$MAKE sub2/s2.c
+rm -rf sub1 sub2
+$MAKE
+
+:
diff --git a/t/lex.sh b/t/lex.sh
new file mode 100755 (executable)
index 0000000..d3d256a
--- /dev/null
+++ b/t/lex.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_LEX
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zot
+zot_SOURCES = joe.l
+LDADD = @LEXLIB@
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+# Test to make sure that lex source generates correct target.
+$FGREP '$(LEX)' Makefile.in
+
+# Test to make sure that lex source generates correct clean rule.
+# From Ralf Corsepius.
+$FGREP joel Makefile.in && Exit 1
+
+:
diff --git a/t/lex2.sh b/t/lex2.sh
new file mode 100755 (executable)
index 0000000..4b20d14
--- /dev/null
+++ b/t/lex2.sh
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that Automake suggest using AM_PROG_LEX when a lexer is used.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zot
+zot_SOURCES = joe.l
+END
+
+$ACLOCAL
+AUTOMAKE_fails -a
+grep 'LEX.* undefined' stderr
+grep 'add .*AM_PROG_LEX' stderr
+
+:
diff --git a/t/lex3.sh b/t/lex3.sh
new file mode 100755 (executable)
index 0000000..125152b
--- /dev/null
+++ b/t/lex3.sh
@@ -0,0 +1,91 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic semantic checks on Lex support.
+# Test associated with PR 19.
+# From Matthew D. Langston.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.l
+END
+
+cat > foo.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"GOOD"   return EOF;
+.
+%%
+
+int main (void)
+{
+  /* We don't use a 'while' loop here (like a real lexer would do)
+     to avoid possible hangs. */
+  if (yylex () == EOF)
+    return 0;
+  else
+    return 1;
+}
+
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+# Program should build and run.
+$MAKE
+if cross_compiling; then :; else
+  echo GOOD | ./foo
+  echo BAD | ./foo && Exit 1
+  : For shells with busted 'set -e'.
+fi
+
+# The generated file 'foo.c' must be shipped.
+$MAKE distdir
+test -f $distdir/foo.c
+
+# Sanity check on distribution.
+yl_distcheck
+
+# While we are at it, make sure that foo.c is erased by
+# maintainer-clean, and not by distclean.
+test -f foo.c
+$MAKE distclean
+test -f foo.c
+./configure # Re-create 'Makefile'.
+$MAKE maintainer-clean
+test ! -f foo.c
+
+:
diff --git a/t/lex5.sh b/t/lex5.sh
new file mode 100755 (executable)
index 0000000..4b0663d
--- /dev/null
+++ b/t/lex5.sh
@@ -0,0 +1,98 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for subdir lexers.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS  = subdir-objects
+LDADD             = @LEXLIB@
+
+bin_PROGRAMS    = foo/foo
+foo_foo_SOURCES = foo/foo.l
+END
+
+mkdir foo
+
+cat > foo/foo.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END"   return EOF;
+.
+%%
+int
+main ()
+{
+  while (yylex () != EOF)
+    ;
+
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# We expect ylwrap to be used and distributed even if there is
+# only one lexer.
+test -f ylwrap
+
+mkdir sub
+cd sub
+../configure
+$MAKE foo/foo.o
+ls -l # For debugging.
+
+test -f foo/foo.c
+test -f foo/foo.o
+
+# Now, adds another lexer to test ylwrap.
+
+cd ..
+cp foo/foo.l foo/foo2.l
+cat >> Makefile.am << 'END'
+EXTRA_foo_foo_SOURCES = foo/foo2.l
+END
+
+# Make sure Makefile.in has a new time stamp: the rebuild rules are
+# used below.  We do this after updating Makefile.am, that way we can
+# ensure that automake, even with --no-force, is not confused if the
+# new Makefile.am has the same time stamp as the older one (since the
+# output will change, --no-force should have no effect).
+$sleep
+
+$AUTOMAKE -a --no-force
+
+cd sub
+using_gmake || $MAKE Makefile
+$MAKE foo/foo2.o
+ls -l # For debugging.
+test -f foo/foo2.c
+test -f foo/foo2.o
+
+:
diff --git a/t/lexcpp.sh b/t/lexcpp.sh
new file mode 100755 (executable)
index 0000000..717be0e
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure Lex + C++ is supported.
+# Please keep this is sync with sister test yaccpp.test.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_LEX
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz qux
+foo_SOURCES = foo.l++
+bar_SOURCES = bar.lpp
+baz_SOURCES = baz.ll
+qux_SOURCES = qux.lxx
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+sed -e 's/^/ /' -e 's/$/ /' Makefile.in >mk
+$FGREP ' foo.c++ ' mk
+$FGREP ' bar.cpp ' mk
+$FGREP ' baz.cc '  mk
+$FGREP ' qux.cxx ' mk
+
+:
diff --git a/t/lexvpath.sh b/t/lexvpath.sh
new file mode 100755 (executable)
index 0000000..c731692
--- /dev/null
@@ -0,0 +1,128 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This test checks that dependent files are updated before including
+# in the distribution.  'lexer.c' depends on 'lexer.l'.  The latter is
+# updated so that 'lexer.c' should be rebuild.  Then we are running
+# 'make' and 'make distdir' and check whether the version of 'lexer.c'
+# to be distributed is up to date.
+
+# Please keep this in sync with sister test 'yaccvapth.test'.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat > lexoutroot.in << 'END'
+LEX_OUTPUT_ROOT='@LEX_OUTPUT_ROOT@'
+END
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([lexoutroot])
+AC_PROG_CC
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = lexer.l foo.c
+LDADD = $(LEXLIB)
+END
+
+# Original lexer, with a "foobar" comment
+cat > lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END" return EOF;
+.
+%%
+/*foobar*/
+END
+
+cat > foo.c << 'END'
+int main (void)
+{
+  return 0;
+}
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir sub
+
+# We must run configure early, to find out why $LEX_OUTPUT_ROOT is.
+cd sub
+../configure
+. ./lexoutroot
+test -n "$LEX_OUTPUT_ROOT" # Sanity check.
+cd ..
+
+$LEX lexer.l
+mv "$LEX_OUTPUT_ROOT".c lexer.c
+
+cd sub
+
+# Ensure that lexer.l will be newer than lexer.c.
+$sleep
+
+# New lexer, with 'fubar' comment.
+cat > ../lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END" return EOF;
+.
+%%
+/*fubar*/
+END
+
+$MAKE
+$MAKE distdir
+$FGREP '/*fubar*/' $distdir/lexer.c
+
+#
+# Now check to make sure that 'make dist' will rebuilt the parser.
+#
+
+# Ensure that lexer.l will be newer than lexer.c.
+$sleep
+
+# New lexer, with 'maude' comment.
+cat > ../lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END" return EOF;
+.
+%%
+/*maude*/
+END
+
+$MAKE distdir
+$FGREP '/*maude*/' $distdir/lexer.c
+
+:
diff --git a/t/lflags.sh b/t/lflags.sh
new file mode 100755 (executable)
index 0000000..bb939a7
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that $(LFLAGS) takes precedence over both $(AM_LFLAGS) and
+# $(foo_LFLAGS).
+# Please keep this in sync with the sister tests lflags2.test, yflags.test
+# and yflags2.test.
+
+required=cc
+. ./defs || Exit 1
+
+cat >fake-lex <<'END'
+#!/bin/sh
+echo '/*' "$*" '*/' >lex.yy.c
+echo 'extern int dummy;' >> lex.yy.c
+END
+chmod a+x fake-lex
+
+# Remove Lex from the environment, so that it won't interfere
+# with 'make -e' below.
+unset LEX || :
+
+cat >> configure.ac <<'END'
+AC_SUBST([CC], [false])
+# Simulate presence of Lex using our fake-lex script.
+AC_SUBST([LEX], ['$(abs_top_srcdir)'/fake-lex])
+AC_SUBST([LEX_OUTPUT_ROOT], [lex.yy])
+AC_SUBST([LEXLIB], [''])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo bar
+foo_SOURCES = main.c foo.l
+bar_SOURCES = main.c bar.l
+AM_LFLAGS = __am_flags__
+bar_LFLAGS = __bar_flags__
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+grep '\$(LFLAGS).*\$(bar_LFLAGS)' Makefile.in && Exit 1
+grep '\$(LFLAGS).*\$(AM_LFLAGS)' Makefile.in && Exit 1
+
+: > foo.l
+: > bar.l
+
+$AUTOCONF
+./configure
+env LFLAGS=__user_flags__ $MAKE -e foo.c bar-bar.c
+
+cat foo.c
+cat bar-bar.c
+
+grep '__am_flags__.*__user_flags__' foo.c
+grep '__bar_flags__.*__user_flags__' bar-bar.c
+
+:
diff --git a/t/lflags2.sh b/t/lflags2.sh
new file mode 100755 (executable)
index 0000000..57b7b67
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that $(LFLAGS) takes precedence over both $(AM_LFLAGS) and
+# $(foo_LFLAGS).
+# Please keep this in sync with the sister tests lflags.test, yflags.test
+# and yflags2.test.
+
+. ./defs || Exit 1
+
+cat >fake-lex <<'END'
+#!/bin/sh
+echo '/*' "$*" '*/' >lex.yy.c
+echo 'extern int dummy;' >> lex.yy.c
+END
+chmod a+x fake-lex
+
+# Remove Lex from the environment, so that it won't interfere
+# with 'make -e' below.
+unset LEX || :
+
+cat >> configure.ac <<'END'
+AC_SUBST([CXX], [false])
+# Simulate presence of Lex using our fake-lex script.
+AC_SUBST([LEX], ['$(abs_top_srcdir)'/fake-lex])
+AC_SUBST([LEX_OUTPUT_ROOT], [lex.yy])
+AC_SUBST([LEXLIB], [''])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo bar
+foo_SOURCES = main.cc foo.ll
+bar_SOURCES = main.cc bar.l++
+AM_LFLAGS = __am_flags__
+bar_LFLAGS = __bar_flags__
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+grep '\$(LFLAGS).*\$(bar_LFLAGS)' Makefile.in && Exit 1
+grep '\$(LFLAGS).*\$(AM_LFLAGS)' Makefile.in && Exit 1
+
+: > foo.ll
+: > bar.l++
+
+$AUTOCONF
+./configure
+env LFLAGS=__user_flags__ $MAKE -e foo.cc bar-bar.c++
+
+cat foo.cc
+cat bar-bar.c++
+
+grep '__am_flags__.*__user_flags__' foo.cc
+grep '__bar_flags__.*__user_flags__' bar-bar.c++
+
+:
diff --git a/t/libexec.sh b/t/libexec.sh
new file mode 100755 (executable)
index 0000000..24a934d
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# PROGRAMS and LIBRARIES can be installed in (pkg)libexecdir.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+libexec_PROGRAMS = foo
+pkglibexec_PROGRAMS = bar
+END
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+: > foo.c
+: > bar.c
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/libobj-basic.sh b/t/libobj-basic.sh
new file mode 100755 (executable)
index 0000000..1165f1e
--- /dev/null
@@ -0,0 +1,112 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure AC_LIBSOURCE and AC_LIBSOURCES work.
+
+required=cc
+. ./defs || Exit 1
+
+mv configure.ac configure.proto
+cat >> configure.proto << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES = foo.c
+libtu_a_LIBADD = $(LIBOBJS)
+
+include extra-checks.am
+.PHONY: $(extra_checks) pre-test
+
+pre-test: distdir
+       ls -l $(srcdir) $(builddir) $(distdir)
+       $(AR) tv libtu.a
+$(extra_checks): pre-test
+check-local: $(extra_checks)
+
+maude-src:
+       grep dummy_maude $(srcdir)/maude.c
+maude-dist:
+       grep dummy_maude $(distdir)/maude.c
+liver-src:
+       grep dummy_liver $(srcdir)/liver.c
+liver-dist:
+       grep dummy_liver $(distdir)/liver.c
+liver-not-dist:
+       test -d $(distdir)
+       test ! -r $(distdir)/liver.c
+maude-not-dist:
+       test -d $(distdir)
+       test ! -r $(distdir)/maude.c
+END
+
+cat > foo.c << 'END'
+extern int dummy_foo;
+END
+
+cat > maude.c << 'END'
+extern int dummy_maude;
+END
+
+cat > liver.c << 'END'
+extern int dummy_liver;
+END
+
+# AC_LIBSOURCE should work also if called after AC_OUTPUT.
+cat configure.proto - > configure.ac <<END
+AC_LIBSOURCE([maude.c])
+END
+
+cat > extra-checks.am << 'END'
+extra_checks = maude-src maude-dist liver-not-dist
+END
+
+cp "$am_scriptdir/ar-lib" . || fatal_ "fetching auxiliary script 'ar-lib'"
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+$MAKE check
+$MAKE distcheck
+
+$MAKE distclean
+# Avoid timestamp-related differences.
+rm -rf autom4te*.cache
+
+cat > extra-checks.am << 'END'
+extra_checks = maude-src maude-dist liver-src liver-dist
+END
+
+# AC_LIBSOURCES should work also if called after AC_OUTPUT.
+cat configure.proto - > configure.ac <<END
+AC_LIBSOURCES([maude.c, liver.c])
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/libobj10.sh b/t/libobj10.sh
new file mode 100755 (executable)
index 0000000..f19de74
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Do not complain about the nonexistence of a source for LIBOBJS if
+# it's in BUILT_SOURCES.  Reported by Erez Zadok.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_LIBOBJ([foo])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libfoo.a
+libfoo_a_SOURCES =
+libfoo_a_LIBADD = $(LIBOBJS)
+BUILT_SOURCES = foo.c
+CLEANFILES = foo.c
+foo.c:
+       echo 'extern int dummy;' > $@
+.PHONY: debugging
+debugging:
+       $(AR) t libfoo.a
+END
+
+cp "$am_scriptdir/ar-lib" . || fatal_ "fetching auxiliary script 'ar-lib'"
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+$MAKE
+$MAKE debugging
+$MAKE distcheck
+
+:
diff --git a/t/libobj12.sh b/t/libobj12.sh
new file mode 100755 (executable)
index 0000000..c3c0057
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if a file can be mentioned in LIBOBJS and explicitly.
+# (See libobj13.test for the LTLIBRARIES check.)
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_LIBOBJ([foo])
+AC_LIBOBJ([bar])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libfoo.a libbar.a
+noinst_PROGRAMS = p1 p2
+
+libfoo_a_SOURCES =
+libfoo_a_LIBADD = @LIBOBJS@
+
+libbar_a_SOURCES = foo.c
+
+p1_SOURCES =
+p1_LDADD = @LIBOBJS@
+
+p2_SOURCES = bar.c
+END
+
+: > ar-lib
+: > foo.c
+: > bar.c
+
+$ACLOCAL
+
+# This however should be diagnosed, since foo.c and bar.c are in @LIBOBJS@.
+cat >> Makefile.am << 'END'
+libfoo_a_SOURCES += foo.c
+p1_SOURCES += bar.c
+END
+
+AUTOMAKE_fails
+grep 'foo\.c.*explicitly mentioned' stderr
+grep 'bar\.c.*explicitly mentioned' stderr
+
+# Global 'LDADD' can also come into play.
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = a b
+LDADD = @LIBOBJS@
+END
+
+$AUTOMAKE
+grep 'a_DEPENDENCIES.*LIBOBJS' Makefile.in
+
+cat >> Makefile.am << 'END'
+a_SOURCES = foo.c
+END
+AUTOMAKE_fails
+grep 'foo\.c.*explicitly mentioned' stderr
+
+:
diff --git a/t/libobj13.sh b/t/libobj13.sh
new file mode 100755 (executable)
index 0000000..ef63d8b
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test if a file can be mentioned in LTLIBOBJS and explicitly.
+# (Like libobj12.test, but for Libtool libraries.)
+
+required='libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_LIBOBJ([foo])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LTLIBRARIES = libfoo.la libbar.la
+
+libfoo_la_SOURCES =
+libfoo_la_LIBADD = @LTLIBOBJS@
+
+libbar_la_SOURCES = foo.c
+END
+
+: > foo.c
+
+$ACLOCAL
+: > ltmain.sh
+$AUTOMAKE --add-missing
+
+# This however should be diagnosed, since foo.c is in @LIBOBJS@.
+echo 'libfoo_la_SOURCES += foo.c' >> Makefile.am
+AUTOMAKE_fails
+grep 'foo\.c.*explicitly mentioned' stderr
+
+:
diff --git a/t/libobj14.sh b/t/libobj14.sh
new file mode 100755 (executable)
index 0000000..50554de
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for an internal error when @LIBOBJS@ is used in
+# a variable that is not defined in the same conditions as the _LDADD
+# that uses it.
+# Report from Bill Davidson.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_PROG_CC
+AC_LIBSOURCE([bar.c])
+AM_CONDITIONAL([CASE], [:])
+AC_OUTPUT
+EOF
+
+: >bar.c
+
+cat >>Makefile.am <<'EOF'
+COMMON_LIBS = @LIBOBJS@
+bin_PROGRAMS = foo
+if ! CASE
+foo_LDADD = $(COMMON_LIBS)
+endif
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/libobj15a.sh b/t/libobj15a.sh
new file mode 100755 (executable)
index 0000000..d306b71
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Nonexistent sources for AC_LIBOBJ should cause an Automake failure.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_LIBOBJ([foobar])
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+END
+
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'configure\.ac:.*required file.*foobar\.c.*' stderr
+
+:
diff --git a/t/libobj15b.sh b/t/libobj15b.sh
new file mode 100755 (executable)
index 0000000..f0466fd
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Nonexistent source for AC_LIBSOURCE should cause Automake to fail.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_LIBSOURCE([foobar.c])
+# NOTE: this call to AC_OUTPUT is really needed; see Automake bug #7635
+#       <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7635>
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+END
+
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'configure\.ac:.*required file.*foobar\.c.*' stderr
+
+:
diff --git a/t/libobj15c.sh b/t/libobj15c.sh
new file mode 100755 (executable)
index 0000000..8fe521d
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Nonexistent sources for AC_LIBSOURCES should cause Automake to fail.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_LIBSOURCES([foobar.c, bazquux.c])
+# NOTE: this call to AC_OUTPUT is really needed; see Automake bug #7635
+#       <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7635>
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+END
+
+# Don't trip on errors due to missing 'AM_PROG_AR'.
+AUTOMAKE="$AUTOMAKE -Wno-extra-portability"
+
+$ACLOCAL
+
+AUTOMAKE_fails
+grep 'configure\.ac:.*required file.*foobar\.c.*' stderr
+grep 'configure\.ac:.*required file.*bazquux\.c.*' stderr
+
+: > foobar.c
+AUTOMAKE_fails
+grep 'configure\.ac:.*required file.*bazquux\.c.*' stderr
+grep 'foobar\.c' stderr && Exit 1
+
+:
diff --git a/t/libobj16a.sh b/t/libobj16a.sh
new file mode 100755 (executable)
index 0000000..2e1da26
--- /dev/null
@@ -0,0 +1,139 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure AC_LIBOBJ and friends work.
+# Please keep this in sync with sister test 'libobj16b.test'.
+
+required=cc
+. ./defs || Exit 1
+
+mv configure.ac configure.proto
+cat >> configure.proto << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+%LIBOBJ-STUFF% # Will be activated later.
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+
+include extra-checks.am
+.PHONY: $(extra_checks) pre-test
+
+pre-test: distdir
+       ls -l $(srcdir) $(builddir) $(distdir)
+       $(AR) tv libtu.a
+$(extra_checks): pre-test
+check-local: $(extra_checks)
+
+maude-src:
+       grep dummy_maude $(srcdir)/maude.c
+maude-dist:
+       grep dummy_maude $(distdir)/maude.c
+liver-src:
+       grep dummy_liver $(srcdir)/liver.c
+liver-dist:
+       grep dummy_liver $(distdir)/liver.c
+liver-not-dist: distdir
+       test ! -r $(distdir)/liver.c
+maude-not-dist: distdir
+       test ! -r $(distdir)/maude.c
+maude-lib:
+       $(AR) t libtu.a | grep maude
+maude-not-lib:
+       $(AR) t libtu.a | grep maude && exit 1; exit 0
+liver-lib:
+       $(AR) t libtu.a | grep liver
+liver-not-lib:
+       $(AR) t libtu.a | grep liver && exit 1; exit 0
+END
+
+cat > maude.c << 'END'
+extern int dummy_maude;
+END
+
+cat > liver.c << 'END'
+extern int dummy_liver;
+END
+
+sed '/%LIBOBJ-STUFF%/{
+s/.*//
+i\
+AC_LIBOBJ([maude])
+}' configure.proto > configure.ac
+cat configure.ac # For debugging.
+
+cat > extra-checks.am << 'END'
+extra_checks = maude-src maude-dist maude-lib liver-not-dist
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE
+$MAKE check
+$MAKE distcheck
+$MAKE distclean
+
+# Avoid timestamp-related differences.
+rm -rf autom4te*.cache
+
+cat > extra-checks.am << 'END'
+extra_checks = maude-src maude-dist liver-src liver-dist
+if MAUDE_COND
+extra_checks += maude-lib liver-not-lib
+else
+extra_checks += maude-not-lib liver-lib
+endif
+END
+
+sed '/%LIBOBJ-STUFF%/{
+s/.*//
+i\
+AM_CONDITIONAL([MAUDE_COND], [test x"$MAUDE" = x"yes"])\
+if test x"$MAUDE" = x"yes"; then\
+  AC_LIBOBJ([maude])\
+else\
+  AC_LIBOBJ([liver])\
+fi\
+AC_LIBSOURCES([maude.c, liver.c])
+}' configure.proto > configure.ac
+cat configure.ac # For debugging.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure MAUDE=yes
+$MAKE
+$MAKE check
+$MAKE distcheck
+$MAKE distclean
+
+./configure MAUDE=no
+$MAKE
+$MAKE check
+$MAKE distcheck
+$MAKE distclean
+
+:
diff --git a/t/libobj16b.sh b/t/libobj16b.sh
new file mode 100755 (executable)
index 0000000..110ba19
--- /dev/null
@@ -0,0 +1,140 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure AC_LIBOBJ and friends work.
+# Please keep this in sync with sister test 'libobj16a.test'.
+
+required=cc
+. ./defs || Exit 1
+
+mv configure.ac configure.proto
+cat >> configure.proto << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+%LIBOBJ-STUFF% # Will be activated later.
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = @LIBOBJS@
+
+include extra-checks.am
+.PHONY: $(extra_checks) pre-test
+
+pre-test: distdir
+       ls -l $(srcdir) $(builddir) $(distdir)
+       $(AR) tv libtu.a
+$(extra_checks): pre-test
+check-local: $(extra_checks)
+
+maude-src:
+       grep dummy_maude $(srcdir)/maude.c
+maude-dist:
+       grep dummy_maude $(distdir)/maude.c
+liver-src:
+       grep dummy_liver $(srcdir)/liver.c
+liver-dist:
+       grep dummy_liver $(distdir)/liver.c
+liver-not-dist: distdir
+       test ! -r $(distdir)/liver.c
+maude-not-dist: distdir
+       test ! -r $(distdir)/maude.c
+maude-lib:
+       $(AR) t libtu.a | grep maude
+maude-not-lib:
+       $(AR) t libtu.a | grep maude && exit 1; exit 0
+liver-lib:
+       $(AR) t libtu.a | grep liver
+liver-not-lib:
+       $(AR) t libtu.a | grep liver && exit 1; exit 0
+END
+
+cat > maude.c << 'END'
+extern int dummy_maude;
+END
+
+cat > liver.c << 'END'
+extern int dummy_liver;
+END
+
+sed '/%LIBOBJ-STUFF%/{
+s/.*//
+i\
+AC_LIBOBJ(maude) dnl: do not quote this!
+}' configure.proto > configure.ac
+cat configure.ac # For debugging.
+
+cat > extra-checks.am << 'END'
+extra_checks = maude-src maude-dist maude-lib liver-not-dist
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE
+$MAKE check
+$MAKE distcheck
+$MAKE distclean
+
+# Avoid timestamp-related differences.
+rm -rf autom4te*.cache
+
+cat > extra-checks.am << 'END'
+extra_checks = maude-src maude-dist liver-src liver-dist
+if MAUDE_COND
+extra_checks += maude-lib liver-not-lib
+else
+extra_checks += maude-not-lib liver-lib
+endif
+END
+
+sed '/%LIBOBJ-STUFF%/{
+s/.*//
+i\
+AM_CONDITIONAL([MAUDE_COND], [test x"$MAUDE" = x"yes"])\
+if test x"$MAUDE" = x"yes"; then\
+  AC_LIBOBJ(maude) dnl: do not quote this!\
+else\
+  AC_LIBOBJ(liver) dnl: do not quote this!\
+fi\
+AC_LIBSOURCE(maude.c) dnl: do not quote this!\
+AC_LIBSOURCE(liver.c) dnl: do not quote this!
+}' configure.proto > configure.ac
+cat configure.ac # For debugging.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure MAUDE=yes
+$MAKE
+$MAKE check
+$MAKE distcheck
+$MAKE distclean
+
+./configure MAUDE=no
+$MAKE
+$MAKE check
+$MAKE distcheck
+$MAKE distclean
+
+:
diff --git a/t/libobj17.sh b/t/libobj17.sh
new file mode 100755 (executable)
index 0000000..6c54a28
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure AC_LIBOBJ accept non-literal arguments.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AM_PROG_AR
+foo=${FOO-oops}
+AC_LIBSOURCES([quux.c, zardoz.c])
+AC_LIBOBJ([$foo])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+.PHONY: check-quux check-zardoz
+check-quux:
+       $(AR) t libtu.a | grep quux
+       $(AR) t libtu.a | grep zardoz && exit 1; exit 0
+check-zardoz:
+       $(AR) t libtu.a | grep zardoz
+       $(AR) t libtu.a | grep quux && exit 1; exit 0
+END
+
+cat > quux.c <<'END'
+extern int dummy;
+END
+
+cat > zardoz.c <<'END'
+extern int dummy;
+END
+
+# These might print warnings, but should not error out.
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+./configure FOO=quux
+$MAKE
+ls -l # For debugging.
+test -f libtu.a
+$MAKE check-quux
+
+$MAKE distclean
+
+./configure FOO=zardoz
+$MAKE
+ls -l # For debugging.
+test -f libtu.a
+$MAKE check-zardoz
+
+:
diff --git a/t/libobj18.sh b/t/libobj18.sh
new file mode 100755 (executable)
index 0000000..0ac7438
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure AC_LIBSOURCE and AC_LIBSOURCES use arguments literally.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+foo=dummy bar=dummy baz=dummy
+AC_LIBSOURCE([$foo.c])
+AC_LIBSOURCES([$bar.c, $baz.c])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+END
+
+: > dummy.c
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'configure\.ac:.*required file.*\$foo\.c.*not found' stderr
+grep 'configure\.ac:.*required file.*\$bar\.c.*not found' stderr
+grep 'configure\.ac:.*required file.*\$baz\.c.*not found' stderr
+
+:
diff --git a/t/libobj19.sh b/t/libobj19.sh
new file mode 100755 (executable)
index 0000000..4d9e283
--- /dev/null
@@ -0,0 +1,96 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test support for AC_CONFIG_LIBOBJ_DIR.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_LIBOBJ_DIR([libobj-dir])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_LIBOBJ([foobar])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+## Hack with this variable ans with extra make recursion in the check-local
+## rule are required for when we move this Makefile in a subdir, later.
+my_distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)
+check-local:
+       (cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) distdir)
+       ls -l $(top_srcdir)/* $(top_builddir)/* $(my_distdir)/*
+       test -f libtu.a
+       test ! -r $(top_srcdir)/foobar.c
+       test -f $(top_srcdir)/libobj-dir/foobar.c
+       test ! -r $(my_distdir)/foobar.c
+       test -f $(my_distdir)/libobj-dir/foobar.c
+       $(AR) t libtu.a
+       $(AR) t libtu.a | grep foobar
+END
+
+mkdir libobj-dir
+cat > libobj-dir/foobar.c << 'END'
+extern int dummy;
+END
+
+cp "$am_scriptdir/ar-lib" . || fatal_ "fetching auxiliary script 'ar-lib'"
+cp "$am_scriptdir/compile" . || fatal_ "fetching auxiliary script 'compile'"
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+$MAKE
+$MAKE check
+$MAKE distcheck
+
+# Same check, but with the Makefile.am using $(LIBOBJS) not being
+# the top-level one.
+
+$MAKE distclean
+rm -rf autom4te*.cache aclocal.m4 configure
+
+mkdir sub
+mv -f Makefile.am sub
+echo SUBDIRS = sub > Makefile.am
+
+sed '/^AC_OUTPUT/i\
+AC_CONFIG_FILES([sub/Makefile])
+' configure.ac > t
+mv -f t configure.ac
+cat configure.ac # For debugging.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+$MAKE
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/libobj2.sh b/t/libobj2.sh
new file mode 100755 (executable)
index 0000000..ce655c2
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure LIBOBJS works in subdirs.
+# Bug from Josh MacDonald.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([subdir/Makefile])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_CHECK_TOOLS([AR], [ar])
+AC_LIBOBJ([fsusage])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = subdir
+check-local: distdir
+       ls -l $(srcdir) $(srcdir)/subdir
+       ls -l $(distdir) $(distdir)/subdir
+       ls -l $(builddir) $(builddir)/subdir
+       test -f $(srcdir)/subdir/fsusage.c
+       test -f $(distdir)/subdir/fsusage.c
+       $(AR) tv $(builddir)/subdir/libtu.a
+END
+
+mkdir subdir
+
+cat > subdir/Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = @LIBOBJS@
+END
+
+cat > subdir/fsusage.c << 'END'
+extern int dummy;
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Older grepping check, kept "just to be sure".
+$FGREP 'fsusage.c' subdir/Makefile.in
+
+./configure
+
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/libobj20a.sh b/t/libobj20a.sh
new file mode 100755 (executable)
index 0000000..d56be31
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test error reporting for AC_CONFIG_LIBOBJ_DIR.
+# See also sister tests 'libobj20b.test' and 'libobj20c.test' .
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_LIBOBJ_DIR([libobj-dir])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_LIBOBJ([foo])
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+END
+
+mkdir libobj-dir
+: > libobj-dir/foo.c
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'LIBOBJS.*used outside.*libobj-dir' stderr
+grep 'subdir-objects.*not set' stderr
+
+:
diff --git a/t/libobj20b.sh b/t/libobj20b.sh
new file mode 100755 (executable)
index 0000000..f8ca600
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test error reporting for AC_CONFIG_LIBOBJ_DIR.
+# See also sister tests 'libobj20a.test' and 'libobj20c.test' .
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_LIBOBJ_DIR([libobj-dir])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_LIBSOURCE([foobar.c])
+# NOTE: this call to AC_OUTPUT is really needed; see Automake bug #7635
+#       <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7635>
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+END
+
+: > ar-lib
+
+$ACLOCAL
+
+AUTOMAKE_fails
+grep 'configure\.ac:.*required directory.*libobj-dir' stderr
+
+mkdir libobj-dir
+: > foobar.c # Oops, it should be in libobj-dir!
+AUTOMAKE_fails
+grep 'configure\.ac:.*required file.*libobj-dir/foobar.c.*' stderr
+
+rm -f foobar.c
+
+: > libobj-dir/foobar.c
+$AUTOMAKE # Now we should succeed.
+
+:
diff --git a/t/libobj20c.sh b/t/libobj20c.sh
new file mode 100755 (executable)
index 0000000..7ae51bf
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test error reporting for AC_CONFIG_LIBOBJ_DIR.
+# See also sister tests 'libobj20a.test' and 'libobj20b.test' .
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_LIBOBJ_DIR([libobj-dir])
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_LIBOBJ([foobar])
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = $(LIBOBJS)
+END
+
+$ACLOCAL
+
+# Don't trip on errors due to missing 'AM_PROG_AR'.
+AUTOMAKE="$AUTOMAKE -Wno-extra-portability"
+
+AUTOMAKE_fails
+grep 'configure\.ac:.*required directory.*\./libobj-dir' stderr
+
+mkdir libobj-dir
+: > foobar.c # Oops, it should be in libobj-dir!
+AUTOMAKE_fails
+grep 'configure\.ac:.*required file.*libobj-dir/foobar.c.*' stderr
+
+rm -f foobar.c
+
+: > libobj-dir/foobar.c
+$AUTOMAKE # Now we should succeed.
+
+:
diff --git a/t/libobj3.sh b/t/libobj3.sh
new file mode 100755 (executable)
index 0000000..37ec6bf
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we complain if @LIBOBJS@ is used without being set in
+# configure.ac.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_RANLIB
+AM_PROG_AR
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = @LIBOBJS@
+END
+
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile\.am:3:.*LIBOBJS' stderr
+
+:
diff --git a/t/libobj4.sh b/t/libobj4.sh
new file mode 100755 (executable)
index 0000000..68711af
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure LIBOBJS error only occurs if LIBOBJS seen.  Report
+# from Jim Meyering.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+END
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_REPLACE_FUNCS([foo])
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/libobj5.sh b/t/libobj5.sh
new file mode 100755 (executable)
index 0000000..036ae56
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure AC_REPLACE_FUNCS works across lines.  Report from
+# Jim Meyering.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = joe
+LDADD = @LIBOBJS@
+END
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_REPLACE_FUNCS(\
+   foo_bar_quux)
+END
+
+: > foo_bar_quux.c
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP foo_bar_quux.c Makefile.in
+
+:
diff --git a/t/libobj7.sh b/t/libobj7.sh
new file mode 100755 (executable)
index 0000000..46f0f98
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for multiple replacement functions.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+# 'am__dummy_function' is there to ensure that at least one function is
+# replaced, to avoid creating an empty archive which can cause problems
+# with e.g. Solaris ar.
+AC_REPLACE_FUNCS([basename dirname am__dummy_function])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libtu.a
+libtu_a_SOURCES =
+libtu_a_LIBADD = @LIBOBJS@
+check-local: test1 test2 test3
+.PHONY: test1 test2 test3
+test1: all
+       $(AR) tv libtu.a
+test2:
+       @echo DIST_COMMON = $(DIST_COMMON)
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]basename\.c '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]dirname\.c '
+       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]am__dummy_function\.c '
+test3: distdir
+       test -f $(distdir)/basename.c
+       test -f $(distdir)/dirname.c
+       test -f $(distdir)/am__dummy_function.c
+END
+
+cat > basename.c <<'END'
+extern int dummy1;
+END
+cat > dirname.c <<'END'
+extern int dummy2;
+END
+cat > am__dummy_function.c <<'END'
+extern int dummy3;
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+
+$MAKE
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/library.sh b/t/library.sh
new file mode 100755 (executable)
index 0000000..1bf34de
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for _DEPENDENCIES with libraries.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_RANLIB
+AC_PROG_CC
+AM_PROG_AR
+END
+
+cat > Makefile.am << 'END'
+lib_LIBRARIES = libfoo.a
+libfoo_a_DEPENDENCIES = libzot.a
+END
+
+: > ar-lib
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/library2.sh b/t/library2.sh
new file mode 100755 (executable)
index 0000000..dfa8758
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake suggest using AC_PROG_RANLIB when *_LIBRARIES is used.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+EXTRA_LIBRARIES = libfoo.a
+END
+
+$ACLOCAL
+AUTOMAKE_fails -Wno-portability
+grep AC_PROG_RANLIB stderr
diff --git a/t/library3.sh b/t/library3.sh
new file mode 100755 (executable)
index 0000000..27a2b15
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake simplify conditions in diagnostics.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_PROG_CC
+AM_CONDITIONAL([A], [:])
+AM_CONDITIONAL([B], [:])
+AM_CONDITIONAL([C], [:])
+AM_CONDITIONAL([D], [:])
+EOF
+
+cat > Makefile.am << 'END'
+if A
+if !B
+  RANLIB = anb
+else
+  RANLIB = ab
+endif
+endif
+if C
+  RANLIB = c
+endif
+if !C
+if D
+  RANLIB = ncd
+endif
+endif
+EXTRA_LIBRARIES = libfoo.a
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '^Makefile.am:.*:   !A and !C and !D$' stderr
+# Is there only one missing condition?
+test `grep ':   !' stderr | wc -l` = 1 || Exit 1
diff --git a/t/libtoo10.sh b/t/libtoo10.sh
new file mode 100755 (executable)
index 0000000..0218ef3
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure .libs directories are removed for _PROGRAMS.
+# Report from Guillermo Ontañón.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = lib/libfoo.la
+lib_libfoo_la_SOURCES = foo.c
+bin_PROGRAMS = src/main
+check_PROGRAMS = check/test
+src_main_SOURCES = main.c
+check_test_SOURCES = main.c
+LDADD = lib/libfoo.la
+END
+
+mkdir lib src check
+cat > foo.c << 'END'
+int foo () { return 0; }
+END
+
+cat > main.c << 'END'
+extern int foo ();
+int main () { return foo (); }
+END
+
+libtoolize
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+./configure
+$MAKE all check
+$MAKE clean
+test ! -d src/.libs
+test ! -d src/_libs
+test ! -d check/.libs
+test ! -d check/_libs
+$MAKE distcheck
diff --git a/t/libtoo11.sh b/t/libtoo11.sh
new file mode 100755 (executable)
index 0000000..cd55cc0
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure config.lt is removed with Libtool 2.2.x's LT_OUTPUT.
+# Report by Charles Wilson.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_LIBTOOL
+m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+libtoolize
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+./configure
+$MAKE distcheck
+
+:
diff --git a/t/libtool-macros.sh b/t/libtool-macros.sh
new file mode 100755 (executable)
index 0000000..e5c77ac
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Try to find the libtool '.m4' files and make them easily accessed
+# to the test cases requiring them.
+# See also automake bug#9807.
+
+. ./defs || Exit 1
+
+echo "# Automatically generated by $me." > get.sh
+echo : >> get.sh
+
+# The 'libtoolize' script will look into Makefile.am.
+echo ACLOCAL_AMFLAGS = -I m4 > Makefile.am
+
+if libtoolize --copy --install && test -f m4/libtool.m4; then
+  echo "ACLOCAL_PATH='`pwd`/m4':\$ACLOCAL_PATH" >> get.sh
+  echo "export ACLOCAL_PATH" >> get.sh
+else
+  # Libtoolize from libtool < 2.0 didn't support the '--install' option,
+  # but this doesn't mean the user hasn't made the libtool macros
+  # available, e.g., by properly setting ACLOCAL_PATH.
+  rm -rf m4
+  mkdir m4
+  echo AC_PROG_LIBTOOL >> configure.ac
+  # See below for an explanation about the use the of '-Wno-syntax'.
+  if $ACLOCAL -Wno-syntax -I m4 --install && test -f m4/libtool.m4; then
+    : # Libtool macros already accessible by default.
+  else
+    echo "skip_all_ \"couldn't find or get libtool macros\"" >> get.sh
+  fi
+fi
+
+. ./get.sh
+
+$ACLOCAL --force -I m4 || cat >> get.sh <<'END'
+# We need to use '-Wno-syntax', since we do not want our test suite
+# to fail merely because some third-party '.m4' file is underquoted.
+ACLOCAL="$ACLOCAL -Wno-syntax"
+END
+
+# The file libtoolize might have just copied in the 'm4' subdirectory of
+# the test directory are going to be needed by other tests, so we must
+# not remove the test directory.
+keep_testdirs=yes
+
+:
diff --git a/t/libtool.sh b/t/libtool.sh
new file mode 100755 (executable)
index 0000000..7b267a7
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure libtool is removed.
+# Report from Kevin Dalley.
+
+required=libtool
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_LIBTOOL_DLOPEN
+AC_DISABLE_SHARED
+AC_PROG_LIBTOOL
+AC_SUBST([LIBTOOL_DEPS])
+END
+
+: > Makefile.am
+
+: > ltmain.sh
+: > config.guess
+: > config.sub
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'rm -f libtool' Makefile.in
+
+:
diff --git a/t/libtool2.sh b/t/libtool2.sh
new file mode 100755 (executable)
index 0000000..3b8a78b
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure libtool clean targets exist.
+# Report from Eric Magnien.
+
+required=libtoolize
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIR = subdir
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.c
+END
+
+mkdir sub
+cat > sub/Makefile.am << 'END'
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.c
+END
+
+$ACLOCAL
+: > ltmain.sh
+$AUTOMAKE -a
+
+grep 'rm -f .*\.lo' sub/Makefile.in
+
+:
diff --git a/t/libtool3.sh b/t/libtool3.sh
new file mode 100755 (executable)
index 0000000..dbcd519
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Try to build and package a program linked to a Libtool library.
+# Also make sure we do not bloat the Makefile with unneeded rules.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AM_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = lib0.la liba/liba.la
+lib0_la_SOURCES = 0.c
+liba_liba_la_SOURCES = liba/a.c
+
+bin_PROGRAMS = 1
+1_SOURCES = sub/1.c
+1_LDADD = lib0.la liba/liba.la
+END
+
+mkdir liba sub
+
+cat > 0.c << 'END'
+int
+zero (void)
+{
+   return 0;
+}
+END
+
+cat > sub/1.c << 'END'
+int zero ();
+
+int
+main (void)
+{
+   return zero ();
+}
+END
+
+cat > liba/a.c << 'END'
+int
+a (void)
+{
+   return 'a';
+}
+END
+
+# Use --copy to workaround a bug in Cygwin's 'cp -p' during distcheck.
+# (This bug is already exhibited by subobj9.test.)  In brief: Cygwin's
+# 'cp -p' tries to preserve group and owner of the source and fails
+# to do so under normal accounts.  With --copy we ensure we own all files.
+
+libtoolize --force --copy
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing --copy
+
+# We need explicit rules to build 1.o and a.lo.  Make sure
+# Automake did not output additional rules for 1.lo and and a.lo.
+$FGREP '1.o:' Makefile.in
+$FGREP '1.lo:' Makefile.in && Exit 1
+$FGREP 'a.o:' Makefile.in && Exit 1
+$FGREP 'a.lo:' Makefile.in
+
+./configure
+
+$MAKE
+$MAKE distcheck
+
+:
diff --git a/t/libtool4.sh b/t/libtool4.sh
new file mode 100755 (executable)
index 0000000..2ce92dd
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake suggests AC_PROG_LIBTOOL when *_LTLIBRARIES is used.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+END
+
+cat > Makefile.am << 'END'
+EXTRA_LTLIBRARIES = liblib.la
+END
+
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '[Ll]ibtool library .*LIBTOOL.* undefined' stderr
+grep 'define .*LIBTOOL.* add .*LT_INIT' stderr
+
+:
diff --git a/t/libtool5.sh b/t/libtool5.sh
new file mode 100755 (executable)
index 0000000..b9e778b
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure it's ok to install a library under different conditions
+# in the same directory.
+# Report from Harlan Stenn.
+
+required='libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [false])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+if COND1
+  lib_LTLIBRARIES = liba.la
+endif
+if COND2
+  lib_LTLIBRARIES = liba.la
+endif
+END
+
+libtoolize
+$ACLOCAL
+$AUTOMAKE --add-missing
diff --git a/t/libtool6.sh b/t/libtool6.sh
new file mode 100755 (executable)
index 0000000..13dbc73
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure it's OK to install a library under different conditions
+# in different directories.  PR/285.
+
+required='libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [false])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+if COND1
+  lib_LTLIBRARIES = liba.la
+endif
+if COND2
+  pkglib_LTLIBRARIES = liba.la
+endif
+END
+
+libtoolize
+$ACLOCAL
+$AUTOMAKE --add-missing
+# am_liba_la_rpath is defined twice, and used once
+test 3 = `grep 'am_liba_la_rpath' Makefile.in | wc -l`
diff --git a/t/libtool7.sh b/t/libtool7.sh
new file mode 100755 (executable)
index 0000000..bc8eaca
--- /dev/null
@@ -0,0 +1,108 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we allow Libtool's -dlopen/-dlpreopen
+# Also check basic support for AM_LIBTOOLFLAGS/LIBTOOLFLAGS
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_LIBTOOL_DLOPEN
+AM_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+AM_LIBTOOLFLAGS = --silent
+lib_LTLIBRARIES = libmod1.la mod2.la
+libmod1_la_SOURCES = sub/mod1.c
+libmod1_la_LDFLAGS = -module
+libmod1_la_LIBADD = -dlopen mod2.la
+mod2_la_SOURCES = mod2.c
+mod2_la_LDFLAGS = -module
+mod2_la_LIBTOOLFLAGS =
+
+bin_PROGRAMS = prg
+prg_SOURCES = prg.c
+prg_LDADD = -dlopen libmod1.la -dlpreopen mod2.la
+
+.PHONY: print
+print:
+       @echo 1BEG: $(prg_DEPENDENCIES) :END1
+       @echo 2BEG: $(libmod1_la_DEPENDENCIES) :END2
+       @echo 3BEG: $(LTCOMPILE) :END3
+END
+
+mkdir sub liba
+
+cat > sub/mod1.c << 'END'
+int mod1 (void)
+{
+   return 1;
+}
+END
+
+cat > mod2.c << 'END'
+int mod2 (void)
+{
+   return 2;
+}
+END
+
+cat > prg.c << 'END'
+int main (void)
+{
+   return 0;
+}
+END
+
+libtoolize --force --copy
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing --copy
+
+./configure "--prefix=`pwd`/_inst"
+env LIBTOOLFLAGS=--silent $MAKE print >output 2>&1 || {
+  cat output
+  Exit 1
+}
+cat output
+grep '1BEG: libmod1.la mod2.la :END1' output
+grep '2BEG: mod2.la :END2' output
+grep '3BEG: .*silent.*silent.* :END3' output
+test 2 -le `grep mod2_la_LIBTOOLFLAGS Makefile | wc -l`
+$MAKE
+
+env LIBTOOLFLAGS=--silent $MAKE install >output 2>&1 || {
+  cat output
+  Exit 1
+}
+cat output
+grep 'silent.*silent.*prg' output
+grep 'silent.*silent.*libmod1' output
+
+env LIBTOOLFLAGS=--silent $MAKE uninstall >output 2>&1 || {
+  cat output
+  Exit 1
+}
+cat output
+grep 'silent.*silent.*libmod1' output
+
+:
diff --git a/t/libtool8.sh b/t/libtool8.sh
new file mode 100755 (executable)
index 0000000..9182c27
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake diagnoses conflicting installations.
+
+required='libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [false])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+if COND1
+  lib_LTLIBRARIES = liba.la
+  EXTRA_LTLIBRARIES = libc.la libc.la libb.la
+else
+  lib_LTLIBRARIES = libb.la
+endif
+if COND2
+if COND1
+    pkglib_LTLIBRARIES = liba.la
+endif
+LIBTOOLFLAGS = ouch
+endif
+END
+
+libtoolize
+$ACLOCAL
+AUTOMAKE_fails --add-missing
+grep libb stderr && Exit 1
+grep 'Makefile.am:3:.*libc.la.*multiply defined' stderr
+grep "Makefile.am:9:.*'pkglib" stderr
+grep "Makefile.am:2:.*'lib" stderr
+grep 'Makefile.am:11:.*AM_LIBTOOLFLAGS' stderr
diff --git a/t/libtool9.sh b/t/libtool9.sh
new file mode 100755 (executable)
index 0000000..b4d7baa
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure xxx_LINK is defined for each target that requires specific
+# flags.
+# Quite similar to libtool7.test, using AM_LDFLAGS in addition to
+# xxx_LDFLAGS.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+AC_LIBTOOL_DLOPEN
+AM_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_LDFLAGS = -module
+lib_LTLIBRARIES = libmod1.la mod2.la
+libmod1_la_SOURCES = mod1.c
+libmod1_la_LDFLAGS =
+libmod1_la_LIBADD = -dlopen mod2.la
+mod2_la_SOURCES = mod2.c
+
+bin_PROGRAMS = prg prg2
+prg_SOURCES = prg.c
+prg_LDADD = -dlopen libmod1.la -dlpreopen mod2.la
+prg_CPPFLAGS = -DXYZ=1
+prg2_SOURCES = prg.c
+prg2_CFLAGS =
+
+print:
+       @echo 1BEG: $(prg_DEPENDENCIES) :END1
+       @echo 2BEG: $(libmod1_la_DEPENDENCIES) :END2
+       @echo 3BEG: $(libmod1_la_LINK) :END3
+       @echo 4BEG: $(mod2_la_LINK) :END4
+       @echo 5BEG: $(prg_LINK) :END5
+       @echo 6BEG: $(prg2_LINK) :END6
+
+END
+
+mkdir liba
+
+cat > mod1.c << 'END'
+int mod1 (void)
+{
+   return 1;
+}
+END
+
+cat > mod2.c << 'END'
+int mod2 (void)
+{
+   return 2;
+}
+END
+
+cat > prg.c << 'END'
+int main (void)
+{
+   return 0;
+}
+END
+
+libtoolize --force --copy
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing --copy
+
+./configure
+env LDFLAGS=ldflags AM_LDFLAGS=am_ldflags libmod1_la_LDFLAGS=lm1_la_ldflags \
+    CFLAGS=cflags AM_CFLAGS=am_cflags prg2_CFLAGS=prg2_cflags \
+    $MAKE -e print >output 2>&1 || { cat output; Exit 1; }
+cat output
+grep '1BEG: libmod1.la mod2.la :END1' output
+grep '2BEG: mod2.la :END2' output
+grep '3BEG:.* am_cflags cflags .*lm1_la_ldflags ldflags.* :END3' output
+grep '3BEG: .*am_ldflags.* :END3' output && Exit 1
+grep '4BEG: :END4' output
+grep '5BEG: :END5' output
+grep '6BEG:.* prg2_cflags cflags .*am_ldflags ldflags.* :END6' output
+grep '6BEG: .*am_cflags.* :END6' output && Exit 1
+$MAKE
+
+:
diff --git a/t/license.sh b/t/license.sh
new file mode 100755 (executable)
index 0000000..c3dad69
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure COPYING is not overwritten, even with -a -f.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >>configure.ac
+
+cat >Makefile.am <<\EOF
+test1: distdir
+       grep 'GNU GENERAL PUBLIC LICENSE' $(distdir)/COPYING
+test2: distdir
+       grep 'MY-OWN-LICENSE' $(distdir)/COPYING
+test3: distdir
+       test ! -f $(distdir)/COPYING
+       grep 'MY-OWN-LICENSE' $(distdir)/COPYING.LIB
+EOF
+
+:> NEWS
+:> AUTHORS
+:> ChangeLog
+:> README
+
+test ! -f COPYING
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --gnu --add-missing
+
+./configure
+$MAKE test1
+
+# Use 'rm' before 'echo', because COPYING is likely to be a symlink to
+# the real COPYING...
+rm -f COPYING
+echo 'MY-OWN-LICENSE' >COPYING
+$MAKE test2
+
+$AUTOMAKE --gnu --add-missing --force-missing
+./configure
+$MAKE test2
+
+rm -f COPYING
+echo 'MY-OWN-LICENSE' >COPYING.LIB
+$AUTOMAKE --gnu --add-missing --force-missing
+./configure
+$MAKE test3
diff --git a/t/license2.sh b/t/license2.sh
new file mode 100755 (executable)
index 0000000..d447eba
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that installing 'COPYING' outputs a warning.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = gnu
+END
+
+: >AUTHORS
+: >NEWS
+: >README
+: >ChangeLog
+: >INSTALL
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'COPYING' stderr
+
+AUTOMAKE_run --add-missing
+grep 'COPYING' stderr
+grep 'GNU General Public License' stderr
+grep 'Consider adding.*version control' stderr
+test -f COPYING
diff --git a/t/link_c_cxx.sh b/t/link_c_cxx.sh
new file mode 100755 (executable)
index 0000000..a3dac1b
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure the C++ linker is used when appropriate.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lavalamp
+lavalamp_SOURCES = lava.c lamp.cxx
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# We should only see the C++ linker in the rules of 'Makefile.in'.
+
+# Look for this macro not at the beginning of any line; that will have
+# to be good enough for now.
+grep '.\$(CXXLINK)' Makefile.in
+
+# We should not see these patterns:
+grep '.\$(FLINK)' Makefile.in && Exit 1
+grep '.\$(LINK)'  Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/link_cond.sh b/t/link_cond.sh
new file mode 100755 (executable)
index 0000000..71733ba
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that automatic determination of the linker works well with
+# conditional use of languages in a single program.
+# This currently doesn't truly work, but we have an easy workaround
+# at least, that is tested here.
+# See automake bug#11089.
+
+required='cc c++'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AM_CONDITIONAL([HAVE_CXX], [test $have_cxx = yes])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+if HAVE_CXX
+foo_SOURCES = more.c++
+else
+foo_SOURCES = less.c
+endif
+## FIXME: ideally, this workaround shouldn't be needed.
+if HAVE_CXX
+foo_LINK = $(CXXLINK)
+else
+foo_LINK = $(LINK)
+endif
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+rm -f *.c++
+cat > less.c <<'END'
+/* Valid C but deliberately invalid C++ */
+main ()
+{
+  int new = 0;
+  return new;
+}
+END
+
+./configure have_cxx=no
+CXX=false $MAKE -e
+
+# Sanity check.
+rm -f foo foo.exe
+CC=false $MAKE -e && Exit 99
+
+$MAKE distclean
+
+rm -f *.c
+cat > more.c++ <<'END'
+/* Valid C++ but deliberately invalid C */
+using namespace std;
+int main (void)
+{
+  return 0;
+}
+END
+
+./configure have_cxx=yes
+CC=false $MAKE -e
+
+# Sanity check.
+rm -f foo foo.exe
+CXX=false $MAKE -e && Exit 99
+
+:
diff --git a/t/link_dist.sh b/t/link_dist.sh
new file mode 100755 (executable)
index 0000000..8ba05df
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure the linker for a dist_*_SOURCES can override that for
+# *_SOURCES
+# Richard Boulton <richard@tartarus.org>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lavalamp
+lavalamp_SOURCES = lava.c
+dist_lavalamp_SOURCES = lamp.cxx
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# We should only see the C++ linker in the rules of 'Makefile.in'.
+
+# Look for this macro not at the beginning of any line; that will have
+# to be good enough for now.
+grep '.\$(CXXLINK)' Makefile.in
+
+# We should not see these patterns:
+grep '.\$(FLINK)' Makefile.in && Exit 1
+grep '.\$(LINK)'  Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/link_f90_only.sh b/t/link_f90_only.sh
new file mode 100755 (executable)
index 0000000..a34d6c6
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure the Fortran 90 linker is used when appropriate.
+# (copied from link_f_only.test) Mike Nolta <mrnolta@princeton.edu>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_FC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lavalamp
+lavalamp_SOURCES = lamp.f90
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# We should only see the Fortran linker in the rules of 'Makefile.in'.
+
+# Look for this macro not at the beginning of any line; that will have
+# to be good enough for now.
+grep '.\$(FCLINK)' Makefile.in
+
+# We should not see these patterns:
+grep '.\$(CXXLINK)' Makefile.in && Exit 1
+grep '.\$(LINK)'    Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/link_f_only.sh b/t/link_f_only.sh
new file mode 100755 (executable)
index 0000000..25f3ef9
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure the Fortran 77 linker is used when appropriate.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_F77
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lavalamp
+lavalamp_SOURCES = lamp.f
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# We should only see the Fortran linker in the rules of 'Makefile.in'.
+
+# Look for this macro not at the beginning of any line; that will have
+# to be good enough for now.
+grep '.\$(F77LINK)' Makefile.in
+
+# We should not see these patterns:
+grep '.\$(CXXLINK)' Makefile.in && Exit 1
+grep '.\$(LINK)'    Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/link_fc.sh b/t/link_fc.sh
new file mode 100755 (executable)
index 0000000..6cf8b8b
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure the Fortran 77 linker is used when appropriate.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_F77
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lavalamp
+lavalamp_SOURCES = lava.c lamp.f
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# We should only see the Fortran 77 linker in the rules of
+# 'Makefile.in'.
+
+# Look for this macro not at the beginning of any line; that will have
+# to be good enough for now.
+grep '.\$(F77LINK)' Makefile.in
+
+# We should not see these patterns:
+grep '.\$(LINK)'    Makefile.in && Exit 1
+grep '.\$(CXXLINK)' Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/link_fccxx.sh b/t/link_fccxx.sh
new file mode 100755 (executable)
index 0000000..ede7b5a
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure the C++ linker is used when appropriate.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_F77
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lavalamp
+lavalamp_SOURCES = lava.c lamp.cxx lamp2.f
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# We should only see the C++ linker in the rules of 'Makefile.in'.
+
+# Look for this macro not at the beginning of any line; that will have
+# to be good enough for now.
+grep '.\$(CXXLINK)' Makefile.in
+
+# We should not see these patterns:
+grep '.\$(F77LINK)' Makefile.in && Exit 1
+grep '.\$(LINK)'    Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/link_fcxx.sh b/t/link_fcxx.sh
new file mode 100755 (executable)
index 0000000..545f6a6
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure the C++ linker is used when appropriate.
+# Matthew D. Langston <langston@SLAC.Stanford.EDU>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_F77
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lavalamp
+lavalamp_SOURCES = lava.cxx lamp.f
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# We should only see the C++ linker in the rules of 'Makefile.in'.
+
+# Look for this macro not at the beginning of any line; that will have
+# to be good enough for now.
+grep '.\$(CXXLINK)' Makefile.in
+
+# We should not see these patterns:
+grep '.\$(F77LINK)' Makefile.in && Exit 1
+grep '.\$(LINK)'    Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/link_override.sh b/t/link_override.sh
new file mode 100755 (executable)
index 0000000..48d32a2
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, 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 _LINK variables are detected and used as documented.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz boo
+foo_LINK = $(LINK)
+bar_LINK = $(LINK)
+bar_LDFLAGS = $(AM_LDFLAGS)
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+# We should use foo_LINK not LINK.
+grep '.\$(foo_LINK)' Makefile.in
+grep '.\$(LINK).*foo' Makefile.in && Exit 1
+
+# We should not override the user definition of bar_LINK.
+# IOW, bar_LDFLAGS is useless unless bar_LINK refers to it.
+grep '^ *bar_LINK *=.*bar_LDFLAGS' Makefile.in && Exit 1
+grep '.\$(bar_LINK).*bar' Makefile.in
+
+Exit 0
diff --git a/t/lisp2.sh b/t/lisp2.sh
new file mode 100755 (executable)
index 0000000..25d174f
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that Automake suggest using AM_PATH_LISPDIR to define lispdir.
+
+. ./defs || Exit 1
+
+
+: TRY 1 -- We lack both EMACS and lispdir.
+
+cat > Makefile.am << 'END'
+lisp_LISP = foo.el
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep AM_PATH_LISPDIR stderr
+grep '[Ll]isp source.*EMACS.* undefined' stderr
+grep '[Ll]isp source.*lispdir.* undefined' stderr
+grep ' add .*AM_PATH_LISPDIR' stderr
+
+
+: TRY 2 -- Setting lispdir should not be enough.
+
+cat > Makefile.am << 'END'
+lispdir = /usr/share/emacs/site-lisp
+lisp_LISP = foo.el
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'lispdir.*undefined' stderr && Exit 1
+grep '[Ll]isp source.*EMACS.* undefined' stderr
+grep 'define .*EMACS.* add .*AM_PATH_LISPDIR' stderr
+
+
+: TRY 3 -- Setting EMACS should not be enough.
+
+cat > Makefile.am << 'END'
+EMACS = emacs
+lisp_LISP = foo.el
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'EMACS.*undefined' stderr && Exit 1
+grep '[Ll]isp source.*lispdir.* undefined' stderr
+grep 'define .*lispdir.* add .*AM_PATH_LISPDIR' stderr
+
+
+: TRY 4 -- Setting both EMACS and lispdir is OK.
+
+cat > Makefile.am << 'END'
+lispdir = /usr/share/emacs/site-lisp
+EMACS = emacs
+lisp_LISP = foo.el
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+:
diff --git a/t/lisp3.sh b/t/lisp3.sh
new file mode 100755 (executable)
index 0000000..a1531d3
--- /dev/null
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that compiling interdependent elisp files works.
+
+required=emacs
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+lisp_LISP = am-one.el am-two.el am-three.el
+EXTRA_DIST = am-one.el am-two.el
+am-three.el:
+       echo "(provide 'am-three)" > $@
+CLEANFILES = am-three.el
+EOF
+
+cat >> configure.ac << 'EOF'
+AM_PATH_LISPDIR
+AC_OUTPUT
+EOF
+
+echo "(require 'am-two)" > am-one.el
+echo "(require 'am-three) (provide 'am-two)" > am-two.el
+# am-three.el is a built source
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure --prefix="`pwd`/_inst"
+
+$MAKE
+
+test -f am-one.elc
+test -f am-two.elc
+test -f am-three.elc
+test -f elc-stamp
+
+# Make sure we can recover from a deletion.
+rm -f am-one.elc
+$MAKE
+test -f am-one.elc
+
+# Test installation/deinstallation.
+
+$MAKE install
+
+find _inst # For debugging.
+
+# Keep thin in sync with m4/lispdir.m4.
+for dir in lib/emacs lib/xemacs share/emacs share/xemacs :; do
+  if test $dir = :; then
+    Exit 1
+  elif test -d _inst/$dir/site-lisp; then
+    break
+  fi
+done
+
+test -f _inst/$dir/site-lisp/am-one.el
+test -f _inst/$dir/site-lisp/am-one.elc
+test -f _inst/$dir/site-lisp/am-two.el
+test -f _inst/$dir/site-lisp/am-two.elc
+test -f _inst/$dir/site-lisp/am-three.el
+test -f _inst/$dir/site-lisp/am-three.elc
+
+$MAKE uninstall
+find _inst | $EGREP '\.elc?$' && Exit 1
+
+# Make sure we build all files when any of them change.
+# (We grep a message to make sure the compilation happens.)
+unique=0a3346e2af8a689b85002b53df09142a
+$sleep
+echo "(message \"$unique\")(provide 'am-three)" > am-three.el
+$MAKE >output 2>&1 || { cat output; Exit 1; }
+cat output
+grep $unique output
+
+# It should also work for VPATH-builds.
+$MAKE distcheck
+
+:
diff --git a/t/lisp4.sh b/t/lisp4.sh
new file mode 100755 (executable)
index 0000000..8d2de59
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure setting ELCFILES= disable byte-compilation as documented.
+# Report from Simon Josefsson.
+
+required=emacs
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+lisp_LISP = am-one.el am-two.el am-three.el
+EXTRA_DIST = am-one.el am-two.el
+ELCFILES=
+am-three.el:
+       echo "(provide 'am-three)" > $@
+CLEANFILES = am-three.el
+
+test:
+       test ! -f am-one.elc
+       test ! -f am-two.elc
+       test ! -f am-three.elc
+       test ! -f elc-stamp
+
+install-test: install
+       test -f "$(lispdir)/am-one.el"
+       test -f "$(lispdir)/am-two.el"
+       test -f "$(lispdir)/am-three.el"
+       test ! -f "$(lispdir)/am-one.elc"
+       test ! -f "$(lispdir)/am-two.elc"
+       test ! -f "$(lispdir)/am-three.elc"
+
+not-installed:
+       find "$(lispdir)" | grep '\.el$$' && exit 1; :
+       find "$(lispdir)" | grep '\.elc$$' && exit 1; :
+EOF
+
+cat >> configure.ac << 'EOF'
+AM_PATH_LISPDIR
+AC_OUTPUT
+EOF
+
+echo "(require 'am-two)" > am-one.el
+echo "(require 'am-three) (provide 'am-two)" > am-two.el
+# am-tree.el is a built source
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure --prefix "`pwd`"
+$MAKE
+$MAKE test
+$MAKE install-test
+$MAKE uninstall
+$MAKE not-installed
+
+# Fake the absence of emacs.
+# *.el files should not be installed, but "make install" and
+# "make uninstall" should continue to work.
+./configure EMACS=no --prefix "`pwd`"
+$MAKE
+$MAKE test
+$MAKE install
+$MAKE not-installed
+$MAKE uninstall
+
+:
diff --git a/t/lisp5.sh b/t/lisp5.sh
new file mode 100755 (executable)
index 0000000..997a56e
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Same as lisp4.test, but using the now-recommended way to install
+# non-bytecompiled *.el files.
+
+required=emacs
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+lisp_DATA = am-one.el am-two.el am-three.el
+EXTRA_DIST = am-one.el am-two.el
+am-three.el:
+       echo "(provide 'am-three)" > $@
+CLEANFILES = am-three.el
+
+test:
+       test ! -f am-one.elc
+       test ! -f am-two.elc
+       test ! -f am-three.elc
+       test ! -f elc-stamp
+
+install-test: install
+       test -f "$(lispdir)/am-one.el"
+       test -f "$(lispdir)/am-two.el"
+       test -f "$(lispdir)/am-three.el"
+       test ! -f "$(lispdir)/am-one.elc"
+       test ! -f "$(lispdir)/am-two.elc"
+       test ! -f "$(lispdir)/am-three.elc"
+
+not-installed:
+       find "$(lispdir)" | grep '\.el$$' && exit 1; :
+       find "$(lispdir)" | grep '\.elc$$' && exit 1; :
+EOF
+
+cat >> configure.ac << 'EOF'
+AM_PATH_LISPDIR
+AC_OUTPUT
+EOF
+
+echo "(require 'am-two)" > am-one.el
+echo "(require 'am-three) (provide 'am-two)" > am-two.el
+# am-tree.el is a built source
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure --prefix "`pwd`"
+$MAKE
+$MAKE test
+$MAKE install-test
+$MAKE uninstall
+$MAKE not-installed
+
+# Fake the absence of emacs.
+# *.el files SHOULD be installed by "make install" (and uninstalled
+# by "make uninstall").
+./configure EMACS=no --prefix "`pwd`"
+$MAKE
+$MAKE test
+$MAKE install-test
+$MAKE uninstall
+$MAKE not-installed
+
+:
diff --git a/t/lisp6.sh b/t/lisp6.sh
new file mode 100755 (executable)
index 0000000..9635ea2
--- /dev/null
@@ -0,0 +1,105 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for conditional _LISP.
+
+required=emacs
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+dist_lisp_LISP = am-one.el
+if WANT_TWO
+  dist_lisp_LISP += am-two.el
+endif
+dist_noinst_LISP = am-three.el
+
+dist-test: distdir
+       test -f $(distdir)/am-one.el
+       test -f $(distdir)/am-two.el
+       test -f $(distdir)/am-three.el
+EOF
+
+cat >> configure.ac << 'EOF'
+AM_CONDITIONAL([WANT_TWO], [test -n "$want_two"])
+AM_PATH_LISPDIR
+AC_OUTPUT
+EOF
+
+echo "(provide 'am-one)" > am-one.el
+echo "(require 'am-one)" > am-two.el
+echo "(require 'am-one)" > am-three.el
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure "--with-lispdir=`pwd`/lisp"
+
+$MAKE
+test -f am-one.elc
+test ! -f am-two.elc
+test -f am-three.elc
+test -f elc-stamp
+
+$MAKE install
+test -f lisp/am-one.el
+test -f lisp/am-one.elc
+test ! -f lisp/am-two.el
+test ! -f lisp/am-two.elc
+test ! -f lisp/am-three.el
+test ! -f lisp/am-three.elc
+
+$MAKE dist-test
+
+$MAKE distclean
+test ! -f am-one.elc
+test ! -f am-two.elc
+test ! -f am-three.elc
+test ! -f elc-stamp
+
+./configure "--with-lispdir=`pwd`/lisp" want_two=1
+
+$MAKE
+test -f am-one.elc
+test -f am-two.elc
+test -f am-three.elc
+test -f elc-stamp
+
+# Let's mutilate the source tree, to check the recover rule.
+rm -f am-*.elc
+$MAKE
+test -f am-one.elc
+test -f am-two.elc
+test -f am-three.elc
+test -f elc-stamp
+
+$MAKE install
+test -f lisp/am-one.el
+test -f lisp/am-one.elc
+test -f lisp/am-two.el
+test -f lisp/am-two.elc
+test ! -f lisp/am-three.el
+test ! -f lisp/am-three.elc
+
+$MAKE dist-test
+
+$MAKE distclean
+test ! -f am-one.elc
+test ! -f am-two.elc
+test ! -f am-three.elc
+test ! -f elc-stamp
+
+:
diff --git a/t/lisp7.sh b/t/lisp7.sh
new file mode 100755 (executable)
index 0000000..79799d1
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that lisp_LISP also works when emacs is not installed.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+dist_lisp_LISP = am-one.el am-two.el am-three.el
+EOF
+
+cat >> configure.ac << 'EOF'
+AM_PATH_LISPDIR
+EMACS=no # Simulate no emacs.
+AC_OUTPUT
+EOF
+
+echo "(require 'am-two)" > am-one.el
+echo "(require 'am-three) (provide 'am-two)" > am-two.el
+echo "(provide 'am-three)" > am-three.el
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+test 1 -eq `grep 'Warnings can be ignored' stdout | wc -l`
+
+test ! -f am-one.elc
+test ! -f am-two.elc
+test ! -f am-three.elc
+test -f elc-stamp
+
+$MAKE distcheck
+
+:
diff --git a/t/lisp8.sh b/t/lisp8.sh
new file mode 100755 (executable)
index 0000000..738cbd6
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check the recover rule of lisp_LISP with parallel make.
+
+required='GNUmake emacs'
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+dist_lisp_LISP = am-one.el am-two.el am-three.el
+EOF
+
+cat >> configure.ac << 'EOF'
+AM_PATH_LISPDIR
+AC_OUTPUT
+EOF
+
+echo "(require 'am-two)" > am-one.el
+echo "(require 'am-three) (provide 'am-two)" > am-two.el
+echo "(provide 'am-three)" > am-three.el
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+
+# Use append mode here to avoid dropping output.  See automake bug#11413.
+: >stdout
+$MAKE -j >>stdout || { cat stdout; Exit 1; }
+
+cat stdout
+test 1 -eq `grep 'Warnings can be ignored' stdout | wc -l`
+
+test -f am-one.elc
+test -f am-two.elc
+test -f am-three.elc
+test -f elc-stamp
+
+rm -f am-*.elc
+
+# Use append mode here to avoid dropping output.  See automake bug#11413.
+: >stdout
+$MAKE -j >>stdout || { cat stdout; Exit 1; }
+
+cat stdout
+test 1 -eq `grep 'Warnings can be ignored' stdout | wc -l`
+test -f am-one.elc
+test -f am-two.elc
+test -f am-three.elc
+test -f elc-stamp
+
+:
diff --git a/t/lispdry.sh b/t/lispdry.sh
new file mode 100755 (executable)
index 0000000..a89ffe1
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that 'make -n' works with the lisp_LISP recover rule.
+
+required='emacs non-root'
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+dist_lisp_LISP = am-one.el am-two.el am-three.el
+EOF
+
+cat >> configure.ac << 'EOF'
+AM_PATH_LISPDIR
+AC_OUTPUT
+EOF
+
+echo "(require 'am-two)" > am-one.el
+echo "(require 'am-three) (provide 'am-two)" > am-two.el
+echo "(provide 'am-three)" > am-three.el
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+
+$MAKE
+
+test -f am-one.elc
+test -f am-two.elc
+test -f am-three.elc
+test -f elc-stamp
+
+rm -f am-*.elc elc-stamp
+
+chmod a-w .
+
+$MAKE -n
+
+test ! -f am-one.elc
+test ! -f am-two.elc
+test ! -f am-three.elc
+test ! -f elc-stamp
+
+:
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
new file mode 100644 (file)
index 0000000..52bdaf9
--- /dev/null
@@ -0,0 +1,1293 @@
+## Makefile fragment that holds the list of test scripts of the automake
+## testsuite.  This fragment is meant to be included by the Makefile.am,
+## but also to be executed directly by make when bootstrapping automake.
+
+## Copyright (C) 2011-2012 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# FIXME: this "expected failures" are in truth an hack used to
+# FIXME: to verify that some incorrect usages of our perl libraries
+# FIXME: raise an error.  We should find a cleaner way to check that.
+perl_fake_XFAIL_TESTS = \
+t/pm/Cond2.pl \
+t/pm/Cond3.pl \
+t/pm/DisjCon2.pl \
+t/pm/DisjCon3.pl \
+t/pm/Version2.pl \
+t/pm/Version3.pl
+
+XFAIL_TESTS = \
+t/all.sh \
+t/yacc-bison-skeleton-cxx.sh \
+t/yacc-bison-skeleton.sh \
+t/cond17.sh \
+t/gcj6.sh \
+t/override-conditional-2.sh \
+t/dist-pr109765.sh \
+t/instdir-cond2.sh \
+t/java-nobase.sh \
+t/objext-pr10128.sh \
+t/parallel-tests-many.sh \
+t/pr8365-remake-timing.sh \
+t/lex-subobj-nodep.sh \
+t/remake-am-pr10111.sh \
+t/remake-m4-pr10111.sh \
+t/txinfo5.sh \
+$(perl_fake_XFAIL_TESTS)
+
+perl_TESTS = \
+t/pm/Cond2.pl \
+t/pm/Cond3.pl \
+t/pm/Condition.pl \
+t/pm/Condition-t.pl \
+t/pm/DisjCon2.pl \
+t/pm/DisjCon3.pl \
+t/pm/DisjConditions.pl \
+t/pm/DisjConditions-t.pl \
+t/pm/Version.pl \
+t/pm/Version2.pl \
+t/pm/Version3.pl \
+t/pm/Wrap.pl
+
+perf_TESTS = \
+t/perf/cond.sh \
+t/perf/testsuite-recheck.sh \
+t/perf/testsuite-summary.sh
+
+# The order here is mostly alphabetical, with the deliberate exception
+# that tests having a high runtime (especially TAP tests that run various
+# checks sequentially) are listed early; this improves performance on
+# concurrent testsuite runs.
+handwritten_TESTS = \
+t/get-sysconf.sh \
+$(perl_TESTS) \
+$(perf_TESTS) \
+t/instspc.tap \
+t/aclocal.sh \
+t/aclocal3.sh \
+t/aclocal4.sh \
+t/aclocal5.sh \
+t/aclocal6.sh \
+t/aclocal7.sh \
+t/aclocal8.sh \
+t/aclocal9.sh \
+t/acloca10.sh \
+t/acloca11.sh \
+t/acloca12.sh \
+t/acloca13.sh \
+t/acloca14.sh \
+t/acloca15.sh \
+t/acloca16.sh \
+t/acloca17.sh \
+t/acloca18.sh \
+t/acloca19.sh \
+t/acloca20.sh \
+t/acloca21.sh \
+t/acloca22.sh \
+t/acloca23.sh \
+t/aclocal-acdir.sh \
+t/aclocal-install-absdir.sh \
+t/aclocal-print-acdir.sh \
+t/aclocal-path.sh \
+t/aclocal-path-install.sh \
+t/aclocal-path-install-serial.sh \
+t/aclocal-path-nonexistent.sh \
+t/aclocal-path-precedence.sh \
+t/aclocal-install-fail.sh \
+t/aclocal-install-mkdir.sh \
+t/aclocal-no-install-no-mkdir.sh \
+t/aclocal-verbose-install.sh \
+t/ac-output-old.tap \
+t/acsilent.sh \
+t/acsubst.sh \
+t/acsubst2.sh \
+t/add-missing.tap \
+t/all.sh \
+t/all2.sh \
+t/alloca.sh \
+t/alloca2.sh \
+t/alpha.sh \
+t/alpha2.sh \
+t/amhello-cflags.sh \
+t/amhello-cross-compile.sh \
+t/amhello-binpkg.sh \
+t/aminit-moreargs-deprecation.sh \
+t/amassign.sh \
+t/ammissing.sh \
+t/amopt.sh \
+t/amopts-location.sh \
+t/amopts-variable-expansion.sh \
+t/amsubst.sh \
+t/ansi2knr-no-more.sh \
+t/ar-lib.sh \
+t/ar-lib2.sh \
+t/ar-lib3.sh \
+t/ar-lib4.sh \
+t/ar-lib5a.sh \
+t/ar-lib5b.sh \
+t/ar-lib6a.sh \
+t/ar-lib6b.sh \
+t/ar-lib7.sh \
+t/ar.sh \
+t/ar2.sh \
+t/ar3.sh \
+t/ar4.sh \
+t/ar5.sh \
+t/asm.sh \
+t/asm2.sh \
+t/asm3.sh \
+t/autodist.sh \
+t/autodist-subdir.sh \
+t/autodist-acconfig.sh \
+t/autodist-acconfig-no-subdir.sh \
+t/autodist-aclocal-m4.sh \
+t/autodist-config-headers.sh \
+t/autodist-configure-no-subdir.sh \
+t/autodist-no-duplicate.sh \
+t/autodist-stamp-vti.sh \
+t/autohdr.sh \
+t/autohdr2.sh \
+t/autohdr3.sh \
+t/autohdr4.sh \
+t/autohdrdry.sh \
+t/automake-cmdline.tap \
+t/auxdir.sh \
+t/auxdir6.sh \
+t/auxdir7.sh \
+t/auxdir8.sh \
+t/auxdir-autodetect.sh \
+t/auxdir-computed.tap \
+t/auxdir-misplaced.sh \
+t/auxdir-nonexistent.sh \
+t/auxdir-unportable.tap \
+t/backcompat.sh \
+t/backcompat2.sh \
+t/backcompat3.sh \
+t/backcompat4.sh \
+t/backcompat5.sh \
+t/backcompat6.sh \
+t/backsl.sh \
+t/backsl2.sh \
+t/backsl3.sh \
+t/backsl4.sh \
+t/badline.sh \
+t/badopt.sh \
+t/badprog.sh \
+t/block.sh \
+t/bsource.sh \
+t/candist.sh \
+t/canon.sh \
+t/canon2.sh \
+t/canon3.sh \
+t/canon4.sh \
+t/canon5.sh \
+t/canon6.sh \
+t/canon7.sh \
+t/canon8.sh \
+t/canon-name.sh \
+t/ccnoco.sh \
+t/ccnoco2.sh \
+t/ccnoco3.sh \
+t/check.sh \
+t/check2.sh \
+t/check3.sh \
+t/check4.sh \
+t/check5.sh \
+t/check6.sh \
+t/check7.sh \
+t/check8.sh \
+t/check10.sh \
+t/check11.sh \
+t/check12.sh \
+t/check-subst.sh \
+t/check-subst-prog.sh \
+t/check-exported-srcdir.sh \
+t/check-fd-redirect.sh \
+t/check-tests-in-builddir.sh \
+t/check-no-test-driver.sh \
+t/check-concurrency-bug9245.sh \
+t/checkall.sh \
+t/clean.sh \
+t/clean2.sh \
+t/colneq.sh \
+t/colneq2.sh \
+t/colneq3.sh \
+t/colon.sh \
+t/colon2.sh \
+t/colon3.sh \
+t/colon4.sh \
+t/colon5.sh \
+t/colon6.sh \
+t/colon7.sh \
+t/color.sh \
+t/color2.sh \
+t/comment.sh \
+t/comment2.sh \
+t/comment3.sh \
+t/comment4.sh \
+t/comment5.sh \
+t/comment6.sh \
+t/comment7.sh \
+t/comment8.sh \
+t/comment9.sh \
+t/commen10.sh \
+t/commen11.sh \
+t/comments-in-var-def.sh \
+t/compile.sh \
+t/compile2.sh \
+t/compile3.sh \
+t/compile4.sh \
+t/compile5.sh \
+t/compile6.sh \
+t/compile_f90_c_cxx.sh \
+t/compile_f_c_cxx.sh \
+t/cond-basic.sh \
+t/cond.sh \
+t/cond2.sh \
+t/cond3.sh \
+t/cond4.sh \
+t/cond5.sh \
+t/cond6.sh \
+t/cond7.sh \
+t/cond8.sh \
+t/cond9.sh \
+t/cond10.sh \
+t/cond11.sh \
+t/cond13.sh \
+t/cond14.sh \
+t/cond15.sh \
+t/cond16.sh \
+t/cond17.sh \
+t/cond18.sh \
+t/cond19.sh \
+t/cond20.sh \
+t/cond21.sh \
+t/cond22.sh \
+t/cond23.sh \
+t/cond24.sh \
+t/cond25.sh \
+t/cond26.sh \
+t/cond27.sh \
+t/cond28.sh \
+t/cond30.sh \
+t/cond31.sh \
+t/cond32.sh \
+t/cond33.sh \
+t/cond34.sh \
+t/cond35.sh \
+t/cond36.sh \
+t/cond37.sh \
+t/cond38.sh \
+t/cond39.sh \
+t/cond40.sh \
+t/cond41.sh \
+t/cond42.sh \
+t/cond43.sh \
+t/cond44.sh \
+t/cond45.sh \
+t/cond46.sh \
+t/condd.sh \
+t/condhook.sh \
+t/condhook2.sh \
+t/condinc.sh \
+t/condinc2.sh \
+t/condlib.sh \
+t/condman2.sh \
+t/condman3.sh \
+t/configure.sh \
+t/confdeps.sh \
+t/conff.sh \
+t/conff2.sh \
+t/conffile-leading-dot.sh \
+t/confh.sh \
+t/confh4.sh \
+t/confh5.sh \
+t/confh6.sh \
+t/confh7.sh \
+t/confh8.sh \
+t/confincl.sh \
+t/conflnk.sh \
+t/conflnk2.sh \
+t/conflnk3.sh \
+t/conflnk4.sh \
+t/confsub.sh \
+t/confvar.sh \
+t/confvar2.sh \
+t/copy.sh \
+t/cscope.tap \
+t/cscope2.sh \
+t/cscope3.sh \
+t/cxx.sh \
+t/cxx2.sh \
+t/cxxcpp.sh \
+t/cxxlibobj.sh \
+t/cxxlink.sh \
+t/cxxnoc.sh \
+t/cxxo.sh \
+t/cygnus-deprecation.sh \
+t/cygnus-check-without-all.sh \
+t/cygnus-dependency-tracking.sh \
+t/cygnus-imply-foreign.sh \
+t/cygnus-no-dist.sh \
+t/cygnus-no-installinfo.sh \
+t/cygnus-requires-maintainer-mode.sh \
+t/cygwin32.sh \
+t/dash.sh \
+t/defun.sh \
+t/defun2.sh \
+t/dejagnu.sh \
+t/dejagnu2.sh \
+t/dejagnu3.sh \
+t/dejagnu4.sh \
+t/dejagnu5.sh \
+t/dejagnu6.sh \
+t/dejagnu7.sh \
+t/dejagnu-absolute-builddir.sh \
+t/dejagnu-relative-srcdir.sh \
+t/dejagnu-siteexp-extend.sh \
+t/dejagnu-siteexp-append.sh \
+t/dejagnu-siteexp-useredit.sh \
+t/deleted-am.sh \
+t/deleted-m4.sh \
+t/depacl2.sh \
+t/depcomp.sh \
+t/depcomp2.sh \
+t/depcomp8a.sh \
+t/depcomp8b.sh \
+t/depdist.sh \
+t/depend.sh \
+t/depend3.sh \
+t/depend4.sh \
+t/depend5.sh \
+t/depend6.sh \
+t/deprecated-acinit.sh \
+t/destdir.sh \
+t/dirlist.sh \
+t/dirlist2.sh \
+t/dirlist-abspath.sh \
+t/discover.sh \
+t/dist-formats.tap \
+t/dist-auxdir-many-subdirs.sh \
+t/dist-auxfile-2.sh \
+t/dist-auxfile.sh \
+t/dist-included-parent-dir.sh \
+t/dist-missing-am.sh \
+t/dist-missing-included-m4.sh \
+t/dist-missing-m4.sh \
+t/dist-readonly.sh \
+t/dist-repeated.sh \
+t/dist-pr109765.sh \
+t/distcleancheck.sh \
+t/distcom2.sh \
+t/distcom3.sh \
+t/distcom4.sh \
+t/distcom5.sh \
+t/distcom-subdir.sh \
+t/distdir.sh \
+t/disthook.sh \
+t/distlinks.sh \
+t/distlinksbrk.sh \
+t/distname.sh \
+t/distcheck-configure-flags.sh \
+t/distcheck-configure-flags-am.sh \
+t/distcheck-configure-flags-subpkg.sh \
+t/distcheck-hook.sh \
+t/distcheck-hook2.sh \
+t/distcheck-writable-srcdir.sh \
+t/distcheck-missing-m4.sh \
+t/distcheck-outdated-m4.sh \
+t/distcheck-override-infodir.sh \
+t/distcheck-pr9579.sh \
+t/distcheck-pr10470.sh \
+t/dmalloc.sh \
+t/doc-parsing-buglets-colneq-subst.sh \
+t/doc-parsing-buglets-tabs.sh \
+t/dollar.sh \
+t/dollarvar.sh \
+t/dollarvar2.sh \
+t/double.sh \
+t/dup2.sh \
+t/else.sh \
+t/empty.sh \
+t/empty2.sh \
+t/empty3.sh \
+t/empty4.sh \
+t/exdir.sh \
+t/exdir2.sh \
+t/exdir3.sh \
+t/exeext.sh \
+t/exeext2.sh \
+t/exeext3.sh \
+t/exeext4.sh \
+t/exsource.sh \
+t/ext.sh \
+t/ext2.sh \
+t/ext3.sh \
+t/extra.sh \
+t/extra2.sh \
+t/extra3.sh \
+t/extra4.sh \
+t/extra5.sh \
+t/extra6.sh \
+t/extra7.sh \
+t/extra8.sh \
+t/extra9.sh \
+t/extra10.sh \
+t/extra11.sh \
+t/extra12.sh \
+t/extra-programs-empty.sh \
+t/extra-portability.sh \
+t/extra-portability2.sh \
+t/extra-portability3.sh \
+t/extradep.sh \
+t/extradep2.sh \
+t/f90only.sh \
+t/flavor.sh \
+t/flibs.sh \
+t/fn99.sh \
+t/fn99subdir.sh \
+t/fnoc.sh \
+t/fo.sh \
+t/forcemiss.sh \
+t/forcemiss2.sh \
+t/fort1.sh \
+t/fort2.sh \
+t/fort4.sh \
+t/fort5.sh \
+t/fonly.sh \
+t/fortdep.sh \
+t/gcj.sh \
+t/gcj2.sh \
+t/gcj3.sh \
+t/gcj4.sh \
+t/gcj5.sh \
+t/gcj6.sh \
+t/gettext.sh \
+t/gettext2.sh \
+t/gettext3.sh \
+t/gnumake.sh \
+t/gnuwarn.sh \
+t/gnuwarn2.sh \
+t/gnits.sh \
+t/gnits2.sh \
+t/gnits3.sh \
+t/hdr-vars-defined-once.sh \
+t/header.sh \
+t/help.sh \
+t/help2.sh \
+t/help3.sh \
+t/help4.sh \
+t/help-depend.sh \
+t/help-depend2.sh \
+t/help-dmalloc.sh \
+t/help-init.sh \
+t/help-lispdir.sh \
+t/help-multilib.sh \
+t/help-python.sh \
+t/help-silent.sh \
+t/help-upc.sh \
+t/hfs.sh \
+t/implicit.sh \
+t/info.sh \
+t/init.sh \
+t/init2.sh \
+t/insh2.sh \
+t/install2.sh \
+t/installdir.sh \
+t/instsh.sh \
+t/instsh2.sh \
+t/instsh3.sh \
+t/instdat.sh \
+t/instdat2.sh \
+t/instdir.sh \
+t/instdir2.sh \
+t/instdir-cond.sh \
+t/instdir-cond2.sh \
+t/instdir-no-empty.sh \
+t/instdir-java.sh \
+t/instdir-lisp.sh \
+t/instdir-ltlib.sh \
+t/instdir-prog.sh \
+t/instdir-python.sh \
+t/instdir-texi.sh \
+t/instexec.sh \
+t/instfail.sh \
+t/instfail-info.sh \
+t/instfail-java.sh \
+t/instfail-libtool.sh \
+t/insthook.sh \
+t/instman.sh \
+t/instman2.sh \
+t/instmany.sh \
+t/instmany-mans.sh \
+t/instmany-python.sh \
+t/install-info-dir.sh \
+t/interp.sh \
+t/interp2.sh \
+t/java.sh \
+t/java2.sh \
+t/java3.sh \
+t/javadir-undefined.sh \
+t/javaflags.sh \
+t/java-check.sh \
+t/java-clean.sh \
+t/java-compile-install.sh \
+t/java-compile-run-flat.sh \
+t/java-compile-run-nested.sh \
+t/java-empty-classpath.sh \
+t/javaprim.sh \
+t/javasubst.sh \
+t/java-extra.sh \
+t/java-mix.sh \
+t/java-no-duplicate.sh \
+t/java-nobase.sh \
+t/java-noinst.sh \
+t/java-rebuild.sh \
+t/java-sources.sh \
+t/java-uninstall.sh \
+t/ldadd.sh \
+t/ldflags.sh \
+t/lex.sh \
+t/lex2.sh \
+t/lex3.sh \
+t/lex5.sh \
+t/lexcpp.sh \
+t/lexvpath.sh \
+t/lex-subobj-nodep.sh \
+t/lex-lib.sh \
+t/lex-lib-external.sh \
+t/lex-libobj.sh \
+t/lex-noyywrap.sh \
+t/lex-clean-cxx.sh \
+t/lex-clean.sh \
+t/lex-depend-cxx.sh \
+t/lex-depend-grep.sh \
+t/lex-depend.sh \
+t/lex-line.sh \
+t/lex-nodist.sh \
+t/lex-pr204.sh \
+t/lflags.sh \
+t/lflags2.sh \
+t/libexec.sh \
+t/libobj-basic.sh \
+t/libobj2.sh \
+t/libobj3.sh \
+t/libobj4.sh \
+t/libobj5.sh \
+t/libobj7.sh \
+t/libobj10.sh \
+t/libobj12.sh \
+t/libobj13.sh \
+t/libobj14.sh \
+t/libobj15a.sh \
+t/libobj15b.sh \
+t/libobj15c.sh \
+t/libobj16a.sh \
+t/libobj16b.sh \
+t/libobj17.sh \
+t/libobj18.sh \
+t/libobj19.sh \
+t/libobj20a.sh \
+t/libobj20b.sh \
+t/libobj20c.sh \
+t/library.sh \
+t/library2.sh \
+t/library3.sh \
+t/libtool.sh \
+t/libtool2.sh \
+t/libtool3.sh \
+t/libtool4.sh \
+t/libtool5.sh \
+t/libtool6.sh \
+t/libtool7.sh \
+t/libtool8.sh \
+t/libtool9.sh \
+t/libtoo10.sh \
+t/libtoo11.sh \
+t/license.sh \
+t/license2.sh \
+t/link_c_cxx.sh \
+t/link_cond.sh \
+t/link_dist.sh \
+t/link_f90_only.sh \
+t/link_fc.sh \
+t/link_fccxx.sh \
+t/link_fcxx.sh \
+t/link_f_only.sh \
+t/link_override.sh \
+t/lisp2.sh \
+t/lisp3.sh \
+t/lisp4.sh \
+t/lisp5.sh \
+t/lisp6.sh \
+t/lisp7.sh \
+t/lisp8.sh \
+t/lispdry.sh \
+t/listval.sh \
+t/location.sh \
+t/longline.sh \
+t/longlin2.sh \
+t/ltcond.sh \
+t/ltcond2.sh \
+t/ltconv.sh \
+t/ltdeps.sh \
+t/ltinit.sh \
+t/ltinstloc.sh \
+t/ltlibobjs.sh \
+t/ltlibsrc.sh \
+t/ltorder.sh \
+t/lzma.sh \
+t/m4-inclusion.sh \
+t/maintclean.sh \
+t/maintclean-vpath.sh \
+t/maintmode-configure-msg.sh \
+t/make.sh \
+t/makefile-deps.sh \
+t/makej.sh \
+t/makej2.sh \
+t/maken.sh \
+t/maken3.sh \
+t/make-dryrun.tap \
+t/makevars.sh \
+t/man.sh \
+t/man2.sh \
+t/man3.sh \
+t/man4.sh \
+t/man5.sh \
+t/man6.sh \
+t/man7.sh \
+t/man8.sh \
+t/mdate.sh \
+t/mdate2.sh \
+t/mdate3.sh \
+t/mdate4.sh \
+t/mdate5.sh \
+t/mdate6.sh \
+t/missing.sh \
+t/missing2.sh \
+t/missing3.sh \
+t/missing4.sh \
+t/missing5.sh \
+t/missing6.sh \
+t/missing-auxfile-stops-makefiles-creation.sh \
+t/mkdirp-deprecation.sh \
+t/mkinstall.sh \
+t/mkinst2.sh \
+t/mkinst3.sh \
+t/mmode.sh \
+t/mmodely.sh \
+t/multlib.sh \
+t/no-extra-makefile-code.sh \
+t/no-outdir-option.sh \
+t/nobase.sh \
+t/nobase-libtool.sh \
+t/nobase-python.sh \
+t/nobase-nodist.sh \
+t/nodef.sh \
+t/nodef2.sh \
+t/nodep.sh \
+t/nodep2.sh \
+t/nodepcomp.sh \
+t/nodist.sh \
+t/nodist2.sh \
+t/nodist3.sh \
+t/noinst.sh \
+t/noinstdir.sh \
+t/nolink.sh \
+t/nostdinc.sh \
+t/notrans.sh \
+t/number.sh \
+t/objc-basic.sh \
+t/objc-minidemo.sh \
+t/objc-flags.sh \
+t/objc-deps.sh \
+t/objcxx-basic.sh \
+t/objcxx-minidemo.sh \
+t/objcxx-flags.sh \
+t/objcxx-deps.sh \
+t/objc-megademo.sh \
+t/objext-pr10128.sh \
+t/obsolete.sh \
+t/oldvars.sh \
+t/order.sh \
+t/output.sh \
+t/output2.sh \
+t/output3.sh \
+t/output4.sh \
+t/output5.sh \
+t/output6.sh \
+t/output7.sh \
+t/output8.sh \
+t/output9.sh \
+t/output10.sh \
+t/output11.sh \
+t/output12.sh \
+t/output13.sh \
+t/output-order.sh \
+t/override-conditional-1.sh \
+t/override-conditional-2.sh \
+t/override-html.sh \
+t/override-suggest-local.sh \
+t/parallel-am.sh \
+t/parallel-am2.sh \
+t/parallel-am3.sh \
+t/serial-tests.sh \
+t/parallel-tests.sh \
+t/parallel-tests2.sh \
+t/parallel-tests3.sh \
+t/parallel-tests5.sh \
+t/parallel-tests6.sh \
+t/parallel-tests8.sh \
+t/parallel-tests9.sh \
+t/parallel-tests10.sh \
+t/parallel-tests-recheck-depends-on-all.sh \
+t/parallel-tests-exeext.sh \
+t/parallel-tests-suffix.sh \
+t/parallel-tests-suffix-prog.sh \
+t/parallel-tests-log-compiler-1.sh \
+t/parallel-tests-log-compiler-2.sh \
+t/parallel-tests-dry-run-1.sh \
+t/parallel-tests-dry-run-2.sh \
+t/parallel-tests-fd-redirect.sh \
+t/parallel-tests-fd-redirect-exeext.sh \
+t/parallel-tests-extra-programs.sh \
+t/parallel-tests-unreadable.sh \
+t/parallel-tests-subdir.sh \
+t/parallel-tests-interrupt.tap \
+t/parallel-tests-reset-term.sh \
+t/parallel-tests-harderror.sh \
+t/parallel-tests-log-override-1.sh \
+t/parallel-tests-log-override-2.sh \
+t/parallel-tests-log-override-recheck.sh \
+t/parallel-tests-log-compiler-example.sh \
+t/parallel-tests-cmdline-override.sh \
+t/parallel-tests-fork-bomb.sh \
+t/parallel-tests-empty-testlogs.sh \
+t/parallel-tests-driver-install.sh \
+t/parallel-tests-no-color-in-log.sh \
+t/parallel-tests-no-spurious-summary.sh \
+t/parallel-tests-exit-statuses.sh \
+t/parallel-tests-console-output.sh \
+t/parallel-tests-once.sh \
+t/parallel-tests-trailing-bslash.sh \
+t/parallel-tests-many.sh \
+t/tests-environment.sh \
+t/am-tests-environment.sh \
+t/tests-environment-backcompat.sh \
+t/testsuite-summary-color.sh \
+t/testsuite-summary-count.sh \
+t/testsuite-summary-count-many.sh \
+t/testsuite-summary-reference-log.sh \
+t/test-driver-acsubst.sh \
+t/test-driver-cond.sh \
+t/test-driver-custom-no-extra-driver.sh \
+t/test-driver-custom.sh \
+t/test-driver-custom-xfail-tests.sh \
+t/test-driver-custom-multitest.sh \
+t/test-driver-custom-multitest-recheck.sh \
+t/test-driver-custom-multitest-recheck2.sh \
+t/test-driver-create-log-dir.sh \
+t/test-driver-strip-vpath.sh \
+t/test-driver-trs-suffix-registered.sh \
+t/test-driver-fail.sh \
+t/test-driver-is-distributed.sh \
+t/test-harness-vpath-rewrite.sh \
+t/test-log.sh \
+t/test-logs-repeated.sh \
+t/test-metadata-global-log.sh \
+t/test-metadata-global-result.sh \
+t/test-metadata-recheck.sh \
+t/test-metadata-results.sh \
+t/test-missing.sh \
+t/test-missing2.sh \
+t/test-trs-basic.sh \
+t/test-trs-recover.sh \
+t/test-trs-recover2.sh \
+t/test-extensions.sh \
+t/test-extensions-cond.sh \
+t/parse.sh \
+t/percent.sh \
+t/percent2.sh \
+t/phony.sh \
+t/pluseq.sh \
+t/pluseq2.sh \
+t/pluseq3.sh \
+t/pluseq4.sh \
+t/pluseq5.sh \
+t/pluseq6.sh \
+t/pluseq7.sh \
+t/pluseq8.sh \
+t/pluseq9.sh \
+t/pluseq10.sh \
+t/pluseq11.sh \
+t/posixsubst-data.sh \
+t/posixsubst-extradist.sh \
+t/posixsubst-ldadd.sh \
+t/posixsubst-libraries.sh \
+t/posixsubst-ltlibraries.sh \
+t/posixsubst-programs.sh \
+t/posixsubst-scripts.sh \
+t/posixsubst-sources.sh \
+t/posixsubst-tests.sh \
+t/postproc.sh \
+t/ppf77.sh \
+t/pr2.sh \
+t/pr9.sh \
+t/pr72.sh \
+t/pr87.sh \
+t/pr211.sh \
+t/pr220.sh \
+t/pr224.sh \
+t/pr229.sh \
+t/pr243.sh \
+t/pr266.sh \
+t/pr279.sh \
+t/pr279-2.sh \
+t/pr287.sh \
+t/pr300-lib.sh \
+t/pr300-ltlib.sh \
+t/pr300-prog.sh \
+t/pr307.sh \
+t/pr401.sh \
+t/pr401b.sh \
+t/pr401c.sh \
+t/prefix.sh \
+t/primary.sh \
+t/primary2.sh \
+t/primary3.sh \
+t/primary-prefix-invalid-couples.tap \
+t/primary-prefix-valid-couples.sh \
+t/primary-prefix-couples-force-valid.sh \
+t/primary-prefix-couples-documented-valid.sh \
+t/print-libdir.sh \
+t/proginst.sh \
+t/programs-primary-rewritten.sh \
+t/py-compile-basic.sh \
+t/py-compile-basic2.sh \
+t/py-compile-basedir.sh \
+t/py-compile-destdir.sh \
+t/py-compile-env.sh \
+t/py-compile-option-terminate.sh \
+t/py-compile-usage.sh \
+t/python.sh \
+t/python2.sh \
+t/python3.sh \
+t/python4.sh \
+t/python5.sh \
+t/python5b.sh \
+t/python6.sh \
+t/python7.sh \
+t/python8.sh \
+t/python9.sh \
+t/python10.sh \
+t/python11.sh \
+t/python12.sh \
+t/python-dist.sh \
+t/python-vars.sh \
+t/python-virtualenv.sh \
+t/python-pr10995.sh \
+t/recurs.sh \
+t/recurs2.sh \
+t/relativize.tap \
+t/remake.sh \
+t/remake1a.sh \
+t/remake2.sh \
+t/remake3.sh \
+t/remake3a.sh \
+t/remake4.sh \
+t/remake5.sh \
+t/remake6.sh \
+t/remake7.sh \
+t/remake8a.sh \
+t/remake8b.sh \
+t/remake9a.sh \
+t/remake9b.sh \
+t/remake9c.sh \
+t/remake9d.sh \
+t/remake10a.sh \
+t/remake10b.sh \
+t/remake10c.sh \
+t/remake11.sh \
+t/remake12.sh \
+t/remake-all-1.sh \
+t/remake-all-2.sh \
+t/remake-subdir-from-subdir.sh \
+t/remake-subdir-gnu.sh \
+t/remake-subdir.sh \
+t/remake-subdir2.sh \
+t/remake-subdir-long-time.sh \
+t/remake-gnulib-add-acsubst.sh \
+t/remake-gnulib-add-header.sh \
+t/remake-gnulib-remove-header.sh \
+t/remake-moved-m4-file.sh \
+t/remake-deleted-m4-file.sh \
+t/remake-renamed-m4-file.sh \
+t/remake-renamed-m4-macro-and-file.sh \
+t/remake-renamed-m4-macro.sh \
+t/remake-am-pr10111.sh \
+t/remake-m4-pr10111.sh \
+t/remake-deleted-am-2.sh \
+t/remake-deleted-am-subdir.sh \
+t/remake-deleted-am.sh \
+t/remake-renamed-am.sh \
+t/pr8365-remake-timing.sh \
+t/req.sh \
+t/reqd.sh \
+t/reqd2.sh \
+t/repeated-options.sh \
+t/rulepat.sh \
+t/self-check-cleanup.tap \
+t/self-check-configure-help.sh \
+t/self-check-dir.tap \
+t/self-check-env-sanitize.tap \
+t/self-check-exit.tap \
+t/self-check-explicit-skips.sh \
+t/self-check-is_newest.tap \
+t/self-check-me.tap \
+t/self-check-reexec.tap \
+t/self-check-report.sh \
+t/self-check-sanity.sh \
+t/self-check-seq.tap \
+t/self-check-is-blocked-signal.tap \
+t/self-check-tap.sh \
+t/self-check-unindent.tap \
+t/sanity.sh \
+t/scripts.sh \
+t/seenc.sh \
+t/silent.sh \
+t/silent2.sh \
+t/silent3.sh \
+t/silent4.sh \
+t/silent6.sh \
+t/silent7.sh \
+t/silent8.sh \
+t/silent9.sh \
+t/silentcxx.sh \
+t/silentcxx-gcc.sh \
+t/silentf77.sh \
+t/silentf90.sh \
+t/silent-amopts.sh \
+t/silent-many-gcc.sh \
+t/silent-many-generic.sh \
+t/silent-nowarn.sh \
+t/silent-configsite.sh \
+t/silent-nested-vars.sh \
+t/silent-lex.sh \
+t/silent-yacc.sh \
+t/silent-yacc-headers.sh \
+t/srcsub.sh \
+t/srcsub2.sh \
+t/space.sh \
+t/specflg.sh \
+t/specflg2.sh \
+t/specflg3.sh \
+t/specflg6.sh \
+t/specflg7.sh \
+t/specflg8.sh \
+t/specflg9.sh \
+t/specflg10.sh \
+t/specflg-dummy.sh \
+t/spell.sh \
+t/spell2.sh \
+t/spell3.sh \
+t/spelling.sh \
+t/spy.sh \
+t/spy-rm.tap \
+t/stdinc.sh \
+t/stamph2.sh \
+t/stdlib.sh \
+t/stdlib2.sh \
+t/strictness-override.sh \
+t/strictness-precedence.sh \
+t/strip.sh \
+t/strip2.sh \
+t/strip3.sh \
+t/subdir.sh \
+t/subdir2.sh \
+t/subdir3.sh \
+t/subdir4.sh \
+t/subdir5.sh \
+t/subdir6.sh \
+t/subdir7.sh \
+t/subdir8.sh \
+t/subdir9.sh \
+t/subdir10.sh \
+t/subdirbuiltsources.sh \
+t/subcond.sh \
+t/subcond2.sh \
+t/subcond3.sh \
+t/subobj.sh \
+t/subobj2.sh \
+t/subobj4.sh \
+t/subobj5.sh \
+t/subobj6.sh \
+t/subobj7.sh \
+t/subobj8.sh \
+t/subobj9.sh \
+t/subobj10.sh \
+t/subobj11a.sh \
+t/subobj11b.sh \
+t/subobj11c.sh \
+t/subobjname.sh \
+t/subpkg.sh \
+t/subpkg2.sh \
+t/subpkg3.sh \
+t/subpkg4.sh \
+t/subpkg-yacc.sh \
+t/subst.sh \
+t/subst3.sh \
+t/subst4.sh \
+t/subst5.sh \
+t/subst-no-trailing-empty-line.sh \
+t/substref.sh \
+t/substre2.sh \
+t/substtarg.sh \
+t/suffix.sh \
+t/suffix2.sh \
+t/suffix3.tap \
+t/suffix4.sh \
+t/suffix5.sh \
+t/suffix6.sh \
+t/suffix6b.sh \
+t/suffix6c.sh \
+t/suffix7.sh \
+t/suffix8.tap \
+t/suffix9.sh \
+t/suffix10.tap \
+t/suffix11.tap \
+t/suffix12.sh \
+t/suffix13.sh \
+t/suffix-chain.tap \
+t/symlink.sh \
+t/symlink2.sh \
+t/syntax.sh \
+t/tap-ambiguous-directive.sh \
+t/tap-autonumber.sh \
+t/tap-bailout.sh \
+t/tap-bailout-leading-space.sh \
+t/tap-bailout-and-logging.sh \
+t/tap-bailout-suppress-badexit.sh \
+t/tap-bailout-suppress-later-diagnostic.sh \
+t/tap-bailout-suppress-later-errors.sh \
+t/tap-color.sh \
+t/tap-deps.sh \
+t/tap-diagnostic.sh \
+t/tap-empty-diagnostic.sh \
+t/tap-empty.sh \
+t/tap-escape-directive.sh \
+t/tap-escape-directive-2.sh \
+t/tap-exit.sh \
+t/tap-signal.tap \
+t/tap-fancy.sh \
+t/tap-fancy2.sh \
+t/tap-global-log.sh \
+t/tap-global-result.sh \
+t/tap-log.sh \
+t/tap-msg0-result.sh \
+t/tap-msg0-directive.sh \
+t/tap-msg0-planskip.sh \
+t/tap-msg0-bailout.sh \
+t/tap-msg0-misc.sh \
+t/tap-merge-stdout-stderr.sh \
+t/tap-no-merge-stdout-stderr.sh \
+t/tap-no-disable-hard-error.sh \
+t/tap-no-spurious-summary.sh \
+t/tap-no-spurious-numbers.sh \
+t/tap-no-spurious.sh \
+t/tap-not-ok-skip.sh \
+t/tap-number-wordboundary.sh \
+t/tap-numeric-description.sh \
+t/tap-negative-numbers.sh \
+t/tap-numbers-leading-zero.sh \
+t/tap-out-of-order.sh \
+t/tap-passthrough.sh \
+t/tap-passthrough-exit.sh \
+t/tap-plan.sh \
+t/tap-plan-corner.sh \
+t/tap-plan-errors.sh \
+t/tap-plan-middle.sh \
+t/tap-plan-whitespace.sh \
+t/tap-plan-leading-zero.sh \
+t/tap-plan-malformed.sh \
+t/tap-missing-plan-and-bad-exit.sh \
+t/tap-planskip.sh \
+t/tap-planskip-late.sh \
+t/tap-planskip-and-logging.sh \
+t/tap-planskip-unplanned.sh \
+t/tap-planskip-unplanned-corner.sh \
+t/tap-planskip-case-insensitive.sh \
+t/tap-planskip-whitespace.sh \
+t/tap-planskip-badexit.sh \
+t/tap-planskip-bailout.sh \
+t/tap-planskip-later-errors.sh \
+t/tap-realtime.sh \
+t/tap-test-number-0.sh \
+t/tap-recheck-logs.sh \
+t/tap-result-comment.sh \
+t/tap-todo-skip-together.sh \
+t/tap-todo-skip-whitespace.sh \
+t/tap-todo-skip.sh \
+t/tap-unplanned.sh \
+t/tap-whitespace-normalization.sh \
+t/tap-with-and-without-number.sh \
+t/tap-xfail-tests.sh \
+t/tap-common-setup.sh \
+t/tap-bad-prog.tap \
+t/tap-basic.sh \
+t/tap-diagnostic-custom.sh \
+t/tap-driver-stderr.sh \
+t/tap-doc.sh \
+t/tap-doc2.sh \
+t/tap-more.sh \
+t/tap-more2.sh \
+t/tap-recheck.sh \
+t/tap-summary.sh \
+t/tap-summary-color.sh \
+t/tags.sh \
+t/tags2.sh \
+t/tagsub.sh \
+t/tar.sh \
+t/tar2.sh \
+t/tar3.sh \
+t/tar-override.sh \
+t/target-cflags.sh \
+t/targetclash.sh \
+t/tests-environment-fd-redirect.sh \
+t/tests-environment-and-log-compiler.sh \
+t/txinfo.sh \
+t/txinfo2.sh \
+t/txinfo3.sh \
+t/txinfo4.sh \
+t/txinfo5.sh \
+t/txinfo5b.sh \
+t/txinfo6.sh \
+t/txinfo7.sh \
+t/txinfo8.sh \
+t/txinfo9.sh \
+t/txinfo10.sh \
+t/txinfo13.sh \
+t/txinfo16.sh \
+t/txinfo17.sh \
+t/txinfo19.sh \
+t/txinfo20.sh \
+t/txinfo21.sh \
+t/txinfo22.sh \
+t/txinfo23.sh \
+t/txinfo24.sh \
+t/txinfo25.sh \
+t/txinfo26.sh \
+t/txinfo27.sh \
+t/txinfo28.sh \
+t/txinfo29.sh \
+t/txinfo30.sh \
+t/txinfo31.sh \
+t/txinfo32.sh \
+t/txinfo33.sh \
+t/txinfo-no-clutter.sh \
+t/txinfo-unrecognized-extension.sh \
+t/transform.sh \
+t/transform2.sh \
+t/transform3.sh \
+t/uninstall-fail.sh \
+t/uninstall-pr9578.sh \
+t/unused.sh \
+t/upc.sh \
+t/upc2.sh \
+t/upc3.sh \
+t/vala.sh \
+t/vala2.sh \
+t/vala3.sh \
+t/vala4.sh \
+t/vala5.sh \
+t/vala-vapi.sh \
+t/vala-headers.sh \
+t/vala-libs.sh \
+t/vala-vpath.sh \
+t/vala-mix.sh \
+t/vala-mix2.sh \
+t/vala-parallel.sh \
+t/vars.sh \
+t/vars3.sh \
+t/vartar.sh \
+t/vartypos.sh \
+t/vartypo2.sh \
+t/version.sh \
+t/version2.sh \
+t/version3.sh \
+t/version4.sh \
+t/version6.sh \
+t/version7.sh \
+t/version8.sh \
+t/vpath.sh \
+t/vtexi.sh \
+t/vtexi2.sh \
+t/vtexi3.sh \
+t/vtexi4.sh \
+t/warnings-override.sh \
+t/warnings-precedence.sh \
+t/warnings-strictness-interactions.sh \
+t/warnings-unknown.sh \
+t/warnopts.sh \
+t/warnings-win-over-strictness.sh \
+t/warning-groups-win-over-strictness.sh \
+t/werror.sh \
+t/werror2.sh \
+t/werror3.sh \
+t/werror4.sh \
+t/whoami.sh \
+t/xsource.sh \
+t/yacc.sh \
+t/yacc2.sh \
+t/yacc4.sh \
+t/yacc5.sh \
+t/yacc7.sh \
+t/yacc8.sh \
+t/yaccdry.sh \
+t/yaccpp.sh \
+t/yaccvpath.sh \
+t/yacc-auxdir.sh \
+t/yacc-basic.sh \
+t/yacc-cxx.sh \
+t/yacc-bison-skeleton-cxx.sh \
+t/yacc-bison-skeleton.sh \
+t/yacc-clean.sh \
+t/yacc-clean-cxx.sh \
+t/yacc-d-basic.sh \
+t/yacc-d-cxx.sh \
+t/yacc-d-vpath.sh \
+t/yacc-deleted-headers.sh \
+t/yacc-depend.sh \
+t/yacc-depend2.sh \
+t/yacc-dist-nobuild-subdir.sh \
+t/yacc-dist-nobuild.sh \
+t/yacc-line.sh \
+t/yacc-mix-c-cxx.sh \
+t/yacc-nodist.sh \
+t/yacc-pr204.sh \
+t/yacc-weirdnames.sh \
+t/yflags.sh \
+t/yflags2.sh \
+t/yflags-cmdline-override.sh \
+t/yflags-conditional.sh \
+t/yflags-d-false-positives.sh \
+t/yflags-force-conditional.sh \
+t/yflags-force-override.sh \
+t/yflags-var-expand.sh \
+t/libtool-macros.sh \
+t/gettext-macros.sh
+
+print-list-of-tests:
+       @echo $(handwritten_TESTS)
+.PHONY: print-list-of-tests
diff --git a/t/listval.sh b/t/listval.sh
new file mode 100755 (executable)
index 0000000..5e2f9a6
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure variable is expanded properly.
+# From Adam J. Richter.
+
+required=libtool
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([LTLIBOBJS])
+AM_PROG_AR
+AC_PROG_LIBTOOL
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libpanel_applet.la
+libpanel_applet_la_SOURCES = \
+       applet-widget.c
+libpanel_applet_la_LDFLAGS = -version-info 0:1:0 -rpath $(libdir)
+libpanel_applet_la_LIBADD = -lm
+END
+
+: > ltconfig
+: > ltmain.sh
+: > ar-lib
+: > config.guess
+: > config.sub
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/location.sh b/t/location.sh
new file mode 100755 (executable)
index 0000000..f9dd289
--- /dev/null
@@ -0,0 +1,99 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for locations in error messages.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [true])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = libfoo.a
+if COND2
+  lib_LIBRARIES = libfoo.a
+endif
+if COND1
+  bin_PROGRAMS += ctags
+endif
+VAR = 1 \
+      2 \
+      3
+
+VAR = 1 \
+      2 \
+      3
+END
+
+: > ar-lib
+
+# Smash the useless difference of lib file locations.
+smash_useless_diffs ()
+{
+  # FIXME: we could get rid of the second 's,,,' once we improve our
+  # wrapper scripts ...
+  sed -e "s,^$am_amdir/\\([a-z]*\.am\\),\\1," \
+      -e "s,^automake-$APIVERSION:,automake:," ${1+"$@"};
+}
+
+$ACLOCAL
+AUTOMAKE_fails -Wno-error
+
+smash_useless_diffs stderr >observed
+
+# Apparently useless use of sed here required to avoid spuriously
+# triggering some maintainer-checks failures.
+sed 's/^> //' > expected << 'END'
+> Makefile.am:12: warning: VAR multiply defined in condition TRUE ...
+> Makefile.am:8: ... 'VAR' previously defined here
+> automake: error: libfoo_a_OBJECTS should not be defined
+> Makefile.am:3:   while processing library 'libfoo.a'
+> automake: error: use 'libfoo_a_LDADD', not 'libfoo_a_LIBADD'
+> Makefile.am:3:   while processing library 'libfoo.a'
+> library.am: warning: deprecated feature: target 'libfoo.a' overrides 'libfoo.a$(EXEEXT)'
+> library.am: change your target to read 'libfoo.a$(EXEEXT)'
+> Makefile.am:3:   while processing library 'libfoo.a'
+> program.am: target 'libfoo.a$(EXEEXT)' was defined here
+> Makefile.am:1:   while processing program 'libfoo.a'
+> program.am: warning: redefinition of 'libfoo.a$(EXEEXT)' ...
+> Makefile.am:1:   while processing program 'libfoo.a'
+> library.am: ... 'libfoo.a' previously defined here
+> Makefile.am:3:   while processing library 'libfoo.a'
+> tags.am: warning: redefinition of 'ctags' ...
+> program.am: ... 'ctags$(EXEEXT)' previously defined here
+> Makefile.am:6:   while processing program 'ctags'
+END
+
+cat expected
+cat observed
+diff expected observed || Exit 1
+
+AUTOMAKE_fails -Werror
+smash_useless_diffs stderr >observed
+(echo 'automake: warnings are treated as errors' && cat expected) > t
+mv -f t expected
+
+cat expected
+cat observed
+
+diff expected observed || Exit 1
+
+:
diff --git a/t/longlin2.sh b/t/longlin2.sh
new file mode 100755 (executable)
index 0000000..1ba8072
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Long lines should be wrapped.
+# Report from Albert Chin.
+
+. ./defs || Exit 1
+
+n=1
+files=
+match=
+while test $n -le 100
+do
+  files="$files filename$n"
+  match="..........$match"
+  n=`expr $n + 1`
+done
+files2=`echo "$files" | sed s/filename/filenameb/g`
+
+cat >Makefile.am <<EOF
+FOO = $files $files2 \
+  grepme
+EOF
+
+# The 'FOO = ...' line is 2293-byte long.  More than what a POSIX
+# conformant system is expected to support.  So do not use grep
+# on the non-text file.
+
+# grep $match Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep $match Makefile.in && Exit 1
+grep 'filenameb100 grepme' Makefile.in
diff --git a/t/longline.sh b/t/longline.sh
new file mode 100755 (executable)
index 0000000..dd5664d
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Long lines of += should be wrapped.
+# Report from Simon Josefsson.
+
+. ./defs || Exit 1
+
+(echo DUMMY = some_long_filename_1;
+for i in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20;
+do
+  echo DUMMY += some_long_filename_$i
+done) > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+test 80 -ge `grep DUMMY Makefile.in | wc -c`
diff --git a/t/ltcond.sh b/t/ltcond.sh
new file mode 100755 (executable)
index 0000000..d5098ea
--- /dev/null
@@ -0,0 +1,105 @@
+#!/bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for conditional libtool libraries.
+# This combines two examples from the manual.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_CONDITIONAL([WANT_LIBFOO], [true])
+AM_CONDITIONAL([WANT_LIBBAR], [false])
+AC_SUBST([WANTEDLIBS], ['lib1foo.la lib1bar.la'])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+EXTRA_LTLIBRARIES = lib1foo.la lib1bar.la lib3bar.la
+lib_LTLIBRARIES = $(WANTEDLIBS)
+lib1foo_la_SOURCES = foo.c
+lib1foo_la_LDFLAGS = -rpath '$(libdir)'
+lib1bar_la_SOURCES = bar.c
+lib1bar_la_LDFLAGS = -rpath '$(libdir)'
+lib3bar_la_SOURCES = bar.c
+
+if WANT_LIBFOO
+lib_LTLIBRARIES += lib2foo.la
+check_LTLIBRARIES = lib3foo.la
+endif
+if WANT_LIBBAR
+lib_LTLIBRARIES += lib2bar.la
+endif
+lib2foo_la_SOURCES = foo.c
+lib2bar_la_SOURCES = bar.c
+lib3foo_la_SOURCES = foo.c
+END
+
+echo 'int one () { return 1; }' >foo.c
+echo 'int two () { return 2; }' >bar.c
+
+mkdir empty
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Install libraries in lib/, and the rest in empty/.
+# (in fact there is no "rest", so as the name imply empty/ is
+# expected to remain empty).
+./configure "--prefix=`pwd`/empty" "--libdir=`pwd`/lib"
+
+$MAKE
+test -f lib1foo.la
+test -f lib1bar.la
+test -f lib2foo.la
+test ! -f lib2bar.la
+test ! -f lib3foo.la
+test ! -f lib3bar.la
+
+$MAKE check
+test ! -f lib2bar.la
+test -f lib3foo.la
+test ! -f lib3bar.la
+
+$MAKE install
+test -f lib/lib1foo.la
+test -f lib/lib1bar.la
+test -f lib/lib2foo.la
+test ! -f lib/lib3foo.la
+find empty -type f -print > empty.lst
+cat empty.lst
+test 0 = `wc -l < empty.lst`
+
+$MAKE uninstall
+find lib -type f -print > lib.lst
+test 0 = `wc -l < lib.lst`
+test -f lib1foo.la
+test -f lib1bar.la
+test -f lib2foo.la
+test -f lib3foo.la
+
+$MAKE clean
+test ! -f lib1foo.la
+test ! -f lib1bar.la
+test ! -f lib2foo.la
+test ! -f lib3foo.la
+
+:
diff --git a/t/ltcond2.sh b/t/ltcond2.sh
new file mode 100755 (executable)
index 0000000..4a72394
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in conditionals.
+
+required='cc native libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_SUBST([HELLO_SYSTEM], [hello-generic.lo])
+AM_CONDITIONAL([LINUX], [true])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libhello.la
+libhello_la_SOURCES = hello-common.c
+EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
+libhello_la_LIBADD = $(HELLO_SYSTEM)
+libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
+
+lib_LTLIBRARIES += libhello2.la
+libhello2_la_SOURCES = hello-common.c
+if LINUX
+libhello2_la_SOURCES += hello-linux.c
+else
+libhello2_la_SOURCES += hello-generic.c
+endif
+
+bin_PROGRAMS = hello hello2
+hello_SOURCES = main.c
+hello_LDADD = libhello.la
+hello2_SOURCES = main.c
+hello2_LDADD = libhello2.la
+
+check-local:
+       ./hello$(EXEEXT) | grep hello-generic
+       ./hello2$(EXEEXT) | grep hello-linux
+       : > check-ok
+END
+
+cat > hello-linux.c <<'END'
+const char* str (void)
+{
+  return "hello-linux";
+}
+END
+
+cat > hello-generic.c <<'END'
+const char* str (void)
+{
+  return "hello-generic";
+}
+END
+
+cat > hello-common.c <<'END'
+#include <stdio.h>
+const char* str (void);
+void print (void)
+{
+  puts (str ());
+}
+END
+
+cat > main.c <<'END'
+int main (void)
+{
+  print();
+  return 0;
+}
+END
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE check
+test -f check-ok
+
+:
diff --git a/t/ltconv.sh b/t/ltconv.sh
new file mode 100755 (executable)
index 0000000..19ed8b3
--- /dev/null
@@ -0,0 +1,156 @@
+#!/bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for libtool convenience libraries.
+# This example is taken from the manual.
+
+required='cc native libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_CONFIG_FILES([sub1/Makefile
+                 sub2/Makefile
+                 sub2/sub21/Makefile
+                 sub2/sub22/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub1
+mkdir sub2
+mkdir sub2/sub21
+mkdir sub2/sub22
+mkdir empty
+
+cat >Makefile.am <<'END'
+SUBDIRS = sub1 sub2
+lib_LTLIBRARIES = libtop.la
+libtop_la_SOURCES =
+libtop_la_LIBADD = \
+  sub1/libsub1.la \
+  sub2/libsub2.la
+
+bin_PROGRAMS = ltconvtest
+ltconvtest_SOURCES = test.c
+ltconvtest_LDADD = libtop.la
+
+check-local:
+       ./ltconvtest$(EXEEXT)
+       : > check-ok
+installcheck-local:
+       $(bindir)/ltconvtest$(EXEEXT)
+       : > installcheck-ok
+END
+
+cat >sub1/Makefile.am <<'END'
+noinst_LTLIBRARIES = libsub1.la
+libsub1_la_SOURCES = sub1.c
+END
+
+echo 'int sub1 () { return 1; }' > sub1/sub1.c
+
+cat >sub2/Makefile.am <<'END'
+SUBDIRS = sub21 sub22
+noinst_LTLIBRARIES = libsub2.la
+libsub2_la_SOURCES = sub2.c
+libsub2_la_LIBADD = \
+  sub21/libsub21.la \
+  sub22/libsub22.la
+END
+
+echo 'int sub2 () { return 2; }' > sub2/sub2.c
+
+cat >sub2/sub21/Makefile.am <<'END'
+noinst_LTLIBRARIES = libsub21.la
+libsub21_la_SOURCES = sub21.c
+END
+
+echo 'int sub21 () { return 21; }' > sub2/sub21/sub21.c
+
+cat >sub2/sub22/Makefile.am <<'END'
+noinst_LTLIBRARIES = libsub22.la
+libsub22_la_SOURCES = sub22.c
+END
+
+echo 'int sub22 () { return 22; }' > sub2/sub22/sub22.c
+
+cat >test.c <<'EOF'
+#include <stdio.h>
+int main ()
+{
+  if (1 != sub1 ())
+    return 1;
+  if (2 != sub2 ())
+    return 2;
+  if (21 != sub21 ())
+    return 3;
+  if (22 != sub22 ())
+    return 4;
+  return 0;
+}
+EOF
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Install libraries in lib/, programs in bin/, and the rest in empty/.
+# (in fact there is no "rest", so as the name imply empty/ is
+# expected to remain empty).
+./configure "--prefix=`pwd`/empty" "--libdir=`pwd`/lib" "--bindir=`pwd`/bin"
+
+$MAKE
+test -f libtop.la
+test -f sub1/libsub1.la
+test -f sub2/libsub2.la
+test -f sub2/sub21/libsub21.la
+test -f sub2/sub22/libsub22.la
+$MAKE check
+test -f check-ok
+rm -f check-ok
+
+$MAKE install
+test -f lib/libtop.la
+$MAKE installcheck
+test -f installcheck-ok
+rm -f installcheck-ok
+
+find empty -type f -print > empty.lst
+cat empty.lst
+test 0 = `wc -l < empty.lst`
+
+$MAKE clean
+test ! -f libtop.la
+test ! -f sub1/libsub1.la
+test ! -f sub2/libsub2.la
+test ! -f sub2/sub21/libsub21.la
+test ! -f sub2/sub22/libsub22.la
+test ! -f ltconvtest
+
+$MAKE installcheck
+test -f installcheck-ok
+rm -f installcheck-ok
+
+$MAKE uninstall
+find lib -type f -print > lib.lst
+test 0 = `wc -l < lib.lst`
+find bin -type f -print > bin.lst
+test 0 = `wc -l < bin.lst`
+
+:
diff --git a/t/ltdeps.sh b/t/ltdeps.sh
new file mode 100755 (executable)
index 0000000..100d045
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure libtool library dependencies are correct.
+# Report from Lars J. Aas.
+required=libtool
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_PROG_CXX
+AM_CONDITIONAL(HACKING_COMPACT_BUILD, whatever)
+END
+
+cat > Makefile.am << 'END'
+RegularSources = \
+        SbBSPTree.cpp \
+        SbBox2f.cpp \
+        SbBox2s.cpp
+
+LinkHackSources = \
+        all.cpp
+
+if HACKING_COMPACT_BUILD
+BuildSources = $(LinkHackSources)
+else
+BuildSources = $(RegularSources)
+endif
+
+noinst_LTLIBRARIES = libbase.la
+libbase_la_SOURCES = $(BuildSources)
+
+EXTRA_libbase_la_SOURCES = \
+        $(RegularSources) $(LinkHackSources)
+END
+
+: > ltconfig
+: > ltmain.sh
+: > ar-lib
+: > config.guess
+: > config.sub
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'OBJECTS =$' Makefile.in && Exit 1
+Exit 0
diff --git a/t/ltinit.sh b/t/ltinit.sh
new file mode 100755 (executable)
index 0000000..49ddbe0
--- /dev/null
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that libtool support works correctly when "newer" libtool
+# interface (with LT_INIT etc.) is used (this interface has been
+# present since libtool 1.9b, circa 2004).
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+dnl Older libtool versions don't define LT_PREREQ :-(
+m4_ifdef([LT_PREREQ],
+    [LT_PREREQ([2.0])],
+    [m4_fatal([Libtool version too old], [63])])
+LT_INIT([dlopen])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+lib_LTLIBRARIES = libfoo.la
+END
+
+cat > libfoo.c <<'END'
+int foo (void)
+{
+  return 1;
+}
+END
+
+libtoolize
+# Skip if older libtool (pre-2.0) is used.
+{ $ACLOCAL && $AUTOCONF; } || {
+  if test $? -eq 63; then
+    skip_ "libtool is too old (probably < 2.0)"
+  else
+    Exit 1
+  fi
+}
+$EGREP 'LT_(INIT|PREREQ)' configure && Exit 1 # Sanity check.
+$AUTOMAKE -a
+
+cwd=`pwd`
+./configure --prefix="$cwd/inst" >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^checking.*dlfcn\.h.* no$' stdout || grep '^checking.*dlopen' stdout
+
+$MAKE
+$MAKE install
+$MAKE distcheck
+
+:
diff --git a/t/ltinstloc.sh b/t/ltinstloc.sh
new file mode 100755 (executable)
index 0000000..6906994
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for libtool errors for multiple install locations, esp. with nobase.
+
+
+required='libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AM_CONDITIONAL([COND], [:])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+if COND
+lib_LTLIBRARIES = liba1.la sub/liba2.la
+#else
+pkglib_LTLIBRARIES = liba1.la
+nobase_lib_LTLIBRARIES = sub/liba2.la
+endif
+END
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+AUTOMAKE_fails --add-missing
+
+# libtoolize might have installed config.guess and config.sub already,
+# and autom4te might warn about bugs in Libtool macro files, so filter
+# out warnings about Makefile.am only.  We don't care in this test
+# whether automake installs config.guess, config.sub and ar-lib.
+
+cat >expected <<'END'
+Makefile.am:5: error: sub/liba2.la multiply defined in condition COND
+Makefile.am:5: 'sub/liba2.la' should be installed below 'lib' in condition COND ...
+Makefile.am:2: ... and should also be installed in 'lib' in condition COND.
+Makefile.am:4: error: liba1.la multiply defined in condition COND
+Makefile.am:4: 'liba1.la' should be installed in 'pkglib' in condition COND ...
+Makefile.am:2: ... and should also be installed in 'lib' in condition COND.
+Makefile.am:2: Libtool libraries can be built for only one destination
+END
+
+grep '^Makefile.am' stderr | diff - expected
+
+sed 's/#//' < Makefile.am > t
+mv -f t Makefile.am
+
+$AUTOMAKE
+grep ' -rpath \$(libdir)/sub' Makefile.in
+
+:
diff --git a/t/ltlibobjs.sh b/t/ltlibobjs.sh
new file mode 100755 (executable)
index 0000000..5cdccf0
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure LTLIBOBJS alone works ok.
+# Report from Vadim Zeitlin.
+required=libtool
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([LTLIBOBJS])
+AM_PROG_AR
+AC_PROG_LIBTOOL
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libtu.la
+libtu_la_SOURCES = foo.c
+libtu_la_LIBADD = @LTLIBOBJS@
+END
+
+: > ltconfig
+: > ltmain.sh
+: > ar-lib
+: > config.guess
+: > config.sub
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/ltlibsrc.sh b/t/ltlibsrc.sh
new file mode 100755 (executable)
index 0000000..11e2a1d
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure a sensible default source for libraries is used.
+
+required='cc libtool'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+mkdir zoo.d
+
+cat > Makefile.am << 'END'
+AM_LDFLAGS = -module
+pkglib_LTLIBRARIES = zoo.d/bar.la old.la
+noinst_LTLIBRARIES = foo.la zoo.d/old2.la
+
+$(srcdir)/zoo_d_old2_la.c: $(srcdir)/old_la.c
+       cp $(srcdir)/old_la.c $@
+END
+
+cat > foo.c << 'END'
+int foo (void)
+{
+  return 0;
+}
+END
+
+cp foo.c zoo.d/bar.c
+cp foo.c old_la.c
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+AUTOMAKE_fails -a
+grep '^Makefile\.am:2:.*old_la\.c' stderr
+grep '^Makefile\.am:2:.*old\.c' stderr
+grep '^Makefile\.am:3:.*zoo_d_old2_la\.c' stderr
+grep '^Makefile\.am:3:.*zoo\.d/old2\.c' stderr
+
+$AUTOMAKE -Wno-obsolete
+
+mkdir sub
+cd sub
+
+../configure
+$MAKE
+
+test -f foo.la
+test -f zoo.d/bar.la
+test -f old.la
+test -f zoo.d/old2.la
+
+$MAKE distcheck
+
+:
diff --git a/t/ltorder.sh b/t/ltorder.sh
new file mode 100755 (executable)
index 0000000..358e620
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for correct installation order of nobase libtool libraries.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+nobase_lib_LTLIBRARIES = liba1.la sub/liba2.la sub/liba3.la liba4.la liba5.la
+sub_liba2_la_LIBADD = liba1.la
+sub_liba3_la_LIBADD = sub/liba2.la
+liba4_la_LIBADD = sub/liba3.la
+liba5_la_LIBADD = liba4.la
+bin_PROGRAMS = p
+p_LDADD = liba5.la
+END
+
+mkdir sub
+echo 'int a1 () { return 1; }' >liba1.c
+echo 'extern int a1 (); int a2 () { return a1 (); }' >sub/liba2.c
+echo 'extern int a2 (); int a3 () { return a2 (); }' >sub/liba3.c
+echo 'extern int a3 (); int a4 () { return a3 (); }' >liba4.c
+echo 'extern int a4 (); int a5 () { return a4 (); }' >liba5.c
+echo 'extern int a5 (); int main () { return a5 (); }' >p.c
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure "--prefix=`pwd`/inst"
+
+$MAKE
+$MAKE install 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'has not been installed' stderr && Exit 1
+
+$MAKE uninstall
+test `find inst -type f -print | wc -l` -eq 0
+
+:
diff --git a/t/lzma.sh b/t/lzma.sh
new file mode 100755 (executable)
index 0000000..8e78f86
--- /dev/null
+++ b/t/lzma.sh
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for no-dist-gzip with lzma.
+
+. ./defs || Exit 1
+
+errmsg='support for lzma.*removed'
+
+echo AUTOMAKE_OPTIONS = dist-lzma > Makefile.am
+$ACLOCAL --force
+AUTOMAKE_fails -Wnone -Wno-error
+grep "^Makefile\\.am:1:.*$errmsg" stderr
+
+cat > configure.ac << 'END'
+AC_INIT([lzma], [1.0])
+AM_INIT_AUTOMAKE([no-dist-gzip dist-lzma])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+: > Makefile.am
+
+rm -rf autom4te*.cache
+$ACLOCAL
+AUTOMAKE_fails -Wnone -Wno-error
+grep "^configure\\.ac:2:.*$errmsg" stderr
+
+:
diff --git a/t/m4-inclusion.sh b/t/m4-inclusion.sh
new file mode 100755 (executable)
index 0000000..52dae22
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to see if 'm4_sinclude' and 'm4_include' works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+sinclude([doesntexist.m4])
+EOF
+
+mkdir sub
+
+cat > sub/p.m4 << 'END'
+AC_SUBST([MAGICALPIG])
+END
+
+cat > sub/h.m4 << 'END'
+AC_SUBST([MAGICALHOG])
+END
+
+cat > sub/g.m4 << 'END'
+AC_SUBST([GREPME])
+END
+
+: > Makefile.am
+
+echo 'sinclude([sub/g.m4])' >> acinclude.m4
+echo 'm4_sinclude([sub/doesntexist.m4])' >> acinclude.m4
+
+$ACLOCAL
+
+echo 'm4_sinclude([sub/p.m4])' >> aclocal.m4
+echo 'm4_include([sub/h.m4])' >> aclocal.m4
+
+$AUTOMAKE
+
+grep doesntexist Makefile.in && Exit 1
+grep MAGICALPIG Makefile.in
+grep MAGICALHOG Makefile.in
+grep GREPME Makefile.in
+
+:
diff --git a/t/maintclean-vpath.sh b/t/maintclean-vpath.sh
new file mode 100755 (executable)
index 0000000..11e97a6
--- /dev/null
@@ -0,0 +1,104 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure distclean and maintainer-clean erase the right files.
+# This test is for VPATH builds; see sister test 'maintclean.test'
+# for in-tree builds.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([bar sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+noinst_DATA = foo.c
+foo.c:
+       touch foo.c
+MAINTAINERCLEANFILES = foo.c
+END
+
+mkdir sub
+cat > sub/Makefile.am <<'END'
+noinst_SCRIPTS = zap
+zap: zap.sh
+       cp $(srcdir)/zap.sh $@ && chmod a+x $@
+MAINTAINERCLEANFILES = zap
+END
+
+: > bar.in
+: > sub/zap.sh
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# Users can disable autom4te.cache.
+if test -d autom4te.cache; then
+  test_cache='test -d ../autom4te.cache'
+else
+  test_cache=:
+fi
+
+mkdir build
+
+chmod a-w . sub
+
+cd build
+
+../configure
+test -f bar
+
+$MAKE
+test -f foo.c
+test -f sub/zap
+$test_cache
+
+$MAKE distclean
+test ! -f bar
+test ! -f Makefile
+test ! -f sub/Makefile
+test ! -f config.status
+test -f foo.c
+test -f sub/zap
+test -f ../sub/zap.sh
+$test_cache
+
+../configure
+test -f bar
+
+$MAKE foo.c
+test -f foo.c
+cd sub
+$MAKE zap
+test -f zap
+cd ..
+
+chmod u+w ..
+
+$MAKE maintainer-clean
+test -f ../sub/zap.sh
+test ! -f bar
+test ! -f foo.c
+test ! -f sub/zap
+test ! -f Makefile
+test ! -f sub/Makefile
+test ! -f config.status
+test ! -d ../autom4te.cache
+
+:
diff --git a/t/maintclean.sh b/t/maintclean.sh
new file mode 100755 (executable)
index 0000000..c5d3d0e
--- /dev/null
@@ -0,0 +1,96 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure distclean and maintainer-clean erase the right files.
+# This test is for in-tree builds; see sister test 'maintclean-vpath.test'
+# for VPATH builds.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([bar sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+noinst_DATA = foo.c
+foo.c:
+       touch foo.c
+MAINTAINERCLEANFILES = foo.c
+END
+
+mkdir sub
+cat > sub/Makefile.am <<'END'
+noinst_SCRIPTS = zap
+zap: zap.sh
+       cp $(srcdir)/zap.sh $@ && chmod a+x $@
+MAINTAINERCLEANFILES = zap
+END
+
+: > bar.in
+: > sub/zap.sh
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# Users can disable autom4te.cache.
+if test -d autom4te.cache; then
+  test_cache='test -d autom4te.cache'
+else
+  test_cache=:
+fi
+
+./configure
+test -f bar
+
+$MAKE
+test -f foo.c
+test -f sub/zap
+$test_cache
+
+$MAKE distclean
+test ! -f bar
+test ! -f Makefile
+test ! -f sub/Makefile
+test ! -f config.status
+test -f foo.c
+test -f sub/zap
+test -f sub/zap.sh
+$test_cache
+
+./configure
+test -f bar
+
+$MAKE foo.c
+test -f foo.c
+cd sub
+$MAKE zap
+test -f zap
+cd ..
+
+$MAKE maintainer-clean
+test -f sub/zap.sh
+test ! -f bar
+test ! -f foo.c
+test ! -f sub/zap
+test ! -f Makefile
+test ! -f sub/Makefile
+test ! -f config.status
+test ! -d autom4te.cache
+
+:
diff --git a/t/maintmode-configure-msg.sh b/t/maintmode-configure-msg.sh
new file mode 100755 (executable)
index 0000000..8a7c451
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that our macro 'AM_MAINTAINER_MODE' adds proper text to
+# the configure help screen.  Also make sure the "checking ..." messages
+# related to the enabling/disabling of maintainer mode are correct (see
+# automake bug#9890).
+
+. ./defs || Exit 1
+
+set_maintmode ()
+{
+  rm -rf autom4te*.cache # Just to be sure not to use a stale cache.
+  echo "AC_INIT([$me], [1.0])" > configure.ac
+  case $1 in
+    DEFAULT) echo AM_MAINTAINER_MODE;;
+          *) echo "AM_MAINTAINER_MODE([$*])";;
+  esac >> configure.ac
+}
+
+check_configure_message_with ()
+{
+  answer=$1; shift
+  ./configure ${1+"$@"} >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  grep "^checking whether to enable maintainer-specific.*\\.\\.\\. $answer$" stdout
+  test `grep -c 'checking.*maint' stdout` -eq 1
+  :
+}
+
+set_maintmode "DEFAULT"
+
+$ACLOCAL
+
+$AUTOCONF --force
+
+grep_configure_help --enable-maintainer-mode 'enable make rules'
+
+check_configure_message_with "no"
+check_configure_message_with "yes" --enable-maintainer-mode
+
+set_maintmode "disable"
+
+$AUTOCONF --force
+grep_configure_help --enable-maintainer-mode 'enable make rules'
+
+check_configure_message_with "no"
+check_configure_message_with "yes" --enable-maintainer-mode
+
+set_maintmode "enable"
+
+$AUTOCONF --force
+./configure --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep_configure_help --disable-maintainer-mode 'disable make rules'
+
+check_configure_message_with "yes"
+check_configure_message_with "no" --disable-maintainer-mode
+
+:
diff --git a/t/make-dryrun.tap b/t/make-dryrun.tap
new file mode 100755 (executable)
index 0000000..2172124
--- /dev/null
@@ -0,0 +1,124 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that $(am__make_dryrun) works as expected.
+
+. ./defs || Exit 1
+
+plan_ 14
+
+if echo "all: ; @+printf %sbb%s aa cc" | $MAKE -n -f - | grep aabbcc; then
+  make_plus_silence () { return 0; }
+else
+  make_plus_silence () { return 1; }
+fi
+
+mkdir sub
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+all:
+       : Dummy, nothing to do.
+foo:
+       $(MAKE) all
+notdry:
+       @echo ":: $$MAKEFLAGS ::"; : For debugging.
+       $(am__make_dryrun) && exit 1; exit 0
+dry:
+       +@echo ":: $$MAKEFLAGS ::"; : For debugging.
+       +$(am__make_dryrun) || exit 1; echo ok > from-dry-mode
+END
+
+$ACLOCAL    || fatal_ "aclocal failed"
+$AUTOCONF   || fatal_ "autoconf failed"
+$AUTOMAKE   || fatal_ "automake failed"
+./configure || fatal_ "configure failed"
+
+# ----------------------------------------------------------------------
+
+check_no_dryrun ()
+{
+  command_ok_ "dry-run ($cnt)" $MAKE notdry ${1+"$@"}
+  cnt=`expr $cnt + 1`
+}
+cnt=1
+
+check_no_dryrun
+
+# Test against a known regression.  This was especially heinous, since
+# make running in normal mode was sometimes mistaken for make running
+# in dry mode.
+check_no_dryrun TESTS="n1.test n2.test"
+check_no_dryrun TESTS="n1 n2" AM_MAKEFLAGS="TESTS='n1 n2'"
+check_no_dryrun TESTS="n1 n2" AM_MAKEFLAGS='TESTS="n1 n2"'
+check_no_dryrun FOOFLAGS="-n -n -knf2 n --none -n"
+check_no_dryrun MYFLAGS="-n --dryrun -n --dry-run -n"
+
+# ----------------------------------------------------------------------
+
+check_dryrun ()
+{
+  r=ok directive=
+  case $1 in
+    -C) condition=$2 reason=$3; shift; shift; shift;;
+     *) condition=: reason=;;
+  esac
+  if $condition; then
+    $MAKE dry ${1+"$@"}   || r='not ok'
+    test -f from-dry-mode || r='not ok'
+    rm -f from-dry-mode   || fatal_ "cleaning up"
+  else
+    directive=SKIP
+  fi
+  result_ "$r" -D "$directive" -r "$reason" "not dry-run ($cnt)"
+  unset r directive reason
+  cnt=`expr $cnt + 1`
+}
+cnt=1
+
+check_dryrun -C make_plus_silence 'recipe prefix "+" unsupported' -n
+check_dryrun -C using_gmake "\$MAKE is not GNU make" --dry-run -k
+
+# ----------------------------------------------------------------------
+
+# Test for when shell metacharacters or backslashes are in $(MAKEFLAGS).
+
+check_metachars ()
+{
+  r=ok
+  $MAKE notdry ${1+"$@"} || r='not ok'
+  if test -f bad; then
+    r='not ok'
+  else
+    rm -f bad || fatal_ "cleaning up"
+  fi
+  result_ "$r" "dry-run, with shell metachars ($cnt)"
+  unset r
+  cnt=`expr $cnt + 1`
+}
+cnt=1
+
+check_metachars MYFLAGS="-n \"n\" '-n' --none -n"
+check_metachars MYFLAGS='-knf2\ n\ \\n'
+check_metachars MYFLAGS="(&) | ; \" \` '"
+check_metachars MYFLAGS=" ' # ' "
+check_metachars MYFLAGS='$(foo)'
+check_metachars MYFLAGS='`touch bad`'
+
+# ----------------------------------------------------------------------
+
+:
diff --git a/t/make.sh b/t/make.sh
new file mode 100755 (executable)
index 0000000..e292e38
--- /dev/null
+++ b/t/make.sh
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure 'make' check works.
+# From Ralf Corsepius.
+
+required=GNUmake
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_MAKE_INCLUDE
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+export ACLOCAL
+export AUTOCONF
+export AUTOMAKE
+
+# Do the test twice -- once with make and once with make -w.
+# This tests for a bug reported by Rainer Orth (see PR 175).
+
+save="$MAKE"
+for flag in '' -w; do
+   MAKE="$save $flag" ./configure
+   $FGREP 'am__include = include' Makefile
+   $sleep
+   touch configure.ac
+   $MAKE $flag
+   $FGREP 'am__include = include' Makefile
+   rm -f config.cache
+done
+
+Exit 0
diff --git a/t/makefile-deps.sh b/t/makefile-deps.sh
new file mode 100755 (executable)
index 0000000..83f3cae
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we don't emit a rule with empty target if list of
+# automatically-computed dependencies for Makefile.in is empty.
+
+. ./defs || Exit 1
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep "^ *:" Makefile.in && Exit 1
+
+:
diff --git a/t/makej.sh b/t/makej.sh
new file mode 100755 (executable)
index 0000000..64c5f28
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# 'make -j' used to fail with Autoconf < 2.58, because tools like
+# autoconf and automake can try to update autom4te's cache in parallel.
+#
+# Note that failures might not be reproducible systematically as they
+# depend on the time at which autoconf and automake update the cache
+# via autom4te.
+
+required=GNUmake
+. ./defs || Exit 1
+
+cat >configure.ac <<END
+m4_include([version.m4])
+AC_INIT([$me], [THE_VERSION])
+AM_INIT_AUTOMAKE
+AC_CONFIG_HEADER([config.h])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+echo 'm4_define([THE_VERSION], [2.718])' > version.m4
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE --add-missing
+./configure --version | grep '2\.718'
+./configure
+$MAKE
+
+$sleep
+echo 'm4_define([THE_VERSION], [3.141])' > version.m4
+$MAKE -j
+./configure --version | grep '3\.141'
+
+:
diff --git a/t/makej2.sh b/t/makej2.sh
new file mode 100755 (executable)
index 0000000..8183887
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure known BSD 'make -jN' issues are fixed:
+# without -B, it may reuse the same shell for separate commands in a
+# rule, which can lead to interesting results.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+test-distdir-removed:
+       test ! -d $(distdir)
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+mkdir build
+cd build
+../configure "--prefix=`pwd`/inst"
+
+$MAKE -j2 || skip_ "$MAKE failed to run with two parallel jobs"
+$MAKE -j2 distcheck
+$MAKE test-distdir-removed
+
+Exit 0
diff --git a/t/maken.sh b/t/maken.sh
new file mode 100755 (executable)
index 0000000..bb64444
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure that 'make -n dist' and 'make -n distcheck' do not change files
+# on disk, due to GNU make executing rules containing '$(MAKE)'.
+# Also, ensure that 'make -n dist' and 'make -n distcheck' show what
+# would happen, at least when using GNU make.
+
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+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
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+$sleep
+echo stamp > stampfile
+$sleep
+for target in dist distcheck; do
+  $MAKE -n $target
+  if using_gmake; then
+    $MAKE -n $target | grep stamp-sub-dist-hook || Exit 1
+  fi
+  $MAKE test-no-distdir
+  test `ls -1t | sed 1q` = stampfile
+done
+
+Exit 0
diff --git a/t/maken3-w.sh b/t/maken3-w.sh
new file mode 100755 (executable)
index 0000000..20addd8
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/maken3.sh"; then
+    echo "$0: will source $dir/t/maken3.sh"
+    . "$dir/t/maken3.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/maken3.sh'" >&2
+exit '99'
diff --git a/t/maken3.sh b/t/maken3.sh
new file mode 100755 (executable)
index 0000000..832bdcf
--- /dev/null
@@ -0,0 +1,191 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test 'make -n' for various targets, to ensure that:
+#
+#  1. no files or directories are created or removed, and
+#
+#  2. if using GNU make or a make implementation supporting the .MAKE
+#     special target, the output from make is sufficiently complete.
+#
+# This test exercises the GCS-mandated targets (except for dist)
+# as well as tags, TAGS.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+# Does $MAKE support the '.MAKE' special target?
+have_dotmake=false
+if using_gmake; then
+  have_dotmake=: # GNU make must support it.
+else
+  unindent > mk.tmp << 'END'
+    targ.tmp:
+       : > $@
+    .MAKE: targ.tmp
+END
+  if $MAKE -n -f mk.tmp targ.tmp && test -f targ.tmp; then
+    have_dotmake=:
+  fi
+fi
+
+mkdir sub sub2
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TESTS = foo.test
+SUBDIRS = sub sub2
+##BUILT_SOURCES = foo
+foo:
+foo.test:
+all-local:
+       @: > stamp-all
+install-data-local:
+       @: > stamp-install
+uninstall-local:
+       @: > stamp-uninstall
+clean-local:
+       @: > stamp-clean
+distclean-local:
+       @: > stamp-distclean
+info-local:
+       @: > stamp-info
+html-local:
+       @: > stamp-html
+dvi-local:
+       @: > stamp-dvi
+ps-local:
+       @: > stamp-ps
+pdf-local:
+       @: > stamp-pdf
+check-local:
+       @: > stamp-check
+installcheck-local:
+       @: > stamp-installcheck
+mostlyclean-local:
+       @: > stamp-mostlyclean
+maintainer-clean-local:
+       @: > stamp-maintainer-clean
+END
+cat >sub/Makefile.am <<'END'
+all-local:
+       @: > stamp-all-sub
+install-data-local:
+       @: > stamp-install-sub
+uninstall-local:
+       @: > stamp-uninstall-sub
+clean-local:
+       @: > stamp-clean-sub
+distclean-local:
+       @: > stamp-distclean-sub
+info-local:
+       @: > stamp-info-sub
+html-local:
+       @: > stamp-html-sub
+dvi-local:
+       @: > stamp-dvi-sub
+ps-local:
+       @: > stamp-ps-sub
+pdf-local:
+       @: > stamp-pdf-sub
+check-local:
+       @: > stamp-check-sub
+installcheck-local:
+       @: > stamp-installcheck-sub
+tags:
+       @: > stamp-tags-sub
+TAGS:
+       @: > stamp-TAGS-sub
+mostlyclean-local:
+       @: > stamp-mostlyclean-sub
+maintainer-clean-local:
+       @: > stamp-maintainer-clean-sub
+END
+cat >sub2/Makefile.am <<'END'
+all install uninstall clean check:
+       @: > sub2-$@-should-not-be-executed
+info dvi pdf ps:
+       @: > sub2-$@-should-not-be-executed
+html:
+       @: > sub2-$@-should-not-be-executed
+install-info install-html install-dvi install-pdf install-ps:
+       @: > sub2-$@-should-not-be-executed
+installcheck installdirs tags TAGS mostlyclean:
+       @: > sub2-$@-should-not-be-executed
+## These targets cannot be overridden like this:
+## install-strip distclean maintainer-clean
+END
+
+$ACLOCAL
+$AUTOCONF
+
+check_targets ()
+{
+  for target in \
+    all install install-strip uninstall clean distclean check \
+    info html dvi pdf ps \
+    install-info install-html install-dvi install-pdf install-ps \
+    installcheck installdirs tags TAGS mostlyclean maintainer-clean
+  do
+    $MAKE -n $target >stdout || { cat stdout; Exit 1; }
+    cat stdout
+    case $target in
+    install-* | installdirs | tags | TAGS ) ;;
+    *)
+      if $have_dotmake; then
+        grep "stamp-$target$" stdout || Exit 1
+      fi
+      test ! -f "stamp-$target$" || Exit 1
+      ;;
+    esac
+    case $target in
+    install-* | installdirs ) ;;
+    *)
+      if $have_dotmake; then
+        grep "stamp-$target-sub" stdout || Exit 1
+      fi
+      test ! -f "sub/stamp-$target-sub" || Exit 1
+      ;;
+    esac
+    case $target in
+    distclean | maintainer-clean ) ;;
+    *)
+      if $have_dotmake; then
+        grep "should-not-be-executed" stdout || Exit 1
+      fi
+      test ! -f "sub2/sub2-$target-should-not-be-executed" || Exit 1
+      ;;
+    esac
+  done
+}
+
+$AUTOMAKE -a -Wno-override
+./configure
+check_targets || Exit 1
+
+# Now, introduce BUILT_SOURCES into the toplevel Makefile
+# TODO: add BUILT_SOURCES to sub2, fix fallout.
+sed 's/##//' < Makefile.am > t
+mv -f t Makefile.am
+$AUTOMAKE -Wno-override --force Makefile
+./configure
+check_targets || Exit 1
+
+Exit 0
diff --git a/t/makevars.sh b/t/makevars.sh
new file mode 100755 (executable)
index 0000000..ad18830
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that automake includes the needed variables,
+# but not too many.
+
+. ./defs || Exit 1
+
+# Find the macros wanted by Automake.
+$ACLOCAL
+
+# Create some dummy Makefile.in.
+: > Makefile.am
+
+$AUTOMAKE
+
+# We are definitely not needing a compiler or preprocessor.
+$EGREP '^ *(CC|CPP|CXX|CXXCPP) *=' Makefile.in && Exit 1
+
+:
diff --git a/t/man.sh b/t/man.sh
new file mode 100755 (executable)
index 0000000..d2e5dd6
--- /dev/null
+++ b/t/man.sh
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure 'dist' prefix works with man pages.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+dist_man_MANS = foo.1
+nodist_man1_MANS = bar.man
+END
+
+: > foo.1
+: > bar.man
+
+$ACLOCAL
+$AUTOMAKE
+grep '^MANS *=' Makefile.in
+
+:
diff --git a/t/man2.sh b/t/man2.sh
new file mode 100755 (executable)
index 0000000..38c3992
--- /dev/null
+++ b/t/man2.sh
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that man pages listed in man_MANS are installed and
+# renamed as documented.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+man_MANS = foo.2
+man4_MANS = foo.4 bar.man
+END
+
+: > foo.2
+: > foo.4
+: > bar.man
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# Let's play with $DESTDIR too, it shouldn't hurt.
+./configure --prefix='' --mandir=/man
+$MAKE DESTDIR="`pwd`/_inst" install
+
+test -f ./_inst/man/man2/foo.2
+test -f ./_inst/man/man4/foo.4
+test -f ./_inst/man/man4/bar.4
+
+$MAKE DESTDIR="`pwd`/_inst" uninstall
+
+test ! -f ./_inst/man/man2/foo.2
+test ! -f ./_inst/man/man4/foo.4
+test ! -f ./_inst/man/man4/bar.4
+
+:
diff --git a/t/man3.sh b/t/man3.sh
new file mode 100755 (executable)
index 0000000..a842d38
--- /dev/null
+++ b/t/man3.sh
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# PR 516: Prefer generated manpages to distributed ones.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+dist_man_MANS = foo.1
+installcheck-local:
+       grep bar "$(mandir)/man1/foo.1"
+END
+
+cat >>configure.ac <<'END'
+: ${foo=foo}
+AC_SUBST([foo])
+AC_CONFIG_FILES([foo.1])
+AC_OUTPUT
+END
+
+cat > foo.1.in <<'END'
+@foo@
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+DISTCHECK_CONFIGURE_FLAGS=foo=bar $MAKE -e distcheck
+
+:
diff --git a/t/man4.sh b/t/man4.sh
new file mode 100755 (executable)
index 0000000..c7333b9
--- /dev/null
+++ b/t/man4.sh
@@ -0,0 +1,105 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure 'make dist' fails when help2man replacement man pages are created.
+#
+# The assumption here is the following: if the developer uses help2man to
+# generate man pages from --help output, then these man pages may not be
+# stored in VCS.  However, they should be distributed, so that the end user
+# that receives the tarball doesn't have to install help2man.  If they are
+# not distributed, then the developer should make help2man a prerequisite
+# to building the package from a tarball, e.g., with a configure check for
+# help2man that errors out if it is unavailable.  In both cases it is
+# sufficient to check only distributed man pages.
+#
+# Idea of this whole shenanigan is to allow somebody to check out sources from
+# a VCS and build and install them without needing help2man installed.  The
+# installed man pages will be bogus in this case.  Typically, this happens
+# when developers ask users to try out a fix from VCS; the developers themselves
+# will usually have help2man installed (or should install it).
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+dist_man_MANS = $(srcdir)/foo.1 bar.1
+dist_bin_SCRIPTS = foo bar
+$(srcdir)/foo.1:
+       $(HELP2MAN) --output=$@ $(srcdir)/foo
+bar.1:
+       $(HELP2MAN) --output=$(srcdir)/bar.1 $(srcdir)/bar
+END
+
+cat >>configure.ac <<'END'
+AM_MISSING_PROG([HELP2MAN], [help2man])
+AC_OUTPUT
+END
+
+cat > foo <<'END'
+#! /bin/sh
+while test $# -gt 0; do
+  case $1 in
+    -h | --help) echo "usage: $0 [OPTIONS]..."; exit 0;;
+    -v | --version) echo "$0 1.0"; exit 0;;
+  esac
+  shift
+done
+END
+cp foo bar
+chmod +x foo bar
+
+mkdir bin
+cat > bin/help2man <<'END'
+#! /bin/sh
+# Fake help2man script that lets 'missing' think it is not installed.
+exit 127
+END
+chmod +x bin/help2man
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH
+
+grep_error_messages()
+{
+  grep ' man pages contain.*missing help2man.* replacement text' stderr \
+   && grep 'install help2man' stderr \
+   && grep 'regenerate the man pages' stderr \
+   || Exit 1
+}
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE
+$MAKE dist 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep_error_messages
+$MAKE distcheck 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep_error_messages
+$MAKE distclean
+
+mkdir build
+cd build
+../configure
+$MAKE
+$MAKE dist 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep_error_messages
+$MAKE distcheck 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep_error_messages
+
+:
diff --git a/t/man5.sh b/t/man5.sh
new file mode 100755 (executable)
index 0000000..674ea03
--- /dev/null
+++ b/t/man5.sh
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure to extract the correct mansection from files in man_MANS.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+man_MANS = foo-1.4.5/foo.2 foo-1.4.5/bar.3 baz-1.4.2
+notrans_man_MANS = foo-1.4.5/nfoo.2 foo-1.4.5/nbar.3 nbaz-1.4.2
+END
+
+mkdir foo-1.4.5
+
+: > foo-1.4.5/foo.2
+: > foo-1.4.5/nfoo.2
+: > foo-1.4.5/bar.3
+: > foo-1.4.5/nbar.3
+: > baz-1.4.2
+: > nbaz-1.4.2
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# Let's play with $DESTDIR too, it shouldn't hurt.
+./configure --mandir=/man
+$MAKE DESTDIR="`pwd`/_inst" install
+
+test -f ./_inst/man/man2/foo.2
+test -f ./_inst/man/man2/nfoo.2
+test -f ./_inst/man/man2/baz-1.4.2
+test -f ./_inst/man/man2/nbaz-1.4.2
+test -f ./_inst/man/man3/bar.3
+test -f ./_inst/man/man3/nbar.3
+
+test ! -d ./_inst/man/man1
+test ! -d ./_inst/man/man4
+test ! -d ./_inst/man/man5
+
+$MAKE DESTDIR="`pwd`/_inst" uninstall
+
+test ! -f ./_inst/man/man2/foo.2
+test ! -f ./_inst/man/man2/nfoo.2
+test ! -f ./_inst/man/man2/baz-1.4.2
+test ! -f ./_inst/man/man2/nbaz-1.4.2
+test ! -f ./_inst/man/man3/bar.3
+test ! -f ./_inst/man/man3/nbar.3
+
+:
diff --git a/t/man6.sh b/t/man6.sh
new file mode 100755 (executable)
index 0000000..1a7b267
--- /dev/null
+++ b/t/man6.sh
@@ -0,0 +1,101 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure 'make distcheck' passes when help2man generates man pages,
+# even if the 'missing' script is involved.
+
+required=help2man
+. ./defs || Exit 1
+
+# Avoid a spurious failure due to a known FreeBSD make incompatibility.
+useless_vpath_rebuild \
+  && skip_ "VPATH useless rebuild detected (see bug#7884)"
+
+cat > Makefile.am << 'END'
+dist_man_MANS = $(srcdir)/foobar.1 bazquux.1 zardoz.1
+dist_bin_SCRIPTS = foobar bazquux zardoz
+$(srcdir)/foobar.1:
+       $(HELP2MAN) --output=$@ $(srcdir)/foobar
+bazquux.1:
+       $(HELP2MAN) --output=$@ $(srcdir)/bazquux
+zardoz.1:
+       $(HELP2MAN) --output=$(srcdir)/zardoz.1 $(srcdir)/zardoz
+END
+
+cat >> configure.ac <<'END'
+AM_MISSING_PROG([HELP2MAN], [help2man])
+AC_OUTPUT
+END
+
+cat > foobar <<'END'
+#! /bin/sh
+while test $# -gt 0; do
+  case $1 in
+    -h | --help) echo "usage: $0 [OPTIONS]..."; exit 0;;
+    -v | --version) echo "$0 1.0"; exit 0;;
+  esac
+  shift
+done
+END
+
+cp foobar bazquux
+cp foobar zardoz
+
+chmod +x foobar bazquux zardoz
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+mkdir build
+cd build
+
+../configure
+# Sanity check.
+grep '^HELP2MAN *=.*/missing --run help2man' Makefile
+
+$MAKE
+$FGREP foobar ../foobar.1
+$FGREP bazquux ./bazquux.1
+$FGREP zardoz ../zardoz.1
+
+$MAKE distdir
+$FGREP foobar  $me-1.0/foobar.1
+$FGREP bazquux $me-1.0/bazquux.1
+$FGREP zardoz  $me-1.0/zardoz.1
+
+$MAKE distcheck
+
+cd ..
+rm -f *.1 # Remove leftover generated manpages.
+
+./configure
+# Sanity check.
+grep '^HELP2MAN *=.*/missing --run help2man' Makefile
+
+$MAKE
+$FGREP foobar  foobar.1
+$FGREP bazquux bazquux.1
+$FGREP zardoz  zardoz.1
+
+$MAKE distdir
+$FGREP foobar  $me-1.0/foobar.1
+$FGREP bazquux $me-1.0/bazquux.1
+$FGREP zardoz  $me-1.0/zardoz.1
+
+$MAKE distcheck
+
+:
diff --git a/t/man7.sh b/t/man7.sh
new file mode 100755 (executable)
index 0000000..37bec90
--- /dev/null
+++ b/t/man7.sh
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for a bug in maintainer-clean w.r.t. generated manpages.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+dist_man_MANS = $(srcdir)/foo.1 bar.1
+$(srcdir)/foo.1 bar.1:
+       : > $@
+MAINTAINERCLEANFILES = $(dist_man_MANS)
+END
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+
+$MAKE
+test -f bar.1
+test -f ../foo.1
+
+$MAKE maintainer-clean
+test ! -f bar.1
+test ! -f ../foo.1
+
+cd ..
+./configure
+
+$MAKE
+test -f bar.1
+test -f foo.1
+
+$MAKE maintainer-clean
+test ! -f bar.1
+test ! -f foo.1
+
+:
diff --git a/t/man8.sh b/t/man8.sh
new file mode 100755 (executable)
index 0000000..14c190b
--- /dev/null
+++ b/t/man8.sh
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for a bug in distcheck w.r.t. generated manpages.
+
+. ./defs || Exit 1
+
+# Avoid a spurious failure due to a known FreeBSD make incompatibility.
+useless_vpath_rebuild \
+  && skip_ "VPATH useless rebuild detected (see bug#7884)"
+
+cat > Makefile.am << 'END'
+dist_man_MANS = foo.1
+foo.1:
+## This 'rm' command will fail if $(srcdir) is unwritable.
+       rm -f $(srcdir)/$@
+       : > $(srcdir)/$@
+END
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+
+$MAKE
+test -f ../foo.1
+$MAKE distdir
+test -f $me-1.0/foo.1
+$MAKE distcheck
+
+cd ..
+rm -f foo.1
+./configure
+
+$MAKE
+test -f foo.1
+$MAKE distdir
+test -f $me-1.0/foo.1
+$MAKE distcheck
+
+:
diff --git a/t/mdate.sh b/t/mdate.sh
new file mode 100755 (executable)
index 0000000..b33bf63
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that mdate-sh is required when Texinfo used and version.texi needed.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+END
+
+cat > textutils.texi << 'END'
+@include version.texi
+@setfilename textutils.info
+END
+
+# Required when using Texinfo.
+: > texinfo.tex
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'required file.*mdate-sh.*not found' stderr
+
+:
diff --git a/t/mdate2.sh b/t/mdate2.sh
new file mode 100755 (executable)
index 0000000..093de5e
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure mdate-sh is included in distribution.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+END
+
+cat > textutils.texi << 'END'
+@include version.texi
+END
+
+# Required when using Texinfo.
+: > texinfo.tex
+: > mdate-sh
+echo '@setfilename textutils' > textutils.texi
+
+# Use "././" to confuse Automake into thinking this is a subdir build.
+$ACLOCAL
+$AUTOMAKE ././Makefile
+
+grep 'mdate-sh' Makefile.in | grep -v SHELL
+
+:
diff --git a/t/mdate3.sh b/t/mdate3.sh
new file mode 100755 (executable)
index 0000000..a37e60b
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure mdate-sh run correctly.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([foo])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+END
+
+cat > textutils.texi << 'END'
+@include version.texi
+@setfilename textutils.info
+END
+
+mkdir foo
+
+# Required when using Texinfo.
+: > foo/texinfo.tex
+: > foo/mdate-sh
+mv install-sh foo
+mv missing foo
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '[^/]mdate-sh' Makefile.in && Exit 1
+Exit 0
diff --git a/t/mdate4.sh b/t/mdate4.sh
new file mode 100755 (executable)
index 0000000..ac1be3a
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that mdate-sh is added to the right directory.
+# Report from Kevin Dalley.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+END
+
+mkdir sub
+
+cat > sub/Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+END
+
+cat > sub/textutils.texi << 'END'
+@include version.texi
+@setfilename textutils.info
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+ls -l sub
+test -f sub/mdate-sh
+
+:
diff --git a/t/mdate5-w.sh b/t/mdate5-w.sh
new file mode 100755 (executable)
index 0000000..eb06116
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/mdate5.sh"; then
+    echo "$0: will source $dir/t/mdate5.sh"
+    . "$dir/t/mdate5.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/mdate5.sh'" >&2
+exit '99'
diff --git a/t/mdate5.sh b/t/mdate5.sh
new file mode 100755 (executable)
index 0000000..4cef952
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure mdate-sh works correctly.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+get_shell_script mdate-sh
+
+set x `./mdate-sh mdate-sh`
+shift
+echo "$*" # For debugging.
+
+# Check that mdate output looks like a date:
+test $# = 3
+case $1$3 in *[!0-9]*) Exit 1;; esac
+test $1 -lt 32
+# Hopefully automake will be obsolete in 80 years ;-)
+case $3 in 20[0-9][0-9]) :;; *) Exit 1;; esac
+case $2 in
+  January|February|March|April|May|June|July|August) ;;
+  September|October|November|December) ;;
+  *) Exit 1
+esac
+
+# Stricter checks on the year required a POSIX date(1) command.
+if year=`date +%Y` && test $year -gt 2010; then
+  test $year = $3 || Exit 1
+fi
+
+:
diff --git a/t/mdate6-w.sh b/t/mdate6-w.sh
new file mode 100755 (executable)
index 0000000..df01672
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/mdate6.sh"; then
+    echo "$0: will source $dir/t/mdate6.sh"
+    . "$dir/t/mdate6.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/mdate6.sh'" >&2
+exit '99'
diff --git a/t/mdate6.sh b/t/mdate6.sh
new file mode 100755 (executable)
index 0000000..ca3ca21
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# mdate-sh can work with weird file names, doesn't eval too much.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+a=
+file='file  name $a'
+( : > "$file" ) \
+  || skip_ "file name with spaces and metacharacters not accepted"
+
+get_shell_script mdate-sh
+
+./mdate-sh "$file" >stdout 2>stderr ||
+  { cat stdout; cat stderr >&2; Exit 1; }
+cat stdout
+cat stderr >&2
+grep '[12][0-9]\{3\}' stdout
+test ! -s stderr
+
+:
diff --git a/t/missing-auxfile-stops-makefiles-creation.sh b/t/missing-auxfile-stops-makefiles-creation.sh
new file mode 100755 (executable)
index 0000000..d708081
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Automake should stop the creation of Makefile.in files at the first
+# encountered error due to a required auxiliary file not found.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AM_PATH_PYTHON
+END
+
+echo SUBDIRS = > Makefile.am
+
+for i in 1 2 3 4 5; do
+  echo "AC_CONFIG_FILES([sub$i/Makefile])" >> configure.ac
+  echo "SUBDIRS += sub$i" >> Makefile.am
+  mkdir sub$i
+  echo python_PYTHON = foo.py > sub$i/Makefile.am
+done
+
+: > sub1/Makefile.am
+
+$ACLOCAL
+
+unset AUTOMAKE_JOBS || :
+
+AUTOMAKE_fails
+ls -l Makefile.in */Makefile.in || : # For debugging.
+# Top-level Makefile.in might be created or not, we don't want to set
+# too strict semantics here, so don't check for it.  But the later
+# files shouldn't exist.
+test -f sub1/Makefile.in
+test ! -f sub2/Makefile.in
+test ! -f sub3/Makefile.in
+test ! -f sub4/Makefile.in
+test ! -f sub5/Makefile.in
+
+rm -f Makefile.in */Makefile.in
+
+: > sub2/Makefile.am
+: > sub3/Makefile.am
+
+AUTOMAKE_fails
+ls -l Makefile.in */Makefile.in || : # For debugging.
+test -f sub1/Makefile.in
+test -f sub2/Makefile.in
+test -f sub3/Makefile.in
+test ! -f sub4/Makefile.in
+test ! -f sub5/Makefile.in
+
+:
diff --git a/t/missing-w.sh b/t/missing-w.sh
new file mode 100755 (executable)
index 0000000..6854501
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/missing.sh"; then
+    echo "$0: will source $dir/t/missing.sh"
+    . "$dir/t/missing.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/missing.sh'" >&2
+exit '99'
diff --git a/t/missing.sh b/t/missing.sh
new file mode 100755 (executable)
index 0000000..473d041
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test missing with version mismatches.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AC_OUTPUT
+EOF
+
+: > Makefile.am
+
+get_shell_script missing
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Make sure we do use missing, even if the user exported AUTOCONF.
+# (We cannot export this new value, because it would be used by Automake
+# when tracing, and missing is no good for this.)
+MYAUTOCONF="./missing --run $AUTOCONF"
+unset AUTOCONF
+
+./configure AUTOCONF="$MYAUTOCONF"
+$MAKE
+$sleep
+# Hopefully the install version of Autoconf cannot compete with this one...
+echo 'AC_PREREQ(9999)' >> aclocal.m4
+$MAKE distdir
+
+# Try version number suffixes if we can add them safely.
+case $MYAUTOCONF in *autoconf)
+  ./configure AUTOCONF="${MYAUTOCONF}6789"
+  $MAKE
+  $sleep
+  # Hopefully the install version of Autoconf cannot compete with this one...
+  echo 'AC_PREREQ(9999)' >> aclocal.m4
+  $MAKE distdir
+esac
+
+# Run again, but without missing, to ensure that timestamps were updated.
+export AUTOMAKE ACLOCAL
+./configure AUTOCONF="$MYAUTOCONF"
+$MAKE
+
+# Make sure $MAKE fails when timestamps aren't updated and missing is not used.
+$sleep
+touch aclocal.m4
+$MAKE && Exit 1
+
+:
diff --git a/t/missing2-w.sh b/t/missing2-w.sh
new file mode 100755 (executable)
index 0000000..e3ff8dd
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/missing2.sh"; then
+    echo "$0: will source $dir/t/missing2.sh"
+    . "$dir/t/missing2.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/missing2.sh'" >&2
+exit '99'
diff --git a/t/missing2.sh b/t/missing2.sh
new file mode 100755 (executable)
index 0000000..89e9a5d
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test missing with version mismatches.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+m4_include([v.m4])
+AC_OUTPUT
+EOF
+
+: > v.m4
+
+: > Makefile.am
+
+get_shell_script missing
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# See missing.test for explanations about this.
+MYAUTOCONF="./missing --run $AUTOCONF"
+unset AUTOCONF
+
+./configure AUTOCONF="$MYAUTOCONF"
+
+$MAKE
+$sleep
+# Hopefully the install version of Autoconf cannot compete with this one...
+echo 'AC_PREREQ(9999)' > v.m4
+$MAKE distdir
+
+# Run again, but without missing, to ensure that timestamps were updated.
+export AUTOMAKE ACLOCAL
+./configure AUTOCONF="$MYAUTOCONF"
+$MAKE
+
+# Make sure $MAKE fail when timestamps aren't updated and missing is not used.
+$sleep
+touch v.m4
+$MAKE && Exit 1
+
+:
diff --git a/t/missing3-w.sh b/t/missing3-w.sh
new file mode 100755 (executable)
index 0000000..f0effbd
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/missing3.sh"; then
+    echo "$0: will source $dir/t/missing3.sh"
+    . "$dir/t/missing3.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/missing3.sh'" >&2
+exit '99'
diff --git a/t/missing3.sh b/t/missing3.sh
new file mode 100755 (executable)
index 0000000..a26f954
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test missing when running a tool's --version.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+get_shell_script missing
+
+# b7cb8259 assumed not to exist.
+
+./missing b7cb8259 --version 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep . stderr && Exit 1
+./missing b7cb8259 --grep 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep WARNING stderr
+
+./missing --run b7cb8259 --version && Exit 1
+./missing --run b7cb8259 --grep 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep WARNING stderr
+
+# missing itself it known to exist :)
+
+./missing ./missing --version 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep . stderr && Exit 1
+./missing ./missing --grep 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep WARNING stderr
+
+./missing --run ./missing --version 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep . stderr && Exit 1
+./missing --run ./missing --grep 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep WARNING stderr && Exit 1
+grep Unknown stderr
diff --git a/t/missing4.sh b/t/missing4.sh
new file mode 100755 (executable)
index 0000000..01321c3
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# See how well the rebuild rule handles an aclocal.m4 that was
+# generated for another version of autoconf.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >>configure.ac
+
+touch Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
+
+sed '1,20 s/m4_defn(\[AC_AUTOCONF_VERSION\]),/9999,/' < aclocal.m4 > aclocal.tmp
+cmp aclocal.m4 aclocal.tmp && Exit 1
+
+mv aclocal.tmp aclocal.m4
+
+$MAKE 2>stderr || { cat cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'You have another version of autoconf' stderr
+grep 'aclocal.m4:.*this file was generated for' stderr
+
+$MAKE 2>stderr || { cat cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'You have another version of autoconf' stderr && Exit 1
+grep 'aclocal.m4:.*this file was generated for' stderr && Exit 1
+
+:
diff --git a/t/missing5-w.sh b/t/missing5-w.sh
new file mode 100755 (executable)
index 0000000..20faa60
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/missing5.sh"; then
+    echo "$0: will source $dir/t/missing5.sh"
+    . "$dir/t/missing5.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/missing5.sh'" >&2
+exit '99'
diff --git a/t/missing5.sh b/t/missing5.sh
new file mode 100755 (executable)
index 0000000..80bba36
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test how well 'missing' finds output file names of various tools.
+# PR automake/483.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+get_shell_script missing
+
+# These programs may be invoked by 'missing'.
+needed_tools='chmod find sed test touch'
+needed_tools_csep=`echo $needed_tools | sed 's/ /, /g'`
+
+cat >configure.ac <<EOF
+AC_INIT([missing4], [1.0])
+m4_foreach([tool], [$needed_tools_csep],
+          [AC_PATH_PROG(tool, tool, [false])
+           AC_CONFIG_FILES(tool, chmod +x tool)
+          ])
+AC_OUTPUT
+EOF
+
+for tool in $needed_tools; do
+  unindent >$tool.in <<EOF
+    #! /bin/sh
+    exec @$tool@ "\$@"
+EOF
+done
+
+$AUTOCONF
+./configure
+
+echo output-file > output-file
+cp output-file my--output--file-o
+
+save_PATH=$PATH
+PATH=.
+export PATH
+missing --help
+missing --version
+for tool in autom4te help2man makeinfo; do
+  missing --run $tool -o my--output--file-o input
+  missing --run $tool --output my--output--file-o input
+done
+PATH=$save_PATH
+export PATH
+diff output-file my--output--file-o
+test ! -f ./--file-o
+test ! -f input
diff --git a/t/missing6.sh b/t/missing6.sh
new file mode 100755 (executable)
index 0000000..8173f81
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure autoconf version checks in aclocal.m4 are robust.
+
+am_create_testdirs=empty
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+m4_define([AC_AUTOCONF_VERSION], [9999a])
+dnl!! m4_define([a], [oops])
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'You have another version of autoconf' stderr
+grep 'aclocal.m4:.*this file was generated for' stderr
+$AUTOMAKE -a
+./configure
+$MAKE
+
+sed 's/^dnl!! //' < configure.ac > configure.tmp
+cmp configure.ac configure.tmp && fatal_ 'failed to edit configure.ac'
+mv -f configure.tmp configure.ac
+
+$MAKE 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'You have another version of autoconf' stderr
+grep 'aclocal.m4:.*this file was generated for autoconf 9999a' stderr
+
+:
diff --git a/t/mkdirp-deprecation.sh b/t/mkdirp-deprecation.sh
new file mode 100755 (executable)
index 0000000..7b8f67f
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the AM_PROG_MKDIR_P macro is deprecated.  It will be
+# be removed in the next major Automake release.
+
+. ./defs || Exit 1
+
+echo AM_PROG_MKDIR_P >> configure.ac
+: > Makefile.am
+
+grep_err ()
+{
+  loc='^configure.ac:4:'
+  grep "$loc.*AM_PROG_MKDIR_P.*deprecated" stderr
+  grep "$loc.* use .*AC_PROG_MKDIR_P" stderr
+  grep "$loc.* use '\$(MKDIR_P)' instead of '\$(mkdir_p)'.*Makefile" stderr
+}
+
+$ACLOCAL
+
+$AUTOCONF -Werror -Wobsolete 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep_err
+
+$AUTOCONF -Werror -Wno-obsolete
+
+#AUTOMAKE_fails
+#grep_err
+AUTOMAKE_fails --verbose -Wnone -Wobsolete
+grep_err
+
+$AUTOMAKE -Wno-obsolete
+
+:
diff --git a/t/mkinst2.sh b/t/mkinst2.sh
new file mode 100755 (executable)
index 0000000..6582836
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure no-installman suppresses man dir creation.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-installman
+man_MANS = foo.1
+END
+
+: > foo.1
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure --prefix "`pwd`/sub"
+
+$MAKE installdirs
+test ! -d sub/man
diff --git a/t/mkinst3-w.sh b/t/mkinst3-w.sh
new file mode 100755 (executable)
index 0000000..dd6b7ab
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_test_prefer_config_shell=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/mkinst3.sh"; then
+    echo "$0: will source $dir/t/mkinst3.sh"
+    . "$dir/t/mkinst3.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/mkinst3.sh'" >&2
+exit '99'
diff --git a/t/mkinst3.sh b/t/mkinst3.sh
new file mode 100755 (executable)
index 0000000..fbe01c6
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test mkinstalldirs with spaces in directory names.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+# Make sure the directory we will create can be created...
+mkdir '~a b' && mkdir '~a b/-x  y' \
+  || skip_ "directory names with spaces and metacharacters not accepted"
+rm -rf '~a b'
+
+get_shell_script mkinstalldirs
+
+# Test mkinstalldirs with the installed mkdir.
+
+./mkinstalldirs '~a b/-x  y'
+test -d '~a b/-x  y'
+rm -rf '~a b'
+
+# Trick mkinstalldirs into thinking mkdir does not support -p.
+
+mkdir bin
+cat >bin/mkdir <<'EOF'
+#!/bin/sh
+for arg
+do
+  case $arg in
+  -p) exit 1;;
+  esac
+done
+PATH=$AM_PATH
+export PATH
+exec mkdir "$@"
+EOF
+
+chmod +x bin/mkdir
+AM_PATH=$PATH
+export AM_PATH
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH
+export PATH
+
+# Test mkinstalldirs without mkdir -p.
+
+./mkinstalldirs '~a b/-x  y'
+test -d '~a b/-x  y'
+rm -rf '~a b'
+
+./mkinstalldirs "`pwd`///~a b//-x  y"
+test -d "`pwd`/~a b/-x  y"
+rm -rf '~a b'
diff --git a/t/mkinstall.sh b/t/mkinstall.sh
new file mode 100755 (executable)
index 0000000..e6b3bc2
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug where mkinstalldirs variable can be set incorrectly.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+# The "././" prefix confuses Automake into thinking it is doing a
+# subdir build.  Yes, this is hacky.
+$ACLOCAL
+$AUTOMAKE ././Makefile
+
+grep ' /mkinstalldirs' Makefile.in && Exit 1
+Exit 0
diff --git a/t/mmode.sh b/t/mmode.sh
new file mode 100755 (executable)
index 0000000..6c80399
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for AM_MAINTAINER_MODE defaults.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_MAINTAINER_MODE
+AC_OUTPUT
+END
+
+: >Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+grep '^MAINT.*#' Makefile
+
+./configure --disable-maintainer-mode
+grep '^MAINT.*#' Makefile
+
+./configure --enable-maintainer-mode
+grep '^MAINT.*#' Makefile && Exit 1
+
+sed 's/\(AM_MAINTAINER_MODE\).*/\1([disable])/' configure.ac > configure.int
+mv -f configure.int configure.ac
+mv configure configure1
+$AUTOCONF --force
+diff configure configure1
+
+sed 's/\(AM_MAINTAINER_MODE\).*/\1([enable])/' configure.ac > configure.int
+mv -f configure.int configure.ac
+$AUTOCONF --force
+
+./configure
+grep '^MAINT.*#' Makefile && Exit 1
+
+./configure --enable-maintainer-mode
+grep '^MAINT.*#' Makefile && Exit 1
+
+./configure --disable-maintainer-mode
+grep '^MAINT.*#' Makefile
+
+sed 's/\(AM_MAINTAINER_MODE\).*/\1([foo])/' configure.ac > configure.int
+mv -f configure.int configure.ac
+$AUTOCONF --force -Werror && Exit 1
+
+:
diff --git a/t/mmodely.sh b/t/mmodely.sh
new file mode 100755 (executable)
index 0000000..6c61915
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Verify that intermediate files are only built from Yacc and Lex
+# sources in maintainer mode.
+# From Derek R. Price.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_MAINTAINER_MODE
+AC_PROG_CC
+AM_PROG_LEX
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+YACC = false
+LEX = false
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.y joe.l
+LDADD = @LEXLIB@
+END
+
+# The point of this test is that it is not dependent on a working lex
+# or yacc.
+cat > joe.c <<EOF
+int joe (int arg)
+{
+    return arg * 2;
+}
+EOF
+# On systems which link in libraries non-lazily and whose linkers
+# complain about unresolved symbols by default, such as Solaris, an
+# yylex function needs to be defined to avoid an error due to an
+# unresolved symbol.
+cat > zardoz.c <<EOF
+int joe (int arg);
+int yylex (void)
+{
+    return 0;
+}
+int main (int argc, char **argv)
+{
+    return joe (argc);
+}
+EOF
+
+# Ensure a later timestamp for our Lex & Yacc sources.
+$sleep
+: > joe.l
+: > zardoz.y
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+
+cat >myyacc.sh <<'END'
+#! /bin/sh
+echo "$@" >y.tab.c
+END
+cat >mylex.sh <<'END'
+echo "$@" >lex.yy.c
+END
+chmod +x myyacc.sh mylex.sh
+PATH="`pwd`$PATH_SEPARATOR$PATH"
+
+# "make maintainer-clean; ./configure; make" should always work,
+# per GNU Standard.
+$MAKE maintainer-clean
+./configure
+YACC="myyacc.sh" LEX="mylex.sh" \
+   LEX_OUTPUT_ROOT='lex.yy' $MAKE -e zardoz.c joe.c
+grep zardoz.y zardoz.c
+grep joe.l joe.c
diff --git a/t/multlib.sh b/t/multlib.sh
new file mode 100755 (executable)
index 0000000..0295ccc
--- /dev/null
@@ -0,0 +1,162 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check multilib support.
+# Based on a test case from Ralf Corsepius.
+# FIXME: the features tested by this script has been moved in contrib.
+# FIXME: We should move this script accordingly.
+
+required='gcc GNUmake'
+. ./defs || Exit 1
+
+mldir=$am_top_srcdir/contrib/multilib
+mkdir m4
+cp "$mldir"/config-ml.in "$mldir"/symlink-tree .
+cp "$mldir"/multi.m4 m4
+
+ACLOCAL_PATH=${ACLOCAL_PATH+"$ACLOCAL_PATH:"}`pwd`/m4
+export ACLOCAL_PATH
+
+cat >configure.ac <<'END'
+AC_INIT([multlib], [1.0])
+AC_CONFIG_SRCDIR(libfoo/foo.c)
+AC_CONFIG_AUX_DIR(.)
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_SUBDIRS(libfoo)
+AC_CONFIG_SUBDIRS(libbar)
+AC_OUTPUT
+END
+
+cat >mycc <<'END'
+#! /bin/sh
+case ${1+"$@"} in
+ *-print-multi-lib*)
+  echo ".;"
+  echo "debug;@g"
+  exit 0 ;;
+esac
+gcc ${1+"$@"}
+END
+
+chmod +x mycc
+PATH=`pwd`$PATH_SEPARATOR$PATH
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = @subdirs@
+EXTRA_DIST = config-ml.in symlink-tree
+check-all:
+       test -f debug/libfoo/libfoo.a
+       test -f debug/libbar/libbar.a
+       test -f libfoo/libfoo.a
+       test -f libbar/libbar.a
+EOF
+
+# libfoo tests multilib supports when there are no subdirectories
+# libbar tests multilib supports when there are subdirectories
+
+mkdir libfoo
+cp "$mldir"/multilib.am libfoo/
+
+cat >libfoo/configure.ac <<'END'
+AC_PREREQ(2.57)
+AC_INIT(libfoo, 0.1, nobody@localhost)
+AC_CONFIG_SRCDIR(foo.c)
+# Apparently it doesn't work to have auxdir=.. when
+# multilib uses symlinked trees.
+AC_CONFIG_AUX_DIR(.)
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AM_ENABLE_MULTILIB(Makefile,[..])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat >libfoo/Makefile.am <<'END'
+noinst_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+include $(top_srcdir)/multilib.am
+END
+
+: > libfoo/foo.c
+
+mkdir libbar
+cp "$mldir"/multilib.am libbar/
+
+cat >libbar/configure.ac <<'END'
+AC_PREREQ(2.57)
+AC_INIT(libbar, 0.1, nobody@localhost)
+# Apparently it doesn't work to have auxdir=.. when
+# multilib uses symlinked trees.
+AC_CONFIG_AUX_DIR(.)
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AM_ENABLE_MULTILIB(Makefile,[..])
+AC_CONFIG_FILES([Makefile sub/Makefile])
+AC_OUTPUT
+END
+
+cat >libbar/Makefile.am <<'END'
+SUBDIRS = sub
+noinst_LIBRARIES = libbar.a
+libbar_a_SOURCES = bar.c
+include $(top_srcdir)/multilib.am
+END
+
+mkdir libbar/sub
+echo 'include $(top_srcdir)/multilib.am' >libbar/sub/Makefile.am
+: > libbar/bar.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+cd libfoo
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+cd ..
+
+cd libbar
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+cd ..
+
+# Check VPATH builds
+mkdir build
+cd build
+../configure --enable-multilib CC=mycc
+$MAKE
+test -f debug/libfoo/libfoo.a
+test -f debug/libbar/libbar.a
+test -f libfoo/libfoo.a
+test -f libbar/libbar.a
+$MAKE install
+$MAKE distcleancheck
+
+# Check standard builds.
+cd ..
+# Why to I have to specify --with-target-subdir?
+./configure --enable-multilib --with-target-subdir=. CC=mycc
+$MAKE check
+DISTCHECK_CONFIGURE_FLAGS='--enable-multilib CC=mycc' $MAKE distcheck
+
+:
diff --git a/t/no-extra-makefile-code.sh b/t/no-extra-makefile-code.sh
new file mode 100755 (executable)
index 0000000..1742dc4
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that we don't emit harmless but useless code in the generated
+# Makefile.in when the project does not use compiled languages.  Motivated
+# by a regression caused by removal of automatic de-ANSI-fication support:
+# <http://lists.gnu.org/archive/html/automake-patches/2011-08/msg00200.html>
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+: > Makefile.am
+
+rm -f depcomp compile
+
+$ACLOCAL
+$AUTOMAKE
+
+$EGREP 'DEFAULT_INCLUDES|@am__isrc@|-compile|\$\(OBJEXT\)|tab\.[ch]' \
+  Makefile.in && Exit 1
+
+:
diff --git a/t/no-outdir-option.sh b/t/no-outdir-option.sh
new file mode 100755 (executable)
index 0000000..6212534
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the '-o' aka '--output-dir' option is not recognized anymore.
+
+. ./defs || Exit 1
+
+: > Makefile.am
+
+AUTOMAKE_fails -Wno-error --output-dir=foo
+grep 'unrecognized option.*--output-dir' stderr
+
+AUTOMAKE_fails -Wno-error -o foo
+grep 'unrecognized option.*-o' stderr
+
+:
diff --git a/t/nobase-libtool.sh b/t/nobase-libtool.sh
new file mode 100755 (executable)
index 0000000..38008cd
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure nobase_* works for libtool libraries and programs as well.
+# This is just the libtool equivalent of nobase.test, split
+# up for greater exposure of nobase.test.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'EOF'
+fooexecdir = $(prefix)/foo
+fooexec_LTLIBRARIES = sub/libbase.la
+nobase_fooexec_LTLIBRARIES = sub/libnobase.la
+fooexec_PROGRAMS = sub/base
+nobase_fooexec_PROGRAMS = sub/nobase
+sub_libbase_la_SOURCES = source2.c
+sub_libnobase_la_SOURCES = source2.c
+sub_base_SOURCES = source.c
+sub_nobase_SOURCES = source.c
+
+test-install-data: install-data
+       test ! -f inst/foo/sub/libnobase.la
+       test ! -f inst/foo/libbase.la
+
+test-install-exec: install-exec
+       test   -f inst/foo/sub/libnobase.la
+       test ! -f inst/foo/libnobase.la
+       test   -f inst/foo/libbase.la
+
+.PHONY: test-install-exec test-install-data
+EOF
+
+mkdir sub
+
+cat >source.c <<'EOF'
+int
+main (int argc, char *argv[])
+{
+  return 0;
+}
+EOF
+cp source.c source2.c
+
+rm -f install-sh
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a --copy
+./configure --prefix "`pwd`/inst" --program-prefix=p
+
+$MAKE
+$MAKE test-install-data
+$MAKE test-install-exec
+$MAKE uninstall
+
+test `find inst/foo -type f -print | wc -l` = 0
+
+$MAKE install-strip
+
+# Likewise, in a VPATH build.
+
+$MAKE uninstall
+$MAKE distclean
+mkdir build
+cd build
+../configure --prefix "`pwd`/inst" --program-prefix=p
+$MAKE
+$MAKE test-install-data
+$MAKE test-install-exec
+$MAKE uninstall
+test `find inst/foo -type f -print | wc -l` = 0
+
+:
diff --git a/t/nobase-nodist.sh b/t/nobase-nodist.sh
new file mode 100755 (executable)
index 0000000..54b940b
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Interaction of 'nobase_' and 'nodist_' prefixes.
+
+. ./defs || Exit 1
+
+# Simulate no emacs and no python (it shouldn't be needed in this test).
+EMACS="no" PYTHON=":"; export EMCAS PYTHON
+
+cat >> configure.ac << 'END'
+AM_PATH_LISPDIR
+AM_PATH_PYTHON([], [], [:])
+# Simulate no javac (it shouldn't be needed in this test).
+AC_SUBST([JAVAC], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+nobase_nodist_noinst_PYTHON = baz1.py sub/baz2.py
+# Lisp and Java sources are not distributed by default, so try both
+# with and without the 'nodist_' prefix, for more coverage.
+nobase_noinst_LISP = foo1.el sub/foo2.el
+nobase_nodist_noinst_LISP = foo3.el sub/foo4.el
+nobase_noinst_JAVA = bar1.java sub/bar2.java
+nobase_nodist_noinst_JAVA = bar3.java sub/bar4.java
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE distdir
+
+ls -l $distdir $distdir/* # For debugging.
+test ! -f $distdir/foo1.el
+test ! -f $distdir/sub/foo2.el
+test ! -f $distdir/foo3.el
+test ! -f $distdir/sub/foo4.el
+test ! -f $distdir/bar1.java
+test ! -f $distdir/sub/bar2.java
+test ! -f $distdir/bar3.java
+test ! -f $distdir/sub/bar4.java
+test ! -f $distdir/baz1.py
+test ! -f $distdir/sub/baz2.py
+
+:
diff --git a/t/nobase-python.sh b/t/nobase-python.sh
new file mode 100755 (executable)
index 0000000..2850901
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure nobase_* works for python files.
+
+required=python
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AM_PATH_PYTHON
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'END'
+mydir=$(prefix)/my
+my_PYTHON = one.py sub/base.py
+nobase_my_PYTHON = two.py sub/nobase.py
+
+test-install-data: install-data
+       find inst -print; : For debugging.
+       test   -f inst/my/one.py
+       test   -f inst/my/one.pyc
+       test   -f inst/my/two.py
+       test   -f inst/my/two.pyc
+       test   -f inst/my/base.py
+       test   -f inst/my/base.pyc
+       test   -f inst/my/sub/nobase.py
+       test   -f inst/my/sub/nobase.pyc
+       test ! -f inst/my/nobase.py
+       test ! -f inst/my/nobase.pyc
+END
+
+mkdir sub
+
+for file in one.py sub/base.py two.py sub/nobase.py
+do
+  echo 'def one(): return 1' >$file
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure --prefix "`pwd`/inst" --program-prefix=p
+
+$MAKE
+$MAKE test-install-data
+$MAKE uninstall
+
+find inst/my -type f -print | grep . && Exit 1
+
+$MAKE install-strip
+
+# Likewise, in a VPATH build.
+
+$MAKE uninstall
+$MAKE distclean
+mkdir build
+cd build
+../configure --prefix "`pwd`/inst" --program-prefix=p
+$MAKE
+$MAKE test-install-data
+$MAKE uninstall
+find inst/my -type f -print | grep . && Exit 1
+
+:
diff --git a/t/nobase.sh b/t/nobase.sh
new file mode 100755 (executable)
index 0000000..e7661c0
--- /dev/null
@@ -0,0 +1,147 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure nobase_* works.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'EOF'
+foodir = $(prefix)/foo
+fooexecdir = $(prefix)/foo
+
+foo_HEADERS = sub/base.h sub/base-gen.h
+nobase_foo_HEADERS = sub/nobase.h sub/nobase-gen.h
+
+dist_foo_DATA = sub/base.dat sub/base-gen.dat
+nobase_dist_foo_DATA = sub/nobase.dat sub/nobase-gen.dat
+
+dist_fooexec_SCRIPTS = sub/base.sh sub/base-gen.sh
+nobase_dist_fooexec_SCRIPTS = sub/nobase.sh sub/nobase-gen.sh
+
+fooexec_PROGRAMS = sub/base
+nobase_fooexec_PROGRAMS = sub/nobase
+sub_base_SOURCES = source.c
+sub_nobase_SOURCES = source.c
+
+fooexec_LIBRARIES = sub/libbase.a
+nobase_fooexec_LIBRARIES = sub/libnobase.a
+sub_libbase_a_SOURCES = source.c
+sub_libnobase_a_SOURCES = source.c
+
+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)
+
+test-install-data: install-data
+       test   -f inst/foo/sub/nobase.h
+       test ! -f inst/foo/nobase.h
+       test   -f inst/foo/sub/nobase-gen.h
+       test ! -f inst/foo/nobase-gen.h
+       test   -f inst/foo/base.h
+       test   -f inst/foo/base-gen.h
+       test   -f inst/foo/sub/nobase.dat
+       test ! -f inst/foo/nobase.dat
+       test   -f inst/foo/sub/nobase-gen.dat
+       test ! -f inst/foo/nobase-gen.dat
+       test   -f inst/foo/base.dat
+       test   -f inst/foo/base-gen.dat
+       test ! -f inst/foo/sub/pnobase.sh
+       test ! -f inst/foo/sub/pnobase-gen.sh
+       test ! -f inst/foo/pbase.sh
+       test ! -f inst/foo/pbase-gen.sh
+       test ! -f inst/foo/sub/pnobase$(EXEEXT)
+       test ! -f inst/foo/pbase$(EXEEXT)
+       test ! -f inst/foo/sub/libnobase.a
+       test ! -f inst/foo/libbase.a
+
+test-install-exec: install-exec
+       test   -f inst/foo/sub/pnobase.sh
+       test ! -f inst/foo/pnobase.sh
+       test   -f inst/foo/sub/pnobase-gen.sh
+       test ! -f inst/foo/pnobase-gen.sh
+       test   -f inst/foo/pbase.sh
+       test   -f inst/foo/pbase-gen.sh
+       test   -f inst/foo/sub/pnobase$(EXEEXT)
+       test ! -f inst/foo/pnobase$(EXEEXT)
+       test   -f inst/foo/pbase$(EXEEXT)
+       test   -f inst/foo/sub/libnobase.a
+       test ! -f inst/foo/libnobase.a
+       test   -f inst/foo/libbase.a
+
+.PHONY: test-install-exec test-install-data
+EOF
+
+mkdir sub
+
+: > sub/base.h
+: > sub/nobase.h
+: > sub/base.dat
+: > sub/nobase.dat
+: > sub/base.sh
+: > sub/nobase.sh
+
+cat >source.c <<'EOF'
+int
+main (int argc, char *argv[])
+{
+  return 0;
+}
+EOF
+cp source.c source2.c
+
+rm -f install-sh
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a --copy
+./configure --prefix "`pwd`/inst" --program-prefix=p
+
+$MAKE
+$MAKE test-install-data
+$MAKE test-install-exec
+$MAKE uninstall
+
+test `find inst/foo -type f -print | wc -l` = 0
+
+$MAKE install-strip
+
+# Likewise, in a VPATH build.
+
+$MAKE uninstall
+$MAKE distclean
+mkdir build
+cd build
+../configure --prefix "`pwd`/inst" --program-prefix=p
+$MAKE
+$MAKE test-install-data
+$MAKE test-install-exec
+$MAKE uninstall
+test `find inst/foo -type f -print | wc -l` = 0
+
+:
diff --git a/t/nodef.sh b/t/nodef.sh
new file mode 100755 (executable)
index 0000000..3c55745
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that PACKAGE and VERSION are AC_DEFINEd when requested.
+
+. ./defs || Exit 1
+
+# -------------------------------------------------------------------
+# Do not upgrade this file to use the modern AC_INIT/AM_INIT_AUTOMAKE
+# forms.  The day these obsolete AC_INIT and AM_INIT_AUTOMAKE forms
+# are dropped, just erase the file.
+# nodef2.test contains the modern version of this test.
+# -------------------------------------------------------------------
+
+# First, check that PACKAGE and VERSION are output by default.
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE([UnIqUe_PaCkAgE], [UnIqUe_VeRsIoN])
+AC_OUTPUT(output)
+END
+
+echo 'DEFS = @DEFS@' > output.in
+
+$ACLOCAL
+$AUTOCONF
+./configure
+
+grep 'DEFS.*-DVERSION=\\"UnIqUe' output
+
+# Then, check that PACKAGE and VERSION are not output if requested.
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE([UnIqUe_PaCkAgE], [UnIqUe_VeRsIoN], [no])
+AC_OUTPUT(output)
+END
+
+$ACLOCAL
+$AUTOCONF
+./configure
+
+grep 'DEFS.*-DVERSION=\\"UnIqUe' output && Exit 1
+
+:
diff --git a/t/nodef2.sh b/t/nodef2.sh
new file mode 100755 (executable)
index 0000000..1af7b0d
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that PACKAGE and VERSION are AC_DEFINEd when requested.
+
+. ./defs || Exit 1
+
+# First, check that PACKAGE and VERSION are output by default.
+
+cat > configure.ac << 'END'
+AC_INIT([UnIqUe_PaCkAgE], [UnIqUe_VeRsIoN])
+AM_INIT_AUTOMAKE
+AC_OUTPUT(output)
+END
+
+echo 'DEFS = @DEFS@' > output.in
+
+$ACLOCAL
+$AUTOCONF
+./configure
+
+grep 'DEFS.*-DVERSION=\\"UnIqUe' output
+
+# Then, check that PACKAGE and VERSION are not output if requested.
+
+cat > configure.ac << 'END'
+AC_INIT([UnIqUe_PaCkAgE], [UnIqUe_VeRsIoN])
+AM_INIT_AUTOMAKE([no-define])
+AC_OUTPUT(output Makefile)
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE # Dummy call to make sure Automake grok 'no-define' silently.
+./configure
+
+grep 'DEFS.*-DVERSION=\\"UnIqUe' output && Exit 1
+
+:
diff --git a/t/nodep.sh b/t/nodep.sh
new file mode 100755 (executable)
index 0000000..5dcad1c
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure no-dependencies option does the right thing.
+# Bug report from Greg A. Woods.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = y.c
+END
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+mkdir x
+
+: > y.c
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '%' Makefile.in && Exit 1
+Exit 0
diff --git a/t/nodep2.sh b/t/nodep2.sh
new file mode 100755 (executable)
index 0000000..cc80058
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another test to make sure no-dependencies option does the right thing.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = a.c b.cpp c.m cxx.mm d.S e.java f.upc
+END
+
+cat > configure.ac << 'END'
+AC_INIT([nodep2], [1], [bug-automake@gnu.org])
+AM_INIT_AUTOMAKE([no-dependencies])
+AC_CONFIG_FILES([Makefile])
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_OBJC
+# FIXME: this is to cater to older autoconf; remove this once we
+# FIXME: automake requires Autoconf 2.65 or later.
+m4_ifdef([AC_PROG_OBJCXX], [AC_PROG_OBJCXX], [
+  AC_SUBST([OBJCXX], [whocares])
+  AM_CONDITIONAL([am__fastdepOBJCXX], [whocares])
+])
+AM_PROG_AS
+AM_PROG_GCJ
+AM_PROG_UPC
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep DEPMODE Makefile.in && Exit 1
+
+:
diff --git a/t/nodepcomp.sh b/t/nodepcomp.sh
new file mode 100755 (executable)
index 0000000..4691efa
--- /dev/null
@@ -0,0 +1,26 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure depcomp isn't always required.
+
+. ./defs || Exit 1
+
+rm -f depcomp
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/nodist.sh b/t/nodist.sh
new file mode 100755 (executable)
index 0000000..92cc2f7
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure dist_*_SOURCES and nodist_*_SOURCES work.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = eyeball
+
+eyeball_SOURCES = a.c
+nodist_eyeball_SOURCES = b.c
+dist_eyeball_SOURCES = c.c
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^am_eyeball_OBJECTS' Makefile.in
+grep '^DIST_SOURCES =' Makefile.in
+grep '^DIST_SOURCES =.*nodist' Makefile.in && Exit 1
+
+:
diff --git a/t/nodist2.sh b/t/nodist2.sh
new file mode 100755 (executable)
index 0000000..36851be
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure nodist_noinst_HEADERS work.
+# For PR 249.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'EOF'
+nodist_noinst_HEADERS = baz.h
+EOF
+
+: > baz.h
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure --prefix "`pwd`/install"
+$MAKE install-data
+
+:
diff --git a/t/nodist3.sh b/t/nodist3.sh
new file mode 100755 (executable)
index 0000000..23becc1
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure no-dist option works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dist
+bin_PROGRAMS = eyeball
+eyeball_SOURCES = a.c
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^dist:' Makefile.in && Exit 1
+grep '^DIST_SOURCES =' Makefile.in && Exit 1
+
+:
diff --git a/t/noinst.sh b/t/noinst.sh
new file mode 100755 (executable)
index 0000000..887c7a7
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure "make install" will build all in directory with
+# nothing to install.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+all-local:
+       exit 1
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^install[-a-z]*:.* all' Makefile.in
+
+:
diff --git a/t/noinstdir.sh b/t/noinstdir.sh
new file mode 100755 (executable)
index 0000000..39abdc7
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that noinst_* and check_* are not installed.
+# From Pavel Roskin.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+noinst_SCRIPTS = foo.sh
+noinst_DATA = foo.xpm
+noinst_LIBRARIES = libfoo.a
+noinst_PROGRAMS = foo
+noinst_HEADERS = foo.h
+check_SCRIPTS = bar.sh
+check_DATA = bar.xpm
+check_LIBRARIES = libbar.a
+check_PROGRAMS = bar
+check_HEADERS = bar.h
+END
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+END
+
+: > ar-lib
+
+$ACLOCAL
+$AUTOMAKE
+
+grep 'noinstdir' Makefile.in && Exit 1
+grep 'checkdir' Makefile.in && Exit 1
+
+:
diff --git a/t/nolink.sh b/t/nolink.sh
new file mode 100755 (executable)
index 0000000..dea6271
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake does not emit a link rule for unknown languages.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-exeext
+
+bin_PROGRAMS = meal
+meal_SOURCES = beans.veg beef.meat
+
+meal: beans.veg beef.meat
+       cat beans.veg beef.meat > meal
+END
+
+$ACLOCAL
+$AUTOMAKE -Wno-override
+
+grep '^meal.*:' Makefile.in | grep -v beef.meat && Exit 1
+
+Exit 0
diff --git a/t/nostdinc.sh b/t/nostdinc.sh
new file mode 100755 (executable)
index 0000000..8b780a6
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure nostdinc option works correctly.
+
+# We don't require a C compiler explicitly, because the first part of the
+# test (where 'Makefile.in' is grepped) does not require one.  Insted, we
+# just skip the rest of the test if configure fails to find a working C
+# compiler.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = nostdinc
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$EGREP '(-I *\.|-I.*srcdir|am__isrc)' Makefile.in && Exit 1
+
+# We'll test the fully-processed Makefile too.
+$AUTOCONF
+
+# Test with $builddir != $srcdir
+mkdir build
+cd build
+../configure || Exit $?
+$EGREP '.*-I *(\.|\$.srcdir.)' Makefile && Exit 1
+
+# Test with $builddir = $srcdir
+cd ..
+./configure || Exit $?
+$EGREP '.*-I *(\.|\$.srcdir.)' Makefile && Exit 1
+
+Exit 0
diff --git a/t/notrans.sh b/t/notrans.sh
new file mode 100755 (executable)
index 0000000..487b66f
--- /dev/null
@@ -0,0 +1,131 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check all notrans_, dist_, nodist_ prefix combinations for MANS
+# primary and install-man dependencies.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'EOF'
+man_MANS = foo.1 foo2.1
+dist_man_MANS = bar.2 bar2.2
+nodist_man_MANS = baz.3 baz2.3
+notrans_man_MANS = x-foo.4 x-foo2.4
+notrans_dist_man_MANS = x-bar.5 x-bar2.5
+notrans_nodist_man_MANS = x-baz.6 x-baz2.6
+man7_MANS = y-foo.man y-foo2.man
+dist_man5_MANS = y-bar.man y-bar2.man
+nodist_man4_MANS = y-baz.man y-baz2.man
+notrans_man3_MANS = z-foo.man z-foo2.man
+notrans_dist_man2_MANS = z-bar.man z-bar2.man
+notrans_nodist_man1_MANS = z-baz.man z-baz2.man
+
+# These two are ignored.
+dist_notrans_man_MANS = nosuch.8
+nodist_notrans_man9_MANS = nosuch.man
+
+y-foo.man y-foo2.man:
+       : >$@
+y-bar.man y-bar2.man:
+       : >$@
+y-baz.man y-baz2.man:
+       : >$@
+z-foo.man z-foo2.man:
+       : >$@
+z-bar.man z-bar2.man:
+       : >$@
+z-baz.man z-baz2.man:
+       : >$@
+
+test-install: install
+       test -f inst/man/man1/gnu-foo.1
+       test -f inst/man/man1/gnu-foo2.1
+       test -f inst/man/man2/gnu-bar.2
+       test -f inst/man/man2/gnu-bar2.2
+       test -f inst/man/man3/gnu-baz.3
+       test -f inst/man/man3/gnu-baz2.3
+       test -f inst/man/man4/x-foo.4
+       test -f inst/man/man4/x-foo2.4
+       test -f inst/man/man5/x-bar.5
+       test -f inst/man/man5/x-bar2.5
+       test -f inst/man/man6/x-baz.6
+       test -f inst/man/man6/x-baz2.6
+       test -f inst/man/man7/gnu-y-foo.7
+       test -f inst/man/man7/gnu-y-foo2.7
+       test -f inst/man/man5/gnu-y-bar.5
+       test -f inst/man/man5/gnu-y-bar2.5
+       test -f inst/man/man4/gnu-y-baz.4
+       test -f inst/man/man4/gnu-y-baz2.4
+       test -f inst/man/man3/z-foo.3
+       test -f inst/man/man3/z-foo2.3
+       test -f inst/man/man2/z-bar.2
+       test -f inst/man/man2/z-bar2.2
+       test -f inst/man/man1/z-baz.1
+       test -f inst/man/man1/z-baz2.1
+       if test -d inst/man/man8; then (exit 1); else :; fi
+       if test -d inst/man/man9; then (exit 1); else :; fi
+EOF
+
+: > foo.1
+: > foo2.1
+: > bar.2
+: > bar2.2
+: > baz.3
+: > baz2.3
+: > x-foo.4
+: > x-foo2.4
+: > x-bar.5
+: > x-bar2.5
+: > x-baz.6
+: > x-baz2.6
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+grep '^install-man1:' Makefile.in | grep '\$(man_MANS)'
+grep '^install-man2:' Makefile.in | grep '\$(dist_man_MANS)'
+grep '^install-man3:' Makefile.in | grep '\$(nodist_man_MANS)'
+grep '^install-man4:' Makefile.in | grep '\$(notrans_man_MANS)'
+grep '^install-man5:' Makefile.in | grep '\$(notrans_dist_man_MANS)'
+grep '^install-man6:' Makefile.in | grep '\$(notrans_nodist_man_MANS)'
+
+if grep '^install-man8:' Makefile.in; then Exit 1; else :; fi
+if grep '^install-man9:' Makefile.in; then Exit 1; else :; fi
+
+./configure --program-prefix=gnu- --prefix "`pwd`"/inst --mandir "`pwd`"/inst/man
+$MAKE
+$MAKE test-install
+test `find inst/man -type f -print | wc -l` = 24
+$MAKE uninstall
+test `find inst/man -type f -print | wc -l` = 0
+
+# Opportunistically test for installdirs.
+rm -rf inst
+$MAKE installdirs
+test -d inst/man/man1
+test -d inst/man/man2
+test -d inst/man/man3
+test -d inst/man/man4
+test -d inst/man/man5
+test -d inst/man/man6
+test -d inst/man/man7
+if test -d inst/man/man8; then Exit 1; else :; fi
+if test -d inst/man/man9; then Exit 1; else :; fi
diff --git a/t/number.sh b/t/number.sh
new file mode 100755 (executable)
index 0000000..b96e118
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure _OBJECTS only generated once.  Bug reported by
+# Joerg-Martin Schwarz.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^zardoz_OBJECTS' Makefile.in
+count=`grep -c '^zardoz_OBJECTS' Makefile.in`
+test $count -eq 1
+
+:
diff --git a/t/objc-basic.sh b/t/objc-basic.sh
new file mode 100755 (executable)
index 0000000..f608fbc
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# Basic tests on the Objective C support that don't actually
+# require an Objective-C compiler.
+# See also sister test 'objcxx-basic.sh'.
+
+. ./defs || Exit 1
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = hello
+hello_SOURCES = hello.m
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep "'OBJC'.* undefined" stderr
+grep "add .*'AC_PROG_OBJC'" stderr
+
+rm -rf autom4te*.cache
+
+echo AC_PROG_OBJC >> configure.ac
+
+$ACLOCAL
+$AUTOMAKE
+$EGREP '^\.SUFFIXES:.* \.m( |$)' Makefile.in
+
+:
diff --git a/t/objc-deps.sh b/t/objc-deps.sh
new file mode 100755 (executable)
index 0000000..a2e4212
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Automatic dependency tracking for Objective C.
+# See also sister test 'objcxx-deps.sh'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_OBJC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = bar.m baz.h baz2.h
+END
+
+cat > baz.h << 'END'
+#include <stdio.h>
+#include <stdlib.h>
+#include "baz2.h"
+END
+
+cat > baz2.h << 'END'
+#define MSG "Hello, World"
+END
+
+cat > bar.m << 'END'
+/* The use of #import makes this valid Object C but invalid C. */
+#import "baz.h"
+int main (void)
+{
+    fprintf (stdout, "%s\n", MSG);
+    return EXIT_SUCCESS;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure --enable-dependency-tracking
+$MAKE
+cross_compiling || (./foo | $FGREP 'Hello, World') || Exit 1
+$sleep
+: > old
+echo '#define MSG "Howdy, Earth"' > baz2.h
+$MAKE
+if test -f foo; then
+  is_newest foo old
+else
+  is_newest foo.exe old
+fi
+cross_compiling || (./foo | $FGREP 'Howdy, Earth') || Exit 1
+
+$MAKE distcheck
+
+:
diff --git a/t/objc-flags.sh b/t/objc-flags.sh
new file mode 100755 (executable)
index 0000000..6c2b1e6
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test Objective C compilation flags.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_OBJC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_DEFAULT_SOURCE_EXT = .m
+bin_PROGRAMS = foo2 foo4
+AM_OBJCFLAGS = -DVALUE=2 -DERROR=1
+foo4_OBJCFLAGS = -DVALUE=4 -DERROR=1
+END
+
+for i in 2 4; do
+  unindent > foo$i.m << END
+    /* Let's make this file valid Objective C but invalid C. */
+    #import <stdlib.h>
+    @interface Who_Cares { } @end
+    #ifdef ERROR
+    #  error "macro ERROR is defined for foo.m"
+    #else
+    #  if VALUE == $i
+         int main (void) { exit (0); }
+    #  else
+    #    error "VALUE is != $i in foo.m"
+    #  endif
+    #endif
+END
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+$FGREP OBJCFLAGS Makefile.in # For debugging.
+grep '\$(OBJCFLAGS).*\$(AM_OBJCFLAGS)'       Makefile.in && Exit 1
+grep '\$(OBJCFLAGS).*\$(foo.*_OBJCFLAGS)'    Makefile.in && Exit 1
+grep '\$(foo.*_OBJCFLAGS).*\$(AM_OBJCFLAGS)' Makefile.in && Exit 1
+
+./configure OBJCFLAGS=-UERROR
+$MAKE 
+
+:
diff --git a/t/objc-megademo.sh b/t/objc-megademo.sh
new file mode 100755 (executable)
index 0000000..bad2aee
--- /dev/null
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Stress test on Objective C/C++.
+
+required=libtoolize
+. ./defs || Exit 1
+
+## Autotools Input Files.
+
+cat > configure.ac << 'END'
+AC_INIT([play], [1.3], [bug-automake@gnu.org])
+
+dnl Support for Object C++ was introduced only in Autoconf 2.65.
+AC_PREREQ([2.65])
+AC_CONFIG_SRCDIR([play.c])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIR([m4])
+
+AM_INIT_AUTOMAKE
+
+AM_PROG_AR
+LT_INIT
+
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_OBJC
+AC_PROG_OBJCXX
+
+AC_LANG_PUSH([Objective C])
+AC_CACHE_CHECK(
+  [whether the Objective C compiler really works],
+  [my_cv_objc_works],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#import <stdio.h>]],
+                                   [[printf ("foo\n");]])],
+                  [my_cv_objc_works=yes],
+                  [my_cv_objc_works=no])])
+AC_LANG_POP([Objective C])
+
+AC_LANG_PUSH([Objective C++])
+AC_CACHE_CHECK(
+  [whether the Objective C++ compiler really works],
+  [my_cv_objcxx_works],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#import <iostream>]],
+                                   [[std::cout << "foo" << "\n";]])],
+                  [my_cv_objcxx_works=yes],
+                  [my_cv_objcxx_works=no])])
+AC_LANG_POP([Objective C++])
+
+if test $my_cv_objc_works != yes; then
+  AC_MSG_ERROR([couldn't find a working Objective C compiler], [77])
+fi
+
+if test $my_cv_objcxx_works != yes; then
+  AC_MSG_ERROR([couldn't find a working Objective C++ compiler], [77])
+fi
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = play
+play_SOURCES = play.h play.c playxx.cxx playo.m playoxx.mm
+play_LDADD = libfoo.la
+play_LDFLAGS = -lobjc
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.h foo.c fooxx.cxx fooo.m foooxx.mm
+END
+
+## Run Autotools.
+
+libtoolize
+if $ACLOCAL; then
+  : We have a modern enough autoconf, go ahead.
+elif test $? -eq 63; then
+  skip_ "Object C++ support requires Autoconf 2.65 or later"
+else
+  Exit 1 # Some other aclocal failure.
+fi
+$AUTOHEADER
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+## Program Sources.
+
+cat > play.h << 'END'
+#ifndef PLAY_H
+#define PLAY_H
+
+#include "foo.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void hello_cxx (void);
+void hello_objc (void);
+void hello_objcxx (void);
+
+#ifdef __OBJC__
+@interface Hello_ObjC
+{ }
++ (void)display;
+@end
+#endif /* __OBJC__ */
+
+#ifdef __cplusplus
+}
+
+class Hello_CXX
+{
+  public:
+    Hello_CXX() { }
+    virtual ~Hello_CXX () { }
+    void hello_cxx ();
+};
+
+#ifdef __OBJC__
+@interface Hello_ObjCXX
+{ }
++ (void)display;
+@end
+
+class Hello_OBJCXX
+{
+  public:
+    Hello_OBJCXX () { }
+    virtual ~Hello_OBJCXX () { }
+    void hello_objcxx();
+};
+#endif /* __OBJC__ */
+
+#endif /* __cplusplus */
+
+#endif /* PLAY_H */
+END
+
+cat > play.c << 'END'
+#include "play.h"
+int main (void)
+{
+  printf ("[Hello C,");
+  world_c ();
+  hello_cxx ();
+  hello_objc ();
+  hello_objcxx ();
+  return 0;
+}
+END
+
+cat > playxx.cxx << 'END'
+#include "play.h"
+
+void hello_cxx(void)
+{
+  Hello_CXX *hello = new Hello_CXX;
+  hello->hello_cxx();
+}
+
+void Hello_CXX::hello_cxx()
+{
+  std::cout << "[Hello C++,";
+  World_CXX *world = new World_CXX;
+  world->world_cxx();
+}
+END
+
+cat > playo.m << 'END'
+#import "play.h"
+
+void hello_objc (void)
+{
+  [Hello_ObjC display];
+}
+
+@implementation Hello_ObjC
++ (void)display
+{
+  printf ("[Hello ObjC,");
+  [World_ObjC display];
+}
+@end
+END
+
+cat > playoxx.mm << 'END'
+#import "play.h"
+
+// Calling: C -> C++ -> ObjC
+
+void hello_objcxx (void)
+{
+  Hello_OBJCXX *hello = new Hello_OBJCXX;
+  hello->hello_objcxx ();
+}
+
+void Hello_OBJCXX::hello_objcxx ()
+{
+  [Hello_ObjCXX display];
+}
+
+@implementation Hello_ObjCXX
++ (void)display
+{
+  std::cout << "[Hello ObjC++,";
+  [World_ObjCXX display];
+}
+@end
+END
+
+## Library Sources.
+
+cat > foo.h << 'END'
+#ifndef FOO_H
+#define FOO_H
+
+#ifdef __cplusplus
+#include <iostream>
+extern "C" {
+#else
+#include <stdio.h>
+#endif
+
+void world_c (void);
+
+#ifdef __OBJC__
+@interface World_ObjC
+{ }
++ (void)display;
+@end
+#endif /* __OBJC__ */
+
+#ifdef __cplusplus
+}
+
+class World_CXX
+{
+  public:
+    World_CXX() { }
+    virtual ~World_CXX () { }
+    void world_cxx ();
+};
+
+#ifdef __OBJC__
+class World_OBJCXX
+{
+  public:
+    World_OBJCXX () { }
+    virtual ~World_OBJCXX () { }
+    void world_objcxx ();
+};
+
+@interface World_ObjCXX
+{ }
++ (void)display;
+@end
+#endif /* __OBJC__ */
+
+#endif /* __cplusplus */
+
+#endif /* FOO_H */
+END
+
+cat > foo.c << 'END'
+#include "foo.h"
+
+void world_c (void)
+{
+  printf (" world C]\n");
+}
+END
+
+cat > fooxx.cxx << 'END'
+#include "foo.h"
+
+void World_CXX::world_cxx ()
+{
+  std::cout << " world C++]" << "\n";
+}
+END
+
+cat > fooo.m << 'END'
+#import "foo.h"
+
+@implementation World_ObjC
++ (void)display
+{
+  printf (" world ObjC]\n");
+}
+@end
+END
+
+cat > foooxx.mm << 'END'
+#import "foo.h"
+
+// Calling: ObjC -> C++
+
+@implementation World_ObjCXX
++ (void)display
+{
+  World_OBJCXX *world = new World_OBJCXX;
+  world->world_objcxx ();
+}
+@end
+
+void World_OBJCXX::world_objcxx ()
+{
+  std::cout << " world ObjC++]" << "\n";
+}
+END
+
+## Configure and build.
+
+./configure
+$MAKE
+
+if cross_compiling; then :; else
+  unindent > exp << 'END'
+    [Hello C, world C]
+    [Hello C++, world C++]
+    [Hello ObjC, world ObjC]
+    [Hello ObjC++, world ObjC++]
+END
+  ./play > got || { cat got; Exit 1; }
+  cat exp
+  cat got
+  diff exp got
+fi
+
+$MAKE distcheck
+
+:
diff --git a/t/objc-minidemo.sh b/t/objc-minidemo.sh
new file mode 100755 (executable)
index 0000000..acd7e19
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Dummy demo package using Objective C and doing distcheck.
+# See also sister test 'objcxx-minidemo.sh'.
+
+required=native
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_OBJC
+AC_CONFIG_HEADERS([config.h])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_DEFAULT_SOURCE_EXT = .m
+bin_PROGRAMS = ok
+noinst_PROGRAMS = ko
+TESTS = $(bin_PROGRAMS) $(XFAIL_TESTS)
+XFAIL_TESTS = $(noinst_PROGRAMS)
+END
+
+cat > ok.m << 'END'
+/* The use of #import makes this valid Object C but invalid C. */
+#import <stdio.h>
+#import <config.h>
+int main (void)
+{
+    printf ("Success (%s)\n", PACKAGE_STRING);
+    return 0;
+}
+END
+
+cat > ko.m << 'END'
+/* The use of #import makes this valid Object C but invalid C. */
+#import <stdio.h>
+int main (void)
+{
+    printf("Failure\n");
+    return 1;
+}
+END
+
+if $ACLOCAL; then
+  : We have a modern enough autoconf, go ahead.
+elif test $? -eq 63; then
+  skip_ "Object C++ support requires Autoconf 2.65 or later"
+else
+  Exit 1 # Some other aclocal failure.
+fi
+
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE --add-missing
+
+./configure
+$MAKE
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/objcxx-basic.sh b/t/objcxx-basic.sh
new file mode 100755 (executable)
index 0000000..be2cdf7
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# Basic tests on the Objective C++ support that don't actually
+# require an Objective-C++ compiler.
+# See also sister test 'objc-basic.sh'.
+
+. ./defs || Exit 1
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = hello
+hello_SOURCES = hello.mm
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep "'OBJCXX'.* undefined" stderr
+grep "add .*'AC_PROG_OBJCXX'" stderr
+
+rm -rf autom4te*.cache
+
+cat >> configure.ac <<'END'
+dnl Support for Object C++ was introduced only in Autoconf 2.65.
+AC_PREREQ([2.65])
+AC_PROG_OBJCXX
+END
+
+if $ACLOCAL; then
+  : We have a modern enough autoconf, go ahead.
+elif test $? -eq 63; then
+  skip_ "Object C++ support requires Autoconf 2.65 or later"
+else
+  Exit 1 # Some other aclocal failure.
+fi
+
+$AUTOMAKE
+$EGREP '^\.SUFFIXES:.* \.mm( |$)' Makefile.in
+
+:
diff --git a/t/objcxx-deps.sh b/t/objcxx-deps.sh
new file mode 100755 (executable)
index 0000000..782193a
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Automatic dependency tracking for Objective C++.
+# See also sister test 'objc-deps.sh'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+dnl Support for Object C++ was introduced only in Autoconf 2.65.
+AC_PREREQ([2.65])
+AC_PROG_OBJCXX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = bar.mm baz.h++ baz2.hh
+END
+
+cat > baz.h++ << 'END'
+#include <iostream>
+#include "baz2.hh"
+END
+
+cat > baz2.hh << 'END'
+#define MSG "Hello, World"
+END
+
+cat > bar.mm << 'END'
+/* The use of #import makes this valid Object C++ but invalid C++. */
+#import "baz.h++"
+int main (void)
+{
+    std::cout << MSG << "\n";
+    return 0;
+}
+END
+
+if $ACLOCAL; then
+  : We have a modern enough autoconf, go ahead.
+elif test $? -eq 63; then
+  skip_ "Object C++ support requires Autoconf 2.65 or later"
+else
+  Exit 1 # Some other aclocal failure.
+fi
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure --enable-dependency-tracking
+$MAKE
+cross_compiling || (./foo | $FGREP 'Hello, World') || Exit 1
+
+$sleep
+: > old
+echo '#define MSG "Howdy, Earth"' > baz2.hh
+$MAKE
+if test -f foo; then
+  is_newest foo old
+else
+  is_newest foo.exe old
+fi
+cross_compiling || (./foo | $FGREP 'Howdy, Earth') || Exit 1
+
+$MAKE distcheck
+
+:
diff --git a/t/objcxx-flags.sh b/t/objcxx-flags.sh
new file mode 100755 (executable)
index 0000000..aea7e19
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test Objective C++ compilation flags.
+# See also sister test 'objc-flags.sh'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+dnl Support for Object C++ was introduced only in Autoconf 2.65.
+AC_PREREQ([2.65])
+AC_PROG_OBJCXX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_DEFAULT_SOURCE_EXT = .mm
+bin_PROGRAMS = foo2 foo4
+AM_OBJCXXFLAGS = -DVALUE=2 -DERROR=1
+foo4_OBJCXXFLAGS = -DVALUE=4 -DERROR=1
+END
+
+for i in 2 4; do
+  unindent > foo$i.mm << END
+    /* Let's make this file valid Objective C but invalid C. */
+    #import <stdlib.h>
+    @interface Who_Cares { } @end
+    #ifdef ERROR
+    #  error "macro ERROR is defined for foo.mm"
+    #else
+    #  if VALUE == $i
+         int main (void) { exit (0); }
+    #  else
+    #    error "VALUE is != $i in foo.mm"
+    #  endif
+    #endif
+END
+done
+
+if $ACLOCAL; then
+  : We have a modern enough autoconf, go ahead.
+elif test $? -eq 63; then
+  skip_ "Object C++ support requires Autoconf 2.65 or later"
+else
+  Exit 1 # Some other aclocal failure.
+fi
+
+$AUTOCONF
+$AUTOMAKE -a
+
+$FGREP OBJCXXFLAGS Makefile.in # For debugging.
+grep '\$(OBJCXXFLAGS).*\$(AM_OBJCXXFLAGS)'       Makefile.in && Exit 1
+grep '\$(OBJCXXFLAGS).*\$(foo.*_OBJCXXFLAGS)'    Makefile.in && Exit 1
+grep '\$(foo.*_OBJCXXFLAGS).*\$(AM_OBJCXXFLAGS)' Makefile.in && Exit 1
+
+./configure OBJCXXFLAGS=-UERROR
+$MAKE 
+
+:
diff --git a/t/objcxx-minidemo.sh b/t/objcxx-minidemo.sh
new file mode 100755 (executable)
index 0000000..74e152c
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Dummy demo package using Objective C++ and doing distcheck.
+# See also sister test 'objc-minidemo.sh'.
+
+required=native
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+dnl Support for Object C++ was introduced only in Autoconf 2.65.
+AC_PREREQ([2.65])
+AC_PROG_OBJCXX
+AC_CONFIG_HEADERS([config.h])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_DEFAULT_SOURCE_EXT = .mm
+bin_PROGRAMS = ok
+noinst_PROGRAMS = ko
+TESTS = $(bin_PROGRAMS) $(XFAIL_TESTS)
+XFAIL_TESTS = $(noinst_PROGRAMS)
+END
+
+cat > ok.mm << 'END'
+/* The use of #import makes this valid Object C++ but invalid C++. */
+#import <iostream>
+#import <config.h>
+int main (void)
+{
+    std::cout << "Success (" << PACKAGE_STRING << ")\n";
+    return 0;
+}
+END
+
+cat > ko.mm << 'END'
+/* The use of #import makes this valid Object C++ but invalid C++. */
+#import <cstdio>
+int main (void)
+{
+    printf("Failure\n");
+    return 1;
+}
+END
+
+if $ACLOCAL; then
+  : We have a modern enough autoconf, go ahead.
+elif test $? -eq 63; then
+  skip_ "Object C++ support requires Autoconf 2.65 or later"
+else
+  Exit 1 # Some other aclocal failure.
+fi
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE --add-missing
+
+./configure
+$MAKE
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/objext-pr10128.sh b/t/objext-pr10128.sh
new file mode 100755 (executable)
index 0000000..2fe2dfd
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for automake bug#10128: $(OBJEXT) redefinition causes
+# $(foo_OBJECTS) to be defined as empty.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+LINK = echo >$@ Linked $@ from
+OBJEXT = fasl
+EXEEXT =
+
+noinst_PROGRAMS = foo zardoz
+foo_SOURCES = foo.lisp
+zardoz_SOURCES = mu1.lisp mu2.lisp
+
+## Un-commenting this is enough to make the test pass.  Weird!
+##.lisp.o:
+
+.lisp.fasl:
+       touch $@
+
+.PHONY: test
+test:
+       is $(foo_OBJECTS) == foo.fasl
+       is $(zardoz_OBJECTS) == mu1.fasl mu2.fasl
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE test
+touch foo.lisp mu1.lisp mu2.lisp
+$MAKE all
+cat foo
+cat zardoz
+test "`cat foo`"    = "Linked foo from foo.fasl"
+test "`cat zardoz`" = "Linked zardoz from mu1.fasl mu2.fasl"
+
+:
diff --git a/t/obsolete.sh b/t/obsolete.sh
new file mode 100755 (executable)
index 0000000..c4240c2
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure obsolete macros can be autoupdated.
+
+# We need the following indirection in case someone exported e.g.
+# AUTOUPDATE='autoupdate --verbose'.
+set x ${AUTOUPDATE-autoupdate}
+required=$2
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+END
+
+$PERL -ne '/AU_DEFUN\(\[(\w+)\]/ && print "$1\n"' \
+  "$am_automake_acdir/obsolete.m4" > obs
+cat obs >> configure.ac
+$PERL -ne 'chomp; print "grep $_ output || Exit 1\n"; ' obs > obs.1
+$PERL -ne 'chomp; print "grep $_ configure.ac && Exit 1\n"; ' obs > obs.2
+echo : >> obs.1 # Since it will be sourced, it must end with a success.
+echo : >> obs.2 # Likewise.
+
+cat configure.ac # For debugging.
+cat obs.1        # Likewise.
+cat obs.2        # Likewise.
+
+# Sanity check.  Make sure we have added something to configure.ac.
+test `wc -l <configure.ac` -gt 1
+
+$ACLOCAL
+
+# Expect Autoconf to complain about each of the macros in obs.
+$AUTOCONF -Wobsolete >output 2>&1 || { cat output; Exit 1; }
+cat output
+. ./obs.1
+# Make sure Autoupdate remove each of these macros.
+$AUTOUPDATE
+. ./obs.2
+
+# Autoconf should be able to grok the updated configure.ac.
+$AUTOCONF
+
+:
diff --git a/t/oldvars.sh b/t/oldvars.sh
new file mode 100755 (executable)
index 0000000..87d9cf1
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Use of these variables is deprecated:
+# LISP, HEADERS, DATA, SCRIPTS, LTLIBRARIES, LIBRARIES, PROGRAMS, MANS.
+
+. ./defs || Exit 1
+
+cat >Makefile.am <<\EOF
+DATA =
+HEADERS =
+LIBRARIES =
+LISP =
+LTLIBRARIES =
+MANS =
+PROGRAMS =
+SCRIPTS =
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails
+test `grep -c anachronism stderr` -eq 8
diff --git a/t/order.sh b/t/order.sh
new file mode 100755 (executable)
index 0000000..2383403
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure AC_DEFUN is handled correctly.  This test isn't named very
+# well.  Report from Jim Meyering.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+jm_TEST
+FOO
+END
+
+cat > acinclude.m4 << 'END'
+AC_DEFUN([jm_TEST])
+AC_DEFUN([FOO], [AC_REQUIRE([jm_TEST])])
+END
+
+$ACLOCAL
diff --git a/t/output-order.sh b/t/output-order.sh
new file mode 100755 (executable)
index 0000000..879b678
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that 'automake -a' output order is stable.
+# From report by Bruno Haible.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_OUTPUT
+END
+
+: >Makefile.am
+: >AUTHORS
+: >ChangeLog
+: >NEWS
+: >README
+
+cat >.autom4te.cfg <<'END'
+begin-language: "Autoconf"
+args: --no-cache
+end-language: "Autoconf"
+begin-language: "Autoconf-without-aclocal-m4"
+args: --no-cache
+end-language: "Autoconf-without-aclocal-m4"
+END
+
+$ACLOCAL
+$AUTOCONF
+rm -f missing install-sh
+$AUTOMAKE --add-missing --copy 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+
+for i in 1 2 3 4 5 6; do
+  rm -f missing install-sh INSTALL COPYING
+  # The grep prevents a Heisenbug with the HP-UX shell and VERBOSE=yes.
+  $AUTOMAKE --add-missing --copy 2>&1 >/dev/null |
+  grep -v /dev/null |
+  diff - stderr
+done
diff --git a/t/output.sh b/t/output.sh
new file mode 100755 (executable)
index 0000000..faf877b
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure files listed in AC_OUTPUT are found.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_OUTPUT([Makefile frob/zardoz])
+END
+
+: > Makefile.am
+
+mkdir frob
+: > frob/zardoz.in
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/output10.sh b/t/output10.sh
new file mode 100755 (executable)
index 0000000..92492f6
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure an AC_CONFIG_FILES can have an AC_CONFIG_FILES output as input.
+# This is comparable to output9.test, but testing Makefile rules.
+# PR/411
+
+. ./defs || Exit 1
+
+cat >> configure.ac << END
+AC_SUBST([FOO], [top])
+AC_SUBST([BAR], [bot])
+AC_CONFIG_FILES([a/top])
+AC_CONFIG_FILES([a/bot])
+AC_CONFIG_FILES([b/Makefile:a/top:b/Makefile.in:a/bot])
+AC_OUTPUT
+END
+
+mkdir a
+mkdir b
+
+cat >Makefile.am <<\EOF
+SUBDIRS = b
+dist-hook:
+       test ! -f $(distdir)/a/top
+       test ! -f $(distdir)/a/bot
+EOF
+
+cat >b/Makefile.am <<\EOF
+output:
+       echo $(TOP)$(BOT) > ok
+EOF
+
+echo TOP=@FOO@ >a/top.in
+echo BOT=@BAR@ >a/bot.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+mkdir build
+cd build
+../configure
+cd b
+$MAKE output
+grep topbot ok
+cd ..
+$MAKE distcheck
diff --git a/t/output11.sh b/t/output11.sh
new file mode 100755 (executable)
index 0000000..4413f97
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure an AC_CONFIG_FILES ignore filenames with shell variables.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << \END
+AC_SUBST([FOO], [foo])
+file1=this.in
+echo @FOO@ >$file1
+file2=that
+file3=mumble
+file4=foo
+AC_CONFIG_FILES([this:$file1],, [file1=$file1])
+AC_CONFIG_FILES([sub/this:$file1])
+AC_CONFIG_FILES([${file2}:this],, [file2=$file2])
+AC_CONFIG_FILES([$file3],, [file3=$file3])
+AC_CONFIG_FILES([$file4:foo.in],, [file4=$file4])
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat >Makefile.am <<\EOF
+SUBDIRS = sub
+EXTRA_DIST = mumble.in
+DISTCLEANFILES = this.in that mumble foo
+dist-hook:
+       test -f $(distdir)/foo.in
+       test ! -f $(distdir)/this
+EOF
+
+echo @FOO@ >mumble.in
+echo @FOO@ >foo.in
+: >sub/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+$FGREP ' $file' Makefile.in sub/Makefile.in && Exit 1
+
+./configure
+$MAKE distcheck
+cd sub
+rm -f this
+$MAKE this
+grep foo this
diff --git a/t/output12.sh b/t/output12.sh
new file mode 100755 (executable)
index 0000000..a3693cc
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure an AC_CONFIG_FILES process filenames with AC_SUBST variables.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << \END
+AC_SUBST([FOO], [foo])
+AC_SUBST([file1], [this.in])
+echo @FOO@ >$file1
+AC_SUBST([file2], [that])
+AC_SUBST([file3], [mumble])
+AC_SUBST([file4], [foo])
+AC_CONFIG_FILES([this:$file1],, [file1=$file1])
+AC_CONFIG_FILES([sub/this:$file1])
+AC_CONFIG_FILES([${file2}:this],, [file2=$file2])
+AC_CONFIG_FILES([${file3}],, [file3=$file3])
+AC_CONFIG_FILES([${file4}:foo.in],, [file4=$file4])
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat >Makefile.am <<\EOF
+SUBDIRS = sub
+DISTCLEANFILES = $(file1)
+dist-hook:
+       test -f $(distdir)/foo.in
+       test ! -f $(distdir)/this
+EOF
+
+echo @FOO@ >mumble.in
+echo @FOO@ >foo.in
+: >sub/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE distcheck
+cd sub
+rm -f this
+$MAKE this
+grep foo this
diff --git a/t/output13.sh b/t/output13.sh
new file mode 100755 (executable)
index 0000000..065bdb5
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure an AC_CONFIG_FILES, AC_CONFIG_LINKS, and AC_CONFIG_COMMANDS
+# are not prerequisites of 'all'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << \END
+AC_SUBST([FOO], [foo])
+if $create; then
+  AC_CONFIG_FILES([file])
+  AC_CONFIG_LINKS([link:input])
+  AC_CONFIG_COMMANDS([stamp], [echo stamp > stamp])
+fi
+AC_OUTPUT
+END
+
+: >Makefile.am
+
+echo link > input
+echo @FOO@ >file.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure create=false
+$MAKE
+test ! -f file
+test ! -f link
+test ! -f stamp
+
+./configure create=:
+test -f file
+test -f link
+test -f stamp
diff --git a/t/output2.sh b/t/output2.sh
new file mode 100755 (executable)
index 0000000..41c81bf
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another AC_OUTPUT test.  From report by Ulrich Drepper.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_OUTPUT([Makefile intl/intlh.inst po/Makefile.in misc/gettextize])
+END
+
+: > Makefile.am
+
+mkdir intl po misc
+: > intl/intlh.inst.in
+: > po/Makefile.in.am
+: > misc/gettextize.in
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^gettextize' Makefile.in && Exit 1
+Exit 0
diff --git a/t/output3.sh b/t/output3.sh
new file mode 100755 (executable)
index 0000000..dd7aaef
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Yet another AC_OUTPUT test.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_OUTPUT([Makefile
+tests/Makefile tests/defs],
+[blah])
+END
+
+: > Makefile.am
+
+mkdir tests
+: > tests/Makefile.am
+: > tests/defs.in
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/output4.sh b/t/output4.sh
new file mode 100755 (executable)
index 0000000..fa6a95e
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# It's hard to believe there are so many AC_OUTPUT-related bugs.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_OUTPUT([tests/Makefile tests/defs])
+END
+
+mkdir tests
+: > tests/defs.in
+: > tests/Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep tests/defs.in tests/Makefile.in && Exit 1
+Exit 0
diff --git a/t/output5.sh b/t/output5.sh
new file mode 100755 (executable)
index 0000000..8bf9403
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake complains when there is no Makefile specified.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([foo], [bar], [baz])
+AM_INIT_AUTOMAKE
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'AC_CONFIG_FILES(.Makefile.)' stderr
diff --git a/t/output6.sh b/t/output6.sh
new file mode 100755 (executable)
index 0000000..b55f5e3
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for support for colon-separated input files in AC_CONFIG_FILES.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([foo:a.in:b.in:c.in:d.in])
+AC_OUTPUT
+END
+
+cat >a.in <<'EOF'
+a = A
+b = A
+c = A
+d = A
+EOF
+
+cat >b.in <<'EOF'
+b = B
+c = B
+d = B
+EOF
+
+cat >c.am <<'EOF'
+c = C
+d = C
+
+.PHONY: test1 test2
+test1:
+       test $(a)$(b)$(c)$(d) = ABCD
+test2:
+       test $(a)$(b)$(c)$(d) = GFCD
+EOF
+
+echo 'd = D' > d.in
+
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE -f foo test1
+
+$sleep
+cat >b.in <<'EOF'
+a = G
+b = F
+c = F
+d = F
+EOF
+
+using_gmake || $MAKE -f foo
+$MAKE -f foo test2
+
+:
diff --git a/t/output7.sh b/t/output7.sh
new file mode 100755 (executable)
index 0000000..0f4725f
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for support for colon separated input files in AC_CONFIG_FILES,
+# with sources in sub directories.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([
+  Makefile:mk/toplevel.in
+  sub/Makefile:mk/sub.in
+  mk/Makefile
+])
+AC_OUTPUT
+END
+
+mkdir mk sub
+cat >mk/Makefile.am <<'EOF'
+all-local:
+       @echo in--mk
+EOF
+
+cat >mk/sub.am <<'EOF'
+EXTRA_DIST = foo
+all-local:
+       @echo in--sub
+EOF
+
+cat >mk/toplevel.am <<'EOF'
+all-local:
+       @echo at--toplevel
+SUBDIRS = mk sub
+EOF
+
+# We have to distribute something in foo, because some versions
+# of tar do not archive empty directories when passed the 'o'
+# flags.  (This was fixed in GNU tar 1.12, but older
+# versions are still used: NetBSD 1.6.1 ships with tar 1.11.2).
+#
+# If sub/ is missing from the archive, config.status will fail
+# to compute $ac_abs_srcdir during a VPATH build: config.status
+# is able to create sub/ in the build tree, but it assumes the
+# directory already exists in the source tree.
+echo bar > sub/foo
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE >output
+cat output
+grep in--mk output
+grep in--sub output
+grep at--toplevel output
+
+$MAKE distcheck
diff --git a/t/output8.sh b/t/output8.sh
new file mode 100755 (executable)
index 0000000..1339c67
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check AC_CONFIG_FILES support for files starting with '../'.
+# Report from Bruno Haible.
+
+. ./defs || Exit 1
+
+mkdir testdir
+cd testdir
+
+mv ../configure.ac .
+cat >> configure.ac << END
+AC_CONFIG_FILES([a/foo.sh:../testdir/a/foo.sh.in])
+AC_CONFIG_FILES([a/Makefile])
+AC_OUTPUT
+END
+
+mkdir a
+
+echo SUBDIRS = a >Makefile.am
+: >a/Makefile.am
+
+echo foo >a/foo.sh.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+$MAKE
+test "`cat a/foo.sh`" = foo
+
+$sleep
+echo 'bar' >a/foo.sh.in
+
+cd a
+$MAKE foo.sh
+test "`cat foo.sh`" = bar
diff --git a/t/output9.sh b/t/output9.sh
new file mode 100755 (executable)
index 0000000..f075910
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure an AC_CONFIG_FILES can have an AC_CONFIG_FILES output as input.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << END
+AC_CONFIG_FILES([a/mid.in:a/input.in.in])
+AC_CONFIG_FILES([b/out:a/mid.in])
+AC_CONFIG_FILES([a/Makefile b/Makefile])
+AC_OUTPUT
+END
+
+mkdir a
+mkdir b
+
+
+cat >Makefile.am <<\EOF
+SUBDIRS = a b
+dist-hook:
+       test -f $(distdir)/a/input.in.in
+       test ! -f $(distdir)/a/mid.in
+       if test ! -f check; then :; else : > ok; fi
+EOF
+
+: >a/Makefile.am
+: >b/Makefile.am
+
+echo foo >a/input.in.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+: > check
+$MAKE distcheck
+test -f ok
diff --git a/t/override-conditional-1.sh b/t/override-conditional-1.sh
new file mode 100755 (executable)
index 0000000..1f66d3f
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for conditionally-defined overrides.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND], [test x"$cond" = x"yes"])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+foobar:
+       : > $@
+if COND
+ps: foobar
+       :
+endif
+END
+
+$ACLOCAL
+$AUTOMAKE -Wno-override
+
+# "ps:" should be output in two conditions
+test `grep '[^-]ps:' Makefile.in | wc -l` = 2
+grep '@COND_TRUE@ps: *foobar' Makefile.in
+grep '@COND_FALSE@ps: *ps-am' Makefile.in
+
+$AUTOCONF
+
+./configure cond=no
+$MAKE ps
+test ! -r foobar
+
+./configure cond=yes
+$MAKE ps
+test -f foobar
+
+:
diff --git a/t/override-conditional-2.sh b/t/override-conditional-2.sh
new file mode 100755 (executable)
index 0000000..4f06888
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that conditional overrides are diagnosed.
+# This test is still xfailing; see the FIXME in Automake::Rule::define.
+# Once that is fixed, the test should succeed.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND], [:])
+END
+
+cat > Makefile.am << 'END'
+if COND
+all:
+       :
+endif
+END
+
+$ACLOCAL
+
+AUTOMAKE_fails
+grep ':.*overrides.*all' stderr
+
+:
diff --git a/t/override-html.sh b/t/override-html.sh
new file mode 100755 (executable)
index 0000000..6438c99
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that overriding 'html' target causes only one "html:" rule to
+# be output.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+html:
+       :
+END
+
+$ACLOCAL
+$AUTOMAKE -Wno-override
+
+# Overriding 'html' should cause only one "html:" rule to be output.
+test `grep '^html:' Makefile.in | wc -l` = 1
+
+:
diff --git a/t/override-suggest-local.sh b/t/override-suggest-local.sh
new file mode 100755 (executable)
index 0000000..286c888
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure automake -Woverride suggests using TARGET-local instead
+# of TARGET when possible.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+install:
+       :
+installcheck:
+       :
+html:
+       :
+clean-am:
+       :
+END
+
+$ACLOCAL
+$AUTOMAKE -Wno-override
+AUTOMAKE_fails
+# There is no such thing as 'install-local'.
+grep ':.*install-local' stderr && Exit 1
+grep ':.*installcheck-local' stderr
+grep ':.*html-local' stderr
+# Make sure overriding *-am targets suggest using *-local, not *-am.
+grep ':.*clean-am-local' stderr && Exit 1
+grep ':.*clean-local' stderr
+
+:
diff --git a/t/parallel-am.sh b/t/parallel-am.sh
new file mode 100755 (executable)
index 0000000..db184b2
--- /dev/null
@@ -0,0 +1,103 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test parallel automake execution.
+
+# There are several hypotheses to be tested:  Independently of the number
+# of threads used by automake,
+# 0) the generated Makefile.in files must be identical without --add-missing,
+# 1) the Makefile.in that distributes auxiliary files must be generated
+#    after all other ones, so all installed aux files are caught,
+# 2) normal automake output should have identical content and be ordered
+#    in the same way, when --add-missing is not passed, or when
+#    --add-missing is passed but there are no concurrent file requirements
+#    (i.e., two Makefile.am files call for the same needed aux file)
+# 3) normal automake output should be identical and ordered in the same way
+#    with --add-missing, even with concurrent file requirements, and the
+#    installation of aux files should be race-free,
+# 4) warning and normal error output should be identical, in that duplicate
+#    warnings should be omitted in the same way as without threads,
+# 5) fatal error and debug messages could be identical.  This is not
+#    intended, though.
+#
+# This test checks (0), (1), and (2).  See sister tests for further coverage.
+
+required=perl-threads
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([parallel-am], [1.0])
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AM_PATH_LISPDIR
+AM_PATH_PYTHON
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS =
+END
+
+list='1 2 3 4 5 6 7 8 9'
+for i in $list; do
+  echo "AC_CONFIG_FILES([sub$i/Makefile])" >> configure.ac
+  echo "SUBDIRS += sub$i" >> Makefile.am
+  mkdir sub$i
+  echo > sub$i/Makefile.am
+done
+# Use an include chain to cause a nontrivial location object to be
+# serialized through a thread queue.
+echo 'include foo.am' >> sub7/Makefile.am
+echo 'include bar.am' > sub7/foo.am
+echo 'python_PYTHON = foo.py' > sub7/bar.am
+echo 'lisp_LISP = foo.el' >> sub8/Makefile.am
+echo 'bin_PROGRAMS = p' >> sub9/Makefile.am
+
+rm -f install-sh missing depcomp
+mkdir build-aux
+
+$ACLOCAL
+
+# This test may have to be run several times in order to expose the
+# race that, when the last Makefile.in (the toplevel one) is created
+# before the other ones have finished, not all auxiliary files may
+# be installed yet, thus some may not be distributed.
+#
+# Further, automake output should be stable.
+
+# Generate expected output using the non-threaded code.
+unset AUTOMAKE_JOBS || :
+AUTOMAKE_run --add-missing
+mv stderr expected
+Makefile_ins=`find . -name Makefile.in`
+for file in $Makefile_ins; do
+  mv $file $file.exp
+done
+
+AUTOMAKE_JOBS=5
+export AUTOMAKE_JOBS
+
+for run in 1 2 3 4 5 6 7; do
+  rm -f build-aux/* sub*/Makefile.in
+  AUTOMAKE_run --add-missing
+  diff stderr expected
+  for file in $Makefile_ins; do
+    diff $file $file.exp
+  done
+done
+
+:
diff --git a/t/parallel-am2.sh b/t/parallel-am2.sh
new file mode 100755 (executable)
index 0000000..a8ee1b9
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test parallel automake execution.
+
+# This tests:
+# 4) warning and normal error output should be identical, in that duplicate
+#    warnings should be omitted in the same way as without threads.
+
+required=perl-threads
+. ./defs || Exit 1
+
+mkdir sub
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = main
+main_SOURCES = sub/main.c
+SUBDIRS =
+END
+
+list='1 2 3'
+for i in $list; do
+  echo "AC_CONFIG_FILES([sub$i/Makefile])" >> configure.ac
+  echo "SUBDIRS += sub$i" >> Makefile.am
+  mkdir sub$i sub$i/sub
+  unindent > sub$i/Makefile.am << END
+    AUTOMAKE_OPTIONS = subdir-objects
+    bin_PROGRAMS = sub$i
+    sub${i}_SOURCES = sub/main$i.c
+END
+done
+
+mkdir build-aux
+
+$ACLOCAL
+
+# Independently of the number of worker threads, automake output
+# should be
+# - stable (multiple runs should produce the same output),
+# - properly uniquified,
+# - complete (output from worker threads should not be lost).
+#
+# The parts output by --add-missing are unstable not only wrt. order
+# but also wrt. content: any of the Makefile.am files may cause the
+# depcomp script to be installed (or several of them).
+# Thus we install the auxiliary files in a prior step.
+
+# Generate expected output using non-threaded code.
+unset AUTOMAKE_JOBS || :
+rm -f install-sh missing depcomp
+AUTOMAKE_fails --add-missing
+mv stderr expected
+
+AUTOMAKE_JOBS=5
+export AUTOMAKE_JOBS
+
+for i in 1 2 3 4 5 6 7 8; do
+  rm -f install-sh missing depcomp
+  AUTOMAKE_fails --add-missing
+  diff expected stderr
+done
+
+:
diff --git a/t/parallel-am3.sh b/t/parallel-am3.sh
new file mode 100755 (executable)
index 0000000..d630290
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test parallel automake execution.
+
+# This tests:
+# 3) normal automake output should be identical and ordered in the same way
+#    with --add-missing, even with concurrent file requirements, and the
+#    installation of aux files should be race-free.
+
+required=perl-threads
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([parallel-am], [1.0])
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AM_PATH_LISPDIR
+AM_PATH_PYTHON
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS =
+END
+
+list='1 2 3'
+for i in $list; do
+  echo "AC_CONFIG_FILES([sub$i/Makefile])" >> configure.ac
+  echo "SUBDIRS += sub$i" >> Makefile.am
+  mkdir sub$i
+  unindent > sub$i/Makefile.am <<END
+    python_PYTHON = foo$i.py
+    lisp_LISP = foo$i.el
+    bin_PROGRAMS = p$i
+END
+done
+
+rm -f install-sh missing depcomp
+mkdir build-aux
+
+$ACLOCAL
+
+# Generate expected output using the non-threaded code.
+unset AUTOMAKE_JOBS || :
+AUTOMAKE_run --add-missing
+mv stderr expected
+mv Makefile.in Makefile.in.exp
+
+AUTOMAKE_JOBS=3
+export AUTOMAKE_JOBS
+
+for run in 1 2 3 4 5 6 7; do
+  rm -f build-aux/* sub*/Makefile.in
+  AUTOMAKE_run --add-missing
+  diff stderr expected
+  diff Makefile.in Makefile.in.exp
+done
+
+:
diff --git a/t/parallel-tests-cmdline-override.sh b/t/parallel-tests-cmdline-override.sh
new file mode 100755 (executable)
index 0000000..5c48640
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that we can use indirections when overriding TESTS and
+# TEST_LOGS from the command line.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_EXTENSIONS = .test .t
+TEST_LOG_COMPILER = cat
+T_LOG_COMPILER = cat
+TESTS = bad.test
+var1 = b.test $(var2)
+var2 = c.test
+var3 = d.d
+var4 = e
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+rm -f config.log # Do not create false positives below.
+
+cat > exp-log <<'END'
+a.log
+b.log
+c.log
+d.log
+e.log
+test-suite.log
+END
+
+cat > exp-out <<'END'
+PASS: a.t
+PASS: b.test
+PASS: c.test
+PASS: d.t
+PASS: e.test
+END
+
+do_check ()
+{
+  env "$@" $MAKE -e check >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  grep '^PASS:' stdout | LC_ALL=C sort > got-out
+  cat got-out
+  ls . | grep '\.log$' | LC_ALL=C sort > got-log
+  cat got-log
+  st=0
+  diff exp-out got-out || st=1
+  diff exp-log got-log || st=1
+  return $st
+}
+
+tests='a.t $(var1) $(var3:.d=.t) $(var4:=.test)'
+test_logs='a.log $(var1:.test=.log) $(var3:.d=.log) $(var4:=.log)'
+
+touch a.t b.test c.test d.t e.test
+
+do_check TESTS="$tests"
+do_check TEST_LOGS="$test_logs"
+
+:
diff --git a/t/parallel-tests-console-output.sh b/t/parallel-tests-console-output.sh
new file mode 100755 (executable)
index 0000000..5a78efd
--- /dev/null
@@ -0,0 +1,103 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests: some checks on console output about testsuite
+# progress.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+XFAIL_TESTS = sub/xpass.test xfail.test error.test
+TESTS = $(XFAIL_TESTS) fail.test pass.test a/b/skip.test sub/error2.test
+pass.log: fail.log
+error.log: pass.log
+sub/xpass.log: error.log
+sub/error2.log: xfail.log
+a/b/skip.log: sub/error2.log
+END
+
+cat > exp <<'END'
+FAIL: fail.test
+PASS: pass.test
+ERROR: error.test
+XPASS: sub/xpass.test
+XFAIL: xfail.test
+ERROR: sub/error2.test
+SKIP: a/b/skip.test
+END
+
+mkdir sub a a/b
+
+cat > pass.test << 'END'
+#!/bin/sh
+exit 0
+END
+cp pass.test sub/xpass.test
+
+cat > fail.test << 'END'
+#!/bin/sh
+exit 1
+END
+
+cat > xfail.test << 'END'
+#!/bin/sh
+# The sleep should ensure expected execution order of tests
+# even when make is run in parallel mode.
+# Creative quoting below to plase maintainer-check.
+sleep '10'
+exit 1
+END
+
+cat > error.test << 'END'
+#!/bin/sh
+exit 99
+END
+cp error.test sub/error2.test
+
+cat > a/b/skip.test << 'END'
+#!/bin/sh
+exit 77
+END
+
+chmod a+x pass.test fail.test xfail.test sub/xpass.test \
+          a/b/skip.test error.test sub/error2.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+for vpath in : false; do
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+  $srcdir/configure
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  LC_ALL=C grep '^[A-Z][A-Z]*:' stdout > got
+  cat got
+  diff $srcdir/exp got
+  cd $srcdir
+done
+
+:
diff --git a/t/parallel-tests-driver-install.sh b/t/parallel-tests-driver-install.sh
new file mode 100755 (executable)
index 0000000..fcfa38d
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that auxiliary script 'test-driver' gets automatically installed
+# in the correct directory by 'parallel-tests' option.
+
+. ./defs || Exit 1
+
+: Try first with parallel-tests defined in AM_INIT_AUTOMAKE.
+
+mkdir am-init-automake
+cd am-init-automake
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([my_aux_dir])
+AM_INIT_AUTOMAKE([parallel-tests])
+AC_CONFIG_FILES([Makefile sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub my_aux_dir
+
+cat > Makefile.am <<END
+SUBDIRS = sub
+TESTS = foo.test
+END
+
+cat > sub/Makefile.am <<END
+TESTS = bar.test
+END
+
+$ACLOCAL
+$AUTOMAKE -a 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+
+ls -l . sub my_aux_dir # For debugging.
+test -f my_aux_dir/test-driver
+test ! -r test-driver
+test ! -r sub/test-driver
+
+grep '^configure\.ac:3:.*installing.*my_aux_dir/test-driver' stderr
+
+cd ..
+
+: Now try with parallel-tests defined in AUTOMAKE_OPTIONS.
+
+mkdir automake-options
+cd automake-options
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([dir/GNUmakefile])
+AC_OUTPUT
+END
+
+mkdir build-aux dir
+
+cat > dir/GNUmakefile.am <<END
+TESTS = foo.test
+AUTOMAKE_OPTIONS = parallel-tests
+TESTS += bar.test
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing --copy dir/GNUmakefile 2>stderr \
+  || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+
+ls -l . dir build-aux # For debugging.
+test -f build-aux/test-driver
+test ! -r test-driver
+test ! -r dir/test-driver
+
+grep '^dir/GNUmakefile\.am:2:.*installing.*build-aux/test-driver' stderr
+
+:
diff --git a/t/parallel-tests-dry-run-1.sh b/t/parallel-tests-dry-run-1.sh
new file mode 100755 (executable)
index 0000000..6fdcb98
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests interactions with "make -n".
+# See also sister test 'parallel-tests-dry-run-2.test'.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+TESTS = foo.test bar.test
+$(TESTS):
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+# Avoid confusion with test logs.
+rm -f config.log
+
+log_files='test-suite.log foo.log bar.log'
+
+all_exist ()
+{
+  st=0
+  for i in $*; do
+    test -f $i || { echo File $i not found; st=1; }
+  done
+  test $st -eq 0
+}
+
+none_exist ()
+{
+  st=0
+  for i in $*; do
+    if test -r $i || test -f $i; then
+      echo File $i found
+      st=1
+    fi
+  done
+  test $st -eq 0
+}
+
+for targ in check recheck $log_files; do
+  $MAKE -n "$targ"
+  none_exist $log_files
+done
+
+touch $log_files
+
+$MAKE -n mostlyclean
+all_exist $log_files
+$MAKE -n clean
+all_exist $log_files
+
+cat > foo.test <<'END'
+#! /bin/sh
+exit 0
+END
+
+cat > bar.test <<'END'
+#! /bin/sh
+exit 1
+END
+
+chmod a+x foo.test bar.test
+
+$MAKE check && Exit 1
+
+for targ in recheck clean mostlyclean distclean; do
+  $MAKE -n "$targ"
+  all_exist $log_files
+done
+
+:
diff --git a/t/parallel-tests-dry-run-2.sh b/t/parallel-tests-dry-run-2.sh
new file mode 100755 (executable)
index 0000000..20ccb5d
--- /dev/null
@@ -0,0 +1,112 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests interactions with "make -n".
+# See also sister test 'parallel-tests-dry-run-1.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TESTS = foo.test bar.test
+TEST_LOG_COMPILER = $(SHELL)
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+./configure
+
+make_n_ ()
+{
+  st=0
+  $MAKE -n "$@" >output 2>&1 || { cat output; ls -l; Exit 1; }
+  cat output
+  # Look out for possible errors from common tools used by recipes.
+  $EGREP -i ' (exist|permission|denied|no .*(such|file))' output && Exit 1
+  $EGREP '(mv|cp|rm|cat|grep|sed|awk): ' output && Exit 1
+  :
+}
+
+: > output
+
+files='foo.log bar.log foo.trs bar.trs'
+
+for target in check recheck test-suite.log; do
+  test ! -f foo.log
+  test ! -f foo.trs
+  test ! -f bar.log
+  test ! -f bar.trs
+  test ! -f test-suite.log
+done
+
+# Creative quoting below to please maintainer-check.
+echo exit '0' > foo.test
+echo exit '1' > bar.test
+
+$MAKE check && Exit 1
+
+chmod a-w .
+
+make_n_ clean
+test -f foo.log
+test -f foo.trs
+test -f foo.log
+test -f bar.trs
+
+# Creative quoting below to please maintainer-check.
+cat > foo.test <<END
+echo this is bad
+exit 1
+END
+echo exit '0' > bar.test
+
+for target in check recheck test-suite.log; do
+  make_n_ $target
+  grep '^:test-result: *FAIL' bar.trs
+  grep 'this is bad' foo.log test-suite.log && Exit 1
+  : For shells with busted 'set -e'.
+done
+
+chmod a-rw $files
+if test -r foo.log; then
+  : You can still read unreadable files!  Skip these checks.
+else
+  for target in check recheck test-suite.log; do
+    make_n_ $target
+    for f in $files; do
+      test -f $f && test ! -r $f || Exit 1
+    done
+  done
+fi
+chmod u+r $files
+
+chmod u+w .
+rm -f foo.log bar.trs
+chmod a-w .
+for target in check recheck test-suite.log $files; do
+  make_n_ $target
+  test ! -f foo.log
+  test -f foo.trs
+  test ! -f bar.trs
+  test -f bar.log
+done
+
+:
diff --git a/t/parallel-tests-empty-testlogs.sh b/t/parallel-tests-empty-testlogs.sh
new file mode 100755 (executable)
index 0000000..619eae5
--- /dev/null
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - empty TESTS
+# - empty TEST_LOGS
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub1 sub2
+END
+
+mkdir sub1 sub2
+
+cat > sub1/Makefile.am << 'END'
+TESTS =
+END
+
+# When $(TESTS) is empty, NetBSD 5.1 make ends up defining $(TESTS_LOGS)
+# to ".log" rather than to the empty string (as would be expected).
+# But our recipes are smart enough to work around such a botched-up
+# substitution, so let's not bother too much about it.
+if using_gmake; then
+  unindent >> sub1/Makefile.am << 'END'
+    check-local:
+       echo $(TEST_LOGS) | grep . && exit 1; exit 0
+END
+fi
+
+cat > sub2/Makefile.am << 'END'
+TESTS = foo.test
+END
+
+cat > sub2/foo.test <<'END'
+#! /bin/sh
+exit 0
+END
+chmod a+x sub2/foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+no_test_has_run ()
+{
+  ls -1 *.log | grep -v '^test-suite\.log$' | grep . && Exit 1
+  grep '^# TOTAL: *0$' test-suite.log
+  :
+}
+
+for vpath in : false; do
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+  $srcdir/configure
+  cd sub1
+  VERBOSE=yes $MAKE check
+  no_test_has_run
+  cd ../sub2
+  VERBOSE=yes TESTS='' $MAKE -e check
+  no_test_has_run
+  VERBOSE=yes TEST_LOGS='' $MAKE -e check
+  no_test_has_run
+  cd ..
+  $MAKE check
+  cat sub2/foo.log
+  $MAKE distclean
+  cd $srcdir
+done
+
+:
diff --git a/t/parallel-tests-exeext.sh b/t/parallel-tests-exeext.sh
new file mode 100755 (executable)
index 0000000..5a3af46
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests:
+#   - check2.am and interaction with $(EXEEXT)
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+dnl We need to fool the init.m4 internals a little.
+AC_DEFUN([_AM_FOO],
+  [m4_provide([_AM_COMPILER_EXEEXT])
+  AC_SUBST([CC], [false])
+  AC_SUBST([EXEEXT])])
+_AM_FOO
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = x y a.test b.test
+LOG_COMPILER = true
+TEST_LOG_COMPILER = true
+## We also need to fool the automake internals a little.
+EXTRA_PROGRAMS = y
+y_SOURCES =
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+$EGREP 'EXEEXT|\.log|\.test' Makefile.in # For debugging.
+
+./configure EXEEXT=
+touch x y a.test b.test
+$MAKE check
+
+$MAKE distclean
+rm -f x y a.test b.test *.log *.trs
+
+./configure EXEEXT=.bin
+touch x y.bin a.test b.test.bin
+$MAKE check
+ls -l # For debugging.
+test -f y.log
+test ! -r y.bin.log
+test -f b.log
+test ! -r b.test.log
+
+$EGREP '^y\.log: y(\$\(EXEEXT\)|\.bin)' Makefile
+$EGREP '^\.test(\$\(EXEEXT\)|\.bin)\.log:' Makefile
+
+:
diff --git a/t/parallel-tests-exit-statuses.sh b/t/parallel-tests-exit-statuses.sh
new file mode 100755 (executable)
index 0000000..90583d5
--- /dev/null
@@ -0,0 +1,101 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features: normal and special exit statuses
+# in the test scripts.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+# $failure_statuses should be defined to the list of all integers between
+# 1 and 255 (inclusive), excluded 77 and 99.
+failure_statuses=`seq_ 1 255 | $EGREP -v '^(77|99)$' | tr "$nl" ' '`
+# For debugging.
+echo "failure_statuses: $failure_statuses"
+# Sanity check.
+test `for st in $failure_statuses; do echo $st; done | wc -l` -eq 253 \
+  || fatal_ "initializing list of exit statuses for simple failures"
+
+cat > Makefile.am <<END
+LOG_COMPILER = ./do-exit
+fail_tests = $failure_statuses
+TESTS = 0 77 99 $failure_statuses
+\$(TESTS):
+END
+
+cat > do-exit <<'END'
+#!/bin/sh
+echo "$0: $1"
+case $1 in
+  [0-9]|[0-9][0-9]|[0-9][0-9][0-9]) st=$1;;
+  */[0-9]|*/[0-9][0-9]|*/[0-9][0-9][0-9]) st=`echo x"$1" | sed 's|.*/||'`;;
+  *) st=99;;
+esac
+exit $st
+END
+chmod a+x do-exit
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+{
+  echo PASS: 0
+  echo SKIP: 77
+  echo ERROR: 99
+  for st in $failure_statuses; do
+    echo "FAIL: $st"
+  done
+} | LC_ALL=C sort > exp-fail
+
+sed 's/^FAIL:/XFAIL:/' exp-fail | LC_ALL=C sort > exp-xfail-1
+sed '/^ERROR:/d' exp-xfail-1 > exp-xfail-2
+
+sort exp-fail
+sort exp-xfail-1
+sort exp-xfail-2
+
+./configure
+
+st=1
+$MAKE check >stdout && st=0
+cat stdout
+cat test-suite.log
+test $st -gt 0 || Exit 1
+LC_ALL=C grep '^[A-Z][A-Z]*:' stdout | LC_ALL=C sort > got-fail
+diff exp-fail got-fail
+
+st=1
+XFAIL_TESTS="$failure_statuses 99" $MAKE -e check >stdout && st=0
+cat stdout
+cat test-suite.log
+test $st -gt 0 || Exit 1
+LC_ALL=C grep '^[A-Z][A-Z]*:' stdout | LC_ALL=C sort > got-xfail-1
+diff exp-xfail-1 got-xfail-1
+
+st=0
+XFAIL_TESTS="$failure_statuses" TESTS="0 77 $failure_statuses" \
+  $MAKE -e check >stdout || st=$?
+cat stdout
+cat test-suite.log
+test $st -eq 0 || Exit 1
+LC_ALL=C grep '^[A-Z][A-Z]*:' stdout | LC_ALL=C sort > got-xfail-2
+diff exp-xfail-2 got-xfail-2
+
+:
diff --git a/t/parallel-tests-extra-programs.sh b/t/parallel-tests-extra-programs.sh
new file mode 100755 (executable)
index 0000000..c9d13da
--- /dev/null
@@ -0,0 +1,181 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Parallel test harness: check that $(TESTS) can lazily depend on
+# (or even be) $(EXTRA_PROGRAMS).
+
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+# Will be extended later.
+cat > Makefile.am << 'END'
+TEST_EXTENSIONS = .bin .test
+EXTRA_PROGRAMS =
+TESTS =
+END
+
+#
+# Now try various kinds of test dependencies ...
+#
+
+# 1. A program that is also a test, and whose source files
+#    already exist.
+
+cat >> Makefile.am <<'END'
+EXTRA_PROGRAMS += foo.bin
+TESTS += foo.bin
+foo_bin_SOURCES = foo.c
+END
+
+cat > foo.c <<'END'
+#include <stdio.h>
+int main (void)
+{
+  printf ("foofoofoo\n");
+  return 0;
+}
+END
+
+# 2. A program that is also a test, and whose source files
+#    are buildable by make.
+cat >> Makefile.am <<'END'
+EXTRA_PROGRAMS += bar.bin
+TESTS += bar.bin
+bar_bin_SOURCES = bar.c
+bar.c: foo.c
+       sed -e 's/foofoofoo/barbarbar/' foo.c > $@
+END
+
+# 3. A test script that already exists, whose execution depends
+#    on a program whose source files already exist and which is
+#    not itself a test.
+cat >> Makefile.am <<'END'
+EXTRA_PROGRAMS += y
+TESTS += baz.test
+baz.log: y$(EXEEXT)
+END
+
+cat > baz.test <<'END'
+#!/bin/sh
+$srcdir/y "$@" | sed 's/.*/&ep&ep&ep/'
+END
+chmod a+x baz.test
+
+cat > y.c <<'END'
+#include <stdio.h>
+int main (void)
+{
+  printf ("y\n");
+  return 0;
+}
+END
+
+# 4. A program that is also a test, but whose source files
+#    do not exit and are not buildable by make.
+
+cat >> Makefile.am <<'END'
+EXTRA_PROGRAMS += none.bin
+TESTS += none.bin
+none_bin_SOURCES = none.c
+END
+
+#
+# Setup done, go with the tests.
+#
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+# What we check now:
+#  1. even if we cannot build the 'none.bin' program, all the other
+#     test programs should be built, and all the other tests should
+#     be run;
+#  2. still, since we cannot create the 'none.log' file, the
+#    'test-suite.log' file shouldn't be created (as it depends
+#     on *all* the test logs).
+
+st=0
+$MAKE -k check >stdout 2>stderr || st=$?
+cat stdout
+cat stderr >&2
+ls -l
+if using_gmake; then
+  test $st -gt 0 || Exit 1
+else
+  # Don't trust exit status of "make -k" for non-GNU make.
+  $MAKE check && Exit 1
+  : For shells with busted 'set -e'.
+fi
+
+# Files that should have been created, with the expected content.
+cat bar.c
+grep foofoofoo foo.log
+grep barbarbar bar.log
+grep yepyepyep baz.log
+# Files that shouldn't have been created.
+test ! -f none.log
+test ! -f test-suite.log
+# Expected testsuite progress output.
+grep '^PASS: baz\.test$' stdout
+# Don't anchor the end of the next two patterns, to allow for non-empty
+# $(EXEEXT).
+grep '^PASS: foo\.bin' stdout
+grep '^PASS: bar\.bin' stdout
+# Expected error messages from make.  Some make implementations (e.g.,
+# FreeBSD make) seem to print the error on stdout instead, so check for
+# it there as well.
+$EGREP 'none\.(bin|o|c)' stderr stdout
+
+# What we check now:
+#  1. if we make the last EXTRA_PROGRAM buildable, the failed tests
+#     pass;
+#  2. on a lazy re-run, the passed tests are not re-run, and
+#  3. their log files are not updated or touched.
+
+: > stamp
+$sleep
+
+echo 'int main (void) { return 0; }' > none.c
+
+st=0
+RECHECK_LOGS= $MAKE -e check >stdout || st=$?
+cat stdout
+ls -l
+test $st -eq 0 || Exit 1
+
+# For debugging.
+stat stamp foo.log bar.log baz.log || :
+
+# Files that shouldn't have been updated or otherwise touched.
+is_newest stamp foo.log bar.log baz.log
+# Files that should have been created now.
+test -f none.log
+test -f test-suite.log
+# Tests that shouldn't have been re-run.
+$EGREP '(foo|bar)\.bin|baz\.test$' stdout && Exit 1
+# Tests that should have been run.  Again, we don't anchor the end
+# of the next pattern, to allow for non-empty $(EXEEXT).
+grep '^PASS: none\.bin' stdout
+
+:
diff --git a/t/parallel-tests-fd-redirect-exeext.sh b/t/parallel-tests-fd-redirect-exeext.sh
new file mode 100755 (executable)
index 0000000..5683658
--- /dev/null
@@ -0,0 +1,117 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests support: redirection of file descriptors with
+# AM_TESTS_FD_REDIRECT, for tests which are binary executables
+# We use some tricks to ensure that all code paths in 'lib/am/check2.am'
+# are covered, even on platforms where $(EXEEXT) would be naturally empty.
+# See also the more generic test 'check-fd-redirect.test', and
+# sister test 'parallel-tests-fd-redirect.test'.
+
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+# Calls like "write(9, ...)" are unlikely to work for MinGW-compiled
+# programs.  We must skip this test if this is the case.
+am__ok=no
+AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM([[#include <unistd.h>]],
+                     [[write (9, "foobar\n", 7); return 0;]])],
+    [AM_RUN_LOG([./conftest$EXEEXT 9>&1]) \
+dnl Leading ":;" required to avoid having two nested subshells starting
+dnl with '((' in the generated configure: that is unportable and could
+dnl confuse some shells (e.g., NetBSD 5.1 /bin/ksh) into thinking we are
+dnl trying to perform an arithmetic operation.
+       && AM_RUN_LOG([:; (./conftest$EXEEXT 9>&1) | grep "^foobar"]) \
+       && am__ok=yes])
+test $am__ok = yes || AS_EXIT([63])
+AM_CONDITIONAL([real_EXEEXT], [test -n "$EXEEXT"])
+test -n "$EXEEXT" || EXEEXT=.bin
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_TESTS_FD_REDIRECT = 9>&1
+TESTS = $(check_PROGRAMS)
+check_PROGRAMS = baz qux.test
+qux_test_SOURCES = zardoz.c
+
+## Sanity check.
+if !real_EXEEXT
+check-local:
+       test -f baz.bin
+       test -f qux.test.bin
+endif
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cat > baz.c <<'END'
+#include <stdio.h>
+#include <unistd.h>
+int main (void)
+{
+  ssize_t res = write (9, " bazbazbaz\n", 11);
+  if (res < 0)
+    perror("write failed");
+  return res != 11;
+}
+END
+
+cat > zardoz.c <<'END'
+#include <stdio.h>
+#include <unistd.h>
+int main (void)
+{
+  ssize_t res = write (9, " quxquxqux\n", 11);
+  if (res < 0)
+    perror("write failed");
+  return res != 11;
+}
+END
+
+st=0; ./configure || st=$?
+cat config.log # For debugging, as we do tricky checks in configure.
+if test $st -eq 63; then
+  skip_ "fd redirect in compiled program unsupported"
+elif test $st -eq 0; then
+  : Continue.
+else
+  fatal_ "unexpected error in ./configure"
+fi
+
+# Sanity checks.
+st=0
+grep '^baz\.log:.*baz\$(EXEEXT)' Makefile || st=1
+grep '^\.test\$(EXEEXT)\.log:' Makefile || st=1
+grep '^qux\.log:' Makefile && st=1
+test $st -eq 0 || fatal_ "doesn't cover expected code paths"
+
+st=0
+$MAKE check >stdout || st=1
+cat stdout
+cat baz.log
+cat qux.log
+test $st -eq 0
+grep "^ bazbazbaz$" stdout
+grep "^ quxquxqux$" stdout
+$EGREP '(bazbazbaz|quxquxqux)' *.log && Exit 1
+
+:
diff --git a/t/parallel-tests-fd-redirect.sh b/t/parallel-tests-fd-redirect.sh
new file mode 100755 (executable)
index 0000000..d2dba94
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests support: redirection of file descriptors with
+# AM_TESTS_FD_REDIRECT, even when using tests without suffix.
+# The sister 'parallel-tests-fd-redirect-exeext.test' do a similar
+# check for tests that are binary executables.
+# See also the more generic test 'check-fd-redirect.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_TESTS_FD_REDIRECT = 9>&1
+TEST_EXTENSIONS = .test .sh
+TESTS = foo.sh bar
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cat > foo.sh <<'END'
+#!/bin/sh
+echo " foofoofoo" >&9
+END
+chmod a+x foo.sh
+
+cat > bar <<'END'
+#!/bin/sh
+echo " barbarbar" >&9
+END
+
+chmod a+x foo.sh bar
+
+./configure
+
+# Sanity checks.
+st=0
+grep '^bar\.log:.*bar' Makefile || st=1
+grep '^foo\.log:' Makefile && st=1
+test $st -eq 0 || fatal_ "doesn't cover expected code paths"
+
+st=0; $MAKE check >stdout || st=1
+cat stdout
+cat foo.log
+cat bar.log
+test $st -eq 0
+grep "^ foofoofoo$" stdout
+grep "^ barbarbar$" stdout
+$EGREP '(foofoofoo|barbarbar)' *.log && Exit 1
+
+:
diff --git a/t/parallel-tests-fork-bomb.sh b/t/parallel-tests-fork-bomb.sh
new file mode 100755 (executable)
index 0000000..108d6ea
--- /dev/null
@@ -0,0 +1,148 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+#  - If $(TEST_SUITE_LOG) is in $(TEST_LOGS), we get a diagnosed
+#    error, not a make hang or a system freeze.
+
+. ./defs || Exit 1
+
+# We don't want localized error messages from make, since we'll have
+# to grep them.  See automake bug#11452.
+LANG=C LANGUAGE=C LC_ALL=C
+export LANG LANGUAGE LC_ALL
+
+# The tricky part of this test is to avoid that make hangs or even
+# freezes the system in case infinite recursion (which is the bug we
+# are testing against) is encountered.  The following hacky makefile
+# should minimize the probability of that happening.
+cat > Makefile.am << 'END'
+TEST_LOG_COMPILER = true
+TESTS =
+
+errmsg = ::OOPS:: Recursion too deep
+
+if IS_GNU_MAKE
+
+ is_too_deep := $(shell test $(MAKELEVEL) -lt 10 && echo no)
+
+## Indenteation here required to avoid confusing Automake.
+ ifeq ($(is_too_deep),no)
+ else
+ $(error $(errmsg), $(MAKELEVEL) levels)
+ endif
+
+else !IS_GNU_MAKE
+
+# We use mkdir to detect the level of recursion, since it is easy
+# to use and assured to be portably atomical.  Also use an higher
+# number than with GNU make above, since the level used here can
+# be incremented by tow or more per recursion.
+recursion-not-too-deep:
+       @ok=no; \
+       for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 \
+                18 19 20 21 22 23 24 25 26 27 28 29; \
+       do \
+         echo " mkdir rec-$$i.d"; \
+         if mkdir rec-$$i.d; then \
+           ok=yes; break; \
+         else :; fi; \
+       done; \
+       test $$ok = yes || { echo '$(errmsg)' >&2; exit 1; }
+.PHONY: recursion-not-too-deep
+clean-local:
+       rmdir rec-[0-9].d
+
+targets = all check recheck $(TESTS) $(TEST_LOGS) $(TEST_SUITE_LOG)
+$(targets): recursion-not-too-deep
+
+# For BSD make.
+.BEGIN: recursion-not-too-deep
+
+endif !IS_GNU_MAKE
+END
+
+if using_gmake; then
+  cond=:
+else
+  cond=false
+fi
+
+cat >> configure.ac << END
+AM_CONDITIONAL([IS_GNU_MAKE], [$cond])
+AC_OUTPUT
+END
+
+# Another helpful idiom to avoid hanging on capable systems.  The subshell
+# is needed since 'ulimit' might be a special shell builtin.
+if (ulimit -t 8); then ulimit -t 8; fi
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a -Wno-portability
+
+./configure
+
+do_check ()
+{
+  st=0
+  log=$1; shift
+  env "$@" $MAKE -e check >output 2>&1 || st=$?
+  cat output
+  $FGREP '::OOPS::' output && Exit 1 # Possible infinite recursion.
+  # Check that at least we don't create a botched global log file.
+  test ! -f "$log"
+  if using_gmake; then
+    grep "[Cc]ircular.*dependency" output | $FGREP "$log"
+    test $st -gt 0
+  else
+    # Look for possible error messages about circular dependencies from
+    # either make or our own recipes.  At least one such a message must
+    # be present.  OTOH, some make implementations (e.g., NetBSD's), while
+    # smartly detecting the circular dependency early and diagnosing it,
+    # still exit with a successful exit status (yikes!).  So don't check
+    # the exit status of non-GNU make, to avoid spurious failures.
+    # this case.
+    err_seen=no
+    for err_rx in \
+      'circular.* depend' \
+      'depend.* circular' \
+      'graph cycle' \
+      'infinite (loop|recursion)' \
+      'depend.* on itself' \
+    ; do
+      $EGREP -i "$err_rx" output | $FGREP "$log" || continue
+      err_seen=yes
+      break
+    done
+    test $err_seen = yes || Exit 1
+  fi
+}
+
+: > test-suite.test
+do_check test-suite.log TESTS=test-suite.test
+rm -f *.log *.test
+
+: > 0.test
+: > 1.test
+: > 2.test
+: > 3.test
+: > foobar.test
+do_check foobar.log TEST_LOGS='0.log 1.log foobar.log 2.log 3.log' \
+                    TEST_SUITE_LOG=foobar.log
+rm -f *.log *.test
+
+:
diff --git a/t/parallel-tests-harderror.sh b/t/parallel-tests-harderror.sh
new file mode 100755 (executable)
index 0000000..fc7a3c3
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features: DISABLE_HARD_ERRORS
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat > Makefile.am << 'END'
+SUBDIRS = . sub
+TESTS = foo.test
+XFAIL_TESTS = foo.test
+EXTRA_DIST = $(TESTS)
+END
+
+cat > sub/Makefile.am << 'END'
+TESTS = bar.test
+XFAIL_TESTS = $(TESTS)
+EXTRA_DIST = $(TESTS)
+END
+
+cat > foo.test <<'END'
+#! /bin/sh
+exit 99
+END
+chmod a+x foo.test
+cp foo.test sub/bar.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+# DISABLE_HARD_ERRORS is not defined as a make variable, so that it
+# should be possible to define either from the environment or from
+# command-line, also when recursive make invocations are involved,
+# and also without using the '-e' make flag; this should work also
+# for non-GNU make. Moreover, it shouldn't be necessary to define
+# DISABLE_HARD_ERRORS to "yes" to really disable hard errors: any
+# non-empty value should do.
+$MAKE check DISABLE_HARD_ERRORS=yes
+DISABLE_HARD_ERRORS=x $MAKE check
+
+# But an empty values for DISABLE_HARD_ERRORS means that hard errors
+# are not to be counted like normal failures.
+
+$MAKE check DISABLE_HARD_ERRORS='' && Exit 1
+cat test-suite.log
+grep '^ERROR: foo$' test-suite.log
+
+cd sub
+# The '-e' is wanted here.
+DISABLE_HARD_ERRORS='' $MAKE -e check && Exit 1
+cat test-suite.log
+grep '^ERROR: bar$' test-suite.log
+cd ..
+
+# Check the distributions.
+$MAKE DISABLE_HARD_ERRORS=y distcheck
+
+# Finally, DISABLE_HARD_ERRORS should work also when the developer
+# sets it directly in Makefile.am or Makefile.  And its effects
+# should remain local to that specific Makefile, obviously.
+
+echo 'DISABLE_HARD_ERRORS = yes' >> Makefile.am
+$AUTOMAKE Makefile
+./config.status Makefile
+VERBOSE=yes $MAKE check && Exit 1
+grep '^FAIL' test-suite.log && Exit 1
+grep '^ERROR: bar$' sub/test-suite.log
+
+echo 'DISABLE_HARD_ERRORS = zardoz' >> sub/Makefile
+VERBOSE=yes $MAKE check
+
+:
diff --git a/t/parallel-tests-interrupt.tap b/t/parallel-tests-interrupt.tap
new file mode 100755 (executable)
index 0000000..afc1956
--- /dev/null
@@ -0,0 +1,116 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the parallel-tests driver removed incomplete log files
+# when interrupt upon some signal.  This test is definitely too hacky,
+# but we couldn't find a better way to deal with inter-processes
+# signals and the whole process-synchronization mess.
+
+. ./defs || Exit 1
+
+plan_ 16
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test
+## Provide more debugging info.
+TEST_LOG_COMPILER = $(SHELL) -x
+## Required by foo.test; see below.
+AM_TESTS_FD_REDIRECT = 9>&1
+END
+
+# This is hacky and ugly, but has the great advantage of avoiding us a lot
+# of pain with background processes and related synchronization issues.
+
+cat - "$am_scriptdir"/test-driver > test-driver <<'END'
+#!/bin/sh
+echo $$ > pid
+END
+
+cat > foo.test << 'END'
+#!/bin/sh -e
+
+# We expect the test driver to be terminated by a signal, and so
+# to exit with non-zero status, thus causing "make check" to fail.
+# Exiting with status 0 from this test script is thus a good way to
+# make unexpected behaviours more evident, since this will likely
+# cause and unexpected success in "make check".
+trap 'exit 0' 0;
+stop_test () { exit 0; }
+
+# We need the "foo is starting to run" string flushed to standard output
+# ASAP, because we are soon going to grep for that string in the log file
+# where the test driver is redirecting this script's stdout.  The safest
+# way force this flushing portably is to rely on perl I/O capabilities.
+$PERL -e 'BEGIN { $| = 1 }; print "foo is starting to run\n"' || stop_test
+
+ls -l >&9 || stop_test
+
+bailout ()
+{
+  # Print this to the original stdout (saved in the fd 9), so that the
+  # emitted "Bail out!" directive will be interpreted by the test driver
+  # running the Automake testsuite.
+  echo "Bail out! $*" >&9
+  stop_test
+}
+
+test $sig -gt 0 || bailout "\$sig not exported to test script"
+
+res=ok; cat foo.log >&9 || res="not ok"
+echo "$res - logfile created and readable [SIG $sig]" >&9
+
+res=ok; grep '^foo is starting to run$' foo.log >&9 || res='not ok'
+echo "$res - logfile contains output from test script [SIG $sig]" >&9
+
+cat pid >&9 || bailout "cannot get PID of test driver"
+kill -$sig `cat pid` || bailout "cannot send signal $sig to test driver"
+
+stop_test
+END
+chmod a+x foo.test
+
+$ACLOCAL  || fatal_ "aclocal failed"
+$AUTOCONF || fatal_ "autoconf failed"
+$AUTOMAKE || fatal_ "automake failed"
+
+./configure || fatal_ "./configure failed"
+
+# The only signals that can be trapped portable are 1 "SIGHUP",
+# 2 "SIGINT", 13 "SIGPIPE" and 15 "SIGTERM".
+trapped_signals='1 2 13 15'
+
+for sig in $trapped_signals; do
+  if is_blocked_signal $sig; then
+    for i in 1 2 3 4; do echo "ok # SKIP signal $sig is blocked"; done
+    continue
+  fi
+  rm -f pid fail *.log
+  r=ok; env PERL="$PERL" sig="$sig" $MAKE check && r='not ok'
+  echo "$r - signal $sig to test driver causes \"make check\" to fail"
+  ls -l
+  # These files shouldn't exist, but in case they do, their content might
+  # provide helpful information about the causes of the failure(s).
+  cat foo.log || :
+  cat test-suite.log || :
+  r=ok; ls | $EGREP 'foo.*\.(log|tmp)' && r='not ok'
+  echo "$r - test driver clean up log and tmp files after signal $sig"
+done
+
+:
diff --git a/t/parallel-tests-log-compiler-1.sh b/t/parallel-tests-log-compiler-1.sh
new file mode 100755 (executable)
index 0000000..1f16d9f
--- /dev/null
@@ -0,0 +1,125 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - per-extension "test runners" a.k.a. "log compilers" (xxx_LOG_COMPILER
+#   and xxx_LOG_FLAGS), also with AC_SUBST'd stuff.
+# See also related test 'parallel-tests-log-compiler-2.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([acsubst_compiler], [t-compiler])
+AC_CONFIG_LINKS([chk-compiler:chk-compiler])
+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 baz bla.t bli.suff sub/test
+
+TEST_EXTENSIONS = .chk .test .t
+
+CHK_LOG_COMPILER = ./chk-compiler
+TEST_LOG_COMPILER = $(SHELL) $(srcdir)/test-compiler
+T_LOG_COMPILER = @acsubst_compiler@
+LOG_COMPILER = @SHELL@ -x $(srcdir)/noext-compiler
+
+CHK_LOG_FLAGS = --chk
+
+AM_TEST_LOG_FLAGS = --am-test
+
+T_LOG_FLAGS = --t
+AM_T_LOG_FLAGS = --am-t
+
+AM_LOG_FLAGS = -a
+LOG_FLAGS = -b
+
+# 't-compiler' is deliberately not distributed; it should be available
+# in PATH also from "make distcheck".
+EXTRA_DIST = $(TESTS) chk-compiler test-compiler noext-compiler
+END
+
+mkdir sub
+
+cat > chk-compiler <<'END'
+#! /bin/sh
+test x"$1" = x"--chk" || {
+  echo "$0: invalid command line: $*" >&2
+  exit 1
+}
+shift
+exec "$@"
+exit 127
+END
+sed 's/--chk/--am-test/' chk-compiler > test-compiler
+
+mkdir bin
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH
+
+cat > bin/t-compiler <<'END'
+#! /bin/sh
+if test x"$1,$2" != x"--am-t,--t"; then
+  echo "$0: invalid command line: $*" >&2
+  exit 1
+fi
+shift; shift
+exec "$@"
+exit 127
+END
+sed 's/--am-t,--t/-a,-b/' bin/t-compiler > noext-compiler
+
+chmod a+x chk-compiler chk-compiler test-compiler bin/t-compiler noext-compiler
+
+cat >foo.chk << 'END'
+#! /bin/sh
+exit 0
+END
+chmod a+x foo.chk
+cp foo.chk bar.test
+cp foo.chk baz
+cp foo.chk bla.t
+cp foo.chk bli.suff
+cp foo.chk sub/test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check || { cat test-suite.log; Exit 1; }
+ls -l . sub
+cat test-suite.log
+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
+
+T_LOG_FLAGS=--bad $MAKE -e check && Exit 1
+cat test-suite.log
+cat bla.log
+# With the above flag overridden, bla.t should fail ...
+$EGREP '(^ *|/)t-compiler:.* invalid .*--bad' bla.log
+# ... but no other test should.
+grep -v '^FAIL: bla\.t ' bla.log | grep 'FAIL:' && Exit 1
+
+# Try also with a VPATH build.
+$MAKE distcheck
+
+:
diff --git a/t/parallel-tests-log-compiler-2.sh b/t/parallel-tests-log-compiler-2.sh
new file mode 100755 (executable)
index 0000000..72fba68
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - per-extension "test runners" a.k.a. "log compilers" (xxx_LOG_COMPILER
+#   and xxx_LOG_FLAGS), when some tests are PROGRAMS.
+# See also related test 'parallel-tests-log-compiler-1.test'.
+
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << '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-compiler
+TEST_LOG_COMPILER = ./test-compiler
+LOG_COMPILER = ./noext-compiler
+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-compiler <<'END'
+#! /bin/sh
+echo $0 "$@"
+shift
+shift
+exec "$@"
+exit 127
+END
+chmod a+x chk-compiler
+cp chk-compiler test-compiler
+cp chk-compiler noext-compiler
+
+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
+
+./configure
+
+$MAKE
+$MAKE check || { cat test-suite.log; Exit 1; }
+ls -l . sub
+cat test-suite.log
+grep 'chk-compiler  *1  *2' foo.log
+grep 'test-compiler  *3  *4' bar.log
+grep 'noext-compiler  *5  *6' baz.log
+grep 'test-compiler  *3  *4' bla.log
+grep 'noext-compiler  *5  *6' bli.suff.log
+grep 'noext-compiler  *5  *6' sub/test.log
+
+:
diff --git a/t/parallel-tests-log-compiler-example.sh b/t/parallel-tests-log-compiler-example.sh
new file mode 100755 (executable)
index 0000000..60dd7bd
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the example of usage of generic and extension-specific
+# LOG_COMPILER and LOG_FLAGS given in the manual.
+
+required=python
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_SUBST([PERL], ['$PERL'])
+AM_PATH_PYTHON
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+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
+END
+
+echo 'my $a =+ 2; exit (0);' > foo.pl
+echo 'import sys; sys.exit(0);' > bar.py
+: > baz
+
+cat > wrapper-script <<'END'
+#!/bin/sh
+echo "wrapper args: $*"
+END
+chmod a+x wrapper-script
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+st=0
+$MAKE check || st=$?
+cat foo.log
+cat bar.log
+cat baz.log
+test $st -eq 0 || Exit $st
+
+# Check that the wrappers have been run with the expected flags.
+grep '[rR]eversed.*+=.*operator.*foo\.pl' foo.log
+grep '^# *[cC]lear.*sys\.argv' bar.log
+grep '^wrapper args:.* -d .*baz' baz.log
+
+:
diff --git a/t/parallel-tests-log-override-1.sh b/t/parallel-tests-log-override-1.sh
new file mode 100755 (executable)
index 0000000..55f6082
--- /dev/null
@@ -0,0 +1,109 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features: runtime redefinition of $(TEST_SUITE_LOG).
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TESTS = pass.test skip.test xfail.test
+XFAIL_TESTS = xfail.test
+EXTRA_DIST = $(TESTS)
+END
+
+cat > pass.test <<'END'
+#! /bin/sh
+exit 0
+END
+
+cat > skip.test <<'END'
+#! /bin/sh
+echo "% test skipped %"
+exit 77
+END
+
+cat > xfail.test <<'END'
+#! /bin/sh
+echo "# expected failure #"
+exit 1
+END
+
+chmod a+x *.test
+
+test_log_edit ()
+{
+  sed -e "s|^  *$me 1\.0:.*$|  $me 1.0: ???|" \
+      -e "s|^=====*|=======================|" $*
+}
+
+test_log_expected ()
+{
+  test_log_edit orig > exp
+  test_log_edit $1   > got
+  diff exp got || Exit 1
+  rm -f exp got
+}
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE check
+ls -l
+cat test-suite.log
+cp test-suite.log orig
+
+$MAKE clean
+test -f test-suite.log && Exit 99 # Sanity check.
+
+# Check that we can override the testsuite log file at runtime.
+TEST_SUITE_LOG=zardoz.log $MAKE -e check
+ls -l
+test ! -f test-suite.log
+cat zardoz.log
+test_log_expected zardoz.log
+# Sanity check the distribution too (this also does minimal checks on
+# VPATH support).
+TEST_SUITE_LOG=zardoz.log $MAKE -e distcheck
+
+# Check that cleanup rules remove the correct file even when
+# user overrides are in place.
+cp orig test-suite.log
+TEST_SUITE_LOG=zardoz.log $MAKE -e clean
+ls -l
+test ! -f zardoz.log
+diff orig test-suite.log
+
+# Check that the default testsuite log doesn't get unduly modified.
+# Also check that the testsuite log file doesn't need to be named
+# accordingly to the '*.log' pattern.
+chmod a-w test-suite.log
+TEST_SUITE_LOG=TheLogFile $MAKE -e check
+ls -l
+diff orig test-suite.log
+test_log_expected TheLogFile
+TEST_SUITE_LOG=TheLogFile $MAKE -e clean
+ls -l
+test ! -f TheLogFile
+diff orig test-suite.log
+
+:
diff --git a/t/parallel-tests-log-override-2.sh b/t/parallel-tests-log-override-2.sh
new file mode 100755 (executable)
index 0000000..eccefcc
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features: runtime redefinition of:
+#  - $(TEST_SUITE_LOG) and $(TESTS)
+#  - $(TEST_SUITE_LOG) and $(TEST_LOGS)
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TESTS = pass.test pass2.test skip.test skip2.test fail.test
+END
+
+cat > pass.test <<'END'
+#! /bin/sh
+exit 0
+END
+
+cp pass.test pass2.test
+
+cat > skip.test <<'END'
+#! /bin/sh
+echo "% skipped test %"
+exit 77
+END
+
+cp skip.test skip2.test
+
+cat > fail.test <<'END'
+#! /bin/sh
+exit 1
+END
+
+chmod a+x *.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+for test_list_override in \
+  'TESTS=pass.test skip.test' \
+  'TEST_LOGS=pass.log skip.log'
+do
+  env TEST_SUITE_LOG=partial.log "$test_list_override" \
+    $MAKE -e check >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  ls -l
+  count_test_results total=2 pass=1 fail=0 skip=1 xfail=0 xpass=0 error=0
+  cat pass.log
+  cat skip.log
+  cat partial.log
+  test ! -f test-suite.log
+  test ! -f pass2.log
+  test ! -f skip2.log
+  test ! -f fail.log
+  grep '^PASS: pass\.test$' stdout
+  grep '^SKIP: skip\.test$' stdout
+  $FGREP 'SKIP: skip' partial.log
+  $FGREP '% skipped test %' partial.log
+  $EGREP '(pass2|skip2|fail)\.test' stdout && Exit 1
+  $EGREP '(pass2|skip2|fail)' partial.log && Exit 1
+  rm -f *.log
+done
+
+:
diff --git a/t/parallel-tests-log-override-recheck.sh b/t/parallel-tests-log-override-recheck.sh
new file mode 100755 (executable)
index 0000000..5fc39a4
--- /dev/null
@@ -0,0 +1,98 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features: runtime redefinition of $(TEST_SUITE_LOG)
+# for the recheck target.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TESTS = foofoo.test barbar.test bazbaz.test
+END
+
+cat > foofoo.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 0
+END
+
+cat > barbar.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 99
+END
+
+cat > bazbaz.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit ${BAZ_EXIT_STATUS-1}
+END
+
+chmod a+x *.test
+
+unset BAZ_EXIT_STATUS || :
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Filter make output before grepping it, for make implementations that,
+# like Solaris' one, print the whole of the failed recipe on failure.
+filter_stdout ()
+{
+  grep -v 'bases=.*;' stdout > t && mv -f t stdout
+}
+
+./configure
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+chmod a-rw test-suite.log
+TEST_SUITE_LOG=my.log $MAKE -e recheck >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+ls -l
+filter_stdout
+count_test_results total=2 pass=0 fail=1 skip=0 xfail=0 xpass=0 error=1
+for x in stdout my.log; do
+  $FGREP foofoo $x && Exit 1
+  $FGREP barbar $x
+  $FGREP bazbaz $x
+done
+
+chmod a-rw my.log
+BAZ_EXIT_STATUS=0 TEST_SUITE_LOG=my2.log $MAKE -e recheck >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+ls -l
+count_test_results total=2 pass=1 fail=0 skip=0 xfail=0 xpass=0 error=1
+filter_stdout
+$FGREP foofoo stdout && Exit 1
+$FGREP barbar stdout
+$FGREP bazbaz stdout
+$FGREP foofoo my2.log && Exit 1
+$FGREP barbar my2.log
+$FGREP bazbaz my2.log && Exit 1
+
+chmod u+r test-suite.log my.log
+$FGREP bazbaz test-suite.log
+$FGREP bazbaz my.log
+
+:
diff --git a/t/parallel-tests-many.sh b/t/parallel-tests-many.sh
new file mode 100755 (executable)
index 0000000..65db6e6
--- /dev/null
@@ -0,0 +1,189 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the parallel-tests harness does not hit errors due to
+# an exceeded command line length when there are many tests.
+# For automake bug#7868.  This test is currently expected to fail.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+# Sanity check that the $(TESTS) is going to exceed the system
+# command line length.
+# Extra quoting and indirections below are required to ensure the
+# various make implementations (e.g, GNU make or Sun Distributed Make)
+# will truly spawn a shell to execute this command, instead of relying
+# on optimizations that might mask the "Argument list too long" error
+# we expect.
+this-will-fail:
+       @":" && ":" $(TEST_LOGS)
+TEST_LOG_COMPILER = true
+include list-of-tests.am
+# So that we won't have to create a ton of dummy test cases.
+$(TESTS):
+END
+
+# The real instance will be dynamically created later.
+echo TESTS = foo.test > list-of-tests.am
+
+$ACLOCAL && $AUTOCONF && $AUTOMAKE -a \
+  || framework_failure_ "unexpected autotools failure"
+./configure \
+  || framework_failure_ "unexpected configure failure"
+
+# We want to hit the system command-line length limit without hitting
+# the filename length limit or the PATHMAX limit; so we use longish
+# (but not too long) names for the testcase, and place them in a nested
+# (but not too deeply) directory.
+# We also prefer to use the minimal(ish) number of test cases that can
+# make us hit the command-line length limit, since the more the test
+# cases are, the more time "automake" and "make check" will take to run
+# (especially on Cygwin and MinGW/MSYS).
+
+tname="wow-this-is-a-very-long-name-for-a-simple-dummy-test-case"
+dname="and-this-too-is-a-very-long-name-for-a-dummy-directory"
+
+deepdir=.
+depth=0
+for i in 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 29 21 22 23 24; do
+  new_deepdir=$deepdir/$dname.d$i
+  mkdir $new_deepdir || break
+  tmpfile=$new_deepdir/$tname-some-more-chars-for-good-measure
+  if touch $tmpfile; then
+    rm -f $tmpfile || Exit 99
+  else
+    rmdir $new_deepdir || Exit 99
+  fi
+  deepdir=$new_deepdir
+  unset tmpfile new_deepdir
+  depth=$i
+done
+
+cat <<END
+*********************************************************************
+Our tests will be in the following directory (depth = $depth)
+*********************************************************************
+$deepdir
+*********************************************************************
+END
+
+setup_data ()
+{
+  # Use perl, not awk, to avoid errors like "awk: string too long"
+  # (seen e.g. with Solaris 10 /usr/bin/awk).
+  count=$count deepdir=$deepdir tname=$tname $PERL -e '
+    use warnings FATAL => "all";
+    use strict;
+    print "TESTS = \\\n";
+    my $i = 0;
+    while (++$i)
+      {
+        print "  $ENV{deepdir}/$ENV{tname}-$i.test";
+        if ($i >= $ENV{count})
+          {
+            print "\n";
+            last;
+          }
+        else
+          {
+            print " \\\n";
+          }
+      }
+  ' > list-of-tests.am || Exit 99
+  sed 20q list-of-tests.am || Exit 99 # For debugging.
+  $AUTOMAKE Makefile \
+    || framework_failure_ "unexpected automake failure"
+  ./config.status Makefile \
+    || framework_failure_ "unexpected config.status failure"
+}
+
+for count in 1 2 4 8 12 16 20 24 28 32 48 64 96 128 E_HUGE; do
+  test $count = E_HUGE && break
+  count=`expr $count '*' 100` || Exit 99
+  setup_data
+  if $MAKE this-will-fail; then
+    continue
+  else
+    # We have managed to find a number of test cases large enough to
+    # hit the system command-line limits; we can stop.  But first, for
+    # good measure, increase the number of tests of some 20%, to be
+    # "even more sure" of really tickling command line length limits.
+    count=`expr '(' $count '*' 12 ')' / 10` || Exit 99
+    setup_data
+    break
+  fi
+done
+
+if test $count = E_HUGE; then
+  framework_failure_ "system has a too-high limit on command line length"
+else
+  cat <<END
+*********************************************************************
+               Number of tests we will use: $count
+*********************************************************************
+END
+fi
+
+env TESTS=$deepdir/$tname-1.test $MAKE -e check \
+  && test -f $deepdir/$tname-1.log \
+  || framework_failure_ "\"make check\" with one single tests"
+
+rm -f $deepdir/* || Exit 99
+
+$MAKE check > stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep "^# TOTAL: $count$" stdout
+grep "^# PASS:  $count$" stdout
+
+grep "^PASS: .*$tname-[0-9][0-9]*\.test" stdout > grp
+ls -1 $deepdir | grep '\.log$' > lst
+
+sed 20q lst # For debugging.
+sed 20q grp # Likewise.
+
+test `cat <grp | wc -l` -eq $count
+test `cat <lst | wc -l` -eq $count
+
+# We need to simulate a failure of two tests.
+st=0
+env TESTS="$deepdir/$tname-1.test $deepdir/$tname-2.test" \
+    TEST_LOG_COMPILER=false $MAKE -e check > stdout && st=1
+cat stdout
+test `grep -c '^FAIL:' stdout` -eq 2 || st=1
+test $st -eq 0 || fatal_ "couldn't simulate failure of two tests"
+unset st
+
+$MAKE recheck > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^PASS: .*$tname-1\.test" stdout
+grep "^PASS: .*$tname-2\.test" stdout
+test `LC_ALL=C grep -c "^[A-Z][A-Z]*:" stdout` -eq 2
+grep "^# TOTAL: 2$" stdout
+grep "^# PASS:  2$" stdout
+
+# "make clean" might ignore some failures, so we prefer to also grep its
+# output to ensure that no "Argument list too long" error was encountered.
+$MAKE clean >output 2>&1 || { cat output; Exit 1; }
+cat output
+grep -i 'list.* too long' output && Exit 1
+ls $deepdir | grep '\.log$' && Exit 1
+
+:
diff --git a/t/parallel-tests-no-color-in-log.sh b/t/parallel-tests-no-color-in-log.sh
new file mode 100755 (executable)
index 0000000..69414f7
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Colorized output from the testsuite report shouldn't end up in log files.
+
+. ./defs || Exit 1
+
+esc='\e'
+
+# Check that grep can parse nonprinting characters.
+# BSD 'grep' works from a pipe, but not a seekable file.
+# GNU or BSD 'grep -a' works on files, but is not portable.
+case `echo "$esc" | $FGREP "$esc"` in
+  "$esc") ;;
+# Creative quoting below to please maintainer-check.
+  *) echo "$me: f""grep can't parse nonprinting characters" >&2; Exit 77;;
+esac
+
+TERM=ansi; export TERM
+
+cat >>configure.ac <<END
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+LOG_COMPILER = $(SHELL)
+AUTOMAKE_OPTIONS = color-tests parallel-tests
+TESTS = pass fail skip xpass xfail error
+XFAIL_TESTS = xpass xfail
+END
+
+# Creative quoting to please maintainer-check.
+echo exit '0' > pass
+echo exit '0' > xpass
+echo exit '1' > fail
+echo exit '1' > xfail
+echo exit '77' > skip
+echo exit '99' > error
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+mv config.log config-log # Avoid possible false positives below.
+AM_COLOR_TESTS=always $MAKE -e check && Exit 1
+$FGREP "$esc" *.log && Exit 1
+
+:
diff --git a/t/parallel-tests-no-spurious-summary.sh b/t/parallel-tests-no-spurious-summary.sh
new file mode 100755 (executable)
index 0000000..6400b3b
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that ':test-results:' directives in test scripts' output doesn't
+# originate spurious results in the testsuite summary.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.test
+END
+
+cat > foo.test <<'END'
+#! /bin/sh
+echo :test-result:XFAIL
+echo :test-result: SKIP
+echo :test-result:ERROR
+exit 0
+END
+cat > bar.test <<'END'
+#! /bin/sh
+echo :test-result: ERROR
+echo :test-result:FAIL
+echo :test-result: XPASS
+exit 0
+END
+chmod a+x foo.test bar.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+st=0
+$MAKE check >stdout || st=$?
+cat stdout
+cat test-suite.log
+cat foo.log
+cat bar.log
+test $st -eq 0 || Exit $st
+
+grep '^:test-result:XFAIL$'  foo.log
+grep '^:test-result: SKIP$'  foo.log
+grep '^:test-result:FAIL$'   bar.log
+grep '^:test-result: XPASS$' bar.log
+
+count_test_results total=2 pass=2 fail=0 skip=0 xfail=0 xpass=0 error=0
+
+:
diff --git a/t/parallel-tests-once.sh b/t/parallel-tests-once.sh
new file mode 100755 (executable)
index 0000000..51912fb
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Tests shouldn't be run multiple times by a simple "make check" in a
+# clean directory.  An early implementation of the '.trs' intermediate
+# files incurred a similar problem.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test
+END
+
+cat > foo.test <<'END'
+#! /bin/sh
+test -f foo.run && Exit 1
+: > foo.run
+END
+chmod a+x foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE check
+test -f foo.run # Sanity check.
+
+:
diff --git a/t/parallel-tests-recheck-depends-on-all.sh b/t/parallel-tests-recheck-depends-on-all.sh
new file mode 100755 (executable)
index 0000000..9464a36
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The parallel-tests 'recheck' target must depend on the 'all' target.
+# See automake bug#11252.
+
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+all-local:
+       test ! -f status || echo okokok > status
+bin_PROGRAMS = foo
+TESTS = a.test b.test c.test
+END
+
+cat > foo.c << 'END'
+#include <stdio.h>
+int main (void)
+{
+  printf ("failure :-(" "\n");
+  return 1;
+}
+END
+
+cat > a.test << 'END'
+#!/bin/sh
+exit 0
+END
+
+cat > b.test << 'END'
+#!/bin/sh
+grep okokok status
+END
+
+cat > c.test << 'END'
+#!/bin/sh
+./foo
+END
+
+chmod a+x *.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=3 pass=1 fail=2 skip=0 xfail=0 xpass=0 error=0
+test ! -f status
+
+$sleep
+: > status
+cat > foo.c << 'END'
+#include <stdio.h>
+int main (void)
+{
+  printf ("success :-)" "\n");
+  return 0;
+}
+END
+
+$MAKE recheck >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=2 pass=2 fail=0 skip=0 xfail=0 xpass=0 error=0
+grep '^PASS: b\.test$' stdout
+grep '^PASS: c\.test$' stdout
+
+$MAKE recheck >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=0 pass=0 fail=0 skip=0 xfail=0 xpass=0 error=0
+
+:
diff --git a/t/parallel-tests-reset-term.sh b/t/parallel-tests-reset-term.sh
new file mode 100755 (executable)
index 0000000..cf9fb6c
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the parallel-tests driver correctly handle overrides of the
+# TERM variable by either TESTS_ENVIRONMENT and AM_TESTS_ENVIRONMENT.
+
+. ./defs || Exit 1
+
+esc='\e['
+
+TERM=ansi; export TERM
+
+# Check that grep can parse nonprinting characters.
+# BSD 'grep' works from a pipe, but not a seekable file.
+# GNU or BSD 'grep -a' works on files, but is not portable.
+case `echo "$esc" | $FGREP "$esc"` in
+  "$esc") ;;
+  *) skip_ "$FGREP can't parse nonprinting characters" ;;
+esac
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_COLOR_TESTS = always
+AUTOMAKE_OPTIONS = color-tests
+TESTS = foobar
+END
+
+cat > foobar << 'END'
+#!/bin/sh
+echo "TERM='$TERM'"
+test x"$TERM" = x"dumb"
+END
+chmod a+x foobar
+
+mkcheck ()
+{
+  if $MAKE "$@" check > stdout; then
+    rc=0
+  else
+    rc=1
+  fi
+  cat stdout
+  cat foobar.log
+  cat test-suite.log
+  return $rc
+}
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+
+mkcheck TESTS_ENVIRONMENT='TERM=dumb'
+cat stdout | grep "PASS.*foobar" | $FGREP "$esc"
+
+mkcheck AM_TESTS_ENVIRONMENT='TERM=dumb'
+cat stdout | grep "PASS.*foobar" | $FGREP "$esc"
+
+:
diff --git a/t/parallel-tests-subdir.sh b/t/parallel-tests-subdir.sh
new file mode 100755 (executable)
index 0000000..2698a53
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the parallel-tests driver creates parent directories for
+# the log files when needed.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = dir1/foo.test dir2/dir3/foo.test
+TEST_LOG_COMPILER = sh
+END
+
+mkdir dir1 dir2 dir2/dir3
+echo : > dir1/foo.test
+echo : > dir2/dir3/foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir build
+cd build
+../configure
+$MAKE check
+find . # For debugging.
+test -f test-suite.log
+test -f dir1/foo.log
+test -f dir1/foo.trs
+test -f dir2/dir3/foo.log
+test -f dir2/dir3/foo.trs
+
+:
diff --git a/t/parallel-tests-suffix-prog.sh b/t/parallel-tests-suffix-prog.sh
new file mode 100755 (executable)
index 0000000..28dd349
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - suffix rules, with PROGRAMS involved
+# See also sister test 'parallel-tests-suffix.test'.
+
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << '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, nor the '/chk' part of 'sub/chk' as '.chk' suffix.
+TESTS = $(dist_TESTS) $(check_PROGRAMS)
+dist_TESTS = foo.chk bar.test sub/test
+check_PROGRAMS = baz bla.test bli.suff sub/chk
+TEST_EXTENSIONS = .chk .test
+EXTRA_DIST = $(dist_TESTS)
+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
+cp baz.c sub/chk.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check
+ls -l . sub
+test -f foo.log
+test -f bar.log
+test -f baz.log
+test -f bla.log
+test -f bli.suff.log
+test -f sub/chk.log
+test -f sub/test.log
+
+$MAKE distcheck
+
+:
diff --git a/t/parallel-tests-suffix.sh b/t/parallel-tests-suffix.sh
new file mode 100755 (executable)
index 0000000..9e9e843
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - suffix rules
+# See also sister test 'parallel-tests-suffix-prog.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+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 baz bli.suff sub/test
+TEST_EXTENSIONS = .chk .test
+EXTRA_DIST = $(TESTS)
+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 baz
+cp foo.chk bli.suff
+cp foo.chk sub/test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check
+ls -l . sub
+test -f foo.log
+test -f bar.log
+test -f baz.log
+test -f bli.suff.log
+test -f sub/test.log
+
+$MAKE distcheck
+
+:
diff --git a/t/parallel-tests-trailing-bslash.sh b/t/parallel-tests-trailing-bslash.sh
new file mode 100755 (executable)
index 0000000..1291764
--- /dev/null
@@ -0,0 +1,113 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the new testsuite harness do not generate recipes that can
+# have a trailing '\', since that can cause spurious syntax errors with
+# older bash versions (e.g., bash 2.05b).
+# See automake bug#10436.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+TESTS = foo.test
+EXTRA_DIST = $(TESTS)
+am__backslash = \\ # foo
+.PHONY: bad-recipe
+bad-recipe:
+       @printf '%s\n' $(am__backslash)
+END
+
+cat > foo.test <<'END'
+#!/bin/sh
+exit 0
+END
+chmod +x foo.test
+
+am__SHELL=$SHELL; export am__SHELL
+am__PERL=$PERL; export am__PERL
+
+cat > my-shell <<'END'
+#!/bin/sh -e
+set -u
+tab='  '
+nl='
+'
+am__shell_flags=
+am__shell_command=; unset am__shell_command
+while test $# -gt 0; do
+  case $1 in
+    # If the shell is invoked by make e.g. as "sh -ec" (seen on
+    # GNU make in POSIX mode) or "sh -ce" (seen on Solaris make).
+    -*c*)
+        flg=`echo x"$1" | sed -e 's/^x-//' -e 's/c//g'`
+        if test x"$flg" != x; then
+          am__shell_flags="$am__shell_flags -$flg"
+        fi
+        am__shell_command=$2
+        shift
+        ;;
+    -?*)
+        am__shell_flags="$am__shell_flags $1"
+        ;;
+      *)
+        break
+        ;;
+  esac
+  shift
+done
+if test x${am__shell_command+"set"} != x"set"; then
+  # Some make implementations, like *BSD's, pass the recipes to the shell
+  # through its standard input.  Trying to run our extra checks in this
+  # case would be too tricky, so we just skip them.
+  exec $am__SHELL $am__shell_flags ${1+"$@"}
+else
+  am__tweaked_shell_command=`printf '%s\n' "$am__shell_command" \
+    | tr -d " $tab$nl"`
+  case ${am__tweaked_shell_command-} in
+    *\\)
+      echo "my-shell: recipe ends with backslash character" >&2
+      printf '%s\n' "=== BEGIN recipe" >&2
+      printf '%s\n' "${am__shell_command-}" >&2
+      printf '%s\n' "=== END recipe" >&2
+      exit 99
+      ;;
+  esac
+  exec $am__SHELL $am__shell_flags -c "$am__shell_command" ${1+"$@"}
+fi
+END
+chmod a+x my-shell
+
+cat my-shell
+
+CONFIG_SHELL=`pwd`/my-shell; export CONFIG_SHELL
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure CONFIG_SHELL="$CONFIG_SHELL"
+
+st=0
+$MAKE bad-recipe 2>stderr && st=1
+cat stderr >&2
+$FGREP "my-shell: recipe ends with backslash character" stderr || st=1
+test $st -eq 0 || skip_ "can't catch trailing backslashes in make recipes"
+
+$MAKE check
+
+:
diff --git a/t/parallel-tests-unreadable.sh b/t/parallel-tests-unreadable.sh
new file mode 100755 (executable)
index 0000000..98591e6
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the testsuite driver copes well with unreadable '.log'
+# and '.trs' files.
+
+. ./defs || Exit 1
+
+: > t
+chmod a-r t && test ! -r t || skip_ "you can still read unreadable files"
+rm -f t
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.test
+END
+
+cat > foo.test << 'END'
+#! /bin/sh
+echo foofoofoo
+exit 0
+END
+
+cat > bar.test << 'END'
+#! /bin/sh
+echo barbarbar
+exit 77
+END
+
+chmod a+x foo.test bar.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+for files in \
+  'foo.log bar.log' \
+  'foo.trs bar.trs' \
+  'foo.trs bar.log' \
+  'foo.log bar.trs' \
+; do
+  $MAKE check
+  rm -f test-suite.log
+  chmod a-r $files
+  $MAKE test-suite.log || { ls -l; Exit 1; }
+  ls -l
+  grep '^foofoofoo$' foo.log
+  grep '^:test-result: PASS' foo.trs
+  grep '^barbarbar$' bar.log
+  grep '^:test-result: SKIP' bar.trs
+  grep '^SKIP: bar' test-suite.log
+  grep '^barbarbar$' test-suite.log
+  $EGREP ':.*foo|foofoofoo' test-suite.log && Exit 1
+  : For shells with busted 'set -e'.
+done
+
+:
diff --git a/t/parallel-tests.sh b/t/parallel-tests.sh
new file mode 100755 (executable)
index 0000000..459a24d
--- /dev/null
@@ -0,0 +1,151 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic checks on parallel-tests support:
+#  - console output
+#  - log files, and what goes in 'test-suite.log'
+#  - make clean
+#  - dependencies between tests
+#  - TESTS redefinition at runtime
+#  - TEST_LOGS redefinition at runtime
+#  - RECHECK_LOGS redefinition at runtime
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.test baz.test
+XFAIL_TESTS = bar.test
+foo.log: bar.log
+bar.log: baz.log
+END
+
+# foo.test and bar.test sleep to ensure their logs are always strictly newer
+# than the logs of their prerequisites, for HP-UX make.  The quoting pleases
+# maintainer-check.
+cat > foo.test <<'END'
+#! /bin/sh
+echo "this is $0"
+sleep '1'
+exit 0
+END
+cat > bar.test <<'END'
+#! /bin/sh
+echo "this is $0"
+sleep '1'
+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
+count_test_results total=3 pass=1 fail=1 skip=0 xfail=0 xpass=0 error=1
+test -f test-suite.log
+cat test-suite.log
+test `grep -c '^FAIL:' test-suite.log` -eq 1
+test `grep -c '^ERROR:' test-suite.log` -eq 1
+$EGREP '^(X?PASS|XFAIL|SKIP)' test-suite.log && Exit 1
+test -f baz.log
+test -f bar.log
+test -f foo.log
+
+$MAKE clean
+test ! -f baz.log
+test ! -f bar.log
+test ! -f foo.log
+test ! -f test-suite.log
+
+# 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.
+env TESTS='bar.test' $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^FAIL: baz\.test$' stdout
+grep '^ERROR: bar\.test$' stdout
+
+test -f baz.log
+test -f bar.log
+test ! -f foo.log
+test -f test-suite.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 '^PASS: foo\.test$' stdout
+grep bar.test stdout && Exit 1
+grep baz.test stdout && Exit 1
+grep '^# PASS: *1$' stdout
+grep '^# FAIL: *1$' stdout
+grep '^# ERROR: *1$' 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 '^# PASS: *1$' stdout
+grep '^# FAIL: *1$' stdout
+grep '^# ERROR: *1$' 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 '^# PASS: *1$' stdout
+grep '^# FAIL: *1$' stdout
+grep '^# ERROR: *1$' 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/t/parallel-tests10.sh b/t/parallel-tests10.sh
new file mode 100755 (executable)
index 0000000..9746024
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - trailing whitespace in TESTS
+# GNU make 3.80 may expand trailing white space to '.log'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo $(BAR)
+BAR =
+END
+
+cat >foo <<'END'
+#! /bin/sh
+exit 0
+END
+
+chmod +x ./foo
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check
+
+:
diff --git a/t/parallel-tests2.sh b/t/parallel-tests2.sh
new file mode 100755 (executable)
index 0000000..d54b9e8
--- /dev/null
@@ -0,0 +1,148 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+#  - check-html
+#  - recheck-html
+# FIXME: the features tested by this script has been moved in contrib.
+# FIXME: We should move this script accordingly.
+
+. ./defs || Exit 1
+
+# Try the variants that are tried in check-html.am.
+while :; do
+  for r2h in $RST2HTML rst2html rst2html.py; do
+    echo "$me: running $r2h --version"
+    # Don't use "&&" here, or a bug of 'set -e' present in some
+    # versions of the BSD shell will be triggered.  We add the
+    # dummy "else" branch for extra safety.
+    if $r2h --version; then break 2; else :; fi
+  done
+  skip_all_ "no proper rst2html program found"
+done
+unset r2h
+
+cp "$am_top_srcdir"/contrib/check-html.am . \
+  || fatal_ "cannot fetch 'check-html.am' from contrib"
+
+cat >> configure.ac << '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
+include $(srcdir)/check-html.am
+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 && Exit 1
+test -f mylog.html
+# check-html should cause check_SCRIPTS to be created.
+test -f bla
+
+# "make clean" should remove HTML files.
+$MAKE clean
+test ! -f mylog.html
+test ! -f bla
+
+# Always create the HTML output, even if there were no failures.
+rm -f mylog.html
+env TESTS=foo.test $MAKE -e check-html
+test -f mylog.html
+
+# Create summarizing HTML output also with recheck-html.
+rm -f mylog.html
+env TESTS=foo.test $MAKE -e recheck-html
+test -f mylog.html
+
+# Create HTML output for an individual test.
+$MAKE foo.html
+grep 'this is .*foo\.test' foo.html
+test ! -f bar.html
+test ! -f baz.html
+
+# Create HTML output for individual tests.  Since the pre-existing log
+# files are expected to be used for the HTML conversion, this should
+# go smoothly even for failed tests.
+$MAKE bar.html baz.html
+grep 'this is .*bar\.test' bar.html
+grep 'this is .*baz\.test' baz.html
+
+# HTML output removed by mostlyclean.
+$MAKE mostlyclean
+test ! -f foo.html
+test ! -f bar.html
+test ! -f baz.html
+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
+test ! -f mylog.html
+env TEST_LOGS=foo.log $MAKE -e check-html
+test -f bla
+test -f foo.log
+test ! -f bar.log
+test ! -f baz.log
+test -f mylog.html
+
+$MAKE clean
+env TESTS=foo.test $MAKE -e recheck-html
+test -f bla
+test ! -f foo.log
+test -f mylog.html
+
+$MAKE clean
+$MAKE recheck-html
+test -f bla
+test ! -f foo.log
+test ! -f bar.log
+test ! -f baz.log
+test -f mylog.html
+
+:
diff --git a/t/parallel-tests3.sh b/t/parallel-tests3.sh
new file mode 100755 (executable)
index 0000000..8e3be0e
--- /dev/null
@@ -0,0 +1,114 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - concurrent parallel execution
+
+. ./defs || Exit 1
+
+case $MAKE in
+  *\ -j*) skip_ "\$MAKE contains '-j'";;
+esac
+
+if using_gmake; then
+  j=-j
+else
+  unindent > Makefile <<END
+    all: one two
+    one:
+       $sleep && test -f two
+    two:
+       echo ok > \$@
+END
+  for j in "-j" "-j " NONE; do
+    if test x"$j" = xNONE; then
+      skip_ "can't run make in parallel mode"
+    fi
+    $MAKE ${j}2 all >output 2>&1 || continue
+    $EGREP -i "(warning|error):|-j[\"\'\` ]" output && continue
+    break
+  done
+  rm -f one output Makefile
+fi
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS =
+END
+
+cat > x <<'END'
+#! /bin/sh
+echo "this is $0"
+# Creative quoting below to please maintainer-check.
+sleep '1'
+exit 0
+END
+chmod a+x ./x
+
+mkdir sub
+for i in 1 2 3; do
+  echo "TESTS += foo$i.test" >> Makefile.am
+  cp x foo$i.test
+  echo "TESTS += zap$i" >> Makefile.am
+  cp x zap$i
+  echo "TESTS += sub/bar$i.test" >> Makefile.am
+  cp x sub/bar$i.test
+  echo "TESTS += sub/mu$i" >> Makefile.am
+  cp x sub/mu$i
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+for build in serial parallel; do
+  mkdir $build
+  cd $build
+  ../configure
+  $MAKE
+  cd ..
+done
+
+cd serial
+$MAKE ${j}1 check &
+cd ../parallel
+$sleep
+# Use append mode here to avoid dropping output.  See automake bug#11413.
+: > stdout
+$MAKE ${j}4 check >> stdout
+cd ..
+# Ensure the tests are really being run in parallel mode: if this is
+# the case, the serial run of the dummy testsuite started above should
+# still be ongoing when the parallel one has terminated.
+kill -0 $!
+cat parallel/stdout
+test `grep -c '^PASS:' parallel/stdout` -eq 12
+
+# Wait long enough so that there are no open files any more when the
+# post-test cleanup runs.  But exit after we've waited for two minutes
+# or more, to avoid testsuite hangs in unusual situations (this has
+# already happened).
+i=1
+while test ! -f serial/test-suite.log && test $i -le 120; do
+  i=`expr $i + 1`
+  sleep '1' # Extra quoting to please maintainer-check.
+done
+$sleep
+
+:
diff --git a/t/parallel-tests5.sh b/t/parallel-tests5.sh
new file mode 100755 (executable)
index 0000000..bb5a876
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check 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='cc native GNUmake'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+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
+  unindent >foo$i.test <<'END'
+    #! /bin/sh
+    echo "this is $0"
+    exit 0
+END
+  cat >foo$i.c <<'END'
+    int main (void)
+    {
+      return 0;
+    }
+END
+  chmod a+x foo$i.test
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE -j4 check
+$MAKE distcheck
+
+:
diff --git a/t/parallel-tests6.sh b/t/parallel-tests6.sh
new file mode 100755 (executable)
index 0000000..46b455c
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - empty TESTS
+# BSD make will expand '$(TESTS:=.log)' to '.log' unless overridden.
+# See parallel-tests10.test for a similar issue.
+
+. ./defs || Exit 1
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS =
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+for x in TOTAL PASS FAIL XPASS FAIL SKIP ERROR; do
+  grep "^# $x: *0$" stdout
+done
+
+Exit 0
diff --git a/t/parallel-tests8.sh b/t/parallel-tests8.sh
new file mode 100755 (executable)
index 0000000..7363929
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check 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 || Exit 1
+
+cat >> configure.ac << '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:
+## Account for VPATH issues on weaker make implementations (e.g. IRIX 6.5)
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
+       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).*TESTS.*bar\.test' stderr
+grep '$(top_srcdir).*TESTS.*baz\.test' stderr
+
+sed '/^TESTS +=.*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/t/parallel-tests9.sh b/t/parallel-tests9.sh
new file mode 100755 (executable)
index 0000000..42d0e2d
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - recheck
+
+. ./defs || Exit 1
+
+cat >> configure.ac << '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
+count_test_results total=3 pass=1 fail=1 skip=0 xfail=0 xpass=0 error=1
+
+$MAKE recheck >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=2 pass=0 fail=1 skip=0 xfail=0 xpass=0 error=1
+grep 'foo\.test' stdout && Exit 1
+grep '^ERROR: bar\.test$' stdout
+grep '^FAIL: baz\.test$' stdout
+
+# 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/t/parse.sh b/t/parse.sh
new file mode 100755 (executable)
index 0000000..20ac2fe
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure backslash-newline is treated as whitespace.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zot
+zot_SOURCES = \
+zar.c\
+doz.c
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP zar.cdoz Makefile.in && Exit 1
+Exit 0
diff --git a/t/percent.sh b/t/percent.sh
new file mode 100755 (executable)
index 0000000..bdba44e
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that -Wportability understands %-style pattern
+# rules.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_PROG_CC
+EOF
+
+cat >Makefile.am <<EOF
+bin_PROGRAMS = liver
+liver_SOURCES = foo.c
+
+%.o: %.c
+       echo "gnu make extension"
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails -Wportability
+grep 'Makefile.am:4:.*%' stderr
diff --git a/t/percent2.sh b/t/percent2.sh
new file mode 100755 (executable)
index 0000000..19af61a
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another test for -Wportability warning about %-style rules, plus
+# make sure we don't warn about duplicate definition for
+# '${ARCH}/%.$(OBJEXT):'.
+# Report from Ralf Corsepius.
+
+. ./defs || Exit 1
+
+cat >>Makefile.am << 'EOF'
+${ARCH}/%.$(OBJEXT): %.S
+       test -d ${ARCH} || mkdir ${ARCH}
+       ${CCASCOMPILE} -o $@ -c $<
+
+${ARCH}/%.$(OBJEXT): %.c
+       test -d ${ARCH} || mkdir ${ARCH}
+       ${COMPILE} -o $@ -c $<
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails
+grep '%.*pattern.*rules' stderr
+
+# No error otherwise.
+$AUTOMAKE -Wno-portability
diff --git a/t/perf/cond.sh b/t/perf/cond.sh
new file mode 100755 (executable)
index 0000000..7c8261e
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that many conditions do not lead to combinatorial explosion.
+# (This is related to PR/352.)
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >>configure.ac
+
+cat >Makefile.am <<EOF
+bin_PROGRAMS = a
+a02_LDADD =
+a03_SOURCES =
+EOF
+
+# On this test, Automake 1.7.x would compute all 2**24 = 16777216
+# possible combinations of conditionals (it would do this five times,
+# to define a01_DEPENDENCIES, a02_DEPENDENCIES, a03_OBJECTS,
+# a04_OBJECTS, and to rewrite bin_PROGRAM), eating all memory, swap,
+# or cpu time it can found.
+
+for i in \
+  01 02 03 04 05 06 07 08 09 10 \
+  11 12 13 14 15 16 17 18 19 20 \
+  21 22 23 24
+do
+  unindent >>Makefile.am <<EOF
+    if C$i
+    bin_PROGRAMS += a$i
+    a01_LDADD = foo${i}.o
+    a02_LDADD += bar${i}.o
+    a03_SOURCES += baz${i}.c
+    a04_SOURCES = quux${i}.c
+    endif C$i
+EOF
+  echo "AM_CONDITIONAL([C$i], [:])" >>configure.ac
+done
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/perf/testsuite-recheck.sh b/t/perf/testsuite-recheck.sh
new file mode 100755 (executable)
index 0000000..50cc03b
--- /dev/null
@@ -0,0 +1,98 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check performance of recheck target in the face of many failed tests.
+# FIXME: this test is not currently able to detect whether the measured
+# FIXME: performance is too low, and FAIL accordingly; it just offers an
+# FIXME: easy way to verify how effective a performance optimization is.
+
+. ./defs || Exit 1
+
+count=5000
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<END
+count_expected = $count
+TEST_EXTENSIONS = .t
+## Updated later.
+TESTS =
+END
+
+# This should ensure that our timing won't be disturbed by the time
+# that would be actually required to run any of:
+#  - the test cases
+#  - the test driver executing them
+#  - the recipe to create the final test-suite log.
+cat >> Makefile.am << 'END'
+AUTOMAKE_OPTIONS = -Wno-override
+## These should never be run.
+T_LOG_COMPILER = false
+T_LOG_DRIVER = false
+
+# The recipe of this also serves as a sanity check.
+$(TEST_SUITE_LOG):
+## For debugging.
+       @echo "RE-RUN:"; for i in $(TEST_LOGS); do echo "  $$i"; done
+## All the test cases should have been re-run.
+       @count_got=`for i in $(TEST_LOGS); do echo $$i; done | wc -l` \
+         && echo "Count expected: $(count_expected)" \
+         && echo "Count obtained: $$count_got" \
+         && test $$count_got -eq $(count_expected)
+## Pre-existing log files of the tests to re-run should have been
+## removed by the 'recheck' target
+       @for i in $(TEST_LOGS); do \
+         test ! -f $$i.log || { echo "$$i.log exists!"; exit 1; }; \
+       done
+## Actually create the target file, for extra safety.
+       @echo dummy > $@
+END
+
+# Updated later.
+: > all
+
+# Temporarily disable shell traces, to avoid bloating the log file.
+set +x
+
+for i in `seq_ 1 $count`; do
+  echo dummy $i > $i.log
+  echo :global-test-result: PASS > $i.trs
+  echo :test-result: PASS >> $i.trs
+  echo :recheck: yes >> $i.trs
+  echo TESTS += $i.t >> Makefile.am
+  echo $i >> all
+done
+
+# Re-enable shell traces.
+set -x
+
+# So that we don't need to create a ton of dummy tests.
+echo '$(TESTS):' >> Makefile.am
+
+head -n 100 Makefile.am || : # For debugging.
+tail -n 100 Makefile.am || : # Likewise.
+cat $count.trs               # Likewise, just the last specimen though.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE recheck
+
+:
diff --git a/t/perf/testsuite-summary.sh b/t/perf/testsuite-summary.sh
new file mode 100755 (executable)
index 0000000..a11bb8e
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check performanceof recipe generating test-suite.log file and testsuite
+# summary.  That has suffered of huge inefficiencies in the past.
+# FIXME: this test is not currently able to detect whether the measured
+# FIXME: performance is too low, and FAIL accordingly; it just offers
+# FIXME: an easy way verify how effective a performance optimization is.
+
+. ./defs || Exit 1
+
+count=10000
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+TEST_EXTENSIONS = .t
+## Will be updated later.
+TESTS =
+## None of these should ever be run.
+T_LOG_COMPILER = false
+T_LOG_DRIVER = false
+END
+
+# Temporarily disable shell traces, to avoid bloating the log file.
+set +x
+
+for i in `seq_ 1 $count`; do
+  echo false > $i.t
+  echo dummy $i > $i.log
+  echo :global-test-result: PASS > $i.trs
+  echo :test-result: PASS >> $i.trs
+  echo :copy-in-global-log: yes >> $i.trs
+  echo TESTS += $i.t
+done >> Makefile.am 
+
+# Re-enable shell traces.
+set -x
+
+head -n 100 Makefile.am || : # For debugging.
+tail -n 100 Makefile.am || : # Likewise.
+cat $count.trs               # Likewise, just the last specimen though.
+
+# So that we don't need to create a ton of dummy tests.
+#echo '$(TESTS):' >> Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE test-suite.log >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+# Sanity checks.
+grep "^# TOTAL: $count$" stdout
+grep "^dummy $count$" test-suite.log
+specimen=347 # Could be any number <= $count.
+grep "^dummy $specimen$" test-suite.log
+
+:
diff --git a/t/phony.sh b/t/phony.sh
new file mode 100755 (executable)
index 0000000..a818cfb
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure .PHONY can be given dependencies several times.
+# From Ralf Corsepius.
+
+. ./defs || Exit 1
+
+cat >Makefile.am << 'EOF'
+.PHONY: foo
+.PHONY: bar
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+test `$FGREP .PHONY: Makefile.in | wc -l` = 3
diff --git a/t/pluseq.sh b/t/pluseq.sh
new file mode 100755 (executable)
index 0000000..7a8df81
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test '+=' functionality.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+data_DATA = zar
+data_DATA += doz
+END
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP 'zar doz' Makefile.in
+
+:
diff --git a/t/pluseq10.sh b/t/pluseq10.sh
new file mode 100755 (executable)
index 0000000..e9ce944
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for += and backslashes.
+# Reported by Ralf Corsepius.
+
+. ./defs || Exit 1
+
+cat >>configure.ac << 'END'
+AM_CONDITIONAL([A], [true])
+AM_CONDITIONAL([B], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+foo =  0.h
+if A
+foo += a0.h \
+  a1.h
+foo += a2.h \
+  a3.h
+endif
+if B
+foo += b0.h \
+  b1.h
+endif
+
+.PHONY: print
+print:
+       @echo BEG: $(foo) :END
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE print >stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP 'BEG: 0.h a0.h a1.h a2.h a3.h :END' stdout
+
+:
diff --git a/t/pluseq11.sh b/t/pluseq11.sh
new file mode 100755 (executable)
index 0000000..4c0b888
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for bug in variable concatenation with '+=': an extra backslash
+# is erroneously retained in the final value.
+# See also sister test pluseq11b.test.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+## Use more line continuation to ensure we are robust and can (hopefully)
+## cope any number of them, and not just one
+FOO = \
+\
+\
+bar
+## Both these two variable additions are required to trigger the bug.
+FOO +=
+FOO += baz
+
+.PHONY: test
+test:
+       case '$(FOO)' in *\\*) exit 1;; *) exit 0;; esac
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^ *FOO *=.*\\.' Makefile.in && Exit 1
+
+$AUTOCONF
+./configure
+$MAKE test
+
+:
diff --git a/t/pluseq2.sh b/t/pluseq2.sh
new file mode 100755 (executable)
index 0000000..102076a
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test '+=' with conditionals.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([CHECK], [true])
+END
+
+cat > Makefile.am << 'END'
+
+if CHECK
+data_DATA = zar
+else
+data_DATA =
+endif
+
+if CHECK
+data_DATA += doz
+else
+data_DATA += dog
+endif
+
+END
+
+$ACLOCAL
+$AUTOMAKE
+grep 'CHECK_TRUE.*zar doz' Makefile.in
+grep 'CHECK_FALSE.*dog' Makefile.in
+
+:
diff --git a/t/pluseq3.sh b/t/pluseq3.sh
new file mode 100755 (executable)
index 0000000..fc7a496
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another '+=' test with conditionals.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([CHECK], [true])
+END
+
+cat > Makefile.am << 'END'
+
+if CHECK
+data_DATA = zarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
+else
+data_DATA =
+endif
+
+if CHECK
+data_DATA += \
+ doz
+else
+data_DATA += dog
+endif
+
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^@CHECK_TRUE@data_DATA = zarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr \\$' Makefile.in
+grep "^@CHECK_TRUE@${tab}doz$" Makefile.in
+
+grep '^@CHECK_FALSE@data_DATA = dog$' Makefile.in
+
+:
diff --git a/t/pluseq4.sh b/t/pluseq4.sh
new file mode 100755 (executable)
index 0000000..59c82d8
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Yet another '+=' test.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+CC += -Dwhatever
+END
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP '@CC@ -Dwhatever' Makefile.in
+
+:
diff --git a/t/pluseq5.sh b/t/pluseq5.sh
new file mode 100755 (executable)
index 0000000..5db9c47
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for another '+=' problem.  Report from Brian Jones.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([CHECK], [true])
+END
+
+cat > Makefile.am << 'END'
+if CHECK
+INCLUDES = abc
+endif
+INCLUDES += def
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+
+# We expect the following diagnostic:
+#
+# Makefile.am:4: cannot apply '+=' because 'INCLUDES' is not defined in
+# Makefile.am:4: the following conditions:
+# Makefile.am:4:   !CHECK
+# Makefile.am:4: either define 'INCLUDES' in these conditions, or use
+# Makefile.am:4: '+=' in the same conditions as the definitions.
+
+# Is !CHECK mentioned?
+grep ':.*!CHECK$' stderr
+# Is there only one missing condition?
+test `grep ':  ' stderr | wc -l` = 1
+
+# By the way, Automake should suggest using AM_CPPFLAGS,
+# because INCLUDES is an obsolete name.
+grep AM_CPPFLAGS stderr
+
+# A way to suppress the obsolete warning is to use
+# -Wno-obsolete:
+echo 'AUTOMAKE_OPTIONS = -Wno-obsolete' >> Makefile.am
+AUTOMAKE_fails
+grep AM_CPPFLAGS stderr && Exit 1
+# !CHECK should still be mentioned.
+grep ':.*!CHECK$' stderr
+
+:
diff --git a/t/pluseq6.sh b/t/pluseq6.sh
new file mode 100755 (executable)
index 0000000..7a8f187
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that '+=' works with standard header-vars.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([ZZZ])
+END
+
+# If you do this in a real Makefile.am, I will kill you.
+cat > Makefile.am << 'END'
+mandir += foo
+zq = zzz
+END
+
+$ACLOCAL
+$AUTOMAKE
+$FGREP '@mandir@ foo' Makefile.in
+
+num=`grep '^mandir =' Makefile.in | wc -l`
+test $num -eq 1
+
+:
diff --git a/t/pluseq7.sh b/t/pluseq7.sh
new file mode 100755 (executable)
index 0000000..7f5a32e
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that '+=' fails when required.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+END
+
+# If you do this in a real Makefile.am, I will kill you.
+cat > Makefile.am << 'END'
+lib_LIBRARIES = libq.a
+libq_a_SOURCES = q.c
+AR += qq
+END
+
+$ACLOCAL
+AUTOMAKE_fails -Wno-portability
+q="[\`'\"]"
+grep "^Makefile\.am:3:.* AR .* with $q=$q before .*$q+=$q" stderr
+
+:
diff --git a/t/pluseq8.sh b/t/pluseq8.sh
new file mode 100755 (executable)
index 0000000..724e4d5
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another '+=' test.  From Paul Berrevoets.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+VAR = \
+    one \
+    two
+VAR += three
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+sed -n -e '/^VAR =/ {
+   :loop
+    p
+    n
+    t clear
+    :clear
+    s/\\$/\\/
+    t loop
+    p
+    n
+   }' Makefile.in | grep three
+
+:
diff --git a/t/pluseq9.sh b/t/pluseq9.sh
new file mode 100755 (executable)
index 0000000..f3c8021
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the += diagnostics.
+
+. ./defs || Exit 1
+
+cat >>configure.ac << 'END'
+AM_CONDITIONAL([COND1], [true])
+AM_CONDITIONAL([COND2], [true])
+AM_CONDITIONAL([COND3], [true])
+END
+
+cat > Makefile.am << 'END'
+if COND1
+  C = c
+if COND2
+    A = a
+    B = aa
+    C += cc
+else
+    A = b
+    B = bb
+endif
+  A += c
+else
+  A = d
+endif
+A += e
+
+if COND3
+  A += f
+  B = cc
+endif
+B += dd
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+
+# We expect the following diagnostic:
+#
+# Makefile.am:19: cannot apply '+=' because 'B' is not defined in
+# Makefile.am:19: the following conditions:
+# Makefile.am:19:   !COND1 and !COND3
+# Makefile.am:19: either define 'B' in these conditions, or use
+# Makefile.am:19: '+=' in the same conditions as the definitions.
+#
+# It would be nice if Automake could print only COND3_FALSE and
+# COND1_FALSE (merging the last two conditions), so we'll support
+# this case in the check too.
+
+grep '[cC]annot apply.*+=' stderr
+grep ':   !COND1 and !COND3$' stderr
+# Make sure there is exactly one missing condition.
+test `grep ':  ' stderr | wc -l` = 1
+
+:
diff --git a/t/pm/Cond2.pl b/t/pm/Cond2.pl
new file mode 100644 (file)
index 0000000..2bed028
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Catch common programming error:
+# A Condition passed as a string to 'new'.
+
+use Automake::Condition;
+
+my $cond = new Automake::Condition ('TRUE');
+new Automake::Condition ($cond);
diff --git a/t/pm/Cond3.pl b/t/pm/Cond3.pl
new file mode 100644 (file)
index 0000000..518eea8
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Catch common programming error:
+# A Condition passed as a string to 'new'.
+
+use Automake::Condition;
+
+my $cond = new Automake::Condition ("COND1_TRUE");
+new Automake::Condition ("$cond");
diff --git a/t/pm/Condition-t.pl b/t/pm/Condition-t.pl
new file mode 100644 (file)
index 0000000..d29407a
--- /dev/null
@@ -0,0 +1,327 @@
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+BEGIN {
+  use Config;
+  if (eval { require 5.007_002; }      # for CLONE support
+      && $Config{useithreads}
+      && !$ENV{WANT_NO_THREADS})
+    {
+      require threads;
+      import threads;
+    }
+  else
+    {
+      exit 77;
+    }
+}
+use Automake::Condition qw/TRUE FALSE/;
+
+sub test_basics ()
+{
+  my @tests = (# [[Conditions], is_true?, is_false?, string, subst-string, human]
+              [[], 1, 0, 'TRUE', '', 'TRUE'],
+              [['TRUE'], 1, 0, 'TRUE', '', 'TRUE'],
+              [['FALSE'], 0, 1, 'FALSE', '#', 'FALSE'],
+              [['A_TRUE'], 0, 0, 'A_TRUE', '@A_TRUE@', 'A'],
+              [['A_TRUE', 'B_FALSE'],
+               0, 0, 'A_TRUE B_FALSE', '@A_TRUE@@B_FALSE@', 'A and !B'],
+              [['B_TRUE', 'FALSE'], 0, 1, 'FALSE', '#', 'FALSE'],
+              [['B_TRUE', 'B_FALSE'], 0, 1, 'FALSE', '#', 'FALSE']);
+
+  for (@tests)
+    {
+      my $a = new Automake::Condition @{$_->[0]};
+      return 1
+        if threads->new(sub {
+         return 1 if $_->[1] != $a->true;
+         return 1 if $_->[1] != ($a == TRUE);
+         return 1 if $_->[2] != $a->false;
+         return 1 if $_->[2] != ($a == FALSE);
+         return 1 if $_->[3] ne $a->string;
+         return 1 if $_->[4] ne $a->subst_string;
+         return 1 if $_->[5] ne $a->human;
+       })->join;
+    }
+  return 0;
+}
+
+sub test_true_when ()
+{
+  my $failed = 0;
+
+  my @tests = (# [When,
+              #  [Implied-Conditions],
+              #  [Not-Implied-Conditions]]
+              [['TRUE'],
+               [['TRUE']],
+               [['A_TRUE'], ['A_TRUE', 'B_FALSE'], ['FALSE']]],
+              [['A_TRUE'],
+               [['TRUE'], ['A_TRUE']],
+               [['A_TRUE', 'B_FALSE'], ['FALSE']]],
+              [['A_TRUE', 'B_FALSE'],
+               [['TRUE'], ['A_TRUE'], ['B_FALSE'], ['A_TRUE', 'B_FALSE']],
+               [['FALSE'], ['C_FALSE'], ['C_FALSE', 'A_TRUE']]]);
+
+  for my $t (@tests)
+    {
+      my $a = new Automake::Condition @{$t->[0]};
+      return 1
+        if threads->new(sub {
+         for my $u (@{$t->[1]})
+           {
+             my $b = new Automake::Condition @$u;
+             return threads->new(sub {
+               if (! $b->true_when ($a))
+                 {
+                   print "`" . $b->string .
+                     "' not implied by `" . $a->string . "'?\n";
+                   $failed = 1;
+                 }
+             })->join;
+           }
+         for my $u (@{$t->[2]})
+           {
+             my $b = new Automake::Condition @$u;
+             return threads->new(sub {
+               if ($b->true_when ($a))
+                 {
+                   print "`" . $b->string .
+                     "' implied by `" . $a->string . "'?\n";
+                   $failed = 1;
+                 }
+
+               return threads->new(sub {
+                 return 1 if $b->true_when ($a);
+               })->join;
+             })->join;
+           }
+        })->join;
+    }
+  return $failed;
+}
+
+sub test_reduce_and ()
+{
+  my @tests = (# If no conditions are given, TRUE should be returned
+              [[], ["TRUE"]],
+              # An empty condition is TRUE
+              [[""], ["TRUE"]],
+              # A single condition should be passed through unchanged
+              [["FOO"], ["FOO"]],
+              [["FALSE"], ["FALSE"]],
+              [["TRUE"], ["TRUE"]],
+              # TRUE and false should be discarded and overwhelm
+              # the result, respectively
+              [["FOO", "TRUE"], ["FOO"]],
+              [["FOO", "FALSE"], ["FALSE"]],
+              # Repetitions should be removed
+              [["FOO", "FOO"], ["FOO"]],
+              [["TRUE", "FOO", "FOO"], ["FOO"]],
+              [["FOO", "TRUE", "FOO"], ["FOO"]],
+              [["FOO", "FOO", "TRUE"], ["FOO"]],
+              # Two different conditions should be preserved,
+              # but TRUEs should be removed
+              [["FOO", "BAR"], ["BAR,FOO"]],
+              [["TRUE", "FOO", "BAR"], ["BAR,FOO"]],
+              [["FOO", "TRUE", "BAR"], ["BAR,FOO"]],
+              [["FOO", "BAR", "TRUE"], ["BAR,FOO"]],
+              # A condition implied by another condition should be removed.
+              [["FOO BAR", "BAR"], ["FOO BAR"]],
+              [["BAR", "FOO BAR"], ["FOO BAR"]],
+              [["TRUE", "FOO BAR", "BAR"], ["FOO BAR"]],
+              [["FOO BAR", "TRUE", "BAR"], ["FOO BAR"]],
+              [["FOO BAR", "BAR", "TRUE"], ["FOO BAR"]],
+
+              [["BAR FOO", "BAR"], ["BAR FOO"]],
+              [["BAR", "BAR FOO"], ["BAR FOO"]],
+              [["TRUE", "BAR FOO", "BAR"], ["BAR FOO"]],
+              [["BAR FOO", "TRUE", "BAR"], ["BAR FOO"]],
+              [["BAR FOO", "BAR", "TRUE"], ["BAR FOO"]],
+
+              # Check that reduction happens even when there are
+              # two conditions to remove.
+              [["FOO", "FOO BAR", "BAR"], ["FOO BAR"]],
+              [["FOO", "FOO BAR", "BAZ", "FOO BAZ"], ["FOO BAR", "FOO BAZ"]],
+              [["FOO", "FOO BAR", "BAZ", "FOO BAZ", "FOO BAZ BAR"],
+               ["FOO BAZ BAR"]],
+
+              # Duplicated conditionals should be removed.
+              [["FOO", "BAR", "BAR"], ["BAR,FOO"]],
+
+              # Equivalent conditions in different forms should be
+              # reduced: which one is left is unfortunately order
+              # dependent.
+              [["BAR FOO", "FOO BAR"], ["FOO BAR"]],
+              [["FOO BAR", "BAR FOO"], ["BAR FOO"]]);
+
+  my $failed = 0;
+  foreach (@tests)
+    {
+      my ($inref, $outref) = @$_;
+      my @inconds = map { new Automake::Condition $_ } @$inref;
+      return 1
+        if threads->new(sub {
+         my @outconds = map { (new Automake::Condition $_)->string } @$outref;
+         return threads->new(sub {
+           my @res =
+             map { $_->string } (Automake::Condition::reduce_and (@inconds));
+           return threads->new(sub {
+             my $result = join (",", sort @res);
+             my $exresult = join (",", @outconds);
+
+             if ($result ne $exresult)
+               {
+                 print '"' . join(",", @$inref) . '" => "' .
+                   $result . '" expected "' .
+                     $exresult . '"' . "\n";
+                 $failed = 1;
+               }
+             return $failed;
+           })->join;
+         })->join;
+       })->join;
+    }
+  return $failed;
+}
+
+sub test_reduce_or ()
+{
+  my @tests = (# If no conditions are given, FALSE should be returned
+              [[], ["FALSE"]],
+              # An empty condition is TRUE
+              [[""], ["TRUE"]],
+              # A single condition should be passed through unchanged
+              [["FOO"], ["FOO"]],
+              [["FALSE"], ["FALSE"]],
+              [["TRUE"], ["TRUE"]],
+              # FALSE and TRUE should be discarded and overwhelm
+              # the result, respectively
+              [["FOO", "TRUE"], ["TRUE"]],
+              [["FOO", "FALSE"], ["FOO"]],
+              # Repetitions should be removed
+              [["FOO", "FOO"], ["FOO"]],
+              [["FALSE", "FOO", "FOO"], ["FOO"]],
+              [["FOO", "FALSE", "FOO"], ["FOO"]],
+              [["FOO", "FOO", "FALSE"], ["FOO"]],
+              # Two different conditions should be preserved,
+              # but FALSEs should be removed
+              [["FOO", "BAR"], ["BAR,FOO"]],
+              [["FALSE", "FOO", "BAR"], ["BAR,FOO"]],
+              [["FOO", "FALSE", "BAR"], ["BAR,FOO"]],
+              [["FOO", "BAR", "FALSE"], ["BAR,FOO"]],
+              # A condition implying another condition should be removed.
+              [["FOO BAR", "BAR"], ["BAR"]],
+              [["BAR", "FOO BAR"], ["BAR"]],
+              [["FALSE", "FOO BAR", "BAR"], ["BAR"]],
+              [["FOO BAR", "FALSE", "BAR"], ["BAR"]],
+              [["FOO BAR", "BAR", "FALSE"], ["BAR"]],
+
+              [["BAR FOO", "BAR"], ["BAR"]],
+              [["BAR", "BAR FOO"], ["BAR"]],
+              [["FALSE", "BAR FOO", "BAR"], ["BAR"]],
+              [["BAR FOO", "FALSE", "BAR"], ["BAR"]],
+              [["BAR FOO", "BAR", "FALSE"], ["BAR"]],
+
+              # Check that reduction happens even when there are
+              # two conditions to remove.
+              [["FOO", "FOO BAR", "BAR"], ["BAR,FOO"]],
+              [["FOO", "FOO BAR", "BAZ", "FOO BAZ"], ["BAZ,FOO"]],
+              [["FOO", "FOO BAR", "BAZ", "FOO BAZ", "FOO BAZ BAR"],
+               ["BAZ,FOO"]],
+
+              # Duplicated conditionals should be removed.
+              [["FOO", "BAR", "BAR"], ["BAR,FOO"]],
+
+              # Equivalent conditions in different forms should be
+              # reduced: which one is left is unfortunately order
+              # dependent.
+              [["BAR FOO", "FOO BAR"], ["FOO BAR"]],
+              [["FOO BAR", "BAR FOO"], ["BAR FOO"]]);
+
+  my $failed = 0;
+  foreach (@tests)
+    {
+      my ($inref, $outref) = @$_;
+      my @inconds = map { new Automake::Condition $_ } @$inref;
+      return 1
+        if threads->new(sub {
+         my @outconds = map { (new Automake::Condition $_)->string } @$outref;
+         return threads->new(sub {
+           my @res =
+             map { $_->string } (Automake::Condition::reduce_or (@inconds));
+           return threads->new(sub {
+             my $result = join (",", sort @res);
+             my $exresult = join (",", @outconds);
+
+             if ($result ne $exresult)
+               {
+                 print '"' . join(",", @$inref) . '" => "' .
+                   $result . '" expected "' .
+                     $exresult . '"' . "\n";
+                 $failed = 1;
+               }
+             return $failed;
+           })->join;
+         })->join;
+       })->join;
+    }
+  return $failed;
+}
+
+sub test_merge ()
+{
+  my $cond = new Automake::Condition "COND1_TRUE", "COND2_FALSE";
+  return threads->new(sub {
+      my $other = new Automake::Condition "COND3_FALSE";
+      return threads->new(sub {
+       my $both = $cond->merge ($other);
+       return threads->new(sub {
+         my $both2 = $cond->merge_conds ("COND3_FALSE");
+         return threads->new(sub {
+           $cond = $both->strip ($other);
+           my @conds = $cond->conds;
+           return 1 if $both->string ne "COND1_TRUE COND2_FALSE COND3_FALSE";
+           return 1 if $cond->string ne "COND1_TRUE COND2_FALSE";
+           return 1 if $both != $both2;
+         })->join;
+       })->join;
+      })->join;
+    })->join;
+  return 0;
+}
+
+exit (test_basics
+      || test_true_when
+      || test_reduce_and
+      || test_reduce_or
+      || test_merge);
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/t/pm/Condition.pl b/t/pm/Condition.pl
new file mode 100644 (file)
index 0000000..5041a84
--- /dev/null
@@ -0,0 +1,277 @@
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+use Automake::Condition qw/TRUE FALSE/;
+
+sub test_basics ()
+{
+  my @tests = (# [[Conditions], is_true?, is_false?, string, subst-string, human]
+              [[], 1, 0, 'TRUE', '', 'TRUE'],
+              [['TRUE'], 1, 0, 'TRUE', '', 'TRUE'],
+              [['FALSE'], 0, 1, 'FALSE', '#', 'FALSE'],
+              [['A_TRUE'], 0, 0, 'A_TRUE', '@A_TRUE@', 'A'],
+              [['A_TRUE', 'B_FALSE'],
+               0, 0, 'A_TRUE B_FALSE', '@A_TRUE@@B_FALSE@', 'A and !B'],
+              [['B_TRUE', 'FALSE'], 0, 1, 'FALSE', '#', 'FALSE'],
+              [['B_TRUE', 'B_FALSE'], 0, 1, 'FALSE', '#', 'FALSE']);
+
+  for (@tests)
+    {
+      my $a = new Automake::Condition @{$_->[0]};
+      return 1 if $_->[1] != $a->true;
+      return 1 if $_->[1] != ($a == TRUE);
+      return 1 if $_->[2] != $a->false;
+      return 1 if $_->[2] != ($a == FALSE);
+      return 1 if $_->[3] ne $a->string;
+      return 1 if $_->[4] ne $a->subst_string;
+      return 1 if $_->[5] ne $a->human;
+    }
+  return 0;
+}
+
+sub test_true_when ()
+{
+  my $failed = 0;
+
+  my @tests = (# [When,
+              #  [Implied-Conditions],
+              #  [Not-Implied-Conditions]]
+              [['TRUE'],
+               [['TRUE']],
+               [['A_TRUE'], ['A_TRUE', 'B_FALSE'], ['FALSE']]],
+              [['A_TRUE'],
+               [['TRUE'], ['A_TRUE']],
+               [['A_TRUE', 'B_FALSE'], ['FALSE']]],
+              [['A_TRUE', 'B_FALSE'],
+               [['TRUE'], ['A_TRUE'], ['B_FALSE'], ['A_TRUE', 'B_FALSE']],
+               [['FALSE'], ['C_FALSE'], ['C_FALSE', 'A_TRUE']]]);
+
+  for my $t (@tests)
+    {
+      my $a = new Automake::Condition @{$t->[0]};
+      for my $u (@{$t->[1]})
+       {
+         my $b = new Automake::Condition @$u;
+         if (! $b->true_when ($a))
+           {
+             print "`" . $b->string .
+               "' not implied by `" . $a->string . "'?\n";
+             $failed = 1;
+           }
+       }
+      for my $u (@{$t->[2]})
+       {
+         my $b = new Automake::Condition @$u;
+         if ($b->true_when ($a))
+           {
+             print "`" . $b->string .
+               "' implied by `" . $a->string . "'?\n";
+             $failed = 1;
+           }
+
+         return 1 if $b->true_when ($a);
+       }
+    }
+  return $failed;
+}
+
+sub test_reduce_and ()
+{
+  my @tests = (# If no conditions are given, TRUE should be returned
+              [[], ["TRUE"]],
+              # An empty condition is TRUE
+              [[""], ["TRUE"]],
+              # A single condition should be passed through unchanged
+              [["FOO"], ["FOO"]],
+              [["FALSE"], ["FALSE"]],
+              [["TRUE"], ["TRUE"]],
+              # TRUE and false should be discarded and overwhelm
+              # the result, respectively
+              [["FOO", "TRUE"], ["FOO"]],
+              [["FOO", "FALSE"], ["FALSE"]],
+              # Repetitions should be removed
+              [["FOO", "FOO"], ["FOO"]],
+              [["TRUE", "FOO", "FOO"], ["FOO"]],
+              [["FOO", "TRUE", "FOO"], ["FOO"]],
+              [["FOO", "FOO", "TRUE"], ["FOO"]],
+              # Two different conditions should be preserved,
+              # but TRUEs should be removed
+              [["FOO", "BAR"], ["BAR,FOO"]],
+              [["TRUE", "FOO", "BAR"], ["BAR,FOO"]],
+              [["FOO", "TRUE", "BAR"], ["BAR,FOO"]],
+              [["FOO", "BAR", "TRUE"], ["BAR,FOO"]],
+              # A condition implied by another condition should be removed.
+              [["FOO BAR", "BAR"], ["FOO BAR"]],
+              [["BAR", "FOO BAR"], ["FOO BAR"]],
+              [["TRUE", "FOO BAR", "BAR"], ["FOO BAR"]],
+              [["FOO BAR", "TRUE", "BAR"], ["FOO BAR"]],
+              [["FOO BAR", "BAR", "TRUE"], ["FOO BAR"]],
+
+              [["BAR FOO", "BAR"], ["BAR FOO"]],
+              [["BAR", "BAR FOO"], ["BAR FOO"]],
+              [["TRUE", "BAR FOO", "BAR"], ["BAR FOO"]],
+              [["BAR FOO", "TRUE", "BAR"], ["BAR FOO"]],
+              [["BAR FOO", "BAR", "TRUE"], ["BAR FOO"]],
+
+              # Check that reduction happens even when there are
+              # two conditions to remove.
+              [["FOO", "FOO BAR", "BAR"], ["FOO BAR"]],
+              [["FOO", "FOO BAR", "BAZ", "FOO BAZ"], ["FOO BAR", "FOO BAZ"]],
+              [["FOO", "FOO BAR", "BAZ", "FOO BAZ", "FOO BAZ BAR"],
+               ["FOO BAZ BAR"]],
+
+              # Duplicated conditionals should be removed.
+              [["FOO", "BAR", "BAR"], ["BAR,FOO"]],
+
+              # Equivalent conditions in different forms should be
+              # reduced: which one is left is unfortunately order
+              # dependent.
+              [["BAR FOO", "FOO BAR"], ["FOO BAR"]],
+              [["FOO BAR", "BAR FOO"], ["BAR FOO"]]);
+
+  my $failed = 0;
+  foreach (@tests)
+    {
+      my ($inref, $outref) = @$_;
+      my @inconds = map { new Automake::Condition $_ } @$inref;
+      my @outconds = map { (new Automake::Condition $_)->string } @$outref;
+      my @res =
+       map { $_->string } (Automake::Condition::reduce_and (@inconds));
+      my $result = join (",", sort @res);
+      my $exresult = join (",", @outconds);
+
+      if ($result ne $exresult)
+       {
+         print '"' . join(",", @$inref) . '" => "' .
+           $result . '" expected "' .
+             $exresult . '"' . "\n";
+         $failed = 1;
+       }
+    }
+  return $failed;
+}
+
+sub test_reduce_or ()
+{
+  my @tests = (# If no conditions are given, FALSE should be returned
+              [[], ["FALSE"]],
+              # An empty condition is TRUE
+              [[""], ["TRUE"]],
+              # A single condition should be passed through unchanged
+              [["FOO"], ["FOO"]],
+              [["FALSE"], ["FALSE"]],
+              [["TRUE"], ["TRUE"]],
+              # FALSE and TRUE should be discarded and overwhelm
+              # the result, respectively
+              [["FOO", "TRUE"], ["TRUE"]],
+              [["FOO", "FALSE"], ["FOO"]],
+              # Repetitions should be removed
+              [["FOO", "FOO"], ["FOO"]],
+              [["FALSE", "FOO", "FOO"], ["FOO"]],
+              [["FOO", "FALSE", "FOO"], ["FOO"]],
+              [["FOO", "FOO", "FALSE"], ["FOO"]],
+              # Two different conditions should be preserved,
+              # but FALSEs should be removed
+              [["FOO", "BAR"], ["BAR,FOO"]],
+              [["FALSE", "FOO", "BAR"], ["BAR,FOO"]],
+              [["FOO", "FALSE", "BAR"], ["BAR,FOO"]],
+              [["FOO", "BAR", "FALSE"], ["BAR,FOO"]],
+              # A condition implying another condition should be removed.
+              [["FOO BAR", "BAR"], ["BAR"]],
+              [["BAR", "FOO BAR"], ["BAR"]],
+              [["FALSE", "FOO BAR", "BAR"], ["BAR"]],
+              [["FOO BAR", "FALSE", "BAR"], ["BAR"]],
+              [["FOO BAR", "BAR", "FALSE"], ["BAR"]],
+
+              [["BAR FOO", "BAR"], ["BAR"]],
+              [["BAR", "BAR FOO"], ["BAR"]],
+              [["FALSE", "BAR FOO", "BAR"], ["BAR"]],
+              [["BAR FOO", "FALSE", "BAR"], ["BAR"]],
+              [["BAR FOO", "BAR", "FALSE"], ["BAR"]],
+
+              # Check that reduction happens even when there are
+              # two conditions to remove.
+              [["FOO", "FOO BAR", "BAR"], ["BAR,FOO"]],
+              [["FOO", "FOO BAR", "BAZ", "FOO BAZ"], ["BAZ,FOO"]],
+              [["FOO", "FOO BAR", "BAZ", "FOO BAZ", "FOO BAZ BAR"],
+               ["BAZ,FOO"]],
+
+              # Duplicated conditionals should be removed.
+              [["FOO", "BAR", "BAR"], ["BAR,FOO"]],
+
+              # Equivalent conditions in different forms should be
+              # reduced: which one is left is unfortunately order
+              # dependent.
+              [["BAR FOO", "FOO BAR"], ["FOO BAR"]],
+              [["FOO BAR", "BAR FOO"], ["BAR FOO"]]);
+
+  my $failed = 0;
+  foreach (@tests)
+    {
+      my ($inref, $outref) = @$_;
+      my @inconds = map { new Automake::Condition $_ } @$inref;
+      my @outconds = map { (new Automake::Condition $_)->string } @$outref;
+      my @res =
+       map { $_->string } (Automake::Condition::reduce_or (@inconds));
+      my $result = join (",", sort @res);
+      my $exresult = join (",", @outconds);
+
+      if ($result ne $exresult)
+       {
+         print '"' . join(",", @$inref) . '" => "' .
+           $result . '" expected "' .
+             $exresult . '"' . "\n";
+         $failed = 1;
+       }
+    }
+  return $failed;
+}
+
+sub test_merge ()
+{
+  my $cond = new Automake::Condition "COND1_TRUE", "COND2_FALSE";
+  my $other = new Automake::Condition "COND3_FALSE";
+  my $both = $cond->merge ($other);
+  my $both2 = $cond->merge_conds ("COND3_FALSE");
+  $cond = $both->strip ($other);
+  my @conds = $cond->conds;
+  return 1 if $both->string ne "COND1_TRUE COND2_FALSE COND3_FALSE";
+  return 1 if $cond->string ne "COND1_TRUE COND2_FALSE";
+  return 1 if $both != $both2;
+  return 0;
+}
+
+exit (test_basics
+      || test_true_when
+      || test_reduce_and
+      || test_reduce_or
+      || test_merge);
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/t/pm/DisjCon2.pl b/t/pm/DisjCon2.pl
new file mode 100644 (file)
index 0000000..2d28749
--- /dev/null
@@ -0,0 +1,24 @@
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Catch common programming error:
+# A non-Condition reference passed to new.
+
+use Automake::Condition;
+use Automake::DisjConditions;
+
+my $cond = new Automake::Condition ('TRUE');
+my $cond2 = new Automake::DisjConditions ($cond);
+new Automake::DisjConditions ($cond2);
diff --git a/t/pm/DisjCon3.pl b/t/pm/DisjCon3.pl
new file mode 100644 (file)
index 0000000..ede5ab7
--- /dev/null
@@ -0,0 +1,23 @@
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Catch common programming error:
+# A non-reference passed to new.
+
+use Automake::Condition qw/TRUE FALSE/;
+use Automake::DisjConditions;
+
+my $cond = new Automake::Condition ("COND1_TRUE");
+new Automake::DisjConditions ("$cond");
diff --git a/t/pm/DisjConditions-t.pl b/t/pm/DisjConditions-t.pl
new file mode 100644 (file)
index 0000000..b49ae2e
--- /dev/null
@@ -0,0 +1,461 @@
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+BEGIN {
+  use Config;
+  if (eval { require 5.007_002; }      # for CLONE support
+      && $Config{useithreads}
+      && !$ENV{WANT_NO_THREADS})
+    {
+      require threads;
+      import threads;
+    }
+  else
+    {
+      exit 77;
+    }
+}
+use Automake::Condition qw/TRUE FALSE/;
+use Automake::DisjConditions;
+
+sub test_basics ()
+{
+  my $true = new Automake::DisjConditions TRUE;
+  my $false = new Automake::DisjConditions FALSE;
+  my $cond = new Automake::Condition "COND1_TRUE", "COND2_FALSE";
+  return threads->new (sub {
+    my $other = new Automake::Condition "COND3_FALSE";
+    my $another = new Automake::Condition "COND3_TRUE", "COND4_FALSE";
+    return threads->new (sub {
+      my $set1 = new Automake::DisjConditions $cond, $other;
+      return threads->new (sub {
+       my $set2 = new Automake::DisjConditions $other, $cond;
+       my $set3 = new Automake::DisjConditions FALSE, $another;
+       return 1 unless $set1 == $set2;
+       return 1 if $set1->false;
+       return 1 if $set1->true;
+       return 1 unless (new Automake::DisjConditions)->false;
+       return 1 if (new Automake::DisjConditions)->true;
+       return 1 unless $true->human eq 'TRUE';
+       return 1 unless $false->human eq 'FALSE';
+       return 1 unless $set1->human eq "(COND1 and !COND2) or (!COND3)";
+       return 1 unless $set2->human eq "(COND1 and !COND2) or (!COND3)";
+       my $one_cond_human = $set1->one_cond->human;
+       return 1 unless $one_cond_human eq "!COND3"
+                       || $one_cond_human eq "COND1 and !COND2";
+       return 1 unless $set1->string eq "COND1_TRUE COND2_FALSE | COND3_FALSE";
+
+       my $merged1 = $set1->merge ($set2);
+       my $merged2 = $set1->merge ($cond);
+       my $mult1 = $set1->multiply ($set3);
+       return threads->new (sub {
+         my $mult2 = $set1->multiply ($another);
+         return threads->new (sub {
+           return 1 unless $merged1->simplify->string eq "COND1_TRUE COND2_FALSE | COND3_FALSE";
+           return 1 unless $merged2->simplify->string eq "COND1_TRUE COND2_FALSE | COND3_FALSE";
+           return 1 unless $mult1->string eq "COND1_TRUE COND2_FALSE COND3_TRUE COND4_FALSE";
+           return 1 unless $mult1 == $mult2;
+           return 0;
+         })->join;
+       })->join;
+      })->join;
+    })->join;
+  })->join;
+}
+
+sub build_set (@)
+{
+  my @conds = @_;
+  my @set = ();
+  for my $cond (@conds)
+    {
+      push @set, new Automake::Condition @$cond;
+    }
+  return new Automake::DisjConditions @set;
+}
+
+sub test_invert ()
+{
+  my @tests = ([[["FALSE"]],
+               [["TRUE"]]],
+
+              [[["TRUE"]],
+               [["FALSE"]]],
+
+              [[["COND1_TRUE", "COND2_TRUE"],
+                ["COND3_FALSE", "COND2_TRUE"]],
+               [["COND2_FALSE"],
+                ["COND1_FALSE", "COND3_TRUE"]]],
+
+              [[["COND1_TRUE", "COND2_TRUE"],
+                ["TRUE"]],
+               [["FALSE"]]],
+
+              [[["COND1_TRUE", "COND2_TRUE"],
+                ["FALSE"]],
+               [["COND1_FALSE"],
+                ["COND2_FALSE"]]],
+
+              [[["COND1_TRUE"],
+                ["COND2_FALSE"]],
+               [["COND1_FALSE", "COND2_TRUE"]]]
+              );
+
+  for my $t (@tests)
+    {
+      my $set = build_set @{$t->[0]};
+      return 1
+        if threads->new(sub {
+         my $res = build_set @{$t->[1]};
+         my $inv = $set->invert;
+         if ($inv != $res)
+           {
+             print " (I) " . $set->string . "\n\t"
+               . $inv->string . ' != ' . $res->string . "\n";
+             return 1;
+           }
+         return 0
+       })-> join;
+    }
+  return 0;
+}
+
+sub test_simplify ()
+{
+  my @tests = ([[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"]],
+               [["FOO_TRUE", "BAR_FALSE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_TRUE", "BAR_TRUE"]],
+               [["FOO_TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_TRUE", "BAR_TRUE"],
+                ["FOO_FALSE"]],
+               [["TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                            ["BAR_TRUE",  "BAZ_TRUE"],
+                            ["BAR_FALSE", "BAZ_TRUE"]],
+               [["BAZ_TRUE"], ["FOO_TRUE", "BAR_FALSE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                            ["BAR_TRUE",  "BAZ_TRUE"],
+                            ["BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               [["FOO_FALSE"], ["BAZ_TRUE"], ["BAR_FALSE"]]],
+
+              [[["B_TRUE"],
+                ["A_FALSE", "B_TRUE"]],
+               [["B_TRUE"]]],
+
+              [[["B_TRUE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE"],
+                ["A_FALSE", "B_FALSE", "C_FALSE"]],
+               [["A_FALSE"], ["B_TRUE"]]],
+
+              [[["B_TRUE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE"],
+                ["A_FALSE", "B_FALSE", "C_FALSE"],
+                ["A_TRUE", "B_FALSE"]],
+               [["TRUE"]]],
+
+              [[["A_TRUE", "B_TRUE"],
+                ["A_TRUE", "B_FALSE"],
+                ["A_TRUE", "C_FALSE", "D_FALSE"]],
+               [["A_TRUE"]]],
+
+              [[["A_FALSE", "B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"]],
+               [           ["B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"],
+                           ["B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                           ["B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                           ["B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"]]],
+
+              [[["A_FALSE", "B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_FALSE", "B_FALSE", "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_FALSE", "D_FALSE", "E_FALSE"]],
+               [["C_FALSE", "E_FALSE"],
+                ["C_TRUE", "E_TRUE"]]],
+
+              [[["A_FALSE"],
+                ["A_TRUE", "B_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_TRUE", "D_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_TRUE", "D_TRUE", "E_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_TRUE", "D_TRUE", "E_TRUE", "F_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_TRUE", "D_TRUE", "E_TRUE"]],
+               [["TRUE"]]],
+
+              # Simplify should work with up to 31 variables.
+              [[["V01_TRUE", "V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE",
+                 "V31_TRUE"],
+                ["V01_TRUE", "V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE",
+                 "V31_FALSE"],
+                ["V01_FALSE","V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE",
+                 "V31_TRUE"],
+                ["V01_FALSE","V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE",
+                 "V31_FALSE"]],
+               [[            "V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE"
+                 ]]]);
+
+  for my $t (@tests)
+    {
+      my $set = build_set @{$t->[0]};
+      return 1
+       if threads->new(sub {
+         my $res = build_set @{$t->[1]};
+         return threads->new(sub {
+
+           # Make sure simplify() yields the expected result.
+           my $sim = $set->simplify;
+           return threads->new(sub {
+             if ($sim != $res)
+               {
+                 print " (S1) " . $set->string . "\n\t"
+                   . $sim->string . ' != ' . $res->string . "\n";
+                 return 1;
+               }
+
+             # Make sure simplify() is idempotent.
+             my $sim2 = $sim->simplify;
+             return threads->new(sub {
+               if ($sim2 != $sim)
+                 {
+                   print " (S2) " . $sim->string . "\n\t"
+                     . $sim2->string . ' != ' . $sim->string . "\n";
+                   return 1;
+                 }
+
+               # Also exercise invert() while we are at it.
+
+               my $inv1 = $set->invert->simplify;
+               return threads->new(sub {
+                 my $inv2 = $sim->invert->simplify;
+                 return threads->new(sub {
+                   if ($inv1 != $inv2)
+                     {
+                       print " (S3) " . $set->string . ", " . $sim->string . "\n\t"
+                         . $inv1->string . ' -= ' . $inv2->string . "\n";
+                       return 1;
+                     }
+                 })->join;
+               })->join;
+             })->join;
+           })->join;
+         })->join;
+       })->join;
+    }
+
+  return 0;
+}
+
+sub test_sub_conditions ()
+{
+  my @tests = ([[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               ["FOO_TRUE"],
+               [["BAR_FALSE", "BAZ_FALSE"],
+                ["BAR_FALSE", "BAZ_TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               ["FOO_TRUE", "BAR_FALSE"],
+               [["BAZ_FALSE"],
+                ["BAZ_TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               ["FOO_TRUE", "BAR_TRUE"],
+               [["FALSE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               ["FOO_TRUE", "BAR_TRUE"],
+               [["BAZ_TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE"],
+                ["FOO_TRUE", "BAR_TRUE"]],
+               ["FOO_TRUE", "BAR_TRUE"],
+               [["TRUE"]]],
+
+              [[["TRUE"]],
+               ["TRUE"],
+               [["TRUE"]]],
+
+              [[["FALSE"]],
+               ["TRUE"],
+               [["FALSE"]]],
+
+              [[["FALSE"]],
+               ["FALSE"],
+               [["FALSE"]]]);
+
+  for my $t (@tests)
+    {
+      my $t1 = build_set @{$t->[0]};
+      return 1
+        if threads->new(sub {
+         my $t2 = new Automake::Condition @{$t->[1]};
+         return threads->new(sub {
+           my $t3 = build_set @{$t->[2]};
+           return threads->new(sub {
+
+             # Make sure sub_conditions() yields the expected result.
+             my $s = $t1->sub_conditions ($t2);
+             threads->new(sub {
+               if ($s != $t3)
+                 {
+                   print " (SC) " . $t1->string . "\n\t"
+                     . $s->string . ' != ' . $t3->string . "\n";
+                   return 1;
+                 }
+             })->join;
+           })->join;
+         })->join;
+       })->join;
+    }
+}
+
+sub test_ambig ()
+{
+  my @tests = ([[["TRUE"]],
+               ["TRUE"],
+               "multiply defined"],
+              [[["C1_TRUE"]],
+               ["C1_TRUE"],
+               "multiply defined"],
+              [[["TRUE"]],
+                ["C1_FALSE"],
+               "which includes"],
+              [[["C1_TRUE"]],
+               ["C1_TRUE", "C2_TRUE"],
+               "which includes"],
+              [[["C1_TRUE", "C2_TRUE"]],
+               ["C2_TRUE"],
+               "which is included in"],
+              [[["C1_TRUE"]],
+               ["C2_TRUE"],
+               ''],
+              [[["C1_TRUE"],
+                ["C2_FALSE"]],
+               ["C1_FALSE", "C2_TRUE"],
+               '']);
+
+  my $failed = 0;
+  for my $t (@tests)
+    {
+      my $t1 = build_set @{$t->[0]};
+      $failed = 1
+        if threads->new(sub {
+         my $t2 = new Automake::Condition @{$t->[1]};
+         my $t3 = $t->[2];
+         return threads->new(sub {
+           my ($ans, $cond) = $t1->ambiguous_p ("FOO", $t2);
+           return threads->new(sub {
+             if ($t3 && $ans !~ /FOO.*$t3/)
+               {
+                 print " (A1) " . $t1->string . " vs. " . $t2->string . "\n\t"
+                   . "Error message '$ans' does not match '$t3'\n";
+                 return 1;
+               }
+             if (!$t3 && $ans ne '')
+               {
+                 print " (A2) " . $t1->string . " vs. " . $t2->string . "\n\t"
+                   . "Unexpected error message: $ans\n";
+                 return 1;
+               }
+           })->join;
+         })->join;
+       })->join;
+    }
+  return $failed;
+}
+
+exit (test_basics
+      || test_invert
+      || test_simplify
+      || test_sub_conditions
+      || test_ambig);
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/t/pm/DisjConditions.pl b/t/pm/DisjConditions.pl
new file mode 100644 (file)
index 0000000..e7c9775
--- /dev/null
@@ -0,0 +1,404 @@
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+use Automake::Condition qw/TRUE FALSE/;
+use Automake::DisjConditions;
+
+sub test_basics ()
+{
+  my $true = new Automake::DisjConditions TRUE;
+  my $false = new Automake::DisjConditions FALSE;
+  my $cond = new Automake::Condition "COND1_TRUE", "COND2_FALSE";
+  my $other = new Automake::Condition "COND3_FALSE";
+  my $another = new Automake::Condition "COND3_TRUE", "COND4_FALSE";
+  my $set1 = new Automake::DisjConditions $cond, $other;
+  my $set2 = new Automake::DisjConditions $other, $cond;
+  my $set3 = new Automake::DisjConditions FALSE, $another;
+  return 1 unless $set1 == $set2;
+  return 1 if $set1->false;
+  return 1 if $set1->true;
+  return 1 unless (new Automake::DisjConditions)->false;
+  return 1 if (new Automake::DisjConditions)->true;
+  return 1 unless $true->human eq 'TRUE';
+  return 1 unless $false->human eq 'FALSE';
+  return 1 unless $set1->human eq "(COND1 and !COND2) or (!COND3)";
+  return 1 unless $set2->human eq "(COND1 and !COND2) or (!COND3)";
+  my $one_cond_human = $set1->one_cond->human;
+  return 1 unless $one_cond_human eq "!COND3"
+                  || $one_cond_human eq "COND1 and !COND2";
+  return 1 unless $set1->string eq "COND1_TRUE COND2_FALSE | COND3_FALSE";
+
+  my $merged1 = $set1->merge ($set2);
+  my $merged2 = $set1->merge ($cond);
+  my $mult1 = $set1->multiply ($set3);
+  my $mult2 = $set1->multiply ($another);
+  return 1 unless $merged1->simplify->string eq "COND1_TRUE COND2_FALSE | COND3_FALSE";
+  return 1 unless $merged2->simplify->string eq "COND1_TRUE COND2_FALSE | COND3_FALSE";
+  return 1 unless $mult1->string eq "COND1_TRUE COND2_FALSE COND3_TRUE COND4_FALSE";
+  return 1 unless $mult1 == $mult2;
+
+  return 0;
+}
+
+sub build_set (@)
+{
+  my @conds = @_;
+  my @set = ();
+  for my $cond (@conds)
+    {
+      push @set, new Automake::Condition @$cond;
+    }
+  return new Automake::DisjConditions @set;
+}
+
+sub test_invert ()
+{
+  my @tests = ([[["FALSE"]],
+               [["TRUE"]]],
+
+              [[["TRUE"]],
+               [["FALSE"]]],
+
+              [[["COND1_TRUE", "COND2_TRUE"],
+                ["COND3_FALSE", "COND2_TRUE"]],
+               [["COND2_FALSE"],
+                ["COND1_FALSE", "COND3_TRUE"]]],
+
+              [[["COND1_TRUE", "COND2_TRUE"],
+                ["TRUE"]],
+               [["FALSE"]]],
+
+              [[["COND1_TRUE", "COND2_TRUE"],
+                ["FALSE"]],
+               [["COND1_FALSE"],
+                ["COND2_FALSE"]]],
+
+              [[["COND1_TRUE"],
+                ["COND2_FALSE"]],
+               [["COND1_FALSE", "COND2_TRUE"]]]
+              );
+
+  for my $t (@tests)
+    {
+      my $set = build_set @{$t->[0]};
+      my $res = build_set @{$t->[1]};
+      my $inv = $set->invert;
+      if ($inv != $res)
+       {
+         print " (I) " . $set->string . "\n\t"
+           . $inv->string . ' != ' . $res->string . "\n";
+         return 1;
+       }
+    }
+  return 0;
+}
+
+sub test_simplify ()
+{
+  my @tests = ([[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"]],
+               [["FOO_TRUE", "BAR_FALSE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_TRUE", "BAR_TRUE"]],
+               [["FOO_TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_TRUE", "BAR_TRUE"],
+                ["FOO_FALSE"]],
+               [["TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                            ["BAR_TRUE",  "BAZ_TRUE"],
+                            ["BAR_FALSE", "BAZ_TRUE"]],
+               [["BAZ_TRUE"], ["FOO_TRUE", "BAR_FALSE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                            ["BAR_TRUE",  "BAZ_TRUE"],
+                            ["BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               [["FOO_FALSE"], ["BAZ_TRUE"], ["BAR_FALSE"]]],
+
+              [[["B_TRUE"],
+                ["A_FALSE", "B_TRUE"]],
+               [["B_TRUE"]]],
+
+              [[["B_TRUE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE"],
+                ["A_FALSE", "B_FALSE", "C_FALSE"]],
+               [["A_FALSE"], ["B_TRUE"]]],
+
+              [[["B_TRUE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE"],
+                ["A_FALSE", "B_FALSE", "C_FALSE"],
+                ["A_TRUE", "B_FALSE"]],
+               [["TRUE"]]],
+
+              [[["A_TRUE", "B_TRUE"],
+                ["A_TRUE", "B_FALSE"],
+                ["A_TRUE", "C_FALSE", "D_FALSE"]],
+               [["A_TRUE"]]],
+
+              [[["A_FALSE", "B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"]],
+               [           ["B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"],
+                           ["B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                           ["B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                           ["B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"]]],
+
+              [[["A_FALSE", "B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_FALSE", "B_FALSE", "C_FALSE", "D_FALSE", "E_FALSE"],
+                ["A_FALSE", "B_FALSE", "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_FALSE", "B_TRUE",  "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_FALSE", "D_TRUE",  "E_FALSE"],
+                ["A_TRUE",  "B_TRUE",  "C_TRUE",  "D_TRUE",  "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_TRUE",  "D_FALSE", "E_TRUE"],
+                ["A_TRUE",  "B_FALSE", "C_FALSE", "D_FALSE", "E_FALSE"]],
+               [["C_FALSE", "E_FALSE"],
+                ["C_TRUE", "E_TRUE"]]],
+
+              [[["A_FALSE"],
+                ["A_TRUE", "B_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_TRUE", "D_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_TRUE", "D_TRUE", "E_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_TRUE", "D_TRUE", "E_TRUE", "F_FALSE"],
+                ["A_TRUE", "B_TRUE", "C_TRUE", "D_TRUE", "E_TRUE"]],
+               [["TRUE"]]],
+
+              # Simplify should work with up to 31 variables.
+              [[["V01_TRUE", "V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE",
+                 "V31_TRUE"],
+                ["V01_TRUE", "V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE",
+                 "V31_FALSE"],
+                ["V01_FALSE","V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE",
+                 "V31_TRUE"],
+                ["V01_FALSE","V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE",
+                 "V31_FALSE"]],
+               [[            "V02_TRUE", "V03_TRUE", "V04_TRUE", "V05_TRUE",
+                 "V06_TRUE", "V07_TRUE", "V08_TRUE", "V09_TRUE", "V10_TRUE",
+                 "V11_TRUE", "V12_TRUE", "V13_TRUE", "V14_TRUE", "V15_TRUE",
+                 "V16_TRUE", "V17_TRUE", "V18_TRUE", "V19_TRUE", "V20_TRUE",
+                 "V21_TRUE", "V22_TRUE", "V23_TRUE", "V24_TRUE", "V25_TRUE",
+                 "V26_TRUE", "V27_TRUE", "V28_TRUE", "V29_TRUE", "V30_TRUE"
+                 ]]]);
+
+  for my $t (@tests)
+    {
+      my $set = build_set @{$t->[0]};
+      my $res = build_set @{$t->[1]};
+
+      # Make sure simplify() yields the expected result.
+      my $sim = $set->simplify;
+      if ($sim != $res)
+       {
+         print " (S1) " . $set->string . "\n\t"
+           . $sim->string . ' != ' . $res->string . "\n";
+         return 1;
+       }
+
+      # Make sure simplify() is idempotent.
+      my $sim2 = $sim->simplify;
+      if ($sim2 != $sim)
+       {
+         print " (S2) " . $sim->string . "\n\t"
+           . $sim2->string . ' != ' . $sim->string . "\n";
+         return 1;
+       }
+
+      # Also exercise invert() while we are at it.
+
+      my $inv1 = $set->invert->simplify;
+      my $inv2 = $sim->invert->simplify;
+      if ($inv1 != $inv2)
+       {
+         print " (S3) " . $set->string . ", " . $sim->string . "\n\t"
+           . $inv1->string . ' != ' . $inv2->string . "\n";
+         return 1;
+       }
+    }
+
+  return 0;
+}
+
+sub test_sub_conditions ()
+{
+  my @tests = ([[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               ["FOO_TRUE"],
+               [["BAR_FALSE", "BAZ_FALSE"],
+                ["BAR_FALSE", "BAZ_TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               ["FOO_TRUE", "BAR_FALSE"],
+               [["BAZ_FALSE"],
+                ["BAZ_TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAR_FALSE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               ["FOO_TRUE", "BAR_TRUE"],
+               [["FALSE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE", "BAZ_FALSE"],
+                ["FOO_TRUE", "BAZ_TRUE"],
+                ["FOO_FALSE"]],
+               ["FOO_TRUE", "BAR_TRUE"],
+               [["BAZ_TRUE"]]],
+
+              [[["FOO_TRUE", "BAR_FALSE"],
+                ["FOO_TRUE", "BAR_TRUE"]],
+               ["FOO_TRUE", "BAR_TRUE"],
+               [["TRUE"]]],
+
+              [[["TRUE"]],
+               ["TRUE"],
+               [["TRUE"]]],
+
+              [[["FALSE"]],
+               ["TRUE"],
+               [["FALSE"]]],
+
+              [[["FALSE"]],
+               ["FALSE"],
+               [["FALSE"]]]);
+
+  for my $t (@tests)
+    {
+      my $t1 = build_set @{$t->[0]};
+      my $t2 = new Automake::Condition @{$t->[1]};
+      my $t3 = build_set @{$t->[2]};
+
+      # Make sure sub_conditions() yields the expected result.
+      my $s = $t1->sub_conditions ($t2);
+      if ($s != $t3)
+       {
+         print " (SC) " . $t1->string . "\n\t"
+           . $s->string . ' != ' . $t3->string . "\n";
+         return 1;
+       }
+    }
+}
+
+sub test_ambig ()
+{
+  my @tests = ([[["TRUE"]],
+               ["TRUE"],
+               "multiply defined"],
+              [[["C1_TRUE"]],
+               ["C1_TRUE"],
+               "multiply defined"],
+              [[["TRUE"]],
+                ["C1_FALSE"],
+               "which includes"],
+              [[["C1_TRUE"]],
+               ["C1_TRUE", "C2_TRUE"],
+               "which includes"],
+              [[["C1_TRUE", "C2_TRUE"]],
+               ["C2_TRUE"],
+               "which is included in"],
+              [[["C1_TRUE"]],
+               ["C2_TRUE"],
+               ''],
+              [[["C1_TRUE"],
+                ["C2_FALSE"]],
+               ["C1_FALSE", "C2_TRUE"],
+               '']);
+
+  for my $t (@tests)
+    {
+      my $t1 = build_set @{$t->[0]};
+      my $t2 = new Automake::Condition @{$t->[1]};
+      my $t3 = $t->[2];
+      my ($ans, $cond) = $t1->ambiguous_p ("FOO", $t2);
+      if ($t3 && $ans !~ /FOO.*$t3/)
+       {
+         print " (A1) " . $t1->string . " vs. " . $t2->string . "\n\t"
+           . "Error message '$ans' does not match '$t3'\n";
+         return 1;
+       }
+      if (!$t3 && $ans ne '')
+       {
+         print " (A2) " . $t1->string . " vs. " . $t2->string . "\n\t"
+           . "Unexpected error message: $ans\n";
+         return 1;
+       }
+    }
+  return 0;
+}
+
+exit (test_basics
+      || test_invert
+      || test_simplify
+      || test_sub_conditions
+      || test_ambig);
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/t/pm/Version.pl b/t/pm/Version.pl
new file mode 100644 (file)
index 0000000..293badc
--- /dev/null
@@ -0,0 +1,129 @@
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+use Automake::Version;
+
+my $failed = 0;
+
+sub test_version_compare
+{
+  my ($left, $right, $result) = @_;
+  my @leftver = Automake::Version::split ($left);
+  my @rightver = Automake::Version::split ($right);
+  if ($#leftver == -1)
+  {
+    print "can't grok \"$left\"\n";
+    $failed = 1;
+    return;
+  }
+  if ($#rightver == -1)
+  {
+    print "can't grok \"$right\"\n";
+    $failed = 1;
+    return;
+  }
+  my $res = Automake::Version::compare (@leftver, @rightver);
+  if ($res != $result)
+  {
+    print "compare (\"$left\", \"$right\") = $res! (not $result?)\n";
+    $failed = 1;
+  }
+
+  my $check_expected = ($result == 0 || $result == 1) ? 0 : 1;
+  # Exception for 'foo' fork.
+  $check_expected = 1
+    if ($right =~ /foo/ && !($left =~ /foo/));
+
+  my $check = Automake::Version::check ($left, $right);
+  if ($check != $check_expected)
+  {
+    print "check (\"$left\", \"$right\") = $check! (not $check_expected?)\n";
+    $failed = 1;
+  }
+}
+
+sub test_bad_versions
+{
+  my ($ver) = @_;
+  my @version = Automake::Version::split ($ver);
+  if ($#version != -1)
+  {
+    print "shouldn't grok \"$ver\"\n";
+    $failed = 1;
+  }
+}
+
+my @tests = (
+# basics
+  ['1.0', '2.0', -1],
+  ['2.0', '1.0', 1],
+  ['1.2', '1.2', 0],
+  ['1.1', '1.2', -1],
+  ['1.2', '1.1', 1],
+# alphas
+  ['1.4', '1.4g', -1],
+  ['1.4g', '1.5', -1],
+  ['1.4g', '1.4', 1],
+  ['1.5', '1.4g', 1],
+  ['1.4a', '1.4g', -1],
+  ['1.5a', '1.3g', 1],
+  ['1.6a', '1.6a', 0],
+# micros
+  ['1.5.1', '1.5', 1],
+  ['1.5.0', '1.5', 0],
+  ['1.5.4', '1.6.1', -1],
+# micros and alphas
+  ['1.5a', '1.5.1', 1],
+  ['1.5a', '1.5.1a', 1],
+  ['1.5a', '1.5.1f', 1],
+  ['1.5', '1.5.1a', -1],
+  ['1.5.1a', '1.5.1f', -1],
+  ['1.5.1f', '1.5.1a', 1],
+  ['1.5.1f', '1.5.1f', 0],
+# special exceptions
+  ['1.6-p5a', '1.6.5a', 0],
+  ['1.6', '1.6-p5a', -1],
+  ['1.6-p4b', '1.6-p5a', -1],
+  ['1.6-p4b', '1.6-foo', 1],
+  ['1.6-p4b', '1.6a-foo', -1],
+  ['1.6-p5', '1.6.5', 0],
+  ['1.6a-foo', '1.6a-foo', 0],
+);
+
+my @bad_versions = (
+  '', 'a', '1', '1a', '1.2.3.4', '-1.2'
+);
+
+test_version_compare (@{$_}) foreach @tests;
+test_bad_versions ($_) foreach @bad_versions;
+
+exit $failed;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/t/pm/Version2.pl b/t/pm/Version2.pl
new file mode 100644 (file)
index 0000000..b452e47
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# prog_error due to invalid $VERSION.
+
+use Automake::Version;
+
+Automake::Version::check ('', '1.2.3');
diff --git a/t/pm/Version3.pl b/t/pm/Version3.pl
new file mode 100644 (file)
index 0000000..2f7d413
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# prog_error due to invalid $REQUIRED.
+
+use Automake::Version;
+
+Automake::Version::check ('1.2.3', '');
diff --git a/t/pm/Wrap.pl b/t/pm/Wrap.pl
new file mode 100644 (file)
index 0000000..a929a6a
--- /dev/null
@@ -0,0 +1,112 @@
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+use Automake::Wrap qw/wrap makefile_wrap/;
+
+my $failed = 0;
+
+sub test_wrap
+{
+  my ($in, $exp_out) = @_;
+
+  my $out = &wrap (@$in);
+  if ($out ne $exp_out)
+    {
+      print STDERR "For: @$in\nGot:\n$out\nInstead of:\n$exp_out\n---\n";
+      ++$failed;
+    }
+}
+
+sub test_makefile_wrap
+{
+  my ($in, $exp_out) = @_;
+
+  my $out = &makefile_wrap (@$in);
+  if ($out ne $exp_out)
+    {
+      print STDERR "For: @$in\nGot:\n$out\nInstead of:\n$exp_out\n---\n";
+      ++$failed;
+    }
+}
+
+my @tests = (
+  [["HEAD:", "NEXT:", "CONT", 13, "v" ,"a", "l", "ue", "s", "values"],
+"HEAD:v aCONT
+NEXT:l ueCONT
+NEXT:sCONT
+NEXT:values
+"],
+  [["rule: ", "\t", " \\", 20, "dep1" ,"dep2", "dep3", "dep4", "dep5",
+    "dep06", "dep07", "dep08"],
+"rule: dep1 dep2 \\
+\tdep3 dep4 \\
+\tdep5 dep06 \\
+\tdep07 \\
+\tdep08
+"],
+  [["big header:", "big continuation:", " END", 5, "diag1", "diag2", "diag3"],
+"big header:diag1 END
+big continuation:diag2 END
+big continuation:diag3
+"],
+  [["big header:", "cont: ", " END", 16, "word1", "word2"],
+"big header: END
+cont: word1 END
+cont: word2
+"],
+  [["big header:", "", " END", 16, "w1", "w2 ", "w3"],
+"big header: END
+w1 w2 w3
+"]);
+
+my @makefile_tests = (
+  [["target:"],
+"target:
+"],
+  [["target:", "\t"],
+"target:
+"],
+  [["target:", "\t", "prereq1", "prereq2"],
+"target: prereq1 prereq2
+"],
+  [["target: ", "\t", "this is a long list of prerequisites ending in space",
+    "so that there is no need for another space before the backslash",
+    "unlike in the second line"],
+"target: this is a long list of prerequisites ending in space \\
+\tso that there is no need for another space before the backslash \\
+\tunlike in the second line
+"]);
+
+test_wrap (@{$_}) foreach @tests;
+test_makefile_wrap (@{$_}) foreach @makefile_tests;
+
+exit $failed;
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## End:
diff --git a/t/posixsubst-data.sh b/t/posixsubst-data.sh
new file mode 100755 (executable)
index 0000000..c2c2d7e
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works
+# in when used with the DATA primary.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+foodir = $(prefix)
+
+t1 = foo1 foo2
+t2 = barx
+t3 = baz.y
+
+bar.data bazzardoz:
+       : > $@
+CLEANFILES = bar.data bazzardoz
+
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+dist_foo_DATA = $(t1:=.txt)
+foo_DATA = $(t2:x=.data)
+nodist_foo_DATA = $(t3:.y=zardoz)
+
+check-local: test
+.PHONY: test
+test: distdir
+       ls -l $(distdir)
+       test ! -r $(distdir)/foo.data
+       test ! -r $(distdir)/bazzardoz
+
+installcheck-local:
+       ls -l $(prefix)
+       test -f $(prefix)/foo1.txt
+       test -f $(prefix)/foo2.txt
+       test -f $(prefix)/bar.data
+       test -f $(prefix)/bazzardoz
+END
+
+: > foo1.txt
+: > foo2.txt
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd/_inst"
+$MAKE install
+test -f bar.data
+test -f bazzardoz
+$MAKE test
+$MAKE installcheck
+$MAKE distcheck
+
+:
diff --git a/t/posixsubst-extradist.sh b/t/posixsubst-extradist.sh
new file mode 100755 (executable)
index 0000000..7e3cf2f
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works when used
+# in EXTRA_DIST.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+t1 = foo1 foo2
+t2 = bar.x
+t3 = baz-y
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+EXTRA_DIST = $(t1:=.c) $(t2:.x=.f) $(t3:-y=ar)
+bazar bar.f:
+       : > $@
+.PHONY: test
+test: distdir
+       ls -l $(distdir)
+       test -f $(distdir)/foo1.c
+       test -f $(distdir)/foo2.c
+       test -f $(distdir)/bar.f
+       test -f $(distdir)/bazar
+END
+
+: > foo1.c
+: > foo2.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+:
diff --git a/t/posixsubst-ldadd.sh b/t/posixsubst-ldadd.sh
new file mode 100755 (executable)
index 0000000..f1cc55b
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works
+# when used in LDADD.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AM_PROG_AR
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+u = libquux1.lib libquux2.lib
+v = libquux1
+w = none
+
+zardozdir = $(prefix)/zardoz
+zardoz_PROGRAMS = foo bar
+
+noinst_LIBRARIES = libquux1.a libquux2.a libquux3.a
+
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+LDADD = $(u:.lib=.a)
+bar_LDADD = $(v:=.a) libquux2.a $(w:none=libquux3.a)
+
+libquux1.c:
+       echo 'int quux1(void) { return 0; }' > $@
+CLEANFILES = libquux1.c # For FreeBSD make.
+END
+
+cat > foo.c <<'END'
+int main(void)
+{
+  int quux1(void), quux2(void);
+  return quux1() + quux2();
+}
+END
+
+cat > bar.c <<'END'
+int main(void)
+{
+  int quux1(void), quux2(void), quux3(void);
+  return quux1() + quux2() + quux3();
+}
+END
+
+echo 'int quux2(void) { return 0; }' > libquux2.c
+echo 'int quux3(void) { return 0; }' > libquux3.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+test -f libquux1.c
+$MAKE distcheck
+
+:
diff --git a/t/posixsubst-libraries.sh b/t/posixsubst-libraries.sh
new file mode 100755 (executable)
index 0000000..f437571
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works when used
+# with the LIBRARIES primary in a "simple" way.
+# Keep this in sync with sister test 'posixsubst-ltlibraries.test'.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AM_PROG_AR
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+foolibs = libfoo1 libfoo2
+barlibs = libbaz
+
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+lib_LIBRARIES = $(foolibs:=.a) $(barlibs:z=r.a)
+
+libbar.c:
+       echo 'int bar(void) { return 0; }' > $@
+CLEANFILES = libbar.c # For FreeBSD make.
+
+installcheck-local:
+       ls -l $(libdir)
+       test -f $(libdir)/libfoo1.a
+       test -f $(libdir)/libfoo2.a
+       test -f $(libdir)/libbar.a
+END
+
+echo 'int bar1(void) { return 0; }' > libfoo1.c
+echo 'int bar2(void) { return 0; }' > libfoo2.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd/_inst"
+$MAKE
+test -f libfoo2.c
+$MAKE install
+$MAKE installcheck
+$MAKE distcheck
+
+:
diff --git a/t/posixsubst-ltlibraries.sh b/t/posixsubst-ltlibraries.sh
new file mode 100755 (executable)
index 0000000..b4b2a92
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works when used
+# with the LTLIBRARIES primary in a "simple" way.
+# Keep this in sync with sister test 'posixsubst-libraries.test'.
+
+required='cc libtool libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+foolibs = libfoo1 libfoo2
+barlibs = libbaz
+
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+lib_LTLIBRARIES = $(foolibs:=.la) $(barlibs:z=r.la)
+
+libbar.c:
+       echo 'int bar(void) { return 0; }' > $@
+CLEANFILES = libbar.c # For FreeBSD make.
+
+installcheck-local:
+       ls -l $(libdir)
+       test -f $(libdir)/libfoo1.la
+       test -f $(libdir)/libfoo2.la
+       test -f $(libdir)/libbar.la
+END
+
+echo 'int bar1(void) { return 0; }' > libfoo1.c
+echo 'int bar2(void) { return 0; }' > libfoo2.c
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd/_inst"
+$MAKE
+test -f libfoo2.c
+$MAKE install
+$MAKE installcheck
+$MAKE distcheck
+
+:
diff --git a/t/posixsubst-programs.sh b/t/posixsubst-programs.sh
new file mode 100755 (executable)
index 0000000..a02cb92
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works when used
+# with the PROGRAMS primary.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+t1 = foo1 foo2
+t2 = barx bar2
+
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+bin_PROGRAMS = $(t1:=-p) $(t2:2=y)
+
+installcheck-local:
+       ls -l $(prefix)/bin
+       test -f $(prefix)/bin/foo1-p$(EXEEXT)
+       test -x $(prefix)/bin/foo1-p$(EXEEXT)
+       test -f $(prefix)/bin/foo2-p$(EXEEXT)
+       test -x $(prefix)/bin/foo2-p$(EXEEXT)
+       test -f $(prefix)/bin/barx$(EXEEXT)
+       test -x $(prefix)/bin/barx$(EXEEXT)
+       test -f $(prefix)/bin/bary$(EXEEXT)
+       test -x $(prefix)/bin/bary$(EXEEXT)
+END
+
+for f in foo1-p.c foo2-p.c barx.c bary.c; do
+  echo 'int main(void) { return 0; }' > $f
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd/_inst"
+$MAKE
+$MAKE install
+$MAKE installcheck
+$MAKE distcheck
+
+:
diff --git a/t/posixsubst-scripts.sh b/t/posixsubst-scripts.sh
new file mode 100755 (executable)
index 0000000..cda515f
--- /dev/null
@@ -0,0 +1,99 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works when used
+# with the SCRIPTS primary.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+# We have to be careful with 'test -x' commands on MinGW/MSYS, because
+# the file system does not actually have execute permission information.
+# Instead, that is emulated by looking at the file content, and returning
+# 0 if the file starts with, e.g., a COFF header or with '#!'.
+# So we need to create actual scripts in the make rules and in the file
+# creation below.
+
+cat > Makefile.am << 'END'
+t1 = foo1 foo2
+t2 = bar1x bar2
+t3 = quu-baz
+
+bar1 bar2:
+       (echo '#!/bin/sh' && echo 'exit 0') > $@
+quux.pl:
+       (echo '#!/bin/perl' && echo '1;') > $@
+CLEANFILES = bar1 bar2 quux.pl
+
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+dist_sbin_SCRIPTS = $(t1:=.sh)
+libexec_SCRIPTS = $(t2:x=)
+nodist_bin_SCRIPTS = $(t3:-baz=x.pl)
+
+check-local: test1 test2
+.PHONY: test1 test2
+test1:
+       ls -l
+       test -f bar1
+       test -f bar2
+       test -f quux.pl
+test2: distdir
+       ls -l $(distdir)
+## The scripts foo1.sh and foo2.sh should be distributed.
+       test -f $(distdir)/foo1.sh
+       test -f $(distdir)/foo2.sh
+## The scripts bar1, bar2 and quux.pl shouldn't be distributed.
+       test ! -r $(distdir)/bar1
+       test ! -r $(distdir)/bar2
+       test ! -r $(distdir)/quux.pl
+
+installcheck-local:
+       ls -l $(libexecdir) $(bindir) $(sbindir)
+       test -f $(sbindir)/foo1.sh
+       test -x $(sbindir)/foo1.sh
+       test -f $(sbindir)/foo2.sh
+       test -x $(sbindir)/foo2.sh
+       test -f $(libexecdir)/bar1
+       test -x $(libexecdir)/bar1
+       test -f $(libexecdir)/bar2
+       test -x $(libexecdir)/bar2
+       test -f $(bindir)/quux.pl
+       test -x $(bindir)/quux.pl
+END
+
+cat > foo1.sh <<'END'
+#!/bin/sh
+exit 0
+END
+cp foo1.sh foo2.sh
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd/_inst"
+$MAKE
+$MAKE test1 test2
+$MAKE install
+$MAKE installcheck
+$MAKE distcheck
+
+:
diff --git a/t/posixsubst-sources.sh b/t/posixsubst-sources.sh
new file mode 100755 (executable)
index 0000000..ccd61b9
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works when used
+# with the SOURCES primary.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+
+FOO = foo.cxx
+BAR = bar__
+BAZ = baz.
+
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+foo_SOURCES = main.c $(FOO:.cxx=.c)
+dist_foo_SOURCES = $(BAR:__=.c)
+nodist_foo_SOURCES = $(BAZ:=c)
+
+bar.c baz.c:
+       echo 'int $@ (void) { return 0; }' | sed 's/\.c //' > $@
+CLEANFILES = baz.c
+CLEANFILES += bar.c # For FreeBSD make.
+
+.PHONY: test test2
+check-local: test1 test2
+test1:
+       ls -l . $(srcdir)
+       test -f $(srcdir)/bar.c
+       test -f baz.c
+test2: distdir
+       ls -l $(distdir)
+## These sources should be distributed ...
+       test -f $(distdir)/bar.c
+       test -f $(distdir)/foo.c
+       test -f $(distdir)/main.c
+## ... and this shouldn't.
+       test ! -r $(distdir)/baz.c
+END
+
+cat > main.c <<'END'
+int main(void)
+{
+  int foo(void), bar(void), baz(void);
+  return foo() + bar() + baz();
+}
+END
+
+echo 'int foo(void) { return 0; }' > foo.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+$MAKE test1 test2
+$MAKE distcheck
+
+:
diff --git a/t/posixsubst-tests-w.sh b/t/posixsubst-tests-w.sh
new file mode 100755 (executable)
index 0000000..312b8ee
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_serial_tests=yes
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/posixsubst-tests.sh"; then
+    echo "$0: will source $dir/t/posixsubst-tests.sh"
+    . "$dir/t/posixsubst-tests.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/posixsubst-tests.sh'" >&2
+exit '99'
diff --git a/t/posixsubst-tests.sh b/t/posixsubst-tests.sh
new file mode 100755 (executable)
index 0000000..a51176b
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that POSIX variable expansion '$(var:str=rpl)' works when used
+# with the TESTS special variable.
+
+# For gen-testsuite-part: ==> try-with-serial-tests <==
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+t1 = foo1 foo2
+t2 = barx
+t3 = bar2
+
+foo2.test barz:
+       (echo '#!/bin/sh' && echo 'exit 0') > $@ && chmod a+x $@
+CLEANFILES = foo2.test barz # For FreeBSD make.
+
+# Also try an empty match suffix, to ensure that the ':=' in there is
+# not confused by the parser with an unportable assignment operator.
+TESTS = $(t1:=.test) $(t2:x=y) $(t3:2=z)
+
+EXTRA_DIST = $(TESTS)
+MOSTLYCLEANFILES = *.out
+END
+
+cat > foo1.test <<'END'
+#!/bin/sh
+touch foo1.out
+test x"${TESTSUITE_OK-no}" = x"yes"
+END
+sed 's/foo1/bary/g' foo1.test > bary
+chmod +x foo1.test bary
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check >out 2>&1 && { cat out; Exit 1; }
+cat out
+ls -l
+grep '^FAIL: foo1\.test *$' out
+grep '^PASS: foo2\.test *$' out
+grep '^FAIL: bary *$' out
+grep '^PASS: barz *$' out
+test -f foo1.out
+test -f bary.out
+
+TESTSUITE_OK=yes $MAKE distcheck
+
+:
diff --git a/t/postproc.sh b/t/postproc.sh
new file mode 100755 (executable)
index 0000000..7eaa4f8
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check to make sure we recognize a Makefile.in, even if post-processed
+# and renamed.
+
+required=cc
+. ./defs || Exit 1
+
+cat >configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AC_CONFIG_FILES([myMakefile])
+AC_OUTPUT
+END
+
+cat > myMakefile.am << 'END'
+bin_PROGRAMS = fred
+fred_SOURCES = fred.c
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -- myMakefile
+
+mv myMakefile.in myMakefile.old
+echo '# Post-processed by post-processor 3.14.' > myMakefile.in
+cat myMakefile.old >> myMakefile.in
+
+./configure
+
+test -f .deps/fred.Po || test -f _deps/fred.Po || Exit 1
+
+:
diff --git a/t/ppf77.sh b/t/ppf77.sh
new file mode 100755 (executable)
index 0000000..70266d6
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure preprocessed F77 works.
+# Report from Jochen Kuepper.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_F77
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = ppf
+ppf_SOURCES = foo.F q.r
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/pr2.sh b/t/pr2.sh
new file mode 100755 (executable)
index 0000000..9aa7bc5
--- /dev/null
+++ b/t/pr2.sh
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug reported in PR 2.
+# "make dist" fails for AC_OUTPUT(README.foo:templ/README.foo.in).
+#
+# == Report ==
+# When my AC_OUTPUT macro in configure.ac contains something
+# like the following (among the Makefiles)
+#       README.foo:templ/README.foo.in
+# the generated dist target in the Makefile.in fails,
+# because DIST_COMMON will contain templ/README.foo.in
+# and the dist target will try to copy templ/README.foo.in
+# to the distribution directory before it creates a templ
+# subdirectory in the distribution directory.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT([README.foo:templ/README.foo.in])
+END
+
+: > Makefile.am
+
+mkdir templ
+: > templ/README.foo.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE distdir
+test -f $distdir/templ/README.foo.in
+
+:
diff --git a/t/pr211.sh b/t/pr211.sh
new file mode 100755 (executable)
index 0000000..97e28eb
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 211.
+#
+# == Description ==
+# Suppose you have a library and an ltlibrary in the same
+# directory which use the same source:
+#
+#   libfoo_la_SOURCES = foo.c
+#   libbar_a_SOURCES = foo.c
+#
+# In this case foo.c will be compiled twice but using different
+# compilers.  This is a conflict.  In this case the user should
+# rename one of the 'foo.o' files.
+
+required=libtoolize
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = helldl
+lib_LTLIBRARIES = libfoo.la
+helldl_SOURCES = foo.c
+libfoo_la_SOURCES = foo.c
+END
+
+libtoolize
+$ACLOCAL
+AUTOMAKE_fails -Wnone -a
+$FGREP 'foo.$(OBJEXT)' stderr
+
+:
diff --git a/t/pr220.sh b/t/pr220.sh
new file mode 100755 (executable)
index 0000000..657221d
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR automake/220.
+# Test for problems when conditionals are not actually defined.
+# Check that the problems is diagnosed by configure.
+# This isn't perfect (ideally we'd like an error from autoconf),
+# but it is the best we can do.  It certainly makes it easier
+# to debug the problem.
+# Note that this should be also in the documentation.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+if NEVER_TRUE
+NEVER_DEFINED = foo.txt
+endif
+data_DATA = $(NEVER_DEFINED)
+EOF
+
+cat >> configure.ac << 'EOF'
+AC_ARG_ENABLE([foo],
+[  --enable-foo          Enable foo],
+[ if test "foo" = "bar" ; then
+    AM_CONDITIONAL([NEVER_TRUE], [true])
+  else
+    AM_CONDITIONAL([NEVER_TRUE], [false])
+  fi
+])
+AC_OUTPUT
+EOF
+
+mkdir build
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cd build
+# configure should fail since we've done something invalid.
+../configure 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'conditional.*NEVER_TRUE' stderr
+
+:
diff --git a/t/pr224.sh b/t/pr224.sh
new file mode 100755 (executable)
index 0000000..51e3c17
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR automake/224: $(top_srcdir) w.r.t. dependencies.
+#
+# == Description ==
+# Dependency tracking data should be stored in in the relative path
+# of the source file, as opposed the object file.
+# I.e., for 'foo.c' in '$(top_srcdir)/bar', being built in
+# '$(top_srcdir)/build', the location of the '.deps' directory
+# should be '$(top_builddir)/bar/.deps'.
+
+required=cc
+. ./defs || Exit 1
+
+mkdir foo
+
+cat >foo/main.c <<'EOF'
+int main (void)
+{
+  return 0;
+}
+EOF
+
+cat >Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = bar
+bar_SOURCES = foo/main.c
+EOF
+
+cat >>configure.ac <<'EOF'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+EOF
+
+mkdir build
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+cd build
+../configure
+
+$MAKE
+test -d foo/.deps
+$MAKE distclean
+test -d foo/.deps && Exit 1
+
+:
diff --git a/t/pr229.sh b/t/pr229.sh
new file mode 100755 (executable)
index 0000000..cacdb82
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR automake/229.
+# Make sure AC_CYGWIN requires config.{sub,guess}.
+# Reported by James Youngman.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<EOF
+AC_CYGWIN
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE -a
+
+test -f config.sub
+test -f config.guess
+
+:
diff --git a/t/pr243.sh b/t/pr243.sh
new file mode 100755 (executable)
index 0000000..01ba644
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 243.
+# AM_OUTPUT_DEPENDENCY_COMMANDS doesn't handle
+# 'Makefile:Makefile.in:tail.mk' in AC_OUTPUT.
+#
+# == Report ==
+# If configure.ac has something like:
+#       AC_OUTPUT(Makefile:Makefile.in:tail.mk)
+# then config.status cannot parse the Makefile to build the
+# dependency files in the .deps directory.  This is because
+# the AM_OUTPUT_DEPENDENCY_COMMANDS macro cannot cope with
+# the colon in the CONFIG_FILES variable.
+
+required=cc
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AC_CONFIG_FILES([Makefile:Makefile.in:tail.mk])
+AC_OUTPUT
+END
+
+: > tail.mk
+
+cat > Makefile.am << 'END'
+include_HEADERS  = 3dfx.h linutil.h
+noinst_HEADERS   = fx64.h fxdll.h fximg.h fxglob.h \
+                   fxos.h fxver.h glob.h
+noinst_PROGRAMS = fxmisc
+fxmisc_SOURCES  = fx64.c fximg.c fxos.c linutil.c
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+
+test -f .deps/fx64.Po
+
+:
diff --git a/t/pr266.sh b/t/pr266.sh
new file mode 100755 (executable)
index 0000000..ac56878
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 266.
+# Dependency tracking -vs- nonstandard Makefile names
+
+required=cc
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AC_CONFIG_FILES([Maudefile])
+AC_OUTPUT
+END
+
+cat > Maudefile.am << 'END'
+include_HEADERS = 3dfx.h linutil.h
+noinst_HEADERS  = fx64.h fxdll.h fximg.h fxglob.h \
+                  fxos.h fxver.h glob.h
+noinst_PROGRAMS = fxmisc
+fxmisc_SOURCES  = fx64.c fximg.c fxos.c linutil.c
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure --enable-dependency-tracking
+
+test -f .deps/fx64.Po
+
+:
diff --git a/t/pr279-2.sh b/t/pr279-2.sh
new file mode 100755 (executable)
index 0000000..5618d76
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another test related to PR 279.
+# Multiple DEPENDENCIES on conditionals.
+# Please keep this in sync with sister test pr279.test.
+#
+# == Report ==
+# When defining xxx_LDADD and xxx_DEPENDENCIES variables where the
+# xxx_LDADD one contains values set in conditionals, automake will
+# fail with messages like:
+#       foo_DEPENDENCIES was already defined in condition TRUE, ...
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([FOOTEST], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if FOOTEST
+foo_LDADD = zardoz
+else
+foo_LDADD = maude
+endif
+
+bin_PROGRAMS = foo
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^@FOOTEST_TRUE@foo_DEPENDENCIES *= *zardoz$' Makefile.in
+grep '^@FOOTEST_FALSE@foo_DEPENDENCIES *= *maude$' Makefile.in
+
+:
diff --git a/t/pr279.sh b/t/pr279.sh
new file mode 100755 (executable)
index 0000000..3383131
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 279.
+# Multiple DEPENDENCIES on conditionals.
+# Please keep this in sync with sister test pr279-2.test.
+#
+# == Report ==
+# When defining xxx_LDADD and xxx_DEPENDENCIES variables where the
+# xxx_LDADD one contains values set in conditionals, automake will
+# fail with messages like:
+#       foo_DEPENDENCIES was already defined in condition TRUE, ...
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([FOOTEST], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+if FOOTEST
+xtralib =
+else
+xtralib =
+endif
+
+bin_PROGRAMS = foo
+foo_LDADD = ${xtralib}
+foo_DEPENDENCIES =
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/pr287.sh b/t/pr287.sh
new file mode 100755 (executable)
index 0000000..681f6d6
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 287: empty SUBDIRS.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS =
+bin_SCRIPTS = foo
+END
+
+cat > foo << 'END'
+#! /bin/sh
+echo Maude
+END
+
+chmod +x foo
+
+mkdir install
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure "--prefix=`cd install && pwd`"
+
+$MAKE
+$MAKE distdir
+
+:
diff --git a/t/pr300-lib.sh b/t/pr300-lib.sh
new file mode 100755 (executable)
index 0000000..b655cf0
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that installing subdirectory libraries works.
+# PR/300
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_RANLIB
+AC_PROG_CC
+AM_PROG_AR
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LIBRARIES = subdir/liba.a
+subdir_liba_a_SOURCES = a.c
+
+nobase_lib_LIBRARIES = subdir/libb.a
+subdir_libb_a_SOURCES = a.c
+END
+
+cat > a.c << 'END'
+int i = 3;
+END
+
+## A rule in the Makefile should create subdir
+# mkdir subdir
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+# We pass '--libdir' explicitly, to avoid spurious failures due to users
+# or distributions possibly overriding '${libdir}' in their $CONFIG_SITE
+# file (for example, defining it to '${prefix}/lib64' on 64-bit systems,
+# as is the case with openSUSE 12.1).  See automake bug#10426.
+cwd=`pwd` || Exit 99
+./configure --prefix "$cwd/inst" --libdir "$cwd/inst/lib"
+
+$MAKE
+
+test -f subdir/liba.a
+test -f subdir/libb.a
+
+$MAKE install
+
+test -f inst/lib/liba.a
+test -f inst/lib/subdir/libb.a
+
+$MAKE uninstall
+
+test -f inst/lib/liba.a && Exit 1
+test -f inst/lib/subdir/libb.a && Exit 1
+
+$MAKE install-strip
+
+test -f inst/lib/liba.a
+test -f inst/lib/subdir/libb.a
+
+:
diff --git a/t/pr300-ltlib.sh b/t/pr300-ltlib.sh
new file mode 100755 (executable)
index 0000000..8db6b07
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that installing subdirectory libtool libraries works.
+# PR/300
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = subdir/liba.la
+subdir_liba_la_SOURCES = a.c
+
+nobase_lib_LTLIBRARIES = subdir/libb.la
+subdir_libb_la_SOURCES = a.c
+END
+
+cat > a.c << 'END'
+int i = 3;
+END
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+# We pass '--libdir' explicitly, to avoid spurious failures due to users
+# or distributions possibly overriding '${libdir}' in their $CONFIG_SITE
+# file (for example, defining it to '${prefix}/lib64' on 64-bit systems,
+# as is the case with openSUSE 12.1).  See automake bug#10426.
+cwd=`pwd` || Exit 99
+./configure --prefix "$cwd/inst" --libdir "$cwd/inst/lib"
+
+# A rule in the Makefile should create subdir.
+test ! -d subdir
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+test -d subdir
+
+grep 'liba.la .*-rpath .*lib' stdout
+grep 'liba.la .*-rpath .*lib/subdir' stdout && Exit 1
+grep 'libb.la .*-rpath .*lib/subdir' stdout
+
+test -f subdir/liba.la
+test -f subdir/libb.la
+
+$MAKE install 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'remember.*--finish' stderr && Exit 1
+
+test -f inst/lib/liba.la
+test -f inst/lib/subdir/libb.la
+
+$MAKE uninstall
+
+test -f inst/lib/liba.la && Exit 1
+test -f inst/lib/subdir/libb.la && Exit 1
+
+$MAKE install-strip
+
+test -f inst/lib/liba.la
+test -f inst/lib/subdir/libb.la
+
+:
diff --git a/t/pr300-prog.sh b/t/pr300-prog.sh
new file mode 100755 (executable)
index 0000000..6812231
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that installing subdirectory programs works.
+# PR/300
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = subdir/wish
+subdir_wish_SOURCES = a.c
+
+nobase_bin_PROGRAMS = subdir/want
+subdir_want_SOURCES = a.c
+
+test-all: all
+       test -f subdir/wish$(EXEEXT)
+       test -f subdir/want$(EXEEXT)
+test-install: install
+       test -f inst/bin/wish$(EXEEXT)
+       test -f inst/bin/subdir/want$(EXEEXT)
+test-uninstall: uninstall
+       test ! -f inst/bin/wish$(EXEEXT)
+       test ! -f inst/bin/subdir/want$(EXEEXT)
+test-install-strip: install-strip
+       test -f inst/bin/wish$(EXEEXT)
+       test -f inst/bin/subdir/want$(EXEEXT)
+END
+
+cat > a.c << 'END'
+#include <stdio.h>
+int main ()
+{
+   printf ("hi liver!\n");
+   return 0;
+}
+END
+
+## A rule in the Makefile should create subdir
+# mkdir subdir
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+./configure --prefix "`pwd`/inst"
+
+$MAKE test-all
+$MAKE test-install
+$MAKE test-uninstall
+$MAKE test-install-strip
+
+:
diff --git a/t/pr307.sh b/t/pr307.sh
new file mode 100755 (executable)
index 0000000..abcff80
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 307: depcomp with depmode=dashmstdout libtool race condition
+# Report from Laurent Morichetti.
+# (Also exercises check_LTLIBRARIES.)
+#
+# == Report ==
+#  The dashmstdout depmode calls libtool in parallel to generate the
+#  dependencies (with -M flag) and to build the objfile (both have
+#  --mode=compile and -o).
+#  The process with 'libtool --mode=compile .* -M' can corrupt the objfile
+#  as none is generated by the compiler.  Since --mode=compile and -o are
+#  set libtool assumes that a objfile should be generated and will execute
+#  invalid $mv & $LN_S.
+#
+# == Fix ==
+#  Now 'depcomp' never compute dependencies in the background, as this can
+#  cause races with libtool.  Compute the dependencies after the actual
+#  compilation.
+
+required='libtoolize gcc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+check_LTLIBRARIES = librace.la
+librace_la_SOURCES = a.c b.c c.c d.c e.c f.c g.c h.c
+
+# Make sure the dependencies are updated.
+check-local:
+       for i in $(librace_la_SOURCES:.c=.Plo); do \
+         echo "checking ./$(DEPDIR)/$$i"; \
+         grep 'foo\.h' ./$(DEPDIR)/$$i >tst || exit 1; \
+         test `wc -l <tst` -eq 2 || exit 1; \
+       done
+END
+
+: >foo.h
+
+for i in a b c d e f g h; do
+  unindent >$i.c <<EOF
+    #include "foo.h"
+    int $i () { return 0; }
+EOF
+done
+
+libtoolize --force
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Sanity check: make sure the variable we are attempting to force
+# is indeed used by configure.
+grep am_cv_CC_dependencies_compiler_type configure
+
+./configure am_cv_CC_dependencies_compiler_type=dashmstdout
+
+$MAKE
+test -f librace.la && Exit 1
+$MAKE check
+
+# The failure we check usually occurs during the above build,
+# with an output such as:
+#
+#   mv -f .libs/f.lo f.lo
+#   mv: cannot stat '.libs/f.lo': No such file or directory
+#
+# (This may happen on 'f' or on some other files.)
+
+test -f librace.la
+test -f tst # A proof that check-local was run.
+
+:
diff --git a/t/pr401.sh b/t/pr401.sh
new file mode 100755 (executable)
index 0000000..849ee5f
--- /dev/null
@@ -0,0 +1,188 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for AC_CONFIG_LIBOBJ_DIR vs LIBOBJS.
+# (pr401b.test and pr401c.test do the same for LTLIBOBJS and ALLOCA)
+
+required=cc
+. ./defs || Exit 1
+
+mkdir lib src
+
+cat >lib/feep.c <<'EOF'
+const char *feep (void)
+{
+  return "feep";
+}
+EOF
+
+cat >src/main.c <<'EOF'
+#include <stdio.h>
+
+extern const char *feep (void);
+
+int main (void)
+{
+  puts (feep ());
+  return 0;
+}
+EOF
+
+cat >>configure.ac << 'EOF'
+## These lines are activated for later tests
+#: AC_CONFIG_LIBOBJ_DIR([lib])
+AC_PROG_CC
+#x AM_PROG_CC_C_O
+AC_LIBOBJ([feep])
+AC_LIBSOURCE([feep.c])
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_CONFIG_FILES([lib/Makefile src/Makefile])
+AM_CONDITIONAL([CROSS_COMPILING], [test $cross_compiling = yes])
+AC_OUTPUT
+EOF
+
+## ------------------------------------------ ##
+## First a test of traditional LIBOBJS usage. ##
+## ------------------------------------------ ##
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = lib src
+EOF
+
+cat >lib/Makefile.am <<'EOF'
+noinst_LIBRARIES = libfeep.a
+libfeep_a_SOURCES =
+libfeep_a_LIBADD = $(LIBOBJS)
+EOF
+
+cat >src/Makefile.am <<'EOF'
+check_PROGRAMS = main
+main_LDADD = ../lib/libfeep.a
+
+if !CROSS_COMPILING
+TESTS = main
+endif
+EOF
+
+cp "$am_scriptdir/ar-lib" . || fatal_ "fetching auxiliary script 'ar-lib'"
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE distcheck
+
+## ------------------------------------------ ##
+## Traditional LIBOBJS with LIBOBJDIR set.    ##
+## ------------------------------------------ ##
+
+# Invocation of AC_CONFIG_LIBOBJ_DIR may be necessary for reasons
+# unrelated to Automake or Makefile.am layout.
+
+sed 's/#: //' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+test ! -d lib/lib
+$MAKE distcheck
+
+## -------------------------------------------- ##
+## Error message with usage in wrong directory. ##
+## -------------------------------------------- ##
+
+mv -f src/Makefile.am src/t
+sed 's/LDADD = .*/LDADD = @LIBOBJS@/' src/t > src/Makefile.am
+AUTOMAKE_fails
+grep 'cannot be used outside.*lib' stderr
+mv -f src/t src/Makefile.am
+
+
+## -------------------------------------------- ##
+## Test using LIBOBJS from a sibling directory. ##
+## -------------------------------------------- ##
+
+sed 's/#x //; s/lib\/Makefile //' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = src
+EOF
+
+cat > src/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+
+noinst_LIBRARIES = libfeep.a
+libfeep_a_SOURCES =
+libfeep_a_LIBADD = $(LIBOBJS)
+
+check_PROGRAMS = main
+main_LDADD = libfeep.a
+
+if !CROSS_COMPILING
+TESTS = main
+endif
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+test ! -d src/lib
+test ! -d 'src/$(top_builddir)'
+$MAKE
+$MAKE check
+$MAKE distclean
+
+
+## ----------------------------------------- ##
+## Test using LIBOBJS from parent directory. ##
+## ----------------------------------------- ##
+
+sed 's/^.*src\/Makefile.*$//' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+cat >Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+
+noinst_LIBRARIES = lib/libfeep.a
+lib_libfeep_a_SOURCES =
+lib_libfeep_a_LIBADD = $(LIBOBJS)
+
+check_PROGRAMS = src/main
+src_main_SOURCES = src/main.c
+src_main_LDADD = lib/libfeep.a
+
+if !CROSS_COMPILING
+TESTS = src/main
+endif
+
+check-local:
+       test -f src/main.$(OBJEXT)
+       test -f lib/feep.$(OBJEXT)
+       test ! -f src/$(DEPDIR)/feep.Po
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE distcheck
+
+:
diff --git a/t/pr401b.sh b/t/pr401b.sh
new file mode 100755 (executable)
index 0000000..382d118
--- /dev/null
@@ -0,0 +1,188 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for AC_CONFIG_LIBOBJ_DIR vs LTLIBOBJS.
+# (pr401.test and pr401c.test do the same for LIBOBJS and ALLOCA)
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+mkdir lib src
+
+cat >lib/feep.c <<'EOF'
+const char *feep (void)
+{
+  return "feep";
+}
+EOF
+
+cat >src/main.c <<'EOF'
+#include <stdio.h>
+
+extern const char *feep (void);
+
+int main (void)
+{
+  puts (feep ());
+  return 0;
+}
+EOF
+
+cat >>configure.ac << 'EOF'
+## These lines are activated for later tests
+#: AC_CONFIG_LIBOBJ_DIR([lib])
+AC_PROG_CC
+#x AM_PROG_CC_C_O
+AC_LIBOBJ([feep])
+AC_LIBSOURCE([feep.c])
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_CONFIG_FILES([lib/Makefile src/Makefile])
+AM_CONDITIONAL([CROSS_COMPILING], [test $cross_compiling = yes])
+AC_OUTPUT
+EOF
+
+## -------------------------------------------- ##
+## First a test of traditional LTLIBOBJS usage. ##
+## -------------------------------------------- ##
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = lib src
+EOF
+
+cat >lib/Makefile.am <<'EOF'
+noinst_LTLIBRARIES = libfeep.la
+libfeep_la_SOURCES =
+libfeep_la_LIBADD = $(LTLIBOBJS)
+EOF
+
+cat >src/Makefile.am <<'EOF'
+check_PROGRAMS = main
+main_LDADD = ../lib/libfeep.la
+
+if !CROSS_COMPILING
+TESTS = main
+endif
+EOF
+
+cp "$am_scriptdir/ar-lib" . || fatal_ "fetching auxiliary script 'ar-lib'"
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE distcheck
+
+## ----------------------------------------- ##
+## Traditional LTLIBOBJS with LIBOBJDIR set. ##
+## ----------------------------------------- ##
+
+# Invocation of AC_CONFIG_LIBOBJ_DIR may be necessary for reasons
+# unrelated to Automake or Makefile.am layout.
+
+sed 's/#: //' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+test ! -d lib/lib
+$MAKE distcheck
+
+## -------------------------------------------- ##
+## Error message with usage in wrong directory. ##
+## -------------------------------------------- ##
+
+mv -f src/Makefile.am src/t
+sed 's/LDADD = .*/LDADD = @LTLIBOBJS@/' src/t > src/Makefile.am
+AUTOMAKE_fails
+grep 'cannot be used outside.*lib' stderr
+mv -f src/t src/Makefile.am
+
+## ---------------------------------------------- ##
+## Test using LTLIBOBJS from a sibling directory. ##
+## ---------------------------------------------- ##
+
+sed 's/#x //; s/lib\/Makefile //' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = src
+EOF
+
+cat > src/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+
+noinst_LTLIBRARIES = libfeep.la
+libfeep_la_SOURCES =
+libfeep_la_LIBADD = $(LTLIBOBJS)
+
+check_PROGRAMS = main
+main_LDADD = libfeep.la
+
+if !CROSS_COMPILING
+TESTS = main
+endif
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+test ! -d src/lib
+test ! -d 'src/$(top_builddir)'
+$MAKE
+$MAKE check
+$MAKE distclean
+
+
+## ------------------------------------------- ##
+## Test using LTLIBOBJS from parent directory. ##
+## ------------------------------------------- ##
+
+sed 's/^.*src\/Makefile.*$//' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+cat >Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+
+noinst_LTLIBRARIES = lib/libfeep.la
+lib_libfeep_la_SOURCES =
+lib_libfeep_la_LIBADD = $(LTLIBOBJS)
+
+check_PROGRAMS = src/main
+src_main_SOURCES = src/main.c
+src_main_LDADD = lib/libfeep.la
+
+if !CROSS_COMPILING
+TESTS = src/main
+endif
+
+check-local:
+       test -f src/main.$(OBJEXT)
+       test -f lib/feep.lo
+       test ! -f src/$(DEPDIR)/feep.Po
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE distcheck
+
+:
diff --git a/t/pr401c.sh b/t/pr401c.sh
new file mode 100755 (executable)
index 0000000..12afade
--- /dev/null
@@ -0,0 +1,190 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for AC_CONFIG_LIBOBJ_DIR vs ALLOCA.
+# (pr401.test and pr401b.test do the same for LIBOBJS and LTLIBOBJS)
+
+required=cc
+. ./defs || Exit 1
+
+mkdir lib src
+
+ac_cv_func_alloca_works=no; export ac_cv_func_alloca_works
+
+cat >lib/alloca.c <<'EOF'
+const char *feep (void)
+{
+  return "feep";
+}
+EOF
+
+cat >src/main.c <<'EOF'
+#include <stdio.h>
+
+extern const char *feep (void);
+
+int main (void)
+{
+  puts (feep ());
+  return 0;
+}
+EOF
+
+cat >>configure.ac << 'EOF'
+## These lines are activated for later tests.
+#: AC_CONFIG_LIBOBJ_DIR([lib])
+AC_PROG_CC
+#x AM_PROG_CC_C_O
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_FUNC_ALLOCA
+AC_CONFIG_FILES([lib/Makefile src/Makefile])
+AM_CONDITIONAL([CROSS_COMPILING], [test $cross_compiling = yes])
+AC_OUTPUT
+EOF
+
+## ----------------------------------------- ##
+## First a test of traditional ALLOCA usage. ##
+## ----------------------------------------- ##
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = lib src
+EOF
+
+cat >lib/Makefile.am <<'EOF'
+noinst_LIBRARIES = libfeep.a
+libfeep_a_SOURCES =
+libfeep_a_LIBADD = $(ALLOCA)
+EOF
+
+cat >src/Makefile.am <<'EOF'
+check_PROGRAMS = main
+main_LDADD = ../lib/libfeep.a
+
+if !CROSS_COMPILING
+TESTS = main
+endif
+EOF
+
+cp "$am_scriptdir/ar-lib" . || fatal_ "fetching auxiliary script 'ar-lib'"
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE distcheck
+
+
+## --------------------------------------- ##
+## Traditional ALLOCA with LIBOBJDIR set.  ##
+## --------------------------------------- ##
+
+# Invocation of AC_CONFIG_LIBOBJ_DIR may be necessary for reasons
+# unrelated to Automake or Makefile.am layout.
+
+sed 's/#: //' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+test ! -d lib/lib
+$MAKE distcheck
+
+## -------------------------------------------- ##
+## Error message with usage in wrong directory. ##
+## -------------------------------------------- ##
+
+mv -f src/Makefile.am src/t
+sed 's/LDADD = .*/LDADD = @ALLOCA@/' src/t > src/Makefile.am
+AUTOMAKE_fails
+grep 'cannot be used outside.*lib' stderr
+mv -f src/t src/Makefile.am
+
+
+## ------------------------------------------- ##
+## Test using ALLOCA from a sibling directory. ##
+## ------------------------------------------- ##
+
+sed 's/#x //; s/lib\/Makefile //' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = src
+EOF
+
+cat > src/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+
+noinst_LIBRARIES = libfeep.a
+libfeep_a_SOURCES =
+libfeep_a_LIBADD = $(ALLOCA) $(LIBOBJS) # Add LIBOBJS for fun.
+
+check_PROGRAMS = main
+main_LDADD = libfeep.a
+
+if !CROSS_COMPILING
+TESTS = main
+endif
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE
+test ! -d src/lib
+test ! -d 'src/$(top_builddir)'
+$MAKE check
+$MAKE distclean
+
+
+## ---------------------------------------- ##
+## Test using ALLOCA from parent directory. ##
+## ---------------------------------------- ##
+
+sed 's/^.*src\/Makefile.*$//' configure.ac >configure.int
+mv -f configure.int configure.ac
+
+cat >Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+
+noinst_LIBRARIES = lib/libfeep.a
+lib_libfeep_a_SOURCES =
+lib_libfeep_a_LIBADD = $(ALLOCA)
+
+check_PROGRAMS = src/main
+src_main_SOURCES = src/main.c
+src_main_LDADD = lib/libfeep.a
+
+if !CROSS_COMPILING
+TESTS = src/main
+endif
+
+check-local:
+       test -f src/main.$(OBJEXT)
+       test -f lib/alloca.$(OBJEXT)
+       test ! -f src/$(DEPDIR)/alloca.Po
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE distcheck
+
+:
diff --git a/t/pr72.sh b/t/pr72.sh
new file mode 100755 (executable)
index 0000000..b16e879
--- /dev/null
+++ b/t/pr72.sh
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 72
+# Empty _SOURCES results in $(LINK) undefined.
+
+required=libtool
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_LIBTOOL
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libviewer.la
+libviewer_la_SOURCES =
+libviewer_la_LIBADD = libphony.la
+END
+
+: > ltconfig
+: > ltmain.sh
+: > config.guess
+: > config.sub
+
+$ACLOCAL
+$AUTOMAKE -Wno-extra-portability
+
+grep '^LINK =' Makefile.in
+
+:
diff --git a/t/pr8365-remake-timing.sh b/t/pr8365-remake-timing.sh
new file mode 100755 (executable)
index 0000000..2feaf6d
--- /dev/null
@@ -0,0 +1,107 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for automake bug#8365, related to Makefile remake rules.
+# The bug is due to subtle timestamp issues and limitations in
+# make's behaviour, and is very unlikely to be triggered (we have
+# to resort to timestamp edit hacks to consistently expose it); in
+# any account, it is nigh to impossible to trigger it by running
+# make by hand.  Thus, fixing it would not be worth the hassle, but
+# we prefer to keep it exposed anyway.
+
+. ./defs || Exit 1
+
+# We'll use calls to stat to get debugging information.
+if stat /dev/null; then stat=stat; else stat=:; fi
+
+cat >> configure.ac << 'END'
+FOOBAR=zardoz
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+# Run automake *before* autoconf, because we want to ensure that
+# Makefile.in is not newer than configure.
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE Makefile
+# Sanity check.
+$EGREP 'FOOBAR|zardoz' Makefile && fatal_ 'unexpected AC_SUBST in Makefile'
+
+echo 'AC_SUBST([FOOBAR])' >> configure.ac
+
+# Modified configure dependencies must have the same timestamp of
+# config.status and Makefile in order to trigger the bug.
+# We also re-touch config.status, because "touch -r" can truncate
+# timestamps on file systems with sub-second resolutions (see the
+# autoconf manual).  Finally, we also sleep before touching, to ensure
+# that the (possibly truncated) timestamps of config.status etc. are
+# strictly newer than the non-truncated configure timestamp.
+$stat config.status Makefile configure.ac
+$sleep
+touch config.status
+touch -r config.status config.status Makefile configure.ac
+$stat config.status Makefile configure.ac
+
+# Also, the race condition is triggered only when aclocal, automake
+# and aclocal run fast enough to keep the timestamp of the generated
+# aclocal.m4, Makefile.in and configure equal to the timestamp of
+# Makefile & config.status.  To reproduce this race consistently, we
+# need the following hackish wrappers.
+
+cat > aclocal-wrap <<END
+#!/bin/sh
+set -ex
+# aclocal shouldn't use our autoconf wrapper when extracting
+# the races from configure.ac.
+AUTOCONF='$AUTOCONF'; export AUTOCONF
+$ACLOCAL "\$@"
+touch -r config.status aclocal.m4
+$stat aclocal.m4
+END
+
+cat > automake-wrap <<END
+#!/bin/sh
+set -ex
+# automake shouldn't use our autoconf wrapper when extracting
+# the races from configure.ac.
+AUTOCONF='$AUTOCONF'; export AUTOCONF
+$AUTOMAKE "\$@"
+touch -r config.status Makefile.in
+$stat Makefile.in
+END
+
+cat > autoconf-wrap <<END
+#!/bin/sh
+set -ex
+$AUTOCONF "\$@"
+touch -r config.status configure
+$stat configure
+END
+
+chmod a+x aclocal-wrap automake-wrap autoconf-wrap
+
+env \
+  ACLOCAL=./aclocal-wrap AUTOMAKE=./automake-wrap AUTOCONF=./autoconf-wrap \
+  $MAKE -e Makefile
+grep '^FOOBAR =' Makefile.in
+grep '^FOOBAR *= *zardoz *$' Makefile
+
+:
diff --git a/t/pr87.sh b/t/pr87.sh
new file mode 100755 (executable)
index 0000000..121328d
--- /dev/null
+++ b/t/pr87.sh
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR automake/87.
+# "make distcheck" fails when two source dirs exist.
+
+required=cc
+. ./defs || Exit 1
+
+subdirs="foo bar"
+
+for i in $subdirs; do
+    mkdir $i
+    unindent >$i/$i.c <<EOF
+      int main (void)
+      {
+        return 0;
+      }
+EOF
+    unindent >$i/Makefile.am <<EOF
+      bin_PROGRAMS = $i
+      ${i}_SOURCES = $i.c
+EOF
+done
+
+echo "SUBDIRS = $subdirs" > Makefile.am
+
+cat > configure.ac <<EOF
+AC_INIT([$me], [1.0])
+AC_CONFIG_SRCDIR([foo/foo.c])
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([`echo $subdirs | sed 's|\([a-z][a-z]*\)|\1/Makefile|g'`])
+AC_OUTPUT
+EOF
+
+mkdir build
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Regression test for bug where '.c.o:' is followed by blank line.
+(while read line; do
+    if test "$line" = ".c.o:"; then
+       read next
+       if test -z "$next"; then
+         Exit 1
+       else
+          : # For shells with broken 'set -e'.
+       fi
+       break
+    fi
+ done) < foo/Makefile.in || Exit 1
+
+cd build
+../configure
+$MAKE distcheck
+
+:
diff --git a/t/pr9.sh b/t/pr9.sh
new file mode 100755 (executable)
index 0000000..36a9f7e
--- /dev/null
+++ b/t/pr9.sh
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in PR 9.
+# "make dist" incorrect when AC_CONFIG_AUX_DIR is present.
+#
+# == Report ==
+# When AC_CONFIG_AUX_DIR is set (in my case to 'support'), make dist
+# no longer automatically includes config.guess, config.sub, install-sh,
+# ltconfig, ltmain.sh, mdate-sh, missing, and mkinstalldirs.  In fact,
+# the entire 'support/' directory is omitted.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([support])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+mkdir support
+
+$ACLOCAL
+
+$AUTOCONF
+$AUTOMAKE -a -c
+./configure
+$MAKE
+$MAKE distcheck
+
+gzip -d $distdir.tar.gz
+
+tar tf $distdir.tar | $FGREP support
+
+tar xf $distdir.tar
+ls -l . $distdir # For debugging.
+test -d $distdir/support
+ls -l $distdir/support # For debugging.
+test -f $distdir/support/install-sh
+
+:
diff --git a/t/prefix.sh b/t/prefix.sh
new file mode 100755 (executable)
index 0000000..26c088a
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure range of prefixes can be extended
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'EOF'
+bnidir = $(prefix)/bni
+bni_PROGRAMS = zardoz
+EOF
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/primary-prefix-couples-documented-valid.sh b/t/primary-prefix-couples-documented-valid.sh
new file mode 100755 (executable)
index 0000000..7b0021a
--- /dev/null
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the "uncommon" prefix/primary combinations used in
+# examples in the Automake manual do not cause obvious errors.
+# Please keep this test in sync with the automake manual.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AM_PROG_GCJ
+AM_PATH_PYTHON
+END
+
+# Fake libtool availability.
+: > ltmain.sh
+cat > acinclude.m4 <<'END'
+AC_DEFUN([AC_PROG_LIBTOOL],
+         [AC_SUBST([LIBTOOL], [:])])
+END
+
+cat > Makefile.am <<'END'
+xmldir = $(datadir)/xml
+xml_DATA = file.xml
+
+data_DATA = file1 file2 file3
+data2dir = $(datadir)
+data2_DATA = file4 file5 file6
+
+aclocaldir = $(datadir)/aclocal
+aclocal_DATA = mymacro.m4 myothermacro.m4
+
+imagesdir = $(pkgdatadir)/images
+soundsdir = $(pkgdatadir)/sounds
+dist_images_DATA = images/vortex.pgm
+dist_sounds_DATA = sounds/whirl.ogg
+
+lisp_DATA = file1.el file2.el
+
+javadir = $(datadir)/java
+dist_java_JAVA = a.java b.java c.java
+
+pkgpython_PYTHON = foo.py
+
+pyexec_LTLIBRARIES = quaternion.la
+quaternion_la_SOURCES = quaternion.c support.c support.h
+quaternion_la_LDFLAGS = -avoid-version -module
+
+myexecbindir = /exec
+myexecbin_PROGRAMS = zardoz
+
+foodir = $(prefix)/foo
+barexecdir = $(prefix)/bar/binaries
+foo_SCRIPTS = foo.sh
+barexec_SCRIPTS = quux.pl
+
+my_execbindir = $(pkglibdir)
+my_doclibdir = $(docdir)
+my_execbin_PROGRAMS = foo
+my_doclib_LIBRARIES = libquux.a
+END
+
+$ACLOCAL
+
+# Both these two invocations are meant.
+# They exercise both code paths concerning auxiliary files.
+$AUTOMAKE -a
+$AUTOMAKE
+
+:
diff --git a/t/primary-prefix-couples-force-valid.sh b/t/primary-prefix-couples-force-valid.sh
new file mode 100755 (executable)
index 0000000..064db2b
--- /dev/null
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that a user who wants to use an invalid prefix/primary
+# combination can do so with a proper workaround.
+# For example, this:
+#   lib_PROGRAMS = foo
+# is expected to cause an automake error, but this:
+#   bardir = $(libdir)
+#   bar_PROGRAMS = foo
+# should work.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+my_libdir = $(libdir)
+my_lib_PROGRAMS = foo
+
+foodir = $(bindir)
+foo_LIBRARIES = libquux.a
+
+xdir = $(libexecdir)
+x_HEADERS = bar.h
+
+installcheck-local: test
+.PHONY: test
+test:
+       (cd '$(prefix)' && find .);: For debugging.
+       ls -l '$(libdir)/foo$(EXEEXT)'
+       test -f '$(libdir)/foo$(EXEEXT)'
+       test -x '$(libdir)/foo$(EXEEXT)'
+       ls -l '$(bindir)/libquux.a'
+       test -f '$(bindir)/libquux.a'
+       ls -l '$(libexecdir)/bar.h'
+       test -f '$(libexecdir)/bar.h'
+       test ! -x '$(libexecdir)/bar.h'
+END
+
+cat > foo.c <<'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+cat > libquux.c <<'END'
+int quux(void)
+{
+  return 1;
+}
+END
+
+: > bar.h
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+cwd=`pwd` || fatal_ "cannot get current working directory"
+./configure --prefix="$cwd/_inst"
+
+$MAKE install
+$MAKE installcheck
+$MAKE distcheck
+
+:
diff --git a/t/primary-prefix-invalid-couples.tap b/t/primary-prefix-invalid-couples.tap
new file mode 100755 (executable)
index 0000000..407c873
--- /dev/null
@@ -0,0 +1,194 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Not all primaries/directories combinations are valid.
+# Automake should flag them as errors.
+# Originated from PR/294, extended later (following bug #7647) to
+# cover more cases.
+# See also test 'primary-prefix-valid-couples.test'.
+
+. ./defs || Exit 1
+
+plan_ "later"
+
+oIFS=$IFS # Saved for later.
+
+: > ar-lib
+: > ltmain.sh
+: > texinfo.tex
+: > elisp-comp
+: > py-compile
+: > config.guess
+: > config.sub
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_SUBST([LIBTOOL], [:]) dnl So that we don't have to require Libtool.
+AM_PROG_GCJ
+AM_PATH_PYTHON
+AM_PATH_LISPDIR
+END
+
+$ACLOCAL || fatal_ "aclocal failure"
+
+# Please keep this list in sync with the list of "Directory Variables"
+# in the GNU Coding Standards and with the list additional directory
+# variables provided by autoconf and/or automake (pkgdatadir, pkglibdir,
+# ...).   See also the hash '%standard_prefix' in the automake script.
+prefixes='bin data dataroot doc dvi exec html include info lib libexec
+          lisp locale localstate man man1 man2 man3 man4 man5 man6 man7
+          man8 man9 oldinclude pdf pkgdata pkginclude pkglib pkglibexec
+          ps sbin sharedstate sysconf'
+# Please keep this list in sync with the list of primaries documented in
+# the Automake manual (see the "The Uniform Naming Scheme" section).
+primaries='PROGRAMS LIBRARIES LTLIBRARIES LISP PYTHON JAVA SCRIPTS DATA
+           HEADERS MANS TEXINFOS'
+
+# Use files, not variables, to hold the list of all the possible
+# prefix_PRIMARY couples and the list of those couples valid for
+# automake, to avoid having unreadable very verbose traces.
+
+set +x # Don't be overly verbose.
+
+for prefix in $prefixes; do
+  for primary in $primaries; do
+    echo ${prefix} ${primary}
+  done
+done >all.list
+
+for primary in $primaries; do
+  prefixes_ok=''
+  case $primary in
+    LIBRARIES|LTLIBRARIES)
+      prefixes_ok='lib pkglib'
+      ;;
+    PROGRAMS)
+      prefixes_ok='bin sbin libexec pkglibexec'
+      ;;
+    SCRIPTS)
+      prefixes_ok='bin sbin libexec pkglibexec pkgdata'
+      ;;
+    DATA)
+      prefixes_ok='data dataroot pkgdata doc html dvi pdf ps
+                   sysconf sharedstate localstate lisp'
+      ;;
+    HEADERS)
+      prefixes_ok='include oldinclude pkginclude'
+      ;;
+    LISP)
+      prefixes_ok='lisp'
+      ;;
+    PYTHON)
+      prefixes_ok='python'
+      ;;
+    JAVA)
+      prefixes_ok='java'
+      ;;
+    MANS)
+      # FIXME: Here we'd like to have:
+      #   prefixes_ok='man man1 man2 man3 man4 man5 man6 man7 man8 man9'
+      # but Automake currently fails on that, as it allows the MANS
+      # primary to be coupled to any prefix.
+      # See also Automake bug#7656.
+      # We should dig out how automake had come to behave this way, and
+      # if such a behaviour can be safely changed.
+      prefixes_ok=$prefixes
+      ;;
+    TEXINFOS)
+      # FIXME: Here we'd like to have:
+      #   prefixes_ok='info'
+      # but Automake currently fails on that, as it allows the use of
+      # 'foo_TEXINFOS' to declare extra Texinfo sources for the 'foo'
+      # Texinfo manual, as in e.g.:
+      #   info_TEXINFOS = foo.texi
+      #   foo_TEXINFOS = gpl.texi
+      # See also Automake bug#7657.
+      prefixes_ok=$prefixes
+      ;;
+    *)
+      fatal_ "unrecognized primary '$primary'"
+      ;;
+  esac
+  for prefix in $prefixes_ok; do
+    echo ${prefix}_${primary}
+  done
+done >allow.list
+
+# 'html_TEXINFOS' is not yet supported, and might never be.
+grep -v '^html TEXINFOS$' all.list | awk '{print NR, $0}' > t
+mv -f t all.list
+
+# For debugging.
+echo '=== all.list ==='
+cat all.list
+echo '=== allow.list ==='
+cat allow.list
+
+# Create the Makefile.am.
+while read lineno prefix primary; do
+  test -n "$prefix" && test -n "$primary" && test 0 -lt $lineno \
+    || fatal_ "internal error in 'all.list'"
+  pfx='' ext=''
+  case $primary in
+    LTLIBRARIES) pfx=lib ext=la;;
+    LIBRARIES) pfx=lib ext=a;;
+    MANS) ext=man;;
+    HEADERS) ext=h;;
+    JAVA) ext=java;;
+    PYTHON) ext=py;;
+    LISP) ext=el;;
+    TEXINFOS) ext=texi;;
+  esac
+  test -z "$ext" || ext=.$ext
+  if test $primary = TEXINFOS; then
+    echo @setfilename foo$lineno.info > foo$lineno.texi
+  fi
+  echo ${prefix}_${primary} = ${pfx}foo${lineno}${ext}
+done <all.list >Makefile.am
+
+# For debugging.
+echo '=== Makefile.am ==='
+cat Makefile.am
+
+set -x # Restore shell xtraces from now on.
+
+AUTOMAKE_fails \
+  -d "'automake -a' error out on mismatched prefix/primary couples" \
+  -- --add-missing
+
+while read lineno prefix primary; do
+  test -n "$prefix" && test -n "$primary" && test 0 -lt $lineno \
+    || fatal_ "internal error in 'all.list'"
+  grep "^${prefix}_${primary}$" allow.list >/dev/null && continue
+  errmsg_rx=".*${prefix}dir.* not a legitimate directory .*$primary"
+  command_ok_ \
+    "mismatched prefix/primary in ${prefix}_${primary}" \
+    grep "^Makefile\\.am:$lineno: $errmsg_rx" stderr
+done <all.list
+
+# Check that automake really failed only for the expected reason(s).
+grep -v 'dir.* not a legitimate directory' stderr && Exit 1
+
+# Check that the same failures are present without the '--add-missing'
+# option.
+mv stderr stderr.old
+AUTOMAKE_fails -d "automake error out on mismatched prefix/primary couples"
+command_ok_ "... and with the same diagnostic of 'automake -a'" \
+            diff stderr.old stderr
+
+:
diff --git a/t/primary-prefix-valid-couples.sh b/t/primary-prefix-valid-couples.sh
new file mode 100755 (executable)
index 0000000..989ca4b
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for valid prefix/primary combinations.
+# See also test 'primary-prefix-invalid-couples.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AM_PATH_PYTHON
+AM_PATH_LISPDIR
+END
+
+# Fake libtool availability.
+: > ltmain.sh
+: > config.sub
+: > config.guess
+cat > acinclude.m4 <<'END'
+AC_DEFUN([AC_PROG_LIBTOOL],
+         [AC_SUBST([LIBTOOL], [:])])
+END
+
+# Other required files.
+echo '@setfilename foo' > foo.texi
+: > texinfo.tex
+: > py-compile
+: > elisp-comp
+: > ar-lib
+
+# Setup Makefile.am.
+
+: > Makefile.am
+
+for p in bin sbin libexec pkglibexec; do
+  echo "${p}_PROGRAMS = prog-$p" >> Makefile.am
+done
+
+for p in lib pkglib; do
+  echo "${p}_LIBRARIES = libs-$p.a" >> Makefile.am
+  echo "${p}_LTLIBRARIES = libd-$p.la" >> Makefile.am
+done
+
+for p in bin sbin libexec pkglibexec pkgdata; do
+  echo "${p}_SCRIPTS = $p.sh" >> Makefile.am
+done
+
+for p in data dataroot pkgdata doc html dvi pdf ps sysconf \
+         sharedstate localstate lisp; do
+  echo "${p}_DATA = $p.dat" >> Makefile.am
+done
+
+for p in include oldinclude pkginclude; do
+  echo "${p}_HEADERS = $p.h" >> Makefile.am
+done
+
+for p in man man1 man2 man3 man4 man5 man6 man7 man8 man9; do
+  echo "${p}_MANS = bar.$p"
+done
+
+echo "info_TEXINFOS = foo.texi" >> Makefile.am
+echo "lisp_LISP = foo.el" >> Makefile.am
+echo "python_PYTHON = foo.py" >> Makefile.am
+
+awk '{print NR ":" $0}' Makefile.am # For debugging.
+
+# Go with the tests.
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/primary.sh b/t/primary.sh
new file mode 100755 (executable)
index 0000000..e1a8f44
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure errors in am_install_var work.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = @programs@
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'bin_PROGRAMS.*configure substitution' stderr
+grep 'EXTRA_PROGRAMS.*not defined' stderr
+
+:
diff --git a/t/primary2.sh b/t/primary2.sh
new file mode 100755 (executable)
index 0000000..f9417d8
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure errors in am_install_var work.
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >> configure.ac
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = @programs@
+EXTRA_PROGRAMS = joe @more@
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'EXTRA_PROGRAMS.*configure substitution' stderr
+
+:
diff --git a/t/primary3.sh b/t/primary3.sh
new file mode 100755 (executable)
index 0000000..80dab29
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we can build programs ending in '.la'
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_PROG_CC
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo.la
+foo_la_SOURCES = foo.c
+.PHONY: test
+test: all
+       test -f foo.la$(EXEEXT)
+END
+
+echo 'int main () { return 0; }' > foo.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE test
+
+:
diff --git a/t/print-libdir.sh b/t/print-libdir.sh
new file mode 100755 (executable)
index 0000000..f5764b3
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on automake options '--print-data-dir' and '--print-script-dir'.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+libdir=`$AUTOMAKE --print-libdir` || Exit 1
+case $libdir in /*);; *) Exit 1;; esac
+test -d "$libdir"
+test "$libdir" = "$am_pkgvdatadir"
+test "$libdir" = "$am_scriptdir"
+
+: > Makefile.am
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+touch ChangeLog README NEWS AUTHORS COPYING
+
+$ACLOCAL
+$AUTOMAKE --gnu --add-missing
+ls -l
+
+diff missing "$libdir"/missing
+diff INSTALL "$libdir"/INSTALL
+
+:
diff --git a/t/proginst.sh b/t/proginst.sh
new file mode 100755 (executable)
index 0000000..4008b47
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug where when multiple scripts are installed,
+# the check for AC_PROG_INSTALL fails.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_SCRIPTS = zardoz qbert brownie
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/programs-primary-rewritten.sh b/t/programs-primary-rewritten.sh
new file mode 100755 (executable)
index 0000000..7de6d99
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure xxx_PROGRAMS gets properly rewritten where needed.  These
+# checks have been introduced in commit 'Release-1-9-254-g9d0eaef' into
+# the former test 'subst2.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([FOO], [c])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+EXEEXT = .bin
+
+check_PROGRAMS = a
+bin_PROGRAMS = b @FOO@
+noinst_PROGRAMS = $(bar) $(baz:=de)
+EXTRA_PROGRAMS =
+
+bar = zardoz
+baz = mau
+
+.PHONY: test
+test:
+       is $(check_PROGRAMS) == a.bin
+       is $(bin_PROGRAMS) == b.bin c
+       is $(noinst_PROGRAMS) == zardoz.bin maude.bin
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep PROGRAMS Makefile.in # For debugging.
+
+# Check that no useless indirections are used.
+grep '^check_PROGRAMS = a$(EXEEXT)$' Makefile.in
+grep '^bin_PROGRAMS = b$(EXEEXT) @FOO@$' Makefile.in
+
+$AUTOCONF
+./configure
+$MAKE test
+
+:
diff --git a/t/py-compile-basedir.sh b/t/py-compile-basedir.sh
new file mode 100755 (executable)
index 0000000..1504f55
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the '--basedir' option of the 'py-compile' script,
+
+required=python
+. ./defs || Exit 1
+
+# We'll need to create files in '..', so we need one more subdirectory
+# level in order not to clutter up the top-level tests directory.
+mkdir sandbox
+cd sandbox
+
+cp "$am_scriptdir/py-compile" . \
+  || fatal_ "failed to fetch auxiliary script py-compile"
+
+f=__init__
+for d in foo foo/bar "`pwd`/foo" . .. ../foo ''; do
+  if test -z "$d"; then
+    d2=.
+  else
+    d2=$d
+  fi
+  ../install-sh -d "$d2" "$d2/sub" || Exit 99
+  : > "$d2/$f.py"
+  : > "$d2/sub/$f.py"
+  ./py-compile --basedir "$d" "$f.py" "sub/$f.py"
+  ls -l "$d2" "$d2/sub" # For debugging.
+  test -f "$d2/$f.pyc"
+  test -f "$d2/$f.pyo"
+  test -f "$d2/sub/$f.pyc"
+  test -f "$d2/sub/$f.pyo"
+  rm -f "$d2/$f.pyc" "$d2/$f.pyo" "$d2/sub/$f.pyc" "$d2/sub/$f.pyo"
+  find . | grep '\.py[co]$' && Exit 1
+done
+
+:
diff --git a/t/py-compile-basic.sh b/t/py-compile-basic.sh
new file mode 100755 (executable)
index 0000000..5fa3bf6
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test more basic functionalities of the 'py-compile' script,
+# with "believable" python sources.  See also related test
+# 'py-compile-basic2.test'.
+
+required=python
+. ./defs || Exit 1
+
+cp "$am_scriptdir/py-compile" . \
+  || fatal_ "failed to fetch auxiliary script py-compile"
+
+cat > foo.py <<'END'
+# Try out some non-trivial syntax in here.
+
+'''Module docstring'''
+
+def foo (*args, **kwargs):
+  """Function docstring
+  with embedded newline"""
+  return 1
+
+class Foo:
+  r"""Class docstring"""
+  def __init__(self):
+    r'''Method docstring
+        with
+        embedded
+        newlines'''
+    pass
+
+bar = baz = (1, (2,), [3, 4]); zardoz = 0;
+END
+
+cat > bar.py <<'END'
+# Import of non-existent modules, or assertion of false conditions,
+# shouldn't cause problems, as it should be enough for the code to
+# be syntactically correct.
+import Automake.No.Such.Module
+assert False
+END
+
+./py-compile foo.py bar.py
+test -f foo.pyc
+test -f foo.pyo
+test -f bar.pyc
+test -f bar.pyo
+
+:
diff --git a/t/py-compile-basic2.sh b/t/py-compile-basic2.sh
new file mode 100755 (executable)
index 0000000..dfa992c
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test more basic functionalities of the 'py-compile' script, with
+# dummy python sources, but more complex directory layouts.  See also
+# related test 'py-compile-basic.test'.
+
+required=python
+. ./defs || Exit 1
+
+ocwd=`pwd` || Exit 99
+
+pyfiles="
+  foo.py
+  ./foo1.py
+  ../foo2.py
+  ../dir/foo3.py
+  $ocwd/foo4.py
+  sub/bar.py
+  sub/subsub/barbar.py
+  __init__.py
+  sub/__init__.py
+  1.py
+  .././_.py
+"
+
+lst='
+  dir/foo
+  dir/foo1
+  foo2
+  dir/foo3
+  foo4
+  dir/sub/bar
+  dir/sub/subsub/barbar
+  dir/__init__
+  dir/sub/__init__
+  dir/1
+  _
+'
+
+mkdir dir
+cd dir
+cp "$am_scriptdir/py-compile" . \
+  || fatal_ "failed to fetch auxiliary script py-compile"
+mkdir sub sub/subsub
+touch $pyfiles
+./py-compile $pyfiles
+cd "$ocwd"
+
+for x in $lst; do echo $x.pyc; echo $x.pyo; done | sort > exp
+find . -name '*.py[co]' | sed 's|^\./||' | sort > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/py-compile-destdir.sh b/t/py-compile-destdir.sh
new file mode 100755 (executable)
index 0000000..ab3fe77
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the '--destdir' option of the 'py-compile' script,
+
+required=python
+. ./defs || Exit 1
+
+cp "$am_scriptdir/py-compile" . \
+  || fatal_ "failed to fetch auxiliary script py-compile"
+
+# Should not give false positives when grepping for it, so use
+# an "uncommon" string (with ugly CamelCase).
+destdir=TheDestDir
+
+mkdir sub $destdir $destdir/sub
+echo 'def foo (): return "foo"' > $destdir/foo.py
+echo 'def bar (): return "bar"' > $destdir/sub/bar.py
+
+./py-compile --destdir $destdir foo.py sub/bar.py
+ls -l $destdir $destdir/sub # For debugging.
+ls . sub | grep '\.py[co]$' && Exit 1
+test -f $destdir/foo.pyc
+test -f $destdir/foo.pyo
+test -f $destdir/sub/bar.pyc
+test -f $destdir/sub/bar.pyo
+strings $destdir/*.py[co] $destdir/sub/*.py[co] || : # For debugging.
+$FGREP $destdir $destdir/*.py[co] $destdir/sub/*.py[co] && Exit 1
+
+:
diff --git a/t/py-compile-env.sh b/t/py-compile-env.sh
new file mode 100755 (executable)
index 0000000..5dd7e5f
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'py-compile' honours the PYTHON environment variable.
+
+. ./defs || Exit 1
+
+cp "$am_scriptdir/py-compile" . \
+  || fatal_ "failed to fetch auxiliary script py-compile"
+
+cat > my-py <<'END'
+#!/bin/sh
+: > my-py.run
+END
+chmod a+x my-py
+
+mkdir sub1
+cd sub1
+
+PYTHON=: ../py-compile foo.py
+ls | grep . && Exit 1
+
+PYTHON=false ../py-compile foo.py && Exit 1
+ls | grep . && Exit 1
+
+PYTHON='echo GrEpMe AndMeToo' ../py-compile foo.py
+PYTHON='echo GrEpMe AndMeToo' ../py-compile foo.py | grep 'GrEpMe AndMeToo'
+ls | grep . && Exit 1
+
+cd ..
+mkdir sub2
+cd sub2
+
+PYTHON=../my-py ../py-compile foo.py
+test -f my-py.run
+ls | grep -v '^my-py\.run$' | grep . && Exit 1
+
+cd ..
+mkdir sub3
+cd sub3
+PATH=..$PATH_SEPARATOR$PATH; export PATH
+PYTHON=my-py py-compile foo.py
+test -f my-py.run
+ls | grep -v '^my-py\.run$' | grep . && Exit 1
+
+:
diff --git a/t/py-compile-option-terminate.sh b/t/py-compile-option-terminate.sh
new file mode 100755 (executable)
index 0000000..f54ffc7
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that a non-option argument and the '--' special argument
+# explicitly terminate the option list for 'py-compile'.
+
+required=python
+. ./defs || Exit 1
+
+cp "$am_scriptdir/py-compile" . \
+  || fatal_ "failed to fetch auxiliary script py-compile"
+
+: > ./-o.py
+: > ./--foo.py
+./py-compile -- -o.py --foo.py
+test -f ./-o.pyc
+test -f ./-o.pyo
+test -f ./--foo.pyc
+test -f ./--foo.pyo
+rm -f ./-*.py[co]
+: > x.py
+./py-compile x.py -o.py --foo.py
+test -f ./x.pyc
+test -f ./x.pyo
+test -f ./-o.pyc
+test -f ./-o.pyo
+test -f ./--foo.pyc
+test -f ./--foo.pyo
+
+:
diff --git a/t/py-compile-usage.sh b/t/py-compile-usage.sh
new file mode 100755 (executable)
index 0000000..19883b0
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test 'py-compile --help', 'py-compile --version', and that 'py-compile'
+# correctly complains on wrong usage.
+
+. ./defs || Exit 1
+
+cp "$am_scriptdir/py-compile" . \
+  || fatal_ "failed to fetch auxiliary script py-compile"
+
+# --help
+
+./py-compile --help >stdout 2>stderr \
+  || { cat stdout; cat stderr >&2; Exit 1; }
+cat stdout
+test -s stderr && { cat stderr >&2; Exit 1; }
+grep '^Usage: py-compile .' stdout
+$FGREP ' [--basedir DIR]' stdout
+$FGREP ' [--destdir DIR]' stdout
+
+# --version
+
+./py-compile --version >stdout 2>stderr \
+  || { cat stdout; cat stderr >&2; Exit 1; }
+cat stdout
+test -s stderr && { cat stderr >&2; Exit 1; }
+year='20[0-9][0-9]' # Hopefully automake will be obsolete in 80 years ;-)
+month='(0[0-9]|1[012])'
+day='([012][0-9]|3[01])'
+hour='([01][0-9]|2[0123])'
+LC_ALL=C $EGREP "^py-compile $year-$month-$day\.$hour" stdout
+test `wc -l <stdout` -eq 1
+
+# Unknown option.
+
+for opt in -b -d --foo; do
+  ./py-compile $opt 2>stderr && { cat stderr >&2; Exit 1; }
+  cat stderr >&2
+  grep "^py-compile: unrecognized option ['\`]$opt'" stderr
+  grep "^Try [\`']py-compile --help' for more information" stderr
+done
+
+# Missing option argument.
+
+for opt in --basedir --destdir; do
+  ./py-compile $opt 2>stderr && { cat stderr >&2; Exit 1; }
+  cat stderr >&2
+  grep "^py-compile: option ['\`]$opt' requires an argument" stderr
+  grep "^Try [\`']py-compile --help' for more information" stderr
+done
+
+# Missing files.
+
+for args in '' '--basedir dir' '--destdir dir'; do
+  ./py-compile $args 2>stderr && { cat stderr >&2; Exit 1; }
+  cat stderr >&2
+  grep '^py-compile: no files given' stderr
+  grep "^Try [\`']py-compile --help' for more information" stderr
+done
+
+:
diff --git a/t/python-dist.sh b/t/python-dist.sh
new file mode 100755 (executable)
index 0000000..25dd4fe
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test distribution of *_PYTHON files.
+
+# This test does not require python.
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PATH_PYTHON([], [:], [:])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+python_PYTHON = python.py
+dist_python_PYTHON = python-dist.py
+nodist_python_PYTHON = python-nodist.py
+
+pkgpython_PYTHON = pkgpython.py
+dist_pkgpython_PYTHON = pkgpython-dist.py
+nodist_pkgpython_PYTHON = pkgpython-nodist.py
+
+mydir = $(prefix)/my
+my_PYTHON = my.py
+dist_my_PYTHON = my-dist.py
+nodist_my_PYTHON = my-nodist.py
+
+my.py my-dist.py my-nodist.py:
+       : > $@
+
+.PHONY: disttest
+disttest: distdir
+       ls -l $(distdir)
+       test -f $(distdir)/python.py
+       test -f $(distdir)/python-dist.py
+       test ! -f $(distdir)/python-nodist.py
+       test -f $(distdir)/pkgpython.py
+       test -f $(distdir)/pkgpython-dist.py
+       test ! -f $(distdir)/pkgpython-nodist.py
+       test -f $(distdir)/my.py
+       test -f $(distdir)/my-dist.py
+       test ! -f $(distdir)/my-nodist.py
+END
+
+: > python.py
+: > python-dist.py
+: > python-nodist.py
+
+: > pkgpython.py
+: > pkgpython-dist.py
+: > pkgpython-nodist.py
+
+: > py-compile
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+$MAKE disttest
+# It's not distributed, hence it shouldn't be needlessly generated.
+test ! -f my-nodist.py
+
+:
diff --git a/t/python-pr10995.sh b/t/python-pr10995.sh
new file mode 100755 (executable)
index 0000000..3efa5d0
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test automake bug#10995: am__py_compile doesn't get correctly defined
+# when there a 'noinst_PYTHON' declaration precedes a 'foo_PYTHON'
+# declaration.
+
+required=python
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AM_PATH_PYTHON
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'END'
+yesinstdir = $(prefix)/py
+noinst_PYTHON = no.py
+yesinst_PYTHON = yes.py
+disttest: distdir
+       test -f $(distdir)/no.py
+       test -f $(distdir)/yes.py
+END
+
+echo 'def foo(): return 1' > yes.py
+# no.py shouldn't be byte-compiled, so lets make it syntactically invalid.
+echo 'if' > no.py
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+test -f py-compile
+
+inst=`pwd`/inst
+
+./configure --prefix="$inst"
+$MAKE install
+test -f "$inst/py/yes.py"
+test -f "$inst/py/yes.pyc"
+test ! -f "$inst/py/no.py"
+test ! -f "$inst/py/no.pyc"
+
+$MAKE disttest
+
+:
diff --git a/t/python-vars.sh b/t/python-vars.sh
new file mode 100755 (executable)
index 0000000..56c2b61
--- /dev/null
@@ -0,0 +1,107 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that AM_PATH_PYTHON correctly sets all the output variables
+# advertised in the manual.
+
+required=python
+. ./defs || Exit 1
+
+# In case the user's config.site defines pythondir or pyexecdir.
+CONFIG_SITE=/dev/null; export CONFIG_SITE
+
+PYTHON=python
+
+# Update the definition below if the documentation changes.
+# Note that the value of the 'pythondir' and 'pyexecdir' variables can
+# vary among different python installations, so we need more relaxed
+# and ad-hoc checks for them.  Also, more proper "functional" checks
+# on them should be done in the 'python-virtualenv.test' test.
+PYTHON_VERSION=`$PYTHON -c 'import sys; print(sys.version[:3])'` || Exit 1
+PYTHON_PLATFORM=`$PYTHON -c 'import sys; print(sys.platform)'` || Exit 1
+PYTHON_EXEC_PREFIX='${exec_prefix}'
+PYTHON_PREFIX='${prefix}'
+pkgpythondir="\${pythondir}/$me"
+pkgpyexecdir="\${pyexecdir}/$me"
+
+pyvars='PYTHON_VERSION PYTHON_PLATFORM PYTHON_PREFIX PYTHON_EXEC_PREFIX
+        pkgpythondir pkgpyexecdir'
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([vars-got pythondir pyexecdir])
+AM_PATH_PYTHON
+AC_OUTPUT
+END
+
+cat > my.py << 'END'
+def my():
+    return 1
+END
+
+cat > Makefile.am << 'END'
+
+python_PYTHON = my.py
+
+EXTRA_DIST = vars-exp
+
+check-local: test-in test-am
+.PHONY: test-in test-am
+
+test-in:
+       cat pythondir
+       case `cat pythondir` in '$${prefix}'/*);; *) exit 1;; esac
+       cat pyexecdir
+       case `cat pyexecdir` in '$${exec_prefix}'/*);; *) exit 1;; esac
+       cat $(srcdir)/vars-exp
+       cat $(builddir)/vars-got
+       diff $(srcdir)/vars-exp $(builddir)/vars-got
+
+## Note: this target's rules will be extended in the "for" loop below.
+test-am:
+       case '$(pythondir)' in '$(prefix)'/*);; *) exit 1;; esac
+       case '$(pyexecdir)' in '$(exec_prefix)'/*);; *) exit 1;; esac
+END
+
+echo @pythondir@ > pythondir.in
+echo @pyexecdir@ > pyexecdir.in
+
+: > vars-exp
+: > vars-got.in
+
+for var in $pyvars; do
+  eval val=\$$var
+  echo "var=$val" >> vars-exp
+  echo "var=@$var@" >> vars-got.in
+  echo "${tab}test x'\$($var)' = x'$val'" >> Makefile.am
+done
+
+cat Makefile.am
+cat vars-got.in
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+for var in pythondir pyexecdir $pyvars; do
+  grep "^$var *=" Makefile.in
+done
+
+$AUTOCONF
+./configure PYTHON="$PYTHON"
+
+$MAKE test-in test-am
+$MAKE distcheck
+
+:
diff --git a/t/python-virtualenv.sh b/t/python-virtualenv.sh
new file mode 100755 (executable)
index 0000000..c534e8d
--- /dev/null
@@ -0,0 +1,187 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that python support can work well with virtualenvs.
+# This test also works as a mild stress-test on the python support.
+
+required='cc python virtualenv'
+. ./defs || Exit 1
+
+# In case the user's config.site defines pythondir or pyexecdir.
+CONFIG_SITE=/dev/null; export CONFIG_SITE
+
+# Skip the test if a proper virtualenv cannot be created.
+virtualenv --verbose virtenv && test -f virtenv/bin/activate \
+  || skip_ "coulnd't create python virtual environment"
+
+# Activate the virtualenv.
+. ./virtenv/bin/activate
+# Sanity check.
+if test -z "$VIRTUAL_ENV"; then
+  framework_failure_ "can't activate python virtual environment"
+fi
+
+cwd=`pwd`
+py_version=`python -c 'import sys; print("%u.%u" % tuple(sys.version_info[:2]))'`
+py_site=$VIRTUAL_ENV/lib/python$py_version/site-packages
+
+# We need control over the package name.
+cat > configure.ac << END
+AC_INIT([am_virtenv], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_SUBST([MY_VIRTENV], ['$cwd/virtenv'])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AM_PATH_PYTHON
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+python_PYTHON = am_foo.py
+pkgpython_PYTHON = __init__.py
+pyexec_LIBRARIES = libquux.a
+libquux_a_SOURCES = foo.c
+pkgpyexec_LIBRARIES = libzardoz.a
+libzardoz_a_SOURCES = foo.c
+
+py_site = $(MY_VIRTENV)/lib/python$(PYTHON_VERSION)/site-packages
+
+.PYTHON: debug test-run test-install test-uninstall
+debug:
+       @echo PYTHON: $(PYTHON)
+       @echo PYTHON_VERSION: $(PYTHON_VERSION)
+       @echo prefix: $(prefix)
+       @echo pythondir: $(pythondir)
+       @echo pkgpythondir: $(pkgpythondir)
+       @echo pyexecdir: $(pyexecdir)
+       @echo pkgpyexecdir: $(pkgpyexecdir)
+test-run:
+       ## In a virtualenv, the default python must be the custom
+       ## virtualenv python.
+       @: \
+         && py1=`python -c 'import sys; print(sys.executable)'` \
+         && py2=`$(PYTHON) -c 'import sys; print(sys.executable)'` \
+         && echo "py1: $$py1" \
+         && echo "py2: $$py2" \
+         && test -n "$$py1" \
+         && test -n "$$py2" \
+         && test x"$$py1" = x"$$py2"
+       ## Check that modules installed in the virtualenv are readily
+       ## available.
+       python -c 'from am_foo import foo_func; assert (foo_func () == 12345)'
+       python -c 'from am_virtenv import old_am; assert (old_am () == "AutoMake")'
+test-install:
+       test -f $(py_site)/am_foo.py
+       test -f $(py_site)/am_foo.pyc
+       test -f $(py_site)/am_foo.pyo
+       test -f $(py_site)/am_virtenv/__init__.py
+       test -f $(py_site)/am_virtenv/__init__.pyc
+       test -f $(py_site)/am_virtenv/__init__.pyo
+       test -f $(py_site)/libquux.a
+       test -f $(py_site)/am_virtenv/libzardoz.a
+test-uninstall:
+       test ! -f $(py_site)/am_foo.py
+       test ! -f $(py_site)/am_foo.pyc
+       test ! -f $(py_site)/am_foo.pyo
+       test ! -f $(py_site)/am_virtenv/__init__.py
+       test ! -f $(py_site)/am_virtenv/__init__.pyc
+       test ! -f $(py_site)/am_virtenv/__init__.pyo
+       test ! -f $(py_site)/libquux.a
+       test ! -f $(py_site)/am_virtenv/libzardoz.a
+all-local: debug
+END
+
+cat > am_foo.py << 'END'
+def foo_func ():
+    return 12345
+END
+
+cat > __init__.py << 'END'
+def old_am ():
+    return 'AutoMake'
+END
+
+cat > foo.c << 'END'
+int foo (void)
+{
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Try a VPATH build.
+mkdir build
+cd build
+../configure --prefix="$VIRTUAL_ENV"
+$MAKE install
+$MAKE test-install
+$MAKE test-run
+$MAKE uninstall
+$MAKE test-uninstall
+cd ..
+
+# Try an in-tree build.
+./configure --prefix="$VIRTUAL_ENV"
+$MAKE install
+$MAKE test-install
+$MAKE test-run
+$MAKE uninstall
+$MAKE test-uninstall
+
+$MAKE distclean
+
+# Overriding pythondir and pyexecdir with cache variables should work.
+./configure am_cv_python_pythondir="$py_site" \
+            am_cv_python_pyexecdir="$py_site"
+$MAKE install
+$MAKE test-install
+$MAKE test-run
+$MAKE uninstall
+$MAKE test-uninstall
+
+$MAKE distclean
+
+# Overriding pythondir and pyexecdir at make time should be enough.
+./configure --prefix="$cwd/bad-prefix"
+pythondir=$py_site pyexecdir=$py_site
+export pythondir pyexecdir
+$MAKE -e install
+test ! -d bad-prefix
+$MAKE -e test-install
+$MAKE test-run
+$MAKE -e uninstall
+$MAKE -e test-uninstall
+unset pythondir pyexecdir
+
+# Also check that the distribution is self-contained, for completeness.
+$MAKE distcheck
+
+# Finally, check that if we disable the virtualenv, we shouldn't be
+# able to access to the installed modules anymore.
+cd build
+$MAKE install
+python -c 'import am_foo; print(am_foo.__file__)'
+python -c 'import am_virtenv; print(am_virtenv.__file__)'
+deactivate "nondestructive"
+python -c 'import am_foo' && Exit 1
+python -c 'import am_virtenv' && Exit 1
+
+:
diff --git a/t/python.sh b/t/python.sh
new file mode 100755 (executable)
index 0000000..de8c0bb
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure py_compile and am__py_compile are correctly defined.
+
+. ./defs || Exit 1
+
+echo 'AM_PATH_PYTHON' >> configure.ac
+
+cat > Makefile.am << 'END'
+python_PYTHON = foo.py
+END
+
+cat > Makefile2.am << 'END'
+python_PYTHON = a.py
+nodist_python_PYTHON = b.py
+nobase_python_PYTHON = x/c.py
+mydir = ${prefix}
+my_PYTHON = d.py
+END
+
+# For automake bug#10995.
+cat > Makefile3.am << 'END'
+noinst_PYTHON = un.py
+python_PYTHON = in.py
+END
+
+$ACLOCAL
+
+AUTOMAKE_fails
+grep '^Makefile\.am:1:.* required file.*py-compile' stderr
+
+$AUTOMAKE -a
+grep '^py_compile *=' Makefile.in
+test -f py-compile
+
+$AUTOMAKE Makefile2
+$AUTOMAKE Makefile3
+
+grep "py" Makefile.in Makefile2.in Makefile3.in # For debugging.
+
+for f in Makefile.in Makefile2.in Makefile3.in; do
+  test `grep -c '^py_compile =' $f` -eq 1
+  test `grep -c '^am__py_compile =' $f` -eq 1
+done
+
+:
diff --git a/t/python10.sh b/t/python10.sh
new file mode 100755 (executable)
index 0000000..b28c3a4
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test _PYTHON with conditionals.
+
+required=python
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_PATH_PYTHON
+AM_CONDITIONAL([ONE], [test "x$one" = x1])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'END'
+if ONE
+mydir=$(prefix)/my
+my_PYTHON = one.py
+else
+yourdir=$(prefix)/your
+your_PYTHON = two.py
+endif
+
+one.py:
+       echo 'def one(): return 1' >$@
+two.py:
+       echo 'def two(): return 1' >$@
+
+.PHONY: disttest
+disttest: distdir
+       ls -l $(distdir)
+       test -f $(distdir)/one.py
+       test -f $(distdir)/two.py
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+mkdir inst
+inst=`pwd`/inst
+mkdir build
+cd build
+../configure --prefix="$inst"
+$MAKE install
+test -f "$inst/your/two.py"
+test -f "$inst/your/two.pyc"
+test -f "$inst/your/two.pyo"
+test ! -f "$inst/my/one.py"
+test ! -f "$inst/my/one.pyc"
+test ! -f "$inst/my/one.pyo"
+$MAKE uninstall
+test ! -f "$inst/your/two.py"
+test ! -f "$inst/your/two.pyc"
+test ! -f "$inst/your/two.pyo"
+
+../configure --prefix="$inst" one=1
+$MAKE install
+test ! -f "$inst/your/two.py"
+test ! -f "$inst/your/two.pyc"
+test ! -f "$inst/your/two.pyo"
+test -f "$inst/my/one.py"
+test -f "$inst/my/one.pyc"
+test -f "$inst/my/one.pyo"
+$MAKE uninstall
+test ! -f "$inst/my/one.py"
+test ! -f "$inst/my/one.pyc"
+test ! -f "$inst/my/one.pyo"
+
+$MAKE disttest
+
+:
diff --git a/t/python11.sh b/t/python11.sh
new file mode 100755 (executable)
index 0000000..aff3c9c
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test missing python.
+
+# Python is not required for this test.
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+m4_define([_AM_PYTHON_INTERPRETER_LIST], [IShouldNotExist1 IShouldNotExist2])
+AM_PATH_PYTHON
+# The following be executed only after the first run, once a
+# third argument has been added to the previous macro.
+echo PYTHON = $PYTHON
+test "$PYTHON" = : || exit 1
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+
+./configure >stdout 2>stderr && { cat stdout; cat stderr >&2; Exit 1; }
+cat stdout
+cat stderr >&2
+grep 'checking for IShouldNotExist1' stdout
+grep 'checking for IShouldNotExist2' stdout
+grep 'no suitable Python interpreter found' stderr
+
+sed 's/AM_PATH_PYTHON/AM_PATH_PYTHON(,,:)/' configure.ac >configure.int
+mv -f configure.int configure.ac
+$ACLOCAL --force
+$AUTOCONF --force
+# This one should define PYTHON as ":" and exit successfully.
+./configure
+
+# Any user setting should be used.
+./configure PYTHON=foo >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep 'PYTHON = foo' stdout
+
+:
diff --git a/t/python12.sh b/t/python12.sh
new file mode 100755 (executable)
index 0000000..3faeb45
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure DESTDIR is not included in byte-compiled files.
+
+required=python
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_PATH_PYTHON
+AC_OUTPUT
+EOF
+
+cat >Makefile.am <<'END'
+mydir = $(datadir)/my
+my_PYTHON = my.py
+
+my.py:
+       echo 'def my(): return 1' >$@
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+rm -rf inst build
+mkdir inst
+instdir=`pwd`/inst
+mkdir build
+cd build
+../configure --prefix="/usr"
+$MAKE install DESTDIR=$instdir
+
+# Perfunctory test that the files were created.
+test -f "$instdir/usr/share/my/my.py"
+test -f "$instdir/usr/share/my/my.pyc"
+test -f "$instdir/usr/share/my/my.pyo"
+
+# If DESTDIR has made it into the byte compiled files, fail the test.
+$FGREP "$instdir" "$instdir/usr/share/my/my.pyo" \
+                  "$instdir/usr/share/my/my.pyc" && Exit 1
+
+:
diff --git a/t/python2.sh b/t/python2.sh
new file mode 100755 (executable)
index 0000000..3b13b33
--- /dev/null
@@ -0,0 +1,106 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that Automake suggests using AM_PATH_PYTHON.
+
+. ./defs || Exit 1
+
+$ACLOCAL
+
+echo 1. pythondir not defined
+
+cat > Makefile.am <<'END'
+PYTHON = x
+python_PYTHON = foo.py
+END
+
+AUTOMAKE_fails -a
+grep 'pythondir.*undefined' stderr
+grep AM_PATH_PYTHON stderr
+
+
+echo 2. pkgpythondir not defined
+
+cat > Makefile.am <<'END'
+PYTHON = x
+pkgpython_PYTHON = foo.py
+END
+
+AUTOMAKE_fails -a
+grep 'pkgpythondir.*undefined' stderr
+grep AM_PATH_PYTHON stderr
+
+
+echo 3. pyexecdir not defined
+
+cat > Makefile.am <<'END'
+PYTHON = x
+pyexec_PYTHON = foo.py
+END
+
+AUTOMAKE_fails -a
+grep 'pyexecdir.*undefined' stderr
+grep AM_PATH_PYTHON stderr
+
+
+echo 4. pkgpyexecdir not defined
+
+cat > Makefile.am <<'END'
+PYTHON = x
+pkgpyexec_PYTHON = foo.py
+END
+
+AUTOMAKE_fails -a
+grep 'pkgpyexecdir.*undefined' stderr
+grep AM_PATH_PYTHON stderr
+
+
+echo 5. PYTHON not defined.
+
+cat > Makefile.am <<'END'
+pkgpyexecdir = /here/we/go
+pkgpyexec_PYTHON = foo.py
+END
+
+AUTOMAKE_fails -a
+grep 'PYTHON.*undefined' stderr
+grep AM_PATH_PYTHON stderr
+
+
+echo 6. Ok.
+
+cat > Makefile.am <<'END'
+PYTHON = x
+pkgpyexecdir = /here/we/go
+pkgpyexec_PYTHON = foo.py
+END
+
+rm -f py-compile
+$AUTOMAKE -a
+test -f py-compile
+
+
+echo 7. Ok again.
+
+cat > Makefile.am <<'END'
+PYTHON = x
+fubardir = /here/we/go
+fubar_PYTHON = foo.py
+END
+
+$AUTOMAKE -a
+
+:
diff --git a/t/python3.sh b/t/python3.sh
new file mode 100755 (executable)
index 0000000..72021cd
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we install built python files.
+
+required=python
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AM_PATH_PYTHON
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'END'
+mydir=$(prefix)/my
+my_PYTHON = one.py
+
+one.py:
+       echo 'def one(): return 1' >$@
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+mkdir inst
+inst=`pwd`/inst
+mkdir build
+cd build
+../configure --prefix="$inst"
+$MAKE install
+test -f "$inst/my/one.py"
+test -f "$inst/my/one.pyc"
+test -f "$inst/my/one.pyo"
+
+:
diff --git a/t/python4.sh b/t/python4.sh
new file mode 100755 (executable)
index 0000000..4294bb2
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test detection of missing Python.
+
+# Python is not required for this test.
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AM_PATH_PYTHON
+AC_OUTPUT
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Simulate no Python.
+./configure PYTHON=: 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'no suitable Python interpreter found' stderr
+
+# Again, but from the environment this time.
+env PYTHON=: ./configure 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'no suitable Python interpreter found' stderr
+
+:
diff --git a/t/python5.sh b/t/python5.sh
new file mode 100755 (executable)
index 0000000..80429f9
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test detection of missing Python.
+# Same as python4.test, but requiring a version.
+
+# Python is not required for this test.
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+# Hopefully the Python team will never release such a version.
+AM_PATH_PYTHON([9999.9])
+AC_OUTPUT
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure >stdout 2>stderr && {
+  cat stdout
+  cat stderr >&2
+  Exit 1
+}
+cat stdout
+cat stderr >&2
+$EGREP 'checking for a Python interpreter with version >= 9999\.9\.\.\. no(ne)? *$' stdout
+grep 'no suitable Python interpreter found' stderr
+
+:
diff --git a/t/python5b.sh b/t/python5b.sh
new file mode 100755 (executable)
index 0000000..b382b38
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test detection of missing Python.
+# Same as python5.test, but with the user forcing the python to use.
+
+required=python
+. ./defs || Exit 1
+
+cat >>configure.ac << 'END'
+# Hopefully the Python team will never release such a version.
+AM_PATH_PYTHON([9999.9])
+AC_OUTPUT
+END
+
+mkdir bin
+cat > bin/my-python << 'END'
+#! /bin/sh
+exec python ${1+"$@"}
+END
+chmod a+x bin/my-python
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure PYTHON=my-python >stdout 2>stderr && {
+  cat stdout
+  cat stderr >&2
+  Exit 1
+}
+cat stdout
+cat stderr >&2
+grep 'whether my-python version is >= 9999\.9\.\.\. no *$' stdout
+grep '[Pp]ython interpreter is too old' stderr
+
+:
diff --git a/t/python6.sh b/t/python6.sh
new file mode 100755 (executable)
index 0000000..0e09a43
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test detection of missing Python.
+# Same as python4.test, but using a custom ACTION-IF-NOT-FOUND.
+
+# Python is not required for this test.
+. ./defs || Exit 1
+
+cat >>configure.ac <<\EOF
+AM_PATH_PYTHON(,, [echo "$PYTHON" > py])
+AC_OUTPUT
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Simulate no Python.
+./configure PYTHON=:
+test x"`cat py`" = x:
+
+:
diff --git a/t/python7.sh b/t/python7.sh
new file mode 100755 (executable)
index 0000000..ec0ac07
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test detection of missing Python.
+# Same as python6.test, but requiring a version.
+
+# Python is not required for this test.
+. ./defs || Exit 1
+
+cat >>configure.ac <<\EOF
+# Hopefully the Python team will never release such a version.
+AM_PATH_PYTHON([9999.9], [], [echo "$PYTHON" > py])
+AC_OUTPUT
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+test x"`cat py`" = x:
+
+:
diff --git a/t/python8.sh b/t/python8.sh
new file mode 100755 (executable)
index 0000000..f999cb6
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test ACTION-IF-TRUE in AM_PATH_PYTHON.
+
+required=python
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+# $PYTHON is supposed to be properly set in ACTION-IF-TRUE.
+AM_PATH_PYTHON(, [$PYTHON -V >py-version 2>&1])
+AC_OUTPUT
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+grep '^Python [0-9]\.[0-9][0-9]*\.[0-9]' py-version
+
+:
diff --git a/t/python9.sh b/t/python9.sh
new file mode 100755 (executable)
index 0000000..e567adc
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test ACTION-IF-TRUE in AM_PATH_PYTHON.
+# Similar to python8.test, but requiring a version.
+
+required=python
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+# $PYTHON is supposed to be properly set in ACTION-IF-TRUE.
+AM_PATH_PYTHON([0.0], [$PYTHON -c 'print("%u:%u" % (1-1, 2**0))' > py.out])
+AC_OUTPUT
+EOF
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+test x"`cat py.out`" = x0:1
+
+:
diff --git a/t/recurs.sh b/t/recurs.sh
new file mode 100755 (executable)
index 0000000..5a9c165
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure recursive variable definitions die.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL(ONE, true)
+AM_CONDITIONAL(TWO, false)
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = $(foo)
+foo = $(bin_PROGRAMS)
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile\.am:.*bin_PROGRAMS.*recursively defined' stderr
+
+:
diff --git a/t/recurs2.sh b/t/recurs2.sh
new file mode 100755 (executable)
index 0000000..e2c5213
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure recursive variable definitions die.
+# From Jim Meyering.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+man_MANS = chgrp.1
+man_aux = $(man_MANS:.1=.x)
+EXTRA_DIST = $(man_aux) $(man_MANS)
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/relativize.tap b/t/relativize.tap
new file mode 100755 (executable)
index 0000000..8f53b6c
--- /dev/null
@@ -0,0 +1,96 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test Automake-provided internal make macro $(am__relativize).
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+plan_ later
+
+mkdir uber uber/top
+cd uber/top
+
+: > install-sh
+: > missing
+
+cat >> configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# The 'am__relitivize' definition is only brought in when
+# SUBDIRS are defined.
+SUBDIRS = .
+
+.PHONY: test
+test:
+       @$(am__relativize); echo "result: '$$reldir'"; set -x; \
+        case $${reldir:-.} in "$$exp"|"$$exp/.") ;; *) exit 1;; esac
+END
+
+$ACLOCAL && $AUTOMAKE && $AUTOCONF && ./configure || fatal_ "setup failure"
+
+rel_ ()
+{
+   case $1 in -x) directive=TODO; shift;; *) directive=;; esac
+   test $# -eq 4 && test x"$3" = x"=" || fatal_ "rel_: incorrect usage"
+   command_ok_ "$1/{$4} = $2" -D "$directive" \
+               env dir1=$1 dir2=$2 exp=$4 $MAKE test
+}
+
+# am__relativize
+# ~~~~~~~~~~~~~~
+# Computes a relative pathname RELDIR such that DIR1/RELDIR = DIR2.
+# Input:
+#   - DIR1     relative pathname, relative to the current directory
+#   - DIR2     relative pathname, relative to the current directory
+# Output:
+#   - reldir   relative pathname of DIR2, relative to DIR1
+
+rel_ . .  = .
+rel_ . .. = ..
+rel_ .. . = top
+
+for d in x long-longer a/b 1/2/3/4/5; do
+  rel_ $d $d = .
+  for d2 in . .. x r/s/t; do
+    rel_ $d $d/$d2 = $d2
+  done
+done
+
+rel_ one two     = ../two
+rel_ a   b/c     = ../b/c
+rel_ a/b .       = ../..
+rel_ a/b foo     = ../../foo
+rel_ a/b foo/bar = ../../foo/bar
+rel_ a/b a/c     = ../c
+rel_ a/b a/c/d   = ../c/d
+
+rel_ foo/bar/baz foo/bar/qux/zap   = ../qux/zap
+
+rel_ ../foo       .      = ../top
+rel_ ../..        .      = uber/top
+rel_ ../../foo    .      = ../uber/top
+rel_ ../../x      ok     = ../uber/top/ok
+rel_ ../../x      bo/ba  = ../uber/top/bo/ba
+rel_ ../../x      ../ok2 = ../uber/top/../ok2
+rel_ ../a/b/c/d/e .      = ../../../../../top
+
+:
diff --git a/t/remake-all-1.sh b/t/remake-all-1.sh
new file mode 100755 (executable)
index 0000000..f1a85bc
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the "all" target triggers rebuilt of outdated Makefiles.
+# See also sister test 'remake-all-2.test'.
+
+. ./defs || Exit 1
+
+mkfile=Makefile
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+magic3=%%MagicStringThree%%
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([$mkfile sub/$mkfile])
+FOO='$magic1'
+AC_OUTPUT
+END
+
+mkdir sub
+echo SUBDIRS = sub > $mkfile.am
+: > sub/$mkfile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+$EGREP "^all-am:.* $mkfile( |$)" $mkfile.in sub/$mkfile.in
+
+$AUTOCONF
+./configure
+
+$FGREP "$magic1" mkfile.in && Exit 1 # Sanity check.
+
+# Two code paths in configure.am:
+
+# - either a file in $(am__configure_deps) has been updated ...
+$sleep
+echo "AC_SUBST([FOO])" >> configure.ac
+$MAKE
+$FGREP FOO $mkfile # For debugging.
+$FGREP $magic1 $mkfile
+
+# - ... or not; i.e., Makefile.am or an included file has.
+$sleep
+echo "# $magic2" >> $mkfile.am
+echo "# $magic3" >> sub/$mkfile.am
+$MAKE
+$FGREP $magic2 $mkfile
+$FGREP $magic3 sub/$mkfile
+
+:
diff --git a/t/remake-all-2.sh b/t/remake-all-2.sh
new file mode 100755 (executable)
index 0000000..9306532
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the "all" target triggers rebuilt of outdated makefiles.
+# This handle the case in which the makefiles are not called 'Makefile'.
+# See also sister test 'remake-all-1.test'.
+
+. ./defs || Exit 1
+
+mkfile=foobar
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+magic3=%%MagicStringThree%%
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([$mkfile sub/$mkfile])
+FOO='$magic1'
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat > $mkfile.am <<END
+SUBDIRS = sub
+AM_MAKEFLAGS = -f $mkfile
+END
+
+cat > sub/$mkfile.am <<END
+AM_MAKEFLAGS = -f $mkfile
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$EGREP "^all-am:.* $mkfile( |$)" $mkfile.in sub/$mkfile.in
+
+$AUTOCONF
+./configure
+
+$FGREP "$magic1" mkfile.in && Exit 1 # Sanity check.
+
+# Two code paths in configure.am:
+
+# - either a file in $(am__configure_deps) has been updated ...
+$sleep
+echo "AC_SUBST([FOO])" >> configure.ac
+$MAKE -f $mkfile
+$FGREP FOO $mkfile # For debugging.
+$FGREP $magic1 $mkfile
+
+# - ... or not; i.e., Makefile.am or an included file has.
+$sleep
+echo "# $magic2" >> $mkfile.am
+echo "# $magic3" >> sub/$mkfile.am
+$MAKE -f $mkfile
+$FGREP $magic2 $mkfile
+$FGREP $magic3 sub/$mkfile
+
+:
diff --git a/t/remake-am-pr10111.sh b/t/remake-am-pr10111.sh
new file mode 100755 (executable)
index 0000000..c567608
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that our remake rules doesn't give spurious successes in
+# some corner case situations where they should actually fail.
+# See automake bug#10111.
+# To be clear, we are speaking about *very* corner-case situations here,
+# and the fact that the remake rules might get confused in them is not a
+# big deal in practice (in fact, this test *currently fails*).  Still,
+# keeping the limitation exposed is a good idea anyway.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+: > foobar.am
+
+cat > Makefile.am <<'END'
+include $(srcdir)/foobar.am
+$(srcdir)/foobar.am:
+## Creative quoting is to avoid spurious matches in the grepping
+## of Makefile.in, later.
+       echo "mu =" foobar "was here =" > $@
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# OK, so the developer wants to interactively try out how the
+# "distributed form" of his package behaves.
+$MAKE distdir
+cd $distdir
+# He's interested in trying out a VPATH build.
+mkdir build
+cd build
+../configure
+# He wants to verify that the rules he's written to rebuild a file
+# included by configure.ac works also in VPATH builds.
+rm -f ../foobar.am
+$MAKE
+grep '= foobar was here =' ../Makefile.in
+$MAKE distcheck
+
+:
diff --git a/t/remake-deleted-am-2.sh b/t/remake-deleted-am-2.sh
new file mode 100755 (executable)
index 0000000..1d048be
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that inclusion of '.am' fragments by automake does not suffer
+# of the "deleted header problem".  This test checks deeper inclusion
+# stacks, and use VPATH builds.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+$ACLOCAL
+$AUTOCONF
+
+cat > Makefile.am <<'END'
+include $(srcdir)/foo.am
+END
+
+cat > foo.am <<'END'
+# this is foo
+include sub/bar.am
+include baz.am
+END
+
+mkdir sub
+echo 'include $(top_srcdir)/sub/zardoz.am' > sub/bar.am
+echo '# this is zardoz' > sub/zardoz.am
+
+echo 'include fnord.am' > baz.am
+echo '# you are not seeing this' > fnord.am
+
+$AUTOMAKE
+# Sanity checks.
+$FGREP 'this is zardoz' Makefile.in
+$FGREP 'you are not seeing this' Makefile.in
+
+mkdir build
+cd build
+
+srcdir=..
+
+$srcdir/configure
+$MAKE
+
+$sleep
+echo '# this is baz' > $srcdir/baz.am
+rm -f $srcdir/fnord.am
+$MAKE
+# Sanity checks.
+$FGREP 'you are not seeing this' $srcdir/Makefile.in Makefile && Exit 1
+$FGREP 'this is baz' $srcdir/Makefile.in
+$FGREP 'this is baz' Makefile
+
+$sleep
+rm -rf $srcdir/sub $srcdir/foo.am $srcdir/baz.am
+echo '# no more inclusions' > $srcdir/Makefile.am
+$MAKE
+# Sanity checks.
+$EGREP 'this is (foo|bar|baz)' Makefile $srcdir/Makefile.in && Exit 1
+$FGREP 'no more inclusions' Makefile
+
+:
diff --git a/t/remake-deleted-am-subdir.sh b/t/remake-deleted-am-subdir.sh
new file mode 100755 (executable)
index 0000000..3ca8507
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that inclusion of '.am' fragments by automake does not suffer
+# of the "deleted header problem".  This test does the check when the
+# SUBDIRS variable is involved.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+
+cat > Makefile.am <<'END'
+include foo.am
+SUBDIRS = sub1 sub2
+END
+
+echo '# this is foo.am' > foo.am
+
+mkdir sub1 sub2
+
+echo 'include $(srcdir)/bar.am' > sub1/Makefile.am
+echo '# this is bar.am' > sub1/bar.am
+
+echo 'include $(top_srcdir)/foo.am' > sub2/Makefile.am
+
+$AUTOMAKE
+# Sanity checks.
+$FGREP 'this is foo.am' Makefile.in
+$FGREP 'this is bar.am' sub1/Makefile.in
+$FGREP 'this is foo.am' sub2/Makefile.in
+
+./configure
+$MAKE # Should be no-op.
+
+$sleep
+echo '# this is sub1/Makefile.am' > sub1/Makefile.am
+rm -f sub1/bar.am
+$MAKE all
+# Sanity checks.
+$FGREP 'this is bar' sub1/Makefile.in sub1/Makefile && Exit 1
+$FGREP 'this is sub1/Makefile.am' sub1/Makefile.in
+$FGREP 'this is sub1/Makefile.am' sub1/Makefile
+
+$sleep
+for d in . sub2; do
+  sed "s|.*include.*foo\.am.*|# this is $d/Makefile.am|" $d/Makefile.am > t
+  mv -f t $d/Makefile.am
+done
+rm -f foo.am
+$MAKE all
+# Sanity checks.
+$FGREP 'this is foo' sub*/Makefile* Makefile* && Exit 1
+for d in . sub1 sub2; do
+  $FGREP "this is $d/Makefile.am" $d/Makefile.in
+  $FGREP "this is $d/Makefile.am" $d/Makefile
+done
+
+:
diff --git a/t/remake-deleted-am.sh b/t/remake-deleted-am.sh
new file mode 100755 (executable)
index 0000000..4bd77d6
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that inclusion of '.am' fragments by automake does not suffer
+# of the "deleted header problem".  Basic checks are done here.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+$ACLOCAL
+$AUTOCONF
+
+cat > Makefile.am <<'END'
+include foo.am
+include $(srcdir)/bar.am
+include $(top_srcdir)/baz.am
+END
+
+echo '# this is foo' > foo.am
+echo '# this is bar' > bar.am
+echo '# this is baz' > baz.am
+
+$AUTOMAKE
+# Sanity checks.
+$FGREP 'this is foo' Makefile.in
+$FGREP 'this is bar' Makefile.in
+$FGREP 'this is baz' Makefile.in
+
+./configure
+$MAKE # Should be no-op.
+
+$sleep
+sed '/^include foo\.am$/d' Makefile.am > t
+mv -f t Makefile.am
+rm -f foo.am
+$MAKE Makefile
+# Sanity checks.
+$FGREP 'this is foo' Makefile.in Makefile && Exit 1
+$FGREP 'this is bar' Makefile.in
+$FGREP 'this is bar' Makefile
+$FGREP 'this is baz' Makefile.in
+$FGREP 'this is baz' Makefile
+
+$sleep
+echo '# empty empty' > Makefile.am
+rm -f bar.am baz.am
+$MAKE Makefile
+# Sanity checks.
+$FGREP 'empty empty' Makefile.in
+$FGREP 'empty empty' Makefile
+grep 'this is ba[rz]' Makefile Makefile.in && Exit 1
+
+:
diff --git a/t/remake-deleted-m4-file.sh b/t/remake-deleted-m4-file.sh
new file mode 100755 (executable)
index 0000000..975d503
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when an m4 file gets removed and the macros it
+# defined get inlined into the caller.  Try with both an indirect
+# call and a direct one.  This can be seen as testing the "deleted
+# header file" issue w.r.t. aclocal.m4 dependencies.  See also related
+# test 'acloca22.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+FOO_MACRO
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I m4
+.PHONY: test
+test:
+       test '$(the_answer)' -eq 42
+END
+
+macro_value='the_answer=42; AC_SUBST([the_answer])'
+
+mkdir m4
+
+cat > m4/foo.m4 <<'END'
+AC_DEFUN([FOO_MACRO], [BAR_MACRO])
+END
+
+cat > m4/bar.m4 <<END
+AC_DEFUN([BAR_MACRO], [$macro_value])
+END
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+$sleep
+
+sed -e "s|BAR_MACRO|$macro_value|" m4/foo.m4 > t
+mv -f t m4/foo.m4
+rm -f m4/bar.m4
+
+using_gmake || $MAKE Makefile
+$MAKE test
+
+$sleep
+
+sed -e "s|FOO_MACRO|$macro_value|" configure.ac > t
+mv -f t configure.ac
+rm -f m4/foo.m4
+
+using_gmake || $MAKE Makefile
+$MAKE test
+
+:
diff --git a/t/remake-gnulib-add-acsubst.sh b/t/remake-gnulib-add-acsubst.sh
new file mode 100755 (executable)
index 0000000..23a02bc
--- /dev/null
@@ -0,0 +1,133 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when a new AC_SUBST'd variable is added, and C header
+# files are involved.
+# This test overlaps with others, and is not strictly necessary per se,
+# but it exercises a real use case (from gnulib, see:
+#  <http://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00005.html>
+# for more info).
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+MY_MACROS
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I m4
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.c
+BUILT_SOURCES = foo.h
+edit_h = sed -e 's|[@]foovar@|@foovar@|g'
+foo.h: foo.in.h
+       $(edit_h) < $(srcdir)/foo.in.h > $@-t
+       cat $@-t;: For debugging.
+       mv -f $@-t $@
+EXTRA_DIST = foo.in.h
+MOSTLYCLEANFILES = foo.h foo.h-t
+END
+
+mkdir m4
+
+cat > m4/foo.m4 <<'END'
+AC_DEFUN([MY_MACROS], [
+     FOO_MACRO
+dnl: ZAP_MACRO
+])
+END
+
+cat > m4/bar.m4 <<'END'
+AC_DEFUN([FOO_MACRO], [
+     foovar=42; AC_SUBST([foovar])
+dnl: barvar=47; AC_SUBST([barvar])
+])
+END
+
+cat > foo.in.h <<'END'
+#define foo @foovar@
+END
+
+cat > foo.c <<'END'
+#include "foo.h"
+int main (void) { return 0; }
+typedef int checkfoo[1 - 2 * (foo != 42)];
+END
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+
+: AC_SUBST @barvar@ and add it to foo.h.
+
+$sleep
+
+sed -e 's/^dnl:/   /' m4/bar.m4 > t
+mv -f t m4/bar.m4
+cat m4/bar.m4
+
+cat >> foo.in.h <<'END'
+#define bar @barvar@
+END
+
+cat >> foo.c <<'END'
+typedef int checkbar[1 - 2 * (bar != 47)];
+END
+
+cat >> Makefile.am <<'END'
+edit_h += -e 's|[@]barvar@|@barvar@|g'
+END
+
+using_gmake || $MAKE Makefile
+$MAKE
+
+: AC_SUBST @zapvar@ and add it to foo.h.
+# Do it in a slightly different way from how it was done for @barvar@.
+
+$sleep
+
+cat >> Makefile.am <<'END'
+edit_h += -e 's|[@]zapvar@|$(zapvar)|g'
+END
+
+cat >> foo.c <<'END'
+typedef int checkzap[1 - 2 * (zap != 163)];
+END
+
+sed -e 's/^dnl://' m4/foo.m4 > t
+mv -f t m4/foo.m4
+cat m4/foo.m4
+
+cat >> foo.in.h <<'END'
+#define zap @zapvar@
+END
+
+cat >> m4/bar.m4 <<'END'
+AC_DEFUN([ZAP_MACRO], [zapvar=163; AC_SUBST([zapvar])])
+END
+
+using_gmake || $MAKE Makefile
+$MAKE
+
+$MAKE distcheck
+
+:
diff --git a/t/remake-gnulib-add-header.sh b/t/remake-gnulib-add-header.sh
new file mode 100755 (executable)
index 0000000..97f0c03
--- /dev/null
@@ -0,0 +1,109 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when a new C header "guarded" by AC_SUBST'd
+# variables is added.
+# This test overlaps with others, and is not strictly necessary per se,
+# but it exercises a real use case (from gnulib, see:
+#  <http://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00005.html>
+# for more info).
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_CONFIG_HEADERS([config.h])
+AC_PROG_CC
+MY_MACROS
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I .
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.c
+BUILT_SOURCES = $(STDIO_H)
+stdio.h: stdio.in.h
+       cp $(srcdir)/stdio.in.h $@
+MOSTLYCLEANFILES = stdio.h
+EXTRA_DIST = stdio.in.h
+check-local:
+       ls -l . $(srcdir)
+       if test -n '$(STDIO_H)'; then \
+           test -f stdio.h || exit 1; \
+       else \
+           test ! -f stdio.h || exit 1; \
+       fi
+END
+
+cat > macros.m4 <<'END'
+AC_DEFUN([MY_MACROS], [
+  override_stdio=false
+  if $override_stdio; then
+    STDIO_H=stdio.h
+    use_dummies=1
+  else
+    STDIO_H=
+    use_dummies=0
+  fi
+  AC_SUBST([STDIO_H])
+  AC_DEFINE_UNQUOTED([USE_DUMMIES], [$use_dummies],
+    [Whether to use dummy types.])
+])
+END
+
+cat > stdio.in.h <<'END'
+typedef struct dummyfile { void *p; } DUMMYFILE;
+END
+
+cat > foo.c <<'END'
+#include <config.h>
+#include <stdio.h>
+#if USE_DUMMIES
+DUMMYFILE *f;
+#else
+FILE *f;
+#endif
+int main () { return 0; }
+END
+
+$ACLOCAL -I .
+$AUTOHEADER
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+
+$MAKE
+ls -l
+test ! -f stdio.h
+# Also try our build rules in a VPATH build.
+$MAKE distcheck
+
+# No need to sleep here: "./configure" and "make distcheck" above
+# have already slept enough.
+
+sed -e 's/^\( *override_stdio\)=.*$/\1=:/' macros.m4 > t
+mv -f t macros.m4
+
+using_gmake || $MAKE Makefile
+$MAKE
+ls -l
+test -f stdio.h
+# Also try our build rules in a VPATH build.
+$MAKE distcheck
+
+:
diff --git a/t/remake-gnulib-remove-header.sh b/t/remake-gnulib-remove-header.sh
new file mode 100755 (executable)
index 0000000..04f3410
--- /dev/null
@@ -0,0 +1,136 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when a C header "guarded" by AC_SUBST'd variables
+# is not needed anymore, or when it's needed again.
+# This test requires some user-level machinery, overlaps with other tests,
+# and is not strictly necessary per se, but it exercises a real, important
+# use case (from gnulib, see:
+#  <http://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00005.html>
+# for more info).
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_CONFIG_HEADERS([config.h])
+AC_PROG_CC
+MY_MACROS
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I .
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.c
+BUILT_SOURCES = $(STDIO_H)
+if REPLACE_STDIO_H
+stdio.h: stdio.in.h $(top_builddir)/config.status
+       cp $(srcdir)/stdio.in.h $@
+else
+stdio.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES = stdio.h
+END
+
+cat > macros.m4 <<'END'
+AC_DEFUN([MY_MACROS], [
+  override_stdio=:
+  if $override_stdio; then
+    STDIO_H=stdio.h
+    use_dummies=1
+  else
+    STDIO_H=
+    use_dummies=0
+  fi
+  AC_SUBST([STDIO_H])
+  AC_DEFINE_UNQUOTED([USE_DUMMIES], [$use_dummies],
+    [Whether to use dummy types.])
+  AM_CONDITIONAL([REPLACE_STDIO_H], [test -n "$STDIO_H"])
+])
+END
+
+cat > stdio.in.h <<'END'
+typedef struct dummyfile { void *p; } DUMMYFILE;
+END
+
+cat > foo.c <<'END'
+#include <config.h>
+#include <stdio.h>
+#if USE_DUMMIES
+DUMMYFILE *f;
+#else
+FILE *f;
+#endif
+int main () { return 0; }
+END
+
+$ACLOCAL -I .
+$AUTOHEADER
+$AUTOMAKE
+$AUTOCONF
+
+for vpath in : false; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  # Do not reject slow dependency extractors: we need dependency tracking.
+  $srcdir/configure --enable-dependency-tracking
+  if $FGREP 'depmode=none' Makefile; then
+    skip_ "automatic dependency tracking couldn't be activated"
+  fi
+
+  $MAKE
+  ls -l
+  test -f stdio.h
+
+  # Simulate that we don't need our custom stdio.h anymore.
+
+  $sleep
+  sed -e 's/^\( *override_stdio\)=.*$/\1=false/' $srcdir/macros.m4 > t
+  diff $srcdir/macros.m4 t && fatal_ "failed to edit macros.m4"
+  mv -f t $srcdir/macros.m4
+
+  using_gmake || $MAKE Makefile
+  $MAKE
+  ls -l
+  test ! -f stdio.h
+
+  # And now simulate that we want our custom stdio.h back.
+
+  $sleep
+  sed -e 's/^\( *override_stdio\)=.*$/\1=:/' $srcdir/macros.m4 > t
+  diff $srcdir/macros.m4 t && fatal_ "failed to edit macros.m4"
+  mv -f t $srcdir/macros.m4
+
+  using_gmake || $MAKE Makefile
+  $MAKE
+  ls -l
+  test -f stdio.h
+
+  $MAKE distclean
+  cd $srcdir
+
+done
+
+:
diff --git a/t/remake-m4-pr10111.sh b/t/remake-m4-pr10111.sh
new file mode 100755 (executable)
index 0000000..09a2a4c
--- /dev/null
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that our remake rules doesn't give spurious successes in
+# some corner case situations where they should actually fail.
+# See automake bug#10111.
+# To be clear, we are speaking about *very* corner-case situations here,
+# and the fact that the remake rules might get confused in them is not a
+# big deal in practice (in fact, this test *currently fails*).  Still,
+# keeping the limitation exposed is a good idea anyway.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+m4_include([foobar.m4])
+AC_OUTPUT
+END
+
+: > foobar.m4
+
+cat > Makefile.am <<'END'
+$(srcdir)/foobar.m4:
+       echo ': foobar was here :' > $@
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# OK, so the developer wants to interactively try out how the
+# "distributed form" of his package behaves.
+$MAKE distdir
+cd $distdir
+# He's interested in trying out a VPATH build.
+mkdir build
+cd build
+../configure
+# He wants to verify that the rules he's written to rebuild a file
+# included by configure.ac works also in VPATH builds.
+rm -f ../foobar.m4
+$MAKE
+grep ': foobar was here :' ../configure
+$MAKE distcheck
+
+:
diff --git a/t/remake-moved-m4-file.sh b/t/remake-moved-m4-file.sh
new file mode 100755 (executable)
index 0000000..d5a1263
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when m4 files get moved among different "include
+# dirs" (i.e. those passed to aclocal with '-I' option).
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+MY_MACRO
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I d1 -I d2 -I d3
+.PHONY: test
+test:
+       test '$(the_answer)' -eq 42
+END
+
+mkdir d1 d2 d3
+
+cat > d1/macros.m4 <<'END'
+AC_DEFUN([MY_MACRO], [FOO])
+END
+
+cat > d1/foo.m4 <<'END'
+AC_DEFUN([FOO], [the_answer=42; AC_SUBST([the_answer])])
+END
+
+$ACLOCAL -I d1
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+# Move one file.
+mv d1/foo.m4 d2/foo.m4
+using_gmake || $MAKE Makefile
+$MAKE test
+$MAKE distdir
+ls -l $distdir $distdir/*
+test -f $distdir/d2/foo.m4
+test ! -f $distdir/d1/foo.m4
+test -f $distdir/d1/macros.m4
+test ! -f $distdir/d2/macros.m4
+
+# Move both files at once.
+mv d1/macros.m4 d3/macros.m4
+mv d2/foo.m4 d3/foo.m4
+using_gmake || $MAKE Makefile
+$MAKE test
+$MAKE distdir
+ls -l $distdir $distdir/*
+test -f $distdir/d3/foo.m4
+test -f $distdir/d3/macros.m4
+test ! -f $distdir/d1/foo.m4
+test ! -f $distdir/d2/foo.m4
+test ! -f $distdir/d1/macros.m4
+test ! -f $distdir/d2/macros.m4
+
+:
diff --git a/t/remake-renamed-am.sh b/t/remake-renamed-am.sh
new file mode 100755 (executable)
index 0000000..f1106f4
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that inclusion of '.am' fragments by automake does not suffer
+# of the "deleted header problem".  This test checks that we can rename
+# an included .am file without confusing the remake rules.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+include foo.am
+END
+
+cat > foo.am <<'END'
+all-local:
+       echo ok > has-run-1
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE
+test -f has-run-1
+
+$sleep
+rm -f has-run-1
+mv -f foo.am bar.am
+echo include bar.am > Makefile.am
+$MAKE Makefile
+$FGREP 'foo.am' Makefile Makefile.in && Exit 1
+
+$sleep
+rm -f has-run-1 bar.am
+echo 'all-local:; echo ok > has-run-2' > zardoz.am
+echo 'include $(srcdir)/zardoz.am' > Makefile.am
+using_gmake || $MAKE Makefile
+$MAKE
+test ! -f has-run-1
+test -f has-run-2
+
+:
diff --git a/t/remake-renamed-m4-file.sh b/t/remake-renamed-m4-file.sh
new file mode 100755 (executable)
index 0000000..87721f5
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when m4 files get renamed.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+MY_MACRO
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I m4
+.PHONY: test
+test:
+       test '$(the_answer)' -eq 42
+END
+
+mkdir m4
+
+cat > m4/macros.m4 <<'END'
+AC_DEFUN([MY_MACRO], [FOO])
+END
+
+cat > m4/foo.m4 <<'END'
+AC_DEFUN([FOO], [the_answer=42; AC_SUBST([the_answer])])
+END
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+# Rename one file at the time.
+
+mv m4/foo.m4 m4/bar.m4
+using_gmake || $MAKE Makefile
+$MAKE test
+$MAKE distdir
+ls -l $distdir $distdir/*
+test -f $distdir/m4/bar.m4
+test ! -f $distdir/m4/foo.m4
+
+mv m4/macros.m4 m4/defs.m4
+using_gmake || $MAKE Makefile
+$MAKE test
+$MAKE distdir
+ls -l $distdir $distdir/*
+test -f $distdir/m4/defs.m4
+test ! -f $distdir/m4/macros.m4
+
+# Rename both files at once.
+
+mv m4/bar.m4 m4/quux.m4
+mv m4/defs.m4 acinclude.m4
+using_gmake || $MAKE Makefile
+$MAKE test
+$MAKE distdir
+ls -l $distdir $distdir/*
+test -f $distdir/m4/quux.m4
+test -f $distdir/acinclude.m4
+test ! -f $distdir/m4/foo.m4
+test ! -f $distdir/m4/bar.m4
+test ! -f $distdir/m4/macros.m4
+test ! -f $distdir/m4/defs.m4
+
+:
diff --git a/t/remake-renamed-m4-macro-and-file.sh b/t/remake-renamed-m4-macro-and-file.sh
new file mode 100755 (executable)
index 0000000..9f80b31
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when an m4 file gets renamed and *simultaneously*
+# an m4 macro in it gets renamed.  Kudos to Bruno Haible for thinking
+# about this situation.  See also related test 'acloca22.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+MY_MACRO
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I m4
+.PHONY: test
+test:
+       test '$(the_answer)' -eq 42
+END
+
+mkdir m4
+
+cat > m4/macros.m4 <<'END'
+AC_DEFUN([MY_MACRO], [FOO_MACRO])
+END
+
+cat > m4/foo.m4 <<'END'
+AC_DEFUN([FOO_MACRO], [the_answer=42; AC_SUBST([the_answer])])
+END
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+# Rename only one file and one macro.
+
+$sleep
+sed -e 's/FOO_MACRO/BAR_MACRO/' m4/foo.m4 > m4/bar.m4
+rm -f m4/foo.m4
+sed -e 's/FOO_MACRO/BAR_MACRO/' m4/macros.m4 > t
+mv -f t m4/macros.m4
+using_gmake || $MAKE Makefile
+$MAKE test
+$MAKE distdir
+ls -l $distdir $distdir/*
+test -f $distdir/m4/bar.m4
+test -f $distdir/m4/macros.m4
+test ! -f $distdir/m4/foo.m4
+
+# Rename both at once.
+
+$sleep
+sed -e 's/BAR_MACRO/QUUX_MACRO/' \
+  m4/bar.m4 > m4/quux.m4
+sed -e 's/BAR_MACRO/QUUX_MACRO/' -e 's/MY_MACRO/A_MACRO/' \
+  m4/macros.m4 > m4/defs.m4
+rm -f m4/macros.m4 m4/bar.m4
+sed -e 's/BAR_MACRO/QUUX_MACRO/' -e 's/MY_MACRO/A_MACRO/' configure.ac > t
+mv -f t configure.ac
+using_gmake || $MAKE Makefile
+$MAKE test
+$MAKE distdir
+ls -l $distdir $distdir/*
+test -f $distdir/m4/quux.m4
+test -f $distdir/m4/defs.m4
+test ! -f $distdir/m4/bar.m4
+test ! -f $distdir/m4/macros.m4
+
+:
diff --git a/t/remake-renamed-m4-macro.sh b/t/remake-renamed-m4-macro.sh
new file mode 100755 (executable)
index 0000000..5ec71d6
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when the name of an m4 macro change.  Try both with
+# and without indirection.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+MY_MACRO
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I m4
+.PHONY: test
+test:
+       test '$(the_answer)' -eq 42
+END
+
+mkdir m4
+
+cat > m4/macros.m4 <<'END'
+AC_DEFUN([MY_MACRO], [FOO_1])
+END
+
+cat > m4/foo.m4 <<'END'
+AC_DEFUN([FOO_1], [the_answer=42
+                   AC_SUBST([the_answer])])
+END
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+$sleep
+
+for x in macros foo; do
+  sed -e 's/FOO_1/FOO_2/' m4/$x.m4 > t
+  mv -f t m4/$x.m4
+done
+
+using_gmake || $MAKE Makefile
+$MAKE test
+
+$sleep
+
+for f in m4/macros.m4 configure.ac; do
+  sed -e 's/MY_MACRO/YOUR_MACRO/' $f > t
+  mv -f t $f
+done
+
+using_gmake || $MAKE Makefile
+$MAKE test
+
+:
diff --git a/t/remake-subdir-from-subdir.sh b/t/remake-subdir-from-subdir.sh
new file mode 100755 (executable)
index 0000000..a5053e0
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that remake rules works for adding a new subdirectory from a
+# pre-existing subdirectory.
+# See also the other similar tests 'remake-subdir*.test', and the
+# related test 'aclocal5.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+m4_include([subdirs.m4])
+AC_SUBST([MAGIC], [magic])
+AC_OUTPUT
+END
+
+echo 'AC_CONFIG_FILES([sub/Makefile])' > subdirs.m4
+echo 'SUBDIRS = sub' > Makefile.am
+
+mkdir sub
+: > sub/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+
+cd sub
+$sleep
+echo 'AC_CONFIG_FILES([sub/subsub/Makefile])' >> ../subdirs.m4
+echo 'SUBDIRS = subsub' >> Makefile.am
+mkdir subsub
+cat > subsub/Makefile.am <<'END'
+all-local:
+       : > ok-it-works
+END
+using_gmake || $MAKE Makefile
+$MAKE
+test -f subsub/ok-it-works
+
+:
diff --git a/t/remake-subdir-gnu.sh b/t/remake-subdir-gnu.sh
new file mode 100755 (executable)
index 0000000..116790f
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that remake rules works from subdirectories, even using
+# 'GNUmakefile' as makefiles name.  This obviously requires GNU
+# make.
+# See also the other similar tests 'remake-subdir*.test', and the
+# related test 'aclocal5.test'
+
+required=GNUmake
+. ./defs || Exit 1
+
+magic1='::MagicString::One::'
+magic2='__MagicString__Two__'
+
+debug_info ()
+{
+  grep -i magic configure GNUmakefile.in GNUmakefile \
+                sub/GNUmakefile.in sub/GNUmakefile
+}
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([GNUmakefile sub/GNUmakefile])
+AC_SUBST([MAGIC], [magic])
+AC_OUTPUT
+END
+
+cat > GNUmakefile.am <<'END'
+SUBDIRS = sub
+END
+
+mkdir sub
+: > sub/GNUmakefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+debug_info
+
+$sleep
+sed "s|magic|$magic1|" configure.ac > t
+mv -f t configure.ac
+cd sub
+$MAKE
+cd ..
+debug_info
+$FGREP $magic1 configure
+$FGREP $magic1 GNUmakefile
+$FGREP $magic1 sub/GNUmakefile
+
+$sleep
+cd sub
+echo MAGIC = $magic2 >> GNUmakefile.am
+$MAKE
+cd ..
+debug_info
+$FGREP $magic2 sub/GNUmakefile
+$FGREP $magic2 sub/GNUmakefile.in
+$FGREP $magic1 sub/GNUmakefile sub/GNUmakefile.in && Exit 1
+$FGREP $magic2 GNUmakefile GNUmakefile.in && Exit 1
+
+:
diff --git a/t/remake-subdir-long-time.sh b/t/remake-subdir-long-time.sh
new file mode 100755 (executable)
index 0000000..8f31740
--- /dev/null
@@ -0,0 +1,114 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that remake rules from subdirectories do not hang or cycle
+# endlessly, even with build systems that takes several seconds to
+# rebuild the Makefiles.
+# This test tries to ensure a long-enough rebuild time by introducing
+# an explicit delay in the build process.
+# Suggestion by Ralf Wildenhues.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([foreign -Wall -Werror])
+AC_CONFIG_FILES([Makefile sub/Makefile])
+AC_SUBST([MAGIC], [magic])
+AC_OUTPUT
+END
+
+echo SUBDIRS = sub > Makefile.am
+mkdir sub
+: > sub/Makefile.am
+
+# Both aclocal and automake are expected to run one and just one time.
+# Create and use wrappers that will verify that.
+
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+
+mkdir bin
+
+cat > bin/automake <<END
+#!/bin/sh
+set -e
+PATH='$PATH'; export PATH
+sentinel='$ocwd/automake-has-run'
+if test -f "\$sentinel"; then
+  echo "Automake has been run more than one time" >&2
+  exit 1
+else
+  echo automake has run > "\$sentinel"
+fi
+$sleep; $sleep;
+exec $AUTOMAKE \${1+"\$@"}
+END
+chmod a+x bin/automake
+
+cat > bin/aclocal <<END
+#!/bin/sh
+set -e
+PATH='$PATH'; export PATH
+sentinel='$ocwd/aclocal-has-run'
+if test -f "\$sentinel"; then
+  echo "Aclocal has been run more than one time" >&2
+  exit 1
+else
+  echo aclocal has run > "\$sentinel"
+fi
+$sleep; $sleep;
+exec $ACLOCAL \${1+"\$@"}
+END
+chmod a+x bin/aclocal
+
+# Just to be sure.
+cp bin/automake bin/automake-$APIVERSION
+cp bin/aclocal bin/aclocal-$APIVERSION
+
+PATH=$ocwd/bin$PATH_SEPARATOR$PATH; export PATH
+
+AUTOMAKE=automake ACLOCAL=aclocal; export AUTOMAKE ACLOCAL
+
+$ACLOCAL  # Should use or just-defined wrapper.
+$AUTOMAKE # Likewise.
+$AUTOCONF
+
+# Sanity check: the wrappers have been used.
+test -f automake-has-run
+test -f aclocal-has-run
+rm -f automake-has-run aclocal-has-run
+
+./configure
+# Sanity check: Makefile doesn't get updated uselessly.
+ACLOCAL=false AUTOMAKE=false AUTOCONF=false $MAKE -e
+
+$sleep
+sed "s|magic|magic2|" configure.ac > t
+mv -f t configure.ac
+
+cd sub
+AUTOMAKE="$AUTOMAKE" ACLOCAL="$ACLOCAL" $MAKE -e Makefile
+cd ..
+
+# For debugging.
+ls -l . sub
+grep -i magic configure Makefile.in Makefile sub/Makefile.in sub/Makefile
+# Sanity checks.
+$FGREP magic2 configure
+$FGREP magic2 Makefile
+$FGREP magic2 sub/Makefile
+
+:
diff --git a/t/remake-subdir.sh b/t/remake-subdir.sh
new file mode 100755 (executable)
index 0000000..eb21f38
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that remake rules works from subdirectories, even with non-GNU
+# make implementations.
+# See also the other similar tests 'remake-subdir*.test', and the
+# related test 'aclocal5.test'.
+
+. ./defs || Exit 1
+
+if using_gmake; then
+  remake=$MAKE
+else
+  remake="$MAKE Makefile"
+fi
+
+magic1='::MagicString::One::'
+magic2='__MagicString__Two__'
+
+debug_info ()
+{
+  grep -i magic configure Makefile.in Makefile sub/Makefile.in sub/Makefile
+}
+
+cat >> configure.ac <<'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_SUBST([MAGIC], [magic])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+debug_info
+
+$sleep
+sed "s|magic|$magic1|" configure.ac > t
+mv -f t configure.ac
+cd sub
+$remake
+cd ..
+debug_info
+$FGREP $magic1 configure
+$FGREP $magic1 Makefile
+$FGREP $magic1 sub/Makefile
+
+$sleep
+cd sub
+echo MAGIC = $magic2 >> Makefile.am
+$remake
+cd ..
+debug_info
+$FGREP $magic2 sub/Makefile
+$FGREP $magic2 sub/Makefile.in
+$FGREP $magic1 sub/Makefile sub/Makefile.in && Exit 1
+$FGREP $magic2 Makefile Makefile.in && Exit 1
+
+:
diff --git a/t/remake-subdir2.sh b/t/remake-subdir2.sh
new file mode 100755 (executable)
index 0000000..0a5665d
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that remake rules works from subdirectories, even when makefiles
+# are not named "Makefile".
+# See also the other similar tests 'remake-subdir*.test', and the
+# related test 'aclocal5.test'.
+
+. ./defs || Exit 1
+
+magic1='::MagicString::One::'
+magic2='__MagicString__Two__'
+
+debug_info ()
+{
+  grep -i magic configure build.in build.mk sub/build.in sub/build.mk
+}
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([build.mk:build.in])
+AC_CONFIG_FILES([sub/build.mk:sub/build.in])
+AC_SUBST([MAGIC], [magic])
+AC_OUTPUT
+END
+
+cat > build.am <<'END'
+AM_MAKEFLAGS = -f build.mk
+SUBDIRS = sub
+END
+
+mkdir sub
+cat > sub/build.am <<'END'
+AM_MAKEFLAGS = -f build.mk
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+ls -l # For debugging.
+
+$MAKE -f build.mk
+debug_info
+
+$sleep
+sed "s|magic|$magic1|" configure.ac > t
+mv -f t configure.ac
+cd sub
+$MAKE -f build.mk build.mk
+cd ..
+debug_info
+$FGREP $magic1 configure
+$FGREP $magic1 build.mk
+$FGREP $magic1 sub/build.mk
+
+$sleep
+cd sub
+echo MAGIC = $magic2 >> build.am
+$MAKE -f build.mk build.mk
+cd ..
+debug_info
+$FGREP $magic2 sub/build.mk
+$FGREP $magic2 sub/build.in
+$FGREP $magic1 sub/build.in sub/build.mk && Exit 1
+$FGREP $magic2 build.in build.mk && Exit 1
+
+:
diff --git a/t/remake.sh b/t/remake.sh
new file mode 100755 (executable)
index 0000000..620d5f8
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Weak "grepping" test trying to ensure that remaking rules in a subdir
+# are correctly generated.
+# See also sister functional test 'remake1a.test'.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^Makefile' sub/Makefile.in
+
+:
diff --git a/t/remake10a.sh b/t/remake10a.sh
new file mode 100755 (executable)
index 0000000..358554f
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules for m4 files included (also recursively) by
+# configure.ac.
+# Keep in sync with sister tests 'remake10b.test' and 'remake10c.test'.
+
+. ./defs || Exit 1
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+magic3=%%MagicStringThree%%
+
+if using_gmake; then
+  remake="$MAKE nil"
+else
+  remake="$MAKE Makefile"
+fi
+
+cat >> configure.ac <<END
+m4_include([foo.m4])
+AC_SUBST([FINGERPRINT], [my_fingerprint])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+.PHONY: nil
+nil:
+## Used by "make distcheck" later.
+check-local:
+       test -f $(top_srcdir)/foo.m4
+       test ! -r $(top_srcdir)/bar.m4
+       test x'$(FINGERPRINT)' = x'DummyValue'
+END
+
+echo 'm4_define([my_fingerprint], [BadBadBad])' > foo.m4
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    top_srcdir=..
+  else
+    top_srcdir=.
+  fi
+
+  $top_srcdir/configure
+  $MAKE # Should be a no-op.
+
+  $sleep
+  echo "m4_define([my_fingerprint], [$magic1])" > $top_srcdir/foo.m4
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile
+
+  $sleep
+  echo "m4_define([my_fingerprint], [$magic2])" > $top_srcdir/foo.m4
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile
+
+  $sleep
+  echo "m4_include([bar.m4])" > $top_srcdir/foo.m4
+  echo "m4_define([my_fingerprint], [$magic3])" > $top_srcdir/bar.m4
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile && Exit 1
+  $FGREP $magic3 Makefile
+
+  $sleep
+  echo "m4_define([my_fingerprint], [$magic1])" > $top_srcdir/bar.m4
+  $remake
+  $FGREP $magic2 Makefile && Exit 1
+  $FGREP $magic3 Makefile && Exit 1
+  $FGREP $magic1 Makefile
+
+  $sleep
+  echo "m4_define([my_fingerprint], [DummyValue])" > $top_srcdir/foo.m4
+  using_gmake || $remake
+  $MAKE distcheck
+  $FGREP $magic1 Makefile && Exit 1 # Sanity check.
+  $FGREP $magic2 Makefile && Exit 1 # Likewise.
+  $FGREP $magic3 Makefile && Exit 1 # Likewise.
+
+  $MAKE distclean
+
+  cd $top_srcdir
+
+done
+
+:
diff --git a/t/remake10b.sh b/t/remake10b.sh
new file mode 100755 (executable)
index 0000000..9eeeb9d
--- /dev/null
@@ -0,0 +1,110 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules for am files included (also recursively) by
+# Makefile.am.
+# Keep in sync with sister tests 'remake10a.test' and 'remake10c.test'.
+
+. ./defs || Exit 1
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+magic3=%%MagicStringThree%%
+
+if using_gmake; then
+  remake="$MAKE nil"
+else
+  remake="$MAKE Makefile"
+fi
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+.PHONY: nil
+nil:
+include foo.am
+## Used by "make distcheck" later.
+check-local:
+       test -f $(top_srcdir)/foo.am
+       test ! -r $(top_srcdir)/bar.am
+       test x'$(FINGERPRINT)' = x'DummyValue'
+END
+
+echo 'FINGERPRINT = BadBadBad' > foo.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    top_srcdir=..
+  else
+    top_srcdir=.
+  fi
+
+  $top_srcdir/configure
+  $MAKE # Should be a no-op.
+
+  $sleep
+  echo "FINGERPRINT = $magic1" > $top_srcdir/foo.am
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile
+
+  $sleep
+  echo "FINGERPRINT = $magic2" > $top_srcdir/foo.am
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile
+
+  $sleep
+  echo 'include $(top_srcdir)/bar.am' > $top_srcdir/foo.am
+  echo "FINGERPRINT = $magic3" > $top_srcdir/bar.am
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile && Exit 1
+  $FGREP $magic3 Makefile
+
+  $sleep
+  echo "FINGERPRINT = $magic1" > $top_srcdir/bar.am
+  $remake
+  $FGREP $magic2 Makefile && Exit 1
+  $FGREP $magic3 Makefile && Exit 1
+  $FGREP $magic1 Makefile
+
+  $sleep
+  echo "FINGERPRINT = DummyValue" > $top_srcdir/foo.am
+  using_gmake || $remake
+  $MAKE distcheck
+  $FGREP $magic1 Makefile && Exit 1 # Sanity check.
+  $FGREP $magic2 Makefile && Exit 1 # Likewise.
+  $FGREP $magic3 Makefile && Exit 1 # Likewise.
+
+  $MAKE distclean
+
+  cd $top_srcdir
+
+done
+
+:
diff --git a/t/remake10c.sh b/t/remake10c.sh
new file mode 100755 (executable)
index 0000000..dfb43f4
--- /dev/null
@@ -0,0 +1,114 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules for m4 files included (also recursively) by
+# aclocal.m4.
+# Keep in sync with sister tests 'remake10a.test' and 'remake10b.test'.
+
+. ./defs || Exit 1
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+magic3=%%MagicStringThree%%
+
+if using_gmake; then
+  remake="$MAKE nil"
+else
+  remake="$MAKE Makefile"
+fi
+
+cat >> configure.ac <<END
+FINGERPRINT='my_fingerprint'
+AC_SUBST([FINGERPRINT])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I m4
+.PHONY: nil
+nil:
+## Used by "make distcheck" later.
+check-local:
+       test -f $(top_srcdir)/m4/foo.m4
+       test ! -r $(top_srcdir)/m4/bar.m4
+       test x'$(FINGERPRINT)' = x'DummyValue'
+END
+
+mkdir m4
+echo 'AC_DEFUN([my_fingerprint], [BadBadBad])' > m4/foo.m4
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    top_srcdir=..
+  else
+    top_srcdir=.
+  fi
+
+  $top_srcdir/configure
+  $MAKE # Should be a no-op.
+
+  $sleep
+  echo "AC_DEFUN([my_fingerprint], [$magic1])" > $top_srcdir/m4/foo.m4
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile
+
+  $sleep
+  echo "AC_DEFUN([my_fingerprint], [$magic2])" > $top_srcdir/m4/foo.m4
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile
+
+  $sleep
+  echo "m4_include([m4/bar.m4])" > $top_srcdir/m4/foo.m4
+  echo "AC_DEFUN([my_fingerprint], [$magic3])" > $top_srcdir/m4/bar.m4
+  $remake
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile && Exit 1
+  $FGREP $magic3 Makefile
+
+  $sleep
+  echo "AC_DEFUN([my_fingerprint], [$magic1])" > $top_srcdir/m4/bar.m4
+  $remake
+  $FGREP $magic2 Makefile && Exit 1
+  $FGREP $magic3 Makefile && Exit 1
+  $FGREP $magic1 Makefile
+
+  $sleep
+  echo "AC_DEFUN([my_fingerprint], [DummyValue])" > $top_srcdir/m4/foo.m4
+  echo "AC_DEFUN([AM_UNUSED], [NoSuchMacro])" > $top_srcdir/m4/bar.m4
+  using_gmake || $remake
+  $MAKE distcheck
+  $FGREP $magic1 Makefile && Exit 1 # Sanity check.
+  $FGREP $magic2 Makefile && Exit 1 # Likewise.
+  $FGREP $magic3 Makefile && Exit 1 # Likewise.
+
+  $MAKE distclean
+
+  cd $top_srcdir
+
+done
+
+:
diff --git a/t/remake11.sh b/t/remake11.sh
new file mode 100755 (executable)
index 0000000..b88254f
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules in deeply nested subdirectories, and with a lot
+# of files.  This is basically a mild stress test, ensuring that rebuild
+# rules don't break in obvious ways in a slightly "heavier than usual"
+# setup.
+
+. ./defs || Exit 1
+
+ocwd=`pwd` || Exit 1
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+
+echo "AC_SUBST([FOO], [$magic1])" >> configure.ac
+
+echo "@FOO@" > bar.in
+echo "AC_CONFIG_FILES([bar])" >> configure.ac
+d=; unset d # Avoid unduly interferences from the environment.
+for i in 0 1 2 3 4 5 6 7 8 9; do
+  d=${d+"$d/"}sub$i
+  echo "SUBDIRS = sub$i" > Makefile.am
+  echo "AC_CONFIG_FILES([$d/Makefile])" >> "$ocwd"/configure.ac
+  echo "AC_CONFIG_FILES([$d/bar])" >> "$ocwd"/configure.ac
+  mkdir sub$i
+  cd sub$i
+  echo "$d: @FOO@" > bar.in
+done
+echo AC_OUTPUT >> "$ocwd"/configure.ac
+: > Makefile.am
+unset d i
+bottom=`pwd`
+
+cd "$ocwd"
+
+makefiles_am_list=`find . -name Makefile.am | LC_ALL=C sort`
+makefiles_list=`echo "$makefiles_am_list" | sed 's/\.am$//'`
+bar_in_list=`find . -name bar.in | LC_ALL=C sort`
+bar_list=`echo "$bar_in_list" | sed 's/\.in$//'`
+
+cat configure.ac # For debugging.
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+
+for f in configure config.status $makefiles_list $bar_list; do
+  $FGREP "$magic1" $f
+done
+
+$sleep
+sed "s/$magic1/$magic2/" configure.ac >configure.tmp
+mv -f configure.tmp configure.ac
+
+cd "$bottom"
+$MAKE
+cd "$ocwd"
+
+for f in configure config.status $makefiles_list $bar_list; do
+  $FGREP "$magic2" $f
+done
+$FGREP "$magic1" configure config.status $makefiles_list $bar_list && Exit 1
+
+$MAKE distcheck
+
+:
diff --git a/t/remake12.sh b/t/remake12.sh
new file mode 100755 (executable)
index 0000000..73d85d5
--- /dev/null
@@ -0,0 +1,146 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test basic remake rules for Makefiles with non-default names
+# and/or with multiple sources.
+
+. ./defs || Exit 1
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+magic3=%%MagicStringThree%%
+
+# See if the user's make implementation support an include directive.
+# We need it in this test.
+echo 'all:; @echo include is supported' > incl.mk
+echo 'include incl.mk' > gnu-style.mk
+echo '.include "incl.mk"' > bsd-style.mk
+if $MAKE -f gnu-style.mk | grep 'include is supported'; then
+  echo "$me: GNU make include style supported"
+  include_zardoz='include zardoz'
+elif $MAKE -f bsd-style.mk | grep 'include is supported'; then
+  echo "$me: BSD make include style supported"
+  include_zardoz='.include "zardoz"'
+else
+  skip_ "make doesn't support any \"include\" directive"
+fi
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([zardoz])
+AC_CONFIG_LINKS([Makefile:Makefile])
+AC_OUTPUT
+END
+
+cat > zardoz.am <<END
+EXTRA_DIST = Makefile
+#H: $magic1
+END
+
+cat > Makefile <<END
+$include_zardoz
+nil:
+.PHONY: nil
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+if using_gmake; then
+  $MAKE nil
+else
+  $MAKE Makefile
+fi
+grep '^#H:' zardoz.in # For debugging.
+$FGREP $magic1 zardoz
+$FGREP $magic1 zardoz.in
+$MAKE distcheck
+$MAKE distclean # This shouldn't remove Makefile.
+ls -l
+test -f Makefile
+
+./configure
+
+$sleep
+sed "s/%MAGIC3%/$magic3/" >> Makefile <<'END'
+my-check:
+       ls -l . $(srcdir) ;: For debugging.
+       test -f $(srcdir)/quux.am
+       test -f $(srcdir)/quux.in
+       test -f $(srcdir)/bot.in
+       test -f $(srcdir)/top.in
+       test ! -r $(srcdir)/zardoz.am
+       test ! -r $(srcdir)/zardoz.in
+       grep FOO zardoz ;: For debugging.
+       test x'$(FOO)' = x'%MAGIC3%'
+test:
+       ls -l ;: For debugging.
+       test x'$(FOO)' = x'dummy'
+.PHONY: test my-check
+END
+sed "s/^#H:.*/#H: $magic2/" zardoz.am > t
+cat >> t <<'END'
+# Used by "make distcheck" below.
+check-local: my-check
+END
+mv -f t zardoz.am
+cat zardoz.am # For debugging.
+if using_gmake; then
+  $MAKE nil
+else
+  $MAKE zardoz
+fi
+$FGREP my-check zardoz # Sanity check.
+$FGREP $magic1 zardoz zardoz.in && Exit 1
+$FGREP $magic2 zardoz
+$FGREP $magic2 zardoz.in
+
+./configure
+
+$sleep
+sed 's/^\(AC_CONFIG_FILES\)(.*/\1([zardoz:top.in:quux.in:bot.in])/' \
+  <configure.ac >t
+mv -f t configure.ac
+cat configure.ac # For debugging.
+sed '/^#H:/d' zardoz.am > quux.am
+echo 'FOO = dummy' >> quux.am
+echo 'BAR = $(BAZ)' > top.in
+echo "BAZ = $magic3" > bot.in
+is_gmake || $MAKE zardoz
+$MAKE test
+$FGREP my-check zardoz # Sanity check.
+$FGREP $magic3 quux.in && Exit 1
+$FGREP $magic3 zardoz
+$FGREP $magic1 zardoz && Exit 1
+$FGREP $magic2 zardoz && Exit 1
+# After the remake above, the files 'zardoz.am' and 'zardoz.in'
+# should be no more needed.
+echo 'endif' > zardoz.am # Put in a syntax error.
+is_gmake || $MAKE zardoz
+$MAKE test
+rm -f zardoz.in zardoz.am # Get rid of them.
+is_gmake || $MAKE zardoz
+$MAKE test
+
+echo 'FOO = $(BAR)' >> quux.am
+is_gmake || $MAKE zardoz
+$MAKE distcheck
+
+:
diff --git a/t/remake1a.sh b/t/remake1a.sh
new file mode 100755 (executable)
index 0000000..fede092
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure remaking rules in subdir are correctly generated.
+# See also sister "grepping" test 'remake.test'.
+
+. ./defs || Exit 1
+
+fingerprint='=/FiNgErPrInT/='
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# Rebuild rules should work even if there is no top-level
+# makefiles, if we are careful enough to trigger them only
+# in proper subdirs.
+$sleep
+echo "# $fingerprint" > sub/Makefile.am
+cd sub
+$MAKE Makefile
+cd ..
+# Check that no spurious Makefile has been created in the
+# top-level directory.
+test ! -r Makefile
+# Check that the Makefile in the subdirectory has been properly
+# updated.
+$FGREP "$fingerprint" sub/Makefile
+
+:
diff --git a/t/remake2.sh b/t/remake2.sh
new file mode 100755 (executable)
index 0000000..228b14f
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Weak "grepping" test trying to ensure that remaking rules in subdir
+# are correct even when there is no upper-level Makefile.
+# TODO: we should really add also functional tests for this!
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+: > sub/Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '\$(AUTOMAKE).*sub/Makefile' sub/Makefile.in
+
+:
diff --git a/t/remake3.sh b/t/remake3.sh
new file mode 100755 (executable)
index 0000000..96294fb
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Weak "grepping" test trying to ensure that remake rules work for files
+# in a subdirectory even when there is no Makefile for that subdirectory.
+# See also sister functional test 'remake3a.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/foo])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+mkdir sub
+: > sub/foo.in
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^sub/foo' Makefile.in
+
+:
diff --git a/t/remake3a.sh b/t/remake3a.sh
new file mode 100755 (executable)
index 0000000..cac2abc
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure that remake rules work for files in a subdirectory even when
+# there is no Makefile for that subdirectory.
+# See also sister "grepping" test 'remake3.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/foo])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+all-local: sub/foo
+END
+
+mkdir sub
+: > sub/foo.in
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# First a VPATH build.
+mkdir build
+cd build
+../configure
+$sleep
+test -f sub/foo
+test ! -s sub/foo
+echo '#GrepMe#' > ../sub/foo.in
+$MAKE
+grep '#GrepMe#' sub/foo
+
+cd ..
+
+# Now try an in-tree build.
+: > sub/foo.in # Restore its original (empty) content.
+./configure
+$sleep
+test -f sub/foo
+test ! -s sub/foo
+echo '#GrepMe#' > sub/foo.in
+$MAKE
+grep '#GrepMe#' sub/foo
+
+# Finally try to check the distribution.
+$sleep
+echo '%GrepMe%' > sub/foo.in
+cat >>Makefile.am <<END
+check-local:
+       grep '%GrepMe%' sub/foo
+END
+$MAKE
+grep "grep '%GrepMe%' sub/foo" Makefile.in # Sanity check.
+$MAKE distcheck
+
+:
diff --git a/t/remake4.sh b/t/remake4.sh
new file mode 100755 (executable)
index 0000000..43f8569
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Makefile.in are up to date after make dist.
+# This is expected to work even without GNU Make (the GNU Make
+# feature that isn't supported elsewhere is the rebuild of
+# Makefile dependencies during ordinary builds).
+#
+# If this fails, this is likely to be due to a dependency being
+# given two different name.  For instance BSD Make does not know
+# that 'Makefile' is the same as './Makefile'
+#
+# Report from Akim Demaille.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+# Rebuild rule are ok until make dist, but not afterwards.
+if test ! -f rebuild_ok; then
+  ACLOCAL=false
+  AUTOMAKE=false
+  AUTOCONF=false
+fi
+AC_OUTPUT
+EOF
+
+: > rebuild_ok
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE
+$sleep
+touch aclocal.m4
+$MAKE distdir
+cd $me-1.0
+test ! -f rebuild_ok
+./configure
+$MAKE
+
+:
diff --git a/t/remake5.sh b/t/remake5.sh
new file mode 100755 (executable)
index 0000000..dba802a
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that AM_MAINTAINER_MODE disable some rebuild rules,
+# but not all.
+# Report from Ralf Corsepius.
+
+. ./defs || Exit 1
+
+if using_gmake; then
+  remake="$MAKE"
+else
+  remake="$MAKE Makefile"
+fi
+
+cat >>configure.ac <<'EOF'
+AM_MAINTAINER_MODE
+m4_include([foo.m4])
+if test ! -f rebuild_ok; then
+  ACLOCAL=false
+  AUTOMAKE=false
+  AUTOCONF=false
+fi
+AC_OUTPUT
+EOF
+
+: > foo.m4
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE
+
+# Make sure the rules to rebuild configure/Makefile.in are not
+# triggered by default.  ($MAKE will fail if they are, because the
+# tools are set to false.)
+$sleep
+touch aclocal.m4 Makefile.am configure.ac foo.m4
+$remake
+
+# Make sure the rebuild rule for Makefile is triggered.
+$sleep
+echo '# GrEpMe' >>Makefile.in
+$remake
+grep GrEpMe Makefile
+
+# Make sure the rebuild rule for config.status is triggered.
+$sleep
+grep 'AUTOCONF.*=.*false' Makefile
+: > rebuild_ok
+./configure --no-create
+$remake
+grep 'AUTOCONF.*=.*false' Makefile && Exit 1
+
+# Make sure rebuild rules do work if --enable-maintainer-mode is given.
+./configure --enable-maintainer-mode
+$sleep
+echo 'AC_SUBST([YIPPY_YIPPY_YEAH])' >foo.m4
+$remake
+grep YIPPY_YIPPY_YEAH Makefile
+
+# Try the distribution, for completeness.
+$MAKE distcheck
+
+:
diff --git a/t/remake6.sh b/t/remake6.sh
new file mode 100755 (executable)
index 0000000..c48c1b8
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure remaking rules work when subdir Makefile.in has been removed.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+END
+mkdir sub
+: > sub/Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+$MAKE
+
+# Now, we are set up.  Ensure that, for either missing Makefile.in,
+# or updated Makefile.am, rebuild rules are run, and run exactly once
+# only.
+
+rm -f Makefile.in
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+test `grep -c " --run " stdout` -eq 1
+
+rm -f sub/Makefile.in
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+test `grep -c " --run " stdout` -eq 1
+
+$sleep  # Let touched files appear newer.
+
+touch Makefile.am
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+test `grep -c " --run " stdout` -eq 1
+
+touch sub/Makefile.am
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+test `grep -c " --run " stdout` -eq 1
+
+:
diff --git a/t/remake7.sh b/t/remake7.sh
new file mode 100755 (executable)
index 0000000..fbd15e6
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure remaking rules fail when they should.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+END
+mkdir sub
+: > sub/Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+$MAKE
+
+$sleep
+
+# Fail for broken input files.
+
+echo "if FOO" > sub/Makefile.am
+$MAKE && Exit 1
+
+: >sub/Makefile.am
+$MAKE
+
+mv Makefile.am backup
+echo "if FOO" > Makefile.am
+$MAKE && Exit 1
+
+# Fail for missing input files, with or without missing
+# Makefile.in files.
+
+cp backup Makefile.am
+mv sub/Makefile.am sub/backup
+$MAKE && Exit 1
+
+rm -f sub/Makefile.in
+$MAKE && Exit 1
+
+mv sub/backup sub/Makefile.am
+rm -f Makefile.am
+$MAKE && Exit 1
+
+rm -f Makefile.in
+$MAKE && Exit 1
+
+:
diff --git a/t/remake8a.sh b/t/remake8a.sh
new file mode 100755 (executable)
index 0000000..1b32a5e
--- /dev/null
@@ -0,0 +1,190 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test basic remake rules for Makefiles, for an *in-tree build*.
+# This testcase checks dependency of generated Makefile from Makefile.am,
+# configure.ac, acinclude.m4, aclocal.m4, and extra m4 files considered
+# by aclocal.
+# Keep this in sync with sister test 'remake8b.test', which performs the
+# same checks for a VPATH build.
+
+. ./defs || Exit 1
+
+mv -f configure.ac configure.stub
+
+cat > Makefile.am <<'END'
+all-local: foo
+foo:
+       echo '!Foo!' >$@
+check-local:
+       cat foo
+       grep '!Foo!' foo
+CLEANFILES = foo
+END
+
+cat configure.stub - > configure.ac <<'END'
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+srcdir='.' # To make syncing with remake8b.test easier.
+
+$srcdir/configure
+
+$MAKE
+cat foo
+grep '!Foo!' foo
+$MAKE distcheck
+
+rm -f foo
+
+# Modify just Makefile.am.
+
+$sleep
+
+cat > $srcdir/Makefile.am <<'END'
+all-local: bar
+bar:
+       echo '!Baz!' >$@
+check-local:
+       cat bar
+       grep '!Baz!' bar
+       test ! -r $(srcdir)/foo
+       test ! -r foo
+CLEANFILES = bar
+END
+
+using_gmake || $MAKE Makefile
+$MAKE
+cat bar
+grep '!Baz!' bar
+test ! -r foo
+$MAKE distcheck
+
+rm -f bar
+
+# Modify Makefile.am and configure.ac.
+
+$sleep
+
+cat > $srcdir/Makefile.am <<'END'
+check-local:
+       cat quux
+       grep '!Zardoz!' quux
+       test ! -r $(srcdir)/bar
+       test ! -r bar
+END
+
+cat $srcdir/configure.stub - > $srcdir/configure.ac <<'END'
+AC_CONFIG_FILES([quux])
+AC_SUBST([QUUX], [Zardoz])
+AC_OUTPUT
+END
+
+cat > $srcdir/quux.in <<'END'
+!@QUUX@!
+END
+
+using_gmake || $MAKE Makefile
+$MAKE
+cat quux
+grep '!Zardoz!' quux
+test ! -r bar
+$MAKE distcheck
+
+rm -f quux
+
+# Modify Makefile.am to add a directory of extra m4 files
+# considered by aclocal.
+
+$sleep
+
+mkdir $srcdir/m4
+
+cat > $srcdir/Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I m4
+check-local:
+       cat quux
+       grep '%Foo%' quux
+       test x'$(QUUX)' = x'%Foo%'
+END
+
+$MAKE # This should place aclocal flags in Makefile.
+grep '.*-I m4' Makefile # Sanity check.
+
+# Modify configure.ac and aclocal.m4.
+
+$sleep
+
+cat $srcdir/configure.stub - > $srcdir/configure.ac <<'END'
+AC_CONFIG_FILES([quux])
+MY_CUSTOM_MACRO
+AC_OUTPUT
+END
+
+cat >> $srcdir/aclocal.m4 <<'END'
+AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Foo%])])
+END
+
+$MAKE
+cat quux
+grep '%Foo%' quux
+$MAKE distcheck
+
+# Modify Makefile.am, remove aclocal.m4, and add a new m4 file to
+# the directory of extra m4 files considered by aclocal.  This new
+# file should now provide a macro required by configure.ac and that
+# was previously provided by aclocal.m4.
+
+$sleep
+
+sed 's/%Foo%/%Bar%/g' $srcdir/Makefile.am > t
+mv -f t $srcdir/Makefile.am
+cat $srcdir/Makefile.am
+rm -f $srcdir/aclocal.m4
+cat > $srcdir/m4/blah.m4 <<'END'
+AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Bar%])])
+END
+
+$MAKE
+cat quux
+grep '%Bar%' quux
+$MAKE distcheck
+
+# Modify Makefile.am, remove all the extra m4 files to considered
+# by aclocal, and add an acinclude.m4 file.  This last file should
+# now provide a macro required by configure.ac, and that was
+# previously provided by the extra m4 files considered by aclocal.
+
+$sleep
+
+rm -f $srcdir/m4/*.m4
+sed 's/%Bar%/%Quux%/g' $srcdir/Makefile.am > t
+mv -f t $srcdir/Makefile.am
+cat $srcdir/Makefile.am
+cat > $srcdir/acinclude.m4 <<'END'
+AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Quux%])])
+END
+
+$MAKE
+cat quux
+grep '%Quux%' quux
+$MAKE distcheck
+
+:
diff --git a/t/remake8b.sh b/t/remake8b.sh
new file mode 100755 (executable)
index 0000000..5f687ba
--- /dev/null
@@ -0,0 +1,192 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test basic remake rules for Makefiles, for a *VPATH build*.
+# This testcase checks dependency of generated Makefile from Makefile.am,
+# configure.ac, acinclude.m4, aclocal.m4, and extra m4 files considered
+# by aclocal.
+# Keep this in sync with sister test 'remake8a.test', which performs the
+# same checks for a in-tree build.
+
+. ./defs || Exit 1
+
+mv -f configure.ac configure.stub
+
+cat > Makefile.am <<'END'
+all-local: foo
+foo:
+       echo '!Foo!' >$@
+check-local:
+       cat foo
+       grep '!Foo!' foo
+CLEANFILES = foo
+END
+
+cat configure.stub - > configure.ac <<'END'
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+mkdir build
+cd build
+srcdir='..' # To make syncing with remake8a.test easier.
+
+$srcdir/configure
+
+$MAKE
+cat foo
+grep '!Foo!' foo
+$MAKE distcheck
+
+rm -f foo
+
+# Modify just Makefile.am.
+
+$sleep
+
+cat > $srcdir/Makefile.am <<'END'
+all-local: bar
+bar:
+       echo '!Baz!' >$@
+check-local:
+       cat bar
+       grep '!Baz!' bar
+       test ! -r $(srcdir)/foo
+       test ! -r foo
+CLEANFILES = bar
+END
+
+using_gmake || $MAKE Makefile
+$MAKE
+cat bar
+grep '!Baz!' bar
+test ! -r foo
+$MAKE distcheck
+
+rm -f bar
+
+# Modify Makefile.am and configure.ac.
+
+$sleep
+
+cat > $srcdir/Makefile.am <<'END'
+check-local:
+       cat quux
+       grep '!Zardoz!' quux
+       test ! -r $(srcdir)/bar
+       test ! -r bar
+END
+
+cat $srcdir/configure.stub - > $srcdir/configure.ac <<'END'
+AC_CONFIG_FILES([quux])
+AC_SUBST([QUUX], [Zardoz])
+AC_OUTPUT
+END
+
+cat > $srcdir/quux.in <<'END'
+!@QUUX@!
+END
+
+using_gmake || $MAKE Makefile
+$MAKE
+cat quux
+grep '!Zardoz!' quux
+test ! -r bar
+$MAKE distcheck
+
+rm -f quux
+
+# Modify Makefile.am to add a directory of extra m4 files
+# considered by aclocal.
+
+$sleep
+
+mkdir $srcdir/m4
+
+cat > $srcdir/Makefile.am <<'END'
+ACLOCAL_AMFLAGS = -I m4
+check-local:
+       cat quux
+       grep '%Foo%' quux
+       test x'$(QUUX)' = x'%Foo%'
+END
+
+$MAKE # This should place aclocal flags in Makefile.
+grep '.*-I m4' Makefile # Sanity check.
+
+# Modify configure.ac and aclocal.m4.
+
+$sleep
+
+cat $srcdir/configure.stub - > $srcdir/configure.ac <<'END'
+AC_CONFIG_FILES([quux])
+MY_CUSTOM_MACRO
+AC_OUTPUT
+END
+
+cat >> $srcdir/aclocal.m4 <<'END'
+AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Foo%])])
+END
+
+$MAKE
+cat quux
+grep '%Foo%' quux
+$MAKE distcheck
+
+# Modify Makefile.am, remove aclocal.m4, and add a new m4 file to
+# the directory of extra m4 files considered by aclocal.  This new
+# file should now provide a macro required by configure.ac and that
+# was previously provided by aclocal.m4.
+
+$sleep
+
+sed 's/%Foo%/%Bar%/g' $srcdir/Makefile.am > t
+mv -f t $srcdir/Makefile.am
+cat $srcdir/Makefile.am
+rm -f $srcdir/aclocal.m4
+cat > $srcdir/m4/blah.m4 <<'END'
+AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Bar%])])
+END
+
+$MAKE
+cat quux
+grep '%Bar%' quux
+$MAKE distcheck
+
+# Modify Makefile.am, remove all the extra m4 files to considered
+# by aclocal, and add an acinclude.m4 file.  This last file should
+# now provide a macro required by configure.ac, and that was
+# previously provided by the extra m4 files considered by aclocal.
+
+$sleep
+
+rm -f $srcdir/m4/*.m4
+sed 's/%Bar%/%Quux%/g' $srcdir/Makefile.am > t
+mv -f t $srcdir/Makefile.am
+cat $srcdir/Makefile.am
+cat > $srcdir/acinclude.m4 <<'END'
+AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Quux%])])
+END
+
+$MAKE
+cat quux
+grep '%Quux%' quux
+$MAKE distcheck
+
+:
diff --git a/t/remake9a.sh b/t/remake9a.sh
new file mode 100755 (executable)
index 0000000..7ee3075
--- /dev/null
@@ -0,0 +1,109 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when configure.ac or its prerequisites change.
+# Keep in sync with the other sister tests 'remake9*.test'.
+
+. ./defs || Exit 1
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+
+if using_gmake; then
+  remake_() { $MAKE nil; }
+else
+  remake_() { $MAKE Makefile && $MAKE foo.sh; }
+fi
+
+cat >> configure.ac <<END
+FINGERPRINT=BadBadBad
+AC_SUBST([FINGERPRINT])
+AC_CONFIG_FILES([foo.sh:foo.in], [chmod a+x foo.sh])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+nil:
+.PHONY: nil
+
+$(srcdir)/configure.ac: $(srcdir)/tweak-configure-in
+       $(SHELL) $(srcdir)/tweak-configure-in <$@ >$@-t
+       mv -f $@-t $@
+EXTRA_DIST = $(srcdir)/tweak-configure-in
+
+# Used by "make distcheck" later.
+check-local:
+       test x'$(FINGERPRINT)' = x'DummyValue'
+       test x"`./foo.sh`" = x"DummyValue"
+END
+
+cat > foo.in <<END
+#!/bin/sh
+echo '@FINGERPRINT@'
+END
+
+echo cat > tweak-configure-in # It is a no-op by default.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE # Should be a no-op.
+
+  $sleep
+  sed "s/^\\(FINGERPRINT\\)=.*/\\1=$magic1/" $srcdir/configure.ac >t
+  mv -f t $srcdir/configure.ac
+  remake_
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile
+  test x"`./foo.sh`" = x"$magic1"
+
+  $sleep
+  echo 'sed "s/^\\(FINGERPRINT\\)=.*/\\1='$magic2'/"' \
+    > $srcdir/tweak-configure-in
+  remake_
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile
+  test x"`./foo.sh`" = x"$magic2"
+
+  $sleep
+  echo cat > $srcdir/tweak-configure-in # Make it a no-op again.
+  sed "s/^\\(FINGERPRINT\\)=.*/\\1=DummyValue/" $srcdir/configure.ac >t
+  mv -f t $srcdir/configure.ac
+  using_gmake || remake_
+  $MAKE distcheck
+  $FGREP $magic1 Makefile && Exit 1 # Sanity check.
+  $FGREP $magic2 Makefile && Exit 1 # Likewise.
+
+  $MAKE distclean
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/remake9b.sh b/t/remake9b.sh
new file mode 100755 (executable)
index 0000000..cab606e
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when Makefile.am or its prerequisites change.
+# Keep in sync with the other sister tests 'remake9*.test'.
+
+. ./defs || Exit 1
+
+if using_gmake; then
+  remake_() { $MAKE nil; }
+else
+  remake_() { $MAKE Makefile && $MAKE foo.sh; }
+fi
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+FINGERPRINT = BadBadBad
+
+all-local: nil
+nil: foo.sh
+.PHONY: nil
+
+$(srcdir)/Makefile.am: $(srcdir)/tweak-makefile-am
+       $(SHELL) $(srcdir)/tweak-makefile-am <$@ >$@-t
+       mv -f $@-t $@
+EXTRA_DIST = $(srcdir)/tweak-makefile-am
+
+foo.sh: Makefile
+       rm -f $@ $@-t
+       echo '#!/bin/sh' > $@-t
+       echo "echo '$(FINGERPRINT)'" >> $@-t
+       chmod a+x $@-t && mv -f $@-t $@
+CLEANFILES = foo.sh
+
+# Used by "make distcheck" later.
+check-local:
+       test x'$(FINGERPRINT)' = x'DummyValue'
+       test x"`./foo.sh`" = x"DummyValue"
+END
+
+echo cat > tweak-makefile-am # It is a no-op by default.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE # Should be a no-op.
+
+  $sleep
+  sed "s/^\\(FINGERPRINT\\) *=.*/\\1 = $magic1/" $srcdir/Makefile.am >t
+  mv -f t $srcdir/Makefile.am
+  remake_
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile
+  test x"`./foo.sh`" = x"$magic1"
+
+  $sleep
+  echo 'sed "s/^\\(FINGERPRINT\\) *=.*/\\1 = '$magic2'/"' \
+    > $srcdir/tweak-makefile-am
+  remake_
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile
+  test x"`./foo.sh`" = x"$magic2"
+
+  $sleep
+  echo cat > $srcdir/tweak-makefile-am # Make it a no-op again.
+  sed "s/^\\(FINGERPRINT\\) *=.*/\\1 = DummyValue/" $srcdir/Makefile.am >t
+  mv -f t $srcdir/Makefile.am
+  using_gmake || remake_
+  $MAKE distcheck
+  $FGREP $magic1 Makefile && Exit 1 # Sanity check.
+  $FGREP $magic2 Makefile && Exit 1 # Likewise.
+
+  $MAKE distclean
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/remake9c.sh b/t/remake9c.sh
new file mode 100755 (executable)
index 0000000..efbec30
--- /dev/null
@@ -0,0 +1,112 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when acinclude.m4 or its prerequisites change.
+# Keep in sync with the other sister tests 'remake9*.test'.
+
+. ./defs || Exit 1
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+
+if using_gmake; then
+  remake_() { $MAKE nil; }
+else
+  remake_() { $MAKE Makefile && $MAKE foo.sh; }
+fi
+
+cat >> configure.ac <<END
+FINGERPRINT='my_fingerprint'
+AC_SUBST([FINGERPRINT])
+AC_CONFIG_FILES([foo.sh:foo.in], [chmod a+x foo.sh])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+nil:
+.PHONY: nil
+
+# The right way to extend an autogenerated aclocal.m4 is to provide
+# an acinclude.m4 file.
+$(srcdir)/acinclude.m4: $(srcdir)/tweak-acinclude-m4
+       $(SHELL) $(srcdir)/tweak-acinclude-m4 <$@ >$@-t
+       mv -f $@-t $@
+       touch $@
+EXTRA_DIST = $(srcdir)/tweak-acinclude-m4
+
+# Used by "make distcheck" later.
+check-local:
+       test x'$(FINGERPRINT)' = x'DummyValue'
+       test x"`./foo.sh`" = x"DummyValue"
+END
+
+cat > foo.in <<END
+#!/bin/sh
+echo '@FINGERPRINT@'
+END
+
+echo "AC_DEFUN([my_fingerprint], [BadBadBad])" > acinclude.m4
+
+echo : > tweak-acinclude-m4 # It is a no-op by default.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE # Should be a no-op.
+
+  $sleep
+  echo "AC_DEFUN([my_fingerprint], [$magic1])" > $srcdir/acinclude.m4
+  remake_
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile
+  test x"`./foo.sh`" = x"$magic1"
+
+  $sleep
+  echo "echo 'AC_DEFUN([my_fingerprint], [$magic2])'" \
+    > $srcdir/tweak-acinclude-m4
+  remake_
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile
+  test x"`./foo.sh`" = x"$magic2"
+
+  $sleep
+  echo : > $srcdir/tweak-acinclude-m4 # Make it a no-op again.
+  echo "AC_DEFUN([my_fingerprint], [DummyValue])" > $srcdir/acinclude.m4
+  using_gmake || remake_
+  $MAKE distcheck
+  $FGREP $magic1 Makefile && Exit 1 # Sanity check.
+  $FGREP $magic2 Makefile && Exit 1 # Likewise.
+
+  $MAKE distclean
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/remake9d.sh b/t/remake9d.sh
new file mode 100755 (executable)
index 0000000..dddb083
--- /dev/null
@@ -0,0 +1,112 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test remake rules when aclocal.m4 or its prerequisites change.
+# Keep in sync with the other sister tests 'remake9*.test'.
+
+. ./defs || Exit 1
+
+magic1=::MagicStringOne::
+magic2=__MagicStringTwo__
+
+if using_gmake; then
+  remake_() { $MAKE nil; }
+else
+  remake_() { $MAKE Makefile && $MAKE foo.sh; }
+fi
+
+cat >> configure.ac <<END
+FINGERPRINT='my_fingerprint'
+AC_SUBST([FINGERPRINT])
+AC_CONFIG_FILES([foo.sh:foo.in], [chmod a+x foo.sh])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+nil:
+.PHONY: nil
+
+# A non-autogenerated aclocal.m4 can be extended by hand.
+$(srcdir)/aclocal.m4: $(srcdir)/tweak-aclocal-m4
+       $(SHELL) $(srcdir)/tweak-aclocal-m4 <$@ >$@-t
+       mv -f $@-t $@
+       touch $@
+EXTRA_DIST = $(srcdir)/tweak-aclocal-m4
+
+# Used by "make distcheck" later.
+check-local:
+       test x'$(FINGERPRINT)' = x'DummyValue'
+       test x"`./foo.sh`" = x"DummyValue"
+END
+
+cat > foo.in <<END
+#!/bin/sh
+echo '@FINGERPRINT@'
+END
+
+echo cat > tweak-aclocal-m4 # It is a no-op by default.
+
+$ACLOCAL
+# Cheatingly mark aclocal.m4 as non auto-generated.
+sed '/^ *#.*generated automatically/d' aclocal.m4 > t
+mv -f t aclocal.m4
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE # Should be a no-op.
+
+  $sleep
+  echo "AC_DEFUN([my_fingerprint], [$magic1])dnl %%%" >> $srcdir/aclocal.m4
+  remake_
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile
+  test x"`./foo.sh`" = x"$magic1"
+
+  $sleep
+  echo "sed 's/.*dnl *%%%.*/AC_DEFUN([my_fingerprint], [$magic2])/'" \
+    > $srcdir/tweak-aclocal-m4
+  remake_
+  $FGREP FINGERPRINT Makefile # For debugging.
+  $FGREP $magic1 Makefile && Exit 1
+  $FGREP $magic2 Makefile
+  test x"`./foo.sh`" = x"$magic2"
+
+  $sleep
+  echo cat > $srcdir/tweak-aclocal-m4 # Make it a no-op again.
+  echo 'AC_DEFUN([my_fingerprint], [DummyValue])' >> $srcdir/aclocal.m4
+  using_gmake || remake_
+  $MAKE distcheck
+  $FGREP $magic1 Makefile && Exit 1 # Sanity check.
+  $FGREP $magic2 Makefile && Exit 1 # Likewise.
+
+  $MAKE distclean
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/repeated-options.sh b/t/repeated-options.sh
new file mode 100755 (executable)
index 0000000..8ad5765
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake does not complain on repeated options, nor
+# generate broken or incorrect makefiles.
+
+required='cc bzip2'
+. ./defs || Exit 1
+
+cat >configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip no-dist-gzip dist-bzip2])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = parallel-tests subdir-objects subdir-objects
+AUTOMAKE_OPTIONS += dist-bzip2 parallel-tests
+TESTS = foo.test
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = EXEEXT='$(EXEEXT)'
+bin_PROGRAMS = sub/foo
+.PHONY: test-build
+test-build:
+       ls -l . sub
+       test -f sub/foo.$(OBJEXT)
+       test -f sub/foo$(EXEEXT)
+END
+
+mkdir sub
+
+cat > foo.test <<'END'
+#!/bin/sh
+test -f sub/foo$EXEEXT && test -x sub/foo$EXEEXT
+END
+chmod a+x foo.test
+
+cat > sub/foo.c <<'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+cp "$am_scriptdir"/compile "$am_scriptdir"/test-driver .
+
+$ACLOCAL
+$AUTOMAKE --foreign --foreign -Wall 2>stderr || { cat stderr >&2; Exit 1; }
+test -s stderr && { cat stderr >&2; Exit 1; }
+rm -f stderr
+$AUTOCONF
+
+./configure
+$MAKE
+$MAKE test-build
+$MAKE check
+ls -l
+test -f foo.log
+test -f test-suite.log
+$MAKE clean
+$MAKE distcheck
+ls -l
+test -f $me-1.0.tar.bz2
+test ! -r $me-1.0.tar.gz
+
+:
diff --git a/t/req.sh b/t/req.sh
new file mode 100755 (executable)
index 0000000..cfc3b43
--- /dev/null
+++ b/t/req.sh
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure macro used in m4 file is included.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<EOF
+AC_INIT
+AM_INIT_GUILE_MODULE
+EOF
+
+cat > acinclude.m4 << 'END'
+AC_DEFUN([AM_INIT_GUILE_MODULE],[
+. $srcdir/../GUILE-VERSION
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+AC_CONFIG_AUX_DIR(..)
+module=[$1]
+AC_SUBST(module)])
+END
+
+$ACLOCAL
+
+grep 'DEFUN.*INIT_AUTOMAKE' aclocal.m4
+
+:
diff --git a/t/reqd.sh b/t/reqd.sh
new file mode 100755 (executable)
index 0000000..9e0bcc1
--- /dev/null
+++ b/t/reqd.sh
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake will install several copies of required files if needed.
+# Reported by Marius Vollmer.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<EOF
+AC_CONFIG_FILES([one/Makefile two/Makefile])
+AC_OUTPUT
+EOF
+
+mkdir one
+mkdir two
+
+echo 'SUBDIRS = one two' > Makefile.am
+echo 'info_TEXINFOS = mumble.texi' > one/Makefile.am
+cat >one/mumble.texi <<'END'
+@setfilename mumble.info
+@include version.texi
+END
+
+cp one/Makefile.am one/mumble.texi two
+
+$ACLOCAL
+$AUTOMAKE --add-missing --copy
+
+test -f one/mdate-sh
+test -f one/texinfo.tex
+test -f two/mdate-sh
+test -f two/texinfo.tex
diff --git a/t/reqd2.sh b/t/reqd2.sh
new file mode 100755 (executable)
index 0000000..a9442a2
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for a bug reported by Andrew Suffield.
+# (Automake goes wild and try to rerun itself more than two time
+# to fix the Makefiles.)
+
+required='libtoolize'
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([req2], [1.0])
+AC_CONFIG_AUX_DIR([autoconf])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_PROG_CC
+AM_PROG_AR
+AM_PROG_LIBTOOL
+AC_CONFIG_FILES([autoconf/Makefile main/Makefile])
+AC_OUTPUT
+END
+
+mkdir autoconf
+mkdir main
+
+: > autoconf/Makefile.am
+echo 'SUBDIRS = autoconf main' >Makefile.am
+
+cat >main/Makefile.am <<'END'
+lib_LTLIBRARIES = lib0.la
+lib0_la_SOURCES = 0.c
+END
+
+: > ar-lib
+libtoolize --force --copy
+$ACLOCAL
+$AUTOCONF
+
+test -f autoconf/ltmain.sh # Sanity check.
+rm -f autoconf/ltmain.sh
+AUTOMAKE_fails --add-missing --copy
+grep '^configure\.ac:7:.* required file.*autoconf/ltmain\.sh' stderr
+
+:
diff --git a/t/rulepat.sh b/t/rulepat.sh
new file mode 100755 (executable)
index 0000000..5e547a5
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure RULE_PATTERN catches strange targets.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+$(srcdir)/Makefile.am:
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^$(srcdir)/Makefile\.am' Makefile.in
+
+:
diff --git a/t/sanity.sh b/t/sanity.sh
new file mode 100755 (executable)
index 0000000..d4f328c
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Unsafe absolute directory names should be diagnosed.
+
+. ./defs || Exit 1
+
+mkdir 'unsafe$'
+cd 'unsafe$'
+
+mv ../configure.ac .
+mv ../install-sh ../missing .
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'unsafe absolute working directory' stderr
+
+cd ..
+mkdir build
+cd build
+../unsafe$/configure 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'unsafe srcdir' stderr
+
+:
diff --git a/t/scripts.sh b/t/scripts.sh
new file mode 100755 (executable)
index 0000000..4808358
--- /dev/null
@@ -0,0 +1,27 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug reported by Jim Meyering.
+# AC_PROG_INSTALL was required when only noinst_SCRIPTS was defined.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+noinst_SCRIPTS = foo
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/seenc.sh b/t/seenc.sh
new file mode 100755 (executable)
index 0000000..d1bfa23
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure C-but-not-CC error works.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+dnl AC_PROG_CC and AC_PROG_CXX missing on purpose
+AC_LIBOBJ([fsusage])
+AC_LIBOBJ([mountlist])
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = x.C
+foo_LDADD = @LIBOBJS@
+END
+
+: > fsusage.c
+: > mountlist.c
+
+$ACLOCAL
+AUTOMAKE_fails
+grep ' C source.*CC.* undefined' stderr
+grep 'define .*CC.* add .*AC_PROG_CC' stderr
+grep ' C++ source.*CXX.* undefined' stderr
+grep 'define .*CXX.* add .*AC_PROG_CXX' stderr
+
+:
diff --git a/t/self-check-cleanup.tap b/t/self-check-cleanup.tap
new file mode 100755 (executable)
index 0000000..21c6388
--- /dev/null
@@ -0,0 +1,191 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Check creation/removal of temporary test working directory by './defs'.
+
+. ./defs || Exit 1
+
+plan_ 43
+
+# We still need a little hack to make ./defs work outside automake's
+# tree 'tests' subdirectory.  Not a big deal.
+sed "s|^am_top_builddir=.*|am_top_builddir='`pwd`'|" \
+  "$am_top_builddir"/defs-static >defs-static
+diff "$am_top_builddir"/defs-static defs-static \
+  && fatal_ "failed to edit defs-static"
+cp "$am_top_builddir"/defs .
+
+AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
+keep_testdirs=; unset keep_testdirs
+
+if ln -s defs foo && test -h foo; then
+  have_symlinks=yes
+else
+  have_symlinks=no
+fi
+export have_symlinks # Is used also by spawned shells.
+
+# Don't let a failure poison all subsequent tests.
+do_clean ()
+{
+  # Don't try to be smart and use find here, that has caused issues
+  # and extra ERROR results in the past.  Be dumb and safe.
+  for d in t t/* t/*/* t/*/*/*; do
+    test ! -d $d || chmod u+rwx $d || :
+  done
+  rm -rf t
+}
+
+# Exporting 'keep_testdirs' to "yes" in the environment should cause
+# the cleanup code not to be run, so that the temporary directories
+# are left on disk.
+command_ok_ '"keep_testdirs=yes" causes testdir to be kept around' eval '
+     env keep_testdirs=yes \
+       $AM_TEST_RUNNER_SHELL -c ". ./defs && echo okok >foo" t/dummy.sh \
+     && test -f t/dummy.dir/foo \
+     && test okok = `cat t/dummy.dir/foo`'
+
+do_clean
+
+# Check that pre-test cleanup works also with directories with
+# "null" permissions, and containing broken symlinks.
+mkdir t t/dummy.dir t/dummy.dir/sub
+(
+  cd t/dummy.dir
+  touch file sub/file
+  if test $have_symlinks = yes; then
+    ln -s file symlink
+    ln -s none brokenlink
+  fi
+)
+chmod 000 t/dummy.dir/sub/* t/dummy.dir/file
+test $have_symlinks = yes && chmod 000 t/dummy.dir/symlink
+chmod 500 t/dummy.dir/sub t/dummy.dir
+command_ok_ "pre-cleanup can deal with low-perms testdir" \
+            $AM_TEST_RUNNER_SHELL -c  '. ./defs' t/dummy.sh
+command_ok_ "pre-cleanup removed low-perms testdir" \
+            eval 'test ! -f t/dummy.dir \
+               && test ! -d t/dummy.dir \
+               && test ! -r t/dummy.dir'
+
+do_clean
+
+# Check that post-test cleanup works also with directories with
+# "null" permissions, and containing broken symlinks.
+command_ok_ "post-cleanup can deal with low-perms testdir" \
+            $AM_TEST_RUNNER_SHELL -c  '
+  stderr_fileno_=2
+  . ./defs || Exit 1
+  set -e
+  mkdir dir dir/sub
+  cd dir
+  touch file sub/file
+  if test $have_symlinks = yes; then
+    ln -s file symlink
+    ln -s none brokenlink
+  fi
+  cd ..
+  chmod 000 dir/sub/* dir/file
+  test $have_symlinks = yes && chmod 000 dir/symlink
+  chmod 500 dir/sub dir
+  :
+' t/dummy.sh
+command_ok_ "post-cleanup removed null-perms testdir" \
+            eval 'test ! -f t/dummy.dir \
+               && test ! -d t/dummy.dir \
+               && test ! -r t/dummy.dir'
+
+do_clean
+
+# Check that pre-test cleanup does not unduly change the permissions of
+# files to which symlinks in the temporary test directory point to.
+if test $have_symlinks = yes; then
+
+  mkdir dir
+  chmod 000 dir
+  : > file
+  chmod 000 file
+
+  mkdir t t/dummy.dir
+  (cd t/dummy.dir && ln -s ../../dir ../../file .)
+
+  command_ok_ "pre-cleanup with testdir with zero-perms symlinks" \
+               $AM_TEST_RUNNER_SHELL -c '. ./defs' t/dummy.sh
+  ls -l # For debugging.
+  command_ok_ "pre-cleanup chmod doesn't follow symlinks to files" \
+               eval 'ls -l file | grep "^----------.*file"'
+  command_ok_ "pre-cleanup chmod doesn't follow symlinks to dirs" \
+              eval 'ls -ld dir | grep "^d---------.*dir"'
+
+  command_ok_ "post-cleanup with testdir with zero-perms symlinks" \
+              $AM_TEST_RUNNER_SHELL -c '
+    ocwd=`pwd` || exit 1
+    stderr_fileno_=2
+    . ./defs || Exit 1
+    ln -s "$ocwd/dir" "$ocwd/file" .
+  ' t/dummy.sh
+  ls -l # For debugging.
+  command_ok_ "post-cleanup chmod doesn't follow symlinks to files" \
+               eval 'ls -l file | grep "^----------.*file"'
+  command_ok_ "post-cleanup chmod doesn't follow symlinks to dirs" \
+              eval 'ls -ld dir | grep "^d---------.*dir"'
+
+  chmod u+rwx dir file
+  rmdir dir
+  rm -f file
+
+else # $have_symlinks = no
+  skip_row_ 6 "symlinks not supported"
+fi
+
+do_clean
+
+# Check that the cleanup trap does not remove the temporary
+# test directory in case of test failure, skip, hard-error,
+# or when receiving a signal.
+
+for st in 1 2 3 10 77 99 126 127 130 255; do
+  command_ok_ "exit trap doesn't clobber exit status $st" \
+              not $AM_TEST_RUNNER_SHELL -c "
+    stderr_fileno_=2
+    . ./defs
+    : > foo
+    Exit $st
+  " t/dummy.sh
+  command_ok_ "testdir not removed if exiting with status $st" \
+              test -f t/dummy.dir/foo
+  do_clean
+done
+
+for sig in 1 2 3 9 13 15; do
+  if is_blocked_signal $sig; then
+    skip_row_ 2 -r "signal $sig seems blocked"
+    continue
+  fi
+  command_ok_ "exit trap doesn't clobber signal $sig" \
+              not $AM_TEST_RUNNER_SHELL -c "
+    stderr_fileno_=2
+    . ./defs
+    : > foo
+    kill -$sig \$\$
+  " t/dummy.sh
+  command_ok_ "testdir not removed if getting signal $sig" \
+              test -f t/dummy.dir/foo
+  do_clean
+done
+
+:
diff --git a/t/self-check-configure-help.sh b/t/self-check-configure-help.sh
new file mode 100755 (executable)
index 0000000..23b9dc7
--- /dev/null
@@ -0,0 +1,274 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check on the function used by the automake testsuite to
+# analyze output of "configure --help".
+
+. ./defs || Exit 1
+
+# FIXME: this test is a good candidate for a conversion to TAP.
+
+# Prefer real-world data.  This is from the help screen of the
+# configure script from GNU coreutils, with small adaptations.
+cat > help <<'END'
+'configure' configures GNU coreutils 8.14a to adapt to many kinds of systems.
+
+Usage: ./configure [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print 'checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for '--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or '..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [/usr/local]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, 'make install' will install all the files in
+'/usr/local/bin', '/usr/local/lib' etc.  You can specify
+an installation prefix other than '/usr/local' using '--prefix',
+for instance '--prefix=$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/coreutils]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-silent-rules          less verbose build output (undo: 'make V=1')
+  --disable-silent-rules         verbose build output (undo: 'make V=0')
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --disable-largefile     omit support for large files
+  --enable-threads={posix|solaris|pth|win32}
+                          specify multithreading API
+  --disable-threads       build without multithread safety
+  --disable-acl           do not support ACLs
+  --disable-assert        turn off assertions
+  --disable-rpath         do not hardcode runtime library paths
+  --disable-xattr         do not support extended attributes
+  --disable-libcap        disable libcap support
+  --enable-gcc-warnings   turn on lots of GCC warnings (for developers)
+  --enable-install-program=PROG_LIST
+                          install the programs in PROG_LIST (comma-separated,
+                          default: none)
+  --enable-no-install-program=PROG_LIST
+                          do NOT install the programs in PROG_LIST
+                          (comma-separated, default: arch,hostname,su)
+  --disable-nls           do not use Native Language Support
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
+  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+  --with-libpth-prefix[=DIR]  search for libpth in DIR/include and DIR/lib
+  --without-libpth-prefix     don't search for libpth in includedir and libdir
+  --without-included-regex
+                          don't compile regex; this is the default on systems
+                          with recent-enough versions of the GNU C Library
+                          (use with caution on other systems).
+  --without-selinux       do not use SELinux, even on systems with SELinux
+  --with-packager         String identifying the packager of this software
+  --with-packager-version Packager-specific version information
+  --with-packager-bug-reports
+                          Packager info for bug reports (URL/e-mail/...)
+  --with-tty-group[=NAME]
+                          group used by system for TTYs, "tty" when not
+                          specified (default: do not rely on any group used
+                          for TTYs)
+  --without-gmp           do not use the GNU MP library for arbitrary
+                          precision calculation (default: use it if available)
+  --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
+  --without-libintl-prefix     don't search for libintl in includedir and libdir
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  YACC        The "Yet Another C Compiler" implementation to use. Defaults to
+              'bison -y'. Values other than 'bison -y' will most likely break
+              on most systems.
+  YFLAGS      YFLAGS contains the list arguments that will be passed by
+              default to Bison. This script will default YFLAGS to the empty
+              string to avoid a default value of '-d' given by some make
+              applications.
+  DEFAULT_POSIX2_VERSION
+              POSIX version to default to; see 'config.hin'.
+
+Use these variables to override the choices made by 'configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bug-automake@gnu.org>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+END
+
+compare_extracted_help ()
+{
+  cat > exp || Exit 99
+  extract_configure_help "$1" help > got || Exit 1
+  cat exp
+  cat got
+  diff exp got || Exit 1
+}
+
+compare_extracted_help --disable-libcap <<'END'
+  --disable-libcap        disable libcap support
+END
+
+compare_extracted_help --disable-nls <<'END'
+  --disable-nls           do not use Native Language Support
+END
+
+compare_extracted_help --disable-option-checking <<'END'
+  --disable-option-checking  ignore unrecognized --enable/--with options
+END
+
+compare_extracted_help --build= <<'END'
+  --build=BUILD     configure for building on BUILD [guessed]
+END
+
+compare_extracted_help --host= <<'END'
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+END
+
+compare_extracted_help '--with-libintl-prefix[=]' <<'END'
+  --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
+END
+
+compare_extracted_help --without-included-regex <<'END'
+  --without-included-regex
+                          don't compile regex; this is the default on systems
+                          with recent-enough versions of the GNU C Library
+                          (use with caution on other systems).
+END
+
+compare_extracted_help --enable-threads= <<'END'
+  --enable-threads={posix|solaris|pth|win32}
+                          specify multithreading API
+END
+
+compare_extracted_help '--with-tty-group[=]' <<'END'
+  --with-tty-group[=NAME]
+                          group used by system for TTYs, "tty" when not
+                          specified (default: do not rely on any group used
+                          for TTYs)
+END
+
+compare_extracted_help '--prefix=' <<'END'
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [/usr/local]
+END
+
+compare_extracted_help '--exec-prefix=' <<'END'
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+END
+
+compare_extracted_help CC <<'END'
+  CC          C compiler command
+END
+
+compare_extracted_help CPP <<'END'
+  CPP         C preprocessor
+END
+
+compare_extracted_help CPPFLAGS <<'END'
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+END
+
+compare_extracted_help YACC <<'END'
+  YACC        The "Yet Another C Compiler" implementation to use. Defaults to
+              'bison -y'. Values other than 'bison -y' will most likely break
+              on most systems.
+END
+
+compare_extracted_help DEFAULT_POSIX2_VERSION <<'END'
+  DEFAULT_POSIX2_VERSION
+              POSIX version to default to; see 'config.hin'.
+END
+
+for o in \
+  '--nonesuch' \
+  '--nonesuch=' \
+  '--nonesuch[=]' \
+  '--disable-nls=' \
+  '--disable-nls[=]' \
+  '--without-included-regex=' \
+  '--without-included-regex[=]' \
+  '--prefix' \
+  '--prefix[=]' \
+  '--build' \
+  '--build[=]' \
+  '--with-tty-group' \
+  '--with-tty-group=' \
+  'NO_SUCH_VAR' \
+  'NOSUCHVAR' \
+; do
+  compare_extracted_help "$o" </dev/null
+done
+
+:
diff --git a/t/self-check-dir.tap b/t/self-check-dir.tap
new file mode 100755 (executable)
index 0000000..424367e
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Check that tests using './defs' create a proper temporary directory,
+# and run in it.  Also check that we can prevent the pre-population
+# and the creation of such directory if we want.
+
+am_create_testdir=no
+. ./defs || Exit 99
+
+plan_ 5
+
+AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
+keep_testdirs=; unset keep_testdirs
+
+# This needs to be consistent with what $AM_TEST_RUNNER_SHELL
+# deems to be the current working directory.
+cwd=`$AM_TEST_RUNNER_SHELL -c 'pwd'` \
+  || fatal_ "can't get current working directory"
+echo "$cwd"
+
+do_check ()
+{
+  test ! -d _self.dir || rm -rf _self.dir \
+    || framework_failure_ "cleaning up _self.dir"
+  command_ok_ "$1 [$2]" $AM_TEST_RUNNER_SHELL -c "
+    $2
+    . ./defs || Exit 99
+    # Don't fail if 'ls -l' fails; avoids possible racy spurious failures.
+    pwd; ls -l || : # For debugging.
+    $3
+  " t/_self.sh
+}
+
+do_check 'testdir has the expected path' \
+         'unset am_create_testdir' \
+         'case `pwd` in '"$cwd"'/t/_self.dir);; *) Exit 1;; esac'
+
+do_check 'fully pre-populated testdir' \
+         'unset am_create_testdir' \
+         'test -f install-sh || Exit 1
+          test -f configure.ac || Exit 1
+          case `pwd` in '"$cwd"'/t/_self.dir) : ;; *) Exit 1;; esac'
+
+do_check 'testdir has the expected path' \
+         'am_create_testdir=empty' \
+         'case `pwd` in '"$cwd"'/t/_self.dir) : ;; *) Exit 1;; esac'
+
+do_check 'do not pre-populate testdir' \
+         'am_create_testdir=empty' \
+         'ls -a | grep -v "^\\.\\{1,2\\}$" | grep . && Exit 1; :'
+
+do_check 'do not create nor chdir in testdir' \
+         'am_create_testdir=no' \
+         'test ! -d t/_self.dir || Exit 1
+          test ! -f t/_self.dir || Exit 1
+          test ! -r t/_self.dir || Exit 1
+          grep "self-check-dir\.tap" Makefile || Exit 1
+          case `pwd` in '"$cwd"') : ;; *) Exit 1;; esac'
+
+:
diff --git a/t/self-check-env-sanitize.tap b/t/self-check-env-sanitize.tap
new file mode 100755 (executable)
index 0000000..c6ac980
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Make sure that the testsuite initialization code complains when
+# some testsuite-influential variables are set in the environment.
+
+am_create_testdir=no
+. ./defs || Exit 1
+
+set -x
+exec 5>&1
+
+plan_ 18 # Two times the number of variable names in $vars.
+
+vars='
+  me
+  required
+  am_serial_tests
+  am_using_tap
+  am_create_testdir
+  am_tap_implementation
+  am_test_prefer_config_shell
+  am_original_AUTOMAKE
+  am_original_ACLOCAL
+'
+
+do_run ()
+{
+  env "$1=foo" $AM_TEST_RUNNER_SHELL -c '. ./defs' foo.test
+}
+
+do_grep ()
+{
+  env "$1=foo" $AM_TEST_RUNNER_SHELL -c '. ./defs' foo.test 2>&1 1>&5 \
+    | grep "foo\.test:.* variable '$1'.* in the environment.*unsafe"
+}
+
+for var in $vars; do
+  command_ok_ "$var [err status]" not do_run $var
+  command_ok_ "$var [err message]" do_grep $var
+done
+
+:
diff --git a/t/self-check-exit.tap b/t/self-check-exit.tap
new file mode 100755 (executable)
index 0000000..0ad5651
--- /dev/null
@@ -0,0 +1,103 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Check that, in case of failing commands, the correct exit status is
+# passed to the exit trap installed by the './defs' script.
+# Also check that the 'errexit' shell flag is active.
+
+am_create_testdir=no
+. ./defs || Exit 99
+
+plan_ 34
+
+# This test becomes more cumbersome if we keep the 'errexit' shell flag
+# set.  And removing it is no big deal, as this test is a TAP-based one,
+# so that false positives remain very unlikely.
+set +e
+
+AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
+
+# It's especially important that the 'unset' is done before sourcing
+# ./defs, i.e., when 'set -e' is not active yet, for the benefit of shells
+# (like Bash 2.05 and Solaris 10 /bin/ksh) that returns a non-zero status
+# when unsetting an already-unset variable.
+init='stderr_fileno_=2; unset am_explicit_skips; . ./defs'
+
+# Required so that the code in defs doesn't go crazy trying to creating a
+# temporary directory in the absolute dir of $AM_TEST_RUNNER_SHELL.
+dummy_test_script=t/$me.sh
+
+for st in 1 2 3 4 5 77 99 126 127 128 129 130 255; do
+  for exit_cmd in "Exit $st" "sh -c 'exit $st'"; do
+    $AM_TEST_RUNNER_SHELL -c "$init; $exit_cmd; :" "$dummy_test_script"
+    command_ok_ "$exit_cmd" test $? -eq $st
+  done
+done
+
+for sig in 1 2 13 15; do
+  if is_blocked_signal $sig; then
+    skip_ -r "signal $sig seems blocked"
+    continue
+  fi
+  if test $sig -eq 2; then
+    # Some Korn shells might otherwise get a spurious SIGINT when one is
+    # sent to the child $AM_TEST_RUNNER_SHELL.  For more details, see:
+    # <http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html>
+    trap : 2
+  fi
+  $AM_TEST_RUNNER_SHELL -c "$init; kill -$sig \$\$; :" "$dummy_test_script"
+  rc=$?
+  if test $sig -eq 2; then
+    # Reset default SIGINT handler as portably as possible.
+    trap 2 || trap - 2
+  fi
+  command_ok_ "kill -$sig" test $rc -eq 99
+  unset rc
+done
+
+: Non-existent program.
+# Solaris 10 /bin/sh erroneously exit with success right away when the
+# following three conditions are met at the same time:
+#   1. the 'errexit' flag is active,
+#   2. an exit trap is installed, and
+#   3. a non-existing command is issued.
+# Note that the non-existent command is issued as the last command to
+# the shell in the next line; this is deliberate.
+# FIXME: remove this workaround once we have a better configure-time
+# determination of '$AM_TEST_RUNNER_SHELL'.
+if $AM_TEST_RUNNER_SHELL -c 'set -e; trap "exit \$?" 0; non-existent-program'; then
+  maybe_todo=TODO reason="known Solaris /bin/sh bug"
+else
+  maybe_todo="" reason=""
+fi
+$AM_TEST_RUNNER_SHELL -c "$init; non-existent-prog; :" "$dummy_test_script"
+command_ok_ "command not found" -D "$maybe_todo" -r "$reason" \
+            -- test $? -gt 0
+
+: Non-executable command.
+test -f Makefile && test ! -x Makefile || \
+  framowork_failure_ "no proper Makefile in the current directory"
+$AM_TEST_RUNNER_SHELL -c "$init; ./Makefile; :" "$dummy_test_script"
+command_ok_ "permission denied" test $? -gt 0
+
+: Syntax errors in the test code.
+$AM_TEST_RUNNER_SHELL -c "$init; if :; then" "$dummy_test_script"
+command_ok_ "syntax error 1" test $? -gt 0
+$AM_TEST_RUNNER_SHELL -c "$init; true ( true )" "$dummy_test_script"
+command_ok_ "syntax error 2" test $? -gt 0
+
+:
diff --git a/t/self-check-explicit-skips.sh b/t/self-check-explicit-skips.sh
new file mode 100755 (executable)
index 0000000..7a92671
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Check creation/removal of temporary test working directory by './defs'.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+# We still need a little hack to make ./defs work outside automake's
+# tree 'tests' subdirectory.  Not a big deal.
+sed "s|^am_top_builddir=.*|am_top_builddir='`pwd`'|" \
+  "$am_top_builddir"/defs-static > defs-static
+diff "$am_top_builddir"/defs-static defs-static \
+  && fatal_ "failed to edit defs-static"
+cp "$am_top_builddir"/defs .
+
+set +e
+
+unset am_explicit_skips stderr_fileno_
+AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
+
+# I'm a lazy typist.
+sh=$AM_TEST_RUNNER_SHELL
+
+$sh -c '. ./defs; (exit 77); exit 77' dummy.test
+test $? -eq 77 || Exit 1
+
+am_explicit_skips=no $sh -c '. ./defs; sh -c "exit 77"' dummy.test
+test $? -eq 77 || Exit 1
+
+am_explicit_skips=yes $sh -c '. ./defs; (exit 77); exit 77' dummy.test
+test $? -eq 78 || Exit 1
+
+am_explicit_skips=y $sh -c '. ./defs; sh -c "exit 77"' dummy.test
+test $? -eq 78 || Exit 1
+
+am_explicit_skips=yes $sh -c '. ./defs; Exit 77' dummy.test
+test $? -eq 77 || Exit 1
+
+am_explicit_skips=y $sh -c '. ./defs; skip_ "foo"' dummy.test
+test $? -eq 77 || Exit 1
+
+:
diff --git a/t/self-check-is-blocked-signal.tap b/t/self-check-is-blocked-signal.tap
new file mode 100755 (executable)
index 0000000..5c0dded
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite: the 'signal_is_blocked'
+# shell function.
+
+am_create_testdir=no
+. ./defs || Exit 99
+
+plan_ 2
+
+command_ok_ "unblockable signal 9" not is_blocked_signal 9
+trap "" 13
+command_ok_ "blocked signal 13" is_blocked_signal 13
+
+:
diff --git a/t/self-check-is_newest.tap b/t/self-check-is_newest.tap
new file mode 100755 (executable)
index 0000000..842c411
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite: the 'is_newest' subroutine.
+
+. ./defs || Exit 1
+
+plan_ 21
+
+# I'm a lazy typist.
+Y () { command_ok_ "is_newest $*" is_newest "$@"; }
+N () { command_ok_ "not is_newest $*" not is_newest "$@"; }
+
+# A simple "touch -r" might not work, since on some file systems, and/or
+# with some 'touch' versions, it might truncate the timestamp (or even
+# rounded it upwards maybe).  So the first (apparently redundant) 'touch'
+# invocation below ensures that the timestamp gets "normalized" in a way
+# that allows it to be correctly copied by the second 'touch' invocation.
+copy_timestamp ()
+{
+  touch -r "$1" "$1" && touch -r "$1" "$2"
+}
+
+: > a
+$sleep
+: > b
+: > c
+
+stat a b c || : # For debugging.
+
+Y c a
+Y b a
+N a b
+Y c b
+Y c c
+Y c a b c
+
+copy_timestamp c d
+
+stat c d || : # For debugging.
+
+Y c d
+
+# Should work on directories too, both empty and not-empty.  An older
+# implementation of 'is_newest' failed if the first argument was a
+# directory containing files newer than itself (see automake bug#9147).
+mkdir u x
+touch x/foo
+$sleep
+touch x/foo
+$sleep
+mkdir v y
+touch y/foo
+$sleep
+touch y/foo
+
+stat u v x y x/foo y/foo || : # For debugging.
+
+for older in u x; do
+  for newer in v y; do
+    Y $newer $older
+    N $older $newer
+  done
+done
+
+Y x/foo x
+N x x/foo
+
+copy_timestamp x u
+Y x u
+Y u x
+
+# A couple of mild "stress" tests.
+Y y x u v
+Y y u x/foo a b c
+
+:
diff --git a/t/self-check-me.tap b/t/self-check-me.tap
new file mode 100755 (executable)
index 0000000..cddc9b5
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Make sure that $me gets automatically defined by './defs', and that it
+# can be overridden by the test script.
+
+am_create_testdir=no
+. ./defs || Exit 1
+
+plan_ 14
+
+AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
+
+# This test becomes cumbersome if we keep the 'errexit' shell flag set.
+# And removing it is no big deal, as this test is a TAP-based one, so
+# that false positives remain very unlikely.
+set +e
+
+do_check ()
+{
+  $AM_TEST_RUNNER_SHELL -c '. ./defs && echo me=$me' "$1" | grep "^me=$2$"
+  command_ok_ "me=$1" test $? -eq 0
+}
+
+for e in sh tap; do
+  do_check foo-bar-.$e 'foo-bar-'
+  do_check _foo__bar.$e '_foo__bar'
+  do_check 012.$e '012'
+  do_check a.b.c.$e 'a\.b\.c'
+done
+
+do_check foo.bar 'foo\.bar'
+do_check abc. 'abc\.'
+
+# If we override $me, ./defs should not modify it.
+
+s=`$AM_TEST_RUNNER_SHELL -c 'me=foo.sh && . ./defs && echo me=$me' bad.sh`
+command_ok_ "override of \$me before ./defs causes no error" \
+            test $? -eq 0
+
+r='ok'
+printf '%s\n' "$s" | grep '^me=foo\.sh$' || r='not ok'
+printf '%s\n' "$s" | grep 'me=bad'       && r='not ok'
+result_ "$r" "override of \$me before ./defs is honored"
+unset r
+
+# Overriding $me after sourcing ./defs-static should work.
+s=`$AM_TEST_RUNNER_SHELL -c '. ./defs-static && me=zardoz &&
+                             . ./defs && echo me=$me' bad.sh`
+command_ok_ "override of \$me after ./defs-static causes no error" \
+            test $? -eq 0
+
+r='ok'
+printf '%s\n' "$s" | grep '^me=zardoz$' || r='not ok'
+printf '%s\n' "$s" | grep 'me=bad'      && r='not ok'
+result_ "$r" "override of \$me after ./defs-static is honored"
+unset r
+
+:
diff --git a/t/self-check-reexec.tap b/t/self-check-reexec.tap
new file mode 100755 (executable)
index 0000000..e19a681
--- /dev/null
@@ -0,0 +1,216 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Check that automatic re-execution of test script with the
+# configure-time $AM_TEST_RUNNER_SHELL.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+plan_ 32
+
+unset AM_TESTS_REEXEC BASH_VERSION || :
+
+cwd=`pwd` || fatal_ "cannot get current working directory"
+cp "$am_top_builddir"/defs . || fatal_ "fetching 'defs' from top_builddir"
+
+#
+# Search for required bash and non-bash shells.
+#
+
+for bash_shell in \
+  "$SHELL" "$AM_TEST_RUNNER_SHELL" bash bash3 bash4 :
+do
+  test "$bash_shell" = : && break
+  $bash_shell --version || continue
+  $bash_shell -c 'test -n "$BASH_VERSION"' || continue
+  break
+done
+
+# This might not be optimal, but it's much better than writing wrapper
+# scripts acting as "fake" shells.
+for non_bash_shell in \
+  /bin/sh /bin/ksh sh ksh ash dash pdksh "$SHELL" "$AM_TEST_RUNNER_SHELL" :
+do
+  test "$non_bash_shell" = : && break
+  $non_bash_shell -c 'exit 0' || continue
+  # Be sure to reject also any shell that is Zsh "in disguise" (as can
+  # be found on some Debian systems, where /bin/ksh can be symlinked to
+  # /bin/zsh4).  This is required because our testsuite does not support
+  # older versions of Zsh, and that has caused spurious failures in the
+  # past.
+  $non_bash_shell -c 'test -n "$ZSH_VERSION$BASH_VERSION"' && continue
+  break
+done
+
+echo "bash_shell='$bash_shell'"
+echo "non_bash_shell='$non_bash_shell'"
+
+# This would denote an internal error.
+if test "$bash_shell" = : && test "$non_bash_shell" = :; then
+  fatal_ "we couldn't find a bash shell nor a non-bash one"
+fi
+
+#
+# Functions used throughout the test.
+#
+
+get_ddata ()
+{
+  case $1 in
+    ""|*/) dsep=;;
+        *) dsep=/;;
+  esac
+  case $1 in
+    "") dname="no dir";;
+    /*) dname="absolute dir";;
+     *) dname="dir '$1'";;
+  esac
+}
+
+get_sh ()
+{
+  case $1 in
+    bash) sh=$bash_shell;;
+    non-bash) sh=$non_bash_shell;;
+    *) fatal_ "get_sh: invalid shell type '$1'";;
+  esac
+}
+
+#
+# Check how to default, force or prevent a re-execution.
+#
+
+cat > need-bash.sh <<'END'
+#!/bin/false
+. ./defs
+# Ensure that the script gets re-executed with bash.  Also ensure that
+# non-standard syntax used after the inclusion of './defs' doesn't cause
+# non-bash shells to fail.
+# Subshell required to prevent some shells (e.g., Solaris 10 /bin/sh)
+# from only complaining on stderr but then exiting with exit status 0.
+(foo=abac && test xbxc = ${foo//a/x} && test -n "$BASH_VERSION")
+END
+
+sh_var=AM_TEST_RUNNER_SHELL
+sed -e "s|^am_top_builddir=.*|am_top_builddir='$cwd'|" \
+    -e "s|^$sh_var=.*$|$sh_var=bash; export $sh_var|" \
+    < "$am_top_builddir"/defs-static >defs-static
+
+do_reexec ()
+{
+  command_ok_ "re-exec if AM_TESTS_REEXEC=$1" \
+              env AM_TESTS_REEXEC="$1" $non_bash_shell need-bash.sh
+}
+
+dont_reexec ()
+{
+  command_ok_ "don't re-exec if AM_TESTS_REEXEC=$1" \
+              not env AM_TESTS_REEXEC="$1" $non_bash_shell need-bash.sh
+}
+
+if test "$bash_shell" = :; then
+  skip_row_ 10 -r "no bash shell found" AM_TESTS_REEXEC
+elif test "$non_bash_shell" = :; then
+  skip_row_ 10 -r "no non-bash shell found" AM_TESTS_REEXEC
+else
+  command_ok_ "re-exec if AM_TESTS_REEXEC unset" \
+              $non_bash_shell need-bash.sh
+  do_reexec ''
+  do_reexec yes
+  do_reexec y
+  do_reexec true
+  do_reexec 1
+  dont_reexec no
+  dont_reexec n
+  dont_reexec false
+  dont_reexec 0
+fi
+
+#
+# Check message about the re-execution.  Also check that arguments passed
+# to a test script are preserved by a re-exec, even in "corner" cases.
+#
+
+cat > dummy.sh <<'END'
+#!/bin/sh
+. ./defs
+:
+END
+
+cat > checkargs.sh <<'END'
+. ./defs
+test $# -eq 3 && test x"$1" = x'a' && test x"$2" = x && test x"$3" = x"-e"
+END
+
+chmod a+x dummy.sh checkargs.sh
+
+mkdir sub
+cp dummy.sh checkargs.sh defs sub
+sed -e "s|^am_top_builddir=.*|am_top_builddir='$cwd'|" \
+    <  "$am_top_builddir"/defs-static > defs-static
+sed -e "s|^am_top_builddir=.*|am_top_builddir='$cwd/sub'|" \
+    <  "$am_top_builddir"/defs-static > sub/defs-static
+
+check_preserve_args ()
+{
+  dir=$1; shift
+  get_ddata "$dir"
+  $sh "${dir}${dsep}checkargs.sh" a '' -e && r='ok' || r='not ok'
+  result_ "$r" "$sh re-exec preserving args [$dname]"
+}
+
+check_reexec_message ()
+{
+  dir=$1; shift
+  get_ddata "$dir"
+  $sh "${dir}${dsep}dummy.sh" "$@" \
+    | grep "^dummy: exec $AM_TEST_RUNNER_SHELL ${dir}${dsep}dummy\\.sh $*\$" \
+    && r='ok' || r='not ok'
+  result_ "$r" "$sh display re-exec message [$dname] [args: $*]"
+}
+
+./dummy.sh a b \
+  | grep "^dummy: exec $AM_TEST_RUNNER_SHELL \\./dummy\\.sh a b$" \
+  && r='ok' || r='not ok'
+result_ "$r" "direct run display re-exec message [args: a b]"
+
+./checkargs.sh a '' -e && r='ok' || r='not ok'
+result_ "$r" "direct re-exec preserving args"
+
+for sh_type in non-bash bash; do
+  get_sh $sh_type
+  if test "$sh" = :; then
+    skip_row_ 5 -r "no $sh_type shell available" "re-exec message"
+    skip_row_ 5 -r "no $sh_type shell available" "re-exec preserving args"
+    continue
+  fi
+  check_preserve_args ''
+  check_reexec_message '' a b c
+  check_preserve_args .
+  check_reexec_message .  a b c
+  cd sub
+  check_preserve_args ..
+  check_reexec_message .. a b c
+  cd ..
+  check_preserve_args "$cwd"
+  check_reexec_message "$cwd" a -b c-
+  check_preserve_args sub
+  check_reexec_message sub 1 2 3 4
+done
+
+:
diff --git a/t/self-check-report.sh b/t/self-check-report.sh
new file mode 100755 (executable)
index 0000000..e5998b5
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Test subroutines to report warnings, and to signal failures, skips
+# and hard errors.
+
+unset stderr_fileno_ || :
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+set +e
+
+exec 5>&1
+
+(warn_ foobar) 2>&1 1>&5 | grep '^foobar$'             || Exit 1
+(fail_ foo); test $? -eq 1                             || Exit 1
+(fail_ foo) 2>&1 1>&5 | grep "^$me: failed test: foo"  || Exit 1
+(skip_ foo); test $? -eq 77                            || Exit 1
+(skip_ foo) 2>&1 1>&5 | grep "^$me: skipped test: foo" || Exit 1
+(fatal_ foo); test $? -eq 99                           || Exit 1
+(fatal_ foo) 2>&1 1>&5 | grep "^$me: hard error: foo"  || Exit 1
+(framework_failure_ foo); test $? -eq 99               || Exit 1
+(framework_failure_ foo) 2>&1 1>&5 \
+  | grep "^$me: set-up failure: foo"                   || Exit 1
+
+stderr_fileno_=6
+
+(warn_ foobar) 6>&1 1>&5 | grep '^foobar$'             || Exit 1
+(fail_ foo); test $? -eq 1                             || Exit 1
+(fail_ foo) 6>&1 1>&5 | grep "^$me: failed test: foo"  || Exit 1
+(skip_ foo); test $? -eq 77                            || Exit 1
+(skip_ foo) 6>&1 1>&5 | grep "^$me: skipped test: foo" || Exit 1
+(fatal_ foo); test $? -eq 99                           || Exit 1
+(fatal_ foo) 6>&1 1>&5 | grep "^$me: hard error: foo"  || Exit 1
+(framework_failure_ foo); test $? -eq 99               || Exit 1
+(framework_failure_ foo) 6>&1 1>&5 \
+  | grep "^$me: set-up failure: foo"                   || Exit 1
+
+:
diff --git a/t/self-check-sanity.sh b/t/self-check-sanity.sh
new file mode 100755 (executable)
index 0000000..8e31afa
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Test the sanity checks performed by the 'defs' script.  Also check
+# that we can use 'defs' elsewhere, when we duplicate some of the
+# infrastructure from the automake/tests subdirectory.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+# Avoid to confuse traces from child processed with our own traces.
+show_stderr ()
+{
+  sed 's/^/ | /' stderr >&2
+}
+
+AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
+
+source_defs=". '$am_top_builddir/defs'"
+
+if $AM_TEST_RUNNER_SHELL -c "$source_defs" dummy.sh 2>stderr; then
+  show_stderr
+  Exit 1
+else
+  show_stderr
+  grep 'defs-static: not found in current directory' stderr
+fi
+
+sed 's|^am_top_srcdir=.*|am_top_srcdir=foo|' \
+  "$am_top_builddir"/defs-static > defs-static
+if $AM_TEST_RUNNER_SHELL -c "$source_defs" t/dummy.sh 2>stderr; then
+  show_stderr
+  Exit 1
+else
+  show_stderr
+  grep 'foo/defs-static\.in not found.*check \$am_top_srcdir' stderr
+fi
+
+sed 's|^am_top_builddir=.*|am_top_builddir=foo|' \
+  "$am_top_builddir"/defs-static > defs-static
+if $AM_TEST_RUNNER_SHELL -c "$source_defs" t/dummy.sh 2>stderr; then
+  show_stderr
+  Exit 1
+else
+  show_stderr
+  grep 'foo/defs-static not found.*check \$am_top_builddir' stderr
+fi
+
+# We still need a little hack to make ./defs work outside automake's
+# tree 'tests' subdirectory.  Not a big deal.
+sed "s|^am_top_builddir=.*|am_top_builddir='`pwd`'|" \
+  "$am_top_builddir"/defs-static > defs-static
+# Redefining *srcdir and *builddir variables in the environment shouldn't
+# cause problems
+env \
+  builddir=bad-dir srcdir=bad-dir \
+  top_builddir=bad-dir top_srcdir=bad-dir \
+  abs_builddir=bad-dir abs_srcdir=bad-dir \
+  abs_top_builddir=bad-dir abs_top_srcdir=bad-dir \
+  $AM_TEST_RUNNER_SHELL -c "$source_defs && echo '!OK!' > ../foo" t/dummy.sh
+$FGREP '!OK!' t/foo
+
+:
diff --git a/t/self-check-seq.tap b/t/self-check-seq.tap
new file mode 100755 (executable)
index 0000000..a92230e
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Check the 'seq_' subroutine.
+
+. ./defs || Exit 1
+
+plan_ 14
+
+unset stderr_fileno_ || :
+
+check_work ()
+{
+  desc=$1 args=$2 exp=$3
+  st=0; got=`seq_ $args` || st=$?
+  command_ok_ "$desc [exit status = 0]" test $st -eq 0
+  command_ok_ "$desc [output]" test x"$exp" = x"$got"
+}
+
+check_work 'one-argument form' '5' "\
+1
+2
+3
+4
+5"
+
+check_work 'two-arguments form' '7 11' "\
+7
+8
+9
+10
+11"
+
+check_work 'three-arguments form (1)' '120 5 135' "\
+120
+125
+130
+135"
+
+check_work 'three-arguments form (1)' '13 4 23' "\
+13
+17
+21"
+
+check_err ()
+{
+  desc=$1 args=$2 err=$3
+  (seq_ $args) >output || st=$?
+  # Protect content emitted on stdout/stderr, to avoid sending to the
+  # TAP driver possible "Bail out!" directives generated by 'seq_'.
+  # Use 'grep -c' below for the same reason.
+  sed 's/^/: /' output
+  command_ok_ "$desc [exit status = 99]" test $st -eq 99
+  command_ok_ "$desc [error message]" grep -c "seq_: $err" output
+}
+
+check_err 'no argument is an error' '' 'missing argument'
+check_err 'four arguments is an error' '1 1 2 1' 'too many arguments'
+check_err 'six arguments is an error' '1 1 1 1 1 1' 'too many arguments'
+
+:
diff --git a/t/self-check-tap.sh b/t/self-check-tap.sh
new file mode 100755 (executable)
index 0000000..d7f788c
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Make sure that $am_using_tap gets automatically defined by
+# './defs-static', but can be overridden by the individual tests.
+
+. ./defs-static || exit 1
+
+set -ex
+
+$AM_TEST_RUNNER_SHELL -c \
+  '. ./defs-static && test $am_using_tap = yes' foo.tap
+
+for name in foo.test tap tap.test foo-tap; do
+  $AM_TEST_RUNNER_SHELL -c \
+    '. ./defs-static && test $am_using_tap = no' $name
+done
+
+$AM_TEST_RUNNER_SHELL -c '
+  am_using_tap=no
+  . ./defs-static
+  test $am_using_tap = no
+' foo.tap
+
+$AM_TEST_RUNNER_SHELL -c '
+  am_using_tap=yes
+  . ./defs-static
+  test $am_using_tap = yes
+' foo.test
+
+:
diff --git a/t/self-check-unindent.tap b/t/self-check-unindent.tap
new file mode 100755 (executable)
index 0000000..3591656
--- /dev/null
@@ -0,0 +1,255 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Sanity check for the automake testsuite.
+# Check the 'unindent' subroutine.
+
+. ./defs || Exit 1
+
+plan_ 22
+
+#------------------------------------------------------------------
+
+will_test () { tst=$*; }
+
+do_check ()
+{
+  command_ok_ "$tst [simple, exit status]" \
+              eval 'unindent input > got'
+  command_ok_ "$tst [simple, output]" \
+              diff exp got
+  command_ok_ "$tst [parallel, exit status]" \
+              eval 'unindent input | unindent > got'
+  command_ok_ "$tst [parallel, output]" \
+              diff exp got
+}
+
+#------------------------------------------------------------------
+
+will_test 'leading spaces'
+
+cat > input <<END
+  1
+   2
+3
+ 4
+${tab}5
+${tab}  6
+  6${sp}
+7${sp}
+  8${sp}${sp}
+9${sp}${sp}
+  10${tab}
+11${tab}
+  12${sp}${tab}
+13${sp}${tab}
+  14 this${tab}with${tab}multiple fields${sp}
+15 and   ${tab}${tab}this too${tab}
+ 16 and also this
+${sp}${sp}
+${sp}
+${tab}
+
+last line
+END
+
+cat > exp <<END
+1
+ 2
+3
+ 4
+${tab}5
+${tab}  6
+6${sp}
+7${sp}
+8${sp}${sp}
+9${sp}${sp}
+10${tab}
+11${tab}
+12${sp}${tab}
+13${sp}${tab}
+14 this${tab}with${tab}multiple fields${sp}
+15 and   ${tab}${tab}this too${tab}
+ 16 and also this
+
+${sp}
+${tab}
+
+last line
+END
+
+do_check
+
+#------------------------------------------------------------------
+
+will_test 'leading tab'
+
+cat > input <<END
+${tab}1
+${tab} 2
+3
+ 4
+  5
+    6
+        7
+ ${tab}8
+${tab}${tab}9
+${tab}10${tab}
+${tab}11${sp}
+12${tab}
+13${sp}
+${tab}14 this  with${tab}multiple fields${sp}
+15 and   ${tab}${tab}this too${tab}
+ 16 and also this
+${tab}
+${sp}
+${sp}${tab}
+
+last line
+END
+
+cat > exp <<END
+1
+ 2
+3
+ 4
+  5
+    6
+        7
+ ${tab}8
+${tab}9
+10${tab}
+11${sp}
+12${tab}
+13${sp}
+14 this  with${tab}multiple fields${sp}
+15 and   ${tab}${tab}this too${tab}
+ 16 and also this
+
+${sp}
+${sp}${tab}
+
+last line
+END
+
+do_check "leading tab"
+
+#------------------------------------------------------------------
+
+will_test 'no leading whitespace'
+
+cat > input <<END
+1
+ 2
+  3
+        4
+${tab}5
+${tab} 6
+ ${tab}7
+${tab}${tab}8
+9${sp}
+ 10${tab}
+${tab}10${sp}${sp}
+14 this with${tab}multiple  fields${sp}
+ 15 and this too${tab}
+${tab}16 and also this
+${tab}
+${sp}
+
+last line
+END
+
+cp input exp
+
+do_check
+
+#------------------------------------------------------------------
+
+will_test 'leading empty lines ignored (1)'
+
+cat > input <<END
+
+
+ foo
+ bar
+   quux
+END
+
+cat > exp <<END
+
+
+foo
+bar
+  quux
+END
+
+do_check
+
+#------------------------------------------------------------------
+
+will_test 'leading empty lines ignored (2)'
+
+cat > input <<END
+
+
+foo
+bar
+   quux
+END
+
+cat > exp <<END
+
+
+foo
+bar
+   quux
+END
+
+do_check
+
+#------------------------------------------------------------------
+
+will_test 'more elaborated parallel use'
+
+cat > input <<END
+  x
+  ${tab}y
+  z
+  ${tab}a
+  ${tab} b
+${tab}c
+   ${tab}d
+ ${tab}e
+  ${tab}${tab}f
+END
+
+cat > exp <<END
+y
+z
+a
+ b
+c
+ ${tab}d
+ ${tab}e
+${tab}f
+END
+
+command_ok_ "$tst [exit status]" \
+            eval 'unindent input | sed 1d | unindent > got'
+
+command_ok_ "$tst [output]" diff exp got
+
+:
diff --git a/t/serial-tests.sh b/t/serial-tests.sh
new file mode 100755 (executable)
index 0000000..4ec4710
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Option 'serial-tests'.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+hasnt_parallel_tests ()
+{
+  $EGREP 'TEST_SUITE_LOG|TEST_LOGS|\.log.*:' $1 && Exit 1
+  grep 'recheck.*:' $1 && Exit 1
+  grep '^check-TESTS: \$(TESTS)$' $1
+}
+
+has_parallel_tests ()
+{
+  $EGREP '(^| )check-TESTS.*:' $1
+  $EGREP '(^| )recheck.*:' $1
+  grep '^\$(TEST_SUITE_LOG): \$(TEST_LOGS)$' $1
+  grep '^\.test\.log:$' $1
+}
+
+mkdir one two
+
+cat > one/configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([serial-tests])
+AC_CONFIG_FILES([Makefile])
+END
+
+echo 'TESTS = foo.test bar.test' > one/Makefile.am
+
+cat > two/configure.ac <<END
+AC_INIT([$me], [2.0])
+AC_CONFIG_AUX_DIR([config])
+AM_INIT_AUTOMAKE([parallel-tests])
+AC_CONFIG_FILES([aMakefile bMakefile])
+END
+
+cp one/Makefile.am two/aMakefile.am
+cat - one/Makefile.am > two/bMakefile.am <<END
+AUTOMAKE_OPTIONS = serial-tests
+END
+
+cd one
+touch missing install-sh
+$ACLOCAL
+$AUTOMAKE
+grep TEST Makefile.in # For debugging.
+hasnt_parallel_tests Makefile.in
+test ! -r test-driver
+cd ..
+
+cd two
+mkdir config
+$ACLOCAL
+$AUTOMAKE --add-missing
+grep TEST [ab]Makefile.in # For debugging.
+has_parallel_tests aMakefile.in
+hasnt_parallel_tests bMakefile.in
+mv aMakefile.in aMakefile.sav
+mv bMakefile.in bMakefile.sav
+test ! -r test-driver
+test -f config/test-driver
+$AUTOMAKE
+diff aMakefile.sav aMakefile.in
+diff bMakefile.sav bMakefile.in
+cd ..
+
+:
diff --git a/t/silent-amopts.sh b/t/silent-amopts.sh
new file mode 100755 (executable)
index 0000000..f71ad13
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake complaints if the 'silent-rules' option is
+# used in AUTOMAKE_OPTIONS.
+
+. ./defs || Exit 1
+
+echo AUTOMAKE_OPTIONS = silent-rules > Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+grep "^Makefile\.am:1:.*'silent-rules'.*AM_INIT_AUTOMAKE" stderr
+
+:
diff --git a/t/silent-configsite.sh b/t/silent-configsite.sh
new file mode 100755 (executable)
index 0000000..813753b
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the user can control default mode of silent-rules
+# from config.site, and that this default can be overridden from
+# either the ./configure or make command line.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+.PHONY: test-silent test-nosilent
+test-silent:
+       test x'$(AM_DEFAULT_VERBOSITY)' = x'0'
+test-nosilent:
+       test x'$(AM_DEFAULT_VERBOSITY)' = x'1'
+EOF
+
+unset enable_silent_rules || :
+
+: 'No explicit default in configure.ac, enable by default in config.site'
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+echo "enable_silent_rules=\${enable_silent_rules-yes}" > config.site
+CONFIG_SITE=./config.site ./configure
+$MAKE test-silent
+$MAKE distclean
+# Command line should win over default values in config.site.
+CONFIG_SITE=./config.site ./configure --disable-silent-rules
+$MAKE test-nosilent
+$MAKE distclean
+
+: 'Disable by default in configure.ac, enable by default in config.site'
+
+sed 's/^AM_SILENT_RULES/&([no])/' configure.ac > configure.tmp
+mv -f configure.tmp configure.ac
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+echo "enable_silent_rules=\${enable_silent_rules-yes}" > config.site
+CONFIG_SITE=./config.site ./configure
+$MAKE test-silent
+# Command line should win over default values in config.site.
+$MAKE distclean
+CONFIG_SITE=./config.site ./configure --disable-silent-rules
+$MAKE test-nosilent
+$MAKE distclean
+
+: 'Enable by default in configure.ac, disable by default in config.site'
+
+sed 's/^AM_SILENT_RULES/&([yes])/' configure.ac > configure.tmp
+mv -f configure.tmp configure.ac
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+echo "enable_silent_rules=\${enable_silent_rules-no}" > config.site
+CONFIG_SITE=./config.site ./configure
+$MAKE test-nosilent
+$MAKE distclean
+# Command line should win over default values in config.site.
+CONFIG_SITE=./config.site ./configure --enable-silent-rules
+$MAKE test-silent
+$MAKE distclean
+
+:
diff --git a/t/silent-lex.sh b/t/silent-lex.sh
new file mode 100755 (executable)
index 0000000..ccc9a8f
--- /dev/null
@@ -0,0 +1,139 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode for Lex.
+
+required='cc lex'
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AM_PROG_CC_C_O
+AC_PROG_LEX
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo1 foo2
+foo1_SOURCES = foo.l
+foo2_SOURCES = $(foo1_SOURCES)
+foo2_LFLAGS = -n
+foo2_CFLAGS = $(AM_CFLAGS)
+SUBDIRS = sub
+LDADD = $(LEXLIB)
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = bar1 bar2
+bar1_SOURCES = bar.l
+bar2_SOURCES = $(bar1_SOURCES)
+bar2_LFLAGS = -n
+bar2_CFLAGS = $(AM_CFLAGS)
+LDADD = $(LEXLIB)
+EOF
+
+cat > foo.l <<'EOF'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END"   return EOF;
+.
+%%
+/* Avoid possible link errors. */
+int yywrap (void) { return 1; }
+int   main (void) { return 0; }
+EOF
+cp foo.l sub/bar.l
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+# Ensure per-target rules are used, to ensure their coverage below.
+$FGREP 'foo2-foo.c' Makefile.in || Exit 99
+$FGREP 'bar2-bar.c' sub/Makefile.in || Exit 99
+
+./configure --enable-silent-rules
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP ' (-c|-o)' stdout && Exit 1
+$EGREP '(mv|ylwrap) ' stdout && Exit 1
+
+grep 'LEX .*foo\.' stdout
+grep 'LEX .*bar\.' stdout
+grep ' CC .*foo\.' stdout
+grep ' CC .*bar\.' stdout
+grep 'CCLD .*foo1' stdout
+grep 'CCLD .*bar1' stdout
+grep 'CCLD .*foo2' stdout
+grep 'CCLD .*bar2' stdout
+
+# Cleaning and then rebuilding with the same V flag (and without
+# removing the generated sources in between) shouldn't trigger a
+# different set of rules.
+$MAKE clean
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP ' (-c|-o)' stdout && Exit 1
+$EGREP '(mv|ylwrap) ' stdout && Exit 1
+
+# Don't look for LEX, as probably lex hasn't been re-run.
+grep ' CC .*foo\.' stdout
+grep ' CC .*bar\.' stdout
+grep 'CCLD .*foo1' stdout
+grep 'CCLD .*bar1' stdout
+grep 'CCLD .*foo2' stdout
+grep 'CCLD .*bar2' stdout
+
+# Ensure a truly clean rebuild.
+$MAKE clean
+rm -f *foo.c sub/*bar.c
+
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep ' -c ' stdout
+grep ' -o ' stdout
+grep 'ylwrap ' stdout
+
+$EGREP '(LEX|CC|CCLD) ' stdout && Exit 1
+
+# Cleaning and then rebuilding with the same V flag (and without
+# removing the generated sources in between) shouldn't trigger a
+# different set of rules.
+$MAKE clean
+
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+# Don't look for ylwrap, as probably lex hasn't been re-run.
+grep ' -c ' stdout
+grep ' -o ' stdout
+
+$EGREP '(LEX|CC|CCLD) ' stdout && Exit 1
+
+:
diff --git a/t/silent-many-gcc.sh b/t/silent-many-gcc.sh
new file mode 100755 (executable)
index 0000000..8b457ca
--- /dev/null
@@ -0,0 +1,241 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, with gcc depmode and many languages at once.
+# This test partly overlaps with other silent*.test, but it serves as
+# a stress test by using many different languages at once -- so don't
+# remove this test script.
+# This test requires the GNU compilers; keep it in sync with sister test
+# 'silent-many-generic.test', which should work with generic compilers.
+
+required='gcc g++ gfortran lex yacc'
+. ./defs || Exit 1
+
+# Avoids too much code duplication.
+do_and_check_silent_build ()
+{
+  case $1 in
+    --rebuild) rebuild=true;;
+            *) rebuild=false;;
+  esac
+
+  $MAKE >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  # Avoid spurious failures with SunStudio Fortran compilers.
+  sed '/^NOTICE:/d' stdout > t
+  mv -f t stdout
+  cat stdout
+
+  $EGREP ' (-c|-o)' stdout && Exit 1
+  $EGREP '(mv|ylwrap) ' 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 ' CC .*foo5\.' stdout
+  grep ' CC .*baz5\.' 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
+
+  if $rebuild; then :; else
+    grep 'YACC .*foo6\.' stdout
+    grep 'YACC .*baz6\.' stdout
+    grep 'LEX .*foo5\.'  stdout
+    grep 'LEX .*baz5\.'  stdout
+  fi
+
+  unset rebuild
+}
+
+# Avoids too much code duplication.
+do_and_check_verbose_build ()
+{
+  case $1 in
+    --rebuild) rebuild=true;;
+            *) rebuild=false;;
+  esac
+
+  $MAKE V=1 >stdout || { cat stdout; Exit 1; }
+  cat stdout
+
+  grep ' -c ' stdout
+  grep ' -o ' stdout
+
+  $EGREP '(CC|CXX|FC|F77|LD) ' stdout && Exit 1
+
+  if $rebuild; then :; else
+    grep 'ylwrap ' stdout
+    $EGREP '(LEX|YACC) ' stdout && Exit 1
+  fi
+
+  unset rebuild
+}
+
+mkdir sub
+
+cat >>configure.ac <<'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 fo2
+bar_CFLAGS = $(AM_CFLAGS)
+foo_SOURCES = foo1.cpp foo2.f90 foo3.f foo5.l foo6.y
+fo2_SOURCES = $(foo_SOURCES)
+fo2_CPPFLAGS = $(AM_CPPFLAGS)
+fo2_FFLAGS = $(AM_FFLAGS)
+fo2_FCFLAGS = $(AM_FCFLAGS)
+fo2_YFLAGS = -v
+fo2_LFLAGS = -n
+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 ba2
+bla_CFLAGS = $(AM_CFLAGS)
+baz_SOURCES = baz1.cpp baz2.f90 baz3.f baz5.l baz6.y
+ba2_SOURCES = $(baz_SOURCES)
+ba2_CPPFLAGS = $(AM_CPPFLAGS)
+ba2_FFLAGS = $(AM_FFLAGS)
+ba2_FCFLAGS = $(AM_FCFLAGS)
+ba2_YFLAGS = -v
+ba2_LFLAGS = -n
+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'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END"   return EOF;
+.
+%%
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+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
+
+# Sanity check: make sure the cache variables we force are really
+# used by configure.
+$FGREP am_cv_CC_dependencies_compiler_type configure
+$FGREP am_cv_CXX_dependencies_compiler_type configure
+# Ensure per-target rules are used, to ensure their coverage below.
+# (We do not do an exhaustive check, that wouldn't be practical).
+$FGREP 'bar-bar.o' Makefile.in
+$FGREP 'fo2-foo5.c' Makefile.in
+$FGREP 'fo2-foo6.c' Makefile.in
+
+# Force gcc ("fast") depmode.
+depmodes="am_cv_CC_dependencies_compiler_type=gcc \
+          am_cv_CXX_dependencies_compiler_type=gcc"
+# This apparently useless "for" loop is here to simplify the syncing
+# with sister test 'silent-many-generic.test'.
+for config_args in \
+  "$depmodes"
+do
+
+  ./configure $config_args --enable-silent-rules
+
+  do_and_check_silent_build
+  # Cleaning and then rebuilding with the same V flag (and without
+  # removing the generated sources in between) shouldn't trigger a
+  # different set of rules.
+  $MAKE clean
+  do_and_check_silent_build --rebuild
+
+  # Ensure a clean rebuild.
+  $MAKE clean
+  # This is required, since these files are not removed by 'make clean'
+  # (as dictated by the GNU Coding Standards).
+  rm -f *foo5.c *foo6.[ch] sub/*baz5.c sub/*baz6.[ch]
+
+  do_and_check_verbose_build
+  # Cleaning and then rebuilding with the same V flag (and without
+  # removing the generated sources in between) shouldn't trigger a
+  # different set of rules.
+  $MAKE clean
+  do_and_check_verbose_build --rebuild
+
+  # Ensure a clean reconfiguration/rebuild.
+  $MAKE clean
+  $MAKE maintainer-clean
+
+done
+
+:
diff --git a/t/silent-many-generic.sh b/t/silent-many-generic.sh
new file mode 100755 (executable)
index 0000000..3949009
--- /dev/null
@@ -0,0 +1,266 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, with many languages at once.
+# This test partly overlaps with other silent*.test, but it serves as
+# a stress test by using many different languages at once -- so don't
+# remove this test script.
+# This test should work with generic compilers; keep it in sync with
+# sister test 'silent-many-gcc.test', which requires the GNU compilers
+# and forces the use of gcc depmode.
+
+required='cc c++ fortran fortran77 lex yacc'
+. ./defs || Exit 1
+
+# Avoids too much code duplication.
+do_and_check_silent_build ()
+{
+  case $1 in
+    --rebuild) rebuild=true;;
+            *) rebuild=false;;
+  esac
+
+  $MAKE >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  # Avoid spurious failures with SunStudio Fortran compilers.
+  sed '/^NOTICE:/d' stdout > t
+  mv -f t stdout
+  cat stdout
+
+  $EGREP ' (-c|-o)' stdout && Exit 1
+  $EGREP '(mv|ylwrap) ' 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 ' CC .*foo5\.' stdout
+  grep ' CC .*baz5\.' 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
+
+  if $rebuild; then :; else
+    grep 'YACC .*foo6\.' stdout
+    grep 'YACC .*baz6\.' stdout
+    grep 'LEX .*foo5\.'  stdout
+    grep 'LEX .*baz5\.'  stdout
+  fi
+
+  unset rebuild
+}
+
+# Avoids too much code duplication.
+do_and_check_verbose_build ()
+{
+  case $1 in
+    --rebuild) rebuild=true;;
+            *) rebuild=false;;
+  esac
+
+  $MAKE V=1 >stdout || { cat stdout; Exit 1; }
+  cat stdout
+
+  grep ' -c ' stdout
+  grep ' -o ' stdout
+
+  $EGREP '(CC|CXX|FC|F77|LD) ' stdout && Exit 1
+
+  if $rebuild; then :; else
+    grep 'ylwrap ' stdout
+    $EGREP '(LEX|YACC) ' stdout && Exit 1
+  fi
+
+  unset rebuild
+}
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AM_PROG_CC_C_O
+AC_PROG_F77
+AC_PROG_FC
+AC_PROG_LEX
+AC_PROG_YACC
+AC_PROG_CXX
+
+# FIXME: remove this hack once the requirements c++, fortran and fortran77
+# are implemented correctly.
+test -n "`echo $CXX`" || AC_MSG_ERROR([C++ compiler not found], [77])
+test -n "`echo $FC`"  || AC_MSG_ERROR([Fortran compiler not found], [77])
+test -n "`echo $F77`" || AC_MSG_ERROR([Fortran 77 compiler not found], [77])
+
+# The SunStudio C++ compiler is unfortunately named 'sunCC' (or even just
+# 'CC', yuck!); similarly and the Portland group C++ compiler is named
+# 'pgCC'.  This can cause problems with our grepping checks on the output
+# from make.  Avoid these problems by invoking a wrapper script, as
+# filtering the make output proved too fragile.
+case " $CXX " in
+  *'CC '*)
+    AC_MSG_WARN([the C++ compiler '$CXX' name ends with 'CC'])
+    AC_MSG_WARN([it will be wrapped with the custom script 'am--cxx'])
+    echo '#!/bin/sh' > bin/am--cxx
+    echo 'PATH=$saved_PATH; export PATH' >> bin/am--cxx
+    echo "case \$# in" >> bin/am--cxx
+    echo "  0) exec $CXX ;;" >> bin/am--cxx
+    echo "  *) exec $CXX \"\$@\" ;;" >> bin/am--cxx
+    echo "esac" >> bin/am--cxx
+    chmod a+x bin/am--cxx
+    CXX=am--cxx
+esac
+
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo bar fo2
+bar_CFLAGS = $(AM_CFLAGS)
+foo_SOURCES = foo1.cpp foo2.f90 foo3.f foo5.l foo6.y
+fo2_SOURCES = $(foo_SOURCES)
+fo2_CPPFLAGS = $(AM_CPPFLAGS)
+fo2_FFLAGS = $(AM_FFLAGS)
+fo2_FCFLAGS = $(AM_FCFLAGS)
+fo2_YFLAGS = -v
+fo2_LFLAGS = -n
+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 ba2
+bla_CFLAGS = $(AM_CFLAGS)
+baz_SOURCES = baz1.cpp baz2.f90 baz3.f baz5.l baz6.y
+ba2_SOURCES = $(baz_SOURCES)
+ba2_CPPFLAGS = $(AM_CPPFLAGS)
+ba2_FFLAGS = $(AM_FFLAGS)
+ba2_FCFLAGS = $(AM_FCFLAGS)
+ba2_YFLAGS = -v
+ba2_LFLAGS = -n
+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'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"END"   return EOF;
+.
+%%
+/* Avoid possible link errors. */
+int yywrap (void)
+{
+  return 1;
+}
+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
+
+mkdir bin
+saved_PATH=$PATH; export saved_PATH
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+# Ensure per-target rules are used, to ensure their coverage below.
+# (We do not do an exhaustive check, that wouldn't be practical).
+$FGREP 'bar-bar.o' Makefile.in
+$FGREP 'fo2-foo5.c' Makefile.in
+$FGREP 'fo2-foo6.c' Makefile.in
+
+# Force dependency tracking explicitly, so that slow dependency
+# extractors are not rejected.  Try also with dependency tracking
+# explicitly disabled.
+for config_args in \
+  --enable-dependency-tracking --disable-dependency-tracking
+do
+
+  ./configure $config_args --enable-silent-rules
+
+  do_and_check_silent_build
+  # Cleaning and then rebuilding with the same V flag (and without
+  # removing the generated sources in between) shouldn't trigger a
+  # different set of rules.
+  $MAKE clean
+  do_and_check_silent_build --rebuild
+
+  # Ensure a clean rebuild.
+  $MAKE clean
+  # This is required, since these files are not removed by 'make clean'
+  # (as dictated by the GNU Coding Standards).
+  rm -f *foo5.c *foo6.[ch] sub/*baz5.c sub/*baz6.[ch]
+
+  do_and_check_verbose_build
+  # Cleaning and then rebuilding with the same V flag (and without
+  # removing the generated sources in between) shouldn't trigger a
+  # different set of rules.
+  $MAKE clean
+  do_and_check_verbose_build --rebuild
+
+  # Ensure a clean reconfiguration/rebuild.
+  $MAKE clean
+  $MAKE maintainer-clean
+
+done
+
+:
diff --git a/t/silent-nested-vars.sh b/t/silent-nested-vars.sh
new file mode 100755 (executable)
index 0000000..c579e2c
--- /dev/null
@@ -0,0 +1,147 @@
+#!/bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, on 'make' implementations that do not
+# support nested variables (Bug#9928, Bug#10237).
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+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)
+
+# Check that AM_V and AM_DEFAULT_V work as advertised.
+pkg_verbose = $(pkg_verbose_@AM_V@)
+pkg_verbose_ = $(pkg_verbose_@AM_DEFAULT_V@)
+pkg_verbose_0 = @echo PKG-GEN $@;
+
+bin_SCRIPTS = oop
+oop:
+       $(pkg_verbose)echo $@ >$@
+
+mostlyclean-local:
+       rm -f oop
+EOF
+
+cat > foo.c <<'EOF'
+int main ()
+{
+  return 0;
+}
+EOF
+cp foo.c bar.c
+
+cat >mymake <<'EOF'
+#! /bin/sh
+makerules=
+
+case $1 in
+  -f)
+    makefile=$2
+    case $2 in
+      -) makerules=`cat` || exit ;;
+    esac ;;
+  *)
+    for makefile in makefile Makefile; do
+      test -f $makefile && break
+    done ;;
+esac
+
+nested_var_pat='^[^#].*\$([^)]*\$'
+if
+  case $makefile in
+    -) printf '%s\n' "$makerules" | grep "$nested_var_pat";;
+    *) grep "$nested_var_pat" $makefile;;
+  esac
+then
+  echo >&2 "mymake: $makefile contains nested variables"
+  exit 1
+fi
+
+case $makefile in
+  -) printf '%s\n' "$makerules" | $mymake_MAKE "$@";;
+  *) exec $mymake_MAKE "$@";;
+esac
+EOF
+chmod a+x mymake
+mymake_MAKE=${MAKE-make}
+MAKE=./mymake
+export MAKE mymake_MAKE
+
+# As a sanity check, verify that 'mymake' rejects Makefiles that
+# use nested variables.
+cat > Makefile <<'END'
+a = $(b$(c))
+all:
+       touch bar
+END
+$MAKE && Exit 99
+mv -f Makefile foo.mk
+$MAKE -f foo.mk && Exit 99
+cat foo.mk | $MAKE -f - && Exit 99
+test -f bar && Exit 99
+sed '/a =/d' foo.mk > Makefile
+$MAKE && test -f bar || Exit 99
+rm -f bar Makefile foo.mk
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --enable-silent-rules >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^checking whether \./mymake supports nested variables\.\.\. no *$' \
+  stdout
+$EGREP 'CC|AM_V|GEN' Makefile # For debugging.
+grep '^AM_V_CC =  *\$(am__v_CC_0) *$' Makefile
+grep '^AM_V_GEN =  *\$(am__v_GEN_0) *$' Makefile
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+$EGREP ' (-c|-o)' stdout && Exit 1
+grep 'mv ' stdout && Exit 1
+grep 'echo .*oop' stdout && Exit 1
+grep 'CC .*foo\.' stdout
+grep 'CC .*bar\.' stdout
+grep 'CCLD .*foo' stdout
+grep 'CCLD .*bar' stdout
+grep 'PKG-GEN .*oop' stdout
+$MAKE distclean
+
+./configure --disable-silent-rules > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^checking whether \./mymake supports nested variables\.\.\. no *$' \
+  stdout
+$EGREP 'CC|AM_V|GEN' Makefile # For debugging.
+grep '^AM_V_CC =  *\$(am__v_CC_1) *$' Makefile
+grep '^AM_V_GEN =  *\$(am__v_GEN_1) *$' Makefile
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout
+grep ' -o foo' stdout
+grep ' -o bar' stdout
+grep 'echo .*>oop' stdout
+$EGREP '(CC|LD) ' stdout && Exit 1
+
+:
diff --git a/t/silent-nowarn.sh b/t/silent-nowarn.sh
new file mode 100755 (executable)
index 0000000..5a547bc
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the 'silent-rules' mode suppresses the warnings for recursive
+# make variable expansions.  This should happen regardless of whether and
+# where these warnings are requested.
+
+. ./defs || Exit 1
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+# Yes, we repeat the warnings two times, both before and after
+# 'silent-rules'.  This is deliberate.
+AM_INIT_AUTOMAKE([gnu -Wall -Wportability-recursive
+                      silent-rules
+                      -Wall -Wportability-recursive])
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = gnu -Wall -Wportability-recursive
+foo = $($(v)) $(x$(v)) $($(v)x) $(y$(v)z)
+END
+
+# Files required bu gnu strictness.
+touch AUTHORS ChangeLog COPYING INSTALL NEWS README THANKS
+
+$ACLOCAL
+$AUTOMAKE --gnu -Wall -Wportability-recursive
+
+:
diff --git a/t/silent-yacc-headers.sh b/t/silent-yacc-headers.sh
new file mode 100755 (executable)
index 0000000..6a738cb
--- /dev/null
@@ -0,0 +1,173 @@
+#!/bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode for Yacc, when yacc-generated headers are
+# involved (i.e., the '-d' option is in *YFLAGS).
+
+required='cc yacc'
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_PROG_YACC
+AC_PROG_CC
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+AM_YFLAGS = -d
+bin_PROGRAMS = foo bar
+foo_SOURCES = parse.y
+bar_SOURCES = $(foo_SOURCES)
+bar_YFLAGS = $(AM_YFLAGS)
+EOF
+
+cat > parse.y <<'EOF'
+%{
+void yyerror (char *s) { return; }
+int yylex (void) { return 0; }
+int main (void) { return 0; }
+%}
+%token EOF
+%%
+fubar : 'f' 'o' 'o' 'b' 'a' 'r' EOF {};
+EOF
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+# Check that the expected non-generic rules has been truly generated.
+# Otherwise, the coverage offered by this test will be weaker then
+# expected and planned.
+$FGREP 'bar-parse.c' Makefile.in
+$FGREP '$(bar_YFLAGS)' Makefile.in
+
+./configure --enable-silent-rules
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP ' (-c|-d|-o)' stdout && Exit 1
+$EGREP '(mv|ylwrap) ' stdout && Exit 1
+
+grep 'YACC  *parse\.c' stdout
+grep 'updating  *parse\.h' stdout
+grep 'YACC  *bar-parse\.c' stdout
+grep 'updating  *bar-parse\.h' stdout
+
+grep ' CC  *parse\.' stdout
+grep ' CC  *bar-parse\.' stdout
+grep 'CCLD  *foo' stdout
+grep 'CCLD  *bar' stdout
+
+# Check recovering from header removal.
+rm -f parse.h bar-parse.h
+$MAKE parse.h bar-parse.h >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP ' (-c|-d|-o)' stdout && Exit 1
+$EGREP '(mv|ylwrap) ' stdout && Exit 1
+
+grep 'YACC  *parse\.c' stdout
+grep 'updating  *parse\.h' stdout
+grep 'YACC  *bar-parse\.c' stdout
+grep 'updating  *bar-parse\.h' stdout
+
+# Cleaning and then rebuilding with the same V flag (and without
+# removing the generated sources in between) shouldn't trigger a
+# different set of rules.
+$MAKE clean
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP ' (-c|-d|-o)' stdout && Exit 1
+$EGREP '(mv|ylwrap) ' stdout && Exit 1
+
+# Don't look for "YACC *.c" and "updating *.h", as yacc shouldn't
+# have been re-run.
+grep ' CC  *parse\.' stdout
+grep ' CC  *bar-parse\.' stdout
+grep 'CCLD  *foo' stdout
+grep 'CCLD  *bar' stdout
+
+# Check recovering from header removal.
+rm -f parse.h bar-parse.h
+$MAKE parse.h bar-parse.h >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP ' (-c|-d|-o)' stdout && Exit 1
+$EGREP '(mv|ylwrap) ' stdout && Exit 1
+
+grep 'YACC  *parse\.c' stdout
+grep 'updating  *parse\.h' stdout
+grep 'YACC  *bar-parse\.c' stdout
+grep 'updating  *bar-parse\.h' stdout
+
+# Ensure a truly clean rebuild.
+$MAKE maintainer-clean
+
+./configure --enable-silent-rules
+
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep ' -c ' stdout
+grep ' -o ' stdout
+grep ' -d ' stdout
+grep 'ylwrap ' stdout
+
+$EGREP '(YACC|CC|CCLD) ' stdout && Exit 1
+
+# Check recovering from header removal.
+rm -f parse.h bar-parse.h
+$MAKE V=1 parse.h bar-parse.h >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep ' -d ' stdout
+grep 'ylwrap ' stdout
+
+grep 'YACC' stdout && Exit 1
+
+# Cleaning and then rebuilding with the same V flag (and without
+# removing the generated sources in between) shouldn't trigger a
+# different set of rules.
+$MAKE clean
+
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+# Don't look for ylwrap, as probably lex hasn't been re-run.
+grep ' -c ' stdout
+grep ' -o ' stdout
+
+$EGREP '(YACC|CC|CCLD) ' stdout && Exit 1
+
+# Check recovering from header removal.
+rm -f parse.h bar-parse.h
+$MAKE V=1 parse.h bar-parse.h >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep ' -d ' stdout
+grep 'ylwrap ' stdout
+
+grep 'YACC' stdout && Exit 1
+
+:
diff --git a/t/silent-yacc.sh b/t/silent-yacc.sh
new file mode 100755 (executable)
index 0000000..639b678
--- /dev/null
@@ -0,0 +1,136 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode for Yacc.
+# Keep this in sync with sister test 'silent-yacc-gcc.test'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AM_PROG_CC_C_O
+AC_PROG_YACC
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo1 foo2
+foo1_SOURCES = foo.y
+foo2_SOURCES = $(foo1_SOURCES)
+foo2_YFLAGS = -v
+foo2_CFLAGS = $(AM_CPPFLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = bar1 bar2
+bar1_SOURCES = bar.y
+bar2_SOURCES = $(bar1_SOURCES)
+bar2_YFLAGS = -v
+bar2_CFLAGS = $(AM_CPPFLAGS)
+EOF
+
+cat > foo.y <<'EOF'
+%{
+void yyerror (char *s) { return; }
+int yylex (void) { return 0; }
+int main (void) { return 0; }
+%}
+%token EOF
+%%
+fubar : 'f' 'o' 'o' 'b' 'a' 'r' EOF {};
+EOF
+cp foo.y sub/bar.y
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+# Ensure per-target rules are used, to ensure their coverage below.
+$FGREP 'foo2-foo.c' Makefile.in || Exit 99
+$FGREP 'bar2-bar.c' sub/Makefile.in || Exit 99
+
+./configure --enable-silent-rules
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP ' (-c|-o)' stdout && Exit 1
+$EGREP '(mv|ylwrap) ' stdout && Exit 1
+
+grep 'YACC .*foo\.' stdout
+grep 'YACC .*bar\.' stdout
+grep ' CC .*foo\.' stdout
+grep ' CC .*bar\.' stdout
+grep 'CCLD .*foo1' stdout
+grep 'CCLD .*bar1' stdout
+grep 'CCLD .*foo2' stdout
+grep 'CCLD .*bar2' stdout
+
+# Cleaning and then rebuilding with the same V flag (and without
+# removing the generated sources in between) shouldn't trigger a
+# different set of rules.
+$MAKE clean
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP ' (-c|-o)' stdout && Exit 1
+$EGREP '(mv|ylwrap) ' stdout && Exit 1
+
+# Don't look for YACC, as probably yacc hasn't been re-run.
+grep ' CC .*foo\.' stdout
+grep ' CC .*bar\.' stdout
+grep 'CCLD .*foo1' stdout
+grep 'CCLD .*bar1' stdout
+grep 'CCLD .*foo2' stdout
+grep 'CCLD .*bar2' stdout
+
+# Ensure a truly clean rebuild.
+$MAKE clean
+rm -f *foo.[ch] sub/*bar.[ch]
+
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep ' -c ' stdout
+grep ' -o ' stdout
+grep 'ylwrap ' stdout
+
+$EGREP '(YACC|CC|CCLD) ' stdout && Exit 1
+
+# Cleaning and then rebuilding with the same V flag (and without
+# removing the generated sources in between) shouldn't trigger a
+# different set of rules.
+$MAKE clean
+
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+# Don't look for ylwrap, as probably lex hasn't been re-run.
+grep ' -c ' stdout
+grep ' -o ' stdout
+
+$EGREP '(YACC|CC|CCLD) ' stdout && Exit 1
+
+:
diff --git a/t/silent.sh b/t/silent.sh
new file mode 100755 (executable)
index 0000000..f914c44
--- /dev/null
@@ -0,0 +1,83 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, without libtool, standard depmode case.
+
+# Please keep this file in sync with silent2.test.
+
+required=cc
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'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
+$EGREP ' (-c|-o)' 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
+$EGREP '(CC|LD) ' stdout && Exit 1
+
+:
diff --git a/t/silent2.sh b/t/silent2.sh
new file mode 100755 (executable)
index 0000000..6565a27
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check 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 || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'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
+$EGREP ' (-c|-o)' 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
+$EGREP '(CC|LD) ' stdout && Exit 1
+
+:
diff --git a/t/silent3.sh b/t/silent3.sh
new file mode 100755 (executable)
index 0000000..564a490
--- /dev/null
@@ -0,0 +1,87 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, with libtool, standard depmode case.
+
+# Please keep this file in sync with silent4.test and silent9.test.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_AR
+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
+$EGREP ' (-c|-o)' 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
+# The libtool command line can contain e.g. a '--tag=CC' option.
+sed 's/--tag=[^ ]*/--tag=x/g' stdout | $EGREP '(CC|LD) ' && Exit 1
+
+:
diff --git a/t/silent4.sh b/t/silent4.sh
new file mode 100755 (executable)
index 0000000..44b7eb3
--- /dev/null
@@ -0,0 +1,88 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check 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 and silent9.test.
+
+required="libtoolize gcc"
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_AR
+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
+$EGREP ' (-c|-o)' 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
+# The libtool command line can contain e.g. a '--tag=CC' option.
+sed 's/--tag=[^ ]*/--tag=x/g' stdout | $EGREP '(CC|LD) ' && Exit 1
+
+:
diff --git a/t/silent6.sh b/t/silent6.sh
new file mode 100755 (executable)
index 0000000..280d25a
--- /dev/null
@@ -0,0 +1,107 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check user extensibility of silent-rules mode.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'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 ' stdout && Exit 1
+grep 'cp \.*/foo\.in foo' stdout
+
+$MAKE distclean
+
+./configure --disable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN ' stdout && Exit 1
+grep 'cp \.*/foo\.in foo' stdout
+
+$MAKE clean
+$MAKE V=0 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^ *GEN foo *$' stdout
+grep 'cp ' stdout && Exit 1
+
+$MAKE distclean
+
+$sleep
+# Things should also work with -Wall in AM_INIT_AUTOMAKE.
+cat > configure.ac <<'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.ac
+$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.ac <<'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/t/silent7.sh b/t/silent7.sh
new file mode 100755 (executable)
index 0000000..02ef287
--- /dev/null
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check user extensibility of silent-rules mode.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'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 ' stdout && Exit 1
+grep 'cp ' stdout
+grep 'echo ' stdout
+
+$MAKE clean
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN ' 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 ' stdout && Exit 1
+grep 'cp ' stdout
+grep 'echo ' stdout
+
+# Ensure that setting 'silent-rules' in a Makefile.am produces an error.
+echo 'AUTOMAKE_OPTIONS = silent-rules' >> Makefile.am
+AUTOMAKE_fails --force
+
+:
diff --git a/t/silent8.sh b/t/silent8.sh
new file mode 100755 (executable)
index 0000000..a2fdb44
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check texinfo rules in silent-rules mode.
+
+required='makeinfo-html tex texi2dvi-o dvips'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+info_TEXINFOS = foo.texi
+EOF
+
+cat > foo.texi <<'EOF'
+\input texinfo
+@c %**start of header
+@setfilename foo.info
+@settitle foo manual
+@c %**end of header
+@bye
+EOF
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --disable-silent-rules
+
+# Make sure that all labels work in silent-mode.
+$MAKE V=0 dvi html info ps pdf >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'DVIPS    foo.ps' stdout || Exit 1
+grep 'MAKEINFO foo.html' stdout || Exit 1
+# NetBSD make will print './foo.info' instead of 'foo.info'.
+grep 'MAKEINFO.*foo.info' stdout || Exit 1
+grep 'TEXI2DVI foo.dvi' stdout || Exit 1
+grep 'TEXI2PDF foo.pdf' stdout || Exit 1
+
+# Now make sure the labels don't appear in verbose mode.
+$MAKE clean || Exit 1
+$MAKE V=1 dvi html info ps pdf >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'DVIPS    foo.ps' stdout && Exit 1
+grep 'MAKEINFO foo.html' stdout && Exit 1
+grep 'MAKEINFO.*foo.info' stdout && Exit 1
+grep 'TEXI2DVI foo.dvi' stdout && Exit 1
+grep 'TEXI2PDF foo.pdf' stdout && Exit 1
+
+:
diff --git a/t/silent9.sh b/t/silent9.sh
new file mode 100755 (executable)
index 0000000..70195a1
--- /dev/null
@@ -0,0 +1,87 @@
+#!/bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, with libtool, nodep case.
+
+# Please keep this file in sync with silent3.test and silent4.test.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+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 --disable-dependency-tracking --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+$EGREP ' (-c|-o)' 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
+# The libtool command line can contain e.g. a '--tag=CC' option.
+sed 's/--tag=[^ ]*/--tag=x/g' stdout | $EGREP '(CC|LD) ' && Exit 1
+
+:
diff --git a/t/silentcxx-gcc.sh b/t/silentcxx-gcc.sh
new file mode 100755 (executable)
index 0000000..d99f1e9
--- /dev/null
@@ -0,0 +1,109 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode for C++.
+# This test requires the GNU C++ compiler; keep it in sync with sister
+# test 'silentcxx.test', which should work with generic compilers.
+
+required=g++
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_PROG_CXX
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo1 foo2
+foo1_SOURCES = foo.cpp baz.cxx quux.cc
+foo2_SOURCES = $(foo1_SOURCES)
+foo2_CXXFLAGS = $(AM_CXXFLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = bar1 bar2
+bar1_SOURCES = bar.cpp
+bar2_SOURCES = $(bar1_SOURCES)
+bar2_CXXFLAGS = $(AM_CXXFLAGS)
+EOF
+
+cat > foo.cpp <<'EOF'
+using namespace std; /* C compilers fail on this. */
+int main() { return 0; }
+EOF
+
+# Let's try out other extensions too.
+echo 'class Baz  { public: int i;  };' > baz.cxx
+echo 'class Quux { public: bool b; };' > quux.cc
+
+cp foo.cpp sub/bar.cpp
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+# Sanity check: make sure the cache variable we force is really used
+# by configure.
+$FGREP am_cv_CXX_dependencies_compiler_type configure
+
+# Force gcc ("fast") depmode.
+# This apparently useless "for" loop is here to simplify the syncing
+# with sister test 'silentcxx.test'.
+for config_args in \
+  am_cv_CXX_dependencies_compiler_type=gcc
+do
+  ./configure $config_args --enable-silent-rules
+  $MAKE >stdout || { cat stdout; Exit 1; }
+  cat stdout
+
+  $EGREP ' (-c|-o)' stdout && Exit 1
+  grep 'mv ' stdout && Exit 1
+
+  grep 'CXX .*foo\.'  stdout
+  grep 'CXX .*baz\.'  stdout
+  grep 'CXX .*quux\.' stdout
+  grep 'CXX .*bar\.'  stdout
+  grep 'CXXLD .*foo1' stdout
+  grep 'CXXLD .*bar1' stdout
+  grep 'CXXLD .*foo2' stdout
+  grep 'CXXLD .*bar2' stdout
+
+  # Ensure a clean rebuild.
+  $MAKE clean
+
+  $MAKE V=1 >stdout || { cat stdout; Exit 1; }
+  cat stdout
+
+  grep ' -c ' stdout
+  grep ' -o ' stdout
+
+  $EGREP '(CC|CXX|LD) ' stdout && Exit 1
+
+  # Ensure a clean reconfiguration/rebuild.
+  $MAKE clean
+  $MAKE maintainer-clean
+
+done
+
+:
diff --git a/t/silentcxx.sh b/t/silentcxx.sh
new file mode 100755 (executable)
index 0000000..a41cc2d
--- /dev/null
@@ -0,0 +1,110 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode for C++.
+# This test should work with generic C++ compilers; keep it in sync with
+# sister test 'silentcxx-gcc.test', which requires the GNU C++ compiler
+# and forces the use of gcc depmode.
+
+required=c++
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_PROG_CXX
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo1 foo2
+foo1_SOURCES = foo.cpp baz.cxx quux.cc
+foo2_SOURCES = $(foo1_SOURCES)
+foo2_CXXFLAGS = $(AM_CXXFLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = bar1 bar2
+bar1_SOURCES = bar.cpp
+bar2_SOURCES = $(bar1_SOURCES)
+bar2_CXXFLAGS = $(AM_CXXFLAGS)
+EOF
+
+cat > foo.cpp <<'EOF'
+using namespace std; /* C compilers fail on this. */
+int main (void) { return 0; }
+EOF
+
+# Let's try out other extensions too.
+echo 'class Baz  { public: int i;  };' > baz.cxx
+echo 'class Quux { public: bool b; };' > quux.cc
+
+cp foo.cpp sub/bar.cpp
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+# Sanity check: make sure the cache variable we force is really used
+# by configure.
+$FGREP am_cv_CXX_dependencies_compiler_type configure
+
+# Force dependency tracking explicitly, so that slow dependency
+# extractors are not rejected.  Try also with dependency tracking
+# explicitly disabled.
+for config_args in \
+  --enable-dependency-tracking --disable-dependency-tracking
+do
+  ./configure $config_args --enable-silent-rules
+  $MAKE >stdout || { cat stdout; Exit 1; }
+  cat stdout
+
+  $EGREP ' (-c|-o)' stdout && Exit 1
+  grep 'mv ' stdout && Exit 1
+
+  grep 'CXX .*foo\.'  stdout
+  grep 'CXX .*baz\.'  stdout
+  grep 'CXX .*quux\.' stdout
+  grep 'CXX .*bar\.'  stdout
+  grep 'CXXLD .*foo1' stdout
+  grep 'CXXLD .*bar1' stdout
+  grep 'CXXLD .*foo2' stdout
+  grep 'CXXLD .*bar2' stdout
+
+  # Ensure a clean rebuild.
+  $MAKE clean
+
+  $MAKE V=1 >stdout || { cat stdout; Exit 1; }
+  cat stdout
+
+  grep ' -c ' stdout
+  grep ' -o ' stdout
+
+  $EGREP '(CXX|LD) ' stdout && Exit 1
+
+  # Ensure a clean reconfiguration/rebuild.
+  $MAKE clean
+  $MAKE maintainer-clean
+
+done
+
+:
diff --git a/t/silentf77.sh b/t/silentf77.sh
new file mode 100755 (executable)
index 0000000..ce6f6a0
--- /dev/null
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode for Fortran 77.
+# Keep this ins sync with the sister test silentf90.test.
+
+required=fortran77
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_PROG_F77
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo1 foo2
+foo1_SOURCES = foo.f
+foo2_SOURCES = $(foo1_SOURCES)
+foo2_FFLAGS = $(AM_FFLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = bar1 bar2
+bar1_SOURCES = bar.f
+bar2_SOURCES = $(bar1_SOURCES)
+bar2_FFLAGS = $(AM_FFLAGS)
+EOF
+
+cat > foo.f <<'EOF'
+      program foo
+      stop
+      end
+EOF
+cp foo.f sub/bar.f
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+# Avoid spurious failures with SunStudio Fortran compilers.
+sed '/^NOTICE:/d' stdout > t
+mv -f t stdout
+cat stdout
+
+$EGREP ' (-c|-o)' stdout && Exit 1
+grep 'mv ' stdout && Exit 1
+
+grep 'F77 .*foo\.'  stdout
+grep 'F77 .*bar\.'  stdout
+grep 'F77LD .*foo1' stdout
+grep 'F77LD .*bar1' stdout
+grep 'F77LD .*foo2' stdout
+grep 'F77LD .*bar2' stdout
+
+$EGREP '(FC|FCLD) ' stdout && Exit 1
+
+# Ensure a clean rebuild.
+$MAKE clean
+
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep ' -c ' stdout
+grep ' -o ' stdout
+
+$EGREP '(F77|FC|LD) ' stdout && Exit 1
+
+:
diff --git a/t/silentf90.sh b/t/silentf90.sh
new file mode 100755 (executable)
index 0000000..8bb06b2
--- /dev/null
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode for Fortran 90.
+# Keep this ins sync with the sister test silentf77.test.
+
+required=fortran
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >>configure.ac <<'EOF'
+AM_SILENT_RULES
+AC_PROG_FC
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo1 foo2
+foo1_SOURCES = foo.f90
+foo2_SOURCES = $(foo1_SOURCES)
+foo2_FCFLAGS = $(AM_FCLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = bar1 bar2
+bar1_SOURCES = bar.f90
+bar2_SOURCES = $(bar1_SOURCES)
+bar2_FCFLAGS = $(AM_FCLAGS)
+EOF
+
+cat > foo.f90 <<'EOF'
+      program foo
+      stop
+      end
+EOF
+cp foo.f90 sub/bar.f90
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+# Avoid spurious failures with SunStudio Fortran compilers.
+sed '/^NOTICE:/d' stdout > t
+mv -f t stdout
+cat stdout
+
+$EGREP ' (-c|-o)' stdout && Exit 1
+grep 'mv ' stdout && Exit 1
+
+grep 'FC .*foo\.'  stdout
+grep 'FC .*bar\.'  stdout
+grep 'FCLD .*foo1' stdout
+grep 'FCLD .*bar1' stdout
+grep 'FCLD .*foo2' stdout
+grep 'FCLD .*bar2' stdout
+
+$EGREP '(F77|F77LD) ' stdout && Exit 1
+
+# Ensure a clean rebuild.
+$MAKE clean
+
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep ' -c ' stdout
+grep ' -o ' stdout
+
+$EGREP '(F77|FC|LD) ' stdout && Exit 1
+
+:
diff --git a/t/space.sh b/t/space.sh
new file mode 100755 (executable)
index 0000000..c46ade1
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test leading space on macro assignment.
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >> configure.ac
+
+cat > Makefile.am << 'END'
+    bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/specflg-dummy.sh b/t/specflg-dummy.sh
new file mode 100755 (executable)
index 0000000..1486f4c
--- /dev/null
@@ -0,0 +1,247 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that even "dummy" per-target flags triggers the use of renamed
+# objects.  I.e., a definition like 'foo_CFLAGS = $(AM_CFLAGS)' should
+# always cause Automake to trigger the semantics for per-target CFLAGS,
+# even if AM_CFLAGS is undefined. Similarly for other *FLAGS variables
+# (CXXFLAGS, YFLAGS, LDFLAGS, ...)
+
+. ./defs || Exit 1
+
+# Disable shell globbing if possible.
+(set +f) >/dev/null 2>&1 && set +f
+
+oIFS=$IFS
+nl='
+'
+
+matches=
+add_match ()
+{
+  matches="$matches$nl$1"
+}
+
+do_check ()
+{
+  IFS=$nl
+  for string in $matches; do
+    IFS=$oIFS
+    $FGREP "$string" Makefile.in
+  done
+  IFS=$oIFS
+}
+
+# Fake libtool presence, so that we won't have to require it.
+cat > acinclude.m4 <<END
+AC_DEFUN([AC_PROG_LIBTOOL], [AC_SUBST([LIBTOOL], [dummy])])
+END
+: > ltmain.sh
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_YACC
+AC_PROG_LEX
+AC_PROG_F77
+AC_PROG_FC
+AM_PROG_GCJ
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AM_PROG_UPC
+AC_PROG_OBJC
+AM_PROG_CC_C_O
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS =
+lib_LIBRARIES =
+lib_LTLIBRARIES =
+END
+
+$ACLOCAL
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog1
+prog1_SOURCES = source1.c
+prog1_CFLAGS = $(AM_CFLAGS)
+END
+
+add_match 'prog1-source1.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog2
+prog2_SOURCES = source2.c
+prog2_CPPFLAGS = $(AM_CPPFLAGS)
+END
+
+add_match 'prog2-source2.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog3
+prog3_SOURCES = source3.cxx
+prog3_CXXFLAGS = $(AM_CXXFLAGS)
+END
+
+add_match 'prog3-source3.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog4
+prog4_SOURCES = source4.c++
+prog4_CPPFLAGS = $(AM_CPPFLAGS)
+END
+
+add_match 'prog4-source4.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog5
+prog5_SOURCES = source5.f
+prog5_FFLAGS = $(AM_FFLAGS)
+END
+
+add_match 'prog5-source5.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog6
+prog6_SOURCES = source6.f90
+prog6_FCFLAGS = $(AM_FCFLAGS)
+END
+
+add_match 'prog6-source6.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog7
+prog7_SOURCES = source7.r
+prog7_RFLAGS = $(AM_RFLAGS)
+END
+
+add_match 'prog7-source7.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog8
+prog8_SOURCES = source8.java
+prog8_GCJFLAGS = $(AM_GCJFLAGS)
+END
+
+add_match 'prog8-source8.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog9
+prog9_SOURCES = source9.upc
+prog9_UPCFLAGS = $(AM_UPCFLAGS)
+END
+
+add_match 'prog9-source9.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += prog10
+prog10_SOURCES = source10.m
+prog10_OBJCFLAGS = $(AM_OBJCFLAGS)
+END
+
+add_match 'prog10-source10.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += linkprog
+linkprog_SOURCES = linkprog.c
+linkprog_LDFLAGS = $(AM_LDFLAGS)
+END
+
+add_match 'linkprog_LINK ='
+
+cat >> Makefile.am <<'END'
+lib_LIBRARIES += libstatic.a
+libstatic_a_SOURCES = static123.c
+libstatic_a_CFLAGS = $(AM_CFLAGS)
+END
+
+add_match 'libstatic_a-static123.$(OBJEXT)'
+
+cat >> Makefile.am <<'END'
+lib_LTLIBRARIES += libshared1.la
+libshared1_la_SOURCES = shared1.c
+libshared1_la_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS)
+END
+
+add_match 'libshared1_la-shared1.lo'
+
+cat >> Makefile.am <<'END'
+lib_LTLIBRARIES += libshared2.la
+libshared2_la_SOURCES = shared2.cc
+libshared2_la_CXXFLAGS = $(AM_CXXFLAGS)
+END
+
+add_match 'libshared2_la-shared2.lo'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += parse1
+parse1_SOURCES = parse.y
+parse1_YFLAGS = $(AM_YFLAGS)
+END
+
+add_match 'parse1-parse.c'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += parse2
+parse2_SOURCES = parse.ypp
+parse2_YFLAGS = $(AM_YFLAGS)
+END
+
+add_match 'parse2-parse.cpp'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += lexer1
+lexer1_SOURCES = lex.l
+lexer1_LFLAGS = $(AM_YFLAGS)
+END
+
+add_match 'lexer1-lex.c'
+
+cat >> Makefile.am <<'END'
+bin_PROGRAMS += lexer2
+lexer2_SOURCES = lexer.ll
+lexer2_LFLAGS = $(AM_YFLAGS)
+END
+
+add_match 'lexer2-lexer.cc'
+
+# For debugging.
+cat Makefile.am
+
+$AUTOMAKE -a
+do_check
+
+sed '
+  s|^\(.*\)_SOURCES *= *|sub_\1_SOURCES = srcsub/|
+  s|^\(.*\)PROGRAMS *+= *|\1PROGRAMS += sub/|
+  s|^\(.*\)LIBRARIES *+= *|\1LIBRARIES += sub/|
+  s|^\(.*\)FLAGS *=|sub_\1FLAGS =|
+' Makefile.am > t
+
+cat - t > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+END
+
+rm -f t
+
+# For debugging.
+cat Makefile.am
+
+$AUTOMAKE
+do_check
+
+:
diff --git a/t/specflg.sh b/t/specflg.sh
new file mode 100755 (executable)
index 0000000..9d5c73c
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of flags specific to executable.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+foo_CFLAGS = -DBAR
+END
+
+# Make sure 'compile' is required.
+$ACLOCAL
+AUTOMAKE_fails
+grep 'required.*compile' stderr
+
+: > compile
+
+$AUTOMAKE
+
+# Look for $(COMPILE) -c in .c.o rule.
+grep 'COMPILE. [^-]' Makefile.in && Exit 1
+
+# Look for foo-foo.o.
+grep '[^-]foo\.o' Makefile.in && Exit 1
+
+# Regression test for missing space.
+$FGREP ')-c' Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/specflg10.sh b/t/specflg10.sh
new file mode 100755 (executable)
index 0000000..3b8fc5b
--- /dev/null
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# AM_DEFAULT_SOURCE_EXT
+
+required='cc c++'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_CONFIG_FILES([sub/Makefile sub2/Makefile])
+AM_CONDITIONAL([COND], [:])
+AC_OUTPUT
+END
+
+mkdir sub sub2
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub sub2
+bin_PROGRAMS = foo
+END
+
+cat > sub/Makefile.am << 'END'
+bin_PROGRAMS = bar baz
+AM_DEFAULT_SOURCE_EXT = .cpp
+END
+
+cat > sub2/Makefile.am << 'END'
+bin_PROGRAMS = bla
+if COND
+AM_DEFAULT_SOURCE_EXT = .foo .quux
+endif
+SUFFIXES = .foo .c
+.foo.c:
+       cat $< >$@
+BUILT_SOURCES = bla.c
+CLEANFILES = bla.c
+END
+
+cat > foo.c << 'END'
+int main () { return 0; }
+END
+
+cp foo.c sub/bar.cpp
+cp foo.c sub/baz.cpp
+cp foo.c sub2/bla.foo
+
+$ACLOCAL
+$AUTOCONF
+
+# Conditional AM_DEFAULT_SOURCE_EXT does not work yet  :-(
+# (this limitation could be lifted).
+AUTOMAKE_fails --add-missing
+grep 'defined conditionally' stderr
+
+sed '/^if/d; /^endif/d' sub2/Makefile.am > t
+mv -f t sub2/Makefile.am
+
+# AM_DEFAULT_SOURCE_EXT can only assume one value
+# (lifting this limitation is not such a good idea).
+AUTOMAKE_fails --add-missing
+grep 'at most one value' stderr
+
+sed 's/ \.quux//' sub2/Makefile.am > t
+mv -f t sub2/Makefile.am
+
+$AUTOMAKE --add-missing
+
+./configure
+$MAKE
+$MAKE distcheck
+
+:
diff --git a/t/specflg2.sh b/t/specflg2.sh
new file mode 100755 (executable)
index 0000000..9f9569c
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test library-specific flags.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_CXX
+AM_PROG_AR
+AC_PROG_RANLIB
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+lib_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c bar.cc
+libfoo_a_CFLAGS = -DBAR
+libfoo_a_CXXFLAGS = -DZOT
+END
+
+: > ar-lib
+
+# Make sure 'compile' is required.
+$ACLOCAL
+AUTOMAKE_fails
+grep 'required.*compile' stderr
+
+: > compile
+
+$AUTOMAKE
+
+# Look for $(COMPILE) -c in .c.o rule.
+grep 'COMPILE. [^-]' Makefile.in && Exit 1
+
+# Look for libfoo_a-foo.o.
+grep foo Makefile.in
+grep '[^-]foo\.o' Makefile.in && Exit 1
+
+# Look for libfoo_a-bar.o.
+grep bar Makefile.in
+grep '[^-]bar\.o' Makefile.in && Exit 1
+
+Exit 0
diff --git a/t/specflg3.sh b/t/specflg3.sh
new file mode 100755 (executable)
index 0000000..9e78872
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test exe-specific flags with dependency tracking.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+foo_CFLAGS = -DFOO
+END
+
+: > compile
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP ' -o foo-foo' Makefile.in
+$FGREP 'foo.o.o' Makefile.in && Exit 1
+$FGREP 'foo.$(OBJEXT).$(OBJEXT)' Makefile.in && Exit 1
+$FGREP '$(foo_CFLAGS)' Makefile.in
+
+:
diff --git a/t/specflg6.sh b/t/specflg6.sh
new file mode 100755 (executable)
index 0000000..f420cdf
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Regression test for multiple rules being generated for each target when
+# conditionals are present.
+# From Richard Boulton.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_CONDITIONAL([BAR], [true])
+END
+
+cat > Makefile.am << 'END'
+if BAR
+BAR_SRCS = bar.c
+endif
+
+bin_PROGRAMS = foo
+foo_CFLAGS = -DFOO
+foo_SOURCES = foo.c
+END
+
+: > compile
+
+$ACLOCAL
+$AUTOMAKE
+
+uncondval=`$FGREP 'foo-foo.o: foo.c' Makefile.in`
+
+cat >> Makefile.am << 'END'
+foo_SOURCES += $(BAR_SRCS)
+END
+
+$AUTOMAKE
+
+condval=`$FGREP 'foo-foo.o: foo.c' Makefile.in`
+
+test "x$uncondval" = "x$condval"
+
+:
diff --git a/t/specflg7.sh b/t/specflg7.sh
new file mode 100755 (executable)
index 0000000..26ad75c
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The true/false example from the manual, plus a check for _SHORTNAME.
+
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = false true
+true_SOURCES = false.c
+true_CFLAGS = -DAM_TRUE
+true_SHORTNAME = t
+# No false_SOURCES definition.  Use the default source.
+false_CFLAGS = -DAM_FALSE
+false_SHORTNAME = f
+END
+
+cat > false.c << 'END'
+#include <stdio.h>
+int
+main (int argc, char *argv[])
+{
+#ifdef AM_TRUE
+   puts ("true");
+#else
+   puts ("false");
+#endif
+   return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+./true | grep true
+./false | grep false
+
+objext=`sed -n -e 's/^OBJEXT = //p' < Makefile`
+test -f ./t-false.$objext
+test -f ./f-false.$objext
+
+:
diff --git a/t/specflg8.sh b/t/specflg8.sh
new file mode 100755 (executable)
index 0000000..435ce16
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Like the true/false example from the manual,
+# with one extra indirection in the sources (PR/315), and
+# use of _CPPFLAGS (PR/337).
+
+required='cc native'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+# Using a separate variable to hold all the sources for a program is
+# common when building many flavors of this program, each with
+# different flags.
+
+cat > Makefile.am << 'END'
+TRUESOURCE = true.c
+bin_PROGRAMS = false true
+true_SOURCES = $(TRUESOURCE)
+true_CPPFLAGS = -DEXIT_CODE=0
+false_SOURCES = $(TRUESOURCE)
+false_CPPFLAGS = -DEXIT_CODE=1
+END
+
+cat > true.c << 'END'
+int main (void)
+{
+   return EXIT_CODE;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+
+./true
+./false && Exit 1
+
+objext=`sed -n -e 's/^OBJEXT = //p' < Makefile`
+test -f ./true-true.$objext
+test -f ./false-true.$objext
+
+:
diff --git a/t/specflg9.sh b/t/specflg9.sh
new file mode 100755 (executable)
index 0000000..96e7a2e
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Another check for per-target flag substitutions.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zzfoo zzbar
+zzfoo_SOURCES = sub/foo.c
+zzbar_SOURCES = bar.c
+zzbar_CPPFLAGS = -Dfoo
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+$FGREP '$(AM_CFLAGS)' Makefile.in
+
+$FGREP '$(zzfoo_CFLAGS)' Makefile.in && Exit 1
+$FGREP '$(zzfoo_CPPFLAGS)' Makefile.in && Exit 1
+
+$FGREP '$(zzbar_CFLAGS)' Makefile.in && Exit 1
+$FGREP '$(zzbar_CPPFLAGS)' Makefile.in
+
+:
diff --git a/t/spell.sh b/t/spell.sh
new file mode 100755 (executable)
index 0000000..a2b4752
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure misspellings in _SOURCES variables cause failure.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz foo
+zardoz_SOURCES = x.c
+boo_SOURCES = y.c
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile.am:3:.*boo' stderr
diff --git a/t/spell2.sh b/t/spell2.sh
new file mode 100755 (executable)
index 0000000..a4b0a46
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure misspellings in _SOURCES variables cause failure.
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >> configure.ac
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = x.c
+qardoz_LDADD = -ljoe
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile.am:3:.*qardoz' stderr
diff --git a/t/spell3.sh b/t/spell3.sh
new file mode 100755 (executable)
index 0000000..a96fa03
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure some internal _DEPENDENCIES variables don't cause
+# errors.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+TAGS_DEPENDENCIES = joe
+## Required to avoid error.
+ETAGS_ARGS = joe
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/spelling.sh b/t/spelling.sh
new file mode 100755 (executable)
index 0000000..fb68f31
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that misspelled prefixes actually cause error.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'EOF'
+bni_PROGRAMS = zot
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'bni_PROGRAMS' stderr
+grep 'bnidir.*undefined' stderr
+
+:
diff --git a/t/spy-rm.tap b/t/spy-rm.tap
new file mode 100755 (executable)
index 0000000..af7ba2a
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check whether "rm -f" do not complain if called without file
+# operands.  We'd like to depend on this behaviour (which seems
+# to hold on all non-museum systems, and will soon be mandated
+# by POSIX as well) in future version of automake, to simplify
+# automake-provided cleanup rules.
+# References:
+#  <http://lists.gnu.org/archive/html/bug-autoconf/2012-02/msg00002.html>
+#  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10819>
+#  <http://austingroupbugs.net/view.php?id=542>
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+plan_ 10
+
+chk ()
+{
+  if test -f /bin/rm; then
+    command_ok_ "/bin/rm $*" /bin/rm "$@"
+  else
+    skip_ -r "/bin/rm not found"
+  fi
+  command_ok_ "rm $*" rm "$@"
+}
+
+chk -f
+chk -rf
+chk -fr
+chk -f -r
+chk -r -f
+
+:
diff --git a/t/spy.sh b/t/spy.sh
new file mode 100755 (executable)
index 0000000..0d087a4
--- /dev/null
+++ b/t/spy.sh
@@ -0,0 +1,106 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check whether double colon rules work.  The Unix V7 make manual
+# mentions double-colon rules, but POSIX does not.  They seem to be
+# supported by all Make implementation as far as we can tell. This test
+# case is a spy: we want to detect if there exist implementations where
+# these do not work.  We might use these rules to simplify the rebuild
+# rules (instead of the $? hack).
+
+# Tom Tromey write:
+# | In the distant past we used :: rules extensively.
+# | Fran?ois convinced me to get rid of them:
+# |
+# | Thu Nov 23 18:02:38 1995  Tom Tromey  <tromey@cambric>
+# | [ ... ]
+# |         * subdirs.am: Removed "::" rules
+# |         * header.am, libraries.am, mans.am, texinfos.am, footer.am:
+# |         Removed "::" rules
+# |         * scripts.am, programs.am, libprograms.am: Removed "::" rules
+# |
+# |
+# | I no longer remember the rationale for this.  It may have only been a
+# | belief that they were unportable.
+
+# On a related topic, the Autoconf manual has the following text:
+# |     'VPATH' and double-colon rules
+# |           Any assignment to 'VPATH' causes Sun 'make' to only execute
+# |           the first set of double-colon rules.  (This comment has been
+# |           here since 1994 and the context has been lost.  It's probably
+# |           about SunOS 4.  If you can reproduce this, please send us a
+# |           test case for illustration.)
+
+# We already know that overlapping ::-rule like
+#
+#   a :: b
+#      echo rule1 >> $@
+#   a :: c
+#      echo rule2 >> $@
+#   a :: b c
+#      echo rule3 >> $@
+#
+# do not work equally on all platforms.  It seems that in all cases
+# Make attempts to run all matching rules.  However at least GNU Make,
+# NetBSD Make, and FreeBSD Make will detect that $@ was updated by the
+# first matching rule and skip remaining matches (with the above
+# example that means that unless 'a' was declared PHONY, only "rule1"
+# will be appended to 'a' if both b and c have changed).  Other
+# implementations like OSF1 Make and HP-UX Make do not perform such a
+# check and execute all matching rules whatever they do ("rule1",
+# "rule2", abd "rule3" will all be appended to 'a' if b and c have
+# changed).
+
+# So it seems only non-overlapping ::-rule may be portable.  This is
+# what we check now.
+
+. ./defs || Exit 1
+
+cat >Makefile <<\EOF
+a :: b
+       echo rule1 >> $@
+a :: c
+       echo rule2 >> $@
+EOF
+
+touch b c
+$sleep
+: > a
+$MAKE
+test "`cat a`" = ''
+$sleep
+touch b
+$MAKE
+test "`cat a`" = rule1
+# Ensure a is strictly newer than b, so HP-UX make does not execute rule2.
+$sleep
+: > a
+$sleep
+touch c
+$MAKE
+test "`cat a`" = rule2
+
+# Unfortunately, the following is not portable to FreeBSD/NetBSD/OpenBSD
+# make, see explanation above.
+
+#: > a
+#$sleep
+#touch b c
+#$MAKE
+#grep rule1 a
+#grep rule2 a
+
+:
diff --git a/t/srcsub.sh b/t/srcsub.sh
new file mode 100755 (executable)
index 0000000..978a105
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure config sub in _SOURCES fails.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = x
+x_SOURCES = x.c @FOO@
+EXTRA_x_SOURCES = y.c
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile.am:2:.*x_SOURCES.*substitution' stderr
diff --git a/t/srcsub2.sh b/t/srcsub2.sh
new file mode 100755 (executable)
index 0000000..2d6da97
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure config sub in _SOURCES fails.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = x
+bar = @FOO@
+foo = $(bar)
+x_SOURCES = x.c $(foo)
+EXTRA_x_SOURCES = y.c
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile.am:2:.*bar.*substitution' stderr
+grep 'Makefile.am:2:.*x_SOURCES' stderr
diff --git a/t/stamph2.sh b/t/stamph2.sh
new file mode 100755 (executable)
index 0000000..59a373a
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure stamp-h* files are created where we expect
+. ./defs || Exit 1
+
+cat >> configure.ac << END
+AM_CONFIG_HEADER([1.h
+                  2.h:config.hin
+                  3.h:sdir1/config1.hin])
+# AM_CONFIG_HEADER and AC_CONFIG_HEADERS should be synonyms.
+AC_CONFIG_HEADERS([sdir1/4.h
+                   sdir1/5.h:config.hin
+                   sdir1/6.h:sdir1/config1.hin
+                   sdir1/7.h:sdir2/config2.hin])
+AC_OUTPUT
+END
+
+: > Makefile.am
+mkdir sdir1
+mkdir sdir2
+: > config.hin
+: > 1.h.in
+: > sdir1/4.h.in
+: > sdir1/config1.hin
+: > sdir2/config2.hin
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+test -f stamp-h1
+test -f stamp-h2
+test -f stamp-h3
+test -f sdir1/stamp-h4
+test -f sdir1/stamp-h5
+test -f sdir1/stamp-h6
+test -f sdir1/stamp-h7
+
+# Make sure './config.status foo' creates the right stamp file.
+# Report from Sander Niemeijer.
+
+rm -f stamp-h*
+rm -f sdir1/stamp-h*
+
+./config.status sdir1/7.h 2.h sdir1/4.h
+test ! -f stamp-h1
+test -f stamp-h2
+test ! -f stamp-h3
+test -f sdir1/stamp-h4
+test ! -f sdir1/stamp-h5
+test ! -f sdir1/stamp-h6
+test -f sdir1/stamp-h7
+
+:
diff --git a/t/stdinc.sh b/t/stdinc.sh
new file mode 100755 (executable)
index 0000000..ec99483
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure the standard include order is stable.
+# Report by Kent Boortz.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_CONFIG_HEADERS([sub/config.h])
+AC_CONFIG_FILES([sub/bar.h])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+BUILT_SOURCES = bar.h
+END
+
+mkdir sub
+
+cat >foo.c <<'END'
+#include <config.h>
+#include <bar.h>
+int main() { return bar (); }
+END
+cat >bar.h <<'END'
+int bar () { return 0; }
+END
+cat >sub/bar.h.in <<'END'
+choke me
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE
+
+mkdir build
+cd build
+../configure -C
+$MAKE
+
+cd ..
+./configure -C
+$MAKE
diff --git a/t/stdlib.sh b/t/stdlib.sh
new file mode 100755 (executable)
index 0000000..1594707
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test "not a standard library" error.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = sub/foo
+include $(srcdir)/foo.mk
+END
+
+cat > foo.mk << 'END'
+## A dummy automake comment.
+a = x \
+    y
+# A dummy make comment.
+lib_LIBRARIES = zardoz.a
+END
+
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+q="[\`'\"]"
+badname='not a standard library name'
+# We're specifically testing for line-number information.
+grep "^Makefile\\.am:1:.*${q}sub/foo${q}.*$badname" stderr
+grep "^Makefile\\.am:1:.*sub/libfoo\\.a" stderr
+grep "^foo\\.mk:5:.*${q}zardoz\\.a${q}.*$badname" stderr
+grep "^foo\\.mk:5:.*libzardoz\\.a" stderr
+
+:
diff --git a/t/stdlib2.sh b/t/stdlib2.sh
new file mode 100755 (executable)
index 0000000..ce5158f
--- /dev/null
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for AM_LDFLAGS = -module
+# Report from Kevin P. Fleming.
+required=libtool
+. ./defs || Exit 1
+
+: > README
+: > NEWS
+: > AUTHORS
+: > ChangeLog
+: > ltconfig
+: > ltmain.sh
+: > config.guess
+: > config.sub
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+: > Makefile.inc
+
+cat > Makefile.am << 'END'
+include Makefile.inc
+lib_LTLIBRARIES = nonstandard.la
+nonstandard_la_SOURCES = foo.c
+FOO = -module
+END
+
+$ACLOCAL
+AUTOMAKE_fails --add-missing --gnu
+grep 'Makefile.am:2:.*nonstandard.la.*standard libtool library name' stderr
+grep 'Makefile.am:2:.*libnonstandard.la' stderr
+
+# We will use -Wno-gnu to disable the warning about setting LDFLAGS (below)
+# Make sure nonstandard names are diagnosed anyway.
+AUTOMAKE_fails --add-missing --gnu -Wno-gnu
+grep 'Makefile.am:2:.*nonstandard.la.*standard libtool library name' stderr
+grep 'Makefile.am:2:.*libnonstandard.la' stderr
+
+# Make sure nonstandard_la_LDFLAGS is read even if LDFLAGS is used.
+cat >Makefile.inc <<'EOF'
+LDFLAGS = -lfoo
+nonstandard_la_LDFLAGS = $(FOO)
+EOF
+$AUTOMAKE -Wno-gnu
+
+# Make sure LDFLAGS is read even if nonstandard_la_LDFLAGS is used.
+cat >Makefile.inc <<'EOF'
+LDFLAGS = $(FOO)
+nonstandard_la_LDFLAGS = -lfoo
+EOF
+$AUTOMAKE -Wno-gnu
+
+# Make sure AM_LDFLAGS is not read if foo_LDFLAGS is used.
+cat >Makefile.inc <<'EOF'
+nonstandard_la_LDFLAGS = -lfoo
+AM_LDFLAGS = -module
+EOF
+AUTOMAKE_fails
+grep 'Makefile.am:2:.*nonstandard.la.*standard libtool library name' stderr
+grep 'Makefile.am:2:.*libnonstandard.la' stderr
+
+echo 'AM_LDFLAGS = -module' > Makefile.inc
+$AUTOMAKE
+
+# For module, Automake should not suggest the lib prefix.
+cat > Makefile.am << 'END'
+include Makefile.inc
+lib_LTLIBRARIES = nonstandard
+nonstandard_SOURCES = foo.c
+FOO = -module
+END
+
+AUTOMAKE_fails
+grep "Makefile.am:2:.*'nonstandard'.*standard libtool module name" stderr
+grep 'Makefile.am:2:.*nonstandard.la' stderr
diff --git a/t/strictness-override.sh b/t/strictness-override.sh
new file mode 100755 (executable)
index 0000000..8c365f0
--- /dev/null
@@ -0,0 +1,123 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The strictness specified in Makefile.am:AUTOMAKE_OPTIONS should
+# override that specified in configure.ac:AM_INIT_AUTOMAKE, and both
+# should override the strictness specified on the command line.
+# NOTE: the current semantics might not be the best one (even if it has
+# been in place for quite a long time); see also Automake bug #7673.
+# Update this test if the semantics are changed.
+
+. ./defs || Exit 1
+
+# We want complete control over automake options.
+AUTOMAKE=$am_original_AUTOMAKE
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS =
+END
+
+set_strictness ()
+{
+  set +x
+  sed <$2 >$2-t -e "s|^\\(AUTOMAKE_OPTIONS\\) *=.*|\\1 = $1|" \
+                -e "s|^\\(AM_INIT_AUTOMAKE\\).*|\\1([$1])|"
+  mv -f $2-t $2
+  set -x
+  cat $2
+}
+
+ok ()
+{
+  $AUTOMAKE -Werror $*
+}
+
+ko ()
+{
+  AUTOMAKE_fails $*
+  grep 'required file.*README' stderr
+}
+
+$ACLOCAL
+
+# Leave out only one of the required files, to avoid too much
+# repetition in the error messages.
+touch INSTALL NEWS AUTHORS ChangeLog COPYING
+
+rm -rf autom4te*.cache
+set_strictness '' Makefile.am
+set_strictness '' configure.ac
+ko --gnu
+ko
+ok --foreign
+
+rm -rf autom4te*.cache
+set_strictness 'gnu' Makefile.am
+set_strictness '' configure.ac
+ko --gnu
+ko
+ko --foreign
+
+rm -rf autom4te*.cache
+set_strictness '' Makefile.am
+set_strictness 'gnu' configure.ac
+ko --gnu
+ko
+ko --foreign
+
+rm -rf autom4te*.cache
+set_strictness 'foreign' Makefile.am
+set_strictness '' configure.ac
+ok --gnu
+ok
+ok --foreign
+
+rm -rf autom4te*.cache
+set_strictness '' Makefile.am
+set_strictness 'foreign' configure.ac
+ok --gnu
+ok
+ok --foreign
+
+rm -rf autom4te*.cache
+set_strictness 'gnu' Makefile.am
+set_strictness 'gnu' configure.ac
+ko --gnu
+ko
+ko --foreign
+
+rm -rf autom4te*.cache
+set_strictness 'foreign' Makefile.am
+set_strictness 'foreign' configure.ac
+ok --gnu
+ok
+ok --foreign
+
+rm -rf autom4te*.cache
+set_strictness 'foreign' Makefile.am
+set_strictness 'gnu' configure.ac
+ok --gnu
+ok
+ok --foreign
+
+rm -rf autom4te*.cache
+set_strictness 'gnu' Makefile.am
+set_strictness 'foreign' configure.ac
+ko --gnu
+ko
+ko --foreign
+
+:
diff --git a/t/strictness-precedence.sh b/t/strictness-precedence.sh
new file mode 100755 (executable)
index 0000000..6f5a143
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# On the command line, in AM_INIT_AUTOMAKE, and in AUTOMAKE_OPTIONS,
+# strictness specified later should take precedence over strictness
+# specified earlier.
+
+. ./defs || Exit 1
+
+# We want complete control over automake options.
+AUTOMAKE=$am_original_AUTOMAKE
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS =
+END
+
+set_strictness ()
+{
+  set +x
+  sed <$2 >$2-t -e "s|^\\(AUTOMAKE_OPTIONS\\) *=.*|\\1 = $1|" \
+                -e "s|^\\(AM_INIT_AUTOMAKE\\).*|\\1([$1])|"
+  mv -f $2-t $2
+  set -x
+  cat $2
+}
+
+ok ()
+{
+  $AUTOMAKE -Werror $*
+}
+
+ko ()
+{
+  AUTOMAKE_fails $*
+  grep 'required file.*README' stderr
+}
+
+# Leave out only one of the required files, to avoid too much
+# repetition in the error messages.
+touch INSTALL NEWS AUTHORS ChangeLog COPYING
+
+$ACLOCAL
+ko --foreign --gnu
+ok --gnu --foreign
+
+set_strictness '' Makefile.am
+set_strictness 'gnu foreign' configure.ac
+rm -rf autom4te*.cache
+$ACLOCAL
+ok
+set_strictness 'foreign gnu' configure.ac
+rm -rf autom4te*.cache
+$ACLOCAL
+ko
+
+set_strictness '' configure.ac
+rm -rf autom4te*.cache
+$ACLOCAL
+set_strictness 'gnu foreign' Makefile.am
+ok
+set_strictness 'foreign gnu' Makefile.am
+ko
+
+:
diff --git a/t/strip.sh b/t/strip.sh
new file mode 100755 (executable)
index 0000000..dfefcd9
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for install-strip.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_SCRIPTS = foo
+END
+
+cat > foo << 'END'
+#! /bin/sh
+echo Maude
+END
+
+chmod +x foo
+
+mkdir install
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+prefix=`cd install && pwd` || Exit 1
+./configure --prefix="$prefix"
+$MAKE
+$MAKE install-strip
+diff foo "$prefix"/bin/foo
+
+:
diff --git a/t/strip2.sh b/t/strip2.sh
new file mode 100755 (executable)
index 0000000..49a5c06
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure install-strip works when STRIP consists of more than one word.
+# This test needs GNU binutils strip.  See sister test strip3.
+
+required='cc strip'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+lib_LIBRARIES = libfoo.a
+END
+
+cat > foo.c << 'END'
+int main () { return 0; }
+END
+
+cat > libfoo.c << 'END'
+int foo () { return 0; }
+END
+
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+prefix=`pwd`/inst
+./configure --prefix="$prefix" STRIP='strip --verbose'
+$MAKE
+$MAKE install-strip
+
+:
diff --git a/t/strip3.sh b/t/strip3.sh
new file mode 100755 (executable)
index 0000000..187e8a5
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Ensure install-strip works when STRIP consists of more than one word.
+# This test needs GNU binutils strip.  Libtool variant.
+
+required='cc libtoolize strip'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+lib_LTLIBRARIES = libfoo.la
+END
+
+cat > foo.c << 'END'
+int main () { return 0; }
+END
+
+cat > libfoo.c << 'END'
+int foo () { return 0; }
+END
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+prefix=`pwd`/inst
+./configure --prefix="$prefix" STRIP='strip --verbose'
+$MAKE
+$MAKE install-strip
+
+:
diff --git a/t/subcond.sh b/t/subcond.sh
new file mode 100755 (executable)
index 0000000..c09e5ad
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# It is ok to have a conditional SUBDIRS when using gettext.
+
+required=gettext
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_GNU_GETTEXT
+AM_CONDITIONAL(MAUDE, true)
+ALL_LINGUAS=
+AC_SUBST(ALL_LINGUAS)
+END
+
+mkdir po intl
+: >config.rpath
+
+cat > Makefile.am << 'END'
+if MAUDE
+SUBDIRS = po intl
+else
+SUBDIRS =
+endif
+END
+
+$ACLOCAL
+# Gettext wants config.guess etc.
+$AUTOMAKE --add-missing
diff --git a/t/subcond2.sh b/t/subcond2.sh
new file mode 100755 (executable)
index 0000000..0e9f451
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The for conditional SUBDIRS.
+# SUBDIRS + AM_CONDITIONAL setup from the manual.
+# Lots of lines here are duplicated in subcond3.test.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
+AC_CONFIG_FILES([src/Makefile opt/Makefile])
+AC_OUTPUT
+END
+
+cat >Makefile.am << 'END'
+if COND_OPT
+  MAYBE_OPT = opt
+endif
+SUBDIRS = src $(MAYBE_OPT)
+
+# Testing targets.
+#
+# We want to ensure that
+#      - src/source and opt/source are always distributed.
+#      - src/result is always built
+#      - opt/result is built conditionally
+#
+# We rely on 'distcheck' to run 'check-local' and use
+# 'sanity1' and 'sanity2' as evidences that test-build was run.
+
+if COND_OPT
+test-build: all
+       test -f src/result
+       test -f opt/result
+       : > $(top_builddir)/../../sanity2
+else
+test-build: all
+       test -f src/result
+       test ! -f opt/result
+       : > $(top_builddir)/../../sanity1
+endif
+
+test-dist: distdir
+       test -f $(distdir)/src/source
+       test -f $(distdir)/opt/source
+
+check-local: test-build test-dist
+END
+
+mkdir src opt
+: > src/source
+: > opt/source
+
+cat >src/Makefile.am << 'END'
+EXTRA_DIST = source
+all-local: result
+CLEANFILES = result
+
+result: source
+       cp $(srcdir)/source result
+END
+
+# We want in opt/ the same Makefile as in src/.  Let's exercise 'include'.
+cat >opt/Makefile.am << 'END'
+include ../src/Makefile.am
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE distcheck
+test -f sanity1
+DISTCHECK_CONFIGURE_FLAGS=want_opt=yes $MAKE distcheck
+test -f sanity2
diff --git a/t/subcond3.sh b/t/subcond3.sh
new file mode 100755 (executable)
index 0000000..e84aa41
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The for conditional SUBDIRS.
+# SUBDIRS + AC_SUBST setup from the manual.
+# Lots of lines here are duplicated in subcond2.test.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+if test "$want_opt" = yes; then
+  MAYBE_OPT=opt
+else
+  MAYBE_OPT=
+fi
+AC_SUBST([MAYBE_OPT])
+AC_CONFIG_FILES([src/Makefile opt/Makefile])
+AC_OUTPUT
+END
+
+cat >Makefile.am << 'END'
+SUBDIRS = src $(MAYBE_OPT)
+DIST_SUBDIRS = src opt
+
+# Testing targets.
+#
+# We want to ensure that
+#      - src/source and opt/source are always distributed.
+#      - src/result is always built
+#      - opt/result is built conditionally
+#
+# We rely on 'distcheck' to run 'check-local' and use
+# 'sanity1' and 'sanity2' as evidences that test-build was run.
+
+test-build: all
+       test -f src/result
+       if test -n "$(MAYBE_OPT)"; then \
+          test -f opt/result || exit 1; \
+          : > $(top_builddir)/../../sanity2 || exit 1; \
+       else \
+          test ! -f opt/result || exit 1; \
+          : > $(top_builddir)/../../sanity1 || exit 1; \
+       fi
+
+test-dist: distdir
+       test -f $(distdir)/src/source
+       test -f $(distdir)/opt/source
+
+check-local: test-build test-dist
+END
+
+mkdir src opt
+: > src/source
+: > opt/source
+
+cat >src/Makefile.am << 'END'
+EXTRA_DIST = source
+all-local: result
+CLEANFILES = result
+
+result: source
+       cp $(srcdir)/source result
+END
+
+# We want in opt/ the same Makefile as in src/.  Let's exercise 'include'.
+cat >opt/Makefile.am << 'END'
+include ../src/Makefile.am
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure
+$MAKE distcheck
+test -f sanity1
+DISTCHECK_CONFIGURE_FLAGS=want_opt=yes $MAKE distcheck
+test -f sanity2
diff --git a/t/subdir.sh b/t/subdir.sh
new file mode 100755 (executable)
index 0000000..34b6ece
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure install-sh and mkinstalldirs correctly found in
+# subdirs.
+
+. ./defs || Exit 1
+
+mkdir zot
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([zot/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = zot
+END
+
+cat > zot/Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/subdir10.sh b/t/subdir10.sh
new file mode 100755 (executable)
index 0000000..4ba791a
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# SUDBIRS with $fail set in the environment.
+
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >> configure.ac <<'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+echo SUBDIRS = sub >Makefile.am
+: > sub/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+env fail=1 $MAKE all clean
+
+:
diff --git a/t/subdir2.sh b/t/subdir2.sh
new file mode 100755 (executable)
index 0000000..31e3c61
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure sub-sub-dirs work correctly.
+
+. ./defs || Exit 1
+
+mkdir one
+mkdir one/two
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([one/Makefile one/two/Makefile])
+AC_OUTPUT
+END
+
+# Files required because we are using '--gnu'.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+
+cat > Makefile.am << 'END'
+SUBDIRS = one
+END
+
+cat > one/Makefile.am << 'END'
+SUBDIRS = two
+END
+
+cat > one/two/Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+$ACLOCAL
+$AUTOMAKE --gnu
+
+:
diff --git a/t/subdir3.sh b/t/subdir3.sh
new file mode 100755 (executable)
index 0000000..d9b160f
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure subdir source file generates explicit dependency.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz widdershins
+zardoz_SOURCES = y.c x/z.c
+widdershins_SOURCES = x/z.c
+END
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^z\.o: x/z\.c$' Makefile.in
+
+:
diff --git a/t/subdir4.sh b/t/subdir4.sh
new file mode 100755 (executable)
index 0000000..81528b2
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure a top-level depcomp file is found when
+# AC_CONFIG_AUX_DIR is not specified.
+
+. ./defs || Exit 1
+
+mkdir lib src
+
+cat >> configure.ac << 'END'
+AC_PROG_RANLIB
+AC_PROG_CC
+AM_PROG_AR
+AC_CONFIG_FILES([lib/Makefile src/Makefile])
+AC_OUTPUT
+END
+
+# Files required because we are using '--gnu'.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+
+cat > Makefile.am << 'END'
+SUBDIRS = lib src
+END
+
+cat > lib/Makefile.am << 'END'
+pkgdata_DATA =
+noinst_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+END
+
+cat > lib/foo.c << 'END'
+int foo () {}
+END
+
+cat > src/Makefile.am << 'END'
+pkgdata_DATA =
+END
+
+: > ar-lib
+
+$ACLOCAL
+$AUTOMAKE --gnu
+
+# Make sure that depcomp is *not* included in the definition
+# of DIST_COMMON in lib/Makefile.in.  If you change this test
+# so that more files are included in lib's DIST_COMMON definition,
+# then you must handle the case in which depcomp is listed on a
+# continued line.
+grep '^DIST_COMMON.*depcomp' lib/Makefile.in && Exit 1
+
+:
diff --git a/t/subdir5.sh b/t/subdir5.sh
new file mode 100755 (executable)
index 0000000..a74c746
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that adding a new directory works.
+# This test runs 'make' from the top-level directory, the sister test
+# 'subdir8.test' do it from a subdirectory.
+# PR automake/46
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
+
+# Now add new directories.
+
+# First we add a new directory by modifying configure.ac directly.
+# We update configure.ac *before* updating sub/Makefile.am; subdir8.test
+# does it in the other way: it updates confiles.m4 (which is m4_included
+# by configure.ac there) after Makefile.am.
+
+# Modified configure dependencies must be newer than config.status.
+$sleep
+sed <configure.ac >configure.tmp -e '/^AC_OUTPUT$/i\
+AC_CONFIG_FILES([maude/Makefile])\
+m4_include([confile.m4])\
+' # Last newline required by older OpenBSD sed.
+mv -f configure.tmp configure.ac
+
+cat configure.ac # For debugging.
+
+: > confile.m4
+
+mkdir maude
+
+cat > maude/Makefile.am << 'END'
+include_HEADERS = foo.h
+END
+
+: > maude/foo.h
+
+echo 'SUBDIRS = maude' >> Makefile.am
+
+# We want a simple rebuild to create maude/Makefile automatically.
+$MAKE
+grep '^SUBDIRS = *maude *$' Makefile.in
+grep '^SUBDIRS = *maude *$' Makefile
+test -f maude/Makefile
+
+# Then we add a new directory by modifying a file included (through
+# 'm4_include') by configure.ac.
+mkdir maude2
+# Modified configure dependencies must be newer than config.status.
+$sleep
+cat >> confile.m4 << 'END'
+AC_CONFIG_FILES([maude2/Makefile])
+AC_SUBST([GREPME])
+END
+: > maude2/Makefile.am
+echo 'SUBDIRS += maude2' >> Makefile.am
+
+# We want a simple rebuild to create maude2/Makefile and update
+# all other Makefiles automatically.
+$MAKE
+grep '^SUBDIRS =.* maude2' Makefile.in
+grep '^SUBDIRS =.* maude2' Makefile
+
+for ext in '.in' ''; do
+  for d in . maude maude2; do
+    grep '^GREPME =' $d/Makefile$ext
+  done
+done
+
+:
diff --git a/t/subdir6.sh b/t/subdir6.sh
new file mode 100755 (executable)
index 0000000..5c17b65
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure config headers in subdirectories are cleaned.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONFIG_HEADER([sub/config.h:sub/config.hin])
+AC_OUTPUT
+END
+
+touch Makefile.am
+mkdir sub
+
+$ACLOCAL
+$AUTOCONF
+touch sub/config.hin
+$AUTOMAKE
+./configure
+test -f sub/stamp-h1
+$MAKE clean
+test -f sub/stamp-h1
+$MAKE distclean
+test -f sub/stamp-h1 && Exit 1
+
+:
diff --git a/t/subdir7.sh b/t/subdir7.sh
new file mode 100755 (executable)
index 0000000..a2c47a1
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Naming a subdirectory 'obj/' is a bad idea.  Automake should say so.
+
+. ./defs || Exit 1
+
+mkdir obj
+
+cat >>configure.ac << 'END'
+AC_CONFIG_FILES([obj/Makefile])
+AC_OUTPUT
+END
+
+: > obj/Makefile.am
+echo 'SUBDIRS = obj' >Makefile.am
+
+$ACLOCAL
+
+AUTOMAKE_fails
+grep 'Makefile.am:1:.*obj.*BSD' stderr
+
+cat >Makefile.am <<'END'
+SUBDIRS = @STH@
+FOO = obj
+DIST_SUBDIRS = $(FOO)
+END
+
+AUTOMAKE_fails
+grep 'Makefile.am:2:.*obj.*BSD' stderr
+
+:
diff --git a/t/subdir8.sh b/t/subdir8.sh
new file mode 100755 (executable)
index 0000000..ee9e0b0
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that adding a new directory works, even from
+# subdirectories.  The sister test 'subdir5.test' makes sure it works
+# when make is run from the top-level directory.
+# PR automake/46
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+m4_include([confiles.m4])
+MORE_DEFS
+AC_OUTPUT
+END
+
+echo 'AC_CONFIG_FILES([sub/Makefile])' > confiles.m4
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+ACLOCAL_AMFLAGS = -I m4
+END
+
+mkdir sub
+
+: > sub/Makefile.am
+
+mkdir m4
+echo 'AC_DEFUN([MORE_DEFS], [])' > m4/moredefs.m4
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
+
+# Now add new directories.
+
+# The first step users typically do when adding a new subdir is
+# editing configure.ac.  That is already tested by subdir5.test,
+# though, so here we try to just edit a file that is included by
+# configure.ac, without touching configure.ac itself.
+
+mkdir sub/maude
+cat > sub/maude/Makefile.am << 'END'
+include_HEADERS = foo.h
+END
+
+: > sub/maude/foo.h
+
+echo 'SUBDIRS = maude' >> sub/Makefile.am
+
+mkdir maude
+: > maude/Makefile.am
+
+# Update confiles.m4 *after* updating sub/Makefile.am; subdir5.test do
+# it in the other way: it updates configure.ac before Makefile.am.
+# We sleep here because modified configure dependencies must be newer
+# than config.status.
+$sleep
+echo 'AC_CONFIG_FILES([maude/Makefile sub/maude/Makefile])' >> confiles.m4
+
+# We want a simple rebuild from sub/ to create sub/maude/Makefile
+# and maude/Makefile automatically.
+cd sub
+$MAKE
+cd ..
+grep '^SUBDIRS = *maude *$' sub/Makefile.in
+grep '^SUBDIRS = *maude *$' sub/Makefile
+test -f maude/Makefile
+test -f sub/maude/Makefile
+
+# Make sure the dependencies of aclocal.m4 or honored at least from
+# the top-level directory.
+echo 'AC_DEFUN([MORE_DEFS], [AC_SUBST([GREPME])])' > m4/moredefs.m4
+$MAKE
+
+for ext in '.in' ''; do
+  for d in . maude sub sub/maude; do
+    grep '^GREPME =' $d/Makefile$ext
+  done
+done
+
+:
diff --git a/t/subdir9.sh b/t/subdir9.sh
new file mode 100755 (executable)
index 0000000..116e1c3
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test SUDBIRS with /.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([src/subdir/Makefile src/subdir2/Makefile])
+AC_OUTPUT
+END
+
+echo SUBDIRS = src/subdir >Makefile.am
+
+mkdir src
+mkdir src/subdir
+mkdir src/subdir2
+
+: >src/subdir/foo
+: >src/subdir2/foo
+
+cat >src/subdir/Makefile.am <<'EOF'
+EXTRA_DIST = foo
+SUBDIRS = ../subdir2
+EOF
+
+cat >src/subdir2/Makefile.am <<'EOF'
+EXTRA_DIST = foo
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+./configure
+$MAKE distdir
+test -f $distdir/src/subdir/foo
+test -f $distdir/src/subdir2/foo
+$MAKE clean
+$MAKE distclean
+test ! -f src/subdir2/Makefile
+
+:
diff --git a/t/subdirbuiltsources.sh b/t/subdirbuiltsources.sh
new file mode 100755 (executable)
index 0000000..2f50708
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure when using SUBDIR that all BUILT_SOURCES are built.
+# A bug occurred where subdirs do not have all-recursive or
+# all-recursive-am which depended on BUILT_SOURCES.
+
+required=cc
+. ./defs || Exit 1
+
+mkdir lib
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([lib/Makefile])
+AC_PROG_RANLIB
+AC_PROG_CC
+AM_PROG_AR
+AC_OUTPUT
+END
+
+# Files required because we are using '--gnu'.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+
+cat > Makefile.am << 'END'
+SUBDIRS = lib
+END
+
+cat > lib/Makefile.am << 'END'
+pkgdata_DATA =
+noinst_LIBRARIES = libfoo.a
+libfoo_a_SOURCES = foo.c
+BUILT_SOURCES=foo.h
+foo.h:
+       echo \#define FOO_DEFINE 1 >$@
+END
+
+cat > lib/foo.c << 'END'
+#include <foo.h>
+int foo () { return !FOO_DEFINE;}
+END
+
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --include-deps --copy --force-missing --add-missing --gnu
+
+./configure
+
+# Remove the comment to get a successful test.
+# $MAKE -C lib foo.h
+$MAKE
+
+:
diff --git a/t/subobj.sh b/t/subobj.sh
new file mode 100755 (executable)
index 0000000..b7f6597
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of subdir objects with C.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = wish
+wish_SOURCES = generic/a.c generic/b.c
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+# Make sure compile is installed, and that Automake says so.
+grep 'install.*compile' stderr
+test -f compile
+
+grep '^generic/a\.\$(OBJEXT):' Makefile.in
+grep '[^/]a\.\$(OBJEXT)' Makefile.in && Exit 1
+
+# Opportunistically test for a different bug.
+grep '^generic/b\.\$(OBJEXT):.*dirstamp' Makefile.in
+
+:
diff --git a/t/subobj10.sh b/t/subobj10.sh
new file mode 100755 (executable)
index 0000000..db6bf72
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# PR 492: Test asm subdir-objects.
+
+required=gcc
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([subdir-objects])
+
+AM_PROG_AS
+AM_PROG_AR
+AC_PROG_RANLIB
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libfoo.a libbar.a
+libfoo_a_SOURCES = src/a.s b.s
+libbar_a_SOURCES = src/c.s d.s
+libbar_a_CCASFLAGS =
+END
+
+mkdir src
+: >src/a.s
+: >b.s
+: >src/c.s
+: >d.s
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+$MAKE distcheck
+
+:
diff --git a/t/subobj11a.sh b/t/subobj11a.sh
new file mode 100755 (executable)
index 0000000..461325a
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that automake works around a bug of Solaris Make. The bug is the
+# following.  If we have a Makefile containg a file inclusion like this:
+#   include .//foo.mk
+# Solaris make fails with a message like:
+#   make: ... can't find '/foo.mk': No such file or directory
+#   make: fatal error ... read of include file '/foo.mk' failed
+# (even if the file 'foo.mk' exists). The error disappear by collapsing
+# the repeated slash '/' characters into a single one.
+#
+# See also sister "grepping" test 'subobj11b.test', and related test
+# 'subobj11c.test'.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = foo
+## The './/' below is meant.
+foo_SOURCES = .//src/foo.c
+END
+
+mkdir src
+
+cat > src/foo.c << 'END'
+int main(void)
+{
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure --enable-dependency-tracking
+
+depdir=`sed -n 's/^ *DEPDIR *= *//p' Makefile`
+if test x"$depdir" != x; then
+  depdir=src/$depdir
+else
+  echo "$me: cannot extract value of DEPDIR from Makefile" >&2
+  Exit 1
+fi
+
+ls -l "$depdir"
+test -f "$depdir"/foo.Po
+
+echo 'quux:; echo "z@rd@z" >$@' >> "$depdir"/foo.Po
+
+$MAKE quux
+$FGREP "z@rd@z" quux
+
+$MAKE
+
+DISTCHECK_CONFIGURE_FLAGS='--enable-dependency-tracking' $MAKE distcheck
+DISTCHECK_CONFIGURE_FLAGS='--disable-dependency-tracking' $MAKE distcheck
+
+:
diff --git a/t/subobj11b.sh b/t/subobj11b.sh
new file mode 100755 (executable)
index 0000000..129b6ea
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that automake works around a bug of Solaris Make. The bug is the
+# following.  If we have a Makefile containg a file inclusion like this:
+#   include .//foo.mk
+# Solaris make fails with a message like:
+#   make: ... can't find '/foo.mk': No such file or directory
+#   make: fatal error ... read of include file '/foo.mk' failed
+# (even if the file 'foo.mk' exists). The error disappear by collapsing
+# the repeated slash '/' characters into a single one.
+#
+# See also "semantic" sister test 'subobj11a.test', and related test
+# 'subobj11c.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = foo
+## The 'zardoz' sources should activate a code paths in Automake that
+## cannot be sensibly tested by sister test 'subobj11a.test'.  The other
+## sources provide some sort of stress testing.
+foo_SOURCES = \
+  //server/zardoz0.c \
+  //server//zardoz1.c \
+  //server/path/to/zardoz2.c \
+  //server/another//path///to////zardoz3.c \
+  /foobar0.c \
+  ///foobar1.c \
+  ////foobar2.c \
+  /sub///foobar3.c \
+  ///sub/foobar4.c \
+  .//foobar5.c \
+  .//sub/foobar6.c \
+  ./sub//foobar7.c \
+  .//sub//foobar8.c \
+  sub/sub//sub///sub////foobar9.c
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+# Be lax in the regexp, to account for automake conditionals, the
+# use of @am__include@, and similar stuff.
+grep 'include.*//.*foobar' Makefile.in && Exit 1
+
+# These checks depend on automake internals, but presently this is
+# the only way to test the code path we are interested in.
+# Please update these checks when (and if) the relevant automake
+# internals are changed.
+for x in zardoz0 zardoz1 path/to/zardoz2 another/path/to/zardoz3; do
+  case $x in
+   */*) d=`echo $x | sed 's,[^/]*$,,'`; b=`echo $x | sed 's,^.*/,,'`;;
+     *) d=''; b=$x;;
+  esac
+  # Be a little lax in the regexp, to account for automake conditionals,
+  # quoting, and similar stuff.
+  grep "^[^/]*am__include[^/]*//server/$d\\\$(DEPDIR)/$b\\.[^/]*$" Makefile.in
+done
+
+# Sanity checks.
+for i in 0 1 2 3 4 5 6 7 8 9; do
+  grep "am__include.*/foobar$i\\." Makefile.in
+done
+
+:
diff --git a/t/subobj11c.sh b/t/subobj11c.sh
new file mode 100755 (executable)
index 0000000..9f59c5f
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Automatic dependency tracking with subdir-objects option active:
+# check for a pathological case of slash-collapsing in the name of
+# included makefile fragments (containing dependency info).
+# See also related tests 'subobj11a.test' and 'subobj11b.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = foo
+foo_SOURCES = //zardoz.c
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+#
+# This check depends on automake internals, but presently this is
+# the only way to test the code path we are interested in.
+# Please update these checks when (and if) the relevant automake
+# internals are changed.
+#
+# Be a little lax in the regexp, to account for automake conditionals,
+# quoting, and similar stuff.
+#
+# FIXME: Are we sure this is the most sensible output in our situation?
+#
+grep '^[^/]*am__include[^/]*//\$(DEPDIR)/zardoz\.[^/]*$' Makefile.in
+
+:
diff --git a/t/subobj2.sh b/t/subobj2.sh
new file mode 100755 (executable)
index 0000000..3a3f861
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of subdir objects with C++.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = wish
+wish_SOURCES = generic/a.cc generic/b.cxx
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP 'generic/a.$(OBJEXT)' Makefile.in
+grep '[^/]a\.\$(OBJEXT)' Makefile.in && Exit 1
+grep '.*-c -o' Makefile.in
+
+:
diff --git a/t/subobj4.sh b/t/subobj4.sh
new file mode 100755 (executable)
index 0000000..975f8fb
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure '../foo/foo.cpp' generates a rule.
+# Report from Dave Brolley.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_CXX
+AC_CONFIG_FILES([d1/Makefile d2/Makefile])
+AC_OUTPUT
+END
+
+mkdir d1 d2
+
+cat > Makefile.am << 'END'
+SUBDIRS = d1 d2
+END
+
+cat > d1/Makefile.am << 'END'
+bin_PROGRAMS = z
+z_SOURCES = ../d2/z.c
+END
+
+cat > d2/Makefile.am << 'END'
+END
+
+: > compile
+: > d2/z.c
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '\$(CC) .*\.\./d2/z\.c' d1/Makefile.in
+
+:
diff --git a/t/subobj5.sh b/t/subobj5.sh
new file mode 100755 (executable)
index 0000000..3b05b6a
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of subdir make dist rules.
+# From Robert Collins.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([generic/Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = wish
+wish_SOURCES = generic/a.c
+
+.PHONY: test-distdir test-build
+test-distdir: distdir
+       ls -l $(distdir) $(distdir)/* ;: For debugging.
+       test ! -r $(distdir)/a.c
+       test -f $(distdir)/generic/a.c
+test-build: all
+       ls -l . generic ;: For debugging.
+       test -f generic/a.$(OBJEXT)
+       test -f wish$(EXEEXT)
+       test ! -r a.$(OBJEXT)
+       test ! -r a$(EXEEXT)
+       test ! -r generic/wish$(EXEEXT)
+       test ! -r generic/a$(EXEEXT)
+END
+
+mkdir generic
+: > generic/Makefile.am
+
+cat > generic/a.c << 'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --include-deps --copy --add-missing
+
+./configure
+
+$MAKE test-distdir
+$MAKE dist
+$MAKE test-build
+
+:
diff --git a/t/subobj6.sh b/t/subobj6.sh
new file mode 100755 (executable)
index 0000000..2f902f2
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of subdir make distclean rules.
+# From Robert Collins.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = wish
+wish_SOURCES = generic/a.c
+
+test-all: all
+       test -f generic/$(am__dirstamp)
+test-mostlyclean: mostlyclean
+       test ! -f generic/a.o
+test-distclean: distclean
+       test ! -f generic/$(am__dirstamp)
+END
+
+mkdir generic
+cat > generic/a.c << 'END'
+#include <stdio.h>
+int main ()
+{
+   printf ("maude!\n");
+   return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --include-deps --copy --add-missing
+
+mkdir build
+cd build
+
+../configure
+$MAKE test-all
+$MAKE test-mostlyclean
+$MAKE test-distclean
+
+cd ..
+
+# Now test without the subdir.
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = wish
+wish_SOURCES = a.c
+END
+
+mv generic/a.c a.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --include-deps --copy --add-missing
+
+mkdir build2
+cd build2
+
+../configure
+$MAKE
+$MAKE mostlyclean
+
+:
diff --git a/t/subobj7.sh b/t/subobj7.sh
new file mode 100755 (executable)
index 0000000..863cae0
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure AM_CFLAGS appears in subdir compilation rule.
+# Report from Steve M. Robbins.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = wish
+wish_SOURCES = foo.c generic/a.c
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+grep wish_CFLAGS Makefile.in && Exit 1
+
+:
diff --git a/t/subobj8.sh b/t/subobj8.sh
new file mode 100755 (executable)
index 0000000..35b566f
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'compile' is included when subdir-objects is used in a subdir.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([tools])
+AM_INIT_AUTOMAKE
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_CONFIG_FILES([Makefile foo/Makefile])
+AC_OUTPUT
+END
+
+mkdir tools foo foo/bar
+
+cat > Makefile.am << 'END'
+SUBDIRS = foo
+END
+
+cat > foo/Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = mumble
+mumble_SOURCES = bar/a.c
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+test -f tools/compile
+
+:
diff --git a/t/subobj9.sh b/t/subobj9.sh
new file mode 100755 (executable)
index 0000000..f706edf
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for PR 312.
+#
+# == Report ==
+# When using non-recursive make to build a libtoolize-library from
+# sources in a subdirectory, 'make distcheck' fails because of incomplete
+# cleanup. "make clean" tries to remove '*.o' and '.../<file>.lo' but
+# forgets '.../<file>.o'.
+
+required='c++ libtoolize'
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([subdir-objects])
+AC_PROG_CXX
+AM_PROG_AR
+AM_PROG_LIBTOOL
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = src/foo.cc .//src/bar.cc  # The `.//' is meant.
+.PHONY: print
+print:
+       @echo BEG1: "$(LTCXXCOMPILE)" :1END
+       @echo BEG2: "$(CXXLINK)" :2END
+END
+
+mkdir src
+cat > src/foo.cc << 'END'
+int doit2 (void);
+int doit (void)
+{
+   return doit2();
+}
+END
+
+cat > src/bar.cc << 'END'
+int doit2 (void)
+{
+   return 23;
+}
+END
+
+
+libtoolize --force
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+# Ensure './libtool --help' will use the right tool versions.
+export AUTOCONF AUTOMAKE
+
+# Opportunistically check that --tag=CXX is used when supported.
+if ./libtool --help | grep tag=TAG; then
+  $MAKE print >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  grep 'BEG1: .*--tag=CXX.*--mode=compile.* :1END' stdout
+  grep 'BEG2: .*--tag=CXX.*--mode=link.* :2END' stdout
+fi
+
+$MAKE
+$MAKE distcheck >output 2>&1 || { cat output; Exit 1; }
+cat output
+# GNU Make used to complain that the Makefile contained two rules
+# for 'src/.dirstamp' and './/src/.dirstamp'.
+grep 'overriding commands' output && Exit 1
+
+:
diff --git a/t/subobjname.sh b/t/subobjname.sh
new file mode 100755 (executable)
index 0000000..bef3bf0
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we reuse variables whenever possible, to limit
+# combinational explosion.  (This test is named after the &subobjname
+# sub in Automake).
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_CONDITIONAL([FOO1], [some test])
+AM_CONDITIONAL([FOO2], [some test])
+AM_CONDITIONAL([FOO3], [some test])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = c d
+
+if FOO1
+A1=a1.c
+endif
+
+if FOO2
+A2=a2.c
+endif
+
+if FOO3
+A3=a3.c
+endif
+
+B=$(A1) $(A2) $(A3)
+
+c_SOURCES=$(B)
+d_SOURCES=$(B)
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+# Sanity check: make sure am_c_OBJECTS and am_d_OBJECTS are used
+# in the Makefile.  (This is an internal detail, so better make
+# sure we update this test if the naming changes in the future.)
+grep '^am_c_OBJECTS = ' Makefile.in
+grep '^am_d_OBJECTS = ' Makefile.in
+
+# Now the actual test.  Are both values equal?
+cobj=`sed -n '/^am_c_OBJECTS = / {
+                s/.* = \(.*\)$/\1/
+                p
+              }' Makefile.in`
+dobj=`sed -n '/^am_d_OBJECTS = / {
+                s/^.* = \(.*\)$/\1/
+                p
+              }' Makefile.in`
+test "$cobj" = "$dobj"
+
+:
diff --git a/t/subpkg-yacc.sh b/t/subpkg-yacc.sh
new file mode 100755 (executable)
index 0000000..f1b2ac3
--- /dev/null
@@ -0,0 +1,129 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that ylwrap is installed properly, and $(YLWRAP) us defined
+# properly, when a subpackage is involved.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AC_CONFIG_SUBDIRS([lib])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = lib
+bin_PROGRAMS = MU
+MU_LDADD = lib/liblib.a
+# It's ok to override distdir.
+distdir = subpack-1
+# Remove a file created by rules in subdir lib.
+CLEANFILES = lib-dist-hook-has-run
+EOF
+
+cat >MU.c <<'EOF'
+int lib (void);
+int main (void)
+{
+  return lib ();
+}
+EOF
+
+mkdir lib
+mkdir lib/src
+
+cat >lib/configure.ac <<'EOF'
+AC_INIT([lib], [2.3])
+AM_INIT_AUTOMAKE
+AC_PROG_RANLIB
+AC_PROG_YACC
+dnl This comes after YACC and RANLIB checks, deliberately.
+AC_PROG_CC
+AM_PROG_AR
+AC_CONFIG_HEADERS([config.h:config.hin])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+EOF
+
+cat >lib/Makefile.am <<'EOF'
+noinst_LIBRARIES = liblib.a
+liblib_a_SOURCES = src/x.c foo.y
+EXTRA_liblib_a_SOURCES = bar.y
+
+dist-hook:
+       test -d $(top_distdir)
+       test -d $(distdir)
+       find $(top_distdir) $(distdir) ;: For debugging.
+       test -f $(top_distdir)/MU.c
+       test ! -f $(distdir)/MU.c
+       for suf in y c; do \
+         for name in foo bar; do \
+           test -f $(distdir)/$$name.$$suf || exit 1; \
+           test ! -f $(top_distdir)/$$name.$$suf || exit 1; \
+         done; \
+       done
+       test -f $(distdir)/foo.y
+       test ! -f $(top_distdir)/foo.y
+       test -f $(distdir)/src/x.c
+       test ! -f $(top_distdir)/src/x.c
+       test -f $(YLWRAP)
+       : > $(top_builddir)/../lib-dist-hook-has-run
+EOF
+
+cat > lib/foo.y << 'END'
+%{
+int yylex (void) { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+cp lib/foo.y lib/bar.y
+
+cat >lib/src/x.c <<'EOF'
+#include <config.h>
+int lib (void)
+{
+  return 0;
+}
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -Wno-override
+
+cd lib
+$ACLOCAL
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE -Wno-override --add-missing
+cd ..
+
+./configure
+
+$MAKE dist
+test -f lib-dist-hook-has-run
+test -f subpack-1.tar.gz
+test ! -d subpack-1 # Make sure "dist" cleans up after itself.
+
+rm -f lib-dist-hook-has-run subpack-1.tar.gz
+
+yl_distcheck
+
+:
diff --git a/t/subpkg.sh b/t/subpkg.sh
new file mode 100755 (executable)
index 0000000..82bf338
--- /dev/null
@@ -0,0 +1,113 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check subpackage handling.
+
+required=cc
+. ./defs || Exit 1
+
+mkdir m4
+
+cat >m4/foo.m4 <<'EOF'
+AC_DEFUN([FOO],[
+  AC_PROG_CC
+  AC_OUTPUT
+])
+EOF
+
+cat >>configure.ac <<'END'
+AC_CONFIG_SUBDIRS([lib])
+FOO
+END
+
+cat >Makefile.am <<'EOF'
+SUBDIRS = lib
+# Yes, This program is named LDADD.  So what?
+bin_PROGRAMS = LDADD
+LDADD_LDADD = lib/liblib.a
+
+# It's ok to override distdir.
+distdir = subpack-1
+
+# Make sure $(distdir) and $(top_distdir) work as expected.
+dist-hook:
+       test -f $(distdir)/LDADD.c
+       test -f $(top_distdir)/LDADD.c
+
+ACLOCAL_AMFLAGS = -I m4
+EOF
+
+cat >LDADD.c <<'EOF'
+int lib (void);
+int main (void)
+{
+  return lib ();
+}
+EOF
+
+mkdir lib
+mkdir lib/src
+
+cat >lib/configure.ac <<'EOF'
+AC_INIT([lib], [2.3])
+AM_INIT_AUTOMAKE
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_CONFIG_HEADERS([config.h:config.hin])
+AC_CONFIG_FILES([Makefile])
+FOO
+EOF
+
+cat >lib/Makefile.am <<'EOF'
+noinst_LIBRARIES = liblib.a
+liblib_a_SOURCES = src/x.c
+
+dist-hook:
+       test ! -f $(distdir)/LDADD.c
+       test -f $(top_distdir)/LDADD.c
+       test -f $(distdir)/src/x.c
+       test ! -f $(top_distdir)/src/x.c
+
+ACLOCAL_AMFLAGS = -I ../m4
+EOF
+
+cat >lib/src/x.c <<'EOF'
+#include <config.h>
+int lib (void)
+{
+  return 0;
+}
+EOF
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE -Wno-override
+
+cd lib
+$ACLOCAL -I ../m4
+$FGREP 'm4_include([../m4/foo.m4])' aclocal.m4
+$AUTOCONF
+$AUTOHEADER
+$AUTOMAKE -Wno-override --add-missing
+cd ..
+
+./configure
+$MAKE
+$MAKE distcheck
+test ! -d subpack-1 # Make sure distcheck cleans up after itself.
+test -f subpack-1.tar.gz
+
+:
diff --git a/t/subpkg2.sh b/t/subpkg2.sh
new file mode 100755 (executable)
index 0000000..af89fc1
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Try a DIST_SUBDIRS subpackage with no SUBDIRS.
+# Report from Gary V. Vaughan.
+
+. ./defs || Exit 1
+
+mkdir m4
+
+cat >m4/foo.m4 <<'EOF'
+AC_DEFUN([FOO],[
+  AC_OUTPUT
+])
+EOF
+
+cat >>configure.ac <<'END'
+AC_CONFIG_SUBDIRS([sub])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'EOF'
+DIST_SUBDIRS = sub
+dist-hook:
+       test -f $(distdir)/sub/script.in
+EOF
+
+mkdir sub
+
+cat >sub/configure.ac <<'EOF'
+AC_INIT([sub], [2.3])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([script])
+FOO
+EOF
+
+: >sub/script.in
+echo ACLOCAL_AMFLAGS = -I ../m4 > sub/Makefile.am
+
+$ACLOCAL -I m4
+$AUTOCONF
+$AUTOMAKE
+
+cd sub
+$ACLOCAL -I ../m4
+$FGREP 'm4_include([../m4/foo.m4])' aclocal.m4
+$AUTOCONF
+$AUTOMAKE -Wno-override
+cd ..
+
+./configure
+$MAKE distcheck
diff --git a/t/subpkg3.sh b/t/subpkg3.sh
new file mode 100755 (executable)
index 0000000..38dc455
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure different subpackages may share files and directories.
+
+. ./defs || Exit 1
+
+cat >Makefile.am <<'END'
+SUBDIRS = subpkg
+EXTRA_DIST = subpkg/foobar
+END
+
+cat >>configure.ac <<'END'
+AC_CONFIG_SUBDIRS([subpkg])
+AC_OUTPUT
+END
+
+mkdir subpkg
+
+echo foobar >subpkg/foobar
+
+echo SUBDIRS = >subpkg/Makefile.am
+
+cat >subpkg/configure.ac <<'END'
+AC_INIT([subpkg], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+cd subpkg
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+cd ..
+
+./configure
+$MAKE distcheck
diff --git a/t/subpkg4.sh b/t/subpkg4.sh
new file mode 100755 (executable)
index 0000000..f8e9a2c
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to ensure 'distdir' fixes the mode of files and directories
+# copied into '$(distdir)', even with sub-packages.
+
+. ./defs || Exit 1
+
+cat >Makefile.am <<'END'
+SUBDIRS = subpkg
+test-distdir-is-readable:
+       bad_dirs=`find $(distdir) -type d ! -perm -755 -print`; \
+       if test -n "$$bad_dirs"; then \
+         echo "directories not permissive: $$bad_dirs" >&2; \
+         exit 1; \
+       fi
+       bad_files=`find $(distdir) ! -type d ! -perm -444 -print`; \
+       if test -n "$$bad_files"; then \
+         echo "file not permissive: $$bad_files" >&2; \
+         exit 1; \
+       fi
+END
+
+cat >>configure.ac <<'END'
+AC_CONFIG_SUBDIRS([subpkg])
+AC_OUTPUT
+END
+
+mkdir subpkg subpkg/dir
+echo foobar >subpkg/foobar
+echo baz > subpkg/dir/baz
+
+chmod go-rwx subpkg/foobar subpkg/dir/baz subpkg/dir
+
+cat >subpkg/Makefile.am <<'END'
+EXTRA_DIST = foobar dir
+END
+
+cat >subpkg/configure.ac <<'END'
+AC_INIT([subpkg], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+cd subpkg
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+cd ..
+
+./configure
+$MAKE distdir
+$MAKE test-distdir-is-readable
diff --git a/t/subst-no-trailing-empty-line.sh b/t/subst-no-trailing-empty-line.sh
new file mode 100755 (executable)
index 0000000..2069e3a
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# If the last line of a automake-rewritten definition is made only of
+# @substitutions@, automake should take care of appending an empty
+# variable to make sure that line cannot end up substituted as a blank
+# line (that would confuse HP-UX Make).
+# These checks have been introduced in commit 'Release-1-9-254-g9d0eaef'
+# into the former test 'subst2.test'.
+
+. ./defs || Exit 1
+
+# These are deliberately quite long, so that the xxx_PROGRAMS definition
+# in Makefile.am below will be split on multiple lines, with the last
+# line containing only @substituted@ stuff that expands to empty (this is
+# required to expose the bug we are testing).
+v1=ABCDEFGHIJKLMNOPQRSTUVWX
+v2=ABCDEFGHIJKLMNOPQRSTUVWXY
+v3=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+
+# Literal backslash for use by grep.
+bs='\\'
+
+cat >> configure.ac <<END
+AC_SUBST([A], [''])
+AC_SUBST([$v1], [''])
+AC_SUBST([$v2], [''])
+AC_SUBST([$v3], [''])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<END
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+EXEEXT =
+
+## The "x" and "zardoz" strings and the use of '+=' are there to ensure
+## that these variables get rewritten by Automake.
+noinst_PROGRAMS = x @$v1@ @$v2@ @$v3@
+bin_PROGRAMS = @A@
+bin_PROGRAMS += @$v1@ @$v2@ @$v3@
+check_PROGRAMS = zardoz \$(noinst_PROGRAMS)
+
+## Required whenever there are @substituted@ values in the
+## PROGRAMS primary, otherwise automake will complain.
+EXTRA_PROGRAMS =
+
+print-programs:
+       @echo BEG1: \$(noinst_PROGRAMS) :END1
+       @echo BEG2: \$(bin_PROGRAMS) :END2
+       @echo BEG3: \$(check_PROGRAMS) :END3
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+# For debugging.
+$EGREP -n 'ABCD|am__empty' Makefile.in
+# Sanity check.
+test `$EGREP -c "^[ $tab]*@$v2@ @$v3@[ $tab]*$bs?$" Makefile.in` -eq 3
+
+./configure
+{
+  sed -n '/^noinst_PROGRAMS *=/,/[^\\]$/p' Makefile
+  sed -n '/^bin_PROGRAMS *=/,/[^\\]$/p' Makefile
+  sed -n '/^check_PROGRAMS *=/,/[^\\]$/p' Makefile
+  sed -n '/^am__EXEEXT.*=/,/[^\\]$/p' Makefile
+} >t-programs
+cat t-programs
+grep '^ *$' t-programs && Exit 1
+
+$MAKE print-programs >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^BEG1: x :END1$' stdout
+grep '^BEG2: :END2$' stdout
+grep '^BEG3: zardoz x :END3$' stdout
+
+am__empty=X $MAKE -e print-programs >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^BEG1: x X :END1$' stdout
+grep '^BEG2: X :END2$' stdout
+grep '^BEG3: zardoz x X :END3$' stdout
+
+:
diff --git a/t/subst.sh b/t/subst.sh
new file mode 100755 (executable)
index 0000000..f46f2ed
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that AC_SUBST($1) does something sensible.  From Ulrich
+# Drepper.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+dnl This test used to have the following lines, which cannot have
+dnl worked sensibly with Autoconf for years, however:
+dnl AC_SUBST($1)
+dnl AC_SUBST([$]$1)  dnl this is the actual invocation that was used
+dnl
+AC_DEFUN([FOO],
+[AC_SUBST([$1])])
+FOO([BAR])
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+grep '^\$1' Makefile.in && Exit 1
+
+:
diff --git a/t/subst3.sh b/t/subst3.sh
new file mode 100755 (executable)
index 0000000..cc81063
--- /dev/null
@@ -0,0 +1,177 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test installation with substitutions.  This test is based on nobase.test.
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+if test -n "$doit"; then
+  AC_SUBST([basehdr], [sub/base.h])
+  AC_SUBST([nobasehdr], [sub/nobase.h])
+  AC_SUBST([basedata], [sub/base.dat])
+  AC_SUBST([nobasedata], [sub/nobase.dat])
+  AC_SUBST([basescript], [sub/base.sh])
+  AC_SUBST([nobasescript], [sub/nobase.sh])
+  AC_SUBST([baseprog], ['sub/base$(EXEEXT)'])
+  AC_SUBST([nobaseprog], ['sub/nobase$(EXEEXT)'])
+  AC_SUBST([baselib], [sub/libbase.a])
+  AC_SUBST([nobaselib], [sub/libnobase.a])
+fi
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'EOF'
+foodir = $(prefix)/foo
+fooexecdir = $(prefix)/foo
+
+foo_HEADERS = @basehdr@
+nobase_foo_HEADERS = @nobasehdr@
+EXTRA_HEADERS = sub/base.h sub/nobase.h
+
+dist_foo_DATA = @basedata@
+nobase_dist_foo_DATA = @nobasedata@
+
+dist_fooexec_SCRIPTS = @basescript@
+nobase_dist_fooexec_SCRIPTS = @nobasescript@
+EXTRA_SCRIPTS = sub/base.sh sub/nobase.sh
+
+fooexec_PROGRAMS = @baseprog@
+nobase_fooexec_PROGRAMS = @nobaseprog@
+EXTRA_PROGRAMS = sub/base sub/nobase
+sub_base_SOURCES = source.c
+sub_nobase_SOURCES = source.c
+
+fooexec_LIBRARIES = @baselib@
+nobase_fooexec_LIBRARIES = @nobaselib@
+EXTRA_LIBRARIES = sub/libbase.a sub/libnobase.a
+sub_libbase_a_SOURCES = source.c
+sub_libnobase_a_SOURCES = source.c
+
+test-install-data: install-data
+       test   -f inst/foo/sub/nobase.h
+       test ! -f inst/foo/nobase.h
+       test   -f inst/foo/base.h
+       test   -f inst/foo/sub/nobase.dat
+       test ! -f inst/foo/nobase.dat
+       test   -f inst/foo/base.dat
+       test ! -f inst/foo/sub/pnobase.sh
+       test ! -f inst/foo/pbase.sh
+       test ! -f inst/foo/sub/pnobase$(EXEEXT)
+       test ! -f inst/foo/pbase$(EXEEXT)
+       test ! -f inst/foo/sub/libnobase.a
+       test ! -f inst/foo/libbase.a
+
+test-install-exec: install-exec
+       test   -f inst/foo/sub/pnobase.sh
+       test ! -f inst/foo/pnobase.sh
+       test   -f inst/foo/pbase.sh
+       test   -f inst/foo/sub/pnobase$(EXEEXT)
+       test ! -f inst/foo/pnobase$(EXEEXT)
+       test   -f inst/foo/pbase$(EXEEXT)
+       test   -f inst/foo/sub/libnobase.a
+       test ! -f inst/foo/libnobase.a
+       test   -f inst/foo/libbase.a
+
+test-install-nothing-data: install-data
+       test ! -f inst/foo/sub/nobase.h
+       test ! -f inst/foo/nobase.h
+       test ! -f inst/foo/base.h
+       test ! -f inst/foo/sub/nobase.dat
+       test ! -f inst/foo/nobase.dat
+       test ! -f inst/foo/base.dat
+       test ! -f inst/foo/sub/pnobase.sh
+       test ! -f inst/foo/pbase.sh
+       test ! -f inst/foo/sub/pnobase$(EXEEXT)
+       test ! -f inst/foo/pbase$(EXEEXT)
+       test ! -f inst/foo/sub/libnobase.a
+       test ! -f inst/foo/libbase.a
+
+test-install-nothing-exec: install-exec
+       test ! -f inst/foo/sub/pnobase.sh
+       test ! -f inst/foo/pnobase.sh
+       test ! -f inst/foo/pbase.sh
+       test ! -f inst/foo/sub/pnobase$(EXEEXT)
+       test ! -f inst/foo/pnobase$(EXEEXT)
+       test ! -f inst/foo/pbase$(EXEEXT)
+       test ! -f inst/foo/sub/libnobase.a
+       test ! -f inst/foo/libnobase.a
+       test ! -f inst/foo/libbase.a
+EOF
+
+mkdir sub
+
+: > sub/base.h
+: > sub/nobase.h
+: > sub/base.dat
+: > sub/nobase.dat
+: > sub/base.sh
+: > sub/nobase.sh
+
+cat >source.c <<'EOF'
+int
+main (int argc, char *argv[])
+{
+  return 0;
+}
+EOF
+cp source.c source2.c
+
+rm -f install-sh
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a --copy
+./configure --prefix "`pwd`/inst" --program-prefix=p doit=yes
+
+$MAKE
+$MAKE test-install-data
+$MAKE test-install-exec
+$MAKE uninstall
+$MAKE clean
+
+test `find inst/foo -type f -print | wc -l` = 0
+
+./configure --prefix "`pwd`/inst" --program-prefix=p doit=
+
+$MAKE
+$MAKE test-install-nothing-data
+$MAKE test-install-nothing-exec
+$MAKE uninstall
+
+
+# Likewise, in a VPATH build.
+
+$MAKE distclean
+mkdir build
+cd build
+../configure --prefix "`pwd`/inst" --program-prefix=p doit=yes
+$MAKE
+$MAKE test-install-data
+$MAKE test-install-exec
+$MAKE uninstall
+test `find inst/foo -type f -print | wc -l` = 0
+
+../configure --prefix "`pwd`/inst" --program-prefix=p doit=
+$MAKE
+$MAKE test-install-nothing-data
+$MAKE test-install-nothing-exec
+
+:
diff --git a/t/subst4.sh b/t/subst4.sh
new file mode 100755 (executable)
index 0000000..ab3631e
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test AM_SUBST_NOTMAKE.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+myrule="\
+foo: bar
+       echo making \$@ from bar
+       echo \$@ > \$@
+"
+AC_SUBST([myrule])
+AM_SUBST_NOTMAKE([myrule])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+@myrule@
+EOF
+: > bar
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE foo
+test -f foo
+
+:
diff --git a/t/subst5.sh b/t/subst5.sh
new file mode 100755 (executable)
index 0000000..2fef1b9
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, 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/>.
+
+# Complain about configure substitutions in EXTRA_PRIMARY variables.
+# Rationale: we need to know the literal values of, say, PROGRAMS.
+# Thus, we allow substitutions in bin_PROGRAMS, but then EXTRA_PROGRAMS
+# needs to list possible values of that substitution, literally.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AC_SUBST([substed1])
+AC_SUBST([substed2])
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = @substed1@
+EXTRA_PROGRAMS = @substed2@
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'bin_PROGRAMS.*contains configure substitution' stderr && Exit 1
+grep 'EXTRA_PROGRAMS.*contains configure substitution' stderr
+
+Exit 0
diff --git a/t/substre2.sh b/t/substre2.sh
new file mode 100755 (executable)
index 0000000..a205c08
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in variable substitution references, where
+# undefined variables break later substitutions.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([CC], [whocares])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+
+foo = foo.a foo.b $(doesnt_exist)
+bar = bar.a bar.b
+var1 = $(foo:.a=1.c) $(doesnt_exist:.b=2.c) $(bar:.a=3.c)
+var2 = $(var1:.b=4.c)
+
+bin_PROGRAMS = foo
+foo_SOURCES = $(var2)
+
+OBJEXT = obj
+.PHONY: test
+test:
+       is $(foo_OBJECTS) == foo1.obj foo4.obj bar3.obj bar4.obj
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE test
+
+:
diff --git a/t/substref.sh b/t/substref.sh
new file mode 100755 (executable)
index 0000000..7183a91
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug in variable substitution references when left hand
+# pattern is null.
+# Report from Richard Boulton.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([CC], [whocares])
+AC_OUTPUT
+END
+
+: > hello.c
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+var1 = dlmain
+var2 = $(var1:=.)
+helldl_SOURCES = $(var2:=c)
+bin_PROGRAMS = helldl
+.PHONY: test
+test:
+       is $(helldl_SOURCES) $(helldl_OBJECTS) == dlmain.c dlmain.$(OBJEXT)
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE test
+
+# This is unrelated to the rest of this test.  But while we are
+# at it, make sure we don't use am__helldl_SOURCES_DIST here, since
+# it's not needed.  DIST_SOURCES should contain $(helldl_SOURCES).
+grep am__helldl_SOURCES_DIST Makefile && Exit 1
+grep 'DIST_SOURCES.*\$(helldl_SOURCES)' Makefile
+
+:
diff --git a/t/substtarg.sh b/t/substtarg.sh
new file mode 100755 (executable)
index 0000000..2e695f8
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that substitutions in variables work.
+# From Lars J. Aas.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_SOURCE([fakelib.c])
+AC_PROG_CC
+AM_PROG_AR
+RANLIB=:
+AC_SUBST([RANLIB])
+SUBST=hei
+AC_SUBST([SUBST])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+noinst_LIBRARIES = libfake@SUBST@.a
+
+libfake@SUBST@_a_SOURCES = abra.c kadabra.c
+
+# Then we override the target rule:
+libfake@SUBST@.a: Makefile $(libfake@SUBST@_a_OBJECTS) $(libfake@SUBST@_a_DEPENDENCIES)
+       @echo here we do some custom stuff, instead of invoking the linker
+END
+
+: > ar-lib
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'overrid.*libfake@SUBST@.a' stderr
+$AUTOMAKE -Wno-override
+num=`grep '^libfake@SUBST@.a:' Makefile.in | wc -l`
+test $num -eq 1
diff --git a/t/suffix-chain.tap b/t/suffix-chain.tap
new file mode 100755 (executable)
index 0000000..604e8a9
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that Automake can emit code that work round the inability of
+# some make implementations to automatically chain suffix rules.
+# See automake bug#7824 and bug#7670.
+
+required=cc
+. ./defs || Exit 1
+
+plan_ 8
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c1
+.c1.c0:
+       (echo 'int main (void)' && echo '{' && cat $<) > $@
+.c0.c:
+       (cat $< && echo '}') > $@
+CLEANFILES = foo.c0 foo.c
+END
+
+echo 'return 0;' > foo.c1
+
+command_ok_ "aclocal"   $ACLOCAL
+command_ok_ "automake"  $AUTOMAKE
+command_ok_ "autoconf"  $AUTOCONF
+command_ok_ "configure" ./configure
+
+directive=''; make_can_chain_suffix_rules || directive=TODO
+
+for target in all distcheck; do
+  command_ok_ "make $target" \
+              -D "$directive" -r "suffix rules not chained" \
+              $MAKE $target
+done
+
+command_ok_ "clean" $MAKE clean
+# Sanity check.
+cat >> Makefile <<'END'
+foo.c: foo.c0
+foo.c0: foo.c1
+END
+command_ok_ "make with explicit dependencies" $MAKE
+
+:
diff --git a/t/suffix.sh b/t/suffix.sh
new file mode 100755 (executable)
index 0000000..600aedf
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure proper suffix rules for C compilation are produced, and
+# only once.
+# See also related test 'suffix2.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+END
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = foo
+noinst_LIBRARIES = libbar.a
+END
+
+for use_arlib in false :; do
+
+  rm -rf autom4te*.cache
+
+  if $use_arlib; then
+    am_warns=
+    echo AM_PROG_AR >> configure.ac
+    : > ar-lib
+  else
+    am_warns=-Wno-extra-portability
+  fi
+
+  $ACLOCAL
+
+  $AUTOMAKE $am_warns -i
+  grep '^ *\.c' Makefile.in # For debugging.
+  test `grep -c '^\.c\.o:' Makefile.in` -eq 1
+  test `grep -c '^\.c\.obj:' Makefile.in` -eq 1
+
+  $AUTOMAKE $am_warns
+  grep '^ *\.c' Makefile.in # For debugging.
+  test `grep -c '^\.c\.o:' Makefile.in` -eq 1
+  test `grep -c '^\.c\.obj:' Makefile.in` -eq 1
+
+done
+
+:
diff --git a/t/suffix10.tap b/t/suffix10.tap
new file mode 100755 (executable)
index 0000000..72d0acc
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that derivations work with .lo too.
+# (related to PR/37)
+
+required='cc libtoolize yacc'
+. ./defs || Exit 1
+
+plan_ 7
+
+cat >>configure.ac <<EOF
+AC_PROG_CC
+AC_PROG_YACC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+EOF
+
+cat >Makefile.am << 'END'
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.x_
+.x_.y:
+       rm -f $@ $@-t
+## The leading ':;' works around a bug in bash <= 3.2.
+       :; { echo '/* autogenerated */' \
+         && echo '%{' \
+         && echo 'int yylex () {return 0;}' \
+         && echo 'void yyerror (char *s) {}' \
+         && echo '%}' \
+         && echo '%%' \
+         && echo "foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};" \
+         && echo '%%' \
+## Account for VPATH issues on weaker make implementations.
+         && cat `test -f '$<' || echo $(srcdir)/`$<; \
+       } > $@-t
+       mv -f $@-t $@
+.PHONY: test
+test:
+       echo $(libfoo_la_OBJECTS) | grep '^foo\.lo$$'
+END
+
+cat > foo.x_ << 'END'
+int foo (void) { return yyparse(); }
+END
+
+command_ok_ "libtoolize" libtoolize --force
+command_ok_ "aclocal"    $ACLOCAL
+command_ok_ "autoconf"   $AUTOCONF
+command_ok_ "automake"   $AUTOMAKE --add-missing
+command_ok_ "configure"  ./configure
+command_ok_ "make test"  $MAKE test
+
+directive=''; make_can_chain_suffix_rules || directive=TODO
+command_ok_ "make all" -D "$directive" -r "suffix rules not chained" \
+            $MAKE all
+
+:
diff --git a/t/suffix11.tap b/t/suffix11.tap
new file mode 100755 (executable)
index 0000000..d365fbc
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Tests that Automake understands multiple suffix rules on the same line.
+# PR/371 and PR/372: Reported by Duncan Gibson.
+# We also check for suffixes containing '-'.
+
+required=cc
+. ./defs || Exit 1
+
+plan_ 10
+
+cat >>configure.ac <<EOF
+AC_PROG_CC
+AC_OUTPUT
+EOF
+
+cat >Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz
+foo_SOURCES = foo.x_
+bar_SOURCES = bar.y-z
+baz_SOURCES = baz1.x_ baz2.y-z
+
+.y-z.c .x_.c:
+## Account for VPATH issues on weaker make implementations (e.g. IRIX 6.5).
+       sed 's/INTEGER/int/g' `test -f '$<' || echo $(srcdir)/`$< >$@
+
+CLEANFILES = foo.c bar.c baz1.c baz2.c
+
+.PHONY: test-real test-fake
+test-fake:
+       echo $(foo_OBJECTS) | grep '^foo\.foo$$'
+       echo $(bar_OBJECTS) | grep '^bar\.foo$$'
+       echo $(baz_OBJECTS) | grep '^baz1\.foo baz2\.foo$$'
+test-real:
+       echo $(foo_OBJECTS) | grep '^foo\.$(OBJEXT)$$'
+       echo $(bar_OBJECTS) | grep '^bar\.$(OBJEXT)$$'
+       echo $(baz_OBJECTS) | grep '^baz1\.$(OBJEXT) baz2\.$(OBJEXT)$$'
+check-local: test-real
+END
+
+echo 'INTEGER main(void) { return 0; }' > foo.x_
+echo 'INTEGER main(void) { return 0; }' > bar.y-z
+echo 'INTEGER main(void) { INTEGER baz(void); return baz(); }' > baz1.x_
+echo 'INTEGER baz(void) { return 0; }' > baz2.y-z
+
+command_ok_ "aclocal" $ACLOCAL
+command_ok_ "autoconf" $AUTOCONF
+
+# What we do is not portable.  Automake should warn.
+AUTOMAKE_fails -a
+command_ok_ "warn about unportable make usage" \
+  grep '[iI]nference rules can have only one target before the colon' stderr
+# But this should work anyway.
+command_ok_ "automake" $AUTOMAKE -a -Wno-portability
+
+command_ok_ "configure"  ./configure
+command_ok_ "make test-fake" env OBJEXT=foo $MAKE -e test-fake
+command_ok_ "make test-real" $MAKE test-real
+
+directive=''; make_can_chain_suffix_rules || directive=TODO
+
+for target in '' distcheck; do
+  command_ok_ "make $target" \
+              -D "$directive" -r "suffix rules not chained" \
+              $MAKE $target
+done
+
+:
diff --git a/t/suffix12.sh b/t/suffix12.sh
new file mode 100755 (executable)
index 0000000..5882df7
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Tests that Automake understands suffix rules with subdir objects.
+# Reported by John Ratliff.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<EOF
+AC_PROG_CC
+AC_OUTPUT
+EOF
+
+cat >Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+SUFFIXES = .baz .o
+# We fake here:
+.baz.o:
+## Account for VPATH issues on weaker make implementations.
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
+
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c sub/bar.baz
+
+.PHONY: test-fake test-real
+test-fake:
+       echo $(foo_OBJECTS) | grep '^foo\.quux sub/bar\.quux$$'
+test-real:
+       echo $(foo_OBJECTS) | grep '^foo\.$(OBJEXT) sub/bar\.$(OBJEXT)$$'
+END
+
+mkdir sub
+: > sub/bar.baz
+: > foo.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+OBJEXT=quux $MAKE -e test-fake
+$MAKE test-real
+
+:
diff --git a/t/suffix13.sh b/t/suffix13.sh
new file mode 100755 (executable)
index 0000000..6022205
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Tests that Automake understands suffix rules with renamed objects
+# and subdir objects.
+# Reported by Florian Briegel.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<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
+## Account for VPATH issues on weaker make implementations (e.g. IRIX 6.5).
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
+
+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
+./configure
+$MAKE
+$MAKE distcheck
+
+:
diff --git a/t/suffix2.sh b/t/suffix2.sh
new file mode 100755 (executable)
index 0000000..6dd2616
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure proper suffix rules for C compilation are produced,
+# and only once, even for libtool libraries.
+# See also related test 'suffix.test'.
+required=libtoolize
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_LIBTOOL
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libltdl.la
+libltdl_la_SOURCES = ltdl.c ltdl.h
+END
+
+# Create all the files created libtoolize so we don't run libtoolize.
+# We don't want the user to need libtool to run this test.
+: > ltconfig
+: > ltmain.sh
+: > config.guess
+: > config.sub
+
+$ACLOCAL
+
+$AUTOMAKE -a
+grep '^ *\.c' Makefile.in # For debugging.
+test `grep -c '^\.c\.o:' Makefile.in` -eq 1
+test `grep -c '^\.c\.obj:' Makefile.in` -eq 1
+
+$AUTOMAKE -i
+grep '^ *\.c' Makefile.in # For debugging.
+test `grep -c '^\.c\.o:' Makefile.in` -eq 1
+test `grep -c '^\.c\.obj:' Makefile.in` -eq 1
+
+:
diff --git a/t/suffix3.tap b/t/suffix3.tap
new file mode 100755 (executable)
index 0000000..168c842
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that suffix rules chain.
+
+required=c++
+. ./defs || Exit 1
+
+plan_ 10
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUFFIXES = .zoo
+.zoo.cc:
+       sed 's/INTEGER/int/g' `test -f '$<' || echo $(srcdir)/`$< >$@
+bin_PROGRAMS = foo
+foo_SOURCES = foo.zoo
+# This is required by "make distcheck".  The useless indirection is
+# reequired to avoid false positives by the grepping checks below.
+FOO = foo
+CLEANFILES = $(FOO).cc
+END
+
+command_ok_ "aclocal" $ACLOCAL
+command_ok_ "automake" $AUTOMAKE
+
+# The foo.cc intermediate step is implicit, it's a mistake if
+# Automake requires this file somewhere.  Also, Automake should
+# not require the file 'foo.c' anywhere.
+command_ok_ "intermediate files not mentioned" \
+  not $FGREP foo.c Makefile.in
+# However Automake must figure that foo.zoo is eventually
+# transformed into foo.o, and use this latter file (to link foo).
+command_ok_ "final object file figured out" \
+  $FGREP 'foo.$(OBJEXT)' Makefile.in
+
+command_ok_ "autoconf" $AUTOCONF
+command_ok_ "configure" ./configure
+
+# This is deliberately valid C++, but invalid C.
+cat > foo.zoo <<'END'
+using namespace std;
+INTEGER main (void)
+{
+  return 0;
+}
+END
+
+directive=''; make_can_chain_suffix_rules || directive=TODO
+
+for target in all distcheck; do
+  command_ok_ "make $target"  \
+              -D "$directive" -r "suffix rules not chained" \
+              $MAKE $target
+done
+
+# FIXME: should we check that intermediate file 'foo.cc' has
+# been removed?  Or is this requiring too much from the make
+# implementation?
+
+# Intermediate files should not be distributed.
+command_ok_ "make distdir" $MAKE distdir
+command_ok_ "intermediate file not distributed" test ! -r $me-1.0/foo.cc
+
+:
diff --git a/t/suffix4.sh b/t/suffix4.sh
new file mode 100755 (executable)
index 0000000..4523096
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure Automake doesn't abort on user-defined extensions.
+# Based on a report from Dmitry Mikhin <dmitrym@acres.com.au>.
+
+# Also make sure that .SUFFIXES is automatically adjusted with
+# extensions from implicit rules.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+.k.o:
+       echo $< > $@
+
+bin_PROGRAMS = foo
+foo_SOURCES = foo.k
+END
+
+$ACLOCAL
+$AUTOMAKE
+grep '^\.SUFFIXES:' Makefile.in | sed -e 's/$/ /' > suffixes
+cat suffixes
+$FGREP ' .k ' suffixes
+
+:
diff --git a/t/suffix5.sh b/t/suffix5.sh
new file mode 100755 (executable)
index 0000000..8608a86
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure Automake include libtool objects resulting
+# from user-defined implicit rules.
+# Based on a report from Arkadiusz Miskiewicz <misiek@pld.ORG.PL>.
+
+required='cc libtool'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_SUBST([LINK], [:])
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+.k.lo:
+## Account for VPATH issues on weaker make implementations.
+       (echo $< && cat `test -f '$<' || echo $(srcdir)/`$<) > $@
+
+noinst_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.k
+
+.PHONY: test
+test: all
+       grep '^=GREP=ME=$$' foo.lo
+## Weaker regex to account for VPATH issues.
+       grep 'foo\.k$$' foo.lo
+check-local: test
+END
+
+: > ltmain.sh
+
+for auxscript in ar-lib config.guess config.sub; do
+  cp "$am_scriptdir/$auxscript" . \
+    || fatal_ "fetching auxiliary script '$auxscript'"
+done
+
+$ACLOCAL
+$AUTOMAKE
+grep '_OBJECTS.*foo\.lo' Makefile.in
+
+$AUTOCONF
+./configure
+
+echo '=GREP=ME=' > foo.k
+
+$MAKE test
+$MAKE distcheck
+
+:
diff --git a/t/suffix6.sh b/t/suffix6.sh
new file mode 100755 (executable)
index 0000000..29ffc4d
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure Automake supports implicit rules with dot-less
+# extensions.  Also make sure that '.o' and '.obj' are handled like
+# '.$(OBJEXT)'.  See also related "semantic" tests suffix6b.test
+# and suffix6c.test.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+SUFFIXES = a b .$(OBJEXT) c .o .obj
+bin_PROGRAMS = foo
+foo_SOURCES = fooa barc bazc
+ab:
+       dummy action 1
+b.$(OBJEXT):
+       dummy action 2
+c.o:
+       dummy action C
+c.obj:
+       dummy action C
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+sed -n -e '/foo_OBJECTS *=.*\\$/ {
+  :loop
+  p
+  n
+  t clear
+  :clear
+  s/\\$/\\/
+  t loop
+  p
+  n
+}' -e 's/$/ /' -e 's/^.*foo_OBJECTS *= */ /p' Makefile.in > foo-objects
+cat foo-objects
+
+# Automake must figure that fooa translates to foo.$(OBJEXT) and
+# foo.$(OBJEXT) using the following rules:
+#  fooa --[ab]--> foob --[b.$(OBJEXT)]--> foo.$(OBJEXT)
+$FGREP ' foo.$(OBJEXT) ' foo-objects
+#  barc --[c.o]--> bar.$(OBJEXT)    ## This is really meant!
+$FGREP ' bar.$(OBJEXT) ' foo-objects
+#  bazc --[c.obj]--> baz.$(OBJEXT)  ## This is really meant!
+$FGREP ' baz.$(OBJEXT) ' foo-objects
+
+:
diff --git a/t/suffix6b.sh b/t/suffix6b.sh
new file mode 100755 (executable)
index 0000000..319e021
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure Automake supports implicit rules with dot-less
+# extensions.  Se also related "grepping" test suffix6.test.
+
+required=GNUmake # Other makes might not grok dot-less suffix rules.
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+# $(LINK) is not defined automatically by Automake, since the *_SOURCES
+# variables don't contain any known extension (.c, .cc, .f, ...).
+# So we need this hack -- but since such an hack can also serve as a
+# mild stress test, that's ok.
+AC_SUBST([LINK], ['cat >$@'])
+AC_SUBST([OBJEXT], [oOo])
+AC_SUBST([EXEEXT], [.XxX])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUFFIXES = a b c .$(OBJEXT)
+bin_PROGRAMS = foo
+foo_SOURCES = fooa
+ab:
+       { echo '=ab=' && cat $<; } >$@
+bc:
+       { echo '=bc=' && cat $<; } >$@
+c.$(OBJEXT):
+       { echo '=b.obj=' && cat $<; } >$@
+test:
+       : For debugging.
+       ls -l
+       : Implicit intermediate files should be removed by GNU make ...
+       test ! -r foob
+       test ! -r fooc
+       : ... but object files should not.
+       cat foo.$(OBJEXT)
+       : For debugging.
+       cat foo.XxX
+       : Now check that the chain of implicit rules has been executed
+       : completely and in the correct order.
+       (echo =b.obj= && echo =bc= && echo =ab= && echo =src=) > exp
+       diff exp foo.XxX
+       rm -f exp
+.PHONY: test
+check-local: test
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+echo =src= > fooa
+
+$MAKE
+$MAKE test
+$MAKE distcheck
+
+:
diff --git a/t/suffix6c.sh b/t/suffix6c.sh
new file mode 100755 (executable)
index 0000000..80f3bf0
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that '.o' and '.obj' are handled like '.$(OBJEXT)'.
+# See also related "grepping" test suffix6.test.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+# $(LINK) is not defined automatically by Automake, since the *_SOURCES
+# variables don't contain any known extension (.c, .cc, .f ...),
+# So we need this hack -- but since such an hack can also serve as a
+# mild stress test, that's ok.
+OBJEXT=${OBJEXT-oOo}
+AC_SUBST([LINK], ['cat >$@'])
+AC_SUBST([EXEEXT], [.XxX])
+AC_SUBST([OBJEXT])
+AC_OUTPUT
+END
+
+unset OBJEXT || :
+
+cat > Makefile.am << 'END'
+SUFFIXES = .zoo .o .obj .@OBJEXT@
+
+bin_PROGRAMS = foo
+foo_SOURCES = foo.zoo
+
+.zoo.o:
+       { echo '=.zoo.o=' && cat $<; } >$@
+.zoo.obj:
+       { echo '=.zoo.obj=' && cat $<; } >$@
+.zoo.@OBJEXT@:
+       { echo '=.zoo.@OBJEXT@=' && cat $<; } >$@
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+cat > foo.exp <<'END'
+=.zoo.oOo=
+%ONE%
+END
+echo %ONE% > foo.zoo
+$MAKE
+cat foo.oOo
+cat foo.XxX
+diff foo.XxX foo.exp
+
+rm -f foo.* exp
+
+cat > foo.exp <<'END'
+=.zoo.o=
+%TWO%
+END
+echo %TWO% > foo.zoo
+OBJEXT=o $MAKE -e
+cat foo.o
+cat foo.XxX
+diff foo.XxX foo.exp
+
+rm -f foo.* exp
+
+cat > foo.exp <<'END'
+=.zoo.obj=
+%THREE%
+END
+echo %THREE% > foo.zoo
+OBJEXT=obj $MAKE -e
+cat foo.obj
+cat foo.XxX
+diff foo.XxX foo.exp
+
+rm -f foo.* exp
+
+:
diff --git a/t/suffix7.sh b/t/suffix7.sh
new file mode 100755 (executable)
index 0000000..bef1031
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure Automake supports implicit rules "confusing"
+# extensions.  Inspired by a mail from Alex Hornby.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+SUFFIXES = .idl S.cpp C.h
+SUFFIXES += C.cpp S.h
+.idlC.cpp:
+       cp $< $@
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+# Make sure Automake has NOT recognized .cpp and .idlC as two new
+# extensions.
+grep 'SUFFIXES.* \.cpp' Makefile.in && Exit 1
+grep 'SUFFIXES.* \.idlC' Makefile.in && Exit 1
+
+:
diff --git a/t/suffix8.tap b/t/suffix8.tap
new file mode 100755 (executable)
index 0000000..288dd99
--- /dev/null
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure Automake supports multiple derivations for the
+# same suffix.
+# From PR/37.
+
+required='cc libtoolize'
+. ./defs || Exit 1
+
+plan_ 10
+
+cat >>configure.ac <<'END'
+AM_PROG_AR
+AM_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am << 'END'
+# $(LINK) is not defined automatically by Automake, since the *_SOURCES
+# variables don't contain any known extension (.c, .cc, .f ...),
+# So we need this hack.
+LINK = :
+
+bin_PROGRAMS = foo
+lib_LTLIBRARIES = libfoo.la
+
+foo_SOURCES = foo.x_
+libfoo_la_SOURCES = bar.x_
+
+# The elaborate cp commands below account for VPATH issues on
+# weaker make implementations (e.g. IRIX 6.5).
+.x_.y_:
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
+.y_.o:
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
+.y_.obj:
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
+.y_.z_:
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
+.z_.lo:
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
+
+# Some make implementations don't remove intermediate files
+# automatically, thus causing "make distcheck" to fail if
+# this is not added.
+MOSTLYCLEANFILES = *.y_ *.z_
+
+.PHONY: test0 test1 test2
+test0:
+       echo $(foo_OBJECTS) | grep '^foo\.foo$$'
+       echo $(libfoo_la_OBJECTS) | grep '^bar\.lo$$'
+test1:
+       echo $(foo_OBJECTS) | grep '^foo\.$(OBJEXT)$$'
+       echo $(libfoo_la_OBJECTS) | grep '^bar\.lo$$'
+test2: $(foo_OBJECTS) $(libfoo_la_OBJECTS)
+       test -f foo.$(OBJEXT)
+       test -f bar.lo
+check-local: test1 test2
+END
+
+echo 'int main (void) { return 0; }' > foo.x_
+echo 'int bar (void) { return 0; }' > bar.x_
+
+command_ok_ "libtoolize" libtoolize
+command_ok_ "aclocal"    $ACLOCAL
+command_ok_ "autoconf"   $AUTOCONF
+command_ok_ "automake"   $AUTOMAKE -a
+command_ok_ "configure"  ./configure
+command_ok_ "make test0" env OBJEXT=foo $MAKE -e test0
+command_ok_ "make test1" $MAKE test1
+
+directive=''; make_can_chain_suffix_rules || directive=TODO
+
+for target in test2 all distcheck; do
+  command_ok_ "make $target"  \
+              -D "$directive" -r "suffix rules not chained" \
+              $MAKE $target
+done
+
+:
diff --git a/t/suffix9.sh b/t/suffix9.sh
new file mode 100755 (executable)
index 0000000..2c1d73d
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that Automake choose the shorter route between suffixes
+# (related to PR/37)
+
+. ./defs || Exit 1
+
+cat >>configure.ac << 'END'
+AC_PROG_CC
+END
+
+$ACLOCAL
+
+#  x_ -> y -> c -> o
+#   \________/
+#
+# Automake should follow the bottom route: x_ -> c -> o because
+# it is shorter.
+#
+# It should not take the "-> y ->" route.  We use 'y' here so that
+# then Automake will complains that YACC is not defined and the test will
+# fail when this happens.
+
+cat >Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.x_
+
+.x_.y:
+       cp $< $@
+.x_.c:
+       cp $< $@
+END
+
+$AUTOMAKE -a
+
+# Idem with the rules the another order.
+
+cat >Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.x_
+
+.x_.c:
+       cp $< $@
+.x_.y:
+       cp $< $@
+END
+
+$AUTOMAKE -a
+
+:
diff --git a/t/symlink.sh b/t/symlink.sh
new file mode 100755 (executable)
index 0000000..f4b4338
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we get an error if symlink creation fails.
+# Reported by Joerg-Martin Schwarz.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+: > Makefile.am
+
+cat > configure.ac << 'END'
+AC_INIT([symlink], [1.0])
+AC_CONFIG_AUX_DIR([subdir])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+$ACLOCAL
+AUTOMAKE_fails --add-missing
+
+grep '^configure\.ac:3: .*missing.*error while making link' stderr
+grep '^configure\.ac:3: .*install-sh.*error while making link' stderr
+
+test `$FGREP -c 'error while making link' stderr` -eq 2
+
+:
diff --git a/t/symlink2.sh b/t/symlink2.sh
new file mode 100755 (executable)
index 0000000..46e26db
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that 'automake -a' redirects dangling symlinks.
+
+. ./defs || Exit 1
+
+rm -f install-sh
+ln -s Zardoz install-sh || skip_ "cannot create broken symlinks"
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+test -f install-sh
+test ! -r Zardoz
+
+:
diff --git a/t/syntax.sh b/t/syntax.sh
new file mode 100755 (executable)
index 0000000..5b51a7a
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for error for bad syntax.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+foo = q \
+
+bin_SCRIPTS = foo.sh
+END
+
+$ACLOCAL
+AUTOMAKE_fails -Wnone
+grep '^Makefile\.am:2:.*blank line following trailing backslash' stderr
+
+:
diff --git a/t/tags.sh b/t/tags.sh
new file mode 100755 (executable)
index 0000000..b1b95a2
--- /dev/null
+++ b/t/tags.sh
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug reported by Harlan Stenn: the tags target doesn't work
+# when there are only headers in a directory.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+noinst_HEADERS = iguana.h
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^ID:' Makefile.in
diff --git a/t/tags2.sh b/t/tags2.sh
new file mode 100755 (executable)
index 0000000..7d4ee64
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAGS_DEPENDENCIES only make sense if other tag-worthy things (such as
+# sources) exist.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat >Makefile.am << 'END'
+TAGS_DEPENDENCIES = foo
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'define.*TAGS_DEPENDENCIES.*without' stderr
+
+cat >>Makefile.am << 'END'
+bin_PROGRAMS = bar
+END
+
+AUTOMAKE_run
+grep 'define.*TAGS_DEPENDENCIES.*without' stderr && Exit 1
+
+:
diff --git a/t/tagsub.sh b/t/tagsub.sh
new file mode 100755 (executable)
index 0000000..5915d46
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure tags and subdirs work correctly.  Bug report by
+# François Pinard, and later by Akim Demaille.
+
+required=etags
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+echo 'SUBDIRS = sub' > Makefile.am
+mkdir sub
+echo 'noinst_HEADERS = iguana.h' > sub/Makefile.am
+: > sub/iguana.h
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE tags
+test -f sub/TAGS
+test -f TAGS
+$FGREP sub/TAGS TAGS
+$FGREP iguana.h sub/TAGS
+
+$MAKE distclean
+test ! -f sub/TAGS
+test ! -f TAGS
diff --git a/t/tap-ambiguous-directive-w.sh b/t/tap-ambiguous-directive-w.sh
new file mode 100755 (executable)
index 0000000..880254a
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-ambiguous-directive.sh"; then
+    echo "$0: will source $dir/t/tap-ambiguous-directive.sh"
+    . "$dir/t/tap-ambiguous-directive.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-ambiguous-directive.sh'" >&2
+exit '99'
diff --git a/t/tap-ambiguous-directive.sh b/t/tap-ambiguous-directive.sh
new file mode 100755 (executable)
index 0000000..75a259c
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - handling of "ambiguous" TODO and SKIP directives
+# See also related test 'tap-todo-skip-together.test'.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+1..6
+ok 1 # foo SKIP
+not ok 2 # bar TODO
+ok 3 # :SKIP
+not ok 4 # :TODO
+ok 5 # SKIP SKIP
+not ok 6 # TODO TODO
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=6 pass=2 fail=2 xpass=0 xfail=1 skip=1 error=0
+
+cat > exp << 'END'
+PASS: all.test 1 # foo SKIP
+FAIL: all.test 2 # bar TODO
+PASS: all.test 3 # :SKIP
+FAIL: all.test 4 # :TODO
+SKIP: all.test 5 # SKIP SKIP
+XFAIL: all.test 6 # TODO TODO
+END
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-autonumber-w.sh b/t/tap-autonumber-w.sh
new file mode 100755 (executable)
index 0000000..9a5c6b1
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-autonumber.sh"; then
+    echo "$0: will source $dir/t/tap-autonumber.sh"
+    . "$dir/t/tap-autonumber.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-autonumber.sh'" >&2
+exit '99'
diff --git a/t/tap-autonumber.sh b/t/tap-autonumber.sh
new file mode 100755 (executable)
index 0000000..8771ddf
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - unnumbered tests are OK, as long as their final total number
+#    agrees with the plan
+#  - test results without number get automatically numbered in the
+#    console progress output
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+1..14
+ok
+ok foo
+ok - foo2
+not ok
+not ok bar
+not ok - bar2
+; See that we can intermingle different kind of results without
+; messing up the autonumbering
+ok
+ok # TODO
+not ok # TODO who cares?
+ok
+not ok
+ok muuu # SKIP
+not ok
+ok
+END
+
+TESTS=all.test $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=14 pass=6 fail=5 xpass=1 xfail=1 skip=1 error=0
+
+cat > exp <<'END'
+PASS: all.test 1
+PASS: all.test 2 foo
+PASS: all.test 3 - foo2
+FAIL: all.test 4
+FAIL: all.test 5 bar
+FAIL: all.test 6 - bar2
+PASS: all.test 7
+XPASS: all.test 8 # TODO
+XFAIL: all.test 9 # TODO who cares?
+PASS: all.test 10
+FAIL: all.test 11
+SKIP: all.test 12 muuu # SKIP
+FAIL: all.test 13
+PASS: all.test 14
+END
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-bad-prog-w.tap b/t/tap-bad-prog-w.tap
new file mode 100755 (executable)
index 0000000..d24e18e
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-bad-prog.tap"; then
+    echo "$0: will source $dir/t/tap-bad-prog.tap"
+    . "$dir/t/tap-bad-prog.tap"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-bad-prog.tap'" >&2
+exit '99'
diff --git a/t/tap-bad-prog.tap b/t/tap-bad-prog.tap
new file mode 100755 (executable)
index 0000000..82cf4e4
--- /dev/null
@@ -0,0 +1,112 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - missing, unreadable, or not-executable test scripts cause proper
+#    error reports
+
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+plan_ 6
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(srcdir)/tap-driver
+TESTS = none.test noread.test noexec.test
+none.test:
+END
+
+cat > noexec.test <<'END'
+#!/bin/sh
+echo 1..1
+echo ok 1
+END
+
+cp noexec.test noread.test
+chmod a-r noread.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+if $MAKE check >stdout; then
+  r='not ok'
+else
+  r='ok'
+fi
+cat stdout
+result_ "$r" '"make check" returns non-zero exit status'
+
+# FIXME: maybe grep for stricter error messages in the next checks?
+
+command_ok_ "non-existent test is reported" \
+            grep '^ERROR: none\.test' stdout
+
+desc="non-executable test is reported"
+# Redirect output to avoid confusing automake's testsuite own TAP driver.
+if ./noexec.test >/dev/null; then
+  skip_ -r "any file is executable" "$desc"
+else
+  command_ok_ "$desc" -- grep '^ERROR: noexec\.test' stdout
+fi
+
+desc="non-readable test is reported"
+if test -r noread.test; then
+  skip_ -r "any file is readable" "$desc"
+else
+  command_ok_ "$desc" -- grep '^ERROR: noread\.test' stdout
+fi
+
+# Check that no spurious test result is reported.  This is lower-priority
+# (and in fact the check currently fails for our awk-based driver).
+directive=
+if test $am_tap_implementation = shell; then
+  directive=TODO
+else
+  # Older versions of IPC::Open3 (e.g., version 1.05 on perl 5.12.4 or
+  # version 1.0103 on perl 5.6.2) fail to properly trap errors in exec(2)
+  # calls in the child process; hence, the TAP driver cannot be properly
+  # informed of such error.
+  if $PERL -w -e '
+    use IPC::Open3 qw/open3/;
+    $@ = "";
+    eval { open3(*STDIN, *STDOUT, *STDERR, "am--no-such-command") };
+    $@ =~ m/\bopen3:.*am--no-such-command/
+      or die "Bad \$@ value: \"$@\"\n";
+  '; then
+    : # OK. IPC::Open3 should be good enough.
+  else
+    for s in '"missing plan" message' 'results'; do
+      skip_ -r "IPC::Open3 not good enough" "no spurious $s"
+    done
+    Exit 0
+  fi
+fi
+
+command_ok_ 'no spurious "missing plan" message' \
+    -D "$directive" -- not grep 'missing.* plan' stdout
+command_ok_ 'no spurious results' \
+  -D "$directive" -r 'still get "missing plan"' \
+  count_test_results total=3 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=3
+
+:
diff --git a/t/tap-bailout-and-logging-w.sh b/t/tap-bailout-and-logging-w.sh
new file mode 100755 (executable)
index 0000000..33c9b50
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-bailout-and-logging.sh"; then
+    echo "$0: will source $dir/t/tap-bailout-and-logging.sh"
+    . "$dir/t/tap-bailout-and-logging.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-bailout-and-logging.sh'" >&2
+exit '99'
diff --git a/t/tap-bailout-and-logging.sh b/t/tap-bailout-and-logging.sh
new file mode 100755 (executable)
index 0000000..e8e3756
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - even after a "Bail out!" directive, all input is still copied in
+#    the log file
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+First line
+Bail out!
+non-TAP line after bailout
+# TAP diagnostic after bailout
+1..0 # SKIP TAP plan after bailout
+ok 1 - TAP result after bailout
+END
+
+$MAKE check && { cat all.log; Exit 1; }
+cat all.log
+
+for rx in \
+  'First line' \
+  'Bail out!' \
+  'non-TAP line after bailout' \
+  '# TAP diagnostic after bailout' \
+  '1\.\.0 # SKIP TAP plan after bailout' \
+  'ok 1 - TAP result after bailout' \
+; do
+  grep "^$rx$" all.log
+done
+
+:
diff --git a/t/tap-bailout-leading-space.sh b/t/tap-bailout-leading-space.sh
new file mode 100755 (executable)
index 0000000..bd0d1fc
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Older versions of prove and TAP::Harness (e.g., 3.17) didn't recognize
+# a "Bail out!" directive that was preceded by whitespace, but more modern
+# versions (e.g., 3.23) do.  So we leave this behaviour undefined for the
+# perl implementation of the Automake TAP driver, but expect the latter,
+# "more modern" behaviour in our awk TAP driver.
+
+am_tap_implementation=shell
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > a.test <<END
+1..1
+ok 1
+ Bail out!
+END
+
+cat > b.test <<END
+1..1
+ok 1 # SKIP
+${tab}Bail out!
+END
+
+cat > c.test <<END
+1..1
+  ${tab}  ${tab}${tab}Bail out!   FUBAR! $tab
+END
+
+cat >> exp <<END
+PASS: a.test 1
+ERROR: a.test - Bail out!
+SKIP: b.test 1
+ERROR: b.test - Bail out!
+ERROR: c.test - Bail out! FUBAR!
+END
+
+TESTS='a.test b.test c.test' $MAKE -e check >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=5 pass=1 fail=0 xpass=0 xfail=0 skip=1 error=3
+
+LC_ALL=C sort exp > t
+mv -f t exp
+
+# We need the sort below to account for parallel make usage.
+grep ': [abcde]\.test' stdout \
+  | sed "s/[ $tab]*#[ $tab]*SKIP.*//" \
+  | LC_ALL=C sort > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-bailout-suppress-badexit-w.sh b/t/tap-bailout-suppress-badexit-w.sh
new file mode 100755 (executable)
index 0000000..d69cb05
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-bailout-suppress-badexit.sh"; then
+    echo "$0: will source $dir/t/tap-bailout-suppress-badexit.sh"
+    . "$dir/t/tap-bailout-suppress-badexit.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-bailout-suppress-badexit.sh'" >&2
+exit '99'
diff --git a/t/tap-bailout-suppress-badexit.sh b/t/tap-bailout-suppress-badexit.sh
new file mode 100755 (executable)
index 0000000..c7e55db
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic TAP test protocol support:
+#  - A "Bail out!" directive causes the driver to ignore the exit
+#    status of the test script.
+
+. ./defs || Exit 1
+
+tests='exit.test exit127.test sighup.test sigterm.test'
+
+cat > Makefile.am <<END
+TESTS = $tests
+END
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > exit.test << 'END'
+#!/bin/sh
+echo 'Bail out!'
+exit 1
+END
+
+cat > exit127.test << 'END'
+#!/bin/sh
+echo 'Bail out!'
+exit 127
+END
+
+cat > sighup.test << 'END'
+#!/bin/sh
+echo 'Bail out!'
+kill -1 $$
+END
+
+cat > sigterm.test << 'END'
+#!/bin/sh
+echo 'Bail out!'
+kill -15 $$
+END
+
+chmod a+x $tests
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=4 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=4
+for tst in $tests; do grep "^ERROR: $tst - Bail out!" stdout; done
+$EGREP "ERROR: .*(exit.*status|terminat.*signal)" stdout && Exit 1
+
+:
diff --git a/t/tap-bailout-suppress-later-diagnostic-w.sh b/t/tap-bailout-suppress-later-diagnostic-w.sh
new file mode 100755 (executable)
index 0000000..be1baad
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-bailout-suppress-later-diagnostic.sh"; then
+    echo "$0: will source $dir/t/tap-bailout-suppress-later-diagnostic.sh"
+    . "$dir/t/tap-bailout-suppress-later-diagnostic.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-bailout-suppress-later-diagnostic.sh'" >&2
+exit '99'
diff --git a/t/tap-bailout-suppress-later-diagnostic.sh b/t/tap-bailout-suppress-later-diagnostic.sh
new file mode 100755 (executable)
index 0000000..bff4d64
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - A "Bail out!" directive causes the driver to ignore any TAP
+#    diagnostic message in the rest of the following TAP stream.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+echo AM_TEST_LOG_DRIVER_FLAGS = --comments >> Makefile
+
+cat > all.test <<END
+1..1
+# sanity check
+ok 1
+Bail out!
+# not seen
+END
+
+# Doing the sums above, we have:
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=2 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=1
+grep '# all.test: sanity check' stdout
+grep 'not seen' stdout && Exit 1
+
+:
diff --git a/t/tap-bailout-suppress-later-errors-w.sh b/t/tap-bailout-suppress-later-errors-w.sh
new file mode 100755 (executable)
index 0000000..969ce67
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-bailout-suppress-later-errors.sh"; then
+    echo "$0: will source $dir/t/tap-bailout-suppress-later-errors.sh"
+    . "$dir/t/tap-bailout-suppress-later-errors.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-bailout-suppress-later-errors.sh'" >&2
+exit '99'
diff --git a/t/tap-bailout-suppress-later-errors.sh b/t/tap-bailout-suppress-later-errors.sh
new file mode 100755 (executable)
index 0000000..ff83887
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - A "Bail out!" directive causes the driver to ignore any TAP
+#    result or error in the rest of the following TAP stream.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+# Various errors that can all be squashed into a single test script.
+cat > foo.test << 'END'
+1..5
+Bail out!
+# All possible test results.
+# Test out-of-order.
+ok 4
+# Extra TAP plan.
+1..2
+# Another bailout directive.
+Bail out! Not seen.
+# Stop now, with too few tests run.
+END
+
+# Tests run after a "SKIP" plan.
+cat > bar.test << 'END'
+1..0 # SKIP
+Bail out!
+ok 1
+END
+
+# Too many tests run.
+cat > baz.test << 'END'
+1..1
+ok 1
+Bail out!
+ok 2
+ok 3
+END
+
+TESTS='foo.test bar.test baz.test' $MAKE -e check >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=5 pass=1 fail=0 xpass=0 xfail=0 skip=1 error=3
+
+grep '^ERROR: foo\.test - Bail out!$' stdout
+grep '^ERROR: bar\.test - Bail out!$' stdout
+grep '^SKIP: bar\.test'               stdout
+grep '^ERROR: baz\.test - Bail out!$' stdout
+grep '^PASS: baz\.test 1$'            stdout
+
+$FGREP 'Not seen' stdout && Exit 1
+
+test `$FGREP -c ': foo.test' stdout` -eq 1
+test `$FGREP -c ': bar.test' stdout` -eq 2
+test `$FGREP -c ': baz.test' stdout` -eq 2
+
+:
diff --git a/t/tap-bailout-w.sh b/t/tap-bailout-w.sh
new file mode 100755 (executable)
index 0000000..dd6e6de
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-bailout.sh"; then
+    echo "$0: will source $dir/t/tap-bailout.sh"
+    . "$dir/t/tap-bailout.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-bailout.sh'" >&2
+exit '99'
diff --git a/t/tap-bailout.sh b/t/tap-bailout.sh
new file mode 100755 (executable)
index 0000000..317eaa2
--- /dev/null
@@ -0,0 +1,137 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic TAP test protocol support:
+#  - "Bail out!" magic
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+: > exp
+
+#------------------------------------------------------------------
+
+# Bailout without explanation.
+
+cat > a.test <<END
+1..4
+ok 1
+not ok 2
+Bail out!
+not ok 3
+ok 4 # SKIP
+END
+
+cat >> exp <<END
+PASS: a.test 1
+FAIL: a.test 2
+ERROR: a.test - Bail out!
+END
+
+# pass += 1, fail +=1, error += 1
+
+#------------------------------------------------------------------
+
+# Bailout with explanation.
+
+cat > b.test <<END
+1..7
+ok 1 # SKIP
+ok 2 # TODO
+not ok 3 # TODO
+Bail out! We're out of disk space.
+ok 4
+not ok 5
+not ok 6 # TODO
+ok 7 # TODO
+END
+
+cat >> exp <<END
+SKIP: b.test 1 # SKIP
+XPASS: b.test 2 # TODO
+XFAIL: b.test 3 # TODO
+ERROR: b.test - Bail out! We're out of disk space.
+END
+
+# skip += 1, xpass += 1, xfail += 1, error += 1
+
+#------------------------------------------------------------------
+
+# Bail out before the test plan.
+
+cat > c.test <<END
+ok 1
+ok 2
+Bail out! BOOOH!
+1..2
+END
+
+cat >> exp <<END
+PASS: c.test 1
+PASS: c.test 2
+ERROR: c.test - Bail out! BOOOH!
+END
+
+# pass += 2, error += 1
+
+#------------------------------------------------------------------
+
+# Bailout on the first line.
+
+cat > d.test <<END
+Bail out! mktemp -d: Permission denied
+ok 1
+END
+
+echo 'ERROR: d.test - Bail out! mktemp -d: Permission denied' >> exp
+
+# error += 1
+
+#------------------------------------------------------------------
+
+# TAP input comprised only of a bailout directive.
+
+cat > e.test <<END
+Bail out!
+END
+
+echo "ERROR: e.test - Bail out!" >> exp
+
+# error += 1
+
+#------------------------------------------------------------------
+
+# Doing the sums above, we have:
+test_counts='total=12 pass=3 fail=1 xpass=1 xfail=1 skip=1 error=5'
+
+TESTS='a.test b.test c.test d.test e.test' $MAKE -e check >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results $test_counts
+
+LC_ALL=C sort exp > t
+mv -f t exp
+
+# We need the sort below to account for parallel make usage.
+grep ': [abcde]\.test' stdout | LC_ALL=C sort > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-basic-w.sh b/t/tap-basic-w.sh
new file mode 100755 (executable)
index 0000000..28f4c87
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-basic.sh"; then
+    echo "$0: will source $dir/t/tap-basic.sh"
+    . "$dir/t/tap-basic.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-basic.sh'" >&2
+exit '99'
diff --git a/t/tap-basic.sh b/t/tap-basic.sh
new file mode 100755 (executable)
index 0000000..c19c326
--- /dev/null
@@ -0,0 +1,174 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic TAP support:
+#  - LOG_COMPILER support;
+#  - basic support for TODO and SKIP directives, and "Bail out!" magic;
+#  - testsuite progress output on console;
+#  - runtime overriding of TESTS and TEST_LOGS;
+#  - correct counts of test results (both in summary and in progress
+#    output on console).
+# Note that some of the features checked here are checked in other
+# test cases too, usually in a more thorough and detailed way.
+
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(srcdir)/tap-driver
+## Defining LOG_COMPILER should work and not intefere with the
+## tap-driver script.
+TEST_LOG_COMPILER = cat
+TESTS = success.test
+
+ok.test:
+       echo '1..3' > $@-t
+       echo 'ok 1' >> $@-t
+       echo 'not ok 2 # TODO' >>$@-t
+       echo 'ok 3 # SKIP' >>$@-t
+       cat $@-t ;: For debugging.
+       mv -f $@-t $@
+END
+
+cat > success.test << 'END'
+1..20
+ok 1
+ok 2 two
+ok 3 - three
+ok 4 four four
+not ok 5
+not ok 6 six
+not ok 7 - seven
+not ok 8 eight eight
+ok 9 # TODO
+ok 10 ten # TODO
+ok 11 - eleven # TODO
+ok 12 twelve twelve # TODO
+not ok 13 # TODO
+not ok 14 fourteen # TODO
+not ok 15 - fifteen # TODO
+not ok 16 sixteen sixteen # TODO
+ok 17 # SKIP
+ok 18 eighteen # SKIP
+ok 19 - nineteen # SKIP
+ok 20 twenty twenty # SKIP
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# Basilar usage and testsuite progress output.
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=20 pass=4 fail=4 xpass=4 xfail=4 skip=4 error=0
+
+test -f success.log
+test -f test-suite.log
+
+cat > exp << 'END'
+PASS: success.test 1
+PASS: success.test 2 two
+PASS: success.test 3 - three
+PASS: success.test 4 four four
+FAIL: success.test 5
+FAIL: success.test 6 six
+FAIL: success.test 7 - seven
+FAIL: success.test 8 eight eight
+XPASS: success.test 9 # TODO
+XPASS: success.test 10 ten # TODO
+XPASS: success.test 11 - eleven # TODO
+XPASS: success.test 12 twelve twelve # TODO
+XFAIL: success.test 13 # TODO
+XFAIL: success.test 14 fourteen # TODO
+XFAIL: success.test 15 - fifteen # TODO
+XFAIL: success.test 16 sixteen sixteen # TODO
+SKIP: success.test 17 # SKIP
+SKIP: success.test 18 eighteen # SKIP
+SKIP: success.test 19 - nineteen # SKIP
+SKIP: success.test 20 twenty twenty # SKIP
+END
+
+$FGREP ': success.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+# Override TESTS from the command line.
+
+rm -f *.log *.test
+
+cat > bail.test <<'END'
+1..1
+Bail out!
+ok 1
+END
+
+TESTS=bail.test $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=1 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=1
+
+test ! -f success.log
+test -f bail.log
+test -f test-suite.log
+
+grep '^ERROR: bail\.test - Bail out!' stdout
+grep '^PASS:' stdout && Exit 1
+test `$FGREP -c ': bail.test' stdout` -eq 1
+$FGREP 'success.test' stdout && Exit 1
+
+# Override TEST_LOGS from the command line, making it point to a test
+# (ok.test) that has to be generated at make time.
+
+rm -f *.log *.test
+
+TEST_LOGS=ok.log $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=3 pass=1 fail=0 xpass=0 xfail=1 skip=1 error=0
+
+test -f ok.test
+test -f ok.log
+test ! -f success.log
+test ! -f bail.log
+test -f test-suite.log
+
+$EGREP '(bail|success)\.test' stdout && Exit 1
+
+cat > exp << 'END'
+PASS: ok.test 1
+XFAIL: ok.test 2 # TODO
+SKIP: ok.test 3 # SKIP
+END
+
+$FGREP ': ok.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-color-w.sh b/t/tap-color-w.sh
new file mode 100755 (executable)
index 0000000..bc39a7c
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-color.sh"; then
+    echo "$0: will source $dir/t/tap-color.sh"
+    . "$dir/t/tap-color.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-color.sh'" >&2
+exit '99'
diff --git a/t/tap-color.sh b/t/tap-color.sh
new file mode 100755 (executable)
index 0000000..6a91f06
--- /dev/null
@@ -0,0 +1,171 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - colorization of TAP results and diagnostic messages
+
+. ./defs || Exit 1
+
+esc='\e'
+# Escape '[' for grep, below.
+red="$esc\[0;31m"
+grn="$esc\[0;32m"
+lgn="$esc\[1;32m"
+blu="$esc\[1;34m"
+mgn="$esc\[0;35m"
+std="$esc\[m"
+
+# Check that grep can parse nonprinting characters.
+# BSD 'grep' works from a pipe, but not a seekable file.
+# GNU or BSD 'grep -a' works on files, but is not portable.
+case `echo "$std" | grep .` in
+  "$std") ;;
+  *) echo "$me: grep can't parse nonprinting characters" >&2; Exit 77;;
+esac
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = color-tests
+AM_TEST_LOG_DRIVER_FLAGS = --comments
+TEST_LOG_COMPILER = cat
+TESTS = all.test skip.test bail.test badplan.test noplan.test \
+        few.test many.test order.test afterlate.test
+END
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test << 'END'
+1..5
+ok 1 - foo
+# Hi! I shouldn't be colorized!
+not ok 2 - bar # TODO td
+ok 3 - baz # SKIP sk
+not ok 4 - quux
+ok 5 - zardoz # TODO
+END
+
+cat > skip.test << 'END'
+1..0 # SKIP whole script
+END
+
+cat > bail.test << 'END'
+1..1
+ok 1
+Bail out!
+END
+
+cat > badplan.test << 'END'
+1..2
+ok 1
+1..2
+ok 2
+END
+
+cat > noplan.test << 'END'
+ok 1
+END
+
+cat > few.test << 'END'
+1..2
+ok 1
+END
+
+cat > many.test << 'END'
+1..1
+ok 1
+ok 2
+END
+
+cat > order.test << 'END'
+1..1
+ok 5
+END
+
+cat > afterlate.test << 'END'
+ok 1
+1..2
+ok 2
+END
+
+test_color ()
+{
+  # Not a useless use of cat; see above comments about grep.
+  cat stdout | grep "^${grn}PASS${std}: all\.test 1 - foo$"
+  cat stdout | grep "^${lgn}XFAIL${std}: all\.test 2 - bar # TODO td$"
+  cat stdout | grep "^${blu}SKIP${std}: all\.test 3 - baz # SKIP sk$"
+  cat stdout | grep "^${red}FAIL${std}: all\.test 4 - quux$"
+  cat stdout | grep "^${red}XPASS${std}: all\.test 5 - zardoz # TODO$"
+  cat stdout | grep "^${blu}SKIP${std}: skip\.test - whole script$"
+  cat stdout | grep "^${grn}PASS${std}: bail\.test 1$"
+  cat stdout | grep "^${mgn}ERROR${std}: bail\.test - Bail out!$"
+  cat stdout | grep "^${mgn}ERROR${std}: badplan\.test - multiple test plans$"
+  cat stdout | grep "^${mgn}ERROR${std}: noplan\.test - missing test plan$"
+  cat stdout | grep "^${mgn}ERROR${std}: few.test - too few tests run (expected 2, got 1)$"
+  cat stdout | grep "^${mgn}ERROR${std}: many.test - too many tests run (expected 1, got 2)$"
+  cat stdout | grep "^${mgn}ERROR${std}: many.test 2 # UNPLANNED$"
+  cat stdout | grep "^${mgn}ERROR${std}: order.test 5 # OUT-OF-ORDER (expecting 1)$"
+  cat stdout | grep "^${mgn}ERROR${std}: afterlate\.test 2 # AFTER LATE PLAN$"
+  # Diagnostic messages shouldn't be colorized.
+  cat stdout | grep "^# all\.test: Hi! I shouldn't be colorized!$"
+  :
+}
+
+test_no_color ()
+{
+  # With make implementations that, like Solaris make, in case of errors
+  # print the whole failing recipe on standard output, we should content
+  # ourselves with a laxer check, to avoid false positives.
+  # Keep this in sync with lib/am/check.am:$(am__color_tests).
+  if $FGREP '= Xalways; then' stdout; then
+    # Extra verbose make, resort to laxer checks.
+    # But we also want to check that the testsuite summary is not unduly
+    # colorized.
+    (
+      set +e # In case some grepped regex below isn't matched.
+      # Not a useless use of cat; see above comments about grep.
+      cat stdout | grep "TOTAL.*:"
+      cat stdout | grep "PASS.*:"
+      cat stdout | grep "FAIL.*:"
+      cat stdout | grep "SKIP.*:"
+      cat stdout | grep "XFAIL.*:"
+      cat stdout | grep "XPASS.*:"
+      cat stdout | grep "ERROR.*:"
+      cat stdout | grep "^#"
+      cat stdout | grep 'test.*expected'
+      cat stdout | grep 'test.*not run'
+      cat stdout | grep '===='
+      cat stdout | grep '[Ss]ee .*test-suite\.log'
+      cat stdout | grep '[Tt]estsuite summary'
+    ) | grep "$esc" && Exit 1
+    : For shells with broken 'set -e'
+  else
+    cat stdout | grep "$esc" && Exit 1
+    : For shells with broken 'set -e'
+  fi
+}
+
+# Forced colorization should take place also with non-ANSI terminals;
+# hence the "TERM=dumb" definition.
+TERM=dumb AM_COLOR_TESTS=always $MAKE check >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+test_color
+
+TERM=ansi $MAKE -e check >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+test_no_color
+
+:
diff --git a/t/tap-common-setup.sh b/t/tap-common-setup.sh
new file mode 100755 (executable)
index 0000000..8400da0
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Auxiliary test to set up common data used by many tests on TAP support.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(srcdir)/tap-driver
+TEST_LOG_COMPILER = cat
+TESTS = all.test
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+rm -rf autom4te*.cache
+
+# So that the data files we've created won't be removed at exit.
+keep_testdirs=yes
+
+:
diff --git a/t/tap-deps-w.sh b/t/tap-deps-w.sh
new file mode 100755 (executable)
index 0000000..d5f0fe9
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-deps.sh"; then
+    echo "$0: will source $dir/t/tap-deps.sh"
+    . "$dir/t/tap-deps.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-deps.sh'" >&2
+exit '99'
diff --git a/t/tap-deps.sh b/t/tap-deps.sh
new file mode 100755 (executable)
index 0000000..6ebe0f9
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic TAP test protocol support:
+#  - dependencies between test scripts
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+# The tests are *deliberately* listed in inversed order here.
+TESTS = c.test b.test a.test
+b.log: a.log
+c.log: b.log
+END
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > a.test << 'END'
+#!/bin/sh
+echo 1..2
+echo ok 1
+# Creative quoting below to please maintainer-check.
+sleep '3'
+echo ok 2
+: > a.run
+END
+
+cat > b.test << 'END'
+#!/bin/sh
+echo 1..2
+if test -f a.run; then
+  echo ok 1
+else
+  echo not ok 1
+fi
+# Creative quoting below to please maintainer-check.
+sleep '3'
+echo ok 2
+: > b.run
+END
+
+cat > c.test << 'END'
+#!/bin/sh
+echo 1..1
+test -f b.run || { echo 'Bail out!'; exit 1; }
+echo ok 1
+rm -f a.run b.run
+END
+
+chmod a+x *.test
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=5 pass=5 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+cat > exp << 'END'
+PASS: a.test 1
+PASS: a.test 2
+PASS: b.test 1
+PASS: b.test 2
+PASS: c.test 1
+END
+
+grep ': [abc]\.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+# TODO: it would be nice to also redo the checks forcing parallel make...
+
+:
diff --git a/t/tap-diagnostic-custom-w.sh b/t/tap-diagnostic-custom-w.sh
new file mode 100755 (executable)
index 0000000..2a9796f
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-diagnostic-custom.sh"; then
+    echo "$0: will source $dir/t/tap-diagnostic-custom.sh"
+    . "$dir/t/tap-diagnostic-custom.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-diagnostic-custom.sh'" >&2
+exit '99'
diff --git a/t/tap-diagnostic-custom.sh b/t/tap-diagnostic-custom.sh
new file mode 100755 (executable)
index 0000000..c90f46f
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - option '--diagnostic-string' to customize the string introducing
+#    TAP diagnostics
+
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+my_log_driver = $(srcdir)/tap-driver
+my_log_compiler = cat
+TEST_EXTENSIONS =
+TESTS =
+END
+
+: > later.mk
+
+# Quoting our comments below is an hack required to keep
+# comments near the things they refer to.
+i=0
+for string in \
+'## A letter' \
+    a \
+'## A number' \
+    1023 \
+'## A non-alphabetic character' \
+    @ \
+'## Some metacharacters (we need to repeat the "$" for make)' \
+    '^>;&*"|$$' \
+'## A whitespace character' \
+    " " \
+'## A tab character' \
+    "$tab" \
+'## A string with more whitespace' \
+    "  ${tab}a b${tab} c" \
+'## Note the we do not have the empty string here.  We prefer to' \
+'## leave its behaviour in this context undefined for the moment.'
+do
+  case $string in '##'*) continue;; esac
+  i=`expr $i + 1`
+  unindent >> Makefile.am << END
+    TEST_EXTENSIONS += .t$i
+    TESTS += foo$i.t$i
+    T${i}_LOG_COMPILER = \$(my_log_compiler)
+    T${i}_LOG_DRIVER = \$(my_log_driver)
+    AM_T${i}_LOG_DRIVER_FLAGS = \
+      --comments \
+      --diagnostic-string '$string'
+END
+  unindent > foo$i.t$i <<END
+    1..1
+    ok 1
+    $string blah blah $i
+END
+    echo "AM_T${i}_LOG_DRIVER_FLAGS = --no-comments" >> later.mk
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=$i pass=$i fail=0 xpass=0 xfail=0 skip=0 error=0
+
+cat later.mk >> Makefile
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP 'blah blah' stdout && Exit 1
+
+:
diff --git a/t/tap-diagnostic-w.sh b/t/tap-diagnostic-w.sh
new file mode 100755 (executable)
index 0000000..cab8e0a
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-diagnostic.sh"; then
+    echo "$0: will source $dir/t/tap-diagnostic.sh"
+    . "$dir/t/tap-diagnostic.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-diagnostic.sh'" >&2
+exit '99'
diff --git a/t/tap-diagnostic.sh b/t/tap-diagnostic.sh
new file mode 100755 (executable)
index 0000000..c849d65
--- /dev/null
@@ -0,0 +1,123 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - diagnostic messages (TAP lines with leading "#")
+#  - flags '--comments' and '--no-comments' of the TAP test driver
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+metacharacters=\''"\$!&()[]<>#;^?*'
+
+cat > all.test <<END
+1..4
+# Hi! I'm a comment.
+# Tests begin.
+ok 1
+not ok 2 - foo # TODO
+ok 3 - bar # SKIP
+# Tests end.
+ok - zardoz
+# Shell metacharacters here: $metacharacters
+.# Leading characters before "#", not a TAP diagnostic line.
+x # Leading characters before "#", not a TAP diagnostic line.
+ # Leading whitespace before "#", not a TAP diagnostic line.
+${tab}# Leading whitespace before "#", not a TAP diagnostic line.
+ ${tab}  # Leading whitespace before "#", not a TAP diagnostic line.
+END
+
+cat > exp <<END
+# all.test: Hi! I'm a comment.
+# all.test: Tests begin.
+PASS: all.test 1
+XFAIL: all.test 2 - foo # TODO
+SKIP: all.test 3 - bar # SKIP
+# all.test: Tests end.
+PASS: all.test 4 - zardoz
+# all.test: Shell metacharacters here: $metacharacters
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+$EGREP -i "#.*all\\.test|a comment|(Tests|Shell) " stdout && Exit 1
+count_test_results total=4 pass=2 fail=0 xpass=0 xfail=1 skip=1 error=0
+
+echo 'AM_TEST_LOG_DRIVER_FLAGS = --comments' >> Makefile
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+$FGREP ' all.test' stdout > got
+cat exp
+cat got
+diff exp got
+count_test_results total=4 pass=2 fail=0 xpass=0 xfail=1 skip=1 error=0
+
+TEST_LOG_DRIVER_FLAGS="--no-comments" $MAKE -e check >stdout \
+  || { cat stdout; Exit 1; }
+cat stdout
+$EGREP -i "#.*all\\.test|a comment|(Tests|Shell) " stdout && Exit 1
+count_test_results total=4 pass=2 fail=0 xpass=0 xfail=1 skip=1 error=0
+
+# The "#"-prepended lines here shouldn't be parsed as test results.
+cat > all.test <<END
+1..1
+ok
+# ok
+#ok
+# not ok
+#not ok
+# Bail out!
+#Bail out!
+# SKIP
+#SKIP
+# TODO
+#TODO
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=1 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+# Diagnostic without leading whitespace, or with extra leading whitespace,
+# is ok.  Be laxer in the grepping checks, to allow for whitespace
+# normalization by the TAP driver.
+
+ws="[ $tab]"
+ws0p="${ws}*"
+ws1p="${ws}${ws0p}"
+
+cat > all.test <<END
+1..1
+ok 1
+#foo
+#bar${tab}
+#   zardoz  ${tab}
+#  ${tab} ${tab}${tab}foo  bar${tab}baz  ${tab}
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=1 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+grep "^# all.test:${ws0p}foo$" stdout
+grep "^# all.test:${ws0p}bar${ws0p}$" stdout
+grep "^# all.test:${ws1p}zardoz${ws0p}$" stdout
+grep "^# all.test:${ws1p}foo  bar${tab}baz${ws0p}$" stdout
+
+test `grep -c '^# all\.test:' stdout` -eq 4
+
+:
diff --git a/t/tap-doc-w.sh b/t/tap-doc-w.sh
new file mode 100755 (executable)
index 0000000..994a9db
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-doc.sh"; then
+    echo "$0: will source $dir/t/tap-doc.sh"
+    . "$dir/t/tap-doc.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-doc.sh'" >&2
+exit '99'
diff --git a/t/tap-doc.sh b/t/tap-doc.sh
new file mode 100755 (executable)
index 0000000..22d542f
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that an example given in the documentation really works.
+# See section "Simple Tests" subsection "Script-based Testsuites".
+
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+cat >> configure.ac <<END
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.sh zardoz.tap bar.sh mu.tap
+TEST_EXTENSIONS = .sh .tap
+TAP_LOG_DRIVER = $(srcdir)/tap-driver
+## Ensure the test scripts are run in the correct order.
+mu.log: bar.log
+bar.log: zardoz.log
+zardoz.log: foo.log
+END
+
+cat > foo.sh <<'END'
+#!/bin/sh
+exit 0
+END
+
+cat > bar.sh <<'END'
+#!/bin/sh
+exit 77
+END
+
+cat > zardoz.tap << 'END'
+#!/bin/sh
+echo 1..4
+echo 'ok 1 - Daemon started'
+echo 'ok 2 - Daemon responding'
+echo 'ok 3 - Daemon uses /proc # SKIP /proc is not mounted'
+echo 'ok 4 - Daemon stopped'
+END
+
+cat > mu.tap << 'END'
+#!/bin/sh
+echo 1..2
+echo 'ok'
+echo 'not ok # TODO frobnication not yet implemented'
+END
+
+chmod a+x *.sh *.tap
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+cat > exp <<'END'
+PASS: foo.sh
+PASS: zardoz.tap 1 - Daemon started
+PASS: zardoz.tap 2 - Daemon responding
+SKIP: zardoz.tap 3 - Daemon uses /proc # SKIP /proc is not mounted
+PASS: zardoz.tap 4 - Daemon stopped
+SKIP: bar.sh
+PASS: mu.tap 1
+XFAIL: mu.tap 2 # TODO frobnication not yet implemented
+END
+
+sed -n '/^PASS: foo\.sh/,/^XFAIL: mu\.tap/p' stdout > t
+cat t
+# Strip extra "informative" lines that could be printed by Solaris
+# Distributed Make.
+LC_ALL=C $EGREP -v ' --> ([0-9][0-9]* job|[Jj]ob output)' t > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-doc2.sh b/t/tap-doc2.sh
new file mode 100755 (executable)
index 0000000..0607112
--- /dev/null
@@ -0,0 +1,141 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that an example given in the documentation really works.
+# See section "Using the TAP test protocol", subsection "Use TAP
+# with the Automake test harness".
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+cat > Makefile.am <<'END'
+TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
+                  $(top_srcdir)/build-aux/tap-driver.sh
+TESTS = foo.test bar.test baz.test
+EXTRA_DIST = $(TESTS)
+END
+
+cat > configure.ac <<'END'
+AC_INIT([GNU Try Tap], [1.0], [bug-automake@gnu.org])
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE([foreign parallel-tests -Wall -Werror])
+AC_CONFIG_FILES([Makefile])
+AC_REQUIRE_AUX_FILE([tap-driver.sh])
+AC_PROG_AWK
+AC_OUTPUT
+END
+
+cat > foo.test <<'END'
+#!/bin/sh
+echo 1..4 # Number of tests to be executed.
+echo 'ok 1 - Swallows fly'
+echo 'not ok 2 - Caterpillars fly # TODO metamorphosis in progress'
+echo 'ok 3 - Pigs fly # SKIP not enough acid'
+echo '# I just love word plays...'
+echo 'ok 4 - Flies fly too :-)'
+END
+
+cat > bar.test <<'END'
+#!/bin/sh
+echo 1..3
+echo 'not ok 1 - Bummer, this test has failed.'
+echo 'ok 2 - This passed though.'
+echo 'Bail out! Ennui kicking in, sorry...'
+echo 'ok 3 - This will not be seen.'
+END
+
+cat > baz.test <<'END'
+#!/bin/sh
+echo 1..1
+echo ok 1
+# Exit with error, even if all the tests have been successful.
+exit 7
+END
+
+chmod a+x *.test
+
+# Strip extra "informative" lines that could be printed by Solaris
+# Distributed Make.
+mkdir build-aux
+cp "$am_scriptdir"/tap-driver.sh build-aux \
+  || framework_failure_ "fetching the perl TAP driver"
+
+(export AUTOMAKE ACLOCAL AUTOCONF && $AUTORECONF -vi) || Exit 1
+
+./configure --help # Sanity check.
+./configure || skip_ "configure failed"
+
+case $MAKE in *\ -j*) skip_ "can't work easily with concurrent make";; esac
+
+# Prevent Sun Distributed Make from trying to run in parallel.
+DMAKE_MODE=serial; export DMAKE_MODE
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+cat > exp <<'END'
+PASS: foo.test 1 - Swallows fly
+XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
+SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
+PASS: foo.test 4 - Flies fly too :-)
+FAIL: bar.test 1 - Bummer, this test has failed.
+PASS: bar.test 2 - This passed though.
+ERROR: bar.test - Bail out! Ennui kicking in, sorry...
+PASS: baz.test 1
+ERROR: baz.test - exited with status 7
+END
+
+sed -n '/^PASS: foo\.test/,/^ERROR: baz\.test/p' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+grep '^Please report to bug-automake@gnu\.org$' stdout
+
+env \
+  TESTS='foo.test baz.test' \
+  TEST_LOG_DRIVER_FLAGS='--comments --ignore-exit' \
+  $MAKE -e check >stdout || { cat stdout; Exit 1; }
+
+cat > exp <<'END'
+PASS: foo.test 1 - Swallows fly
+XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
+SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
+# foo.test: I just love word plays...
+PASS: foo.test 4 - Flies fly too :-)
+PASS: baz.test 1
+END
+
+sed -n '/^PASS: foo\.test/,/^PASS: baz\.test/p' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+# Sanity check the distribution.
+cat > bar.test <<'END'
+#!/bin/sh
+echo 1..1
+echo ok 1
+END
+echo AM_TEST_LOG_DRIVER_FLAGS = --ignore-exit >> Makefile.in
+./config.status Makefile
+$MAKE distcheck
+
+rm -f Makefile.in # To avoid a maintainer-check failure.
+
+:
diff --git a/t/tap-driver-stderr-w.sh b/t/tap-driver-stderr-w.sh
new file mode 100755 (executable)
index 0000000..93b40c0
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-driver-stderr.sh"; then
+    echo "$0: will source $dir/t/tap-driver-stderr.sh"
+    . "$dir/t/tap-driver-stderr.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-driver-stderr.sh'" >&2
+exit '99'
diff --git a/t/tap-driver-stderr.sh b/t/tap-driver-stderr.sh
new file mode 100755 (executable)
index 0000000..bb54ebf
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Unit test on TAP driver:
+#  - error messages from awk/shell/perl goes to the console
+
+required=non-root
+am_create_testdir=empty
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+tst=zardoz
+
+for suf in trs log; do
+
+  rm -f $tst.log $tst.trs
+  touch $tst.$suf
+  chmod a-w $tst.$suf
+
+  st=0
+  ./tap-driver --test-name $tst --log-file $tst.log --trs-file $tst.trs \
+    -- sh -c 'echo 1..1; echo ok 1; echo "Hello, World!"' \
+    >stdout 2>stderr && st=1
+  cat stdout
+  cat stderr >&2
+  cat $tst.log || :
+  cat $tst.trs || :
+  test $st -eq 0
+
+  $FGREP 'Hello, World!' stderr stdout && Exit 1
+  $FGREP $tst.$suf stderr
+
+done
+
+:
diff --git a/t/tap-empty-diagnostic-w.sh b/t/tap-empty-diagnostic-w.sh
new file mode 100755 (executable)
index 0000000..ceb4386
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-empty-diagnostic.sh"; then
+    echo "$0: will source $dir/t/tap-empty-diagnostic.sh"
+    . "$dir/t/tap-empty-diagnostic.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-empty-diagnostic.sh'" >&2
+exit '99'
diff --git a/t/tap-empty-diagnostic.sh b/t/tap-empty-diagnostic.sh
new file mode 100755 (executable)
index 0000000..e3f1e15
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - empty diagnostic messages are discarder
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+sed 's/\$$//' > all.test <<END
+1..1$
+ok 1$
+#$
+# $
+#${tab}$
+#   ${tab} $tab${tab}$
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep '^PASS:.*all\.test' stdout # Sanity check.
+grep '#.*all\.test' stdout && Exit 1
+grep "all\.test[ $tab]*:[ $tab]*$" stdout && Exit 1
+
+:
diff --git a/t/tap-empty-w.sh b/t/tap-empty-w.sh
new file mode 100755 (executable)
index 0000000..7db01e8
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-empty.sh"; then
+    echo "$0: will source $dir/t/tap-empty.sh"
+    . "$dir/t/tap-empty.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-empty.sh'" >&2
+exit '99'
diff --git a/t/tap-empty.sh b/t/tap-empty.sh
new file mode 100755 (executable)
index 0000000..bad40ed
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support: the following situations should be flagged as errors:
+#  - empty TAP input
+#  - blank TAP input
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+# Empty TAP input.
+: > empty.test
+
+# Blank TAP input (one empty line).
+echo > blank.test
+
+# Blank TAP input (one whitespace-only line).
+cat > white.test  <<END
+  ${tab}
+END
+
+# Blank TAP input (few blank and whitespace-only lines).
+cat > white2.test  <<END
+
+
+ ${tab}  ${tab}${tab}
+
+${tab}
+
+END
+
+for input in empty blank white white2; do
+  cp $input.test all.test
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=1 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=1
+  grep '^ERROR: all\.test - missing test plan$' stdout
+done
+
+:
diff --git a/t/tap-escape-directive-2-w.sh b/t/tap-escape-directive-2-w.sh
new file mode 100755 (executable)
index 0000000..f679eb9
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-escape-directive-2.sh"; then
+    echo "$0: will source $dir/t/tap-escape-directive-2.sh"
+    . "$dir/t/tap-escape-directive-2.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-escape-directive-2.sh'" >&2
+exit '99'
diff --git a/t/tap-escape-directive-2.sh b/t/tap-escape-directive-2.sh
new file mode 100755 (executable)
index 0000000..1c72f79
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - "escape" TODO and SKIP directives (by escaping the "#" character)
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+1..8
+
+not ok \ # TODO
+ok \ # SKIP
+
+not ok \\# TODO
+ok \\# SKIP
+
+ok \\\# TODO
+ok \\\# SKIP
+
+not ok \\\\\\\\\\# TODO
+ok     \\\\\\\\\\# SKIP
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=8 pass=2 fail=0 xpass=0 xfail=3 skip=3 error=0
+
+grep '^XFAIL: all\.test 1 .*# TODO' stdout
+grep '^SKIP: all\.test 2 .*# SKIP' stdout
+grep '^XFAIL: all\.test 3 .*# TODO' stdout
+grep '^SKIP: all\.test 4 .*# SKIP' stdout
+grep '^PASS: all\.test 5 .*# TODO' stdout
+grep '^PASS: all\.test 6 .*# SKIP' stdout
+grep '^XFAIL: all\.test 7 .*# TODO' stdout
+grep '^SKIP: all\.test 8 .*# SKIP' stdout
+
+:
diff --git a/t/tap-escape-directive-w.sh b/t/tap-escape-directive-w.sh
new file mode 100755 (executable)
index 0000000..42fbe86
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-escape-directive.sh"; then
+    echo "$0: will source $dir/t/tap-escape-directive.sh"
+    . "$dir/t/tap-escape-directive.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-escape-directive.sh'" >&2
+exit '99'
diff --git a/t/tap-escape-directive.sh b/t/tap-escape-directive.sh
new file mode 100755 (executable)
index 0000000..6067af2
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - "escape" TODO and SKIP directives (by escaping the "#" character)
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+1..2
+ok \# TODO
+ok \# SKIP
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=2 pass=2 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+grep '^PASS: all\.test 1 .*# TODO' stdout
+grep '^PASS: all\.test 2 .*# SKIP' stdout
+
+:
diff --git a/t/tap-exit-w.sh b/t/tap-exit-w.sh
new file mode 100755 (executable)
index 0000000..b7679f1
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-exit.sh"; then
+    echo "$0: will source $dir/t/tap-exit.sh"
+    . "$dir/t/tap-exit.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-exit.sh'" >&2
+exit '99'
diff --git a/t/tap-exit.sh b/t/tap-exit.sh
new file mode 100755 (executable)
index 0000000..2717976
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - an exit status != 0 of a test script causes an hard error
+#  - the '--ignore-exit' option causes the TAP test driver to ignore
+#    exit statuses of the test scripts.
+
+. ./defs || Exit 1
+
+echo TESTS = > Makefile.am
+for st in 1 2 77 99; do
+  unindent > exit${st}.test <<END
+    #!/bin/sh
+    echo 1..1
+    echo ok 1
+    exit $st
+END
+  echo TESTS += exit${st}.test >> Makefile.am
+done
+
+chmod a+x *.test
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=8 pass=4 fail=0 xpass=0 xfail=0 skip=0 error=4
+
+grep '^ERROR: exit1\.test - exited with status 1$' stdout
+grep '^ERROR: exit2\.test - exited with status 2$' stdout
+grep '^ERROR: exit77\.test - exited with status 77$' stdout
+grep '^ERROR: exit99\.test - exited with status 99$' stdout
+
+echo TEST_LOG_DRIVER_FLAGS = --ignore-exit >> Makefile
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=4 pass=4 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+:
diff --git a/t/tap-fancy-w.sh b/t/tap-fancy-w.sh
new file mode 100755 (executable)
index 0000000..65739f5
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-fancy.sh"; then
+    echo "$0: will source $dir/t/tap-fancy.sh"
+    . "$dir/t/tap-fancy.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-fancy.sh'" >&2
+exit '99'
diff --git a/t/tap-fancy.sh b/t/tap-fancy.sh
new file mode 100755 (executable)
index 0000000..846a9d0
--- /dev/null
@@ -0,0 +1,132 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support: some unusual forms for valid TAP input.
+# See also related test 'tap-fancy2.test'.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+#
+# From manpage Test::Harness::TAP(3):
+#
+# ``Lines written to standard output matching /^(not )?ok\b/ must be
+#   interpreted as test lines. All other lines must not be considered
+#   test output.''
+#
+# Unfortunately, the exact format of TODO and SKIP directives is not as
+# clearly described in that manpage; but a simple reverse-engineering of
+# the prove(1) utility shows that it is probably given by the perl regex
+# /#\s*(TODO|SKIP)\b/.
+#
+
+cat > all.test <<END
+1..21
+
+ok? a question
+not ok? a question
+
+ok+plus
+not ok+plus
+
+ok-minus
+not ok-minus
+
+ok#55
+not ok#55
+
+ok${tab}  ${tab}9
+ok ${tab}${tab}          10
+
+not ok${tab}  ${tab}11
+not ok ${tab}${tab}          12
+
+ok# SKIP
+ok${tab}#SKIP--who cares?
+ok?#SKIP!
+ok!#SKIP?
+
+not ok# TODO
+not ok${tab}#TODO--who cares?
+not ok?#TODO!
+not ok!#TODO?
+
+ok~#TODO
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=21 pass=6 fail=6 xfail=4 xpass=1 skip=4 error=0
+
+#
+# "Weird" characters support.
+#
+
+# The "#" character might cause confusion w.r.t. TAP directives (TODO,
+# SKIP), so we don't attempt to use it.
+weirdchars=\''"$!&()[]<>;^?*/@%=,.:'
+
+cat > all.test <<END
+1..6
+ok $weirdchars
+not ok $weirdchars
+ok $weirdchars # TODO
+not ok $weirdchars # TODO
+ok $weirdchars # SKIP
+Bail out! $weirdchars
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=6 pass=1 fail=1 xfail=1 xpass=1 skip=1 error=1
+$FGREP "PASS: all.test 1 $weirdchars" stdout
+$FGREP "FAIL: all.test 2 $weirdchars" stdout
+$FGREP "XPASS: all.test 3 $weirdchars" stdout
+$FGREP "XFAIL: all.test 4 $weirdchars" stdout
+$FGREP "SKIP: all.test 5 $weirdchars" stdout
+$FGREP "ERROR: all.test - Bail out! $weirdchars" stdout
+
+#
+# Trailing backslashes does not confuse the parser.
+#
+
+bs='\'
+
+cat > all.test <<END
+1..6
+ok $bs
+not ok $bs
+ok # TODO $bs
+not ok # TODO $bs
+ok # SKIP $bs
+Bail out! $bs
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=6 pass=1 fail=1 xfail=1 xpass=1 skip=1 error=1
+grep '^PASS: all\.test 1 \\$' stdout
+grep '^FAIL: all\.test 2 \\$' stdout
+grep '^XPASS: all\.test 3 # TODO \\$' stdout
+grep '^XFAIL: all\.test 4 # TODO \\$' stdout
+grep '^SKIP: all\.test 5 # SKIP \\$' stdout
+grep '^ERROR: all\.test - Bail out! \\$' stdout
+
+:
diff --git a/t/tap-fancy2-w.sh b/t/tap-fancy2-w.sh
new file mode 100755 (executable)
index 0000000..ab033f6
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-fancy2.sh"; then
+    echo "$0: will source $dir/t/tap-fancy2.sh"
+    . "$dir/t/tap-fancy2.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-fancy2.sh'" >&2
+exit '99'
diff --git a/t/tap-fancy2.sh b/t/tap-fancy2.sh
new file mode 100755 (executable)
index 0000000..6ab67c9
--- /dev/null
@@ -0,0 +1,137 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support: more unusual forms for valid TAP input.
+# See also related test 'tap-fancy.test'.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+#
+# From manpage Test::Harness::TAP(3):
+#
+# ``Lines written to standard output matching /^(not )?ok\b/ must be
+#   interpreted as test lines. All other lines must not be considered
+#   test output.''
+#
+# Unfortunately, the exact format of TODO and SKIP directives is not as
+# clearly described in that manpage; but a simple reverse-engineering of
+# the prove(1) utility shows that it is probably given by the perl regex
+# /#\s*(TODO|SKIP)\b/.
+#
+
+# To avoid problems with backslashes in echo arguments.
+xecho () { printf '%s\n' "$*"; }
+
+# There are 34 values for $str ...
+for str in \
+  \'  \
+  '"' \
+  '`' \
+  '#' \
+  '$' \
+  '!' \
+  '\' \
+  '/' \
+  '&' \
+  '%' \
+  '(' \
+  ')' \
+  '|' \
+  '^' \
+  '~' \
+  '?' \
+  '*' \
+  '+' \
+  '-' \
+  ',' \
+  ':' \
+  ';' \
+  '=' \
+  '<' \
+  '>' \
+  '@' \
+  '[' \
+  ']' \
+  '{' \
+  '}' \
+  '\\' \
+  '...' \
+  '?[a-zA-Z0-9]*' \
+  '*.*' \
+; do
+  # ... each of them add 1 pass, 1 fail, ...
+  xecho "ok${str}"
+  xecho "not ok${str}"
+  # ... and (generally) 4 skips, 4 xfails, and 4 xpasses ...
+  for settings in \
+    'result="ok" directive=SKIP' \
+    'result="not ok" directive=TODO' \
+    'result="ok" directive=TODO' \
+  ; do
+    eval "$settings"
+    xecho "${result}# ${directive}${str}"
+    # ... but 6 skips, 6 xpasses and 6 xfails are to be removed, since
+    # they might not work with $str = '#' or $str = '\' ...
+    if test x"$str" != x'#' && test x"$str" != x'\'; then
+      xecho "${result}${str}#${directive}"
+      xecho "${result}${str}#   ${tab}${tab} ${directive}"
+      xecho "${result}${str}#${directive}${str}"
+    fi
+  done
+done > all.test
+
+# Sanity check against a previous use of unportable usages of backslashes
+# with the "echo" builtin.
+if grep '[^\\]\\#' all.test; then
+  framework_failure_ "writing backslashes in all.test"
+fi
+
+# ... so that we finally have:
+pass=34
+fail=34
+xfail=130 # = 4 * 34 - 6
+xpass=130 # = 4 * 34 - 6
+skip=130  # = 4 * 34 - 6
+error=0
+total=`expr $pass + $fail + $xfail + $xpass + $skip`
+
+# Even nastier!  But accordingly to the specifics, it should still work.
+for result in 'ok' 'not ok'; do
+  echo "${result}{[(<#${tab}TODO>)]}" >> all.test
+done
+echo "ok{[(<#${tab}SKIP>)]}" >> all.test
+
+# We have to update some test counts.
+xfail=`expr $xfail + 1`
+xpass=`expr $xpass + 1`
+skip=`expr $skip + 1`
+total=`expr $total + 3`
+
+# And add the test plan!
+echo 1..$total >> all.test
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+$EGREP '^(PASS|FAIL|SKIP).*#.*TODO' stdout && Exit 1
+$EGREP '^X?(PASS|FAIL).*#.*SKIP' stdout && Exit 1
+
+count_test_results total=$total pass=$pass fail=$fail skip=$skip \
+                   xpass=$xpass xfail=$xfail error=$error
+
+:
diff --git a/t/tap-global-log-w.sh b/t/tap-global-log-w.sh
new file mode 100755 (executable)
index 0000000..1bc1f0b
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-global-log.sh"; then
+    echo "$0: will source $dir/t/tap-global-log.sh"
+    . "$dir/t/tap-global-log.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-global-log.sh'" >&2
+exit '99'
diff --git a/t/tap-global-log.sh b/t/tap-global-log.sh
new file mode 100755 (executable)
index 0000000..29e582c
--- /dev/null
@@ -0,0 +1,121 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - which log files get copied in the global log?
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > ok.test << 'END'
+1..5
+ok 1
+ok 2
+ok 3
+not seen in global log
+ok 4
+ok 5
+END
+
+cat > top << 'END'
+1..6
+ok 1
+ok 2
+ok 3
+END
+
+cat > bot << 'END'
+ok 5
+ok 6
+END
+
+cat top - bot > skip.test << 'END'
+ok # SKIP
+::skip::
+END
+
+cat top - bot > todo.test << 'END'
+not ok # TODO
+::todo::
+END
+
+cat top - bot > fail.test << 'END'
+not ok
+::fail::
+END
+
+cat top - bot > xpass.test << 'END'
+ok # TODO
+::xpass::
+END
+
+cat top - bot > bail.test << 'END'
+::bail::
+Bail out!
+END
+
+cat top - bot > error.test << 'END'
+::error::
+1..7
+END
+
+# Created with "dd if=/dev/urandom count=1 | base64-encode"
+cat > hodgepodge <<'END'
+1+0 records in
+1+0 records out
+512 bytes (512 B) copied, 0.000241092 s, 2.1 MB/s
+gdivnV4VhL4DOzhE3zULJuun3PwqqQqMdATVcZbIQkNgyRvNBoqqHMBQEs7QsjDbp2nK+Szz
+EcelGyvXmHrW7yImaom6Yrg95k31VCmp/pGDRnTDwDrcOPJiv9jDReEmTAQkPuqLO+mFNly+
+DDHM9fNbzGumstsQ3wq3DOXz1pCV3JXwhjeaHSboeEbmr55bX0XHLSKaecctA0rXDXEyZWZ/
+ODlawSrAXzw0H7a+xBwjnNXZ3zYiwk3x+WQrPqNjb+qXiLLTxAKzx2/KnaFhxkPlte5jPRNB
+FciDolL+H/10LsCdSzLOrGnY2zH6vL2JMZfxjnb73zWFcdWWE01LTD7wpN5O1MP3+N47lcVe
+lWbkD04cJvhwxLElYSO24B743GG5EyGYt9SeZRE6xbgwq3fVOS8KqjwGxwi4adSBTtw0CV8W
+S/6n8dck1vBvjA+qpk0zMSYSqc3+jzW9UiGTmTEIwfw80p/lGNsfjcNBJ86nFkWUnHmrsi8k
+Dv57sK70mTg239g08f5Uvdga/5UreMBSgB0hUj5sbq57r7B1fsVr0Kag468la8zKy3ZEZ0gX
+++sbaJ9WGHhnKvjooeH+4Y6HwAFsdINde++FlCmp4EuNKKEEuXbSKLaOTy3+6pJ2DYdvRCL+
+frZwxH4hcrw8qh+8IakB02viewZS/qT57v4=
+END
+
+exec 5>misc.test
+echo 'ok # SKIP' >&5
+cat hodgepodge >&5
+echo 'not ok # TODO' >&5
+echo 'ok' >&5
+exec 5>&-
+
+cat > skipall.test << 'END'
+1..0 # SKIP all
+END
+
+# We don't care about the exit status of "make check" here.
+TESTS="`echo *.test`" $MAKE -e check || :
+cat test-suite.log
+
+grep ':.*ok|not seen' test-suite.log && Exit 1
+
+for s in skip todo fail xpass bail error; do
+  $FGREP "::$s::" test-suite.log
+done
+
+grep '^1\.\.0 # SKIP all$' test-suite.log
+
+case `cat test-suite.log` in
+  *"`cat hodgepodge`"*) ;;
+  *) Exit 1;;
+esac
+
+:
diff --git a/t/tap-global-result-w.sh b/t/tap-global-result-w.sh
new file mode 100755 (executable)
index 0000000..54ffb7f
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-global-result.sh"; then
+    echo "$0: will source $dir/t/tap-global-result.sh"
+    . "$dir/t/tap-global-result.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-global-result.sh'" >&2
+exit '99'
diff --git a/t/tap-global-result.sh b/t/tap-global-result.sh
new file mode 100755 (executable)
index 0000000..30215c7
--- /dev/null
@@ -0,0 +1,186 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - which global test result derives from different test results
+#    mixed in a single script?
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > ok.test <<END
+1..3
+ok 1
+not ok 2 # TODO
+ok 3 # SKIP
+END
+
+cat > skip.test <<'END'
+1..3
+ok 1 # SKIP
+ok 2 # SKIP
+ok 3 # SKIP
+END
+
+cat > skipall.test <<'END'
+1..0 # SKIP
+foo
+# bar
+END
+
+cat > fail.test <<'END'
+1..1
+not ok 1
+END
+
+(sed '1s/.*/1..4/' ok.test && echo 'not ok 4') > fail2.test
+
+cat > xpass.test <<'END'
+1..1
+ok 1 # TODO
+END
+
+(sed '1s/.*/1..4/' ok.test && echo 'ok 4 # TODO') > xpass2.test
+
+echo 'Bail out!' > bail.test
+
+(cat ok.test && echo 'Bail out!') > bail2.test
+
+cat > bail3.test <<'END'
+1..0 # SKIP
+Bail out!
+END
+
+# Too many tests.
+cat > error.test <<'END'
+1..2
+ok 1
+ok 2 # SKIP
+not ok 3
+not ok 4 # TODO
+END
+
+# Too few tests.
+cat > error2.test <<'END'
+1..4
+ok 1
+not ok 2 # TODO
+ok 3 # SKIP
+END
+
+# Repeated plan.
+cat > error3.test <<'END'
+1..2
+1..2
+ok 1
+ok 2
+END
+
+# Too many tests, after a "SKIP" plan.
+cat > error4.test <<'END'
+1..0 # SKIP
+ok 1
+ok 2
+END
+
+# Tests out of order.
+cat > error5.test <<'END'
+1..4
+not ok 1 # TODO
+ok 3
+ok 2
+ok 4
+END
+
+# Wrong test number.
+cat > error6.test <<'END'
+1..2
+ok 1 # SKIP
+ok 7
+END
+
+# No plan.
+cat > error7.test <<'END'
+ok 1 # SKIP
+ok 2 # TODO
+not ok 3 # TODO
+ok 4
+END
+
+cat > hodgepodge.test <<'END'
+1..2
+not ok 1
+ok 2 # TODO
+Bail out!
+END
+
+cat > hodgepodge-all.test <<'END'
+1..4
+ok 1
+ok 2 # SKIP
+not ok 2 # TODO
+not ok 3
+ok 4 # TODO
+Bail out!
+END
+
+tests=`echo *.test` # Also required later.
+
+TESTS="$tests" $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+# Dirty trick required here.
+for tst in `echo " $tests " | sed 's/.test / /'`; do
+  echo :copy-in-global-log: yes >> $tst.trs
+done
+
+rm -f test-suite.log
+TESTS="$tests" $MAKE -e test-suite.log && Exit 1
+cat test-suite.log
+
+have_rst_section ()
+{
+  eqeq=`echo "$1" | sed 's/./=/g'`
+  # Assume $1 contains no RE metacharacters.
+  sed -n "/^$1$/,/^$eqeq$/p" test-suite.log > got
+  (echo "$1" && echo "$eqeq") > exp
+  cat exp
+  cat got
+  diff exp got
+}
+
+have_rst_section 'PASS: ok'
+have_rst_section 'SKIP: skip'
+have_rst_section 'SKIP: skipall'
+have_rst_section 'FAIL: fail'
+have_rst_section 'FAIL: fail2'
+have_rst_section 'FAIL: xpass'
+have_rst_section 'FAIL: xpass2'
+have_rst_section 'ERROR: bail'
+have_rst_section 'ERROR: bail2'
+have_rst_section 'ERROR: bail3'
+have_rst_section 'ERROR: error'
+have_rst_section 'ERROR: error2'
+have_rst_section 'ERROR: error3'
+have_rst_section 'ERROR: error4'
+have_rst_section 'ERROR: error5'
+have_rst_section 'ERROR: error6'
+have_rst_section 'ERROR: error7'
+have_rst_section 'ERROR: hodgepodge'
+have_rst_section 'ERROR: hodgepodge-all'
+
+:
diff --git a/t/tap-log-w.sh b/t/tap-log-w.sh
new file mode 100755 (executable)
index 0000000..28937a2
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-log.sh"; then
+    echo "$0: will source $dir/t/tap-log.sh"
+    . "$dir/t/tap-log.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-log.sh'" >&2
+exit '99'
diff --git a/t/tap-log.sh b/t/tap-log.sh
new file mode 100755 (executable)
index 0000000..5faf838
--- /dev/null
@@ -0,0 +1,163 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - log file creation
+#  - log file removal
+#  - stdout and stderr of a script go in its log file
+#  - TEST_SUITE_LOG redefinition, at either automake or make time
+#  - VERBOSE environment variable support
+# Keep in sync with 'test-log.test'.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+TESTS = pass.test skip.test xfail.test fail.test xpass.test error.test
+TEST_SUITE_LOG = global.log
+END
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+# Custom markers, for use in grepping checks.
+cmarker=::: # comment marker
+pmarker=%%% # plain maker
+
+cat > pass.test <<END
+#! /bin/sh -e
+echo 1..1
+echo   "$pmarker pass $pmarker" >&2
+echo "# $cmarker pass $cmarker" >&2
+echo "ok 1"
+END
+
+cat > skip.test <<END
+#! /bin/sh -e
+echo 1..1
+echo   "$pmarker skip $pmarker"
+echo "# $cmarker skip $cmarker"
+echo "ok 1 # SKIP"
+END
+
+cat > xfail.test <<END
+#! /bin/sh -e
+echo 1..1
+echo   "$pmarker xfail $pmarker" >&2
+echo "# $cmarker xfail $cmarker" >&2
+echo "not ok 1 # TODO"
+END
+
+cat > fail.test <<END
+#! /bin/sh -e
+echo 1..1
+echo   "$pmarker fail $pmarker"
+echo "# $cmarker fail $cmarker"
+echo "not ok 1"
+END
+
+cat > xpass.test <<END
+#! /bin/sh -e
+echo 1..1
+echo   "$pmarker xpass $pmarker" >&2
+echo "# $cmarker xpass $cmarker" >&2
+echo "ok 1 # TODO"
+END
+
+cat > error.test <<END
+#! /bin/sh -e
+echo 1..1
+echo   "$pmarker error $pmarker"
+echo "# $cmarker error $cmarker"
+echo 'Bail out!'
+END
+
+chmod a+x *.test
+
+TEST_SUITE_LOG=my.log $MAKE -e check && Exit 1
+ls -l # For debugging.
+test ! -f test-suite.log
+test ! -f global.log
+test -f my.log
+st=0
+for result in pass fail xfail xpass skip error; do
+  cat $result.log # For debugging.
+  $FGREP "$pmarker $result $pmarker" $result.log || st=1
+  $FGREP "$cmarker $result $cmarker" $result.log || st=1
+done
+test $st -eq 0 || Exit 1
+cat my.log # For debugging.
+for result in xfail fail xpass skip error; do
+  cat $result.log # For debugging.
+  $FGREP "$pmarker $result $pmarker" my.log || st=1
+  $FGREP "$cmarker $result $cmarker" my.log || st=1
+done
+test `$FGREP -c "$pmarker" my.log` -eq 5
+test `$FGREP -c "$cmarker" my.log` -eq 5
+
+# Passed test scripts shouldn't be mentioned in the global log.
+$EGREP '(^pass|[^x]pass)\.test' my.log && Exit 1
+# But failing (expectedly or not) and skipped ones should.
+$FGREP 'xfail.test' my.log
+$FGREP 'skip.test' my.log
+$FGREP 'fail.test' my.log
+$FGREP 'xpass.test' my.log
+$FGREP 'error.test' my.log
+
+touch error2.log test-suite.log global.log
+TEST_SUITE_LOG=my.log $MAKE -e mostlyclean
+ls -l # For debugging.
+test ! -f my.log
+test ! -f pass.log
+test ! -f fail.log
+test ! -f xfail.log
+test ! -f xpass.log
+test ! -f skip.log
+test ! -f error.log
+# "make mostlyclean" shouldn't remove unrelated log files.
+test -f error2.log
+test -f test-suite.log
+test -f global.log
+
+rm -f *.log
+
+VERBOSE=yes $MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+cat global.log
+test ! -f my.log
+test ! -f test-suite.log
+# Check that VERBOSE causes the global testsuite log to be
+# emitted on stdout.
+out=`cat stdout`
+log=`cat global.log`
+case $out in *"$log"*) ;; *) Exit 1;; esac
+
+touch error2.log test-suite.log my.log
+$MAKE clean
+ls -l # For debugging.
+test ! -f global.log
+test ! -f pass.log
+test ! -f fail.log
+test ! -f xfail.log
+test ! -f xpass.log
+test ! -f skip.log
+test ! -f error.log
+# "make clean" shouldn't remove unrelated log files.
+test -f error2.log
+test -f test-suite.log
+test -f my.log
+
+rm -f *.log
+
+:
diff --git a/t/tap-merge-stdout-stderr-w.sh b/t/tap-merge-stdout-stderr-w.sh
new file mode 100755 (executable)
index 0000000..7699c3f
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-merge-stdout-stderr.sh"; then
+    echo "$0: will source $dir/t/tap-merge-stdout-stderr.sh"
+    . "$dir/t/tap-merge-stdout-stderr.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-merge-stdout-stderr.sh'" >&2
+exit '99'
diff --git a/t/tap-merge-stdout-stderr.sh b/t/tap-merge-stdout-stderr.sh
new file mode 100755 (executable)
index 0000000..bca96a2
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - The Automake TAP driver has an option that instruct it to read TAP
+#    input also from the stderr of the test command, not only its stdout.
+
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+cat > Makefile.am << 'END'
+AM_TEST_LOG_DRIVER_FLAGS = --comments --merge
+TESTS = all.test
+END
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+#!/bin/sh
+echo 1..4
+echo ok 1 >&2
+echo ok 2
+echo "not ok 3 # TODO" >&2
+echo "ok 4 # SKIP"
+echo "# foo foo foo" >&2
+END
+chmod a+x all.test
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=4 pass=2 fail=0 xpass=0 xfail=1 skip=1 error=0
+grep '^# all\.test: foo foo foo' stdout
+
+cat > all.test <<END
+#!/bin/sh
+echo 1..1
+echo ok 1
+echo 'Bail out!' >&2
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=2 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=1
+
+# See that the option '--no-merge' can override the effect of '--merge'.
+
+TEST_LOG_DRIVER_FLAGS=--no-merge $MAKE -e check >stdout \
+  || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=1 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+
+
+:
diff --git a/t/tap-missing-plan-and-bad-exit-w.sh b/t/tap-missing-plan-and-bad-exit-w.sh
new file mode 100755 (executable)
index 0000000..d562af0
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-missing-plan-and-bad-exit.sh"; then
+    echo "$0: will source $dir/t/tap-missing-plan-and-bad-exit.sh"
+    . "$dir/t/tap-missing-plan-and-bad-exit.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-missing-plan-and-bad-exit.sh'" >&2
+exit '99'
diff --git a/t/tap-missing-plan-and-bad-exit.sh b/t/tap-missing-plan-and-bad-exit.sh
new file mode 100755 (executable)
index 0000000..31a702c
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - if a test script exits with non-zero status before printing the TAP
+#    plan, then the driver reports both "missing plan" and "exited with
+#    non-zero status" errors.
+
+. ./defs || Exit 1
+
+cat > foo.test <<END
+#!/bin/sh
+exit 123
+END
+
+echo TESTS = foo.test > Makefile.am
+
+chmod a+x foo.test
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=2 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=2
+
+grep '^ERROR: foo\.test - exited with status 123$' stdout
+grep '^ERROR: foo\.test - missing test plan$' stdout
+
+:
diff --git a/t/tap-more-w.sh b/t/tap-more-w.sh
new file mode 100755 (executable)
index 0000000..870140e
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-more.sh"; then
+    echo "$0: will source $dir/t/tap-more.sh"
+    . "$dir/t/tap-more.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-more.sh'" >&2
+exit '99'
diff --git a/t/tap-more.sh b/t/tap-more.sh
new file mode 100755 (executable)
index 0000000..7970d7f
--- /dev/null
@@ -0,0 +1,171 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# More on TAP support:
+#  - more than one TAP-generating test script in $(TESTS)
+#  - VPATH builds
+#  - use with parallel make (if supported)
+#  - basic use of diagnostic messages (lines beginning with "#")
+#  - flags for TAP driver defined through AC_SUBST in configure.ac
+#  - messages generated by the testsuite harness reference the
+#    correct test script(s)
+#  - "make distcheck" works
+
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+cat >> configure.ac <<END
+AC_SUBST([AM_TEST_LOG_DRIVER_FLAGS], ['--comments'])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(srcdir)/tap-driver
+TESTS = 1.test 2.test 3.test
+EXTRA_DIST = $(TESTS) tap-driver
+END
+
+cat > 1.test <<'END'
+#! /bin/sh
+echo 1..2
+echo ok 1 - mu
+if test -f not-skip; then
+  echo "not ok 2 zardoz"
+else
+  echo "ok 2 zardoz # SKIP"
+fi
+END
+
+cat > 2.test <<'END'
+#! /bin/sh
+echo 1..3
+echo "ok"
+echo "not ok # TODO not implemented"
+echo "ok 3"
+END
+
+cat > 3.test <<END
+#! /bin/sh
+echo 1..1
+echo ok - blah blah blah
+echo '# Some diagnostic'
+if test -f bail-out; then
+  echo 'Bail out! Kernel Panic'
+else
+  :
+fi
+END
+
+chmod a+x [123].test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# Try a VPATH and by default serial build first, and then an in-tree
+# and by default parallel build.
+for try in 0 1; do
+
+  if test $try -eq 0; then
+    # VPATH serial build.
+    mkdir build
+    cd build
+    srcdir=..
+    run_make=$MAKE
+  elif test $try -eq 1; then
+    # In-tree parallel build.
+    srcdir=.
+    case $MAKE in
+      *\ -j*)
+        # Degree of parallelism already specified by the user: do
+        # not override it.
+        run_make=$MAKE
+        ;;
+      *)
+        # Some make implementations (e.g., HP-UX) don't grok '-j',
+        # some require no space between '-j' and the number of jobs
+        # (e.g., older GNU make versions), and some *do* require a
+        # space between '-j' and the number of jobs (e.g., Solaris
+        # dmake).  We need a runtime test to see what works.
+        echo 'all:' > Makefile
+        for run_make in "$MAKE -j3" "$MAKE -j 3" "$MAKE"; do
+          $run_make && break
+        done
+        rm -f Makefile
+        ;;
+    esac
+  else
+    fatal_ "internal error, invalid value of '$try' for \$try"
+  fi
+
+  $srcdir/configure
+  ls -l # For debugging.
+
+  # Success.
+
+  # Use append mode here to avoid dropping output.  See automake bug#11413.
+  # Also, use 'echo' here to "nullify" the previous contents of 'stdout',
+  # since Solaris 10 /bin/sh would try to optimize a ':' away after the
+  # first iteration, even if it is redirected.
+  echo " " >stdout
+  $run_make check >>stdout || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=6 pass=4 fail=0 xpass=0 xfail=1 skip=1 error=0
+  grep '^PASS: 1\.test 1 - mu$' stdout
+  grep '^SKIP: 1\.test 2 zardoz # SKIP$' stdout
+  test `$FGREP -c '1.test' stdout` -eq 2
+  grep '^PASS: 2\.test 1$' stdout
+  grep '^XFAIL: 2\.test 2 # TODO not implemented$' stdout
+  grep '^PASS: 2\.test 3$' stdout
+  test `$FGREP -c '2.test' stdout` -eq 3
+  grep '^PASS: 3\.test 1 - blah blah blah$' stdout
+  grep '^# 3\.test: Some diagnostic$' stdout
+  test `$FGREP -c '3.test' stdout` -eq 2
+
+  # Failure.
+
+  # Use 'echo' here, since Solaris 10 /bin/sh would try to optimize
+  # a ':' away after the first iteration, even if it is redirected.
+  echo dummy > not-skip
+  echo dummy > bail-out
+  # Use append mode here to avoid dropping output.  See automake bug#11413.
+  # Also, use 'echo' here to "nullify" the previous contents of 'stdout',
+  # since Solaris 10 /bin/sh would try to optimize a ':' away after the
+  # first iteration, even if it is redirected.
+  echo " " >stdout
+  $run_make check >>stdout && { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=7 pass=4 fail=1 xpass=0 xfail=1 skip=0 error=1
+  grep '^PASS: 1\.test 1 - mu$' stdout
+  grep '^FAIL: 1\.test 2 zardoz$' stdout
+  test `$FGREP -c '1.test' stdout` -eq 2
+  grep '^PASS: 2\.test 1$' stdout
+  grep '^XFAIL: 2\.test 2 # TODO not implemented$' stdout
+  grep '^PASS: 2\.test 3$' stdout
+  test `$FGREP -c '2.test' stdout` -eq 3
+  grep '^PASS: 3\.test 1 - blah blah blah$' stdout
+  grep '^# 3\.test: Some diagnostic$' stdout
+  grep '^ERROR: 3\.test - Bail out! Kernel Panic$' stdout
+  test `$FGREP -c '3.test' stdout` -eq 3
+
+  cd $srcdir
+
+done
+
+$MAKE distcheck
+
+:
diff --git a/t/tap-more2-w.sh b/t/tap-more2-w.sh
new file mode 100755 (executable)
index 0000000..ce39283
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-more2.sh"; then
+    echo "$0: will source $dir/t/tap-more2.sh"
+    . "$dir/t/tap-more2.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-more2.sh'" >&2
+exit '99'
diff --git a/t/tap-more2.sh b/t/tap-more2.sh
new file mode 100755 (executable)
index 0000000..b34e3c1
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# More on TAP support:
+#  - more LOG_COMPILER at once for TAP tests
+#  - binary programs in $(TESTS)
+#  - interactions with 'check_*' variables
+
+required='cc native'
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+cat >> configure.ac <<END
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_EXTENSIONS = .sh .tap
+
+tap_driver = $(srcdir)/tap-driver
+
+LOG_DRIVER = $(tap_driver)
+SH_LOG_DRIVER = $(tap_driver)
+TAP_LOG_DRIVER = $(tap_driver)
+
+TAP_LOG_COMPILER = cat
+SH_LOG_COMPILER = $(SHELL)
+LOG_COMPILER =
+
+EXTRA_DIST = baz.tap
+
+check_SCRIPTS = bar.sh
+bar.sh: Makefile
+       echo '#!/bin/sh' > $@-t
+       echo 'echo 1..1' >> $@-t
+       echo 'echo "not ok 1 # TODO"' >> $@-t
+       chmod a-w $@-t && mv -f $@-t $@
+CLEANFILES = bar.sh
+
+check_PROGRAMS = foo-test
+foo_test_SOURCES = foo.c
+
+TESTS = foo-test $(check_SCRIPTS) baz.tap
+
+EXTRA_DIST += tap-driver
+END
+
+cat > foo.c <<'END'
+#include <stdio.h>
+int main (void)
+{
+  printf ("1..1\n");
+  printf ("ok 1\n");
+  return 0;
+}
+END
+
+cat > baz.tap << 'END'
+1..1
+ok 1 # SKIP
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+for target in check distcheck; do
+  $MAKE $target >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=3 pass=1 fail=0 xpass=0 xfail=1 skip=1 error=0
+done
+
+:
diff --git a/t/tap-msg0-bailout-w.sh b/t/tap-msg0-bailout-w.sh
new file mode 100755 (executable)
index 0000000..63247d5
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-msg0-bailout.sh"; then
+    echo "$0: will source $dir/t/tap-msg0-bailout.sh"
+    . "$dir/t/tap-msg0-bailout.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-msg0-bailout.sh'" >&2
+exit '99'
diff --git a/t/tap-msg0-bailout.sh b/t/tap-msg0-bailout.sh
new file mode 100755 (executable)
index 0000000..b9ef141
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - literal strings "0" and "0.0" as a test description in the message
+#    of a "plan with skip" TAP plan
+# generally true!
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+echo 'Bail out! 0' > a.test
+echo 'Bail out! 0.0' > b.test
+
+TESTS='a.test b.test' $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=2 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=2
+
+grep '^ERROR: a.test - Bail out! 0$' stdout
+grep '^ERROR: b.test - Bail out! 0\.0$' stdout
+
+:
diff --git a/t/tap-msg0-directive-w.sh b/t/tap-msg0-directive-w.sh
new file mode 100755 (executable)
index 0000000..7a353f9
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-msg0-directive.sh"; then
+    echo "$0: will source $dir/t/tap-msg0-directive.sh"
+    . "$dir/t/tap-msg0-directive.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-msg0-directive.sh'" >&2
+exit '99'
diff --git a/t/tap-msg0-directive.sh b/t/tap-msg0-directive.sh
new file mode 100755 (executable)
index 0000000..cbd2fce
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - literal string "0" as a TODO or SKIP message
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test << 'END'
+1..3
+ok 1 # TODO 0
+not ok 2 # TODO 0
+ok 3 # SKIP 0
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=3 pass=0 fail=0 xpass=1 xfail=1 skip=1 error=0
+
+grep '^XPASS: all\.test 1 # TODO 0$' stdout
+grep '^XFAIL: all\.test 2 # TODO 0$' stdout
+grep '^SKIP: all\.test 3 # SKIP 0$' stdout
+
+:
diff --git a/t/tap-msg0-misc-w.sh b/t/tap-msg0-misc-w.sh
new file mode 100755 (executable)
index 0000000..6321bac
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-msg0-misc.sh"; then
+    echo "$0: will source $dir/t/tap-msg0-misc.sh"
+    . "$dir/t/tap-msg0-misc.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-msg0-misc.sh'" >&2
+exit '99'
diff --git a/t/tap-msg0-misc.sh b/t/tap-msg0-misc.sh
new file mode 100755 (executable)
index 0000000..06f400b
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - literal "0" and "0.0" in a test description and a TODO/SKIP message
+#    at the same time
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test << 'END'
+1..14
+
+ok 1 0
+ok 2 0.0
+
+ok 3 0   # TODO 0
+ok 4 0.0 # TODO 0
+ok 5 0   # TODO 0.0
+ok 6 0.0 # TODO 0.0
+
+not ok 7 0   # TODO 0
+not ok 8 0.0 # TODO 0
+not ok 9 0   # TODO 0.0
+not ok 10 0.0 # TODO 0.0
+
+ok 11 0   # SKIP 0
+ok 12 0.0 # SKIP 0
+ok 13 0   # SKIP 0.0
+ok 14 0.0 # SKIP 0.0
+
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=14 pass=2 fail=0 xpass=4 xfail=4 skip=4 error=0
+
+sed '/^ *$/d' > exp << 'END'
+
+PASS: all.test 1 0
+PASS: all.test 2 0.0
+
+XPASS: all.test 3 0 # TODO 0
+XPASS: all.test 4 0.0 # TODO 0
+XPASS: all.test 5 0 # TODO 0.0
+XPASS: all.test 6 0.0 # TODO 0.0
+
+XFAIL: all.test 7 0 # TODO 0
+XFAIL: all.test 8 0.0 # TODO 0
+XFAIL: all.test 9 0 # TODO 0.0
+XFAIL: all.test 10 0.0 # TODO 0.0
+
+SKIP: all.test 11 0 # SKIP 0
+SKIP: all.test 12 0.0 # SKIP 0
+SKIP: all.test 13 0 # SKIP 0.0
+SKIP: all.test 14 0.0 # SKIP 0.0
+
+END
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-msg0-planskip-w.sh b/t/tap-msg0-planskip-w.sh
new file mode 100755 (executable)
index 0000000..6069c65
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-msg0-planskip.sh"; then
+    echo "$0: will source $dir/t/tap-msg0-planskip.sh"
+    . "$dir/t/tap-msg0-planskip.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-msg0-planskip.sh'" >&2
+exit '99'
diff --git a/t/tap-msg0-planskip.sh b/t/tap-msg0-planskip.sh
new file mode 100755 (executable)
index 0000000..7f435e9
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - literal strings "0" and "0.0" as the reason of the skip in a "TAP
+#    plan with skip" (i.e., "1..0 # SKIP ...").
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+echo '1..0 # SKIP 0' > a.test
+echo '1..0 # SKIP 0.0' > b.test
+
+TESTS='a.test b.test' $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=2 pass=0 fail=0 xpass=0 xfail=0 skip=2 error=0
+
+grep '^SKIP: a.test - 0$' stdout
+grep '^SKIP: b.test - 0\.0$' stdout
+
+:
diff --git a/t/tap-msg0-result-w.sh b/t/tap-msg0-result-w.sh
new file mode 100755 (executable)
index 0000000..b23d99d
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-msg0-result.sh"; then
+    echo "$0: will source $dir/t/tap-msg0-result.sh"
+    . "$dir/t/tap-msg0-result.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-msg0-result.sh'" >&2
+exit '99'
diff --git a/t/tap-msg0-result.sh b/t/tap-msg0-result.sh
new file mode 100755 (executable)
index 0000000..a2cc0a5
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - the string "0" as a test description
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test << 'END'
+1..10
+ok 1 0
+ok - 0
+not ok 3 0
+not ok - 0
+ok 5 0 # TODO
+ok - 0 # TODO
+not ok 7 0 # TODO
+not ok - 0 # TODO
+ok 9 0 # SKIP
+ok - 0 # SKIP
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=10 pass=2 fail=2 xpass=2 xfail=2 skip=2 error=0
+
+cat > exp << 'END'
+PASS: all.test 1 0
+PASS: all.test 2 - 0
+FAIL: all.test 3 0
+FAIL: all.test 4 - 0
+XPASS: all.test 5 0 # TODO
+XPASS: all.test 6 - 0 # TODO
+XFAIL: all.test 7 0 # TODO
+XFAIL: all.test 8 - 0 # TODO
+SKIP: all.test 9 0 # SKIP
+SKIP: all.test 10 - 0 # SKIP
+END
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-negative-numbers-w.sh b/t/tap-negative-numbers-w.sh
new file mode 100755 (executable)
index 0000000..e59d8b5
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-negative-numbers.sh"; then
+    echo "$0: will source $dir/t/tap-negative-numbers.sh"
+    . "$dir/t/tap-negative-numbers.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-negative-numbers.sh'" >&2
+exit '99'
diff --git a/t/tap-negative-numbers.sh b/t/tap-negative-numbers.sh
new file mode 100755 (executable)
index 0000000..11661a1
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - don't spuriously recognize negative TAP result numbers, but correctly
+#    interpret them as test descriptions instead
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+1..7
+ok -1
+not ok -3
+ok -2 # SKIP
+not ok -5 # TODO
+ok -04 # TODO
+ok -121
+not ok -50000
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=7 pass=2 fail=2 xpass=1 xfail=1 skip=1 error=0
+
+cat > exp <<'END'
+PASS: all.test 1 -1
+FAIL: all.test 2 -3
+SKIP: all.test 3 -2 # SKIP
+XFAIL: all.test 4 -5 # TODO
+XPASS: all.test 5 -04 # TODO
+PASS: all.test 6 -121
+FAIL: all.test 7 -50000
+END
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-no-disable-hard-error-w.sh b/t/tap-no-disable-hard-error-w.sh
new file mode 100755 (executable)
index 0000000..b67ccd6
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-no-disable-hard-error.sh"; then
+    echo "$0: will source $dir/t/tap-no-disable-hard-error.sh"
+    . "$dir/t/tap-no-disable-hard-error.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-no-disable-hard-error.sh'" >&2
+exit '99'
diff --git a/t/tap-no-disable-hard-error.sh b/t/tap-no-disable-hard-error.sh
new file mode 100755 (executable)
index 0000000..5fa587d
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - "Bail out!" magic and TAP parse errors are not disabled nor turned
+#    into simple failures by the definition DISABLE_HARD_ERRORS.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+DISABLE_HARD_ERRORS = yes
+TEST_LOG_COMPILER = cat
+TESTS = bail.test few.test noplan.test
+END
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > bail.test <<END
+1..1
+Bail out!
+END
+
+cat > few.test <<END
+1..1
+END
+
+cat > noplan.test <<END
+# nothing here
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=3 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=3
+
+:
diff --git a/t/tap-no-merge-stdout-stderr-w.sh b/t/tap-no-merge-stdout-stderr-w.sh
new file mode 100755 (executable)
index 0000000..1f39e5c
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-no-merge-stdout-stderr.sh"; then
+    echo "$0: will source $dir/t/tap-no-merge-stdout-stderr.sh"
+    . "$dir/t/tap-no-merge-stdout-stderr.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-no-merge-stdout-stderr.sh'" >&2
+exit '99'
diff --git a/t/tap-no-merge-stdout-stderr.sh b/t/tap-no-merge-stdout-stderr.sh
new file mode 100755 (executable)
index 0000000..eb6b080
--- /dev/null
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - By default, TAP input is only from the stdout (and not the stderr)
+#    of the test command.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER_FLAGS = --comments
+TESTS = all.test
+END
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+#!/bin/sh
+echo 1..2
+echo 'not ok' >&2
+echo 'not ok 1 # TODO' >&2
+echo 'ok 1'
+echo '# foo foo foo'
+echo '# bar bar bar' >&2
+echo 'ok 44 # TODO' >&2
+echo 'Bail out!' >&2
+echo 'ok 2 # SKIP'
+END
+
+chmod a+x all.test
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=2 pass=1 fail=0 xpass=0 xfail=0 skip=1 error=0
+$FGREP 'foo foo foo' stdout
+$FGREP 'bar bar bar' stdout && Exit 1
+
+:
diff --git a/t/tap-no-spurious-numbers-w.sh b/t/tap-no-spurious-numbers-w.sh
new file mode 100755 (executable)
index 0000000..d3d15cf
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-no-spurious-numbers.sh"; then
+    echo "$0: will source $dir/t/tap-no-spurious-numbers.sh"
+    . "$dir/t/tap-no-spurious-numbers.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-no-spurious-numbers.sh'" >&2
+exit '99'
diff --git a/t/tap-no-spurious-numbers.sh b/t/tap-no-spurious-numbers.sh
new file mode 100755 (executable)
index 0000000..4cdace0
--- /dev/null
@@ -0,0 +1,98 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - we shouldn't spuriously recognize as TAP result numbers what it
+#    not, even if it seems pretty close
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > prefixes <<'END'
+A
+a
+_
++
+-
+=
+/
+*
+.
+:
+,
+;
+$
+@
+%
+&
+#
+?
+!
+|
+\
+"
+`
+'
+(
+)
+[
+]
+{
+}
+<
+>
+END
+
+n=`wc -l <prefixes`
+
+# See the loop below to understand this initialization.
+pass=`expr $n '*' 3`
+fail=$pass
+skip=`expr $pass - 3`
+xfail=$skip
+xpass=$xfail
+error=0
+total=`expr $pass + $fail + $skip + $xfail + $xpass`
+
+echo 1..$total > all.test
+
+highno=1000
+
+for result in 'ok' 'not ok'; do
+  for spacing in "" " " "$tab"; do
+    subst="$result &$spacing$higno"
+    sed -e "s|.*|$subst|" prefixes
+    for directive in TODO SKIP; do
+      test "$result $directive" != "not ok SKIP" || continue
+      sed -e '/^#$/d' -e "s|.*|$subst # $directive|" prefixes
+    done
+  done
+done >> all.test
+
+cat all.test # For debugging.
+
+# Sanity checks.
+grep '#.*#' all.test && framework_failure_ "creating all.test"
+test `wc -l <all.test` -lt $highno || framework_failure_ "creating all.test"
+
+$MAKE check >stdout || :
+cat stdout
+
+count_test_results total=$total pass=$pass fail=$fail skip=$skip \
+                   xpass=$xpass xfail=$xfail error=$error
+
+:
diff --git a/t/tap-no-spurious-summary-w.sh b/t/tap-no-spurious-summary-w.sh
new file mode 100755 (executable)
index 0000000..5df8cf3
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-no-spurious-summary.sh"; then
+    echo "$0: will source $dir/t/tap-no-spurious-summary.sh"
+    . "$dir/t/tap-no-spurious-summary.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-no-spurious-summary.sh'" >&2
+exit '99'
diff --git a/t/tap-no-spurious-summary.sh b/t/tap-no-spurious-summary.sh
new file mode 100755 (executable)
index 0000000..a6437d8
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - ':test-results:' directives in test scripts' output doesn't
+#    originate spurious results in the testsuite summary
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+1..1
+:test-result: PASS
+:test-result: FAIL
+:test-result: XPASS
+:test-result: XFAIL
+:test-result: SKIP
+:test-result: ERROR
+:test-result: UNKNOWN
+ok 1
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=1 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+for result in PASS FAIL XPASS XFAIL SKIP ERROR UNKNOWN; do
+  grep "^ *:test-result: $result$" all.log
+done
+
+:
diff --git a/t/tap-no-spurious-w.sh b/t/tap-no-spurious-w.sh
new file mode 100755 (executable)
index 0000000..51c7c8e
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-no-spurious.sh"; then
+    echo "$0: will source $dir/t/tap-no-spurious.sh"
+    . "$dir/t/tap-no-spurious.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-no-spurious.sh'" >&2
+exit '99'
diff --git a/t/tap-no-spurious.sh b/t/tap-no-spurious.sh
new file mode 100755 (executable)
index 0000000..b9bca21
--- /dev/null
@@ -0,0 +1,113 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - don't spuriously recognize lines that are "almost" TAP lines as
+#    real TAP lines
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+echo 1..5 > all.test
+
+# The only recognized directives are "TODO" and "SKIP".
+# So the following should count as passed tests.
+cat >> all.test <<END
+ok 1 # XFAIL
+ok 2 # SKIPPED
+ok 3 # TO DO
+ok 4 # TODOALL
+ok 5 # FIXME
+END
+
+# According to documentation of Test::Harness::TAP(3):
+#
+#  ``Lines written to standard output matching /^(not )?ok\b/
+#    must be interpreted as test lines. All other lines must
+#    not be considered test output.''
+
+cat >> all.test <<END
+ ok
+ ok 1
+${tab}ok
+${tab}ok 1
+ not ok
+ not ok 1
+${tab}not ok
+${tab}not ok 1
+notok
+notok 1
+not${tab}ok
+not${tab}ok 1
+not  ok
+not  ok 1
+no ok
+no ok 1
+# ok
+# not ok
+# ok 1
+# not ok 1
+#ok
+#not ok
+#ok 1
+#not ok 1
+END
+
+set +x # Don't pollute logs too much.
+for r in 'ok' 'not ok'; do
+  for s1 in \
+    a b c d e f g h i j k l m n o p q r s t u v w x y z \
+    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \
+    0 1 2 3 4 5 6 7 8 9 _ ab 0a 23 a1B2c _o _x_y_
+  do
+    for s2 in '' @ % + - = / . : \; \* \? \& \! \# \$ \< \> \\; do
+      printf '%s\n' "$r$s1$s2"
+    done
+  done
+done >> all.test
+set -x # Reset shell xtraces.
+
+# The prove(1) utility doesn't bail out on these, so our driver
+# shouldn't either.
+# See comments in 'tap-bailout-leading-space.test' for an explanation
+# of why we don't have a whitespace-prepended "Bail out!" line here.
+cat >> all.test <<'END'
+bailout
+bailout!
+bail out
+bail out!
+Bailout
+Bailout!
+Bail out
+ Bail out
+#Bail out!
+# Bail out!
+END
+
+cat all.test # For debugging.
+
+# Minor sanity check.
+test `grep -c '^ok1$' all.test` -eq 1 \
+  && test `grep -c '^not ok1$' all.test` -eq 1 \
+  || framework_failure_ "creating all.test"
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=5 pass=5 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+:
diff --git a/t/tap-not-ok-skip-w.sh b/t/tap-not-ok-skip-w.sh
new file mode 100755 (executable)
index 0000000..4c0e5f5
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-not-ok-skip.sh"; then
+    echo "$0: will source $dir/t/tap-not-ok-skip.sh"
+    . "$dir/t/tap-not-ok-skip.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-not-ok-skip.sh'" >&2
+exit '99'
diff --git a/t/tap-not-ok-skip.sh b/t/tap-not-ok-skip.sh
new file mode 100755 (executable)
index 0000000..f52127c
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - a "not ok # SKIP" line should count as a failure, for consistency
+#    with the prove(1) utility.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+1..4
+not ok # SKIP
+not ok 2 # SKIP
+not ok - foo # SKIP
+not ok 4 - bar # SKIP
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=4 pass=0 fail=4 skip=0 xpass=0 xfail=0 error=0
+
+:
diff --git a/t/tap-number-wordboundary-w.sh b/t/tap-number-wordboundary-w.sh
new file mode 100755 (executable)
index 0000000..48e917e
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-number-wordboundary.sh"; then
+    echo "$0: will source $dir/t/tap-number-wordboundary.sh"
+    . "$dir/t/tap-number-wordboundary.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-number-wordboundary.sh'" >&2
+exit '99'
diff --git a/t/tap-number-wordboundary.sh b/t/tap-number-wordboundary.sh
new file mode 100755 (executable)
index 0000000..324adb6
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - TAP result numbers terminated by a non-whitespace "word boundary"
+#    character are recognized
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+1..5
+ok 1: foo1
+not ok 2- foo2
+ok 3@ foo3 # SKIP
+not ok 4?&%$ foo4 # TODO
+ok 5"`!! foo5 # TODO
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=5 pass=1 fail=1 skip=1 xpass=1 xfail=1 error=0
+
+$EGREP '^PASS: all\.test 1 ?: foo1$' stdout
+$EGREP '^FAIL: all\.test 2 ?- foo2$' stdout
+$EGREP '^SKIP: all\.test 3 ?@ foo3 # SKIP$' stdout
+$EGREP '^XFAIL: all\.test 4 ?\?&%\$ foo4 # TODO$' stdout
+$EGREP '^XPASS: all\.test 5 ?"`!! foo5 # TODO$' stdout
+
+cat > all.test <<'END'
+1..3
+ok 2: quux
+not ok 1!
+ok 476$ # SKIP
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=3 pass=0 fail=0 skip=0 xpass=0 xfail=0 error=3
+
+$EGREP '^ERROR: all\.test 2 ?: quux # OUT-OF-ORDER \(expecting 1\)$' stdout
+$EGREP '^ERROR: all\.test 1 ?! # OUT-OF-ORDER \(expecting 2\)$' stdout
+$EGREP '^ERROR: all\.test 476 ?\$ # OUT-OF-ORDER \(expecting 3\)$' stdout
+
+cat > punctuation <<'END'
+'
+"
+`
+#
+$
+!
+\
+/
+&
+%
+(
+)
+|
+^
+~
+?
+*
++
+-
+,
+:
+;
+=
+<
+>
+@
+[
+]
+{
+}
+\
+END
+
+# Strip any extra whitespace, for Solaris' wc.
+planned=`wc -l <punctuation | tr -d " $tab"`
+
+echo 1..$planned > all.test
+awk '{print "ok " NR $0 }' punctuation >> all.test
+# For debugging.
+cat all.test
+# Sanity check.
+grep "^ok 1'$" all.test || framework_failure_ "creating all.test"
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=$planned pass=$planned \
+                   fail=0 skip=0 xpass=0 xfail=0 error=0
+
+:
diff --git a/t/tap-numbers-leading-zero-w.sh b/t/tap-numbers-leading-zero-w.sh
new file mode 100755 (executable)
index 0000000..51a5144
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-numbers-leading-zero.sh"; then
+    echo "$0: will source $dir/t/tap-numbers-leading-zero.sh"
+    . "$dir/t/tap-numbers-leading-zero.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-numbers-leading-zero.sh'" >&2
+exit '99'
diff --git a/t/tap-numbers-leading-zero.sh b/t/tap-numbers-leading-zero.sh
new file mode 100755 (executable)
index 0000000..bbd0d0e
--- /dev/null
@@ -0,0 +1,108 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - how does TAP result numbers with leading zero fares?
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+do_checks ()
+{
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results "$@"
+  # Allow some normalization of leading zeros, without forcing it.
+  LC_ALL=C sed -n 's/: all\.test 0*\([0-9]\)/: all.test \1/p' stdout > got
+  cat exp
+  cat got
+  diff exp got
+}
+
+cat > all.test <<END
+1..15
+
+ok 01
+ok 0002
+
+not ok 03
+not ok 0004
+
+ok 05 # SKIP
+ok 0006 # SKIP
+
+not ok 07 # TODO
+not ok 0008 # TODO
+
+ok 009
+ok 010
+
+ok 00000011
+not ok 0012
+ok 00000013 # SKIP
+not ok 0014 # TODO
+ok 00000015 # TODO
+END
+
+cat > exp <<END
+PASS: all.test 1
+PASS: all.test 2
+FAIL: all.test 3
+FAIL: all.test 4
+SKIP: all.test 5 # SKIP
+SKIP: all.test 6 # SKIP
+XFAIL: all.test 7 # TODO
+XFAIL: all.test 8 # TODO
+PASS: all.test 9
+PASS: all.test 10
+PASS: all.test 11
+FAIL: all.test 12
+SKIP: all.test 13 # SKIP
+XFAIL: all.test 14 # TODO
+XPASS: all.test 15 # TODO
+END
+
+do_checks total=15 pass=5 fail=3 xpass=1 xfail=3 skip=3 error=0
+
+cat > all.test <<END
+1..8
+
+ok 010
+not ok 003
+ok 0001 # SKIP
+not ok 010 # TODO
+ok 00100 # TODO
+
+ok 06
+ok 00007
+ok 8
+END
+
+cat > exp <<END
+ERROR: all.test 10 # OUT-OF-ORDER (expecting 1)
+ERROR: all.test 3 # OUT-OF-ORDER (expecting 2)
+ERROR: all.test 1 # OUT-OF-ORDER (expecting 3)
+ERROR: all.test 10 # OUT-OF-ORDER (expecting 4)
+ERROR: all.test 100 # OUT-OF-ORDER (expecting 5)
+PASS: all.test 6
+PASS: all.test 7
+PASS: all.test 8
+END
+
+do_checks total=8 pass=3 fail=0 xpass=0 xfail=0 skip=0 error=5
+
+:
diff --git a/t/tap-numeric-description-w.sh b/t/tap-numeric-description-w.sh
new file mode 100755 (executable)
index 0000000..cad02f0
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-numeric-description.sh"; then
+    echo "$0: will source $dir/t/tap-numeric-description.sh"
+    . "$dir/t/tap-numeric-description.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-numeric-description.sh'" >&2
+exit '99'
diff --git a/t/tap-numeric-description.sh b/t/tap-numeric-description.sh
new file mode 100755 (executable)
index 0000000..cd220a7
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP result lines whose description is a number.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+# Some random numbers to be used as test names.  The definitions below are
+# selected so that $x<n> != <n> for every n >= 1.  We can't use positional
+# parameters for this unfortunately, since Solaris 10 /bin/sh doesn't allow
+# the dereferencing of parameters from ${10} onwards.
+x1=5 x2=7 x3=45 x4=11 x5=7 x6=3 x7=6 x8=9 x9=1000 x10=1
+
+cat > all.test <<END
+1..10
+ok 1 ${x1}
+ok - ${x2}
+not ok 3 ${x3}
+not ok - ${x4}
+ok 5 ${x5} # SKIP
+ok - ${x6} # SKIP
+not ok 7 ${x7} # TODO
+not ok - ${x8} # TODO
+ok 9 ${x9} # TODO
+ok - ${x10} # TODO
+END
+
+cat > exp <<END
+PASS: all.test 1 ${x1}
+PASS: all.test 2 - ${x2}
+FAIL: all.test 3 ${x3}
+FAIL: all.test 4 - ${x4}
+SKIP: all.test 5 ${x5} # SKIP
+SKIP: all.test 6 - ${x6} # SKIP
+XFAIL: all.test 7 ${x7} # TODO
+XFAIL: all.test 8 - ${x8} # TODO
+XPASS: all.test 9 ${x9} # TODO
+XPASS: all.test 10 - ${x10} # TODO
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=10 pass=2 fail=2 xpass=2 xfail=2 skip=2 error=0
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+
+:
diff --git a/t/tap-out-of-order-w.sh b/t/tap-out-of-order-w.sh
new file mode 100755 (executable)
index 0000000..d20cb98
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-out-of-order.sh"; then
+    echo "$0: will source $dir/t/tap-out-of-order.sh"
+    . "$dir/t/tap-out-of-order.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-out-of-order.sh'" >&2
+exit '99'
diff --git a/t/tap-out-of-order.sh b/t/tap-out-of-order.sh
new file mode 100755 (executable)
index 0000000..9e3d755
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - out-of-order test results
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > a.test <<END
+1..3
+ok
+not ok 2 # TODO
+ok 71
+END
+
+cat > b.test <<END
+1..5
+ok 1
+ok 2
+ok 4 foo # SKIP mu
+not ok 2 bar # TODO um
+ok 5
+END
+
+cat > c.test <<END
+1..4
+ok 1
+ok foo
+ok 4 - zardoz
+not ok 3
+END
+
+# This is documented as an "test out of sequence" error in the
+# TAP::Parser documentation.  Keep it in sync with the example
+# there.
+cat > d.test <<'END'
+1..5
+ok 1
+ok 2
+ok 15
+ok 16
+ok 17
+END
+
+TESTS='a.test b.test c.test d.test' $MAKE -e check >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=17 pass=8 fail=0 xpass=0 xfail=1 skip=0 error=8
+
+test `$FGREP -c ': a.test' stdout` -eq 3
+test `$FGREP -c ': b.test' stdout` -eq 5
+test `$FGREP -c ': c.test' stdout` -eq 4
+test `$FGREP -c ': d.test' stdout` -eq 5
+
+grep '^ERROR: a\.test 71 # OUT-OF-ORDER (expecting 3)$' stdout
+grep '^ERROR: b\.test 4 foo # OUT-OF-ORDER (expecting 3)$' stdout
+grep '^ERROR: b\.test 2 bar # OUT-OF-ORDER (expecting 4)$' stdout
+grep '^ERROR: c\.test 4 - zardoz # OUT-OF-ORDER (expecting 3)$' stdout
+grep '^ERROR: c\.test 3 # OUT-OF-ORDER (expecting 4)$' stdout
+grep '^ERROR: d\.test 15 # OUT-OF-ORDER (expecting 3)$' stdout
+grep '^ERROR: d\.test 16 # OUT-OF-ORDER (expecting 4)$' stdout
+grep '^ERROR: d\.test 17 # OUT-OF-ORDER (expecting 5)$' stdout
+
+:
diff --git a/t/tap-passthrough-exit-w.sh b/t/tap-passthrough-exit-w.sh
new file mode 100755 (executable)
index 0000000..9a12cb8
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-passthrough-exit.sh"; then
+    echo "$0: will source $dir/t/tap-passthrough-exit.sh"
+    . "$dir/t/tap-passthrough-exit.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-passthrough-exit.sh'" >&2
+exit '99'
diff --git a/t/tap-passthrough-exit.sh b/t/tap-passthrough-exit.sh
new file mode 100755 (executable)
index 0000000..6014cc5
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - non-success exit status of a test script is reported in the
+#    log file
+# See also related test 'tap-passthrough.test'.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+TEST_LOG_COMPILER = $(SHELL)
+TESTS =
+END
+
+exit_statuses='1 2 77 99'
+
+for e in $exit_statuses; do
+  unindent > exit-$e.test <<END
+    #!/bin/sh
+    echo 1..1
+    echo ok 1
+    exit $e
+END
+  echo TESTS += exit-$e.test >> Makefile.am
+done
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+st=0
+$MAKE check || st=$?
+for e in $exit_statuses; do cat exit-$e.log; done
+cat test-suite.log
+test $st -gt 0 || Exit 1
+
+for e in $exit_statuses; do
+  for log in exit-$e.log test-suite.log; do
+    grep "^ERROR: exit-$e\\.test - exited with status $e$" $log
+  done
+done
+
+env TEST_LOG_DRIVER_FLAGS='--ignore-exit' $MAKE -e check
+$FGREP ".test - exited with status" *.log && Exit 1
+
+:
diff --git a/t/tap-passthrough-w.sh b/t/tap-passthrough-w.sh
new file mode 100755 (executable)
index 0000000..3f5ccd0
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-passthrough.sh"; then
+    echo "$0: will source $dir/t/tap-passthrough.sh"
+    . "$dir/t/tap-passthrough.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-passthrough.sh'" >&2
+exit '99'
diff --git a/t/tap-passthrough.sh b/t/tap-passthrough.sh
new file mode 100755 (executable)
index 0000000..aa9fe53
--- /dev/null
@@ -0,0 +1,165 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - all input (valid TAP lines, invalid TAP lines, non-TAP lines)
+#    are passed through in the log file
+#  - TAP errors are reported in the log file too
+# See also related test 'tap-passthrough-exit.test'.
+
+. ./defs || Exit 1
+
+weirdchars=\''"\$@!&()[]<>#;,:.^?*/'
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+#
+# Only successful tests.
+#
+
+# The whitespace in this test might be normalized in the testsuite
+# progress output, but should be copied verbatim in the log files.
+cat > ok.test <<END
+1..6
+TAP plan in the previous line.
+ok${tab}
+ok     2
+ok - foo
+ok 4 - x
+  This is not a TAP line, but should still be copied in the log file!
+# some diagnostic${tab}
+not ok # TODO low priority
+ok # SKIP who cares?
+$weirdchars
+END
+
+TESTS=ok.test $MAKE -e check || { cat ok.log; Exit 1; }
+cat ok.log
+
+for rx in \
+  '1\.\.6' \
+  'TAP plan in the previous line\.' \
+  "ok${tab}" \
+  'ok     2' \
+  'ok - foo' \
+  'ok 4 - x' \
+  '  This is not a TAP line, but should still be copied in the log file!' \
+  "# some diagnostic${tab}" \
+  'not ok # TODO low priority' \
+  'ok # SKIP who cares?' \
+; do
+  grep "^$rx$" ok.log
+done
+$FGREP "$weirdchars" ok.log
+
+#
+# Mixed failing/successful tests.
+#
+
+cat > tiny.test <<END
+1..1
+ok
+END
+
+cat > ok.test <<END
+1..1
+ok
+only one success here
+END
+
+cat > ko.test <<END
+1..5
+foo foo foo
+ok${tab}
+ok     2
+not ok - foo
+not ok 4 - x
+# diagnostic ko
+  bar${tab}bar${tab}bar
+ok # TODO dunno
+$weirdchars
+END
+
+cat > bail.test <<END
+Bail out! Test is taking too long!
+END
+
+cat > skip.test <<END
+1..0 # Skipped: WWW::Mechanize not installed
+END
+
+cat > err.test <<END
+1..3
+ok 1
+Invalid test count
+ok 23
+Misplaced plan
+1..13
+ok
+Extra test
+ok
+Last line
+END
+
+st=0
+env TESTS='tiny.test ok.test ko.test bail.test skip.test err.test' \
+  $MAKE -e check || st=$?
+cat tiny.log
+cat ok.log
+cat ko.log
+cat bail.log
+cat skip.log
+cat err.log
+test $st -gt 0 || Exit 1
+
+grep '^1\.\.1$' tiny.log
+grep '^ok$' tiny.log
+grep '^only one success here$' ok.log
+
+for rx in \
+  '1\.\.5' \
+  'foo foo foo' \
+  "ok${tab}" \
+  'ok     2' \
+  'not ok - foo' \
+  'not ok 4 - x' \
+  '# diagnostic ko' \
+  "  bar${tab}bar${tab}bar" \
+  'ok # TODO dunno' \
+; do
+  grep "^$rx$" ko.log
+done
+$FGREP "$weirdchars" ko.log
+
+grep '^Bail out! Test is taking too long!$' bail.log
+grep '^1\.\.0 # Skipped: WWW::Mechanize not installed$' skip.log
+
+for rx in \
+  '^1\.\.3$' \
+  '^Invalid test count$' \
+  '^ok 23$' \
+  '^Misplaced plan$' \
+  '^1\.\.13$' \
+  '^ERROR:.* multiple test plans' \
+   '^Extra test$' \
+  '^Last line$' \
+  '^ERROR:.* [tT]oo many tests run.*expected 3, got 4' \
+  '^ERROR:.* err\.test 23 .*OUT[ -]OF[ -]ORDER.*expecting 2' \
+; do
+  grep "$rx" err.log
+done
+
+:
diff --git a/t/tap-plan-corner-w.sh b/t/tap-plan-corner-w.sh
new file mode 100755 (executable)
index 0000000..ae25c91
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-plan-corner.sh"; then
+    echo "$0: will source $dir/t/tap-plan-corner.sh"
+    . "$dir/t/tap-plan-corner.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-plan-corner.sh'" >&2
+exit '99'
diff --git a/t/tap-plan-corner.sh b/t/tap-plan-corner.sh
new file mode 100755 (executable)
index 0000000..601d5b7
--- /dev/null
@@ -0,0 +1,197 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - some corner cases for TAP plan
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+# -------------------------------------------------------------------------
+
+cat > leading-repeated.test <<END
+1..1
+1..1
+ok 1
+END
+
+cat > trailing-repeated.test <<END
+ok 1
+1..1
+1..1
+END
+
+for pos in leading trailing; do
+  TESTS="$pos-repeated.test" $MAKE -e check >stdout \
+    && { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=2 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=1
+  grep "^ERROR: $pos-repeated\\.test - multiple test plans$" stdout
+done
+
+# -------------------------------------------------------------------------
+
+cat > leading-repeated.test <<END
+1..2
+ok 1
+1..2
+ok 2
+END
+
+cat > trailing-repeated.test <<END
+ok 1
+1..2
+ok 2
+1..2
+END
+
+env TESTS="leading-repeated.test trailing-repeated.test" \
+  $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=6 pass=3 fail=0 xpass=0 xfail=0 skip=0 error=3
+grep "^ERROR: leading-repeated\\.test - multiple test plans$" stdout
+grep "^ERROR: trailing-repeated\\.test - multiple test plans$" stdout
+grep "^ERROR: trailing-repeated\\.test 2 # AFTER LATE PLAN$" stdout
+grep "leading .*AFTER LATE PLAN" stdout && Exit 1
+
+# -------------------------------------------------------------------------
+
+cat > 1.test <<END
+1..0
+1..0
+END
+
+cat > 2.test <<END
+1..0 # SKIP
+1..0
+END
+
+cat > 3.test <<END
+1..0
+1..0 # SKIP
+END
+
+cat > 4.test <<END
+1..0 # SKIP
+1..0 # SKIP
+END
+
+env TESTS="1.test 2.test 3.test 4.test" \
+  $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=8 pass=0 fail=0 xpass=0 xfail=0 skip=4 error=4
+for i in 1 2 3 4; do
+  grep "^ERROR: $i\\.test - multiple test plans$" stdout
+done
+
+# -------------------------------------------------------------------------
+
+cat > all.test <<END
+1..5
+ok 1
+ok 2
+1..5
+ok 3
+1..5
+ok 4
+1..5
+ok 5
+END
+
+$MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=8 pass=5 fail=0 xpass=0 xfail=0 skip=0 error=3
+
+cat > exp <<'END'
+PASS: all.test 1
+PASS: all.test 2
+ERROR: all.test - multiple test plans
+PASS: all.test 3
+ERROR: all.test - multiple test plans
+PASS: all.test 4
+ERROR: all.test - multiple test plans
+PASS: all.test 5
+END
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+# -------------------------------------------------------------------------
+
+cat > all.test <<END
+1..2
+ok 1
+ok 2
+1..3
+ok 3
+END
+
+$MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=5 pass=2 fail=0 xpass=0 xfail=0 skip=0 error=3
+
+cat > exp <<'END'
+PASS: all.test 1
+PASS: all.test 2
+ERROR: all.test - multiple test plans
+ERROR: all.test 3 # UNPLANNED
+ERROR: all.test - too many tests run (expected 2, got 3)
+END
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+# -------------------------------------------------------------------------
+
+cat > all.test <<END
+ok 1
+ok 2
+ok 3
+1..5
+1..5
+ok 4
+1..5
+ok 5
+END
+
+$MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=7 pass=3 fail=0 xpass=0 xfail=0 skip=0 error=4
+
+cat > exp <<'END'
+PASS: all.test 1
+PASS: all.test 2
+PASS: all.test 3
+ERROR: all.test - multiple test plans
+ERROR: all.test 4 # AFTER LATE PLAN
+ERROR: all.test - multiple test plans
+ERROR: all.test 5 # AFTER LATE PLAN
+END
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-plan-errors-w.sh b/t/tap-plan-errors-w.sh
new file mode 100755 (executable)
index 0000000..2d141b5
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-plan-errors.sh"; then
+    echo "$0: will source $dir/t/tap-plan-errors.sh"
+    . "$dir/t/tap-plan-errors.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-plan-errors.sh'" >&2
+exit '99'
diff --git a/t/tap-plan-errors.sh b/t/tap-plan-errors.sh
new file mode 100755 (executable)
index 0000000..e0f6272
--- /dev/null
@@ -0,0 +1,113 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support: the following situations should be flagged as errors:
+#  - unmatched test plan (too few tests run)
+#  - multiple test plans
+#  - missing test plan
+#  - misplaced test plan (tests run after a late plan)
+# Checks about unplanned tests are performed in 'tap-unplanned.test'
+# and 'tap-skip-whole-badcount.test'.  More checks about corner-cases
+# in TAP plans are performed in 'tap-plan-corner.test'.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+my_check ()
+{
+  cat > all.test
+  test -n "$err" || fatal_ "\$err not set before calling my_check"
+  cat all.test # For debugging.
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results "$@"
+  grep "^ERROR: all\\.test $err$" stdout
+  unset err
+}
+
+err='- too few tests run (expected 2, got 1)'
+my_check total=2 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=1 <<END
+1..2
+ok 1
+END
+
+err='- too few tests run (expected 12, got 3)'
+my_check total=4 pass=2 fail=0 xpass=0 xfail=1 skip=0 error=1 <<END
+ok 1
+ok 2
+not ok 3 # TODO
+1..12
+END
+
+err='- too few tests run (expected 1, got 0)'
+my_check total=1 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=1 <<END
+1..1
+END
+
+err='2 # AFTER LATE PLAN'
+my_check total=2 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=1 <<END
+ok 1
+1..2
+ok 2
+END
+
+err='5 # AFTER LATE PLAN'
+my_check total=5 pass=4 fail=0 xpass=0 xfail=0 skip=0 error=1 <<END
+ok 1
+ok 2
+ok 3
+ok 4
+1..5
+ok 5
+END
+
+err='- missing test plan'
+my_check total=2 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=1 <<END
+ok 1
+END
+
+
+# The two test plans here are deliberately equal.
+err='- multiple test plans'
+my_check total=3 pass=2 fail=0 xpass=0 xfail=0 skip=0 error=1 <<END
+1..2
+ok 1
+ok 2
+1..2
+END
+
+# The second plan is diagnosed as extra, and only the first one is
+# relevant w.r.t. the number of the expected test.
+err='- multiple test plans'
+my_check total=4 pass=3 fail=0 xpass=0 xfail=0 skip=0 error=1 <<END
+1..3
+ok 1
+ok 2
+1..2
+ok 3
+END
+
+# As above, in a slightly different situation.
+err='- multiple test plans'
+my_check total=3 pass=2 fail=0 xpass=0 xfail=0 skip=0 error=1 <<END
+1..2
+ok 1
+ok 2
+1..4
+END
+
+:
diff --git a/t/tap-plan-leading-zero-w.sh b/t/tap-plan-leading-zero-w.sh
new file mode 100755 (executable)
index 0000000..e969b87
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-plan-leading-zero.sh"; then
+    echo "$0: will source $dir/t/tap-plan-leading-zero.sh"
+    . "$dir/t/tap-plan-leading-zero.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-plan-leading-zero.sh'" >&2
+exit '99'
diff --git a/t/tap-plan-leading-zero.sh b/t/tap-plan-leading-zero.sh
new file mode 100755 (executable)
index 0000000..949c251
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - TAP plans with numbers having leading zeroes, as in "1..01"
+#  - TAP "SKIP" plans with multiple zeroes, as in "1..00 # SKIP"
+# This is consistent with the behaviour of the 'prove' utility.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > a.test <<END
+1..01
+ok 1
+END
+
+cat > b.test <<END
+1..0002
+ok 1
+ok 2
+END
+
+echo 1..010 > c.test
+for i in 1 2 3 4 5 6 7 8 9 10; do echo ok $i; done >> c.test
+
+echo 1..00100 > d.test
+for i in 1 2 3 4 5 6 7 8 9 10; do
+  for j in 1 2 3 4 5 6 7 8 9 10; do
+    echo ok
+  done
+done >> d.test
+
+echo 1..00 > e.test
+echo '1..000 # SKIP' > f.test
+
+env TESTS='a.test b.test c.test d.test e.test f.test' \
+  $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=115 pass=113 xfail=0 skip=2 fail=0 xpass=0 error=0
+
+:
diff --git a/t/tap-plan-malformed-w.sh b/t/tap-plan-malformed-w.sh
new file mode 100755 (executable)
index 0000000..273492a
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-plan-malformed.sh"; then
+    echo "$0: will source $dir/t/tap-plan-malformed.sh"
+    . "$dir/t/tap-plan-malformed.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-plan-malformed.sh'" >&2
+exit '99'
diff --git a/t/tap-plan-malformed.sh b/t/tap-plan-malformed.sh
new file mode 100755 (executable)
index 0000000..8aca466
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support: a malformed TAP plan is not recognized.  The checks in
+# here should be consistent with the behaviour of the 'prove' utility.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > a.test <<END
+1..1 foo
+END
+
+cat > b.test <<END
+ 1..2
+ok 1
+ok 2
+END
+
+cat > c.test <<END
+1..1 # SKIP
+END
+
+cat > d.test <<END
+1..2 # foo bar
+not ok 1 # TODO
+not ok 2 # TODO
+END
+
+cat > e.test <<END
+0..0
+END
+
+tests_list=`echo *.test`
+
+TESTS="$tests_list" $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=9 pass=2 fail=0 xpass=0 xfail=2 skip=0 error=5
+
+for tst in $tests_list; do
+  grep "^ERROR: $tst - missing test plan$" stdout
+done
+
+:
diff --git a/t/tap-plan-middle-w.sh b/t/tap-plan-middle-w.sh
new file mode 100755 (executable)
index 0000000..a1ef869
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-plan-middle.sh"; then
+    echo "$0: will source $dir/t/tap-plan-middle.sh"
+    . "$dir/t/tap-plan-middle.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-plan-middle.sh'" >&2
+exit '99'
diff --git a/t/tap-plan-middle.sh b/t/tap-plan-middle.sh
new file mode 100755 (executable)
index 0000000..1c752fc
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - test plan preceding and/or following non-result TAP lines
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > top1.test <<END
+non-TAP line, ignored
+1..1
+ok 1
+END
+
+cat > top2.test <<END
+some
+non-TAP
+lines
+are
+ignored
+# and a TAP comment won't cause problems either
+1..2
+ok 1
+ok 2
+END
+
+# Try with a blank line too, just to be sure.
+cat > top3.test <<END
+
+1..1
+ok 1
+END
+
+cat > bot1.test <<END
+ok 1 # SKIP
+1..1
+bla blah blah ...
+END
+
+cat > bot2.test <<END
+ok 1
+ok 2
+not ok 3 # TODO
+1..3
+#@$%! (a cursing comment :-)
+END
+
+# Try with a blank line too, just to be sure.
+cat > bot3.test <<END
+ok 1
+not ok 2 # TODO
+ok 3 # SKIP
+ok 4 # SKIP
+1..4
+
+END
+
+tests=`echo *.test`
+
+for tap_flags in "" "--comments"; do
+  env TEST_LOG_DRIVER_FLAGS="$tap_flags" TESTS="$tests" \
+    $MAKE -e check >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=12 pass=7 xfail=2 skip=3 fail=0 xpass=0 error=0
+done
+
+:
diff --git a/t/tap-plan-w.sh b/t/tap-plan-w.sh
new file mode 100755 (executable)
index 0000000..5203a49
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-plan.sh"; then
+    echo "$0: will source $dir/t/tap-plan.sh"
+    . "$dir/t/tap-plan.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-plan.sh'" >&2
+exit '99'
diff --git a/t/tap-plan-whitespace-w.sh b/t/tap-plan-whitespace-w.sh
new file mode 100755 (executable)
index 0000000..3dcc0dc
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-plan-whitespace.sh"; then
+    echo "$0: will source $dir/t/tap-plan-whitespace.sh"
+    . "$dir/t/tap-plan-whitespace.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-plan-whitespace.sh'" >&2
+exit '99'
diff --git a/t/tap-plan-whitespace.sh b/t/tap-plan-whitespace.sh
new file mode 100755 (executable)
index 0000000..a117fe0
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - plan line with trailing whitespace is recognized and handled correctly
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+sed 's/\$$//' > foo.test <<END
+1..2 $
+ok 1$
+ok 2$
+END
+
+cat > bar.test <<END
+1..1$tab   $tab$tab
+ok 1
+END
+
+TESTS='foo.test bar.test' $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=3 pass=3 fail=0 error=0 xpass=0 xfail=0 skip=0
+
+:
diff --git a/t/tap-plan.sh b/t/tap-plan.sh
new file mode 100755 (executable)
index 0000000..185658d
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - test scripts with the test plan at the beginning
+#  - test scripts with the test plan at the end
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > top.test <<END
+1..3
+ok 1
+ok 2 # SKIP
+ok 3
+# a trailing comment
+END
+
+cat > bot.test <<END
+ok 1
+# a comment
+ok 2
+not ok 3 # TODO
+# another comment
+ok
+1..4
+END
+
+for tap_flags in "" "--comments"; do
+  env TEST_LOG_DRIVER_FLAGS="$tap_flags" TESTS='top.test bot.test' \
+    $MAKE -e check >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=7 pass=5 xfail=1 skip=1 fail=0 xpass=0 error=0
+done
+
+
+:
diff --git a/t/tap-planskip-and-logging-w.sh b/t/tap-planskip-and-logging-w.sh
new file mode 100755 (executable)
index 0000000..aeeaa20
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-and-logging.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-and-logging.sh"
+    . "$dir/t/tap-planskip-and-logging.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-and-logging.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-and-logging.sh b/t/tap-planskip-and-logging.sh
new file mode 100755 (executable)
index 0000000..cd64623
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - interactions between "TAP plan with SKIP" and logging of earlier or
+#    later TAP or non-TAP text
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+echo TEST_LOG_DRIVER_FLAGS = --comments >> Makefile
+
+cat > foo.test <<END
+1..0
+a non-TAP line
+# a comment
+END
+
+cat > foo2.test <<END
+a non-TAP line 2
+# a comment 2
+1..0
+END
+
+cat > bar.test <<END
+# an early comment
+an early non-TAP line
+ $tab
+1..0 # SKIP
+# a later comment
+a later non-TAP line
+END
+
+TESTS='foo.test foo2.test bar.test' $MAKE -e check >stdout \
+  || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=3 pass=0 fail=0 xpass=0 xfail=0 skip=3 error=0
+
+grep '^# foo\.test: a comment$' stdout
+grep '^# foo2\.test: a comment 2$' stdout
+grep '^# bar\.test: an early comment$' stdout
+grep '^# bar\.test: a later comment$' stdout
+
+cat foo.log
+cat foo2.log
+cat bar.log
+
+grep '^a non-TAP line$' foo.log
+grep '^# a comment$' foo.log
+grep '^a non-TAP line 2$' foo2.log
+grep '^# a comment 2$' foo2.log
+grep '^# an early comment' bar.log
+grep '^an early non-TAP line$' bar.log
+grep '^# a later comment' bar.log
+grep '^a later non-TAP line$' bar.log
+grep "^ $tab$" bar.log
+
+:
diff --git a/t/tap-planskip-badexit-w.sh b/t/tap-planskip-badexit-w.sh
new file mode 100755 (executable)
index 0000000..fa86966
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-badexit.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-badexit.sh"
+    . "$dir/t/tap-planskip-badexit.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-badexit.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-badexit.sh b/t/tap-planskip-badexit.sh
new file mode 100755 (executable)
index 0000000..58ce0e7
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - an exit status != 0 of a test script causes an hard error, even if
+#    the last line of output is a "SKIP plan" (e.g., "1..0 # SKIP").
+
+. ./defs || Exit 1
+
+echo TESTS = one.test two.test > Makefile.am
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > one.test <<'END'
+#!/bin/sh
+echo '1..0 # SKIP'
+exit 1
+END
+
+cat > two.test <<'END'
+#!/bin/sh
+echo '1..0'
+exit 22
+END
+
+chmod a+x one.test two.test
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+# The 'prove' utility reports both the skip and the non-zero exit status,
+# so we do the same.
+count_test_results total=4 pass=0 fail=0 xpass=0 xfail=0 skip=2 error=2
+
+grep '^ERROR: one\.test - exited with status 1$' stdout
+grep '^ERROR: two\.test - exited with status 22$' stdout
+
+:
diff --git a/t/tap-planskip-bailout-w.sh b/t/tap-planskip-bailout-w.sh
new file mode 100755 (executable)
index 0000000..a7c0383
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-bailout.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-bailout.sh"
+    . "$dir/t/tap-planskip-bailout.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-bailout.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-bailout.sh b/t/tap-planskip-bailout.sh
new file mode 100755 (executable)
index 0000000..351aaba
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - a "Bail out!" directive causes an hard error, even if coming after
+#    a "SKIP plan" (e.g., "1..0 # SKIP").
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+1..0 # SKIP
+Bail out!
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=2 pass=0 fail=0 xpass=0 xfail=0 skip=1 error=1
+grep '^ERROR: all\.test - Bail out!' stdout
+
+:
diff --git a/t/tap-planskip-case-insensitive-w.sh b/t/tap-planskip-case-insensitive-w.sh
new file mode 100755 (executable)
index 0000000..e2e1741
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-case-insensitive.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-case-insensitive.sh"
+    . "$dir/t/tap-planskip-case-insensitive.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-case-insensitive.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-case-insensitive.sh b/t/tap-planskip-case-insensitive.sh
new file mode 100755 (executable)
index 0000000..9de6bc5
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - "SKIP" keyword in a TAP plan is case-insensitive
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+# These nested loops are clearer without indentation.
+
+i=0
+for c1 in s S; do
+for c2 in k K; do
+for c3 in i I; do
+for c4 in p P; do
+  i=`expr $i + 1`
+  case $i in ?) i=0$i; esac
+  echo "1..0 # $c1$c2$c3$c4 foobar" > $i.test
+done; done; done; done
+
+TESTS="`echo *.test`" $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=16 pass=0 fail=0 xpass=0 xfail=0 skip=16 error=0
+
+for tst in *.test; do
+  grep "^SKIP: $tst .* foobar$" stdout
+done
+
+:
diff --git a/t/tap-planskip-late-w.sh b/t/tap-planskip-late-w.sh
new file mode 100755 (executable)
index 0000000..5510bf2
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-late.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-late.sh"
+    . "$dir/t/tap-planskip-late.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-late.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-late.sh b/t/tap-planskip-late.sh
new file mode 100755 (executable)
index 0000000..e0d3513
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - the special "plan with SKIP" can also be used "late" in the TAP
+#    stream, i.e., preceded by non-TAP output or TAP diagnostic.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > foo.test <<END
+some non-TAP text, will be copied in the global log
+1..0 # SKIP from the last line
+END
+
+cat > bar.test <<END
+# some TAP diagnostic, will go to console
+1..0
+END
+
+TESTS='foo.test bar.test' $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+grep '^SKIP: foo\.test .* from the last line$' stdout
+grep '^SKIP: bar\.test$' stdout
+test `grep -c ': .*\.test' stdout` -eq 2
+count_test_results total=2 pass=0 fail=0 xpass=0 xfail=0 skip=2 error=0
+
+:
diff --git a/t/tap-planskip-later-errors-w.sh b/t/tap-planskip-later-errors-w.sh
new file mode 100755 (executable)
index 0000000..c3a04c8
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-later-errors.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-later-errors.sh"
+    . "$dir/t/tap-planskip-later-errors.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-later-errors.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-later-errors.sh b/t/tap-planskip-later-errors.sh
new file mode 100755 (executable)
index 0000000..7bf3cb1
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - TAP errors following a "TAP plan with SKIP" are still diagnosed.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+1..0
+a non-TAP line
+1..3
+1..5
+# a comment
+1..1
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=4 pass=0 fail=0 xpass=0 xfail=0 skip=1 error=3
+test `grep -c '^ERROR: all\.test - multiple test plans' stdout` -eq 3
+
+:
diff --git a/t/tap-planskip-unplanned-corner-w.sh b/t/tap-planskip-unplanned-corner-w.sh
new file mode 100755 (executable)
index 0000000..71a0a3a
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-unplanned-corner.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-unplanned-corner.sh"
+    . "$dir/t/tap-planskip-unplanned-corner.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-unplanned-corner.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-unplanned-corner.sh b/t/tap-planskip-unplanned-corner.sh
new file mode 100755 (executable)
index 0000000..ead8613
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - test results seen in a TAP stream that has a "plan with SKIP" are
+#    flagged as errors, even if all of them are "SKIP" results.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > foo.test <<END
+1..0 # SKIP
+ok 1 # SKIP
+END
+
+cat > bar.test <<END
+ok 1 # SKIP
+1..0 # SKIP
+END
+
+TESTS='foo.test bar.test' $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=5 pass=0 fail=0 xpass=0 xfail=0 skip=2 error=3
+
+# Don't be too strict w.r.t. the format of the "skip whole test" message.
+grep '^SKIP: foo\.test$' stdout || grep '^SKIP: foo\.test [^0-9]' stdout
+grep '^ERROR: foo\.test 1 # UNPLANNED$' stdout
+grep '^ERROR: foo\.test - too many tests run (expected 0, got 1)$' stdout
+grep '^SKIP: bar\.test 1 # SKIP$' stdout
+grep '^ERROR: bar\.test - too many tests run (expected 0, got 1)$' stdout
+
+:
diff --git a/t/tap-planskip-unplanned-w.sh b/t/tap-planskip-unplanned-w.sh
new file mode 100755 (executable)
index 0000000..25d4c4d
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-unplanned.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-unplanned.sh"
+    . "$dir/t/tap-planskip-unplanned.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-unplanned.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-unplanned.sh b/t/tap-planskip-unplanned.sh
new file mode 100755 (executable)
index 0000000..cfb1c60
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - a "plan with skip" given after one or more test result have already
+#    been seen is an error
+#  - any test result following a "plan with skip" is an error.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+ok 1
+1..0 # SKIP too late
+END
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=2 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=1
+grep '^ERROR: all\.test - too many tests run (expected 0, got 1)$' stdout
+
+cat > all.test <<END
+ok 1
+ok 2 # SKIP
+not ok 3 # TODO
+1..0 # SKIP too late
+END
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=4 pass=1 fail=0 xpass=0 xfail=1 skip=1 error=1
+grep '^ERROR: all\.test - too many tests run (expected 0, got 3)$' stdout
+
+cat > all.test <<END
+1..0 # SKIP falsified later
+ok 1
+END
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=3 pass=0 fail=0 xpass=0 xfail=0 skip=1 error=2
+grep '^ERROR: all\.test 1 # UNPLANNED$' stdout
+grep '^ERROR: all\.test - too many tests run (expected 0, got 1)$' stdout
+
+cat > all.test <<END
+1..0 # SKIP falsified later
+ok 1
+ok 2 # SKIP
+not ok 3
+not ok 4 # TODO
+END
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=6 pass=0 fail=0 xpass=0 xfail=0 skip=1 error=5
+grep '^ERROR: all\.test 1 # UNPLANNED$' stdout
+grep '^ERROR: all\.test 2 # UNPLANNED$' stdout
+grep '^ERROR: all\.test 3 # UNPLANNED$' stdout
+grep '^ERROR: all\.test 4 # UNPLANNED$' stdout
+grep '^ERROR: all\.test - too many tests run (expected 0, got 4)$' stdout
+
+:
diff --git a/t/tap-planskip-w.sh b/t/tap-planskip-w.sh
new file mode 100755 (executable)
index 0000000..5b5697d
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip.sh"; then
+    echo "$0: will source $dir/t/tap-planskip.sh"
+    . "$dir/t/tap-planskip.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-whitespace-w.sh b/t/tap-planskip-whitespace-w.sh
new file mode 100755 (executable)
index 0000000..727cf32
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-planskip-whitespace.sh"; then
+    echo "$0: will source $dir/t/tap-planskip-whitespace.sh"
+    . "$dir/t/tap-planskip-whitespace.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-planskip-whitespace.sh'" >&2
+exit '99'
diff --git a/t/tap-planskip-whitespace.sh b/t/tap-planskip-whitespace.sh
new file mode 100755 (executable)
index 0000000..4640ee5
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - normalization of whitespace in console testsuite progress associated
+#    with a SKIP directive in the TAP plan
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > foo.test <<END
+1..0${tab}${tab}   #${tab}SKIP  ${tab}Strip leading & trailing ${tab}${tab}
+END
+
+cat > bar.test <<END
+1..0 #SKIP Preserve ${tab}  middle${tab}${tab}space
+END
+
+cat > baz.test <<END
+1..0 #  SKIP${tab}  Strip${tab}external  preserve ${tab}middle  ${tab}${sp}
+END
+
+TESTS='foo.test bar.test baz.test' $MAKE -e check > stdout \
+  || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=3 pass=0 fail=0 error=0 xpass=0 xfail=0 skip=3
+
+grep "SKIP: foo\\.test - Strip leading & trailing$" stdout
+grep "SKIP: bar\\.test - Preserve ${tab}  middle${tab}${tab}space" stdout
+grep "SKIP: baz\\.test - Strip${tab}external  preserve ${tab}middle" stdout
+
+:
diff --git a/t/tap-planskip.sh b/t/tap-planskip.sh
new file mode 100755 (executable)
index 0000000..142afd7
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic TAP test protocol support:
+#  - special plan format to skip all the tests in a script
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+weirdchars=\''"$!&()[]<>#;^?*/@%=,.:'
+
+cat > foo.test <<END
+1..0
+END
+
+cat > bar.test <<END
+blah
+# blah
+1..0$tab $tab
+END
+
+# It is undefined whether the comment after the plan below should
+# count as an explanation; still, the test should be skipped.
+cat > baz.test <<END
+1..0 # WWW::Mechanize not installed
+other
+    junk
+       lines
+END
+
+cat > wget.test <<END
+1..0 # SKIP wget(1) not installed
+# See also curl.test
+END
+
+cat > curl.test <<END
+1..0 # SKIP: Can't connect to gnu.org!
+# See also wget.test
+END
+
+cat > mu.test <<END
+1..0 # SKIP $weirdchars
+END
+
+env TESTS='foo.test bar.test baz.test wget.test curl.test mu.test' \
+  $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=6 pass=0 fail=0 xpass=0 xfail=0 skip=6 error=0
+
+# Look for a regression where the "1..0" wasn't being stripped from the
+# SKIP message.
+$FGREP '1..0' stdout && Exit 1
+
+grep '^SKIP: foo\.test$' stdout
+grep '^SKIP: bar\.test$' stdout
+grep '^SKIP: baz\.test' stdout # Deliberately laxer, see above for why.
+grep '^SKIP: wget\.test .* wget(1) not installed$' stdout
+grep '^SKIP: curl\.test .* Can'\''t connect to gnu\.org!$' stdout
+grep '^SKIP: mu\.test' stdout | $FGREP "$weirdchars" stdout
+test `grep -c ': .*\.test' stdout` -eq 6
+
+:
diff --git a/t/tap-realtime-w.sh b/t/tap-realtime-w.sh
new file mode 100755 (executable)
index 0000000..f1ea9fd
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-realtime.sh"; then
+    echo "$0: will source $dir/t/tap-realtime.sh"
+    . "$dir/t/tap-realtime.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-realtime.sh'" >&2
+exit '99'
diff --git a/t/tap-realtime.sh b/t/tap-realtime.sh
new file mode 100755 (executable)
index 0000000..d874b0c
--- /dev/null
@@ -0,0 +1,125 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - testsuite progress on console should happen mostly "in real time";
+#    i.e., it's not acceptable for the driver to wait the end of the
+#    script to start displaying results from it.
+# FIXME: this test uses expect(1) to ensure line buffering from make and
+# children, and is pretty hacky and complex; is there a better way to
+# accomplish the checks done here?
+
+. ./defs || Exit 1
+
+cat >expect-check <<'END'
+eval spawn $env(SHELL) -c ":"
+expect eof
+END
+expect -f expect-check || {
+    echo "$me: failed to find a working expect program" >&2
+    Exit 77
+}
+rm -f expect-check
+
+# Unfortunately, some make implementations (among them, FreeBSD make,
+# NetBSD make, and Solaris Distributed make), when run in parallel mode,
+# serialize the output from their targets' recipes unconditionally.  In
+# such a situation, there's no way the partial results of a TAP test can
+# be displayed until the test has terminated.  And this is not something
+# our TAP driver script can work around; in fact, the driver *is* sending
+# out its output progressively and "in sync" with test execution -- it is
+# make that is stowing such output away instead of presenting it to the
+# user as soon as it gets it.
+if using_gmake; then :; else
+  case $MAKE in
+    *\ -j*) skip_ "doesn't with non-GNU concurrent make";;
+  esac
+  # Prevent Sun Distributed Make from trying to run in parallel.
+  DMAKE_MODE=serial; export DMAKE_MODE
+fi
+
+cat > Makefile.am << 'END'
+TESTS = all.test
+END
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+#! /bin/sh
+echo 1..3
+
+# Creative quoting to placate maintainer-check.
+sleep="sleep "3
+
+# The awk+shell implementation of the TAP driver must "read ahead" of one
+# line in order to catch the exit status of the test script it runs.  So
+# be sure to echo one "dummy" line after each result line in order not to
+# cause false positives.
+
+echo ok 1 - foo
+echo DUMMY
+$sleep
+test -f ok-1 || { echo 'Bail out!'; exit 1; }
+
+echo ok 2 - bar
+echo DUMMY
+$sleep
+test -f ok-2 || { echo 'Bail out!'; exit 1; }
+
+echo ok 3 - baz
+echo DUMMY
+$sleep
+test -f ok-3 || { echo 'Bail out!'; exit 1; }
+
+: > all-is-well
+END
+
+chmod a+x all.test
+
+cat > expect-make <<'END'
+eval spawn $env(MAKE) check
+expect {
+  "PASS: all.test 1 - foo" {
+    open "ok-1" "w"
+    exp_continue
+  }
+  "PASS: all.test 2 - bar" {
+    open "ok-2" "w"
+    exp_continue
+  }
+  "PASS: all.test 3 - baz" {
+    open "ok-3" "w"
+    exp_continue
+  }
+  "Testsuite summary" {
+    exit 0
+  }
+  timeout {
+    puts "expect timed out"
+    exit 1
+  }
+  default {
+    puts "expect error"
+    exit 1
+  }
+}
+END
+
+# Expect should simulate a tty as stdout, which should ensure a
+# line-buffered output.
+MAKE=$MAKE expect -f expect-make
+test -f all-is-well
+
+:
diff --git a/t/tap-recheck-logs-w.sh b/t/tap-recheck-logs-w.sh
new file mode 100755 (executable)
index 0000000..bac080c
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-recheck-logs.sh"; then
+    echo "$0: will source $dir/t/tap-recheck-logs.sh"
+    . "$dir/t/tap-recheck-logs.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-recheck-logs.sh'" >&2
+exit '99'
diff --git a/t/tap-recheck-logs.sh b/t/tap-recheck-logs.sh
new file mode 100755 (executable)
index 0000000..7fb2b80
--- /dev/null
@@ -0,0 +1,118 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+# - RECHECK_LOGS
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+TEST_LOG_COMPILER = cat
+TESTS = foo.test bar.test baz.test
+baz.log: zardoz
+END
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+: > zardoz
+
+cat > foo.test <<'END'
+1..2
+ok 1
+ok 2
+END
+
+cat > bar.test <<'END'
+1..1
+not ok 1
+END
+
+cat > baz.test <<'END'
+1..1
+Bail out!
+END
+
+# Even the tests that are not re-run should contribute to the testsuite
+# summary when obtained by "make check RECHECK_LOGS=".
+grep_summary ()
+{
+  grep '^# TOTAL: *4$' stdout
+  grep '^# PASS: *2$' stdout
+  grep '^# XPASS: *0$' stdout
+  grep '^# FAIL: *1$' stdout
+  grep '^# XFAIL: *0$' stdout
+  grep '^# SKIP: *0$' stdout
+  grep '^# ERROR: *1$' stdout
+}
+
+$MAKE -e check && Exit 1
+test -f foo.log
+test -f bar.log
+test -f baz.log
+
+rm -f foo.log bar.log
+
+env RECHECK_LOGS= $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+test -f foo.log
+test -f bar.log
+grep '^PASS: foo\.test 1$' stdout
+grep '^PASS: foo\.test 2$' stdout
+grep '^FAIL: bar\.test 1$' stdout
+grep 'baz\.test' stdout && Exit 1
+grep_summary
+
+$sleep
+touch foo.test
+# We re-run only a successful test, but the tests that failed in the
+# previous run should still be taken into account, and cause an overall
+# failure.
+env RECHECK_LOGS= $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^PASS: foo\.test 1$' stdout
+grep '^PASS: foo\.test 2$' stdout
+grep 'ba[rz]\.test' stdout && Exit 1
+is_newest foo.log foo.test
+grep_summary
+
+$sleep
+touch zardoz
+env RECHECK_LOGS= $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^ERROR: baz\.test' stdout
+$EGREP '(foo|bar)\.test' stdout && Exit 1
+is_newest baz.log zardoz
+grep_summary
+
+# 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
+$EGREP '(foo|bar|baz)\.test' stdout && Exit 1
+grep_summary
+
+# The following should re-run foo.test (and only foo.test), even if its
+# log file is up-to-date.
+: > older
+env RECHECK_LOGS=foo.log $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^PASS: foo\.test 1$' stdout
+grep '^PASS: foo\.test 2$' stdout
+grep 'ba[rz]\.test' stdout && Exit 1
+is_newest foo.log older
+grep_summary
+
+:
diff --git a/t/tap-recheck-w.sh b/t/tap-recheck-w.sh
new file mode 100755 (executable)
index 0000000..4bbcf79
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-recheck.sh"; then
+    echo "$0: will source $dir/t/tap-recheck.sh"
+    . "$dir/t/tap-recheck.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-recheck.sh'" >&2
+exit '99'
diff --git a/t/tap-recheck.sh b/t/tap-recheck.sh
new file mode 100755 (executable)
index 0000000..98a960e
--- /dev/null
@@ -0,0 +1,214 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the 'recheck' target for TAP test protocol.
+# Keep in sync with 'test-driver-custom-multitest-recheck.test'.
+
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(srcdir)/tap-driver
+TESTS = a.test b.test c.test d.test
+END
+
+cat > a.test << 'END'
+#! /bin/sh
+echo 1..2
+echo ok 1
+echo ok 2
+: > a.run
+END
+
+cat > b.test << 'END'
+#! /bin/sh
+: > b.run
+echo 1..2
+echo ok 1
+if test -f b.ok; then
+  echo ok 2
+else
+  echo 'Bail out!'
+fi
+END
+
+cat > c.test << 'END'
+#! /bin/sh
+echo 1..3
+if test -f c.pass; then
+  echo 'ok - c is ok :-)'
+else
+  echo 'not ok - c is ko :-('
+fi
+if test -f c.xfail; then
+  echo 'not ok 2 # TODO'
+else
+  echo 'ok 2 # TODO'
+fi
+echo 'not ok 3 - blah blah # TODO need better diagnostic'
+: > c.run
+END
+
+cat > d.test << 'END'
+#! /bin/sh
+test -f ./d.count && . ./d.count
+echo 1..${test_count-2}
+echo ok 1 '# SKIP: who cares ...'
+(. ./d.extra) || echo 'not ok 2 - d.extra failed'
+: > d.run
+END
+
+chmod a+x *.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+do_recheck ()
+{
+  case $* in
+    --fail) on_bad_rc='&&';;
+    --pass) on_bad_rc='||';;
+         *) fatal_ "invalid usage of function 'do_recheck'";;
+  esac
+  rm -f *.run
+  eval "\$MAKE recheck >stdout $on_bad_rc { cat stdout; ls -l; Exit 1; }; :"
+  cat stdout; ls -l
+}
+
+for vpath in : false; do
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+
+  : A "make recheck" in a clean tree should run no tests.
+  do_recheck --pass
+  cat test-suite.log
+  test ! -r a.run
+  test ! -r a.log
+  test ! -r b.run
+  test ! -r b.log
+  test ! -r c.run
+  test ! -r c.log
+  test ! -r d.run
+  test ! -r d.log
+  count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+  : Run the tests for the first time.
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  ls -l
+  # All the test scripts should have run.
+  test -f a.run
+  test -f b.run
+  test -f c.run
+  test -f d.run
+  count_test_results total=9 pass=3 fail=2 xpass=1 xfail=1 skip=1 error=1
+
+  : Let us make b.test pass.
+  echo OK > b.ok
+  do_recheck --fail
+  # a.test has been successful the first time, so no need to re-run it.
+  # Similar considerations apply to similar checks, below.
+  test ! -r a.run
+  test -f b.run
+  test -f c.run
+  test -f d.run
+  count_test_results total=7 pass=2 fail=2 xpass=1 xfail=1 skip=1 error=0
+
+  : Let us make the first part of c.test pass.
+  echo OK > c.pass
+  do_recheck --fail
+  test ! -r a.run
+  test ! -r b.run
+  test -f c.run
+  test -f d.run
+  count_test_results total=5 pass=1 fail=1 xpass=1 xfail=1 skip=1 error=0
+
+  : Let us make also the second part of c.test pass.
+  echo KO > c.xfail
+  do_recheck --fail
+  test ! -r a.run
+  test ! -r b.run
+  test -f c.run
+  test -f d.run
+  count_test_results total=5 pass=1 fail=1 xpass=0 xfail=2 skip=1 error=0
+
+  : Nothing changed, so only d.test should be run.
+  for i in 1 2; do
+    do_recheck --fail
+    test ! -r a.run
+    test ! -r b.run
+    test ! -r c.run
+    test -f d.run
+    count_test_results total=2 pass=0 fail=1 xpass=0 xfail=0 skip=1 error=0
+  done
+
+  : Let us make d.test run more testcases, and experience _more_ failures.
+  echo 'test_count=9' > d.count
+  unindent > d.extra <<'END'
+    echo 'ok # SKIP s'
+    echo 'not ok - f 1'
+    echo 'ok - p 1'
+    echo 'not ok - f 2'
+    echo 'ok # TODO xp'
+    echo 'not ok - f 3'
+    echo 'not ok - f 4'
+    echo 'ok - p 2'
+    echo 'ok' # Extra test.
+    echo 'Bail out!'
+END
+  do_recheck --fail
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+  test -f d.run
+  count_test_results total=11 pass=2 fail=4 xpass=1 xfail=0 skip=2 error=2
+
+  : Let us finally make d.test pass.
+  echo 'test_count=1' > d.count
+  echo : > d.extra
+  do_recheck --pass
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+  test -f d.run
+  count_test_results total=1 pass=0 fail=0 xpass=0 xfail=0 skip=1 error=0
+
+  : All tests have been successful or skipped, nothing should be re-run.
+  do_recheck --pass
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+  test ! -r d.run
+  count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/tap-result-comment-w.sh b/t/tap-result-comment-w.sh
new file mode 100755 (executable)
index 0000000..9f03fc2
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-result-comment.sh"; then
+    echo "$0: will source $dir/t/tap-result-comment.sh"
+    . "$dir/t/tap-result-comment.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-result-comment.sh'" >&2
+exit '99'
diff --git a/t/tap-result-comment.sh b/t/tap-result-comment.sh
new file mode 100755 (executable)
index 0000000..21bc810
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - non-directive comments in TAP results are kept verbatim
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+1..5
+ok 1 # TDO
+not ok 2 # SKP
+ok #SIKP${tab}${sp}
+not ok #    TOD${tab}
+ok 5 # ${tab}${tab}TOOD${tab}${sp}${sp}
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=5 pass=3 fail=2 xpass=0 xfail=0 skip=0 error=0
+
+# Don't be too strict about trailing white space.
+$FGREP ': all.test' stdout | sed "s/[$sp$tab]*$//" > got
+
+cat > exp <<END
+PASS: all.test 1 # TDO
+FAIL: all.test 2 # SKP
+PASS: all.test 3 #SIKP
+FAIL: all.test 4 #    TOD
+PASS: all.test 5 # ${tab}${tab}TOOD
+END
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-signal-w.tap b/t/tap-signal-w.tap
new file mode 100755 (executable)
index 0000000..8bac5e6
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-signal.tap"; then
+    echo "$0: will source $dir/t/tap-signal.tap"
+    . "$dir/t/tap-signal.tap"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-signal.tap'" >&2
+exit '99'
diff --git a/t/tap-signal.tap b/t/tap-signal.tap
new file mode 100755 (executable)
index 0000000..e23deea
--- /dev/null
@@ -0,0 +1,140 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - a test script terminated by a signal causes an hard error
+
+. ./defs || Exit 1
+
+fetch_tap_driver
+
+plan_ 10
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << END
+TEST_LOG_DRIVER = \$(srcdir)/tap-driver
+TEST_LOG_COMPILER = $PERL -w
+## Will be updated later.
+TESTS =
+END
+
+all_signals='1 2 3 9 13 15'
+blocked_signals=''
+for sig in $all_signals; do
+  # Ignore blocked signals
+  if is_blocked_signal $sig; then
+    blocked_signals="$blocked_signals $sig"
+    continue
+  fi
+  # Write the dummy test scripts in perl, not as shell scripts, to work
+  # around unportabilities in the handling of signals (in fact, even
+  # with bash, the older script were unable to properly deliver a SIGQUIT
+  # to themselves consistently).  The shebang is dummy here, as we prefer
+  # to rely on the definition of TEST_LOG_COMPILER instead.
+  unindent > signal-$sig.test <<END
+    #! /usr/bin/env perl
+    # We need autoflush to avoid losing output, which could cause spurious
+    # "no test plan seen" in the TAP driver.
+    BEGIN { $| = 1 }
+    use warnings FATAL => "all";
+    print "1..1\\n";
+    print "ok 1\\n";
+    kill $sig, \$\$;
+    print "Bail out! \$0 not killed?\\n";
+END
+  echo TESTS += signal-$sig.test >> Makefile.am
+done
+results_count=`ls *.test | wc -l | tr -d "$tab$sp"`
+
+chmod a+x *.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+system=`uname -s -r || echo unknown` # Needed later.
+
+signal_caught ()
+{
+  numeric=$1
+  case $numeric in
+     1) symbolic=HUP;;
+     2) symbolic=INT;;
+     3) symbolic=QUIT;;
+     9) symbolic=KILL;;
+    13) symbolic=PIPE;;
+    15) symbolic=TERM;;
+     *) fatal_ "unexpected signal number '$numeric'"
+  esac
+  # Sending a SIGQUIT on Cygwin 1.5 can cause a segmentation fault
+  # instead (sometimes).  Don't let this older bug pollute the results
+  # of our testsuite.
+  case $numeric,$system in
+    3,CYGWIN*\ 1.5.*) sig_re="((SIG)?($symbolic|SEGV)|$numeric|11)";;
+    *) sig_re="((SIG)?$symbolic|$numeric)";;
+  esac
+  wbound_re="($|[^a-zA-Z0-9_-])"
+  pfx_re="^ERROR: signal-$numeric\\.test"
+  case $am_tap_implementation in
+    # Dummy escape to please maintainer-check.
+    per\l) rx="$pfx_re - terminated by signal $sig_re$";;
+    shell) rx="$pfx_re .*terminated by signal $sig_re$wbound_re";;
+    *) fatal_ "invalid \$am_tap_implementation '$am_tap_implementation'";;
+  esac
+  desc="TAP driver catch test termination by signal SIG$symbolic"
+  case " $blocked_signals " in
+    *" $numeric "*) skip_ -r "SIG$symbolic is blocked" "$desc" ;;
+    *) command_ok_ "$desc" env LC_ALL=C $EGREP "$rx" stdout ;;
+  esac
+}
+
+command_ok_ '"make check" fails' eval '
+  (
+    st=0; $MAKE check >stdout || st=$?
+    cat stdout
+    # Extra "echo" and silencing of xtraces required to avoid possible
+    # garbled output with NetBSD make, which would miss some final
+    # newlines in the expected places and thus mess up our TAP output.
+    set +x; echo
+    test $st -gt 0
+  )
+'
+cat stdout # For debugging.
+
+command_ok_ "count of test results" count_test_results \
+  total=`expr $results_count '*' 2` \
+  pass=$results_count error=$results_count \
+  fail=0 xpass=0 xfail=0 skip=0
+
+for sig in $all_signals; do
+  signal_caught $sig
+done
+
+echo 'TEST_LOG_DRIVER_FLAGS = --ignore-exit' >> Makefile
+
+command_ok_ '"make check" passes [--ignore-exit]' eval '$MAKE check >stdout'
+cat stdout # For debugging.
+
+command_ok_ "count of test results [--ignore-exit]" count_test_results \
+  total=$results_count pass=$results_count \
+  fail=0 xpass=0 xfail=0 skip=0 error=0
+
+:
diff --git a/t/tap-summary-color.sh b/t/tap-summary-color.sh
new file mode 100755 (executable)
index 0000000..a28512b
--- /dev/null
@@ -0,0 +1,23 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - colorized testsuite summary
+
+. ./defs-static
+
+use_colors=yes
+. "$am_testauxdir"/tap-summary-aux.sh
diff --git a/t/tap-summary.sh b/t/tap-summary.sh
new file mode 100755 (executable)
index 0000000..deee099
--- /dev/null
@@ -0,0 +1,23 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - colorized testsuite summary
+
+. ./defs-static
+
+use_colors=no
+. "$am_testauxdir"/tap-summary-aux.sh
diff --git a/t/tap-test-number-0-w.sh b/t/tap-test-number-0-w.sh
new file mode 100755 (executable)
index 0000000..0a34ee4
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-test-number-0.sh"; then
+    echo "$0: will source $dir/t/tap-test-number-0.sh"
+    . "$dir/t/tap-test-number-0.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-test-number-0.sh'" >&2
+exit '99'
diff --git a/t/tap-test-number-0.sh b/t/tap-test-number-0.sh
new file mode 100755 (executable)
index 0000000..8faa9c0
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - a test result numbered as 0 is to be considered out-of-order
+# This is consistent with the behaviour of the 'prove' utility.
+
+. ./defs || Exit 1
+
+if test $am_tap_implementation = perl; then
+  $PERL -MTAP::Parser -e 1 \
+    || skip_ "cannot import TAP::Parser perl module"
+  if $PERL -w -e '
+    use warnings FATAL => "all"; use strict;
+    use TAP::Parser;
+    my $parser = TAP::Parser->new({tap => "1..1\n" . "ok 0\n"});
+    my $result = $parser->next;
+    $result->is_plan or die "first line is not TAP plan";
+    $result = $parser->next;
+    $result->is_test or die "second line is not TAP test result";
+    my $testno = $result->number;
+    $parser->next and die "unexpected further TAP stream";
+    exit ($testno == 0 ? 0 : 77);
+  '; then
+    : # Nothing to do.
+  elif test $? -eq 77; then
+    skip_ 'TAP::Parser bug: test number 0 gets relabelled as 1'
+  else
+    fatal_ "error analyzing TAP::Parser module for bugs"
+  fi
+fi
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > a.test <<END
+1..1
+ok 0
+END
+
+cat > b.test <<END
+1..1
+not ok 0
+END
+
+cat > c.test <<END
+1..1
+ok 0 foo # SKIP
+END
+
+cat > d.test <<END
+1..1
+not ok 0 bar # TODO
+END
+
+cat > e.test <<END
+1..1
+ok 0 # TODO
+END
+
+TESTS='a.test b.test c.test d.test e.test' $MAKE -e check >stdout \
+  && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=5 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=5
+
+grep '^ERROR: a\.test 0 # OUT-OF-ORDER (expecting 1)$' stdout
+grep '^ERROR: b\.test 0 # OUT-OF-ORDER (expecting 1)$' stdout
+grep '^ERROR: c\.test 0 foo # OUT-OF-ORDER (expecting 1)$' stdout
+grep '^ERROR: d\.test 0 bar # OUT-OF-ORDER (expecting 1)$' stdout
+grep '^ERROR: e\.test 0 # OUT-OF-ORDER (expecting 1)$' stdout
+
+:
diff --git a/t/tap-todo-skip-together-w.sh b/t/tap-todo-skip-together-w.sh
new file mode 100755 (executable)
index 0000000..0521fd5
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-todo-skip-together.sh"; then
+    echo "$0: will source $dir/t/tap-todo-skip-together.sh"
+    . "$dir/t/tap-todo-skip-together.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-todo-skip-together.sh'" >&2
+exit '99'
diff --git a/t/tap-todo-skip-together.sh b/t/tap-todo-skip-together.sh
new file mode 100755 (executable)
index 0000000..31580ca
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - TODO and SKIP directives on the same line: the first one wins
+# See also related test 'tap-ambiguous-directive.test'.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+1..2
+ok 1 # SKIP TODO
+not ok 2 # TODO SKIP
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=2 pass=0 fail=0 xpass=0 xfail=1 skip=1 error=0
+
+grep '^SKIP: all\.test 1 ' stdout
+grep '^XFAIL: all\.test 2 ' stdout
+
+:
diff --git a/t/tap-todo-skip-w.sh b/t/tap-todo-skip-w.sh
new file mode 100755 (executable)
index 0000000..4260325
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-todo-skip.sh"; then
+    echo "$0: will source $dir/t/tap-todo-skip.sh"
+    . "$dir/t/tap-todo-skip.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-todo-skip.sh'" >&2
+exit '99'
diff --git a/t/tap-todo-skip-whitespace-w.sh b/t/tap-todo-skip-whitespace-w.sh
new file mode 100755 (executable)
index 0000000..b0695e3
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-todo-skip-whitespace.sh"; then
+    echo "$0: will source $dir/t/tap-todo-skip-whitespace.sh"
+    . "$dir/t/tap-todo-skip-whitespace.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-todo-skip-whitespace.sh'" >&2
+exit '99'
diff --git a/t/tap-todo-skip-whitespace.sh b/t/tap-todo-skip-whitespace.sh
new file mode 100755 (executable)
index 0000000..d36aa13
--- /dev/null
@@ -0,0 +1,99 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - normalization of whitespace in console testsuite progress associated
+#    with TODO and SKIP directives
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > stub.tap <<END
+1 # TODO
+2 # TODO foo?
+3 # TODO: bar!
+4 aa # TODO
+5 bb # TODO       fnord 5
+6 cc # TODO:${tab}fnord 6
+7 - x # TODO
+8 - y # TODO fnord $tab  8
+9 - z # TODO: fnord 9  $tab
+10# TODO x0
+11$tab# TODO x1
+12 $tab$tab   # TODO x2
+13 asd# TODO x3
+14 sad$tab# TODO x4
+15 das$tab$tab   # TODO x5
+END
+
+cat > stub.exp <<END
+1 # TODO
+2 # TODO foo?
+3 # TODO: bar!
+4 aa # TODO
+5 bb # TODO fnord 5
+6 cc # TODO:${tab}fnord 6
+7 - x # TODO
+8 - y # TODO fnord $tab  8
+9 - z # TODO: fnord 9
+10 # TODO x0
+11 # TODO x1
+12 # TODO x2
+13 asd # TODO x3
+14 sad # TODO x4
+15 das # TODO x5
+END
+
+plan=1..15
+
+my_make_check ()
+{
+  xpass=0 xfail=0 skip=0
+  case $1 in
+    xpass|xfail|skip) eval $1=15;;
+    *) fatal_ "bad argument '$1' for my_make_check";;
+  esac
+  cat all.test
+  $MAKE check >stdout || : # Don't care about the exit status in this test.
+  cat stdout
+  count_test_results total=15 pass=0 fail=0 error=0 \
+                     xpass=$xpass xfail=$xfail skip=$skip
+  # Don't be too strict w.r.t. possible normalization of "TODO: foo" into
+  # "TODO : foo" (as is done by, e.g., the 'TAP::Parser' perl module).
+  LC_ALL=C grep '^[A-Z][A-Z]*:' stdout \
+    | sed -e 's/# TODO *:/# TODO:/' -e 's/# SKIP *:/# SKIP:/' > got
+  cat exp
+  cat got
+  diff exp got
+}
+
+# For "TODO" directives leading to XPASS results.
+(echo $plan && sed -e 's/^/ok /' stub.tap) > all.test
+sed -e 's/^/XPASS: all.test /' stub.exp > exp
+my_make_check xpass
+
+# For "TODO" directives leading to XFAIL results.
+(echo $plan && sed -e 's/^/not ok /' stub.tap) > all.test
+sed -e 's/^/XFAIL: all.test /' stub.exp > exp
+my_make_check xfail
+
+# For "SKIP" directives.
+(echo $plan && sed -e 's/^/ok /' -e 's/TODO/SKIP/' stub.tap) > all.test
+sed -e 's/TODO/SKIP/' -e 's/^/SKIP: all.test /' stub.exp > exp
+my_make_check skip
+
+:
diff --git a/t/tap-todo-skip.sh b/t/tap-todo-skip.sh
new file mode 100755 (executable)
index 0000000..62206ab
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - TODO and SKIP directives are case-insensitive
+#  - TODO and SKIP directives can be followed optionally by a colon ":"
+#    and by an optional explanation.
+#  - our driver isn't fooled into recognizing TODO and SKIP directives
+#    spuriously
+#  - the reasons for TODO and SKIP, if present, are nicely printed in
+#    the testsuite progress output
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+# ----------------------------------------------------- #
+#  Check all possible combinations of:                  #
+#    - uppercase/lowercase                              #
+#    - with/without colon character ":"                 #
+#    - with/without explanatory message                 #
+#  in TODO and SKIP directives.                         #
+# ----------------------------------------------------- #
+
+# There are 2 * 2^6 + 2 * 2^6 = 256 tests.
+echo 1..256 > all.test
+
+# These nested loops are clearer without indentation.
+
+for c1 in t T; do
+for c2 in o O; do
+for c3 in d D; do
+for c4 in o O; do
+for ex in '' ':' ' foo' ': foo'; do
+  echo "not ok # $c1$c2$c3$c4$ex"
+  echo "not ok# $c1$c2$c3$c4$ex"
+done; done; done; done; done >> all.test
+
+for c1 in s S; do
+for c2 in k K; do
+for c3 in i I; do
+for c4 in p P; do
+for ex in '' ':' ' foo' ': foo'; do
+  echo "ok # $c1$c2$c3$c4$ex"
+  echo "ok# $c1$c2$c3$c4$ex"
+done; done; done; done; done >> all.test
+
+cat all.test # For debugging.
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=256 pass=0 fail=0 xpass=0 xfail=128 skip=128 error=0
+
+# -------------------------------------------------------- #
+#  TODO ans SKIP directives aren't recognized spuriously.  #
+# -------------------------------------------------------- #
+
+cat > all.test <<'END'
+1..9
+ok TODO
+ok - TODO
+ok 3 TODO
+ok 4 - TODO
+ok SKIP
+ok - SKIP
+ok 7 SKIP
+ok 8 - SKIP
+ok 9
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=9 pass=9 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+:
diff --git a/t/tap-unplanned-w.sh b/t/tap-unplanned-w.sh
new file mode 100755 (executable)
index 0000000..ab6aa08
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-unplanned.sh"; then
+    echo "$0: will source $dir/t/tap-unplanned.sh"
+    . "$dir/t/tap-unplanned.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-unplanned.sh'" >&2
+exit '99'
diff --git a/t/tap-unplanned.sh b/t/tap-unplanned.sh
new file mode 100755 (executable)
index 0000000..e8d9dad
--- /dev/null
@@ -0,0 +1,158 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - unplanned tests are properly reported as errors
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<END
+1..1
+ok 1
+ok 2
+END
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=3 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=2
+grep '^ERROR: all\.test - too many tests run (expected 1, got 2)$' stdout
+grep '^ERROR: all\.test 2 # UNPLANNED$' stdout
+
+cat > all.test <<END
+1..2
+ok 1
+ok 2
+ok 3
+END
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=4 pass=2 fail=0 xpass=0 xfail=0 skip=0 error=2
+grep '^ERROR: all\.test - too many tests run (expected 2, got 3)$' stdout
+grep '^ERROR: all\.test 3 # UNPLANNED$' stdout
+
+# Interaction with XFAIL_TESTS.
+cat > all.test <<END
+1..2
+not ok 1
+ok 2 # SKIP
+ok 3
+not ok 4
+ok 5 # SKIP
+END
+XFAIL_TESTS=all.test $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=6 pass=0 fail=0 xpass=0 xfail=1 skip=1 error=4
+grep '^ERROR: all\.test - too many tests run (expected 2, got 5)$' stdout
+grep '^ERROR: all\.test 3 # UNPLANNED$' stdout
+grep '^ERROR: all\.test 4 # UNPLANNED$' stdout
+grep '^ERROR: all\.test 5 # UNPLANNED$' stdout
+
+cat > all.test <<END
+1..1
+ok 1
+
+ok
+ok 3
+ok foo
+ok 5 - bar bar
+
+not ok
+not ok 7
+not ok foo
+not ok 9 - bar bar
+
+ok # TODO
+ok 11 # TODO
+ok foo # TODO
+ok 13 - bar bar # TODO
+
+not ok # TODO
+not ok 15 # TODO
+not ok foo # TODO
+not ok 17 - bar bar # TODO
+
+ok # SKIP
+ok 19 # SKIP
+ok foo # SKIP
+ok 21 - bar bar # SKIP
+END
+
+cat > t <<END
+
+2
+3
+4 foo
+5 - bar bar
+
+6
+7
+8 foo
+9 - bar bar
+
+10
+11
+12 foo
+13 - bar bar
+
+14
+15
+16 foo
+17 - bar bar
+
+18
+19
+20 foo
+21 - bar bar
+
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=22 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=21
+
+echo 'PASS: all.test 1' > exp
+sed -e '/^$/d' -e 's/.*/ERROR: all.test & # UNPLANNED/' t >> exp
+echo 'ERROR: all.test - too many tests run (expected 1, got 21)' >> exp
+
+$FGREP ': all.test' stdout > got
+
+cat exp
+cat got
+diff exp got
+
+# Note that, if the TAP input has a trailing plan, it is not possible
+# to flag unplanned tests as such, since we do not know they're unplanned
+# until the plan is reached; still, we should give at least an error
+# message about the unmatched number of tests once we've got the plan.
+
+for x in 'ok' 'ok 3' 'not ok' 'not ok # TODO' 'ok # TODO' 'ok # SKIP'; do
+  unindent > all.test <<END
+    ok 1
+    ok 2 # SKIP
+    $x
+    1..2
+END
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  test `$FGREP -c ': all.test' stdout` -eq 4
+  $EGREP '^PASS: all\.test 1($| )' stdout
+  $EGREP '^SKIP: all\.test 2($| )' stdout
+  $EGREP ': all\.test 3($| )' stdout
+  grep '^ERROR: all\.test - too many tests run (expected 2, got 3)$' stdout
+done
+
+:
diff --git a/t/tap-whitespace-normalization-w.sh b/t/tap-whitespace-normalization-w.sh
new file mode 100755 (executable)
index 0000000..f911e9d
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-whitespace-normalization.sh"; then
+    echo "$0: will source $dir/t/tap-whitespace-normalization.sh"
+    . "$dir/t/tap-whitespace-normalization.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-whitespace-normalization.sh'" >&2
+exit '99'
diff --git a/t/tap-whitespace-normalization.sh b/t/tap-whitespace-normalization.sh
new file mode 100755 (executable)
index 0000000..a43d29a
--- /dev/null
@@ -0,0 +1,164 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support: whitespace normalization (or lack thereof) in the testsuite
+# progress output on console.  We keep all these checks here in a single
+# script so that a potential cosmetic change in the output format won't
+# force us to tweak dozens of other tests (hopefully).
+# See also related test 'tap-todo-skip-whitespace.test'.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+TEST_LOG_COMPILER = cat
+TESTS =
+END
+
+: > exp
+
+spaces_a=${sp}${tab}${tab}${sp}${sp}${tab}
+spaces_b=${tab}${tab}${sp}${tab}${sp}${sp}${sp}
+
+#-----------------------------------------------------------------------
+
+echo TESTS += numbers.test >> Makefile.am
+
+cat > numbers.test <<END
+1..6
+ok${spaces_a}1
+ok 2${spaces_b}
+ok${spaces_a}3${spaces_b}
+not ok${spaces_b}4
+not ok 5${spaces_a}
+not ok${spaces_b}6${spaces_a}
+END
+
+cat >> exp <<END
+PASS: numbers.test 1
+PASS: numbers.test 2
+PASS: numbers.test 3
+FAIL: numbers.test 4
+FAIL: numbers.test 5
+FAIL: numbers.test 6
+END
+
+#-----------------------------------------------------------------------
+
+echo TESTS += description.test >> Makefile.am
+
+cat > description.test <<END
+1..8
+ok${spaces_a}+foo
+ok +bar${spaces_b}
+ok${spaces_a}+baz${spaces_b}
+not ok${spaces_b}-foo
+not ok -bar${spaces_a}
+not ok${spaces_b}-baz${spaces_a}
+ok  u${spaces_b}v${spaces_a}w${sp}
+not ok${spaces_a}x${spaces_a}y${tab}z${tab}
+END
+
+cat >> exp <<END
+PASS: description.test 1 +foo
+PASS: description.test 2 +bar
+PASS: description.test 3 +baz
+FAIL: description.test 4 -foo
+FAIL: description.test 5 -bar
+FAIL: description.test 6 -baz
+PASS: description.test 7 u${spaces_b}v${spaces_a}w
+FAIL: description.test 8 x${spaces_a}y${tab}z
+END
+
+#-----------------------------------------------------------------------
+
+# "Bail out!" magic.
+
+echo TESTS += bailout.test >> Makefile.am
+
+cat > bailout.test <<END
+1..1
+Bail out!${tab}${sp}${sp}${tab}We're out of disk space.
+ok 1
+END
+
+cat >> exp <<END
+ERROR: bailout.test - Bail out! We're out of disk space.
+END
+
+echo TESTS += bailout2.test >> Makefile.am
+
+cat > bailout2.test <<END
+1..1
+Bail out!foo${tab}${sp}
+ok 1
+END
+
+cat >> exp <<END
+ERROR: bailout2.test - Bail out! foo
+END
+
+#-----------------------------------------------------------------------
+
+# Diagnostic lines.
+
+echo AM_TEST_LOG_DRIVER_FLAGS = --comments >> Makefile.am
+echo TESTS += cmnt.test >> Makefile.am
+
+cat > cmnt.test <<END
+1..1
+ok 1
+#Leading whitespace gets added
+#   ${tab}${tab} ${tab}Extra leading whitespace is stripped
+# Trailing whitespace is stripped ${tab}   ${tab}${tab}
+# Middle${tab}whitespace  is${tab}  ${tab}${tab}    kept
+# ${tab} And  only${tab}middle ${tab}whitespace  ${tab}${tab} ${tab}
+END
+
+cat >> exp <<END
+PASS: cmnt.test 1
+# cmnt.test: Leading whitespace gets added
+# cmnt.test: Extra leading whitespace is stripped
+# cmnt.test: Trailing whitespace is stripped
+# cmnt.test: Middle${tab}whitespace  is${tab}  ${tab}${tab}    kept
+# cmnt.test: And  only${tab}middle ${tab}whitespace
+END
+
+#-----------------------------------------------------------------------
+
+# TODO: we should have more checks here ... (but let's not over-do FTM).
+
+#-----------------------------------------------------------------------
+
+chmod a+x *.test
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+# Don't care about exit status or number of test results, they should be
+# checked for in many other tests.
+$MAKE check >stdout || :
+cat stdout
+
+LC_ALL=C sort exp > t
+mv -f t exp
+
+# We need the sort below to account for parallel make usage.
+LC_ALL=C grep '[a-z0-9][a-z0-9]*\.test' stdout | LC_ALL=C sort > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/t/tap-with-and-without-number-w.sh b/t/tap-with-and-without-number-w.sh
new file mode 100755 (executable)
index 0000000..5f324ee
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-with-and-without-number.sh"; then
+    echo "$0: will source $dir/t/tap-with-and-without-number.sh"
+    . "$dir/t/tap-with-and-without-number.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-with-and-without-number.sh'" >&2
+exit '99'
diff --git a/t/tap-with-and-without-number.sh b/t/tap-with-and-without-number.sh
new file mode 100755 (executable)
index 0000000..82889c2
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP support:
+#  - numbered and unnumbered test results can coexist
+#  - tests without explicit number get automatically numbered in the
+#    testsuite progress output on console
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+cat > all.test <<'END'
+1..7
+ok 1 foo
+ok 2 - foo2
+ok - bar
+not ok baz # TODO
+not ok 5 - asd # TODO
+ok 6 # SKIP
+ok zardoz
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+count_test_results total=7 pass=4 fail=0 xpass=0 xfail=2 skip=1 error=0
+
+grep '^PASS: all\.test 1 foo$' stdout
+grep '^PASS: all\.test 2 - foo2$' stdout
+grep '^PASS: all\.test 3 - bar$' stdout
+grep '^XFAIL: all\.test 4 baz # TODO$' stdout
+grep '^XFAIL: all\.test 5 - asd # TODO$' stdout
+grep '^SKIP: all\.test 6 # SKIP$' stdout
+grep '^PASS: all\.test 7 zardoz$' stdout
+
+:
diff --git a/t/tap-xfail-tests-w.sh b/t/tap-xfail-tests-w.sh
new file mode 100755 (executable)
index 0000000..4b1bbf8
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/sh
+# This file has been automatically generated.  DO NOT EDIT BY HAND!
+. ./defs-static || exit '99';
+am_tap_implementation=perl
+# In the spirit of VPATH, we prefer a test in the build tree
+# over one in the source tree.
+for dir in . "$am_top_srcdir"; do
+  if test -f "$dir/t/tap-xfail-tests.sh"; then
+    echo "$0: will source $dir/t/tap-xfail-tests.sh"
+    . "$dir/t/tap-xfail-tests.sh"; exit "$?"
+  fi
+done
+echo "$0: cannot find wrapped test 't/tap-xfail-tests.sh'" >&2
+exit '99'
diff --git a/t/tap-xfail-tests.sh b/t/tap-xfail-tests.sh
new file mode 100755 (executable)
index 0000000..27c1804
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TAP and $(XFAIL_TESTS): test results without directives are turned from
+# PASS to XPASS and from FAIL to XFAIL; other results are unchanged.
+
+. ./defs || Exit 1
+
+. "$am_testauxdir"/tap-setup.sh || fatal_ "sourcing tap-setup.sh"
+
+echo 'XFAIL_TESTS = $(TESTS)' >> Makefile
+
+cat > all.test <<END
+1..6
+ok 1
+not ok 2
+ok 3 # TODO
+not ok 4 # TODO
+ok 5 # SKIP
+# The next should count as a failure (and thus will be
+# rendered into an expected failure by XFAIL_TESTS).
+not ok 6 # SKIP
+Bail out!
+END
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=7 pass=0 fail=0 xpass=2 xfail=3 skip=1 error=1
+
+grep '^XPASS: all\.test 1$' stdout
+grep '^XFAIL: all\.test 2$' stdout
+grep '^XPASS: all\.test 3 # TODO' stdout
+grep '^XFAIL: all\.test 4 # TODO' stdout
+grep '^SKIP: all\.test 5 # SKIP' stdout
+grep '^XFAIL: all\.test 6 # SKIP' stdout
+grep '^ERROR: all\.test - Bail out!' stdout
+
+# Check that the exit status of the testsuite is indeed 0 when we
+# would expect success.
+
+cat > all.test <<END
+1..3
+not ok 1
+ok 2 # SKIP
+not ok 3 # TODO
+END
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+
+count_test_results total=3 pass=0 fail=0 xpass=0 xfail=2 skip=1 error=0
+
+:
diff --git a/t/tar-override.sh b/t/tar-override.sh
new file mode 100755 (executable)
index 0000000..641ce86
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the user can override the tar program used by "make dist"
+# at runtime, by redefining the 'TAR' environment variable.
+# FIXME: currently this works only when the tar format used is 'v7'
+# FIXME: (which is the default one).
+
+. ./defs || Exit 1
+
+cwd=`pwd` || fatal_ "couldn't get current working directory"
+
+echo AC_OUTPUT >> configure.ac
+
+cat > am--tar <<'END'
+#!/bin/sh
+echo $1 > am--tar-has-run
+shift
+exec tar "$@"
+END
+chmod a+x am--tar
+
+cat > Makefile.am <<'END'
+check-local: dist
+       test -f am--tar-has-run
+CLEANFILES = am--tar-has-run
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+$MAKE dist
+test -f $me-1.0.tar.gz
+ls | grep has-run && Exit 1
+
+rm -f *.tar.* *has-run*
+
+TAR="$cwd/am--tar foo" $MAKE distcheck
+test -f $me-1.0.tar.gz
+test "`cat am--tar-has-run`" = foo
+
+rm -f *.tar.* *has-run*
+
+TAR=; unset TAR
+# Creative use of eval to pacify maintainer checks.
+eval \$'MAKE dist "TAR=./am--tar mu"'
+test -f $me-1.0.tar.gz
+test "`cat am--tar-has-run`" = mu
+
+:
diff --git a/t/tar.sh b/t/tar.sh
new file mode 100755 (executable)
index 0000000..263049a
--- /dev/null
+++ b/t/tar.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check the tar-ustar option.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([tar], [1.0])
+AM_INIT_AUTOMAKE([tar-ustar])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+if grep 'am__tar.*false' Makefile; then
+  skip_ "cannot find proper archiver program"
+fi
+
+$MAKE distcheck
+test -f tar-1.0.tar.gz
diff --git a/t/tar2.sh b/t/tar2.sh
new file mode 100755 (executable)
index 0000000..f9cc000
--- /dev/null
+++ b/t/tar2.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check the tar-pax option.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([tar2], [1.0])
+AM_INIT_AUTOMAKE([tar-pax])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+if grep 'am__tar.*false' Makefile; then
+  skip_ "cannot find proper archiver program"
+fi
+
+$MAKE distcheck
+test -f tar2-1.0.tar.gz
diff --git a/t/tar3.sh b/t/tar3.sh
new file mode 100755 (executable)
index 0000000..403ce99
--- /dev/null
+++ b/t/tar3.sh
@@ -0,0 +1,52 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check the tar options diagnostics.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT([tar2], [1.0])
+AM_INIT_AUTOMAKE([tar-pax tar-v7])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+$ACLOCAL
+AUTOMAKE_fails
+grep "^configure\.ac:2:.*mutually exclusive" stderr > tar-err
+cat tar-err
+test 1 = `wc -l < tar-err`
+grep "'tar-pax'" tar-err
+grep "'tar-v7'"  tar-err
+
+rm -rf autom4te.cache
+
+cat > configure.ac << 'END'
+AC_INIT([tar2], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+echo 'AUTOMAKE_OPTIONS = tar-pax' > Makefile.am
+
+AUTOMAKE_fails
+grep '^Makefile\.am:1:.*tar-pax.*AM_INIT_AUTOMAKE' stderr
+
+:
diff --git a/t/target-cflags.sh b/t/target-cflags.sh
new file mode 100755 (executable)
index 0000000..ad0e94d
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure target specific CFLAGS work
+# Assar Westerlund <assar@sics.se>
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = no-dependencies
+
+bin_PROGRAMS = foo bar
+foo_CFLAGS   = -DFOO
+END
+
+cat > foo.c << 'END'
+#include <stdio.h>
+#ifdef FOO
+int main(void)
+{
+  return 0;
+}
+#endif
+END
+
+cat > bar.c << 'END'
+#ifndef FOO
+int main(void)
+{
+  return 0;
+}
+#endif
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+mkdir build
+
+cd build
+../configure
+$MAKE
+if cross_compiling; then :; else
+  ./foo
+  ./bar
+fi
+cd ..
+
+./configure
+$MAKE
+if cross_compiling; then :; else
+  ./foo
+  ./bar
+fi
+
+:
diff --git a/t/targetclash.sh b/t/targetclash.sh
new file mode 100755 (executable)
index 0000000..43e227d
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that target clashes are diagnosed.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = ctags
+END
+
+$ACLOCAL
+AUTOMAKE_fails -a
+grep 'redefinition.*ctags' stderr
+
+:
diff --git a/t/test-driver-acsubst.sh b/t/test-driver-acsubst.sh
new file mode 100755 (executable)
index 0000000..e384ac7
--- /dev/null
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests:
+#  - LOG_DRIVER variables can be AC_SUBST'd
+
+. ./defs || Exit 1
+
+mkdir test-drivers
+
+cp "$am_testauxdir"/trivial-test-driver test-drivers/triv \
+  || fatal_ "failed to fetch auxiliary script trivial-test-driver"
+cp "$am_scriptdir"/test-driver test-drivers/dflt \
+  || fatal_ "failed to fetch auxiliary script test-driver"
+
+cat >> configure.ac <<'END'
+AC_SUBST([LOG_DRIVER],      ['${SHELL} test-drivers/triv'])
+AC_SUBST([TEST_LOG_DRIVER], ['${SHELL} test-drivers/dflt'])
+AC_SUBST([SH_LOG_DRIVER],   ['${my_drv}'])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TEST_EXTENSIONS = .test .sh
+my_drv = $(SHELL) test-drivers/dflt
+TESTS = foo bar.test baz.sh
+XFAIL_TESTS = baz.sh
+.PHONY: check-autodefs
+check-autodefs:
+### For debugging.
+       @echo      LOG_DRIVER = $(LOG_DRIVER)
+       @echo TEST_LOG_DRIVER = $(TEST_LOG_DRIVER)
+       @echo   SH_LOG_DRIVER = $(SH_LOG_DRIVER)
+### Checks here.
+       @echo ' ' $(LOG_DRIVER)      ' ' | grep ' test-drivers/triv '
+       @echo ' ' $(TEST_LOG_DRIVER) ' ' | grep ' test-drivers/dflt '
+       @echo ' ' $(SH_LOG_DRIVER)   ' ' | grep ' test-drivers/dflt '
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+
+cat > foo <<'END'
+#!/bin/sh
+echo "PASS: from $0"
+exit 1 # Exit status should be ignored by the trivial-test-driver.
+END
+
+cat > bar.test <<'END'
+#!/bin/sh
+exit 77
+END
+
+cat > baz.sh <<'END'
+#!/bin/sh
+exit 1
+END
+
+chmod a+x foo bar.test baz.sh
+
+$MAKE check-autodefs
+st=0; $MAKE check >stdout || st=$?
+cat stdout
+cat test-suite.log
+cat foo.log
+cat bar.log
+cat baz.log
+test $st -eq 0 || Exit 1
+count_test_results total=3 pass=1 fail=0 skip=1 xfail=1 xpass=0 error=0
+
+:
diff --git a/t/test-driver-cond.sh b/t/test-driver-cond.sh
new file mode 100755 (executable)
index 0000000..5538105
--- /dev/null
@@ -0,0 +1,118 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests:
+#   - Automake can correctly handle conditionals contents for the
+#     LOG_DRIVER variables.
+
+. ./defs || Exit 1
+
+cp "$am_testauxdir"/trivial-test-driver . \
+  || fatal_ "failed to fetch auxiliary script trivial-test-driver"
+cp "$am_scriptdir"/tap-driver.pl . \
+  || fatal_ "failed to fetch auxiliary script tap-driver.pl"
+
+cat >> configure.ac << END
+AM_CONDITIONAL([COND1], [:])
+AM_CONDITIONAL([COND2], [false])
+AM_CONDITIONAL([COND3], [false])
+AC_SUBST([PERL], ['$PERL'])
+AC_SUBST([my_LOG_DRIVER], ['\${SHELL} \${top_srcdir}/trivial-test-driver'])
+AM_SUBST_NOTMAKE([my_LOG_DRIVER])
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+
+cat > Makefile.am << 'END'
+TESTS = foo bar.test baz.sh
+EXTRA_DIST = $(TESTS) tap-driver.pl trivial-test-driver
+TEST_EXTENSIONS = .test .sh
+LOG_DRIVER =
+SH_LOG_DRIVER = $(tap_rulez)
+if COND1
+LOG_DRIVER += @my_LOG_DRIVER@
+if COND2
+tap_rulez = false
+else !COND2
+tap_rulez = $(PERL) $(srcdir)/tap-driver.pl
+endif !COND2
+endif COND1
+END
+
+cat > foo <<'END'
+#!/bin/sh
+echo "PASS: from $0"
+echo "SKIP: from $0"
+exit 1 # Exit status should be ignored by the trivial-test-driver.
+END
+
+cat > bar.test <<'END'
+#!/bin/sh
+exit 0
+END
+
+cat > baz.sh <<'END'
+#!/bin/sh
+echo 1..3
+echo 'ok 1'
+echo 'not ok 2 # TODO'
+echo 'not ok 3 # TODO'
+END
+
+chmod a+x foo bar.test baz.sh
+
+$AUTOMAKE -a
+test -f test-driver
+
+grep DRIVER Makefile.in || Exit 99 # For debugging.
+
+grep '^my_LOG_DRIVER *=' Makefile.in \
+  && fatal_ 'unexpected $(my_LOG_DRIVER) in Makefile.in'
+
+grep '^TEST_LOG_DRIVER =.*\$(SHELL).*/test-driver' Makefile.in
+
+$PERL -MTAP::Parser -e 1 \
+  || skip_ "cannot import TAP::Parser perl module"
+
+./configure
+
+do_count ()
+{
+  count_test_results total=6 pass=3 fail=0 skip=1 xfail=2 xpass=0 error=0
+  grep '^PASS: foo, testcase 1 *$' stdout
+  grep '^SKIP: foo, testcase 2 *$' stdout
+  grep '^PASS: bar\.test *$' stdout
+  $EGREP 'PASS: baz\.sh 1( |$)' stdout
+  $EGREP 'XFAIL: baz\.sh 2( |$)' stdout
+  $EGREP 'XFAIL: baz\.sh 3( |$)' stdout
+}
+
+st=0; $MAKE check >stdout || st=$?
+cat stdout
+cat test-suite.log
+cat foo.log
+cat bar.log
+cat baz.log
+test $st -eq 0 || Exit 1
+do_count
+
+$MAKE distcheck >stdout || { cat stdout; Exit 1; }
+cat stdout
+do_count
+
+:
diff --git a/t/test-driver-create-log-dir.sh b/t/test-driver-create-log-dir.sh
new file mode 100755 (executable)
index 0000000..dc8e681
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers: if a log file has a directory component (as in
+# e.g., 'sub/foo.log'), the Automake test harness must ensure that
+# directory exists before calling any custom test driver.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# The extra '.' components below are meant.
+TESTS = sub/foo sub/subsub/bar.test ././sub1/./baz
+$(TESTS):
+LOG_DRIVER = $(srcdir)/checkdir-driver
+TEST_LOG_DRIVER = $(LOG_DRIVER)
+EXTRA_DIST = checkdir-driver
+
+check-local: $(TEST_SUITE_LOG)
+       test -d sub
+       test -d sub1
+       test -d sub/subsub
+       test -f sub/foo.log
+       test -f sub/subsub/bar.log
+       test -f sub1/baz.log
+       test -f sub/foo.trs
+       test -f sub/subsub/bar.trs
+       test -f sub1/baz.trs
+END
+
+cat > checkdir-driver <<'END'
+#! /bin/sh
+set -e; set -u
+while test $# -gt 0; do
+  case $1 in
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    --test-name|--expect-failure|--color-tests|--enable-hard-errors) shift;;
+    --) shift; break;;
+     *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+echo "log: $log_file" # For debugging.
+echo "trs: $trs_file" # Ditto.
+case $log_file in */*);; *) exit 1;; esac
+dir_log=`expr "$log_file" : '\(.*\)/[^/]*'`
+dir_trs=`expr "$trs_file" : '\(.*\)/[^/]*'`
+echo "dir_log: $dir_log" # For debugging.
+echo "dir_trs: $dir_trs" # Likewise.
+test x"$dir_trs" = x"$dir_log" || exit 1
+test -d "$dir_log" || exit 1
+echo dummy1 > "$log_file"
+echo dummy2 > "$trs_file"
+END
+chmod a+x checkdir-driver
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/test-driver-custom-multitest-recheck.sh b/t/test-driver-custom-multitest-recheck.sh
new file mode 100755 (executable)
index 0000000..a42e0d0
--- /dev/null
@@ -0,0 +1,213 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers: try the "recheck" functionality with test protocols
+# that allow multiple testcases in a single test script.  This test not
+# only checks implementation details in Automake's custom test drivers
+# support, but also serves as a "usability test" for our APIs.
+# See also related tests 'test-driver-custom-multitest-recheck2.test'
+# and 'parallel-tests-recheck-override.test'.
+# Keep in sync with 'tap-recheck.test'.
+
+. ./defs || Exit 1
+
+cp "$am_testauxdir"/trivial-test-driver . \
+  || fatal_ "failed to fetch auxiliary script trivial-test-driver"
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(SHELL) $(srcdir)/trivial-test-driver
+TESTS = a.test b.test c.test d.test
+END
+
+cat > a.test << 'END'
+#! /bin/sh
+echo PASS: aa
+echo PASS: AA
+: > a.run
+END
+
+cat > b.test << 'END'
+#! /bin/sh
+echo PASS:
+if test -f b.ok; then
+  echo PASS:
+else
+  echo ERROR:
+fi
+: > b.run
+END
+
+cat > c.test << 'END'
+#! /bin/sh
+if test -f c.pass; then
+  echo PASS: c0
+else
+  echo FAIL: c0
+fi
+if test -f c.xfail; then
+  echo XFAIL: c1
+else
+  echo XPASS: c1
+fi
+echo XFAIL: c2
+: > c.run
+END
+
+cat > d.test << 'END'
+#! /bin/sh
+echo SKIP: who cares ...
+(. ./d.extra) || echo FAIL: d.extra failed
+: > d.run
+END
+
+chmod a+x *.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+do_recheck ()
+{
+  case $* in
+    --fail) on_bad_rc='&&';;
+    --pass) on_bad_rc='||';;
+         *) fatal_ "invalid usage of function 'do_recheck'";;
+  esac
+  rm -f *.run
+  eval "\$MAKE recheck >stdout $on_bad_rc { cat stdout; ls -l; Exit 1; }; :"
+  cat stdout; ls -l
+}
+
+for vpath in : false; do
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+
+  : A "make recheck" in a clean tree should run no tests.
+  do_recheck --pass
+  cat test-suite.log
+  test ! -r a.run
+  test ! -r a.log
+  test ! -r b.run
+  test ! -r b.log
+  test ! -r c.run
+  test ! -r c.log
+  test ! -r d.run
+  test ! -r d.log
+  count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+  : Run the tests for the first time.
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  ls -l
+  # All the test scripts should have run.
+  test -f a.run
+  test -f b.run
+  test -f c.run
+  test -f d.run
+  count_test_results total=9 pass=3 fail=2 xpass=1 xfail=1 skip=1 error=1
+
+  : Let us make b.test pass.
+  echo OK > b.ok
+  do_recheck --fail
+  # a.test has been successful the first time, so no need to re-run it.
+  # Similar considerations apply to similar checks, below.
+  test ! -r a.run
+  test -f b.run
+  test -f c.run
+  test -f d.run
+  count_test_results total=7 pass=2 fail=2 xpass=1 xfail=1 skip=1 error=0
+
+  : Let us make the first part of c.test pass.
+  echo OK > c.pass
+  do_recheck --fail
+  test ! -r a.run
+  test ! -r b.run
+  test -f c.run
+  test -f d.run
+  count_test_results total=5 pass=1 fail=1 xpass=1 xfail=1 skip=1 error=0
+
+  : Let us make also the second part of c.test pass.
+  echo KO > c.xfail
+  do_recheck --fail
+  test ! -r a.run
+  test ! -r b.run
+  test -f c.run
+  test -f d.run
+  count_test_results total=5 pass=1 fail=1 xpass=0 xfail=2 skip=1 error=0
+
+  : Nothing changed, so only d.test should be run.
+  for i in 1 2; do
+    do_recheck --fail
+    test ! -r a.run
+    test ! -r b.run
+    test ! -r c.run
+    test -f d.run
+    count_test_results total=2 pass=0 fail=1 xpass=0 xfail=0 skip=1 error=0
+  done
+
+  : Let us make d.test run more testcases, and experience _more_ failures.
+  unindent > d.extra <<'END'
+    echo SKIP: s
+    echo FAIL: f 1
+    echo PASS: p 1
+    echo FAIL: f 2
+    echo XPASS: xp
+    echo FAIL: f 3
+    echo FAIL: f 4
+    echo ERROR: e 1
+    echo PASS: p 2
+    echo ERROR: e 2
+END
+  do_recheck --fail
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+  test -f d.run
+  count_test_results total=11 pass=2 fail=4 xpass=1 xfail=0 skip=2 error=2
+
+  : Let us finally make d.test pass.
+  echo : > d.extra
+  do_recheck --pass
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+  test -f d.run
+  count_test_results total=1 pass=0 fail=0 xpass=0 xfail=0 skip=1 error=0
+
+  : All tests have been successful or skipped, nothing should be re-run.
+  do_recheck --pass
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+  test ! -r d.run
+  count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/test-driver-custom-multitest-recheck2.sh b/t/test-driver-custom-multitest-recheck2.sh
new file mode 100755 (executable)
index 0000000..5ceb339
--- /dev/null
@@ -0,0 +1,187 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers: try the "recheck" functionality with test protocols
+# that allow multiple testcases in a single test script.  In particular,
+# check that this still works when we override $(TESTS) and $(TEST_LOGS)
+# at make runtime.
+# See also related tests 'test-driver-custom-multitest-recheck.test' and
+# 'parallel-tests-recheck-override.test'.
+
+. ./defs || Exit 1
+
+cp "$am_testauxdir"/trivial-test-driver . \
+  || fatal_ "failed to fetch auxiliary script trivial-test-driver"
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(SHELL) $(srcdir)/trivial-test-driver
+TESTS = a.test b.test c.test
+END
+
+cat > a.test << 'END'
+#! /bin/sh
+echo PASS: 1
+echo PASS: 2
+: > a.run
+END
+
+cat > b.test << 'END'
+#! /bin/sh
+echo SKIP: b0
+if test -f b.ok; then
+  echo XFAIL: b1
+else
+  echo FAIL: b2
+fi
+: > b.run
+END
+
+cat > c.test << 'END'
+#! /bin/sh
+if test -f c.err; then
+  echo ERROR: xxx
+elif test -f c.ok; then
+  echo PASS: ok
+else
+  echo XPASS: xp
+fi
+: > c.run
+END
+
+chmod a+x *.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+
+  : Run the tests for the first time.
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  # All the test scripts should have run.
+  test -f a.run
+  test -f b.run
+  test -f c.run
+  count_test_results total=5 pass=2 fail=1 xpass=1 xfail=0 skip=1 error=0
+
+  rm -f *.run
+
+  : An empty '$(TESTS)' or '$(TEST_LOGS)' means that no test should be run.
+  for var in TESTS TEST_LOGS; do
+    env "$var=" $MAKE -e recheck >stdout || { cat stdout; Exit 1; }
+    cat stdout
+    count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+    test ! -r a.run
+    test ! -r b.run
+    test ! -r c.run
+  done
+  unset var
+
+  : a.test was successful the first time, no need to re-run it.
+  env TESTS=a.test $MAKE -e recheck >stdout \
+    || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+
+  : b.test failed, it should be re-run.  And make it pass this time.
+  echo OK > b.ok
+  TEST_LOGS=b.log $MAKE -e recheck >stdout \
+    || { cat stdout; Exit 1; }
+  cat stdout
+  test ! -r a.run
+  test -f b.run
+  test ! -r c.run
+  count_test_results total=2 pass=0 fail=0 xpass=0 xfail=1 skip=1 error=0
+
+  rm -f *.run
+
+  : No need to re-run a.test or b.test anymore.
+  TEST_LOGS=b.log $MAKE -e recheck >stdout \
+    || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+  TESTS='a.test b.test' $MAKE -e recheck >stdout \
+    || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+
+  : No need to re-run a.test anymore, but c.test should be rerun,
+  : as it contained an XPASS.  And this time, make it fail with
+  : an hard error.
+  # Use 'echo' here, since Solaris 10 /bin/sh would try to optimize
+  # a ':' away after the first iteration, even if it is redirected.
+  echo dummy > c.err
+  env TEST_LOGS='a.log c.log' $MAKE -e recheck >stdout \
+    && { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=1 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=1
+  test ! -r a.run
+  test ! -r b.run
+  test -f c.run
+
+  rm -f *.run *.err
+
+  : c.test contained and hard error the last time, so it should be re-run.
+  : This time, make it pass
+  # Use 'echo', not ':'; see comments above for why.
+  echo dummy > c.ok
+  env TESTS='c.test a.test' $MAKE -e recheck >stdout \
+    || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=1 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=0
+  test ! -r a.run
+  test ! -r b.run
+  test -f c.run
+
+  rm -f *.run *.err *.ok
+
+  : Nothing should be rerun anymore, as all tests have been eventually
+  : successful.
+  $MAKE recheck >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+  test ! -r a.run
+  test ! -r b.run
+  test ! -r c.run
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/test-driver-custom-multitest.sh b/t/test-driver-custom-multitest.sh
new file mode 100755 (executable)
index 0000000..c660ec2
--- /dev/null
@@ -0,0 +1,171 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers: check that we can easily support test protocols
+# that allow multiple testcases in a single test script.  This test not
+# only checks implementation details in Automake's custom test drivers
+# support, but also serves as a "usability test" for our APIs.
+
+. ./defs || Exit 1
+
+cp "$am_testauxdir"/trivial-test-driver . \
+  || fatal_ "failed to fetch auxiliary script trivial-test-driver"
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_EXTENSIONS = .t
+T_LOG_DRIVER = $(SHELL) $(srcdir)/trivial-test-driver
+
+TESTS = \
+  pass.t \
+  fail.t \
+  fail2.t \
+  pass-fail.t \
+  pass4-skip.t \
+  pass3-skip2-xfail.t \
+  pass-xpass-fail-xfail-skip-error.t
+END
+
+cat > pass.t << 'END'
+echo %% pass %%
+echo PASS: pass
+END
+
+cat > fail.t << 'END'
+echo %% fail %%
+echo FAIL: fail
+END
+
+cat > fail2.t << 'END'
+echo %% fail2 %%
+echo FAIL: stdout >&1
+echo FAIL: stderr >&2
+echo :PASS: this should be ignored
+END
+
+cat > pass-fail.t << 'END'
+echo %% pass-fail %%
+echo 'FAIL: this fails :-('
+echo 'some randome message'
+echo 'some randome warning' >&2
+echo 'PASS: this passes :-)'
+echo 'INFO: blah'
+echo 'WARNING: blah blah' >&2
+END
+
+cat > pass4-skip.t << 'END'
+echo %% pass4-skip %%
+echo PASS: on stdout >&1
+echo PASS: on stderr >&2
+echo PASS: 3
+echo PASS: 4
+echo SKIP: 1
+echo this FAIL: should be ignored
+echo FAIL as should this
+exit 99
+END
+
+cat > pass3-skip2-xfail.t << 'END'
+echo %% pass4-skip2-xfail %%
+echo 'PASS: -v'
+echo 'PASS: --verbose'
+echo 'SKIP: Oops, unsupported system.'
+echo 'PASS: -#-#-#-'
+cp || echo "SKIP: cp cannot read users' mind" >&2
+mv || echo "XFAIL: mv cannot read users' mind yet"
+exit 127
+END
+
+cat > pass-xpass-fail-xfail-skip-error.t << 'END'
+echo PASS:
+echo FAIL:
+echo XFAIL:
+echo XPASS:
+echo SKIP:
+echo ERROR:
+echo %% pass-xpass-fail-xfail-skip-error %%
+END
+
+chmod a+x *.t
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+for vpath in : false; do
+  if $vpath; then
+    mkdir build
+    cd build
+    srcdir=..
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+
+  $MAKE check >stdout && { cat stdout; cat test-suite.log; Exit 1; }
+  cat stdout
+  cat test-suite.log
+  # Couple of sanity checks.  These might need to be updated if the
+  # 'trivial-test-driver' script is changed.
+  $FGREP INVALID.NAME stdout test-suite.log && Exit 1
+  test -f BAD.LOG && Exit 1
+  test -f BAD.TRS && Exit 1
+  # These log files must all have been created by the testsuite.
+  cat pass.log
+  cat fail.log
+  cat fail2.log
+  cat pass-fail.log
+  cat pass4-skip.log
+  cat pass3-skip2-xfail.log
+  cat pass-xpass-fail-xfail-skip-error.log
+
+  count_test_results total=23 pass=10 fail=5 skip=4 xfail=2 xpass=1 error=1
+
+  tst=pass-xpass-fail-xfail-skip-error
+  grep  "^PASS: $tst\.t, testcase 1" stdout
+  grep  "^FAIL: $tst\.t, testcase 2" stdout
+  grep "^XFAIL: $tst\.t, testcase 3" stdout
+  grep "^XPASS: $tst\.t, testcase 4" stdout
+  grep  "^SKIP: $tst\.t, testcase 5" stdout
+  grep "^ERROR: $tst\.t, testcase 6" stdout
+
+  # Check that the content of, and only of, the test logs with at least
+  # one failing test case has been copied into 'test-suite.log'.  Note
+  # that test logs containing skipped or xfailed test cases are *not*
+  # copied into 'test-suite.log' -- a behaviour that deliberately differs
+  # from the one of the built-in Automake test drivers.
+  grep '%%' test-suite.log # For debugging.
+  grep '%% fail %%' test-suite.log
+  grep '%% fail2 %%' test-suite.log
+  grep '%% pass-fail %%' test-suite.log
+  grep '%% pass-xpass-fail-xfail-skip-error %%' test-suite.log
+  test `grep -c '%% ' test-suite.log` -eq 4
+
+  TESTS='pass.t pass3-skip2-xfail.t' $MAKE -e check >stdout \
+    || { cat stdout; cat test-suite.log; Exit 1; }
+  cat test-suite.log
+  cat stdout
+  count_test_results total=7 pass=4 fail=0 skip=2 xfail=1 xpass=0 error=0
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/test-driver-custom-no-extra-driver.sh b/t/test-driver-custom-no-extra-driver.sh
new file mode 100755 (executable)
index 0000000..4d7367d
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that auxiliary script 'test-driver' doesn't get needlessly
+# installed or referenced if it's not used, i.e., if the user has
+# defined his own '*LOG_DRIVER' variables.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_SUBST([X_LOG_DRIVER], [none])
+AC_OUTPUT
+END
+
+mkdir sub1 sub2
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub1 sub2
+LOG_DRIVER =
+TEST_LOG_DRIVER = :
+TESTS = foo bar.test
+END
+
+cat > sub1/Makefile.am <<'END'
+TEST_EXTENSIONS = .x .sh .pl
+SH_LOG_DRIVER = dummy1
+PL_LOG_DRIVER = dummy2
+TESTS = a.pl b.sh c.x
+END
+
+cat > sub2/Makefile.am <<'END'
+TEST_EXTENSIONS = .bar
+LOG_DRIVER = x
+BAR_LOG_DRIVER = y
+TESTS = 1 2.bar 3.test 4.t 5.tt $(check_PROGRAMS)
+check_PROGRAMS = p1 p2$(EXEEXT) p3.bar p4.suf
+END
+
+$ACLOCAL
+
+for opts in '' '--add-missing' '-a -c'; do
+  $AUTOMAKE $opts
+  $FGREP test-driver Makefile.in sub[12]/Makefile.in && Exit 1
+  find . | $FGREP test-driver && Exit 1
+  : For shells with busted 'set -e'.
+done
+
+:
diff --git a/t/test-driver-custom-xfail-tests.sh b/t/test-driver-custom-xfail-tests.sh
new file mode 100755 (executable)
index 0000000..14568c0
--- /dev/null
@@ -0,0 +1,165 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers: "abstract" XFAIL_TESTS support.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_SUBST([nihil], [])
+AC_SUBST([ac_xfail_tests], ['x5.test x6$(test_suffix)'])
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = . sub1 sub2
+TEST_LOG_DRIVER = $(srcdir)/td
+TESTS = pass.test xfail.test
+XFAIL_TESTS = xfail.test
+END
+
+mkdir sub1 sub2
+
+cat > sub1/Makefile.am <<END
+empty =
+
+TEST_LOG_DRIVER = \$(top_srcdir)/td
+
+# XFAIL_TESTS should gracefully handle TAB characters, and multiple
+# whitespaces.
+XFAIL_TESTS =\$(empty)${tab}x1.test x2.test${tab}x3.test${tab}\
+x4.test ${tab} x5.test              x6.test${tab}\$(empty)
+
+TESTS = pass.test x1.test x2.test x3.test x4.test x5.test x6.test
+END
+
+cat > sub2/Makefile.am <<'END'
+AUTOMAKE_OPTIONS = -Wno-portability-recursive
+
+TEST_LOG_DRIVER = $(srcdir)/../td
+
+# XFAIL_TESTS should gracefully AC_SUBST @substitution@ and
+# make variables indirections.
+an_xfail_test = x1.test
+test_suffix = .test
+v0 = x3.test
+v1 = v
+v2 = 0
+XFAIL_TESTS = $(an_xfail_test) x2.test @nihil@ x3${test_suffix}
+XFAIL_TESTS += $($(v1)$(v2)) x4.test @ac_xfail_tests@
+
+TESTS = pass.test x1.test x2.test x3.test x4.test x5.test x6.test
+END
+
+cat > pass.test <<'END'
+#!/bin/sh
+exit 0
+END
+
+cat > xfail.test <<'END'
+#!/bin/sh
+exit 1
+END
+
+chmod a+x pass.test xfail.test
+
+cp pass.test sub1/pass.test
+cp pass.test sub2/pass.test
+
+for i in 1 2 3 4 5 6; do
+  cp xfail.test sub1/x$i.test
+  cp xfail.test sub2/x$i.test
+done
+
+cat > td <<'END'
+#! /bin/sh
+set -e; set -u
+test_name=INVALID
+log_file=/dev/null
+trs_file=/dev/null
+expect_failure=no
+while test $# -gt 0; do
+  case $1 in
+    --test-name) test_name=$2; shift;;
+    --expect-failure) expect_failure=$2; shift;;
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    # Ignored.
+    --color-tests) shift;;
+    --enable-hard-errors) shift;;
+    # Explicitly terminate option list.
+    --) shift; break;;
+    # Shouldn't happen
+    *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+st=0
+"$@" || st=$?
+case $st,$expect_failure in
+  0,no)
+    echo "PASS: $test_name" | tee "$log_file"
+    echo ":test-result: PASS" > "$trs_file"
+    ;;
+  1,no)
+    echo "FAIL: $test_name" | tee "$log_file"
+    echo ":test-result: FAIL" > "$trs_file"
+    ;;
+  0,yes)
+    echo "XPASS: $test_name" | tee "$log_file"
+    echo ":test-result: XPASS" > "$trs_file"
+    ;;
+  1,yes)
+    echo "XFAIL: $test_name" | tee "$log_file"
+    echo ":test-result: XFAIL" > "$trs_file"
+    ;;
+  *)
+    echo "INTERNAL ERROR" >&2
+    exit 99
+    ;;
+esac
+END
+chmod a+x td
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+test `grep -c '^PASS:'  stdout` -eq 3
+test `grep -c '^XFAIL:' stdout` -eq 13
+
+for dir in sub1 sub2; do
+  cd $dir
+  cp pass.test x1.test
+  cp x2.test pass.test
+  $MAKE check >stdout && { cat stdout; Exit 1; }
+  cat stdout
+  test "`cat pass.trs`" = ":test-result: FAIL"
+  test "`cat x1.trs`"   = ":test-result: XPASS"
+  test "`cat x2.trs`"   = ":test-result: XFAIL"
+  grep '^FAIL: pass\.test$' stdout
+  grep '^XPASS: x1\.test$'  stdout
+  grep '^XFAIL: x2\.test$'  stdout
+  count_test_results total=7 pass=0 xpass=1 fail=1 xfail=5 skip=0 error=0
+  cd ..
+done
+
+:
diff --git a/t/test-driver-custom.sh b/t/test-driver-custom.sh
new file mode 100755 (executable)
index 0000000..ce4a7fc
--- /dev/null
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers: per-extension test drivers.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# Automake shouldn't match the '/test' in 'sub/test' as '.test' suffix.
+TESTS = 1.chk 2.test 3 4.c.chk 5.suf sub/test
+
+TEST_EXTENSIONS = .chk .test
+
+CHK_LOG_DRIVER = ./chk-wrapper
+TEST_LOG_DRIVER = $(SHELL) $(srcdir)/test-wrapper
+LOG_DRIVER = noext-wrapper
+
+AM_CHK_LOG_DRIVER_FLAGS = --am-chk
+CHK_LOG_DRIVER_FLAGS = --chk
+AM_TEST_LOG_DRIVER_FLAGS = -am-test
+TEST_LOG_DRIVER_FLAGS = -test
+AM_LOG_DRIVER_FLAGS = am
+LOG_DRIVER_FLAGS = _
+END
+
+mkdir sub bin
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH
+
+cat > wrapper.skel <<'END'
+#! /bin/sh
+set -e
+
+me=`echo "$0" | sed 's,^.*/,,'`
+if test -z "$me"; then
+  echo "$0: cannot determine program name" >&2
+  exit 99
+fi
+
+am_log_wflags='@am_log_wflags@'
+log_wflags='@log_wflags@'
+
+test_name=INVALID
+log_file=BAD.log
+trs_file=BAD.trs
+extra_opts=
+while test $# -gt 0; do
+  case $1 in
+    --test-name) test_name=$2; shift;;
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    # Ignored.
+    --expect-failure) shift;;
+    --color-tests) shift;;
+    --enable-hard-errors) shift;;
+    # Remembered in the same order they're passed in.
+    $am_log_wflags|$log_wflags) extra_opts="$extra_opts $1";;
+    # Explicitly terminate option list.
+    --) shift; break;;
+    # Shouldn't happen
+    *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+
+echo "$me" "$test_name" $extra_opts > "$log_file"
+: > "$trs_file"
+
+exec "$@"
+exit 127
+END
+
+sed -e 's|@am_log_wflags@|--am-chk|' \
+    -e 's|@log_wflags@|--chk|' \
+    < wrapper.skel > chk-wrapper
+
+sed -e 's|@am_log_wflags@|-am-test|' \
+    -e 's|@log_wflags@|-test|' \
+    < wrapper.skel > test-wrapper
+
+sed -e 's|@am_log_wflags@|am|' \
+    -e 's|@log_wflags@|_|' \
+    < wrapper.skel > bin/noext-wrapper
+
+# 'test-wrapper' is deliberately not made executable.
+chmod a+x chk-wrapper bin/noext-wrapper
+
+# Not needed anymore.
+rm -f wrapper.skel
+
+cat > 1.chk << 'END'
+#! /bin/sh
+exit 0
+END
+chmod a+x 1.chk
+cp 1.chk 2.test
+cp 1.chk 3
+cp 1.chk 4.c.chk
+cp 1.chk 5.suf
+cp 1.chk sub/test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+VERBOSE=yes $MAKE check
+ls -l . sub
+
+test ! -r BAD.log
+test ! -r BAD.trs
+
+echo 'chk-wrapper 1.chk --am-chk --chk' > 1.exp
+echo 'test-wrapper 2.test -am-test -test' > 2.exp
+echo 'noext-wrapper 3 am _' > 3.exp
+echo 'chk-wrapper 4.c.chk --am-chk --chk' > 4.c.exp
+echo 'noext-wrapper 5.suf am _' > 5.suf.exp
+echo 'noext-wrapper sub/test am _' > sub/test.exp
+
+st=0
+for x in 1 2 3 4.c 5.suf sub/test; do
+  cat $x.log
+  diff $x.exp $x.log || st=1
+done
+
+Exit $st
diff --git a/t/test-driver-fail.sh b/t/test-driver-fail.sh
new file mode 100755 (executable)
index 0000000..75f6a87
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers: what happens when a test driver fails?  Well,
+# "make check" should at least fail too, and the test-suite.log
+# shouldn't be created.  Unfortunately, we cannot truly control also
+# the (non-)creation of individual test logs, since those are expected
+# to be created by the drivers themselves, and an ill-behaved driver
+# (like our dummy one in this test) might leave around a test log even
+# in case of internal failures.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+TEST_LOG_DRIVER = ./oops
+TESTS = foo.test
+END
+
+cat > foo.test <<'END'
+#! /bin/sh
+exit 0
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# The testsuite driver does not exist.
+$MAKE check && Exit 1
+test ! -f test-suite.log
+
+# The testsuite driver exists and create the test log files, but fails.
+
+cat > oops <<'END'
+#!/bin/sh
+: > foo.log
+echo 'Oops, I fail!' >&2
+exit 1
+END
+chmod a+x oops
+
+$MAKE check && Exit 1
+test ! -f test-suite.log
+
+:
diff --git a/t/test-driver-is-distributed.sh b/t/test-driver-is-distributed.sh
new file mode 100755 (executable)
index 0000000..9b2f08b
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check regression of parallel-tests:
+#  - 'test-driver' script not correctly distributed when TESTS is
+#    defined in a subdir Makefile
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+ocwd=`pwd` || fatal_ "getting current working directory"
+
+do_check ()
+{
+  whereopts=$1 auxdir=$2
+  case $#,$whereopts in
+    2,ac) ac_opts=parallel-tests am_code= ;;
+    2,am) am_opts=parallel-tests ac_code= ;;
+       *) fatal_ "do_check: bad usage";;
+  esac
+  mkdir $whereopts
+  cd $whereopts
+  mkdir tests
+  unindent > configure.ac << END
+    AC_INIT([$me], [1.0])
+    AC_CONFIG_AUX_DIR([$auxdir])
+    AM_INIT_AUTOMAKE([$ac_opts])
+    AC_CONFIG_FILES([Makefile tests/Makefile])
+    AC_OUTPUT
+END
+  if test $auxdir = .; then
+    test_driver=test-driver
+  else
+    mkdir $auxdir
+    test_driver=$auxdir/test-driver
+  fi
+  # No 'AUTOMAKE_OPTIONS' in here -- purposely.
+  unindent > Makefile.am << END
+    SUBDIRS = tests
+    check-local: test-top
+    test-top: distdir
+       ls -l \$(distdir) \$(distdir)/* ;: For debugging.
+       test -f \$(distdir)/$test_driver
+    .PHONY: test-top
+END
+  unindent > tests/Makefile.am << END
+    AUTOMAKE_OPTIONS = $am_opts
+    check-local: test-sub
+    test-sub:
+       echo ' ' \$(DIST_COMMON) ' ' | grep '[ /]$test_driver '
+    TESTS = foo.test
+    EXTRA_DIST = \$(TESTS)
+END
+  unindent > tests/foo.test << 'END'
+    #!/bin/sh
+    exit 0
+END
+  chmod a+x tests/foo.test
+  $ACLOCAL
+  $AUTOCONF
+  $AUTOMAKE -a
+  ./configure
+  $MAKE test-top
+  cd tests
+  $MAKE test-sub
+  cd ..
+  $MAKE distcheck
+  # Try code path without automatic installation of required files.
+  mv -f Makefile.in Makefile.sav
+  mv -f tests/Makefile.in tests/Makefile.sav
+  $AUTOMAKE
+  diff Makefile.in Makefile.sav
+  diff tests/Makefile.in tests/Makefile.sav
+  :
+}
+
+do_check ac .
+do_check am build-aux
+
+:
diff --git a/t/test-driver-strip-vpath.sh b/t/test-driver-strip-vpath.sh
new file mode 100755 (executable)
index 0000000..0f51c3e
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers: check that the test name passed to the test
+# driver has any VPATH prefix stripped.
+
+. ./defs || Exit 1
+
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+
+mkdir src build
+mv install-sh missing configure.ac src
+rm -f depcomp
+
+cd src
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# The directories of the 'bar.test' and 'baz.test' tests are deliberately
+# called as the source directory, to verify that the VPATH-stripping code
+# doesn't get too easily confused.
+# The $(empty) are for eliciting VPATH rewrites on make implementations
+# that support it (e.g., Solaris make), to improve coverage.
+empty =
+TESTS = $(empty) foo.test src/bar.test ./src/baz.test $(empty)
+$(TESTS):
+TEST_LOG_DRIVER = $(srcdir)/checkstrip-driver
+EXTRA_DIST = checkstrip-driver
+END
+
+cat > checkstrip-driver <<'END'
+#! /bin/sh
+set -e
+while test $# -gt 0; do
+  case $1 in
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    --test-name) test_name=$2; shift;;
+    --expect-failure|--color-tests|--enable-hard-errors) shift;;
+    --) shift; break;;
+     *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+echo "test name: $test_name" # For debugging.
+case $test_name in
+  foo.test|./foo.test|src/ba[rz].test|./src/ba[rz].test);;
+  *) exit 1;;
+esac
+echo dummy > "$log_file"
+echo dummy > "$trs_file"
+END
+chmod a+x checkstrip-driver
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+cd ..
+
+mkdir build1
+cd build1
+../src/configure
+# "$MAKE -n" is for debugging, should highlight any VPATH rewrite.
+$MAKE -n check || :
+$MAKE check
+cd ..
+
+mkdir build2
+cd build2
+"$ocwd"/src/configure
+# "$MAKE -n" is for debugging, should highlight any VPATH rewrite.
+$MAKE -n check || :
+$MAKE check
+cd ..
+
+cd src
+./configure
+$MAKE distcheck
+
+:
diff --git a/t/test-driver-trs-suffix-registered.sh b/t/test-driver-trs-suffix-registered.sh
new file mode 100755 (executable)
index 0000000..801300b
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests support: the following are registered with '.SUFFIXES':
+#  - .log
+#  - .trs (used by files that store test results and metadata)
+#  - .test if $(TEST_EXTENSIONS) is not defined
+#  - stuff in $(TEST_EXTENSIONS) otherwise
+
+. ./defs || Exit 1
+
+: > Makefile.am
+
+cat > 1.am << 'END'
+TESTS =
+END
+
+cat > 2.am << 'END'
+TEST_EXTENSIONS = .SH .abcdef
+TESTS =
+END
+
+: > test-driver
+
+$ACLOCAL
+
+$AUTOMAKE 1
+$AUTOMAKE 2
+
+sed -e 's/$/ /' 1.in > mk.1
+sed -e 's/$/ /' 2.in > mk.2
+
+grep '^\.SUFFIXES:' mk.1
+grep '^\.SUFFIXES:' mk.2
+
+for suf in test log trs; do
+  grep "^\\.SUFFIXES:.* \\.$suf " mk.1
+done
+
+for suf in SH abcdef log trs; do
+  grep "^\\.SUFFIXES:.* \\.$suf " mk.2
+done
+
+:
diff --git a/t/test-extensions-cond.sh b/t/test-extensions-cond.sh
new file mode 100755 (executable)
index 0000000..e081d79
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Expose bug in conditional definition of TEST_EXTENSIONS.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_CONDITIONAL([COND], [:])
+AM_CONDITIONAL([COND2], [:])
+END
+
+$ACLOCAL
+
+cat > 1.am << 'END'
+TESTS =
+if COND
+## lineno 4
+TEST_EXTENSIONS = .foo
+endif
+END
+
+cat > 2.am << 'END'
+TESTS =
+## lineno 3
+TEST_EXTENSIONS = .foo
+if COND
+# Do nothing.
+else
+TEST_EXTENSIONS += .bar
+endif
+END
+
+cat > 3.am << 'END'
+TESTS =
+if COND
+if !COND2
+TESTS = x
+else
+## lineno 7
+TEST_EXTENSIONS = .foo
+endif
+endif
+END
+
+: > test-driver
+
+for i in 1 2 3; do
+  AUTOMAKE_fails $i
+  lineno=`sed -n 's/^## lineno //p' $i.am` \
+    && test 0 -lt "$lineno" \
+    || Exit 99
+  grep "^$i\\.am:$lineno:.*TEST_EXTENSIONS.*conditional content" stderr
+done
+
+:
diff --git a/t/test-extensions.sh b/t/test-extensions.sh
new file mode 100755 (executable)
index 0000000..fa23481
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that Automake diagnose invalid entries in TEST_EXTENSIONS,
+# and do not diagnose valid (albeit more unusual) ones.
+# See automake bug#9400.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+
+valid_extensions='sh T t1 _foo BAR x_Y_z _'
+
+echo TESTS = > Makefile.am
+echo " $valid_extensions" \
+  | sed -e 's/ / ./g' -e 's/^/TEST_EXTENSIONS =/' >> Makefile.am
+cat Makefile.am # For debugging.
+
+$AUTOMAKE -a
+
+grep -i 'log' Makefile.in # For debugging.
+
+for lc in $valid_extensions; do
+  uc=`echo $lc | tr '[a-z]' '[A-Z]'`
+  $FGREP "\$(${uc}_LOG_COMPILER)" Makefile.in
+  grep "^${uc}_LOG_COMPILE =" Makefile.in
+  grep "^\.${lc}\.log:" Makefile.in
+done
+
+# The produced Makefile is not broken.
+./configure
+$MAKE all check
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.sh
+TEST_EXTENSIONS  = .test mu .x-y a-b .t.1 .sh .6c .0 .11 .= @suf@ .@ext@
+TEST_EXTENSIONS += .= .t33 .a@b _&_
+END
+
+AUTOMAKE_fails
+for suf in mu .x-y a-b .t.1 .6c .0 .11  @suf@ .@ext@ '.=' '_&_'; do
+  suf2=`printf '%s\n' "$suf" | sed -e 's/\./\\./'`
+  $EGREP "^Makefile\.am:2:.*invalid test extension.* $suf2( |$)" stderr
+done
+
+# Verify that we accept valid suffixes, even if intermixed with
+# invalid ones.
+$EGREP '\.(sh|test|t33)' stderr && Exit 1
+
+# Verify that we don't try to handle invalid suffixes.
+$EGREP '(LOG_COMPILER|non-POSIX var|bad character)' stderr && Exit 1
+
+:
diff --git a/t/test-harness-vpath-rewrite.sh b/t/test-harness-vpath-rewrite.sh
new file mode 100755 (executable)
index 0000000..0058b6d
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that our concurrent test harness is not subject to spurious VPATH
+# rewrites.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+LOG_COMPILER = true
+TESTS = x0 foo bar baz x1
+EXTRA_DIST = $(TESTS)
+END
+
+: > x0
+: > foo
+: > bar
+: > baz
+: > x1
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir build
+cd build
+../configure
+$MAKE check
+test -f test-suite.log
+test -f foo.log
+test -f foo.trs
+test -f bar.log
+test -f bar.trs
+test -f baz.log
+test -f baz.trs
+# We don't want VPATH rewrites, really.
+$MAKE check -n | $EGREP '\.\./(foo|bar|baz)( |$)' && Exit 1
+$MAKE distcheck
+
+:
diff --git a/t/test-log.sh b/t/test-log.sh
new file mode 100755 (executable)
index 0000000..0e6065d
--- /dev/null
@@ -0,0 +1,177 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+#  - log file creation
+#  - log file removal
+#  - stdout and stderr of a test script go in its log file
+#  - TEST_SUITE_LOG redefinition, at either automake or make time
+#  - VERBOSE environment variable support
+# Keep in sync with 'tap-log.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = pass.test skip.test xfail.test fail.test xpass.test error.test
+XFAIL_TESTS = xpass.test xfail.test
+TEST_SUITE_LOG = global.log
+END
+
+# Custom markers, for use in grepping checks.
+cmarker=::: # comment marker
+pmarker=%%% # plain maker
+
+cat > pass.test <<END
+#! /bin/sh
+echo   "$pmarker pass $pmarker" >&2
+echo "# $cmarker pass $cmarker" >&2
+exit 0
+END
+
+cat > skip.test <<END
+#! /bin/sh
+echo   "$pmarker skip $pmarker"
+echo "# $cmarker skip $cmarker"
+exit 77
+END
+
+cat > xfail.test <<END
+#! /bin/sh
+echo   "$pmarker xfail $pmarker" >&2
+echo "# $cmarker xfail $cmarker" >&2
+exit 1
+END
+
+cat > fail.test <<END
+#! /bin/sh
+echo   "$pmarker fail $pmarker"
+echo "# $cmarker fail $cmarker"
+exit 1
+END
+
+cat > xpass.test <<END
+#! /bin/sh
+echo   "$pmarker xpass $pmarker" >&2
+echo "# $cmarker xpass $cmarker" >&2
+exit 0
+END
+
+cat > error.test <<END
+#! /bin/sh
+echo   "$pmarker error $pmarker"
+echo "# $cmarker error $cmarker"
+exit 99
+END
+
+chmod a+x *.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+TEST_SUITE_LOG=my.log $MAKE -e check && Exit 1
+ls -l # For debugging.
+test ! -f test-suite.log
+test ! -f global.log
+test -f my.log
+st=0
+for result in pass fail xfail xpass skip error; do
+  cat $result.log # For debugging.
+  $FGREP "$pmarker $result $pmarker" $result.log || st=1
+  $FGREP "$cmarker $result $cmarker" $result.log || st=1
+done
+test $st -eq 0 || Exit 1
+cat my.log # For debugging.
+for result in xfail fail xpass skip error; do
+  cat $result.log # For debugging.
+  $FGREP "$pmarker $result $pmarker" my.log || st=1
+  $FGREP "$cmarker $result $cmarker" my.log || st=1
+done
+test `$FGREP -c "$pmarker" my.log` -eq 5
+test `$FGREP -c "$cmarker" my.log` -eq 5
+
+have_rst_section ()
+{
+  eqeq=`echo "$1" | sed 's/./=/g'`
+  # Assume $1 contains no RE metacharacters.
+  sed -n "/^$1$/,/^$eqeq$/p" $2 > got
+  (echo "$1" && echo "$eqeq") > exp
+  cat exp
+  cat got
+  diff exp got
+}
+
+# Passed test scripts shouldn't be mentioned in the global log.
+$EGREP ':.*[^x]pass' my.log && Exit 1
+# But failing (expectedly or not) and skipped ones should.
+have_rst_section 'SKIP: skip'   my.log
+have_rst_section 'FAIL: fail'   my.log
+have_rst_section 'XFAIL: xfail' my.log
+have_rst_section 'XPASS: xpass' my.log
+have_rst_section 'ERROR: error' my.log
+
+touch error2.log test-suite.log global.log
+TEST_SUITE_LOG=my.log $MAKE -e mostlyclean
+ls -l # For debugging.
+test ! -f my.log
+test ! -f pass.log
+test ! -f fail.log
+test ! -f xfail.log
+test ! -f xpass.log
+test ! -f skip.log
+test ! -f error.log
+# "make mostlyclean" shouldn't remove unrelated log files.
+test -f error2.log
+test -f test-suite.log
+test -f global.log
+
+rm -f *.log
+
+VERBOSE=yes $MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+cat global.log
+test ! -f my.log
+test ! -f test-suite.log
+# Check that VERBOSE causes the global testsuite log to be
+# emitted on stdout.
+out=`cat stdout`
+log=`cat global.log`
+case $out in *"$log"*) ;; *) Exit 1;; esac
+
+touch error2.log test-suite.log my.log
+$MAKE clean
+ls -l # For debugging.
+test ! -f global.log
+test ! -f pass.log
+test ! -f fail.log
+test ! -f xfail.log
+test ! -f xpass.log
+test ! -f skip.log
+test ! -f error.log
+# "make clean" shouldn't remove unrelated log files.
+test -f error2.log
+test -f test-suite.log
+test -f my.log
+
+rm -f *.log
+
+:
diff --git a/t/test-logs-repeated.sh b/t/test-logs-repeated.sh
new file mode 100755 (executable)
index 0000000..30aefca
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+#  - $(TESTS_LOGS) can end up holding duplicated entries
+# Such behaviour can be useful for projects that want to verify that
+# different test scripts don't end up sharing the same log file.
+# (Automake itself is such a project, BTW ;-)
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_EXTENSIONS = .sh .test .bar
+TESTS = foo.sh mu.test foo.test foo.bar
+.PHONY: verify
+verify:
+       is $(TEST_LOGS) == foo.log mu.log foo.log foo.log
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE verify
+
+:
diff --git a/t/test-metadata-global-log.sh b/t/test-metadata-global-log.sh
new file mode 100755 (executable)
index 0000000..af435ae
--- /dev/null
@@ -0,0 +1,146 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Custom test drivers and parallel-tests harness: check the documented
+# semantics for deciding when the content of a test log file should be
+# copied in the global test-suite.log file.  Currently, this is done
+# with the use of the reStructuredText field ':copy-in-global-log:' in
+# the associated '.trs' files.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = ./passthrough-driver
+TEST_LOG_COMPILER = $(SHELL) -e
+END
+
+cat > passthrough-driver <<'END'
+#!/bin/sh
+set -e; set -u;
+while test $# -gt 0; do
+  case $1 in
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    --test-name) test_name=$2; shift;;
+    --expect-failure|--color-tests|--enable-hard-errors) shift;;
+    --) shift; break;;
+     *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+echo "$test_name: RUN"
+"$@" >$log_file 2>&1 5>$trs_file
+END
+chmod a+x passthrough-driver
+
+# The ':test-result:' and ':recheck:' fields and the first line of the
+# log file should be be irrelevant for the decision of whether a test
+# output is to be copied in the 'test-suite.log'.
+
+cat > no-1.test <<END
+echo :test-result: SKIP >&5
+echo :copy-in-global-log: no >&5
+echo :test-result: FAIL >&5
+echo :test-result: XPASS >&5
+echo not seen 1
+END
+
+# In the last line, with leading and trailing whitespace in the value.
+cat > no-2.test <<END
+echo ":test-result: FAIL" >&5
+echo "not seen 2"
+echo ":recheck: yes" >&5
+echo ":copy-in-global-log:$tab $tab no   $tab" >&5
+END
+
+for RES in XPASS FAIL XFAIL SKIP ERROR UNKNOWN; do
+  unindent > $RES.test <<END
+    echo :test-result: $RES >&5
+    echo :copy-in-global-log: no >&5
+    echo not seen $RES
+END
+done
+
+# In the first line, with no whitespace.
+cat > no-3.test <<END
+echo :copy-in-global-log:no >&5
+echo ":test-result: FAIL" >&5
+echo "not seen 3"
+END
+
+# Leading whitespace before the field.
+cat > no-4.test <<END
+echo ":test-result: FAIL" >&5
+echo "  $tab $tab$tab   :copy-in-global-log: no" >&5
+echo "not seen 4"
+END
+
+cat > yes-1.test <<END
+echo :test-result: PASS >&5
+echo :copy-in-global-log: yes >&5
+echo seen yes 1
+END
+
+# A lacking ':copy-in-global-log:' implies that the content of
+# the log file should be copied.
+cat > yes-2.test <<END
+echo :test-result: PASS >&5
+echo seen yes 2
+END
+
+# Three corner cases.
+
+cat > corn-1.test <<END
+echo seen corn 1
+echo ':copy-in-global-log:' >&5
+END
+
+cat > corn-2.test <<END
+echo seen corn 2
+echo '$tab $tab$tab' >&5
+END
+
+cat > corn-3.test <<'END'
+echo seen corn 31
+echo ':copy-in-global-log:#@%!' >&5
+echo seen corn 32
+END
+
+echo TESTS = *.test >> Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# We don't care about the exit status of "make check" here, that
+# should be checked in other tests.
+$MAKE check || :
+cat test-suite.log
+grep '^seen yes 1$' test-suite.log
+grep '^seen yes 2$' test-suite.log
+grep '^seen corn 1$' test-suite.log
+grep '^seen corn 2$' test-suite.log
+grep '^seen corn 31$' test-suite.log
+grep '^seen corn 32$' test-suite.log
+$FGREP 'not seen' test-suite.log && Exit 1
+
+:
diff --git a/t/test-metadata-global-result.sh b/t/test-metadata-global-result.sh
new file mode 100755 (executable)
index 0000000..4aa633f
--- /dev/null
@@ -0,0 +1,195 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Parallel testsuite harness: check APIs for the registering the
+# "global test result" in '*.trs' files, as documented in the automake
+# manual.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_EXTENSIONS = .test .x
+TEST_LOG_DRIVER = ./dummy-driver
+X_LOG_DRIVER = ./dummy-driver
+TESTS = foo.test zar-doz.test
+END
+
+cat > dummy-driver <<'END'
+#! /bin/sh
+set -e; set -u
+while test $# -gt 0; do
+  case $1 in
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    --test-name) test_name=$2; shift;;
+    --expect-failure|--color-tests|--enable-hard-errors) shift;;
+    --) shift; break;;
+     *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+echo logloglog > $log_file
+cp $1 $trs_file
+END
+chmod a+x dummy-driver
+
+# Do this in a subroutine to avoid quoting problem in the backticked
+# command substitution below.
+get_escaped_line()
+{
+   sed -e 's,[$^/\\\.],\\&,g' -e 1q "$@"
+}
+
+have_result ()
+{
+   cat > exp; echo >> exp; echo logloglog >> exp
+   eline=`get_escaped_line exp`
+   sed -n -e "/^$eline$/,/^logloglog$/p" test-suite.log > got
+   cat exp; cat got
+   diff exp got
+}
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+: Basic checks.
+
+echo :global-test-result: PASS > foo.test
+echo :global-test-result: ERROR > zar-doz.x
+
+$MAKE check
+cat test-suite.log
+
+have_result <<END
+PASS: foo
+=========
+END
+
+have_result <<END
+ERROR: zar-doz
+==============
+END
+
+: Try usage documented in the manual.
+
+echo :global-test-result: PASS/SKIP > foo.test
+echo :global-test-result: ALMOST PASSED > zar-doz.x
+
+$MAKE check
+cat test-suite.log
+
+have_result <<END
+PASS/SKIP: foo
+==============
+END
+
+have_result <<END
+ALMOST PASSED: zar-doz
+======================
+END
+
+: Fields ':test-result:' does not interfere with the global test result.
+
+cat > foo.test << 'END'
+:test-result: FAIL
+:global-test-result: PASS
+:test-result: ERROR
+END
+
+cat > zar-doz.x << 'END'
+:global-test-result: FAIL
+:test-result: SKIP
+:test-result: XFAIL
+END
+
+$MAKE check && Exit 1
+cat test-suite.log
+
+have_result <<END
+PASS: foo
+=========
+END
+
+have_result <<END
+FAIL: zar-doz
+=============
+END
+
+: What happens when ':global-test-result:' is absent.
+
+cat > foo.test << 'END'
+:test-result: PASS
+:test-result: ERROR
+END
+: > zar-doz.x
+
+$MAKE check && Exit 1
+cat test-suite.log
+
+have_result <<END
+RUN: foo
+========
+END
+
+have_result <<END
+RUN: zar-doz
+============
+END
+
+# Leading and trailing whitespace gets eaten/normalized.
+
+echo ":global-test-result:SKIP${tab}   ${tab}${tab}" > foo.test
+echo ":global-test-result:${tab}   ${tab}XFAIL  ${tab}   " > zar-doz.x
+
+$MAKE check
+cat test-suite.log
+
+have_result <<END
+SKIP: foo
+=========
+END
+
+have_result <<END
+XFAIL: zar-doz
+==============
+END
+
+# Whitespaces before and after ':global-test-result:' are handled OK.
+
+echo "   $tab:global-test-result:PASS" > foo.test
+echo "${tab}${tab}:global-test-result:${tab}   ${tab}SKIP" > zar-doz.x
+
+$MAKE check
+cat test-suite.log
+
+have_result <<END
+PASS: foo
+=========
+END
+
+have_result <<END
+SKIP: zar-doz
+=============
+END
+
+:
diff --git a/t/test-metadata-recheck.sh b/t/test-metadata-recheck.sh
new file mode 100755 (executable)
index 0000000..8874745
--- /dev/null
@@ -0,0 +1,163 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the "make recheck" semantics for custom test drivers, as documented
+# in the Automake manual.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+LOG_DRIVER = ./dummy-driver
+TEST_EXTENSIONS =
+TESTS =
+END
+
+#
+# Tests to be re-run by "make recheck"
+#
+
+: > y-1
+echo "foo bar" > y-2
+echo ":recheck:" > y-3
+echo ":recheck:yes" > y-4
+echo ":recheck: who cares" > y-5
+echo ":recheck: $tab   y" > y-6
+echo ":recheck: yeah!$tab$tab " > y-7
+cat > y-10 <<END
+:foo:
+:recheck: ???
+END
+cat > y-11 <<END
+:recheck: YES
+:foo:
+END
+cat > y-12 <<END
+foo
+:recheck:yes
+
+bar
+zardoz
+END
+
+echo "  $tab $tab$tab    :recheck: yes" > y-8
+
+# The :test-result: fields and the fist line of the log should be
+# irrelevant for the decision of whether "make recheck" should or
+# should not re-run a test.
+
+echo ":test-result: PASS" > y-100
+
+echo "PASS: y-101"
+
+cat > y-102 <<END
+PASS: y-102
+===========
+
+:test-result: PASS
+END
+
+#
+# Tests *not* to be re-run by "make recheck"
+#
+
+echo ":recheck:no" > n-1
+echo ":recheck: no " > n-2
+echo ":recheck: $tab   no" > n-3
+echo ":recheck: no $tab$tab " > n-4
+cat > n-5 <<END
+:foo:
+:recheck:no
+END
+cat > n-6 <<END
+:recheck: no
+:foo:
+END
+cat > n-7 <<END
+foo
+:recheck: no$tab$tab
+
+bar
+zardoz
+END
+
+echo "  $tab $tab$tab    :recheck: no" > n-8
+
+# The :test-result: fields should be irrelevant for the decision of
+# whether "make recheck" should or should not re-run a test.
+cat > n-100 <<END
+:test-result: FAIL
+:test-result: XPASS
+:test-result: ERROR
+:test-result: UNKNOWN
+:recheck: no
+END
+
+rechecked=`echo y-[0-9]*`
+
+for t in [yn]-[0-9]*; do echo $t; done \
+  | sed 's/.*/TESTS += &/' >> Makefile.am
+
+cat Makefile.am # For debugging.
+
+cat > dummy-driver <<'END'
+#!/bin/sh
+set -e; set -u
+while test $# -gt 0; do
+  case $1 in
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    --test-name) test_name=$2; shift;;
+    --expect-failure|--color-tests|--enable-hard-errors) shift;;
+    --) shift; break;;
+     *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+: > $test_name.run
+: > $log_file
+cp $1 $trs_file
+END
+chmod a+x dummy-driver
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# The ':test-result:' fields should be ignored by "make recheck",
+# but should cause the testsuite report to detect errors.
+$MAKE check && Exit 1
+ls -l
+for t in $tests; do test -f $t.run; done
+rm -f *.run
+
+# But now the tests that actually get re-run have only ':test-result:'
+# fields indicating success, so "make recheck" must pass.  Still, the
+# next "make recheck" call should still re-run the same set of tests.
+for iteration in 1 2; do
+  $MAKE recheck
+  ls -l
+  for t in $rechecked; do test -f $t.run; done
+  find . -name 'n-*.run' | grep . && Exit 1
+  : For shells with busted 'set -e'.
+done
+
+:
diff --git a/t/test-metadata-results.sh b/t/test-metadata-results.sh
new file mode 100755 (executable)
index 0000000..03f93d7
--- /dev/null
@@ -0,0 +1,175 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Parallel testsuite harness: check APIs for the registering of test
+# results in '*.trs' files, as documented in the automake manual.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = ./dummy-driver
+TESTS = foo.test bar.test
+END
+
+cat > dummy-driver <<'END'
+#! /bin/sh
+set -e; set -u
+while test $# -gt 0; do
+  case $1 in
+    --log-file) log_file=$2; shift;;
+    --trs-file) trs_file=$2; shift;;
+    --test-name) test_name=$2; shift;;
+    --expect-failure|--color-tests|--enable-hard-errors) shift;;
+    --) shift; break;;
+     *) echo "$0: invalid option/argument: '$1'" >&2; exit 2;;
+  esac
+  shift
+done
+: > $log_file
+cp $1 $trs_file
+END
+chmod a+x dummy-driver
+
+mk_check ()
+{
+  st=0
+  $MAKE check >stdout || st=$?
+  cat stdout
+  # Our dummy driver make no testsuite progress report.
+  grep ': .*\.test' stdout && Exit 1
+  # Nor it writes to the log files.
+  test -s foo.log && Exit 1
+  test -s bar.log && Exit 1
+  return $st
+}
+
+# This must be different from the one defined in 'test/defs', as that
+# assumes that the driver does proper testsuite progress reporting.
+count_test_results ()
+{
+  total=ERR pass=ERR fail=ERR xpass=ERR xfail=ERR skip=ERR error=ERR
+  eval "$@"
+  st=0
+  grep "^# TOTAL:  *$total$" stdout || rc=1
+  grep "^# PASS:  *$pass$"   stdout || rc=1
+  grep "^# XFAIL:  *$xfail$" stdout || rc=1
+  grep "^# SKIP:  *$skip$"   stdout || rc=1
+  grep "^# FAIL:  *$fail$"   stdout || rc=1
+  grep "^# XPASS:  *$xpass$" stdout || rc=1
+  grep "^# ERROR:  *$error$" stdout || rc=1
+  test $st -eq 0 || Exit 1
+}
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+
+# Basic checks.  Also that that ':global-test-result:' fields and
+# "old-style" directives with format "RESULT: test-name" are now ignored.
+
+: > foo.test
+echo blah blah blah > bar.test
+mk_check
+count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+cat > foo.test <<END
+:test-global-result: PASS
+:test-result: FAIL
+END
+cat > bar.test <<END
+:test-result: SKIP
+:test-global-result: ERROR
+END
+mk_check && Exit 1
+count_test_results total=2 pass=0 fail=1 xpass=0 xfail=0 skip=1 error=0
+
+cat > foo.test <<END
+FAIL: foo.test
+:test-result: PASS
+:test-global-result: XPASS
+END
+echo ERROR: bar.test > bar.test
+mk_check
+count_test_results total=1 pass=1 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+cat > foo.test <<END
+:test-global-result: SKIP
+:test-result: FAIL
+END
+cat > bar.test <<END
+:test-global-result: PASS
+END
+mk_check && Exit 1
+count_test_results total=1 pass=0 fail=1 xpass=0 xfail=0 skip=0 error=0
+
+cat > foo.test <<END
+:test-result: XFAIL
+:test-result: PASS
+:test-result: SKIP
+END
+cat > bar.test <<END
+:test-result: SKIP
+:test-result: PASS
+:test-result: SKIP
+:test-result: PASS
+:test-result: PASS
+END
+mk_check
+count_test_results total=8 pass=4 fail=0 xpass=0 xfail=1 skip=3 error=0
+
+# Check that all results expected to be supported are *really* supported.
+
+cat > foo.test <<END
+:test-result: PASS
+:test-result: SKIP
+:test-result: XFAIL
+:test-result: FAIL
+:test-result: XPASS
+:test-result: ERROR
+END
+: > bar.test
+mk_check && Exit 1
+count_test_results total=6 pass=1 fail=1 xpass=1 xfail=1 skip=1 error=1
+
+cp foo.test bar.test
+mk_check && Exit 1
+count_test_results total=12 pass=2 fail=2 xpass=2 xfail=2 skip=2 error=2
+
+# Check that we are liberal w.r.t. whitespace use.
+
+: > foo.test
+: > bar.test
+for RESULT in PASS FAIL XPASS XFAIL SKIP ERROR; do
+  sed -e 's/^ *//' -e 's/|//g' >> foo.test <<END
+    |:test-result:$RESULT|
+    |:test-result: $tab  $RESULT|
+    |:test-result:$RESULT  $tab|
+    |:test-result:$tab$tab  $RESULT$tab  $tab |
+END
+  echo "  $tab $tab$tab   :test-result: $RESULT" >> bar.test
+done
+cat foo.test # For debugging.
+cat bar.test # Likewise.
+mk_check && Exit 1
+count_test_results total=30 pass=5 fail=5 xpass=5 xfail=5 skip=5 error=5
+
+:
diff --git a/t/test-missing.sh b/t/test-missing.sh
new file mode 100755 (executable)
index 0000000..2491da5
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests:
+#  - non-existent scripts listed in TESTS get diagnosed
+# See also related test 'test-missing2.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = ok.test zardoz.test
+TEST_LOG_COMPILER = true
+END
+
+: > ok.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE check >output 2>&1 && { cat output; Exit 1; }
+cat output
+test -f ok.log
+grep '^PASS: ok\.test' output
+$FGREP 'zardoz.log' output
+test ! -f test-suite.log
+
+TESTS='zardoz2.test' $MAKE -e check >output 2>&1 \
+  && { cat output; Exit 1; }
+cat output
+$FGREP 'zardoz2.log' output
+test ! -f test-suite.log
+
+TEST_LOGS='zardoz3.log' $MAKE -e check >output 2>&1 \
+  && { cat output; Exit 1; }
+cat output
+$FGREP 'zardoz3.log' output
+test ! -f test-suite.log
+
+# The errors should persist even after 'test-suite.log'
+# has been created.
+
+: > zardoz.test
+$MAKE check
+rm -f zardoz.test
+
+$MAKE check >output 2>&1 && { cat output; Exit 1; }
+cat output
+$FGREP 'zardoz.log' output
+test ! -f test-suite.log
+
+:
diff --git a/t/test-missing2.sh b/t/test-missing2.sh
new file mode 100755 (executable)
index 0000000..6dd4b9d
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests:
+#  - non-existent scripts listed in TESTS get diagnosed, even when
+#    all the $(TEST_LOGS) have a dummy dependency.
+# See also related test 'test-missing.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foobar1.test foobar2.test
+$(TEST_LOGS):
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE foobar1.log foobar2.log || Exit 99
+test ! -f foobar1.log || Exit 99
+test ! -f foobar1.trs || Exit 99
+test ! -f foobar2.log || Exit 99
+test ! -f foobar2.trs || Exit 99
+
+$MAKE check >output 2>&1 && { cat output; Exit 1; }
+cat output
+grep 'test-suite\.log.*foobar1\.log' output
+grep 'test-suite\.log.*foobar1\.trs' output
+grep 'test-suite\.log.*foobar2\.log' output
+grep 'test-suite\.log.*foobar2\.trs' output
+test ! -f test-suite.log
+
+:
diff --git a/t/test-trs-basic.sh b/t/test-trs-basic.sh
new file mode 100755 (executable)
index 0000000..42456b4
--- /dev/null
@@ -0,0 +1,157 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel harness features:
+#  - creation and removal of '.trs' auxiliary files
+#  - check some internals regarding the use of '.trs' files.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_EXTENSIONS = .sh .test
+TESTS = foo.test bar.sh sub/zardoz.test
+TEST_LOG_COMPILER = $(SHELL)
+SH_LOG_COMPILER = $(SHELL)
+
+## Used to check some internal details.  And yes, the quotes around
+## '$bases' are deliberate: they check for whitespace normalization.
+tb:
+       $(am__set_TESTS_bases); echo "$$bases" > $@
+END
+
+cat > foo.test << 'END'
+#! /bin/sh
+exit $FOO_STATUS
+END
+: > bar.sh
+mkdir sub
+: > sub/zardoz.test
+
+FOO_STATUS=0; export FOO_STATUS
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+
+#
+# Check some internal details first.
+#
+
+for vpath in : false; do
+
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+
+  $MAKE tb
+  test x"`cat tb`" = x"foo bar sub/zardoz"
+  rm -f tb
+  # Please don't change the order of the stuff in TESTS, below.
+  TESTS='foo.test foo2.sh foo-log foolog.test a.log.b.sh 0.exe' $MAKE -e tb
+  test x"`cat tb`" = x"foo foo2 foo-log foolog a.log.b 0.exe"
+  rm -f tb
+
+  cd $srcdir
+
+done
+
+#
+# The 'test-suite.stamp' file and the '.trs' files get created by
+# "make check" and removed by "make clean" and "make mostlyclean".
+#
+
+: > unrelated.trs
+: > sub/foo.trs
+
+$MAKE check
+test -f foo.trs
+test -f bar.trs
+test -f sub/zardoz.trs
+$MAKE clean
+test ! -f foo.trs
+test ! -f bar.trs
+test ! -f sub/zardoz.trs
+# Unrelated '.trs' files shouldn't be removed.
+test -f unrelated.trs
+test -f sub/foo.trs
+
+# The files should be properly created in case of testsuite failure too.
+FOO_STATUS=1 $MAKE check && Exit 1
+test -f foo.trs
+test -f bar.trs
+test -f sub/zardoz.trs
+$MAKE mostlyclean
+test ! -f foo.trs
+test ! -f bar.trs
+test ! -f sub/zardoz.trs
+# Unrelated '.trs' files shouldn't be removed.
+test -f unrelated.trs
+test -f sub/foo.trs
+
+#
+# Try with a subset of TESTS.
+#
+
+TESTS=foo.test $MAKE -e check
+test -f foo.trs
+test ! -f bar.trs
+test ! -f sub/zardoz.trs
+$MAKE clean
+test ! -f foo.trs
+TESTS='foo.test bar.sh' $MAKE -e check
+test -f foo.trs
+test -f bar.trs
+test ! -f sub/zardoz.trs
+# "make clean" shouldn't remove '.trs' files for tests not in $(TESTS).
+TESTS=bar.sh $MAKE -e clean
+test -f foo.trs
+test ! -f bar.trs
+
+$MAKE clean
+
+#
+# Try with a subset of TEST_LOGS.
+#
+
+TEST_LOGS=sub/zardoz.log $MAKE -e check
+test ! -f foo.trs
+test ! -f bar.trs
+test -f sub/zardoz.trs
+$MAKE clean
+test ! -f sub/zardoz.trs
+TEST_LOGS='foo.log bar.log' $MAKE -e check
+test -f foo.trs
+test -f bar.trs
+test ! -f sub/zardoz.trs
+# "make clean" shouldn't remove '.trs' files for tests whose log
+# is not in $(TEST_LOGS).
+TEST_LOGS=foo.log $MAKE -e clean
+test ! -f foo.trs
+test -f bar.trs
+test ! -f sub/zardoz.trs
+
+:
diff --git a/t/test-trs-recover.sh b/t/test-trs-recover.sh
new file mode 100755 (executable)
index 0000000..a132194
--- /dev/null
@@ -0,0 +1,166 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel harness features:
+#  - recovery from deleted '.trs' files, in various scenarios
+# This test is complex and tricky, but that's acceptable since we are
+# testing semantics that are potentially complex and tricky.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.test baz.test
+TEST_LOG_COMPILER = $(SHELL)
+END
+
+# Creative quoting below to please maintainer-check.
+echo exit '$TEST_STATUS' > foo.test
+echo exit '$TEST_STATUS' > bar.test
+: > baz.test
+
+TEST_STATUS=0; export TEST_STATUS
+
+# Slower and possible overkill in some situations, but also clearer
+# and safer.
+update_stamp () { $sleep && touch stamp && $sleep; }
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+: Create the required log files.
+$MAKE check
+
+: Recreate by hand.
+rm -f foo.trs bar.trs baz.trs
+$MAKE foo.trs
+test -f foo.trs
+test ! -f bar.trs
+test ! -f baz.trs
+
+: Recreate by hand, several at the same time.
+rm -f foo.trs bar.trs baz.trs
+$MAKE foo.trs bar.trs
+test -f foo.trs
+test -f bar.trs
+test ! -f baz.trs
+
+: Recreate by hand, with a failing test.
+rm -f foo.trs bar.trs
+TEST_STATUS=1 $MAKE bar.trs baz.trs >stdout || { cat stdout; Exit 1; }
+cat stdout
+test ! -f foo.trs
+test -f bar.trs
+test -f baz.trs
+grep '^FAIL: bar\.test' stdout
+$EGREP '^(baz|foo)\.test' stdout && Exit 1
+
+: Recreate with a sweeping "make check", and ensure that also up-to-date
+: '.trs' files are remade.
+update_stamp
+rm -f foo.trs bar.trs
+$MAKE check
+test -f foo.trs
+test -f bar.trs
+is_newest baz.trs stamp
+
+: Recreate with a sweeping "make check" with failing tests.  Again,
+: ensure that also up-to-date '.trs' files are remade -- this time we
+: grep the "make check" output verify that.
+rm -f foo.trs bar.trs
+TEST_STATUS=1 $MAKE check >stdout && { cat stdout; Exit 1; }
+test -f foo.trs
+test -f bar.trs
+grep '^FAIL: foo\.test' stdout
+grep '^FAIL: bar\.test' stdout
+grep '^PASS: baz\.test' stdout
+
+: Recreate with a "make check" with redefined TESTS.
+rm -f foo.trs bar.trs baz.trs
+TESTS=foo.test $MAKE -e check
+test -f foo.trs
+test ! -f bar.trs
+test ! -f baz.trs
+
+: Recreate with a "make check" with redefined TEST_LOGS.
+rm -f foo.trs bar.trs baz.trs
+TEST_LOGS=bar.log $MAKE -e check
+test ! -f foo.trs
+test -f bar.trs
+test ! -f baz.trs
+
+: Interactions with "make recheck" are OK.
+rm -f foo.trs bar.trs baz.log baz.trs
+$MAKE recheck >stdout || { cat stdout; Exit 1; }
+cat stdout
+test -f foo.trs
+test -f bar.trs
+test ! -f baz.trs
+test ! -f baz.log
+grep '^PASS: foo\.test' stdout
+grep '^PASS: bar\.test' stdout
+grep 'baz\.test' stdout && Exit 1
+count_test_results total=2 pass=2 fail=0 xpass=0 xfail=0 skip=0 error=0
+
+: Setup for the next check.
+$MAKE check
+test -f foo.trs
+test -f bar.trs
+test -f baz.trs
+
+: Recreate by remaking the global test log, and ensure that up-to-date
+: '.trs' files are *not* remade.
+update_stamp
+rm -f foo.trs bar.trs test-suite.log
+$MAKE test-suite.log >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^PASS: foo\.test' stdout
+grep '^PASS: bar\.test' stdout
+grep 'baz\.test' stdout && Exit 1
+stat *.trs *.log stamp || : # For debugging.
+# Check that make has updated what it needed to, but no more.
+test -f foo.trs
+test -f bar.trs
+is_newest stamp baz.trs
+is_newest test-suite.log foo.trs bar.trs
+
+: Setup for the next check.
+$MAKE check
+test -f foo.trs
+test -f bar.trs
+test -f baz.trs
+
+: Interactions with lazy test reruns are OK.
+rm -f foo.trs
+update_stamp
+touch bar.test
+RECHECK_LOGS= $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+# Check that make has updated what it needed to, but no more.
+test -f foo.trs
+is_newest bar.trs bar.test
+is_newest stamp baz.trs
+grep '^PASS: foo\.test' stdout
+grep '^PASS: bar\.test' stdout
+grep 'baz\.test' stdout && Exit 1
+
+:
diff --git a/t/test-trs-recover2.sh b/t/test-trs-recover2.sh
new file mode 100755 (executable)
index 0000000..3cbbbf6
--- /dev/null
@@ -0,0 +1,122 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel harness features:
+#  - recovery from unreadable '.trs' files, in various scenarios
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test bar.test
+TEST_LOG_COMPILER = true
+END
+
+: > foo.test
+: > bar.test
+
+TEST_STATUS=0; export TEST_STATUS
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+: > t
+chmod a-r t
+test ! -r t || Exit 77
+rm -f t
+
+: Create the required log files.
+$MAKE check
+test -f foo.trs
+test -f bar.trs
+
+: Recreate with a sweeping "make check".
+chmod a-r bar.trs
+$MAKE check
+test -f foo.trs
+test -r foo.trs
+test -f bar.trs
+test -r bar.trs
+
+: Again, this time with one .trs file missing and the other
+: one unreadable.
+rm -f foo.trs
+chmod a-r bar.trs
+$MAKE check
+test -f foo.trs
+test -r foo.trs
+test -f bar.trs
+test -r bar.trs
+
+: Again, but using "make recheck" this time.
+rm -f foo.trs
+chmod a-r bar.trs
+$MAKE recheck >stdout || { cat stdout; Exit 1; }
+cat stdout
+test -f foo.trs
+test -r foo.trs
+test -f bar.trs
+test -r bar.trs
+grep '^PASS: foo\.test' stdout
+grep '^PASS: bar\.test' stdout
+
+: Recreate by remaking the global test log.
+chmod a-r foo.trs
+rm -f test-suite.log
+$MAKE test-suite.log >stdout || { cat stdout; Exit 1; }
+cat stdout
+test -f foo.trs
+test -r foo.trs
+grep '^PASS: foo\.test' stdout
+grep 'bar\.test' stdout && Exit 1
+# Also test that have only run before should be counted in the final
+# testsuite summary.
+grep '^# TOTAL:  *2$' stdout
+
+: Setup for the next check.
+: > baz.test
+sed 's/^TESTS =.*/& baz.test/' Makefile > t
+diff t Makefile && Exit 99
+mv -f t Makefile
+$MAKE check
+test -f foo.trs
+test -f bar.trs
+test -f baz.trs
+
+: Interactions with lazy test reruns are OK.
+chmod a-r foo.trs
+$sleep
+touch stamp
+$sleep
+touch bar.test
+RECHECK_LOGS= $MAKE -e check >stdout || { cat stdout; Exit 1; }
+cat stdout
+test -r foo.trs
+is_newest bar.trs bar.test
+grep '^PASS: foo\.test' stdout
+grep '^PASS: bar\.test' stdout
+grep 'baz\.test' stdout && Exit 1
+# Also test that have only run before should be counted in the final
+# testsuite summary.
+grep '^# TOTAL:  *3$' stdout
+
+:
diff --git a/t/tests-environment-and-log-compiler.sh b/t/tests-environment-and-log-compiler.sh
new file mode 100755 (executable)
index 0000000..65855ce
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# parallel-tests: check that we can use variables and functions set
+# by TESTS_ENVIRONMENT and AM_TESTS_ENVIRONMENT in LOG_COMPILER and
+# LOG_FLAGS (for tests both with and without registered extensions).
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+unset v0 v1 v2 v3 v4 || :
+
+cat > Makefile.am << 'END'
+TESTS_ENVIRONMENT = am__f3 () { echo 3; }; v0='$(srcdir)' v1=1; :;
+AM_TESTS_ENVIRONMENT = v2=2; v4=4 && am__f5 () { echo 5; }; :;
+
+LOG_COMPILER = $$v0/log-compiler $$v1
+AM_LOG_FLAGS = $$v2 `am__f3`
+LOG_FLAGS = $$v4 `am__f5`
+
+TEST_LOG_COMPILER = $$v0/test-log-compiler $$v2
+AM_TEST_LOG_FLAGS = `am__f5` $$v1
+TEST_LOG_FLAGS = $$v4 `am__f3`
+
+EXTRA_DIST = log-compiler test-log-compiler
+
+TESTS = a b.test
+$(TESTS):
+END
+
+cat > log-compiler << 'END'
+#! /bin/sh
+echo "$0: $*"
+test x"$1$2$3$4$5" = x"12345"
+END
+
+cat > test-log-compiler << 'END'
+#! /bin/sh
+echo "$0: $*"
+test x"$1$2$3$4$5" = x"25143"
+END
+
+chmod a+x test-log-compiler log-compiler
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE -n check || : # For debugging.
+VERBOSE=yes $MAKE check
+cat a.log
+cat b.log
+
+VERBOSE=yes $MAKE distcheck
+
+:
diff --git a/t/tests-environment-backcompat.sh b/t/tests-environment-backcompat.sh
new file mode 100755 (executable)
index 0000000..93643d1
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# With old serial testsuite driver, TESTS_ENVIRONMENT can be used to
+# define the "test runner", i.e. the program that the test scripts must
+# be run by (with the parallel-tests driver one should use LOG_COMPILER
+# for this).  The behaviour tested here is also documented in the manual.
+
+am_serial_tests=yes
+. ./defs || Exit 1
+
+cat >> configure.ac <<END
+AC_SUBST([PERL], ['$PERL'])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS_ENVIRONMENT = $(PERL) -Mstrict -w
+TESTS = foo.pl bar.pl baz.pl
+XFAIL_TESTS = baz.pl
+EXTRA_DIST = $(TESTS)
+END
+
+echo 'exit (0);' > foo.pl
+echo 'exit (0);' > bar.pl
+
+cat > baz.pl << 'END'
+# With "use strict" enacted, this will cause an error, since the
+# variable '$x' is not declared with 'my' nor specified with an
+# explicit package name.
+$x = 0;
+exit ($x);
+END
+
+chmod a+x *.pl
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE check
+$MAKE distcheck
+
+:
diff --git a/t/tests-environment-fd-redirect.sh b/t/tests-environment-fd-redirect.sh
new file mode 100755 (executable)
index 0000000..6c42fd4
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for a behaviour of 'TESTS_ENVIRONMENT' and 'AM_TESTS_ENVIRONMENT'
+# w.r.t. file descriptor redirections which, although undocumented,
+# is nonetheless required by Gnulib's 'tests/init.sh' and by coreutils'
+# testsuite.
+# The checked behaviour is that we can portably do file descriptor
+# redirections by placing them at the end of a {AM_,}TESTS_ENVIRONMENT
+# definition without a following semicolon.  The need to support this
+# is detailedly motivated by coreutils bug#8846:
+#   <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8846>
+# and the following CC:ed thread on bug-autoconf list:
+#   <http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00002.html>
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+# Use both a shell script and a perl script as tests,
+# for better coverage.
+
+cat >foo.test <<'END'
+#! /bin/sh
+set -e
+echo " " $0: foofoofoo >&8
+echo " " $0: barbarbar >&9
+END
+
+echo "#! $PERL -w" > bar.test
+cat >>bar.test <<'END'
+use warnings FATAL => 'all';
+use strict;
+open(FD8, ">&=8") or die "$!";
+open(FD9, ">&=9") or die "$!";
+print FD8 "  $0: 8888\n";
+print FD9 "  $0: 9999\n";
+END
+
+chmod a+x foo.test bar.test
+
+$ACLOCAL
+$AUTOCONF
+
+# Korn Shells seem more vulnerable to the issue highlighted in coreutils
+# bug#8846 than other shells are.  In particular, the default Korn Shell
+# on Debian GNU/Linux is affected by the issue.  So let's try to run our
+# test with a system Korn Shell too, if that's available.
+bin_ksh=:
+case $SHELL in
+  ksh|*/ksh) ;;
+  *) for d in /bin /usr/bin; do
+       test -f $d/ksh && { bin_ksh=$d/ksh; break; }
+     done;;
+esac
+
+for sh in "$SHELL" "$bin_ksh"; do
+  test "$sh" = : && continue
+  for pfx in AM_ ''; do
+    unindent > Makefile.am <<END
+      TESTS = foo.test bar.test
+      ## No trailing semicolon here, *deliberately*.
+      ${pfx}TESTS_ENVIRONMENT = 8>&1 9>&8
+END
+    $AUTOMAKE -a
+    CONFIG_SHELL="$sh" $sh ./configure CONFIG_SHELL="$sh"
+    VERBOSE=y $MAKE check >stdout || { cat stdout; Exit 1; }
+    cat stdout
+    grep '[ /]foo\.test: foofoofoo$' stdout
+    grep '[ /]foo\.test: barbarbar$' stdout
+    grep '[ /]bar\.test: 8888$' stdout
+    grep '[ /]bar\.test: 9999$' stdout
+    $EGREP '(foofoofoo|barbarbar|8888|9999)' foo.log && Exit 1
+    : # For shells with buggy 'set -e'.
+  done
+done
+
+:
diff --git a/t/tests-environment.sh b/t/tests-environment.sh
new file mode 100755 (executable)
index 0000000..62ca4ee
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# "Simple Tests" testsuite driver: check TESTS_ENVIRONMENT support.
+
+am_serial_tests=yes
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test
+EXTRA_DIST = $(TESTS)
+END
+
+cat > foo.test << 'END'
+#! /bin/sh
+test x"$FOO" = x"ok"
+END
+chmod a+x foo.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+FOO=bad TESTS_ENVIRONMENT='FOO=ok'  $MAKE check
+FOO=ok  TESTS_ENVIRONMENT='FOO=bad' $MAKE check && Exit 1
+
+:
diff --git a/t/testsuite-part.am b/t/testsuite-part.am
new file mode 100644 (file)
index 0000000..97935c2
--- /dev/null
@@ -0,0 +1,731 @@
+## -*- Makefile -*-
+## Generated by gen-testsuite-part.  DO NOT EDIT BY HAND!
+
+
+## --------------------------------------------- ##
+##  Autogenerated tests and their dependencies.  ##
+## --------------------------------------------- ##
+
+t/ar-lib-w.log: t/ar-lib.sh
+t/ar-lib-w.log: t/ar-lib.log
+t/compile-w.log: t/compile.sh
+t/compile-w.log: t/compile.log
+t/compile2-w.log: t/compile2.sh
+t/compile2-w.log: t/compile2.log
+t/compile3-w.log: t/compile3.sh
+t/compile3-w.log: t/compile3.log
+t/compile4-w.log: t/compile4.sh
+t/compile4-w.log: t/compile4.log
+t/compile5-w.log: t/compile5.sh
+t/compile5-w.log: t/compile5.log
+t/compile6-w.log: t/compile6.sh
+t/compile6-w.log: t/compile6.log
+t/instsh2-w.log: t/instsh2.sh
+t/instsh2-w.log: t/instsh2.log
+t/instsh3-w.log: t/instsh3.sh
+t/instsh3-w.log: t/instsh3.log
+t/mdate5-w.log: t/mdate5.sh
+t/mdate5-w.log: t/mdate5.log
+t/mdate6-w.log: t/mdate6.sh
+t/mdate6-w.log: t/mdate6.log
+t/missing-w.log: t/missing.sh
+t/missing-w.log: t/missing.log
+t/missing2-w.log: t/missing2.sh
+t/missing2-w.log: t/missing2.log
+t/missing3-w.log: t/missing3.sh
+t/missing3-w.log: t/missing3.log
+t/missing5-w.log: t/missing5.sh
+t/missing5-w.log: t/missing5.log
+t/mkinst3-w.log: t/mkinst3.sh
+t/mkinst3-w.log: t/mkinst3.log
+t/check-w.log: t/check.sh
+t/check-w.log: t/check.log
+t/check2-w.log: t/check2.sh
+t/check2-w.log: t/check2.log
+t/check3-w.log: t/check3.sh
+t/check3-w.log: t/check3.log
+t/check4-w.log: t/check4.sh
+t/check4-w.log: t/check4.log
+t/check5-w.log: t/check5.sh
+t/check5-w.log: t/check5.log
+t/check6-w.log: t/check6.sh
+t/check6-w.log: t/check6.log
+t/check7-w.log: t/check7.sh
+t/check7-w.log: t/check7.log
+t/check8-w.log: t/check8.sh
+t/check8-w.log: t/check8.log
+t/check11-w.log: t/check11.sh
+t/check11-w.log: t/check11.log
+t/check12-w.log: t/check12.sh
+t/check12-w.log: t/check12.log
+t/check-subst-w.log: t/check-subst.sh
+t/check-subst-w.log: t/check-subst.log
+t/check-subst-prog-w.log: t/check-subst-prog.sh
+t/check-subst-prog-w.log: t/check-subst-prog.log
+t/check-exported-srcdir-w.log: t/check-exported-srcdir.sh
+t/check-exported-srcdir-w.log: t/check-exported-srcdir.log
+t/check-fd-redirect-w.log: t/check-fd-redirect.sh
+t/check-fd-redirect-w.log: t/check-fd-redirect.log
+t/check-tests-in-builddir-w.log: t/check-tests-in-builddir.sh
+t/check-tests-in-builddir-w.log: t/check-tests-in-builddir.log
+t/color-w.log: t/color.sh
+t/color-w.log: t/color.log
+t/color2-w.log: t/color2.sh
+t/color2-w.log: t/color2.log
+t/exeext4-w.log: t/exeext4.sh
+t/exeext4-w.log: t/exeext4.log
+t/maken3-w.log: t/maken3.sh
+t/maken3-w.log: t/maken3.log
+t/posixsubst-tests-w.log: t/posixsubst-tests.sh
+t/posixsubst-tests-w.log: t/posixsubst-tests.log
+t/tap-ambiguous-directive-w.log: t/tap-ambiguous-directive.sh
+t/tap-ambiguous-directive-w.log: t/tap-ambiguous-directive.log
+t/tap-autonumber-w.log: t/tap-autonumber.sh
+t/tap-autonumber-w.log: t/tap-autonumber.log
+t/tap-bailout-w.log: t/tap-bailout.sh
+t/tap-bailout-w.log: t/tap-bailout.log
+t/tap-bailout-and-logging-w.log: t/tap-bailout-and-logging.sh
+t/tap-bailout-and-logging-w.log: t/tap-bailout-and-logging.log
+t/tap-bailout-suppress-badexit-w.log: t/tap-bailout-suppress-badexit.sh
+t/tap-bailout-suppress-badexit-w.log: t/tap-bailout-suppress-badexit.log
+t/tap-bailout-suppress-later-diagnostic-w.log: t/tap-bailout-suppress-later-diagnostic.sh
+t/tap-bailout-suppress-later-diagnostic-w.log: t/tap-bailout-suppress-later-diagnostic.log
+t/tap-bailout-suppress-later-errors-w.log: t/tap-bailout-suppress-later-errors.sh
+t/tap-bailout-suppress-later-errors-w.log: t/tap-bailout-suppress-later-errors.log
+t/tap-color-w.log: t/tap-color.sh
+t/tap-color-w.log: t/tap-color.log
+t/tap-deps-w.log: t/tap-deps.sh
+t/tap-deps-w.log: t/tap-deps.log
+t/tap-diagnostic-w.log: t/tap-diagnostic.sh
+t/tap-diagnostic-w.log: t/tap-diagnostic.log
+t/tap-empty-diagnostic-w.log: t/tap-empty-diagnostic.sh
+t/tap-empty-diagnostic-w.log: t/tap-empty-diagnostic.log
+t/tap-empty-w.log: t/tap-empty.sh
+t/tap-empty-w.log: t/tap-empty.log
+t/tap-escape-directive-w.log: t/tap-escape-directive.sh
+t/tap-escape-directive-w.log: t/tap-escape-directive.log
+t/tap-escape-directive-2-w.log: t/tap-escape-directive-2.sh
+t/tap-escape-directive-2-w.log: t/tap-escape-directive-2.log
+t/tap-exit-w.log: t/tap-exit.sh
+t/tap-exit-w.log: t/tap-exit.log
+t/tap-signal-w.log: t/tap-signal.tap
+t/tap-signal-w.log: t/tap-signal.log
+t/tap-fancy-w.log: t/tap-fancy.sh
+t/tap-fancy-w.log: t/tap-fancy.log
+t/tap-fancy2-w.log: t/tap-fancy2.sh
+t/tap-fancy2-w.log: t/tap-fancy2.log
+t/tap-global-log-w.log: t/tap-global-log.sh
+t/tap-global-log-w.log: t/tap-global-log.log
+t/tap-global-result-w.log: t/tap-global-result.sh
+t/tap-global-result-w.log: t/tap-global-result.log
+t/tap-log-w.log: t/tap-log.sh
+t/tap-log-w.log: t/tap-log.log
+t/tap-msg0-result-w.log: t/tap-msg0-result.sh
+t/tap-msg0-result-w.log: t/tap-msg0-result.log
+t/tap-msg0-directive-w.log: t/tap-msg0-directive.sh
+t/tap-msg0-directive-w.log: t/tap-msg0-directive.log
+t/tap-msg0-planskip-w.log: t/tap-msg0-planskip.sh
+t/tap-msg0-planskip-w.log: t/tap-msg0-planskip.log
+t/tap-msg0-bailout-w.log: t/tap-msg0-bailout.sh
+t/tap-msg0-bailout-w.log: t/tap-msg0-bailout.log
+t/tap-msg0-misc-w.log: t/tap-msg0-misc.sh
+t/tap-msg0-misc-w.log: t/tap-msg0-misc.log
+t/tap-merge-stdout-stderr-w.log: t/tap-merge-stdout-stderr.sh
+t/tap-merge-stdout-stderr-w.log: t/tap-merge-stdout-stderr.log
+t/tap-no-merge-stdout-stderr-w.log: t/tap-no-merge-stdout-stderr.sh
+t/tap-no-merge-stdout-stderr-w.log: t/tap-no-merge-stdout-stderr.log
+t/tap-no-disable-hard-error-w.log: t/tap-no-disable-hard-error.sh
+t/tap-no-disable-hard-error-w.log: t/tap-no-disable-hard-error.log
+t/tap-no-spurious-summary-w.log: t/tap-no-spurious-summary.sh
+t/tap-no-spurious-summary-w.log: t/tap-no-spurious-summary.log
+t/tap-no-spurious-numbers-w.log: t/tap-no-spurious-numbers.sh
+t/tap-no-spurious-numbers-w.log: t/tap-no-spurious-numbers.log
+t/tap-no-spurious-w.log: t/tap-no-spurious.sh
+t/tap-no-spurious-w.log: t/tap-no-spurious.log
+t/tap-not-ok-skip-w.log: t/tap-not-ok-skip.sh
+t/tap-not-ok-skip-w.log: t/tap-not-ok-skip.log
+t/tap-number-wordboundary-w.log: t/tap-number-wordboundary.sh
+t/tap-number-wordboundary-w.log: t/tap-number-wordboundary.log
+t/tap-numeric-description-w.log: t/tap-numeric-description.sh
+t/tap-numeric-description-w.log: t/tap-numeric-description.log
+t/tap-negative-numbers-w.log: t/tap-negative-numbers.sh
+t/tap-negative-numbers-w.log: t/tap-negative-numbers.log
+t/tap-numbers-leading-zero-w.log: t/tap-numbers-leading-zero.sh
+t/tap-numbers-leading-zero-w.log: t/tap-numbers-leading-zero.log
+t/tap-out-of-order-w.log: t/tap-out-of-order.sh
+t/tap-out-of-order-w.log: t/tap-out-of-order.log
+t/tap-passthrough-w.log: t/tap-passthrough.sh
+t/tap-passthrough-w.log: t/tap-passthrough.log
+t/tap-passthrough-exit-w.log: t/tap-passthrough-exit.sh
+t/tap-passthrough-exit-w.log: t/tap-passthrough-exit.log
+t/tap-plan-w.log: t/tap-plan.sh
+t/tap-plan-w.log: t/tap-plan.log
+t/tap-plan-corner-w.log: t/tap-plan-corner.sh
+t/tap-plan-corner-w.log: t/tap-plan-corner.log
+t/tap-plan-errors-w.log: t/tap-plan-errors.sh
+t/tap-plan-errors-w.log: t/tap-plan-errors.log
+t/tap-plan-middle-w.log: t/tap-plan-middle.sh
+t/tap-plan-middle-w.log: t/tap-plan-middle.log
+t/tap-plan-whitespace-w.log: t/tap-plan-whitespace.sh
+t/tap-plan-whitespace-w.log: t/tap-plan-whitespace.log
+t/tap-plan-leading-zero-w.log: t/tap-plan-leading-zero.sh
+t/tap-plan-leading-zero-w.log: t/tap-plan-leading-zero.log
+t/tap-plan-malformed-w.log: t/tap-plan-malformed.sh
+t/tap-plan-malformed-w.log: t/tap-plan-malformed.log
+t/tap-missing-plan-and-bad-exit-w.log: t/tap-missing-plan-and-bad-exit.sh
+t/tap-missing-plan-and-bad-exit-w.log: t/tap-missing-plan-and-bad-exit.log
+t/tap-planskip-w.log: t/tap-planskip.sh
+t/tap-planskip-w.log: t/tap-planskip.log
+t/tap-planskip-late-w.log: t/tap-planskip-late.sh
+t/tap-planskip-late-w.log: t/tap-planskip-late.log
+t/tap-planskip-and-logging-w.log: t/tap-planskip-and-logging.sh
+t/tap-planskip-and-logging-w.log: t/tap-planskip-and-logging.log
+t/tap-planskip-unplanned-w.log: t/tap-planskip-unplanned.sh
+t/tap-planskip-unplanned-w.log: t/tap-planskip-unplanned.log
+t/tap-planskip-unplanned-corner-w.log: t/tap-planskip-unplanned-corner.sh
+t/tap-planskip-unplanned-corner-w.log: t/tap-planskip-unplanned-corner.log
+t/tap-planskip-case-insensitive-w.log: t/tap-planskip-case-insensitive.sh
+t/tap-planskip-case-insensitive-w.log: t/tap-planskip-case-insensitive.log
+t/tap-planskip-whitespace-w.log: t/tap-planskip-whitespace.sh
+t/tap-planskip-whitespace-w.log: t/tap-planskip-whitespace.log
+t/tap-planskip-badexit-w.log: t/tap-planskip-badexit.sh
+t/tap-planskip-badexit-w.log: t/tap-planskip-badexit.log
+t/tap-planskip-bailout-w.log: t/tap-planskip-bailout.sh
+t/tap-planskip-bailout-w.log: t/tap-planskip-bailout.log
+t/tap-planskip-later-errors-w.log: t/tap-planskip-later-errors.sh
+t/tap-planskip-later-errors-w.log: t/tap-planskip-later-errors.log
+t/tap-realtime-w.log: t/tap-realtime.sh
+t/tap-realtime-w.log: t/tap-realtime.log
+t/tap-test-number-0-w.log: t/tap-test-number-0.sh
+t/tap-test-number-0-w.log: t/tap-test-number-0.log
+t/tap-recheck-logs-w.log: t/tap-recheck-logs.sh
+t/tap-recheck-logs-w.log: t/tap-recheck-logs.log
+t/tap-result-comment-w.log: t/tap-result-comment.sh
+t/tap-result-comment-w.log: t/tap-result-comment.log
+t/tap-todo-skip-together-w.log: t/tap-todo-skip-together.sh
+t/tap-todo-skip-together-w.log: t/tap-todo-skip-together.log
+t/tap-todo-skip-whitespace-w.log: t/tap-todo-skip-whitespace.sh
+t/tap-todo-skip-whitespace-w.log: t/tap-todo-skip-whitespace.log
+t/tap-todo-skip-w.log: t/tap-todo-skip.sh
+t/tap-todo-skip-w.log: t/tap-todo-skip.log
+t/tap-unplanned-w.log: t/tap-unplanned.sh
+t/tap-unplanned-w.log: t/tap-unplanned.log
+t/tap-whitespace-normalization-w.log: t/tap-whitespace-normalization.sh
+t/tap-whitespace-normalization-w.log: t/tap-whitespace-normalization.log
+t/tap-with-and-without-number-w.log: t/tap-with-and-without-number.sh
+t/tap-with-and-without-number-w.log: t/tap-with-and-without-number.log
+t/tap-xfail-tests-w.log: t/tap-xfail-tests.sh
+t/tap-xfail-tests-w.log: t/tap-xfail-tests.log
+t/tap-bad-prog-w.log: t/tap-bad-prog.tap
+t/tap-bad-prog-w.log: t/tap-bad-prog.log
+t/tap-basic-w.log: t/tap-basic.sh
+t/tap-basic-w.log: t/tap-basic.log
+t/tap-diagnostic-custom-w.log: t/tap-diagnostic-custom.sh
+t/tap-diagnostic-custom-w.log: t/tap-diagnostic-custom.log
+t/tap-driver-stderr-w.log: t/tap-driver-stderr.sh
+t/tap-driver-stderr-w.log: t/tap-driver-stderr.log
+t/tap-doc-w.log: t/tap-doc.sh
+t/tap-doc-w.log: t/tap-doc.log
+t/tap-more-w.log: t/tap-more.sh
+t/tap-more-w.log: t/tap-more.log
+t/tap-more2-w.log: t/tap-more2.sh
+t/tap-more2-w.log: t/tap-more2.log
+t/tap-recheck-w.log: t/tap-recheck.sh
+t/tap-recheck-w.log: t/tap-recheck.log
+
+## ---------------------------------------------------- ##
+##  Ad-hoc autogenerated tests and their dependencies.  ##
+## ---------------------------------------------------- ##
+
+## Tests on automatic dependency tracking (see 'depcomp.sh').
+generated_TESTS =
+generated_TESTS += t/ar-lib-w.sh
+generated_TESTS += t/compile-w.sh
+generated_TESTS += t/compile2-w.sh
+generated_TESTS += t/compile3-w.sh
+generated_TESTS += t/compile4-w.sh
+generated_TESTS += t/compile5-w.sh
+generated_TESTS += t/compile6-w.sh
+generated_TESTS += t/instsh2-w.sh
+generated_TESTS += t/instsh3-w.sh
+generated_TESTS += t/mdate5-w.sh
+generated_TESTS += t/mdate6-w.sh
+generated_TESTS += t/missing-w.sh
+generated_TESTS += t/missing2-w.sh
+generated_TESTS += t/missing3-w.sh
+generated_TESTS += t/missing5-w.sh
+generated_TESTS += t/mkinst3-w.sh
+generated_TESTS += t/check-w.sh
+generated_TESTS += t/check2-w.sh
+generated_TESTS += t/check3-w.sh
+generated_TESTS += t/check4-w.sh
+generated_TESTS += t/check5-w.sh
+generated_TESTS += t/check6-w.sh
+generated_TESTS += t/check7-w.sh
+generated_TESTS += t/check8-w.sh
+generated_TESTS += t/check11-w.sh
+generated_TESTS += t/check12-w.sh
+generated_TESTS += t/check-subst-w.sh
+generated_TESTS += t/check-subst-prog-w.sh
+generated_TESTS += t/check-exported-srcdir-w.sh
+generated_TESTS += t/check-fd-redirect-w.sh
+generated_TESTS += t/check-tests-in-builddir-w.sh
+generated_TESTS += t/color-w.sh
+generated_TESTS += t/color2-w.sh
+generated_TESTS += t/exeext4-w.sh
+generated_TESTS += t/maken3-w.sh
+generated_TESTS += t/posixsubst-tests-w.sh
+generated_TESTS += t/tap-ambiguous-directive-w.sh
+generated_TESTS += t/tap-autonumber-w.sh
+generated_TESTS += t/tap-bailout-w.sh
+generated_TESTS += t/tap-bailout-and-logging-w.sh
+generated_TESTS += t/tap-bailout-suppress-badexit-w.sh
+generated_TESTS += t/tap-bailout-suppress-later-diagnostic-w.sh
+generated_TESTS += t/tap-bailout-suppress-later-errors-w.sh
+generated_TESTS += t/tap-color-w.sh
+generated_TESTS += t/tap-deps-w.sh
+generated_TESTS += t/tap-diagnostic-w.sh
+generated_TESTS += t/tap-empty-diagnostic-w.sh
+generated_TESTS += t/tap-empty-w.sh
+generated_TESTS += t/tap-escape-directive-w.sh
+generated_TESTS += t/tap-escape-directive-2-w.sh
+generated_TESTS += t/tap-exit-w.sh
+generated_TESTS += t/tap-signal-w.tap
+generated_TESTS += t/tap-fancy-w.sh
+generated_TESTS += t/tap-fancy2-w.sh
+generated_TESTS += t/tap-global-log-w.sh
+generated_TESTS += t/tap-global-result-w.sh
+generated_TESTS += t/tap-log-w.sh
+generated_TESTS += t/tap-msg0-result-w.sh
+generated_TESTS += t/tap-msg0-directive-w.sh
+generated_TESTS += t/tap-msg0-planskip-w.sh
+generated_TESTS += t/tap-msg0-bailout-w.sh
+generated_TESTS += t/tap-msg0-misc-w.sh
+generated_TESTS += t/tap-merge-stdout-stderr-w.sh
+generated_TESTS += t/tap-no-merge-stdout-stderr-w.sh
+generated_TESTS += t/tap-no-disable-hard-error-w.sh
+generated_TESTS += t/tap-no-spurious-summary-w.sh
+generated_TESTS += t/tap-no-spurious-numbers-w.sh
+generated_TESTS += t/tap-no-spurious-w.sh
+generated_TESTS += t/tap-not-ok-skip-w.sh
+generated_TESTS += t/tap-number-wordboundary-w.sh
+generated_TESTS += t/tap-numeric-description-w.sh
+generated_TESTS += t/tap-negative-numbers-w.sh
+generated_TESTS += t/tap-numbers-leading-zero-w.sh
+generated_TESTS += t/tap-out-of-order-w.sh
+generated_TESTS += t/tap-passthrough-w.sh
+generated_TESTS += t/tap-passthrough-exit-w.sh
+generated_TESTS += t/tap-plan-w.sh
+generated_TESTS += t/tap-plan-corner-w.sh
+generated_TESTS += t/tap-plan-errors-w.sh
+generated_TESTS += t/tap-plan-middle-w.sh
+generated_TESTS += t/tap-plan-whitespace-w.sh
+generated_TESTS += t/tap-plan-leading-zero-w.sh
+generated_TESTS += t/tap-plan-malformed-w.sh
+generated_TESTS += t/tap-missing-plan-and-bad-exit-w.sh
+generated_TESTS += t/tap-planskip-w.sh
+generated_TESTS += t/tap-planskip-late-w.sh
+generated_TESTS += t/tap-planskip-and-logging-w.sh
+generated_TESTS += t/tap-planskip-unplanned-w.sh
+generated_TESTS += t/tap-planskip-unplanned-corner-w.sh
+generated_TESTS += t/tap-planskip-case-insensitive-w.sh
+generated_TESTS += t/tap-planskip-whitespace-w.sh
+generated_TESTS += t/tap-planskip-badexit-w.sh
+generated_TESTS += t/tap-planskip-bailout-w.sh
+generated_TESTS += t/tap-planskip-later-errors-w.sh
+generated_TESTS += t/tap-realtime-w.sh
+generated_TESTS += t/tap-test-number-0-w.sh
+generated_TESTS += t/tap-recheck-logs-w.sh
+generated_TESTS += t/tap-result-comment-w.sh
+generated_TESTS += t/tap-todo-skip-together-w.sh
+generated_TESTS += t/tap-todo-skip-whitespace-w.sh
+generated_TESTS += t/tap-todo-skip-w.sh
+generated_TESTS += t/tap-unplanned-w.sh
+generated_TESTS += t/tap-whitespace-normalization-w.sh
+generated_TESTS += t/tap-with-and-without-number-w.sh
+generated_TESTS += t/tap-xfail-tests-w.sh
+generated_TESTS += t/tap-bad-prog-w.tap
+generated_TESTS += t/tap-basic-w.sh
+generated_TESTS += t/tap-diagnostic-custom-w.sh
+generated_TESTS += t/tap-driver-stderr-w.sh
+generated_TESTS += t/tap-doc-w.sh
+generated_TESTS += t/tap-more-w.sh
+generated_TESTS += t/tap-more2-w.sh
+generated_TESTS += t/tap-recheck-w.sh
+generated_TESTS += t/depcomp-lt-msvcmsys.tap
+generated_TESTS += t/depcomp-lt-disabled.tap
+generated_TESTS += t/depcomp-lt-msvisualcpp.tap
+generated_TESTS += t/depcomp-lt-makedepend.tap
+generated_TESTS += t/depcomp-lt-auto.tap
+generated_TESTS += t/depcomp-lt-cpp.tap
+generated_TESTS += t/depcomp-lt-gcc.tap
+generated_TESTS += t/depcomp-lt-dashmstdout.tap
+generated_TESTS += t/depcomp-msvcmsys.tap
+generated_TESTS += t/depcomp-disabled.tap
+generated_TESTS += t/depcomp-msvisualcpp.tap
+generated_TESTS += t/depcomp-makedepend.tap
+generated_TESTS += t/depcomp-auto.tap
+generated_TESTS += t/depcomp-cpp.tap
+generated_TESTS += t/depcomp-gcc.tap
+generated_TESTS += t/depcomp-dashmstdout.tap
+
+## ----------------------------- ##
+##  Autogenerated dependencies.  ##
+## ----------------------------- ##
+
+## Added by deps-extracting key 'libtool_macros'.
+libtool_macros_TESTS = \
+  t/ar-lib4.sh \
+  t/ar-lib6a.sh \
+  t/ar-lib6b.sh \
+  t/canon6.sh \
+  t/canon7.sh \
+  t/depcomp8b.sh \
+  t/extradep2.sh \
+  t/fort5.sh \
+  t/instdir-ltlib.sh \
+  t/instfail-libtool.sh \
+  t/ldadd.sh \
+  t/ldflags.sh \
+  t/libobj13.sh \
+  t/libtool.sh \
+  t/libtool2.sh \
+  t/libtool3.sh \
+  t/libtool5.sh \
+  t/libtool6.sh \
+  t/libtool7.sh \
+  t/libtool8.sh \
+  t/libtool9.sh \
+  t/libtoo10.sh \
+  t/libtoo11.sh \
+  t/listval.sh \
+  t/ltcond.sh \
+  t/ltcond2.sh \
+  t/ltconv.sh \
+  t/ltdeps.sh \
+  t/ltinit.sh \
+  t/ltinstloc.sh \
+  t/ltlibobjs.sh \
+  t/ltlibsrc.sh \
+  t/ltorder.sh \
+  t/nobase-libtool.sh \
+  t/objc-megademo.sh \
+  t/posixsubst-ltlibraries.sh \
+  t/pr72.sh \
+  t/pr211.sh \
+  t/pr300-ltlib.sh \
+  t/pr307.sh \
+  t/pr401b.sh \
+  t/reqd2.sh \
+  t/silent3.sh \
+  t/silent4.sh \
+  t/silent9.sh \
+  t/stdlib2.sh \
+  t/strip3.sh \
+  t/subobj9.sh \
+  t/suffix2.sh \
+  t/suffix5.sh \
+  t/suffix8.tap \
+  t/suffix10.tap \
+  t/vala-libs.sh \
+  t/vartypo2.sh \
+  t/depcomp-lt-msvcmsys.tap \
+  t/depcomp-lt-disabled.tap \
+  t/depcomp-lt-msvisualcpp.tap \
+  t/depcomp-lt-makedepend.tap \
+  t/depcomp-lt-auto.tap \
+  t/depcomp-lt-cpp.tap \
+  t/depcomp-lt-gcc.tap \
+  t/depcomp-lt-dashmstdout.tap
+EXTRA_DIST += 
+t/ar-lib4.log:  t/libtool-macros.log
+t/ar-lib6a.log:  t/libtool-macros.log
+t/ar-lib6b.log:  t/libtool-macros.log
+t/canon6.log:  t/libtool-macros.log
+t/canon7.log:  t/libtool-macros.log
+t/depcomp8b.log:  t/libtool-macros.log
+t/extradep2.log:  t/libtool-macros.log
+t/fort5.log:  t/libtool-macros.log
+t/instdir-ltlib.log:  t/libtool-macros.log
+t/instfail-libtool.log:  t/libtool-macros.log
+t/ldadd.log:  t/libtool-macros.log
+t/ldflags.log:  t/libtool-macros.log
+t/libobj13.log:  t/libtool-macros.log
+t/libtool.log:  t/libtool-macros.log
+t/libtool2.log:  t/libtool-macros.log
+t/libtool3.log:  t/libtool-macros.log
+t/libtool5.log:  t/libtool-macros.log
+t/libtool6.log:  t/libtool-macros.log
+t/libtool7.log:  t/libtool-macros.log
+t/libtool8.log:  t/libtool-macros.log
+t/libtool9.log:  t/libtool-macros.log
+t/libtoo10.log:  t/libtool-macros.log
+t/libtoo11.log:  t/libtool-macros.log
+t/listval.log:  t/libtool-macros.log
+t/ltcond.log:  t/libtool-macros.log
+t/ltcond2.log:  t/libtool-macros.log
+t/ltconv.log:  t/libtool-macros.log
+t/ltdeps.log:  t/libtool-macros.log
+t/ltinit.log:  t/libtool-macros.log
+t/ltinstloc.log:  t/libtool-macros.log
+t/ltlibobjs.log:  t/libtool-macros.log
+t/ltlibsrc.log:  t/libtool-macros.log
+t/ltorder.log:  t/libtool-macros.log
+t/nobase-libtool.log:  t/libtool-macros.log
+t/objc-megademo.log:  t/libtool-macros.log
+t/posixsubst-ltlibraries.log:  t/libtool-macros.log
+t/pr72.log:  t/libtool-macros.log
+t/pr211.log:  t/libtool-macros.log
+t/pr300-ltlib.log:  t/libtool-macros.log
+t/pr307.log:  t/libtool-macros.log
+t/pr401b.log:  t/libtool-macros.log
+t/reqd2.log:  t/libtool-macros.log
+t/silent3.log:  t/libtool-macros.log
+t/silent4.log:  t/libtool-macros.log
+t/silent9.log:  t/libtool-macros.log
+t/stdlib2.log:  t/libtool-macros.log
+t/strip3.log:  t/libtool-macros.log
+t/subobj9.log:  t/libtool-macros.log
+t/suffix2.log:  t/libtool-macros.log
+t/suffix5.log:  t/libtool-macros.log
+t/suffix8.log:  t/libtool-macros.log
+t/suffix10.log:  t/libtool-macros.log
+t/vala-libs.log:  t/libtool-macros.log
+t/vartypo2.log:  t/libtool-macros.log
+t/depcomp-lt-msvcmsys.log:  t/libtool-macros.log
+t/depcomp-lt-disabled.log:  t/libtool-macros.log
+t/depcomp-lt-msvisualcpp.log:  t/libtool-macros.log
+t/depcomp-lt-makedepend.log:  t/libtool-macros.log
+t/depcomp-lt-auto.log:  t/libtool-macros.log
+t/depcomp-lt-cpp.log:  t/libtool-macros.log
+t/depcomp-lt-gcc.log:  t/libtool-macros.log
+t/depcomp-lt-dashmstdout.log:  t/libtool-macros.log
+
+## Added by deps-extracting key 'check_testsuite_summary'.
+check_testsuite_summary_TESTS = \
+  t/testsuite-summary-color.sh \
+  t/testsuite-summary-count.sh
+EXTRA_DIST += t/ax/testsuite-summary-checks.sh
+t/testsuite-summary-color.log: t/ax/testsuite-summary-checks.sh 
+t/testsuite-summary-count.log: t/ax/testsuite-summary-checks.sh 
+
+## Added by deps-extracting key 'on_tap_with_common_setup'.
+on_tap_with_common_setup_TESTS = \
+  t/tap-ambiguous-directive.sh \
+  t/tap-autonumber.sh \
+  t/tap-bailout.sh \
+  t/tap-bailout-leading-space.sh \
+  t/tap-bailout-and-logging.sh \
+  t/tap-bailout-suppress-badexit.sh \
+  t/tap-bailout-suppress-later-diagnostic.sh \
+  t/tap-bailout-suppress-later-errors.sh \
+  t/tap-color.sh \
+  t/tap-deps.sh \
+  t/tap-diagnostic.sh \
+  t/tap-empty-diagnostic.sh \
+  t/tap-empty.sh \
+  t/tap-escape-directive.sh \
+  t/tap-escape-directive-2.sh \
+  t/tap-exit.sh \
+  t/tap-fancy.sh \
+  t/tap-fancy2.sh \
+  t/tap-global-log.sh \
+  t/tap-global-result.sh \
+  t/tap-log.sh \
+  t/tap-msg0-result.sh \
+  t/tap-msg0-directive.sh \
+  t/tap-msg0-planskip.sh \
+  t/tap-msg0-bailout.sh \
+  t/tap-msg0-misc.sh \
+  t/tap-merge-stdout-stderr.sh \
+  t/tap-no-merge-stdout-stderr.sh \
+  t/tap-no-disable-hard-error.sh \
+  t/tap-no-spurious-summary.sh \
+  t/tap-no-spurious-numbers.sh \
+  t/tap-no-spurious.sh \
+  t/tap-not-ok-skip.sh \
+  t/tap-number-wordboundary.sh \
+  t/tap-numeric-description.sh \
+  t/tap-negative-numbers.sh \
+  t/tap-numbers-leading-zero.sh \
+  t/tap-out-of-order.sh \
+  t/tap-passthrough.sh \
+  t/tap-passthrough-exit.sh \
+  t/tap-plan.sh \
+  t/tap-plan-corner.sh \
+  t/tap-plan-errors.sh \
+  t/tap-plan-middle.sh \
+  t/tap-plan-whitespace.sh \
+  t/tap-plan-leading-zero.sh \
+  t/tap-plan-malformed.sh \
+  t/tap-missing-plan-and-bad-exit.sh \
+  t/tap-planskip.sh \
+  t/tap-planskip-late.sh \
+  t/tap-planskip-and-logging.sh \
+  t/tap-planskip-unplanned.sh \
+  t/tap-planskip-unplanned-corner.sh \
+  t/tap-planskip-case-insensitive.sh \
+  t/tap-planskip-whitespace.sh \
+  t/tap-planskip-badexit.sh \
+  t/tap-planskip-bailout.sh \
+  t/tap-planskip-later-errors.sh \
+  t/tap-realtime.sh \
+  t/tap-test-number-0.sh \
+  t/tap-recheck-logs.sh \
+  t/tap-result-comment.sh \
+  t/tap-todo-skip-together.sh \
+  t/tap-todo-skip-whitespace.sh \
+  t/tap-todo-skip.sh \
+  t/tap-unplanned.sh \
+  t/tap-whitespace-normalization.sh \
+  t/tap-with-and-without-number.sh \
+  t/tap-xfail-tests.sh
+EXTRA_DIST += t/ax/tap-setup.sh
+t/tap-ambiguous-directive.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-autonumber.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-leading-space.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-and-logging.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-suppress-badexit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-suppress-later-diagnostic.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-bailout-suppress-later-errors.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-color.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-deps.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-diagnostic.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-empty-diagnostic.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-empty.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-escape-directive.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-escape-directive-2.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-exit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-fancy.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-fancy2.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-global-log.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-global-result.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-log.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-result.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-directive.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-planskip.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-bailout.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-msg0-misc.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-merge-stdout-stderr.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-merge-stdout-stderr.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-disable-hard-error.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-spurious-summary.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-spurious-numbers.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-no-spurious.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-not-ok-skip.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-number-wordboundary.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-numeric-description.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-negative-numbers.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-numbers-leading-zero.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-out-of-order.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-passthrough.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-passthrough-exit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-corner.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-errors.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-middle.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-whitespace.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-leading-zero.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-plan-malformed.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-missing-plan-and-bad-exit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-late.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-and-logging.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-unplanned.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-unplanned-corner.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-case-insensitive.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-whitespace.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-badexit.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-bailout.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-planskip-later-errors.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-realtime.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-test-number-0.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-recheck-logs.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-result-comment.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-todo-skip-together.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-todo-skip-whitespace.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-todo-skip.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-unplanned.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-whitespace-normalization.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-with-and-without-number.log: t/ax/tap-setup.sh t/tap-common-setup.log
+t/tap-xfail-tests.log: t/ax/tap-setup.sh t/tap-common-setup.log
+
+## Added by deps-extracting key 'check_tap_testsuite_summary'.
+check_tap_testsuite_summary_TESTS = \
+  t/tap-summary.sh \
+  t/tap-summary-color.sh
+EXTRA_DIST += t/ax/tap-summary-aux.sh
+t/tap-summary.log: t/ax/tap-summary-aux.sh 
+t/tap-summary-color.log: t/ax/tap-summary-aux.sh 
+
+## Added by deps-extracting key 'depcomp'.
+depcomp_TESTS = \
+  t/depcomp-lt-msvcmsys.tap \
+  t/depcomp-lt-disabled.tap \
+  t/depcomp-lt-msvisualcpp.tap \
+  t/depcomp-lt-makedepend.tap \
+  t/depcomp-lt-auto.tap \
+  t/depcomp-lt-cpp.tap \
+  t/depcomp-lt-gcc.tap \
+  t/depcomp-lt-dashmstdout.tap \
+  t/depcomp-msvcmsys.tap \
+  t/depcomp-disabled.tap \
+  t/depcomp-msvisualcpp.tap \
+  t/depcomp-makedepend.tap \
+  t/depcomp-auto.tap \
+  t/depcomp-cpp.tap \
+  t/depcomp-gcc.tap \
+  t/depcomp-dashmstdout.tap
+EXTRA_DIST += t/ax/depcomp.sh
+t/depcomp-lt-msvcmsys.log: t/ax/depcomp.sh 
+t/depcomp-lt-disabled.log: t/ax/depcomp.sh 
+t/depcomp-lt-msvisualcpp.log: t/ax/depcomp.sh 
+t/depcomp-lt-makedepend.log: t/ax/depcomp.sh 
+t/depcomp-lt-auto.log: t/ax/depcomp.sh 
+t/depcomp-lt-cpp.log: t/ax/depcomp.sh 
+t/depcomp-lt-gcc.log: t/ax/depcomp.sh 
+t/depcomp-lt-dashmstdout.log: t/ax/depcomp.sh 
+t/depcomp-msvcmsys.log: t/ax/depcomp.sh 
+t/depcomp-disabled.log: t/ax/depcomp.sh 
+t/depcomp-msvisualcpp.log: t/ax/depcomp.sh 
+t/depcomp-makedepend.log: t/ax/depcomp.sh 
+t/depcomp-auto.log: t/ax/depcomp.sh 
+t/depcomp-cpp.log: t/ax/depcomp.sh 
+t/depcomp-gcc.log: t/ax/depcomp.sh 
+t/depcomp-dashmstdout.log: t/ax/depcomp.sh 
+
+## Added by deps-extracting key 'extract_testsuite_summary'.
+extract_testsuite_summary_TESTS = \
+  t/testsuite-summary-count-many.sh
+EXTRA_DIST += t/ax/extract-testsuite-summary.pl
+t/testsuite-summary-count-many.log: t/ax/extract-testsuite-summary.pl 
+
+## Added by deps-extracting key 'gettext_macros'.
+gettext_macros_TESTS = \
+  t/gettext.sh \
+  t/gettext2.sh \
+  t/gettext3.sh \
+  t/subcond.sh
+EXTRA_DIST += 
+t/gettext.log:  t/gettext-macros.log
+t/gettext2.log:  t/gettext-macros.log
+t/gettext3.log:  t/gettext-macros.log
+t/subcond.log:  t/gettext-macros.log
+
+## Added by deps-extracting key 'use_trivial_test_driver'.
+use_trivial_test_driver_TESTS = \
+  t/testsuite-summary-count-many.sh \
+  t/test-driver-acsubst.sh \
+  t/test-driver-cond.sh \
+  t/test-driver-custom-multitest.sh \
+  t/test-driver-custom-multitest-recheck.sh \
+  t/test-driver-custom-multitest-recheck2.sh
+EXTRA_DIST += t/ax/trivial-test-driver
+t/testsuite-summary-count-many.log: t/ax/trivial-test-driver 
+t/test-driver-acsubst.log: t/ax/trivial-test-driver 
+t/test-driver-cond.log: t/ax/trivial-test-driver 
+t/test-driver-custom-multitest.log: t/ax/trivial-test-driver 
+t/test-driver-custom-multitest-recheck.log: t/ax/trivial-test-driver 
+t/test-driver-custom-multitest-recheck2.log: t/ax/trivial-test-driver 
+
diff --git a/t/testsuite-summary-color.sh b/t/testsuite-summary-color.sh
new file mode 100755 (executable)
index 0000000..0f00708
--- /dev/null
@@ -0,0 +1,199 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check coloring of the testsuite summary.
+
+. ./defs-static || Exit 1
+
+use_colors=yes
+use_vpath=no
+
+. "$am_testauxdir"/testsuite-summary-checks.sh || Exit 99
+
+./configure
+
+# ANSI colors.
+red='\e[0;31m'
+grn='\e[0;32m'
+lgn='\e[1;32m'
+blu='\e[1;34m'
+mgn='\e[0;35m'
+brg='\e[1m';
+std='\e[m';
+
+success_header="\
+${grn}${br}${std}
+${grn}Testsuite summary for GNU AutoFoo 7.1${std}
+${grn}${br}${std}"
+
+success_footer=${grn}${br}${std}
+
+failure_header="\
+${red}${br}${std}
+${red}Testsuite summary for GNU AutoFoo 7.1${std}
+${red}${br}${std}"
+
+failure_footer="\
+${red}${br}${std}
+${red}See ./test-suite.log${std}
+${red}Please report to bug-automake@gnu.org${std}
+${red}${br}${std}"
+
+do_check '' <<END
+$success_header
+# TOTAL: 0
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+do_check pass.t <<END
+$success_header
+${brg}# TOTAL: 1${std}
+${grn}# PASS:  1${std}
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+do_check skip.t <<END
+$success_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+${blu}# SKIP:  1${std}
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+do_check xfail.t <<END
+$success_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+# SKIP:  0
+${lgn}# XFAIL: 1${std}
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+do_check fail.t <<END
+$failure_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+${red}# FAIL:  1${std}
+# XPASS: 0
+# ERROR: 0
+$failure_footer
+END
+
+do_check xpass.t <<END
+$failure_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+${red}# XPASS: 1${std}
+# ERROR: 0
+$failure_footer
+END
+
+do_check error.t <<END
+$failure_header
+${brg}# TOTAL: 1${std}
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+${mgn}# ERROR: 1${std}
+$failure_footer
+END
+
+do_check pass.t xfail.t skip.t <<END
+$success_header
+${brg}# TOTAL: 3${std}
+${grn}# PASS:  1${std}
+${blu}# SKIP:  1${std}
+${lgn}# XFAIL: 1${std}
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+do_check pass.t fail.t skip.t <<END
+$failure_header
+${brg}# TOTAL: 3${std}
+${grn}# PASS:  1${std}
+${blu}# SKIP:  1${std}
+# XFAIL: 0
+${red}# FAIL:  1${std}
+# XPASS: 0
+# ERROR: 0
+$failure_footer
+END
+
+do_check pass.t xfail.t xpass.t <<END
+$failure_header
+${brg}# TOTAL: 3${std}
+${grn}# PASS:  1${std}
+# SKIP:  0
+${lgn}# XFAIL: 1${std}
+# FAIL:  0
+${red}# XPASS: 1${std}
+# ERROR: 0
+$failure_footer
+END
+
+do_check skip.t xfail.t error.t <<END
+$failure_header
+${brg}# TOTAL: 3${std}
+# PASS:  0
+${blu}# SKIP:  1${std}
+${lgn}# XFAIL: 1${std}
+# FAIL:  0
+# XPASS: 0
+${mgn}# ERROR: 1${std}
+$failure_footer
+END
+
+do_check pass.t skip.t xfail.t fail.t xpass.t error.t <<END
+$failure_header
+${brg}# TOTAL: 6${std}
+${grn}# PASS:  1${std}
+${blu}# SKIP:  1${std}
+${lgn}# XFAIL: 1${std}
+${red}# FAIL:  1${std}
+${red}# XPASS: 1${std}
+${mgn}# ERROR: 1${std}
+$failure_footer
+END
+
+:
diff --git a/t/testsuite-summary-count-many.sh b/t/testsuite-summary-count-many.sh
new file mode 100755 (executable)
index 0000000..b101206
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check test counts in the testsuite summary, with test drivers allowing
+# multiple test results per test script, and for a huge number of tests.
+# Incidentally, this test also checks that the testsuite summary doesn't
+# give any bug-report address if it's not defined.
+
+. ./defs || Exit 1
+
+for s in trivial-test-driver extract-testsuite-summary.pl; do
+  cp "$am_testauxdir/$s" . || fatal_ "failed to fetch auxiliary script $s"
+done
+
+br='============================================================================'
+
+header="\
+${br}
+Testsuite summary for $me 1.0
+${br}"
+
+footer="\
+${br}
+See ./test-suite.log
+${br}"
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+TEST_LOG_DRIVER = $(SHELL) $(srcdir)/trivial-test-driver
+TESTS = all.test
+# Without this, the test driver will be horrendously slow.
+END
+
+cat > all.test <<'END'
+#!/bin/sh
+cat results.txt || { echo ERROR: weird; exit 99; }
+END
+chmod a+x all.test
+
+$PERL -w -e '
+  use warnings FATAL => "all";
+  use strict;
+
+  my $base = 1000;
+  my %count = (
+    TOTAL => $base * 1000,
+    PASS  => $base * 700,
+    SKIP  => $base * 200,
+    XFAIL => $base * 80,
+    FAIL  => $base * 10,
+    XPASS => $base * 7,
+    ERROR => $base * 3,
+  );
+  my @results = qw/PASS SKIP XFAIL FAIL XPASS ERROR/;
+
+  open (RES, ">results.txt") or die "opening results.txt: $!\n";
+  open (CNT, ">count.txt") or die "opening count.txt: $!\n";
+
+  printf CNT "# %-6s %d\n", "TOTAL:", $count{TOTAL};
+  for my $res (@results)
+    {
+      my $uc_res = uc $res;
+      print STDERR "Generating list of $res ...\n";
+      for (1..$count{$res})
+        {
+          print RES "$uc_res: $_\n";
+        }
+      printf CNT "# %-6s %d\n", $res . ":", $count{$res};
+    }
+'
+
+(echo "$header" && cat count.txt && echo "$footer") > summary.exp
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+./configure
+
+($MAKE check || : > make.fail) | tee stdout
+test -f make.fail
+
+$PERL extract-testsuite-summary.pl stdout > summary.got
+cat summary.exp
+cat summary.got
+diff summary.exp summary.got || Exit 1
+
+:
diff --git a/t/testsuite-summary-count.sh b/t/testsuite-summary-count.sh
new file mode 100755 (executable)
index 0000000..1d13e7e
--- /dev/null
@@ -0,0 +1,161 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check test counts in the testsuite summary.
+
+. ./defs-static || Exit 1
+
+use_colors=no
+use_vpath=no
+
+. "$am_testauxdir"/testsuite-summary-checks.sh || Exit 99
+
+./configure
+
+header="\
+${br}
+Testsuite summary for GNU AutoFoo 7.1
+${br}"
+
+success_footer=${br}
+
+failure_footer="\
+${br}
+See ./test-suite.log
+Please report to bug-automake@gnu.org
+${br}"
+
+# Corner cases.
+
+do_check '' <<END
+$header
+# TOTAL: 0
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+do_check pass.t <<END
+$header
+# TOTAL: 1
+# PASS:  1
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+do_check fail.t <<END
+$header
+# TOTAL: 1
+# PASS:  0
+# SKIP:  0
+# XFAIL: 0
+# FAIL:  1
+# XPASS: 0
+# ERROR: 0
+$failure_footer
+END
+
+# Some simpler checks, with low or moderate number of tests.
+
+do_check skip.t skip2.t skip3.t xfail.t xfail2.t <<END
+$header
+# TOTAL: 5
+# PASS:  0
+# SKIP:  3
+# XFAIL: 2
+# FAIL:  0
+# XPASS: 0
+# ERROR: 0
+$success_footer
+END
+
+do_check pass.t pass2.t xfail.t xpass.t error.t error2.t <<END
+$header
+# TOTAL: 6
+# PASS:  2
+# SKIP:  0
+# XFAIL: 1
+# FAIL:  0
+# XPASS: 1
+# ERROR: 2
+$failure_footer
+END
+
+pass_count=22
+skip_count=19
+xfail_count=21
+fail_count=18
+xpass_count=23
+error_count=17
+tests_count=120
+
+pass=` seq_ 1 $pass_count  | sed 's/.*/pass-&.t/'`
+skip=` seq_ 1 $skip_count  | sed 's/.*/skip-&.t/'`
+xfail=`seq_ 1 $xfail_count | sed 's/.*/xfail-&.t/'`
+fail=` seq_ 1 $fail_count  | sed 's/.*/fail-&.t/'`
+xpass=`seq_ 1 $xpass_count | sed 's/.*/xpass-&.t/'`
+error=`seq_ 1 $error_count | sed 's/.*/error-&.t/'`
+
+do_check $pass $skip $xfail $fail $xpass $error <<END
+$header
+# TOTAL: $tests_count
+# PASS:  $pass_count
+# SKIP:  $skip_count
+# XFAIL: $xfail_count
+# FAIL:  $fail_count
+# XPASS: $xpass_count
+# ERROR: $error_count
+$failure_footer
+END
+
+# Mild stress test with a lot of test scripts.
+
+tests_count=1888
+pass_count=1403
+skip_count=292
+xfail_count=41
+fail_count=126
+xpass_count=17
+error_count=9
+
+pass=` seq_ 1 $pass_count  | sed 's/.*/pass-&.t/'`
+skip=` seq_ 1 $skip_count  | sed 's/.*/skip-&.t/'`
+xfail=`seq_ 1 $xfail_count | sed 's/.*/xfail-&.t/'`
+fail=` seq_ 1 $fail_count  | sed 's/.*/fail-&.t/'`
+xpass=`seq_ 1 $xpass_count | sed 's/.*/xpass-&.t/'`
+error=`seq_ 1 $error_count | sed 's/.*/error-&.t/'`
+
+do_check $pass $skip $xfail $fail $xpass $error <<END
+$header
+# TOTAL: $tests_count
+# PASS:  $pass_count
+# SKIP:  $skip_count
+# XFAIL: $xfail_count
+# FAIL:  $fail_count
+# XPASS: $xpass_count
+# ERROR: $error_count
+$failure_footer
+END
+
+:
diff --git a/t/testsuite-summary-reference-log.sh b/t/testsuite-summary-reference-log.sh
new file mode 100755 (executable)
index 0000000..1958dd4
--- /dev/null
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the global testsuite log file referenced in the testsuite
+# summary and in the global testsuite log itself is correct.
+
+. ./defs || Exit 1
+
+mv configure.ac configure.stub
+
+cat > fail << 'END'
+#!/bin/sh
+exit 1
+END
+chmod a+x fail
+
+cat configure.stub - > configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_SUITE_LOG = my_test_suite.log
+TESTS = fail
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir build
+cd build
+
+../configure
+
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^See \./my_test_suite\.log$' stdout
+
+mkdir bar
+TEST_SUITE_LOG=bar/bar.log $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^See \./bar/bar\.log$' stdout
+
+cd ..
+
+echo SUBDIRS = sub > Makefile.am
+mkdir sub
+echo TESTS = fail > sub/Makefile.am
+mv fail sub
+
+cat configure.stub - > configure.ac <<'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+$ACLOCAL --force
+$AUTOCONF --force
+$AUTOMAKE
+
+./configure
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^See sub/test-suite\.log$' stdout
+cd sub
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^See sub/test-suite\.log$' stdout
+cd ..
+
+TEST_SUITE_LOG=foo.log $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep '^See sub/foo\.log$' stdout
+
+:
diff --git a/t/transform.sh b/t/transform.sh
new file mode 100755 (executable)
index 0000000..7aa958e
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that --program-transform works.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'EOF'
+bin_PROGRAMS = h
+bin_SCRIPTS = h.sh
+man_MANS = h.1
+
+.PHONY: test-install
+test-install: install
+       test -f inst/bin/gnu-h$(EXEEXT)
+       test -f inst/bin/gnu-h.sh
+       test -f inst/man/man1/gnu-h.1
+EOF
+
+cat >h.c <<'EOF'
+int main (void)
+{
+  return 0;
+}
+EOF
+
+: > h.sh
+: > h.1
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --program-prefix=gnu- --prefix "`pwd`/inst" --mandir "`pwd`/inst/man"
+$MAKE
+$MAKE test-install
+$MAKE uninstall
+test `find inst -type f -print | wc -l` = 0
+
+# Opportunistically test for installdirs.
+rm -rf inst
+$MAKE installdirs
+test -d inst/bin
+test -d inst/man/man1
+
+:
diff --git a/t/transform2.sh b/t/transform2.sh
new file mode 100755 (executable)
index 0000000..a4a94f7
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that --program-transform works even when multiple files are
+# collapsed.
+
+required=cc
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'EOF'
+bin_PROGRAMS = p1 p2
+bin_SCRIPTS = s1.sh s2.sh
+man_MANS = m1.1 m2.1
+
+test-install: install
+       test -f inst/bin/p$(EXEEXT)
+       test -f inst/bin/s.sh
+       test -f inst/man/man1/m.1
+
+test-install-foo: install
+       test -f inst/bin/foo$(EXEEXT)
+       test -f inst/bin/foo
+       test -f inst/man/man1/foo.1
+       test ! -f inst/bin/p1$(EXEEXT)
+       test ! -f inst/bin/p2$(EXEEXT)
+       test ! -f inst/bin/s1.sh
+       test ! -f inst/bin/s2.sh
+       test ! -f inst/man/man/m1.1
+       test ! -f inst/man/man/m2.1
+EOF
+
+cat >p1.c <<'EOF'
+int
+main ()
+{
+  return 0;
+}
+EOF
+
+cp p1.c p2.c
+
+: > s1.sh
+: > s2.sh
+: > m1.1
+: > m2.1
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --program-transform-name='s/[12]//' --prefix "`pwd`/inst" --mandir "`pwd`/inst/man"
+$MAKE
+$MAKE test-install
+$MAKE uninstall
+test `find inst -type f -print | wc -l` = 0
+
+# Also squash all file types in question.
+
+# On newer Cygwin versions, that won't work, likely due to overly
+# aggressive appending of '.exe' suffix when copying/renaming Windows
+# executables).  So let's skip this part of the test if we detect the
+# faulty heuristic is present.  See also:
+# <http://lists.gnu.org/archive/html/automake-patches/2010-08/msg00153.html>
+# <http://thread.gmane.org/gmane.os.cygwin/119380>
+echo Foo > foo
+echo Bar > bar.exe
+chmod a+x foo bar.exe
+cp foo bar && cmp foo bar \
+  || skip_ "your Cygwin is too aggressive in tweaking '.exe' suffixes"
+
+./configure --program-transform-name='s/.*/foo/' --prefix "`pwd`/inst" --mandir "`pwd`/inst/man"
+$MAKE
+$MAKE test-install-foo
+$MAKE uninstall
+test `find inst -type f -print | wc -l` = 0
+
+:
diff --git a/t/transform3.sh b/t/transform3.sh
new file mode 100755 (executable)
index 0000000..6f1b811
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that --program-transform does not transform too much
+# stuff (in particular, pgklibdir, pkgdatadir and pkglibexecdir).
+
+required=cc
+. ./defs || Exit 1
+
+cat > configure.ac <<'END'
+AC_INIT([foo], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_SCRIPTS = foo
+pkgdata_DATA = bar.txt
+pkglib_LIBRARIES = libzap.a
+pkglibexec_SCRIPTS = mu
+
+test-install: install
+       find $(prefix) ;: For debugging.
+       test   -f $(bindir)/gnu-foo
+       test   -x $(bindir)/gnu-foo
+       test   -f $(datadir)/foo/bar.txt
+       test ! -d $(datadir)/gnu-foo
+       test   -f $(libdir)/foo/libzap.a
+       test ! -d $(libdir)/gnu-foo
+       test   -f $(libexecdir)/foo/gnu-mu
+       test   -x $(libexecdir)/foo/gnu-mu
+       test ! -d $(libexecdir)/gnu-foo
+
+test-installdirs: installdirs
+       find $(prefix) ;: For debugging.
+       test   -d $(datadir)/foo
+       test ! -d $(datadir)/gnu-foo
+       test   -d $(libdir)/foo
+       test ! -d $(libdir)/gnu-foo
+       test   -d $(libexecdir)/foo
+       test ! -d $(libexecdir)/gnu-foo
+END
+
+cat > libzap.c <<'END'
+int zap (void)
+{
+  return 0;
+}
+END
+
+echo 'To be or not to be ...' > bar.txt
+
+cat > foo <<'END'
+#!/bin/sh
+exit 0
+END
+cp foo mu
+chmod a+x foo mu
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure --program-prefix=gnu- --prefix "`pwd`/inst"
+
+$MAKE test-install
+
+$MAKE uninstall
+test `find inst -type f -print | wc -l` = 0
+
+# Opportunistically test for installdirs.
+rm -rf inst
+$MAKE test-installdirs
+
+:
diff --git a/t/txinfo-no-clutter.sh b/t/txinfo-no-clutter.sh
new file mode 100755 (executable)
index 0000000..ae5e9f2
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The pdf, ps and dvi targets shouldn't let clutter in the build directory.
+# Related to automake bug#11146.
+
+required='makeinfo tex texi2dvi-o dvips'
+. ./defs || Exit 1
+
+mkdir sub
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+all-local: ps pdf dvi html
+info_TEXINFOS = foo.texi sub/bar.texi
+END
+
+cat > foo.texi << 'END'
+\input texinfo
+@setfilename foo.info
+@settitle foo
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+cat > sub/bar.texi << 'END'
+\input texinfo
+@setfilename bar.info
+@settitle bar
+@node Top
+Hello walls.
+@include version2.texi
+@bye
+END
+
+cat > baz.texi << 'END'
+\input texinfo
+@setfilename baz.info
+@settitle baz
+@node Top
+Hello walls.
+@bye
+END
+
+cat > baz.texi << 'END'
+\input texinfo
+@setfilename baz.info
+@settitle baz
+@defindex au
+@defindex sa
+@defindex sb
+@synindex sa sb
+@node Top
+Hello walls.
+@cindex foo
+foo
+@pindex bar
+bar
+@auindex baz
+baz
+@saindex sa
+sa
+@sbindex sb
+sb
+@bye
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure
+
+# Try one by one, to ensure later targets don't involuntarily
+# clean up potential cruft left by earlier ones.
+for fmt in info pdf ps dvi html all; do
+  $MAKE $fmt
+  ls -l . sub # For debugging.
+  ls -d foo* baz* sub/bar* > lst
+  $EGREP -v '^(foo|sub/bar|baz)\.(texi|dvi|ps|pdf|html|info)$' lst && Exit 1
+  $MAKE clean
+done
+
+$MAKE distcheck
+
+:
diff --git a/t/txinfo-unrecognized-extension.sh b/t/txinfo-unrecognized-extension.sh
new file mode 100755 (executable)
index 0000000..2516580
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that automake complains properly when the files with unrecognized
+# extensions are passed to the TEXINFOS primary.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = foobar.foo bazquux.tex zardoz.c
+END
+
+echo '@setfilename foobar.info'  > foobar.foo
+echo '@setfilename bazquux.info' > bazquux.tex
+echo '@setfilename zardoz.info'  > zardoz.c
+: > texinfo.tex
+
+$ACLOCAL
+AUTOMAKE_fails
+
+for x in 'foobar\.foo' 'bazquux\.tex' 'zardoz\.c'; do
+  grep "^Makefile\\.am:.* texinfo file .*$x.* unrecognized extension" stderr
+done
+
+:
diff --git a/t/txinfo.sh b/t/txinfo.sh
new file mode 100755 (executable)
index 0000000..e6667cb
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to ensure texinfo.tex is included in distribution.  Bug report by
+# Jim Meyering.
+
+required=makeinfo
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+.PHONY: test1 test2
+test1:
+       @echo DISTFILES = $(DISTFILES)
+       echo ' ' $(DISTFILES) ' ' | grep '[ /]texinfo\.tex '
+test2: distdir
+       ls -l $(distdir)
+       test -f $(distdir)/texinfo.tex
+END
+
+echo '@setfilename textutils.info' > textutils.texi
+: > texinfo.tex
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE test1 test2
+
+:
diff --git a/t/txinfo10.sh b/t/txinfo10.sh
new file mode 100755 (executable)
index 0000000..6908ab8
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure dvi target recurses into subdir.
+# Reported by Pavel Roskin.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+END
+
+mkdir sub
+cat > sub/Makefile.am << 'END'
+info_TEXINFOS = maude.texi
+END
+
+echo '@setfilename maude.info' > sub/maude.texi
+: > sub/texinfo.tex
+
+$ACLOCAL
+$AUTOMAKE
+
+grep dvi-recursive Makefile.in
+grep '[^-]info-recursive' Makefile.in
+grep '[^n]install-info-recursive' Makefile.in
diff --git a/t/txinfo13.sh b/t/txinfo13.sh
new file mode 100755 (executable)
index 0000000..77f9af7
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for subdir Texinfo (PR/343).
+# Also make sure we do not distribute too much foo.info* files (Report
+# from Vincent Lefevre).
+
+required='makeinfo tex texi2dvi-o'
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = subdir/main.texi
+subdir_main_TEXINFOS = subdir/inc.texi
+
+installcheck-local:
+       test -f "$(infodir)/main.info"
+check-local:
+       test ! -f $(srcdir)/subdir/main.info.bak
+END
+
+mkdir subdir
+
+cat > subdir/main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@include inc.texi
+@bye
+END
+
+cat > subdir/inc.texi << 'END'
+I'm included.
+END
+
+touch subdir/main.info.bak
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+$MAKE distcheck
+test -f ../subdir/main.info
+test ! -f subdir/main.info
+test -f ../subdir/main.info.bak
diff --git a/t/txinfo16.sh b/t/txinfo16.sh
new file mode 100755 (executable)
index 0000000..173a87a
--- /dev/null
@@ -0,0 +1,91 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that info files are normally built in $(srcdir),
+# not in $(builddir).
+
+required='makeinfo tex texi2dvi'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = main.texi
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+$MAKE
+test -f ../main.info
+test ! -f main.info
+test -f ../stamp-vti
+test ! -f stamp-vti
+test -f ../version.texi
+test ! -f version.texi
+
+cd ..
+rm -rf build make.info* stamp-vti version.texi
+./configure
+$MAKE
+test -f main.info
+
+# Make sure stamp-vti is older that version.texi.
+# (A common situation in a real tree.)
+# This is needed to test the "subtle" issue described below.
+test -f stamp-vti
+test -f version.texi
+$sleep
+touch stamp-vti
+
+$MAKE distclean
+test -f stamp-vti
+test -f version.texi
+
+mkdir build
+cd build
+../configure
+$MAKE
+# main.info should not be rebuilt in the current directory, since
+# it's up-to-date in $(srcdir).
+# This can be caused by a subtle issue related to VPATH handling
+# of version.texi (see also the comment in texi-vers.am): because
+# stamp-vti is newer than version.texi, the 'version.texi: stamp-vti'
+# rule is always triggered.  Still that's not a reason for 'make'
+# to think 'version.texi' has been created...
+test ! -f main.info
+$MAKE dvi
+test -f main.dvi
+
+$MAKE distcheck
+
+:
diff --git a/t/txinfo17.sh b/t/txinfo17.sh
new file mode 100755 (executable)
index 0000000..1de7e9a
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Automake uses the _first_ @setfilname it sees.
+# Report from Karl Berry.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = texinfo.texi
+END
+
+cat > texinfo.texi << 'END'
+@setfilename texinfo
+...
+@verbatim
+@setfilename example.info
+@end verbatim
+...
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+grep 'example' Makefile.in && Exit 1
+grep 'texinfo:' Makefile.in
diff --git a/t/txinfo19.sh b/t/txinfo19.sh
new file mode 100755 (executable)
index 0000000..63417f8
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test support for DJGPP's .iNN info files.
+
+required=makeinfo
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = main.texi
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@bye
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure "--infodir=`pwd`/_inst"
+$MAKE
+
+# Make sure .iNN files are installed.
+: > main.i1
+: > main.i21
+$MAKE install
+test -f _inst/main.i1
+test -f _inst/main.i21
+
+# They should be uninstalled too.
+$MAKE uninstall
+test ! -f _inst/main.i1
+test ! -f _inst/main.i21
+
+# Make sure rebuild rules erase old .iNN files when they run makeinfo.
+$sleep
+touch main.texi
+test -f main.i1
+test -f main.i21
+$MAKE
+test ! -f main.i1
+test ! -f main.i21
+
+# Finally, we also want them erased by maintainer-clean.
+: > main.i7
+: > main.i39
+$MAKE maintainer-clean
+test ! -f main.i7
+test ! -f main.i39
+
+:
diff --git a/t/txinfo2.sh b/t/txinfo2.sh
new file mode 100755 (executable)
index 0000000..0daebd9
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to ensure that a ".info~" file doesn't end up in the
+# distribution.  Bug report from Greg McGary.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+.PHONY: test
+test:
+       @echo DISTFILES = $(DISTFILES)
+       case '$(DISTFILES)' in *'~'*) exit 1;; *) exit 0;; esac
+END
+
+: > texinfo.tex
+echo '@setfilename textutils.info' > textutils.texi
+: > textutils.info~
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE test
+
+:
diff --git a/t/txinfo20.sh b/t/txinfo20.sh
new file mode 100755 (executable)
index 0000000..5c07880
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure info files survive makeinfo errors.
+
+required=makeinfo
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = main.texi sub/main.texi
+END
+
+mkdir sub
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main
+@settitle main
+@node Top
+Hello walls.
+@bye
+END
+
+cp main.texi sub/main.texi
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure
+$MAKE
+
+# Feign more info files.
+: > main-1
+: > sub/main-1
+
+# Break main.texi.
+$sleep
+cp main.texi main.old
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main
+@settitle main
+@node Top
+@unknown_macro{Hello walls.}
+@bye
+END
+
+# makeinfo will bail out, but we should conserve the old info files.
+$MAKE && Exit 1
+test -f main
+test -f main-1
+
+# Restore main.texi, and break sub/main.texi.
+cp main.texi sub/main.texi
+mv main.old main.texi
+$MAKE && Exit 1
+test -f main
+test ! -f main-1
+test -f sub/main
+test -f sub/main-1
diff --git a/t/txinfo21.sh b/t/txinfo21.sh
new file mode 100755 (executable)
index 0000000..93543a7
--- /dev/null
@@ -0,0 +1,176 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test support for building HTML documentation, and the many
+# install-DOC flavors.
+
+required='makeinfo-html tex texi2dvi'
+. ./defs || Exit 1
+
+cat >>configure.ac <<\EOF
+AC_CONFIG_FILES([rec/Makefile])
+
+# At the time of writing, Autoconf does not supplies any of these
+# definitions (and those below are purposely not those of the standard).
+AC_SUBST([dvidir],  ['${datadir}/${PACKAGE}/dvi'])
+AC_SUBST([htmldir], ['${datadir}/${PACKAGE}/html'])
+AC_SUBST([pdfdir],  ['${datadir}/${PACKAGE}/pdf'])
+AC_SUBST([psdir],   ['${datadir}/${PACKAGE}/ps'])
+
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'END'
+SUBDIRS = rec
+info_TEXINFOS = main.texi sub/main2.texi
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@bye
+END
+
+mkdir sub
+cat > sub/main2.texi << 'END'
+\input texinfo
+@setfilename main2.info
+@settitle main2
+@node Top
+Hello walls.
+@bye
+END
+
+mkdir rec
+cat > rec/main3.texi << 'END'
+\input texinfo
+@setfilename main3.info
+@settitle main3
+@node Top
+Hello walls.
+@bye
+END
+
+cat > rec/Makefile.am << 'END'
+info_TEXINFOS = main3.texi
+
+install-pdf-local:
+       @$(MKDIR_P) "$(pdfdir)"
+       :> "$(pdfdir)/hello"
+uninstall-local:
+       rm -f "$(pdfdir)/hello"
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure
+
+$MAKE
+
+$sleep
+# Test production of split-per-node HTML.
+$MAKE html
+test -d main.html
+test -d sub/main2.html
+test -d rec/main3.html
+
+# Rebuilding main.html should cause its timestamp to be updated.
+is_newest main.html main.texi
+$sleep
+touch main.texi
+$MAKE html
+is_newest main.html main.texi
+
+$MAKE clean
+test ! -d main.html
+test ! -d sub/main2.html
+test ! -d rec/main3.html
+
+# Test production of a single HTML file.
+MAKEINFOFLAGS=--no-split $MAKE -e html
+test -f main.html
+test -f sub/main2.html
+test -f rec/main3.html
+$MAKE clean
+test ! -f main.html
+test ! -f sub/main2.html
+test ! -f rec/main3.html
+
+# Make sure AM_MAKEINFOHTMLFLAGS is supported, and override AM_MAKEINFO.
+cat >>Makefile.am <<\EOF
+AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
+AM_MAKEINFOFLAGS = --unsupported-option
+EOF
+$AUTOMAKE
+./configure --prefix "`pwd`"
+$MAKE html
+test -f main.html
+test -f sub/main2.html
+test -d rec/main3.html
+$MAKE clean
+test ! -f main.html
+test ! -f sub/main2.html
+test ! -d rec/main3.html
+
+$MAKE install-html
+test -f share/$me/html/main.html
+test -f share/$me/html/main2.html
+test -d share/$me/html/main3.html
+$MAKE uninstall
+test ! -f share/$me/html/main.html
+test ! -f share/$me/html/main2.html
+test ! -d share/$me/html/main3.html
+
+$MAKE install-dvi
+test -f share/$me/dvi/main.dvi
+test -f share/$me/dvi/main2.dvi
+test -f share/$me/dvi/main3.dvi
+$MAKE uninstall
+test ! -f share/$me/dvi/main.dvi
+test ! -f share/$me/dvi/main2.dvi
+test ! -f share/$me/dvi/main3.dvi
+
+dvips --help || skip_ "dvips is missing"
+
+$MAKE install-ps
+test -f share/$me/ps/main.ps
+test -f share/$me/ps/main2.ps
+test -f share/$me/ps/main3.ps
+$MAKE uninstall
+test ! -f share/$me/ps/main.ps
+test ! -f share/$me/ps/main2.ps
+test ! -f share/$me/ps/main3.ps
+
+pdfetex --help || pdftex --help \
+  || skip_ "pdftex and pdfetex are both missing"
+
+$MAKE install-pdf
+test -f share/$me/pdf/main.pdf
+test -f share/$me/pdf/main2.pdf
+test -f share/$me/pdf/main3.pdf
+test -f share/$me/pdf/hello
+$MAKE uninstall
+test ! -f share/$me/pdf/main.pdf
+test ! -f share/$me/pdf/main2.pdf
+test ! -f share/$me/pdf/main3.pdf
+test ! -f share/$me/pdf/hello
+
+:
diff --git a/t/txinfo22.sh b/t/txinfo22.sh
new file mode 100755 (executable)
index 0000000..c33898b
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the user can override TEXINFO_TEX.
+# Also make sure TEXINFO_TEX is not distributed.
+# Report from Tom Tromey.
+
+required='makeinfo tex texi2dvi'
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([aux1])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEXINFO_TEX = $(srcdir)/tex/texinfo.tex
+info_TEXINFOS = main.texi
+sure_it_exists:
+       test -f $(TEXINFO_TEX)
+sure_it_is_not_distributed: distdir
+       test ! -f $(distdir)/tex/texinfo.tex
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@bye
+END
+
+mkdir aux1
+mkdir tex
+cp "$am_pkgvdatadir/texinfo.tex" tex
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+test ! -f texinfo.tex
+test ! -f aux1/texinfo.tex
+test -f tex/texinfo.tex
+
+./configure
+
+$MAKE sure_it_exists
+$MAKE distcheck
+$MAKE sure_it_is_not_distributed
+
+:
diff --git a/t/txinfo23.sh b/t/txinfo23.sh
new file mode 100755 (executable)
index 0000000..e5c1761
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that info files are built in builddir when needed.
+# Test with subdir Texinfo.
+# (Similar to txinfo13.test, plus DISTCLEANFILES).
+# (See also txinfo24.test and txinfo25.test).
+
+required='makeinfo tex texi2dvi-o'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+DISTCLEANFILES = subdir/*.info*
+info_TEXINFOS = subdir/main.texi
+subdir_main_TEXINFOS = subdir/inc.texi
+
+installcheck-local:
+       test -f "$(infodir)/main.info"
+END
+
+mkdir subdir
+
+cat > subdir/main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@include inc.texi
+@bye
+END
+
+cat > subdir/inc.texi << 'END'
+I'm included.
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+$MAKE distcheck
+test -f subdir/main.info
+test ! -f ../subdir/main.info
+
+:
diff --git a/t/txinfo24.sh b/t/txinfo24.sh
new file mode 100755 (executable)
index 0000000..709cee7
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that info files are built in builddir when needed.
+# (Similar to txinfo16.test, plus CLEANFILES).
+# (See also txinfo23.test and txinfo25.test).
+
+required='makeinfo tex texi2dvi-o'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+CLEANFILES = main.info
+info_TEXINFOS = main.texi
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+$MAKE
+test ! -f ../main.info
+test -f main.info
+
+cd ..
+rm -rf build
+./configure
+$MAKE
+test -f main.info
+
+# Make sure stamp-vti is older that version.texi.
+# (A common situation in a real tree).
+test -f stamp-vti
+test -f version.texi
+$sleep
+touch stamp-vti
+
+$MAKE distclean
+test -f stamp-vti
+test -f version.texi
+
+mkdir build
+cd build
+../configure
+$MAKE
+# main.info should be rebuilt in the current directory.
+test -f main.info
+test ! -f ../main.info
+$MAKE dvi
+test -f main.dvi
+
+$MAKE distcheck
+
+:
diff --git a/t/txinfo25.sh b/t/txinfo25.sh
new file mode 100755 (executable)
index 0000000..7aa66ae
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that info files are built in builddir and in srcdir can safely
+# co-exist.  This setup is obtained by having two info files, only one
+# of which being cleaned.
+# (Similar to txinfo16.test, plus CLEANFILES).
+# (See also txinfo23.test and txinfo24.test).
+
+required='makeinfo tex texi2dvi-o'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+CLEANFILES = [a-m]*.info
+info_TEXINFOS = main.texi other.texi
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+cat > other.texi << 'END'
+\input texinfo
+@setfilename other.info
+@settitle other
+@node Top
+Hello walls.
+@include version2.texi
+@bye
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+$MAKE
+test -f main.info
+test ! -f ../main.info
+test ! -f other.info
+test -f ../other.info
+
+cd ..
+rm -rf build
+./configure
+$MAKE
+test -f main.info
+test -f other.info
+
+# Make sure stamp-vti is older that version.texi.
+# (A common situation in a real tree).
+# This is needed to test the "subtle" issue described below.
+test -f stamp-vti
+test -f version.texi
+test -f stamp-1
+test -f version2.texi
+$sleep
+touch stamp-vti
+touch stamp-1
+
+$MAKE distclean
+test -f stamp-vti
+test -f stamp-1
+test -f version.texi
+test -f version2.texi
+
+mkdir build
+cd build
+../configure
+$MAKE
+# other.info should not be rebuilt in the current directory, since
+# it's up-to-date in $(srcdir).
+# This can be caused by a subtle issue related to VPATH handling
+# of version.texi (see also the comment in texi-vers.am): because
+# stamp-vti is newer than version.texi, the 'version.texi: stamp-vti'
+# rule is always triggered.  Still that's not a reason for 'make'
+# to think 'version.texi' has been created...
+test -f main.info
+test ! -f other.info
+$MAKE dvi
+test -f main.dvi
+test -f other.dvi
+
+$MAKE distcheck
+
+:
diff --git a/t/txinfo26.sh b/t/txinfo26.sh
new file mode 100755 (executable)
index 0000000..e336bba
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure Texinfo installation works when absolute --srcdir is used.
+# PR/408
+
+required='makeinfo'
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = main.texi
+END
+
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure
+$MAKE
+$MAKE distclean
+
+case `pwd` in
+  *\ * | *\    *)
+    skip_ "this test might fail in a directory containing white spaces";;
+esac
+
+mkdir build
+cd build
+../configure "--srcdir=`pwd`/.." "--prefix=`pwd`/_inst" "--infodir=`pwd`/_inst/info"
+$MAKE install
+test -f ../main.info
+test ! -f ./main.info
+test -f _inst/info/main.info
+
+$MAKE uninstall
+test ! -f _inst/info/main.info
+test -f ../main.info
+
+# Multiple uninstall should not fail.
+$MAKE uninstall
diff --git a/t/txinfo27.sh b/t/txinfo27.sh
new file mode 100755 (executable)
index 0000000..131300a
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure install-info works even if no-installinfo is given.
+
+required='makeinfo'
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = main.texi
+AUTOMAKE_OPTIONS = no-installinfo
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure "--prefix=`pwd`/inst" "--infodir=`pwd`/inst/info"
+$MAKE install-info
+test -f inst/info/main.info
diff --git a/t/txinfo28.sh b/t/txinfo28.sh
new file mode 100755 (executable)
index 0000000..97b36d5
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that info files are built in builddir when needed.
+# Similar to txinfo24.test, but obfuscating filenames with variable
+# references.
+# Report from Ralf Corsepius.
+
+required='makeinfo tex texi2dvi-o'
+. ./defs || Exit 1
+
+# This setting, when honored by GNU ls, used to cause an infinite loop
+# in mdate-sh.
+TIME_STYLE="+%Y-%m-%d %H:%M:%S"
+export TIME_STYLE
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+MA = ma
+IN = in
+PROJ = $(MA)$(IN)
+include fragment.mk
+info_TEXINFOS = ma$(IN).texi
+END
+
+echo 'CLEANFILES = $(PROJ).info' > fragment.mk
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+$MAKE
+test -f main.info
+
+cd ..
+rm -rf build
+./configure
+$MAKE
+test -f main.info
+
+# Make sure stamp-vti is older that version.texi.
+# (A common situation in a real tree).
+test -f stamp-vti
+test -f version.texi
+$sleep
+touch stamp-vti
+
+$MAKE distclean
+test -f stamp-vti
+test -f version.texi
+
+mkdir build
+cd build
+../configure
+$MAKE
+# main.info should be rebuilt in the current directory.
+test -f main.info
+test ! -f ../main.info
+$MAKE dvi
+test -f main.dvi
+
+$MAKE distcheck
diff --git a/t/txinfo29.sh b/t/txinfo29.sh
new file mode 100755 (executable)
index 0000000..a0013d2
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that INFO_DEPS can be overridden.
+# Report from Bruce Korb.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+INFO_DEPS = foo.info
+info_TEXINFOS = bar.texi
+END
+
+echo '@setfilename baz.info' > bar.texi
+
+$ACLOCAL
+AUTOMAKE_fails --add-missing
+grep '^Makefile\.am:1:.*user variable.*INFO_DEPS' stderr
+grep 'overrides Automake variable.*INFO_DEPS' stderr
+
+$AUTOMAKE -Wno-override
+
+# There is only one definition of INFO_DEPS ...
+test 1 = `grep '^INFO_DEPS.*=' Makefile.in | wc -l`
+# ... and it is the right one.
+grep '^INFO_DEPS *= *foo.info *$' Makefile.in
+
+# Likewise with AC_SUBST.
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = bar.texi
+END
+cat >> configure.ac << 'END'
+AC_SUBST([INFO_DEPS])
+END
+rm -rf autom4te.cache # Make sure autoconf sees the configure.ac update.
+AUTOMAKE_fails
+
+grep '^configure\.ac:4:.*user variable.*INFO_DEPS' stderr
+grep 'overrides Automake variable.*INFO_DEPS' stderr
+
+$AUTOMAKE -Wno-override
+
+# There is only one definition of INFO_DEPS ...
+test 1 = `grep '^INFO_DEPS.*=' Makefile.in | wc -l`
+# ... and it is the right one.
+grep '^INFO_DEPS *= *@INFO_DEPS@ *$' Makefile.in
+
+:
diff --git a/t/txinfo3.sh b/t/txinfo3.sh
new file mode 100755 (executable)
index 0000000..88e1bac
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure .info-less @setfilename works.
+
+required='makeinfo tex texi2dvi'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+END
+
+cat > textutils.texi <<EOF
+\input texinfo
+@setfilename textutils
+@settitle main
+@node Top
+Hello walls.
+@bye
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+grep '^INFO_DEPS.*textutils$' Makefile.in
+
+# We should not use single suffix inference rules (with separate
+# dependencies), this confuses Solaris make.
+grep '^\.texi:$' Makefile.in && Exit 1
+grep 'textutils: *textutils\.texi' Makefile.in
+
+./configure
+$MAKE distcheck
+
+:
diff --git a/t/txinfo30.sh b/t/txinfo30.sh
new file mode 100755 (executable)
index 0000000..09ebd5e
--- /dev/null
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure 'missing texinfo' does not create empty files.
+# Report from Bob Proulx.
+
+. ./defs || Exit 1
+
+echo info_TEXINFOS = bar.texi >Makefile.am
+echo grepme >bar.info
+$sleep
+cat >bar.texi <<EOF
+@setfilename bar.info
+EOF
+
+echo AC_OUTPUT >>configure.ac
+
+cat >makeinfo <<\EOF
+#!/bin/sh
+# This script
+# 1. fails so 'missing' can take over
+# 2. does not understand '--version' so 'missing' thinks 'makeinfo' isn't
+#    installed
+exec false
+EOF
+
+chmod +x makeinfo
+
+PATH=`pwd`$PATH_SEPARATOR$PATH
+export PATH
+
+# Otherwise configure might pick up a working makeinfo from the
+# environment.  Seen in automake bug#10866.
+unset MAKEINFO || :
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+$MAKE
+grep grepme bar.info
+test -f bar.info
+
+# We should not create a missing bar.info.
+rm -f bar.info
+$MAKE && Exit 1
+test ! -f bar.info
+
+:
diff --git a/t/txinfo31.sh b/t/txinfo31.sh
new file mode 100755 (executable)
index 0000000..191bca4
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure file extensions are matched correctly.
+# Report from Eric Dorland.
+
+. ./defs || Exit 1
+
+echo info_TEXINFOS = bar.texi >Makefile.am
+cat >bar.texi <<EOF
+@setfilename bar-1.9.info
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
diff --git a/t/txinfo32.sh b/t/txinfo32.sh
new file mode 100755 (executable)
index 0000000..7fa7938
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the documentation targets work as required with BSD make,
+# even in the presence of subdirs (requires presence of default *-am rules).
+
+. ./defs || Exit 1
+
+mkdir sub
+cat >>configure.ac <<'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+cat >Makefile.am <<'END'
+SUBDIRS = sub
+END
+: >sub/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure "--prefix=`pwd`/inst"
+$MAKE html dvi ps pdf info \
+      install-html install-dvi install-ps install-pdf install-info \
+      install-man install-data install-exec install uninstall
+
+Exit 0
diff --git a/t/txinfo33.sh b/t/txinfo33.sh
new file mode 100755 (executable)
index 0000000..4bdd767
--- /dev/null
@@ -0,0 +1,126 @@
+#! /bin/sh
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# DVIS, PDFS, PSS, HTMLS should not be cleaned upon 'mostlyclean'.
+# Similar to txinfo25.test.
+
+required='makeinfo tex texi2dvi-o dvips'
+. ./defs || Exit 1
+
+mkdir sub
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = main.texi other.texi sub/another.texi
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+cat > other.texi << 'END'
+\input texinfo
+@setfilename other.info
+@settitle other
+@node Top
+Hello walls.
+@include version2.texi
+@bye
+END
+
+cat > sub/another.texi << 'END'
+\input texinfo
+@setfilename another.info
+@settitle another
+@node Top
+Hello walls.
+@include version3.texi
+@bye
+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/t/txinfo4.sh b/t/txinfo4.sh
new file mode 100755 (executable)
index 0000000..f92f9c1
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure non-empty, non-info suffixes are diagnosed.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+END
+
+echo '@setfilename textutils.frob' > textutils.texi
+: > texinfo.tex
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'textutils\.texi:1:.*textutils\.frob.*extension' stderr
+
+:
diff --git a/t/txinfo5.sh b/t/txinfo5.sh
new file mode 100755 (executable)
index 0000000..d515617
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that texinfo.tex is not required by --cygnus.
+# Also check that TEXINFOS + cygnus work without requiring the
+# '-Wno-override' option.
+# See also sister test txinfo5b.test.
+# Report from Ian Taylor.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_MAINTAINER_MODE
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = ian.texi
+END
+
+echo '@setfilename ian.info' > ian.texi
+
+$ACLOCAL
+$AUTOMAKE --cygnus -Wno-obsolete
+
+:
diff --git a/t/txinfo5b.sh b/t/txinfo5b.sh
new file mode 100755 (executable)
index 0000000..a99f607
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that texinfo.tex is not required by --cygnus.
+# See also sister test txinfo5.test.
+# Report from Ian Taylor.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_MAINTAINER_MODE
+END
+
+cat > Makefile.am << 'END'
+# Disable 'override' warnings to work around an unrelated
+# texi+cygnus bug.
+# Disable obsolete warnings because the 'cygnus' mode is now deprecated.
+AUTOMAKE_OPTIONS = -Wno-override -Wno-obsolete
+info_TEXINFOS = ian.texi
+END
+
+echo '@setfilename ian.info' > ian.texi
+
+$ACLOCAL
+$AUTOMAKE --cygnus
+$AUTOMAKE -a --cygnus
+test ! -f texinfo.tex
+
+:
diff --git a/t/txinfo6.sh b/t/txinfo6.sh
new file mode 100755 (executable)
index 0000000..b289efe
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure '.txi' extension works.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = foo.txi
+END
+
+echo '@setfilename foo.info' > foo.txi
+: > texinfo.tex
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^\.txi\.info: *$' Makefile.in
+
+:
diff --git a/t/txinfo7.sh b/t/txinfo7.sh
new file mode 100755 (executable)
index 0000000..2a5dc9d
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure texinfo.tex correctly installed by -a.  Bug report
+# by Per Cederqvist.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+END
+
+echo '@setfilename textutils.info' > textutils.texi
+
+$ACLOCAL
+$AUTOMAKE -a
+
+test -f texinfo.tex
+
+:
diff --git a/t/txinfo8.sh b/t/txinfo8.sh
new file mode 100755 (executable)
index 0000000..4b186bc
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure texinfo.tex is correctly installed and disted by
+# -a when we're using AC_CONFIG_AUX_DIR.  Bug report by by Per
+# Cederqvist.
+
+. ./defs || Exit 1
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([auxdir])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+.PHONY: test1 test2
+test1:
+       @echo DISTFILES = $(DISTFILES)
+       echo ' ' $(DISTFILES) ' ' | grep '[ /]auxdir/texinfo\.tex '
+test2: distdir
+       ls -l $(distdir)/*
+       test -f $(distdir)/auxdir/texinfo.tex
+END
+
+echo '@setfilename textutils.info' > textutils.texi
+
+mkdir auxdir
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+test -f auxdir/texinfo.tex
+
+./configure
+
+# Create textutils.info by hand, so that we don't have to require
+# makeinfo.  Also ensure it's really newer than textutils.texi, so
+# that make won't try to re-create it.
+$sleep
+: > textutils.info
+
+$MAKE test1 test2
+
+:
diff --git a/t/txinfo9.sh b/t/txinfo9.sh
new file mode 100755 (executable)
index 0000000..eb2cbdc
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we only create texinfo-related targets once.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = maude.texi liver.txi heart.texinfo
+END
+
+echo '@setfilename maude.info' > maude.texi
+echo '@setfilename liver.info' > liver.txi
+echo '@setfilename heart.info' > heart.texinfo
+: > texinfo.tex
+
+$ACLOCAL
+$AUTOMAKE
+
+# These are just examples -- basically for many targets in texinfos.am
+# we only want them to appear once.  But grepping them all would be
+# overkill.
+for t in info dist-info dvi-am install-html uninstall-pdf-am; do
+  $EGREP "(^| )$t*.:" Makefile.in # For debugging.
+  test `$EGREP -c "(^| )$t(:| *.:)" Makefile.in` -eq 1
+done
+
+:
diff --git a/t/uninstall-fail.sh b/t/uninstall-fail.sh
new file mode 100755 (executable)
index 0000000..aee1fb5
--- /dev/null
@@ -0,0 +1,96 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# "make uninstall" complains and errors out on failures.
+
+# FIXME: this test only deal with DATA primary; maybe we need sister
+# tests for other primaries too?  E.g., SCRIPTS, PROGRAMS, LISP, PYTHON,
+# etc...
+
+. ./defs || Exit 1
+
+mkdir d
+: > d/f
+chmod a-w d || skip "cannot make directories unwritable"
+
+# On Solaris 10, if '/bin/rm' is run with the '-f' option, it doesn't
+# print any error message when failing to remove a file (due to e.g.,
+# "Permission denied").  Yikes.  We'll cater to this incompatibility
+# by relaxing a test below if a faulty 'rm' is detected.
+st=0; rm -f d/f 2>stderr || st=$?
+cat stderr >&2
+test $st -gt 0 || skip_ "can delete files from unwritable directories"
+if grep 'rm:' stderr; then
+  rm_f_is_silent_on_error=no
+else
+  rm_f_is_silent_on_error=yes
+fi
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+data_DATA = foobar.txt
+END
+
+: > foobar.txt
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+inst=__inst-dir__
+
+./configure --prefix="`pwd`/$inst"
+
+mkdir $inst $inst/share
+: > $inst/share/foobar.txt
+
+chmod a-w $inst/share
+$MAKE uninstall >output 2>&1 && { cat output; Exit 1; }
+cat output
+if test $rm_f_is_silent_on_error = yes; then
+  : "rm -f" is silent on errors, skip the grepping of make output
+else
+  grep "rm: .*foobar\.txt" output
+fi
+
+chmod a-rwx $inst/share
+(cd $inst/share) && skip_ "cannot make directories fully unreadable"
+
+$MAKE uninstall >output 2>&1 && { cat output; Exit 1; }
+cat output
+#
+# Some shells, like Solaris 10 /bin/sh and /bin/ksh, do not report
+# the name of the 'cd' builtin upon a chdir error:
+#
+#   $ /bin/sh -c 'cd /none'
+#   /bin/sh: /none: does not exist
+#
+# In addition, some shells, like Solaris 10 /usr/xpg4/bin/sh, also print
+# a line number in the error message *if the command contains newlines*:
+#
+#   $ /usr/xpg4/bin/sh -c 'cd unreadable'
+#   /usr/xpg4/bin/sh: unreadable: permission denied
+#   $ /usr/xpg4/bin/sh -c '\
+#   > \
+#   > cd unreadable'
+#   /usr/xpg4/bin/sh[3]: unreadable: permission denied
+#
+$EGREP "(cd|sh)(\[[0-9]*[0-9]\])?: .*$inst/share" output
+
+:
diff --git a/t/uninstall-pr9578.sh b/t/uninstall-pr9578.sh
new file mode 100755 (executable)
index 0000000..1ba6ac7
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check against automake bug#9578: "make uninstall" issued before
+# "make install" or after a mere "make install-data" or a mere
+# "make install-exec" failed spuriously.
+#
+# FIXME: this test only deal with DATA and script primaries; maybe we
+# need sister tests for other primaries too?  E.g., PROGRAMS, LISP,
+# PYTHON, etc...
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_OUTPUT
+END
+
+: > foo
+: > bar
+
+cat > Makefile.am << 'END'
+bin_SCRIPTS = foo
+data_DATA = bar
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure --prefix="`pwd`/inst"
+
+$MAKE uninstall
+test ! -d inst
+
+rm -rf inst
+
+$MAKE install-exec
+test -f inst/bin/foo || Exit 99 # Sanity check.
+$MAKE uninstall
+test ! -f inst/bin/foo
+
+$MAKE install-data
+test -f inst/share/bar || Exit 99 # Sanity check.
+$MAKE uninstall
+test ! -f inst/share/bar
+
+rm -rf inst
+
+$MAKE install-exec
+test -f inst/bin/foo || Exit 99 # Sanity check.
+$MAKE uninstall
+test ! -f inst/bin/foo
+
+:
diff --git a/t/unused.sh b/t/unused.sh
new file mode 100755 (executable)
index 0000000..271273f
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for failing check for unused macros.  From Johan Danielsson.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+MACRO_1
+MACRO_1_2
+MACRO_1_2_3
+END
+
+cat > acinclude.m4 << 'END'
+AC_DEFUN([MACRO_1], echo 1)
+AC_DEFUN([MACRO_1_2], echo 12)
+AC_DEFUN([MACRO_1_2_3], echo 123)
+END
+
+$ACLOCAL 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+test ! -s stderr
diff --git a/t/upc.sh b/t/upc.sh
new file mode 100755 (executable)
index 0000000..320e02f
--- /dev/null
+++ b/t/upc.sh
@@ -0,0 +1,50 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# A simple Hello World for UPC.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AM_PROG_UPC
+AC_OUTPUT
+END
+
+cat > hello.upc << 'END'
+#include <stdio.h>
+#include <upc.h>
+int
+main (void)
+{
+  printf ("Thread %d says, 'Hello.'\n", MYTHREAD);
+  return 0;
+}
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = hello
+hello_SOURCES = hello.upc
+hello_LDADD = -lm
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure || Exit $?
+$MAKE distcheck
+
+:
diff --git a/t/upc2.sh b/t/upc2.sh
new file mode 100755 (executable)
index 0000000..43575d8
--- /dev/null
+++ b/t/upc2.sh
@@ -0,0 +1,31 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that Automake suggests using AM_PROG_UPC if Unified Parallel C
+# sources are used.
+
+. ./defs || Exit 1
+
+echo AC_PROG_CC >>configure.ac
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = hello
+hello_SOURCES = hello.upc
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep AM_PROG_UPC stderr
diff --git a/t/upc3.sh b/t/upc3.sh
new file mode 100755 (executable)
index 0000000..eb02679
--- /dev/null
+++ b/t/upc3.sh
@@ -0,0 +1,65 @@
+#! /bin/sh
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that C and Unified Parallel C link safely.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_UPC
+AC_OUTPUT
+END
+
+cat > hello.upc << 'END'
+#include <stdio.h>
+#include <upc.h>
+#include "message.h"
+int
+main (void)
+{
+  printf ("Thread %d says, '%s'\n", MYTHREAD, message());
+  return 0;
+}
+END
+
+cat > message.h << 'END'
+const char *message (void);
+END
+
+cat > mix.c << 'END'
+#include "message.h"
+const char *
+message (void)
+{
+  return "Hello.";
+}
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = hello
+hello_SOURCES = hello.upc mix.c message.h
+hello_LDADD = -lm
+END
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure || Exit $?
+$MAKE distcheck
+
+:
diff --git a/t/vala-headers.sh b/t/vala-headers.sh
new file mode 100755 (executable)
index 0000000..a091c4c
--- /dev/null
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure compiling Vala code really works with recursive make.
+
+required="pkg-config valac gcc GNUmake"
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_VALAC([0.7.0])
+PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz quux
+
+zardoz_SOURCES = zardoz.vala
+quux_SOURCES = quux.vala
+quux.vala: zardoz.vala
+       sed 's/Zardoz/Quux/' <zardoz.vala >quux.vala
+
+quux_VALAFLAGS = \
+  --header HDR.h \
+  --vapi hello.vapi
+
+zardoz_VALAFLAGS = \
+  -H foo.h \
+  --internal-header foo2.h \
+  --internal-vapi foo3.vapi
+
+AM_CFLAGS = $(GOBJECT_CFLAGS)
+LDADD = $(GOBJECT_LIBS)
+END
+
+headers='HDR.h hello.vapi foo.h foo2.h foo3.vapi'
+
+cat > zardoz.vala << 'END'
+using GLib;
+public class Zardoz {
+  public static void main () {
+    stdout.printf ("Zardoz!\n");
+  }
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found"
+
+./configure
+$MAKE
+
+# Test rebuild rules.
+
+for h in $headers; do
+  rm -f $h
+  $MAKE $h
+  test -f $h
+done
+
+rm -f $headers
+$MAKE $headers
+for h in $headers; do test -f $h; done
+
+$MAKE distcheck
+
+$MAKE maintainer-clean
+for h in $headers; do test ! -f $h; done
+
+:
diff --git a/t/vala-libs.sh b/t/vala-libs.sh
new file mode 100755 (executable)
index 0000000..00befdd
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Building libraries (libtool and static) from Vala sources.
+# And use of vapi files to call C code from Vala.
+
+required="valac cc pkg-config libtoolize GNUmake"
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AM_PROG_VALAC([0.7.3])
+PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LIBRARIES = libmu.a
+lib_LTLIBRARIES = src/libzardoz.la
+libmu_a_SOURCES = mu.vala mu2.c mu.vapi mu2.h
+libmu_a_CPPFLAGS = -DOKOKIMDEFINED=1
+libmu_a_VALAFLAGS = --profile=posix --vapidir=$(srcdir)
+AM_CFLAGS = $(GOBJECT_CFLAGS)
+src_libzardoz_la_LIBADD = $(GOBJECT_LIBS)
+src_libzardoz_la_SOURCES = src/zardoz-foo.vala src/zardoz-bar.vala
+src/zardoz-bar.vala: src/zardoz-foo.vala
+       sed 's/Foo/Bar/g' $< >$@
+END
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found"
+
+./configure
+
+cat > mu2.c << 'END'
+#include "mu2.h"
+int mu2 (void)
+{
+  return OKOKIMDEFINED;
+}
+END
+
+cat > mu2.h << 'END'
+int mu2 (void);
+END
+
+cat > mu.vapi <<'END'
+[CCode (cheader_filename = "mu2.h", cname = "mu2")]
+public int c_mu2 ();
+END
+
+cat > mu.vala << 'END'
+int main ()
+{
+  stdout.printf ("mumumu\n");
+  return c_mu2 ();
+}
+END
+
+mkdir src
+cat > src/zardoz-foo.vala << 'END'
+using GLib;
+public class Foo {
+  public static void zap () {
+    stdout.printf ("FooFooFoo!\n");
+  }
+}
+END
+
+$MAKE
+test -f libmu.a
+test -f src/libzardoz.la
+$FGREP "mumumu" mu.c
+$FGREP "FooFooFoo" src/zardoz-foo.c
+$FGREP "BarBarBar" src/zardoz-bar.c
+test -f libmu_a_vala.stamp
+test -f src_libzardoz_la_vala.stamp
+
+$MAKE distcheck
+
+:
diff --git a/t/vala-mix.sh b/t/vala-mix.sh
new file mode 100755 (executable)
index 0000000..7e04b60
--- /dev/null
@@ -0,0 +1,124 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Vala sources and C sources in the same program.  Functional test.
+
+required='valac cc GNUmake'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_VALAC([0.7.3])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz mu baz
+AM_VALAFLAGS = --profile=posix
+zardoz_SOURCES = foo.vala bar.c
+mu_SOURCES = 1.vala 2.c
+mu_VALAFLAGS = $(AM_VALAFLAGS) --main=run
+mu_CFLAGS = -DHAVE_MU
+baz_SOURCES = baz.c
+END
+
+if cross_compiling; then :; else
+  unindent >> Makefile.am <<'END'
+    check-local:
+       ./zardoz
+       ./mu
+       ./zardoz | grep "foo is alive"
+       ./mu | grep "Howdy, World!"
+END
+fi
+
+cat > foo.vala <<'END'
+int main ()
+{
+  stdout.printf ("foo is alive\n");
+  return 0;
+}
+END
+
+echo 'extern int i = 0;' > bar.c
+
+cat > 1.vala <<'END'
+int run ()
+{
+  stdout.printf ("Howdy, World!\n");
+  return 0;
+}
+END
+
+cat > 2.c <<'END'
+#ifdef HAVE_MU
+int all_is_ok = 1;
+#else
+#error "HAVE_MU no defined"
+chocke me
+#endif
+END
+
+# For automake bug#11229.
+cat > baz.c <<'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+./configure
+
+$MAKE all
+ls -l # For debugging.
+$MAKE check
+
+have_generated_files ()
+{
+  test -f mu_vala.stamp
+  test -f zardoz_vala.stamp
+  test -f foo.c
+  test -f 1.c
+}
+
+# Our vala-related rules must create stamp files and intermediate
+# C files.
+have_generated_files
+
+# Remake rules are not uselessly triggered.
+$MAKE -q
+$MAKE -n | $FGREP vala.stamp && Exit 1
+
+# Check the distribution.
+$MAKE distcheck
+
+# Stamp files and intermediate C files should *not* be removed
+# by "make clean".
+$MAKE clean
+have_generated_files
+
+# But stamp files should be removed by "maintainer-clean" (the
+# behaviour w.r.t. intermediate C files is still unclear, and
+# better left undefined for the moment).
+$MAKE maintainer-clean
+ls *vala*.stamp | grep . && Exit 1
+
+:
diff --git a/t/vala-mix2.sh b/t/vala-mix2.sh
new file mode 100755 (executable)
index 0000000..992c41f
--- /dev/null
@@ -0,0 +1,120 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Vala sources, C and C++ sources and C and C++ headers in the same
+# program.  Functional test.  See automake bug#10894.
+
+required='valac cc c++ GNUmake'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_VALAC([0.7.3])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+AM_VALAFLAGS = --profile=posix
+zardoz_SOURCES = zardoz.vala foo.h bar.c baz.c zen.hh master.cxx
+END
+
+cat > zardoz.vala <<'END'
+int main ()
+{
+  stdout.printf ("foo is alive\n");
+  return 0;
+}
+END
+
+cat > foo.h <<'END'
+int foo;
+int bar (void);
+int baz (void);
+END
+
+cat > bar.c <<'END'
+#include "foo.h"
+int bar (void) { return foo + baz (); }
+END
+
+cat > baz.c <<'END'
+#include "foo.h"
+extern int foo = 0;
+int baz (void) { return 0; }
+END
+
+cat > zen.hh <<'END'
+#include <iostream>
+END
+
+cat > master.cxx <<'END'
+#include "zen.hh"
+void chatty (void) { std::cout << "Hello, stranger!\n"; }
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+# Do not reject slower dependency extractors.
+./configure --enable-dependency-tracking
+
+$MAKE all
+ls -l # For debugging.
+
+have_generated_files ()
+{
+  test -f zardoz_vala.stamp
+  test -f zardoz.c
+}
+
+# Our vala-related rules must create stamp files and intermediate
+# C files.
+have_generated_files
+
+# Remake rules are not uselessly triggered.
+$MAKE -q
+$MAKE -n | $FGREP vala.stamp && Exit 1
+
+# But are triggered when they should.
+for file in zardoz.vala foo.h bar.c baz.c zen.hh master.cxx; do
+  $sleep
+  echo '& choke me !' >> $file
+  $MAKE && Exit 1
+  $sleep
+  sed '$d' $file > t
+  mv -f t $file
+  $MAKE
+done
+
+# Check the distribution.
+$MAKE distcheck
+
+# Stamp files and intermediate C files should *not* be removed
+# by "make clean".
+$MAKE clean
+ls -l # For debugging.
+have_generated_files
+
+# But stamp files should be removed by "maintainer-clean" (the
+# behaviour w.r.t. intermediate C files is still unclear, and
+# better left undefined for the moment).
+$MAKE maintainer-clean
+ls *vala*.stamp | grep . && Exit 1
+
+:
diff --git a/t/vala-parallel.sh b/t/vala-parallel.sh
new file mode 100755 (executable)
index 0000000..8b6aff5
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Vala support with parallel make.
+
+required='valac cc GNUmake'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_VALAC([0.7.3])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+AM_VALAFLAGS = --profile=posix
+zardoz_SOURCES = main.vala 1.vala 2.vala 3.vala 4.vala 5.vala 6.vala
+END
+
+echo 'int main () {' > main.vala
+for i in 1 2 3 4 5 6; do
+  echo "void foo$i () { stdout.printf (\"ok $i\\n\"); }" > $i.vala
+  echo "foo$i ();" >> main.vala
+done
+echo 'return 0; }' >> main.vala
+
+cat main.vala # For debugging.
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+./configure
+
+$MAKE -j3
+ls -l # For debugging.
+for x in main 1 2 3 4 5 6; do test -f $x.c; done
+test -f  zardoz_vala.stamp
+
+$MAKE maintainer-clean -j4
+ls -l # For debugging.
+for x in main 1 2 3 4 5 6; do test ! -f $x.c; done
+test ! -f zardoz_vala.stamp
+
+mkdir build
+cd build
+../configure
+$MAKE -j6
+ls -l . .. # For debugging.
+for x in main 1 2 3 4 5 6; do test -f ../$x.c; done
+test -f ../zardoz_vala.stamp
+
+$MAKE distcheck -j4
+
+$MAKE maintainer-clean -j2
+for x in main 1 2 3 4 5 6; do test ! -f ../$x.c; done
+test ! -f ../zardoz_vala.stamp
+
+:
diff --git a/t/vala-vapi.sh b/t/vala-vapi.sh
new file mode 100755 (executable)
index 0000000..3a92716
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test and that vapi files are correctly handled by Vala support.
+
+required='valac cc GNUmake'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_VALAC([0.7.3])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+AM_VALAFLAGS = --profile=posix
+zardoz_SOURCES = zardoz.vala foo.vapi foo.h
+END
+
+cat > zardoz.vala <<'END'
+int main ()
+{
+    stdout.printf (BARBAR);
+    return 0;
+}
+END
+
+echo '#define BARBAR "Zardoz!\n"' > foo.h
+
+cat > foo.vapi <<'END'
+[CCode (cprefix="", lower_case_cprefix="", cheader_filename="foo.h")]
+public const string BARBAR;
+END
+
+if cross_compiling; then :; else
+  unindent >> Makefile.am <<'END'
+    check-local: test2
+    .PHONY: test1 test2
+    test1:
+       ./zardoz
+       ./zardoz | grep 'Zardoz!'
+    test2:
+       ./zardoz
+       ./zardoz | grep 'Quux!'
+END
+fi
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+./configure --enable-dependency-tracking
+
+$MAKE
+ls -l        # For debugging.
+cat zardoz.c # Likewise.
+grep 'BARBAR' zardoz.c
+cross_compiling || $MAKE test1 || Exit 1
+
+# Simple check on remake rules.
+$sleep
+echo '#define BAZBAZ "Quux!\n"' > foo.h
+sed 's/BARBAR/BAZBAZ/' zardoz.vala > t && mv -f t zardoz.vala || Exit 99
+$MAKE && Exit 1
+sed 's/BARBAR/BAZBAZ/' foo.vapi > t && mv -f t foo.vapi || Exit 99
+$MAKE
+cat zardoz.c # For debugging.
+grep 'BAZBAZ' zardoz.c
+cross_compiling || $MAKE test2 || Exit 1
+
+# Check the distribution.
+$MAKE distcheck
+
+:
diff --git a/t/vala-vpath.sh b/t/vala-vpath.sh
new file mode 100755 (executable)
index 0000000..f2da4af
--- /dev/null
@@ -0,0 +1,91 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure vala support handles from-scratch VPATH builds.
+# See automake bug#8753.
+
+required="cc valac GNUmake"
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_SRCDIR([hello.vala])
+AC_PROG_CC
+AM_PROG_VALAC([0.7.3])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo bar
+AM_VALAFLAGS = --profile=posix
+foo_SOURCES = hello.vala
+bar_VALAFLAGS = $(AM_VALAFLAGS) -H zardoz.h
+bar_SOURCES = goodbye.vala
+END
+
+cat > hello.vala <<'END'
+void main ()
+{
+  stdout.printf ("foofoofoo\n");
+}
+END
+cp hello.vala goodbye.vala
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+mkdir build
+cd build
+../configure
+$MAKE
+test -f ../foo_vala.stamp
+test -f ../bar_vala.stamp
+grep foofoofoo ../hello.c
+test -f ../zardoz.h
+$MAKE distcheck
+
+# Rebuild rules work also in VPATH builds.
+
+cat > ../hello.vala <<'END'
+int main ()
+{
+  stdout.printf ("barbarbar\n");
+  return 0;
+}
+END
+
+$MAKE
+test -f ../foo_vala.stamp
+test -f ../bar_vala.stamp
+grep barbarbar ../hello.c
+
+# Rebuild rules are not uselessly triggered.
+$MAKE -q
+$MAKE -n | grep '\.stamp' && Exit 1
+
+# Cleanup rules work also in VPATH builds.
+$MAKE clean
+test -f ../foo_vala.stamp
+test -f ../bar_vala.stamp
+test -f ../zardoz.h
+test -f ../hello.c
+$MAKE maintainer-clean
+test ! -f ../zardoz.h
+test ! -f ../hello.c
+test ! -f ../foo_vala.stamp
+test ! -f ../bar_vala.stamp
+
+:
diff --git a/t/vala.sh b/t/vala.sh
new file mode 100755 (executable)
index 0000000..71c2ee6
--- /dev/null
+++ b/t/vala.sh
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic "grepping" test on vala support.
+
+. ./defs || Exit 1
+
+# So that we won't require libtool macros.
+cat > acinclude.m4 <<'END'
+AC_DEFUN([AC_PROG_LIBTOOL],
+         [AC_SUBST([LIBTOOL], [:])])
+END
+
+cat >> 'configure.ac' << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AM_PROG_VALAC
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub
+
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.vala
+zardoz_VALAFLAGS = --debug
+
+lib_LTLIBRARIES = libzardoz.la
+libzardoz_la_SOURCES = zardoz-foo.vala zardoz-bar.vala
+END
+
+mkdir sub
+
+cat > sub/Makefile.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = bar.vala baz.vala mu.c zap.cxx
+END
+
+: > ltmain.sh
+: > config.sub
+: > config.guess
+
+$ACLOCAL
+$AUTOMAKE -a
+
+grep '\$(VALAC).* \$(AM_VALAFLAGS) \$(VALAFLAGS) ' Makefile.in
+grep '\$(VALAC).* \$(zardoz_VALAFLAGS) \$(VALAFLAGS) ' Makefile.in
+$FGREP 'am_zardoz_OBJECTS' Makefile.in
+$FGREP 'am_libzardoz_la_OBJECTS' Makefile.in
+$FGREP 'zardoz_vala.stamp:' Makefile.in
+$FGREP 'libzardoz_la_vala.stamp:' Makefile.in
+test `$FGREP -c '.stamp:' Makefile.in` -eq 2
+$FGREP 'zardoz.c' Makefile.in
+$FGREP 'zardoz-foo.c' Makefile.in
+$FGREP 'zardoz-bar.c' Makefile.in
+
+grep '\$(VALAC).* \$(AM_VALAFLAGS) \$(VALAFLAGS) ' sub/Makefile.in
+$FGREP 'foo_VALAFLAGS' sub/Makefile.in && Exit 1
+$FGREP 'am_foo_OBJECTS' sub/Makefile.in
+$FGREP 'bar.c' sub/Makefile.in
+$FGREP 'baz.c' sub/Makefile.in
+$FGREP 'foo_vala.stamp:' sub/Makefile.in
+test `$FGREP -c '.stamp:' sub/Makefile.in` -eq 1
+
+# Check against regression for weird bug due to unescaped '@'
+# characters used in a "..." perl string when writing the vala
+# rules from automake.in.
+grep '\$[0-9][0-9]*t' Makefile.in sub/Makefile.in && Exit 1
+
+:
diff --git a/t/vala2.sh b/t/vala2.sh
new file mode 100755 (executable)
index 0000000..cf52c50
--- /dev/null
@@ -0,0 +1,110 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure compiling Vala code really works with recursive make.
+
+required="pkg-config valac gcc GNUmake"
+. ./defs || Exit 1
+
+mkdir src
+
+cat >> 'configure.ac' << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_VALAC([0.7.0])
+PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
+AC_CONFIG_FILES([src/Makefile])
+AC_OUTPUT
+END
+
+cat > 'Makefile.am' <<'END'
+SUBDIRS = src
+END
+
+cat > 'src/Makefile.am' <<'END'
+bin_PROGRAMS = zardoz
+zardoz_VALAFLAGS = -H zardoz.h
+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
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found"
+
+./configure
+$MAKE
+
+# Test rebuild rules.
+
+rm -f src/zardoz.h
+$MAKE -C src zardoz.h
+test -f src/zardoz.h
+rm -f src/zardoz.c
+$MAKE -C src
+test -f src/zardoz.c
+
+echo am--error > src/zardoz.h
+echo am--error > src/zardoz.c
+$sleep
+touch src/zardoz.vala
+$MAKE
+grep 'am--error' src/zardoz.[ch] && Exit 1
+
+# Check the distribution.
+
+$MAKE distcheck
+$MAKE distclean
+
+# Tru a VPATH setup.
+
+mkdir build
+cd build
+../configure
+$MAKE
+$MAKE distcheck
+
+# Test rebuild rules from builddir.
+
+rm -f ../src/zardoz.h
+$MAKE -C src ../../src/zardoz.h
+test -f ../src/zardoz.h
+
+rm -f ../src/zardoz.c
+$MAKE
+grep 'Zardoz!' ../src/zardoz.c
+
+$sleep
+sed 's/Zardoz!/FooBar!/' ../src/zardoz.vala > t
+mv -f t ../src/zardoz.vala
+$MAKE
+grep 'FooBar!' ../src/zardoz.c
+grep 'Zardoz!' ../src/zardoz.c && Exit 1
+
+:
diff --git a/t/vala3.sh b/t/vala3.sh
new file mode 100755 (executable)
index 0000000..220c76b
--- /dev/null
@@ -0,0 +1,98 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure compiling Vala code really works with non-recursive make.
+
+required="pkg-config valac gcc GNUmake"
+. ./defs || Exit 1
+
+mkdir src
+
+cat >> 'configure.ac' << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_VALAC([0.7.0])
+PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
+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
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found"
+
+./configure
+$MAKE
+test -f src/zardoz.c
+test -f src_zardoz_vala.stamp
+$MAKE distcheck
+$MAKE maintainer-clean
+test ! -f src/zardoz.c
+test ! -f src_zardoz_vala.stamp
+
+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
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure || skip_ "configure failure"
+$MAKE
+$MAKE distcheck
+$MAKE distclean
+mkdir build
+cd build
+../configure
+$MAKE
+$MAKE distcheck
+
+
diff --git a/t/vala4.sh b/t/vala4.sh
new file mode 100755 (executable)
index 0000000..879803f
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test AM_PROG_VALAC.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_VALAC([0.0.1])
+AC_OUTPUT
+END
+
+: > 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
+
+cwd=`pwd`
+
+# Use $cwd instead of `pwd` in the && list below to avoid a bug in
+# the way Solaris/Heirloom Sh handles 'set -e'.
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+# The "|| Exit 1" is required here even if 'set -e' is active,
+# because ./configure migt exit with status 77, and in that case
+# we want to FAIL, not to SKIP.
+./configure "VALAC=$cwd/valac" || Exit 1
+
+sed 's/AM_PROG_VALAC.*/AM_PROG_VALAC([9999.9])/' < configure.ac >t
+mv -f t configure.ac
+$AUTOCONF --force
+st=0; ./configure "VALAC=$cwd/valac" || st=$?
+test $st -eq 77 || Exit 1
+
+sed 's/AM_PROG_VALAC.*/AM_PROG_VALAC([1.2.3])/' < configure.ac >t
+mv -f t configure.ac
+$AUTOCONF --force
+# See comments above for why "|| Exit 1" is needed.
+./configure "VALAC=$cwd/valac" || Exit 1
+
+:
diff --git a/t/vala5.sh b/t/vala5.sh
new file mode 100755 (executable)
index 0000000..6ea2738
--- /dev/null
@@ -0,0 +1,103 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test per-target flags.
+
+required="pkg-config valac gcc GNUmake"
+. ./defs || Exit 1
+
+mkdir src
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_VALAC([0.7.0])
+PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
+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 = xfoo.vala
+bar_SOURCES = xbar.vala
+bar_VALAFLAGS = -D BAR
+bar_CFLAGS = $(GOBJECT_CFLAGS)
+bar_LDADD = $(GOBJECT_LIBS)
+END
+
+cat > src/xfoo.vala <<'END'
+int main ()
+{
+  stdout.printf ("foo\n");
+  return 0;
+}
+END
+
+cat > src/xbar.vala <<'END'
+void main ()
+{
+#if BAR
+  stdout.printf ("bar\n");
+#else
+  stdout.oops_an_invalid_method ();
+#endif
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+grep PKG_CHECK_MODULES configure && skip_ "pkg-config m4 macros not found"
+
+./configure
+$MAKE
+
+if cross_compiling; then :; else
+  ./src/foo
+  ./src/bar
+  test `./src/foo` = foo
+  test `./src/bar` = bar
+fi
+
+# Test clean rules.
+
+cp config.status config.sav
+
+$MAKE clean
+test -f src/xfoo.c
+test -f src/xbar.c
+
+$MAKE distclean
+test -f src/xfoo.c
+test -f src/xbar.c
+
+# Re-create Makefile.
+mv config.sav config.status
+./config.status
+
+$MAKE maintainer-clean
+test ! -f src/xfoo.c
+test ! -f src/xbar.c
+
+:
diff --git a/t/vars.sh b/t/vars.sh
new file mode 100755 (executable)
index 0000000..1e3e91e
--- /dev/null
+++ b/t/vars.sh
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test various variable definitions that include an '=' sign.
+# From Raja R Harinath.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+MY_FLAGS_1=-DABC=345
+MY_FLAGS_2= -DABC=345
+MY_FLAGS_3 =-DABC=345
+MY_FLAGS_4 = -DABC=345
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+for i in 1 2 3 4; do
+  grep "^MY_FLAGS_$i *= *-DABC=345 *$" Makefile.in
+done
+
+:
diff --git a/t/vars3.sh b/t/vars3.sh
new file mode 100755 (executable)
index 0000000..246ea70
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that Automake warns about variables containing spaces
+# and other non-POSIX characters.
+
+. ./defs || Exit 1
+
+cat >Makefile.am <<'EOF'
+L01 = $(shell echo *)
+L02 = $$(not an error)
+L03 = $$(this is)$${ok too}
+L04 = $(nextvariableisbad)$(addsuffix .a, $(A))
+L05 = "$(bad boy)"
+L06 = $(this:is= ok)
+L07 = ${three errors}${on this} $(long line)
+L08$(o u c h): $(wildcard *.c)
+       ${another Error}
+       echo $${ok-this is}
+L11: $(thisis) $(ok)
+       ${here}
+EOF
+
+$ACLOCAL
+# Make sure this warning is print in the 'portability' category.
+$AUTOMAKE --warnings=no-error,none,portability 2>stderr \
+  || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+
+# Lines number are printed in error message.
+# Use them to make sure errors are diagnosed against the right lines.
+
+# No error expected apart from those on these lines.
+grep -v '^Makefile\.am:[145789]:' stderr | grep . && Exit 1
+
+# Now check some individual values.
+grep ':1:.*shell echo' stderr
+grep 'nextvariableisbad' stderr && Exit 1
+grep ':4:.*addsuffix' stderr
+grep ':5:.*bad boy' stderr
+grep ':7:.*three errors' stderr
+grep ':7:.*on this' stderr
+grep ':7:.*long line' stderr
+grep ':8:.*o u c h' stderr
+grep ':8:.*wildcard' stderr
+grep ':9:.*another Error' stderr
+
+$EGREP 'ok|thisis|here' stderr && Exit 1
+
+# None of these errors be diagnosed with '-Wno-portability'.
+$AUTOMAKE -Wno-portability
+
+# Likewise if we add this in the Makefile.am
+# (although this makes some difference internally: AUTOMAKE_OPTIONS is
+# processed far later).
+echo 'AUTOMAKE_OPTIONS = -Wno-portability' >> Makefile.am
+$AUTOMAKE
+
+:
diff --git a/t/vartar.sh b/t/vartar.sh
new file mode 100755 (executable)
index 0000000..ebac14b
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Targets and macros are two different name spaces.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+install = install
+install:
+       $(install) install
+END
+
+$ACLOCAL
+$AUTOMAKE -Wno-override
+
+grep '^install = install$' Makefile.in
+
+cat > target.expected <<'EOF'
+install:
+       $(install) install
+EOF
+sed -n '/^install:/,/^ /p' Makefile.in > target.value
+diff target.expected target.value
+
+:
diff --git a/t/vartypo2.sh b/t/vartypo2.sh
new file mode 100755 (executable)
index 0000000..9b52df6
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we warn about possible variable typos when we should,
+# Libtool variant.
+
+required=libtoolize
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AM_PROG_AR
+AC_PROG_LIBTOOL
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+libfoo_la_SOURCES = unused
+nodist_libfoo_la_SOURCES = unused
+EXTRA_libfoo_la_SOURCES = unused
+libfoo_la_LIBADD = unused
+libfoo_la_DEPENDENCIES = unused
+EXTRA_libfoo_la_DEPENDENCIES = unused
+END
+
+libtoolize
+$ACLOCAL
+AUTOMAKE_fails --add-missing
+# The expected diagnostic is:
+# automake: warnings are treated as errors
+# Makefile.am:3: warning: variable `EXTRA_libfoo_la_SOURCES' is defined but no program or
+# Makefile.am:3: library has `libfoo_la' as canonical name (possible typo)
+# Makefile.am:1: warning: variable `libfoo_la_SOURCES' is defined but no program or
+# Makefile.am:1: library has `libfoo_la' as canonical name (possible typo)
+# Makefile.am:2: warning: variable `nodist_libfoo_la_SOURCES' is defined but no program or
+# Makefile.am:2: library has `libfoo_la' as canonical name (possible typo)
+# Makefile.am:4: warning: variable `libfoo_la_LIBADD' is defined but no program or
+# Makefile.am:4: library has `libfoo_la' as canonical name (possible typo)
+# Makefile.am:6: warning: variable `EXTRA_libfoo_la_DEPENDENCIES' is defined but no program or
+# Makefile.am:6: library has `libfoo_la' as canonical name (possible typo)
+# Makefile.am:5: warning: variable `libfoo_la_DEPENDENCIES' is defined but no program or
+# Makefile.am:5: library has `libfoo_la' as canonical name (possible typo)
+
+
+grep 'as canonical' stderr | grep -v ' .libfoo_la. ' && Exit 1
+test `grep 'variable.*is defined but' stderr | wc -l` = 6
+
+# If we add a global -Wnone, all warnings should disappear.
+$AUTOMAKE -Wnone
+
+# Likewise, if matching programs or libraries are defined.
+cat >>Makefile.am <<'END'
+lib_LTLIBRARIES = libfoo.la
+END
+
+$AUTOMAKE
+
+:
diff --git a/t/vartypos.sh b/t/vartypos.sh
new file mode 100755 (executable)
index 0000000..eb924cc
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure we warn about possible variable typos when we should.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<'END'
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+foo_SOURCES = unused
+nodist_foo_SOURCES = unused
+EXTRA_foo_SOURCES = unused
+foo_LDADD = unused
+foo_LDFLAGS = unused
+foo_DEPENDENCIES = unused
+EXTRA_foo_DEPENDENCIES = unused
+
+libfoo_a_SOURCES = unused
+nodist_libfoo_a_SOURCES = unused
+EXTRA_libfoo_a_SOURCES = unused
+libfoo_a_LIBADD = unused
+libfoo_a_DEPENDENCIES = unused
+EXTRA_libfoo_a_DEPENDENCIES = unused
+END
+
+$ACLOCAL
+AUTOMAKE_fails -Wno-extra-portability
+# The expected diagnostic is:
+# automake: warnings are treated as errors
+# Makefile.am:2: warning: variable 'nodist_foo_SOURCES' is defined but no program or
+# Makefile.am:2: library has 'foo' as canonical name (possible typo)
+# Makefile.am:1: warning: variable 'foo_SOURCES' is defined but no program or
+# Makefile.am:1: library has 'foo' as canonical name (possible typo)
+# Makefile.am:9: warning: variable 'libfoo_a_SOURCES' is defined but no program or
+# Makefile.am:9: library has 'libfoo_a' as canonical name (possible typo)
+# Makefile.am:10: warning: variable 'nodist_libfoo_a_SOURCES' is defined but no program or
+# Makefile.am:10: library has 'libfoo_a' as canonical name (possible typo)
+# Makefile.am:11: warning: variable 'EXTRA_libfoo_a_SOURCES' is defined but no program or
+# Makefile.am:11: library has 'libfoo_a' as canonical name (possible typo)
+# Makefile.am:3: warning: variable 'EXTRA_foo_SOURCES' is defined but no program or
+# Makefile.am:3: library has 'foo' as canonical name (possible typo)
+# Makefile.am:12: warning: variable 'libfoo_a_LIBADD' is defined but no program or
+# Makefile.am:12: library has 'libfoo_a' as canonical name (possible typo)
+# Makefile.am:4: warning: variable 'foo_LDADD' is defined but no program or
+# Makefile.am:4: library has 'foo' as canonical name (possible typo)
+# Makefile.am:5: warning: variable 'foo_LDFLAGS' is defined but no program or
+# Makefile.am:5: library has 'foo' as canonical name (possible typo)
+# Makefile.am:14: warning: variable 'EXTRA_libfoo_a_DEPENDENCIES' is defined but no program or
+# Makefile.am:14: library has 'libfoo_a' as canonical name (possible typo)
+# Makefile.am:7: warning: variable 'EXTRA_foo_DEPENDENCIES' is defined but no program or
+# Makefile.am:7: library has 'foo' as canonical name (possible typo)
+# Makefile.am:6: warning: variable 'foo_DEPENDENCIES' is defined but no program or
+# Makefile.am:6: library has 'foo' as canonical name (possible typo)
+# Makefile.am:13: warning: variable 'libfoo_a_DEPENDENCIES' is defined but no program or
+# Makefile.am:13: library has 'libfoo_a' as canonical name (possible typo)
+
+grep 'as canonical' stderr | grep -v ' .foo. ' | grep -v ' .libfoo_a. ' \
+  && Exit 1
+test `grep 'variable.*is defined but' stderr | wc -l` = 13
+
+# If we add a global -Wnone, all warnings should disappear.
+$AUTOMAKE -Wnone
+
+# Likewise, if matching programs or libraries are defined.
+cat >>Makefile.am <<'END'
+bin_PROGRAMS = foo
+lib_LIBRARIES = libfoo.a
+END
+
+$AUTOMAKE -Wno-extra-portability
+
+:
diff --git a/t/version.sh b/t/version.sh
new file mode 100755 (executable)
index 0000000..431eb0d
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure [...] is ok in version number.  Report from Jim
+# Meyering.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE([sh-utils], [1.12o])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+# Files required by Gnits.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+: > THANKS
+
+$ACLOCAL
+$AUTOMAKE --gnits -Wno-obsolete
diff --git a/t/version2.sh b/t/version2.sh
new file mode 100755 (executable)
index 0000000..273bd36
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure 3rd arg to AM_INIT_AUTOMAKE not picked up in
+# version.  From Joel Weber.
+
+. ./defs || Exit 1
+
+cat > configure.ac << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE([sh-utils], [1.12o], [no])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+: > Makefile.am
+
+# Files required by Gnits.
+: > INSTALL
+: > NEWS
+: > README
+: > COPYING
+: > AUTHORS
+: > ChangeLog
+: > THANKS
+
+$ACLOCAL
+$AUTOMAKE --gnits -Wno-obsolete
diff --git a/t/version3.sh b/t/version3.sh
new file mode 100755 (executable)
index 0000000..2839467
--- /dev/null
@@ -0,0 +1,27 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure version in AUTOMAKE_OPTIONS works.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = 9.9x
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep 'Makefile.am:1:.*Automake 9.9x' stderr
diff --git a/t/version4.sh b/t/version4.sh
new file mode 100755 (executable)
index 0000000..7fa429e
--- /dev/null
@@ -0,0 +1,26 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure we are compatible with the 1.4-p1 series.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = 1.4-p3
+END
+
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/version6.sh b/t/version6.sh
new file mode 100755 (executable)
index 0000000..1c04ab4
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure the current version can be required.
+
+. ./defs || Exit 1
+
+amver=`$AUTOMAKE --version | sed -e 's/.* //;1q'`
+
+# Does the extracted version number seems legit?
+case $amver in
+  *[0-9].[0-9]*) ;;
+  *) fatal_ "couldn't extract version number from automake" ;;
+esac
+
+cat > Makefile.am << END
+AUTOMAKE_OPTIONS = $amver
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/version7.sh b/t/version7.sh
new file mode 100755 (executable)
index 0000000..2892920
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for a special setup where the package's version isn't defined
+# in configure.ac.  We want GNU Make for this test (part of the test
+# is to make sure Makefile.ins get rebuilt when a m4_included file
+# changes -- we don't support this feature on non-GNU Makes).
+
+required='makeinfo tex texi2dvi'
+. ./defs || Exit 1
+
+cat >configure.ac <<END
+m4_include([version.m4])
+AC_INIT([$me], [THE_VERSION])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+echo 'm4_define([THE_VERSION], [2.718])' > version.m4
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = zardoz.texi
+
+check:
+       test -f $(srcdir)/version.m4
+END
+
+cat > zardoz.texi << 'END'
+\input texinfo
+@setfilename zardoz.info
+@settitle Zardoz
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+./configure --version | grep '2\.718'
+./configure
+$MAKE
+grep '2\.718' version.texi
+
+$sleep
+echo 'm4_define([THE_VERSION], [3.141])' > version.m4
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+./configure --version | grep '3\.141'
+grep '3\.141' version.texi
+
+:
diff --git a/t/version8.sh b/t/version8.sh
new file mode 100755 (executable)
index 0000000..1e66280
--- /dev/null
@@ -0,0 +1,24 @@
+#! /bin/sh
+# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Calling AM_AUTOMAKE_VERSION by hand is a bug.
+
+. ./defs || Exit 1
+
+echo 'AM_AUTOMAKE_VERSION([1.9])' >>configure.ac
+$ACLOCAL 2>stderr && { cat stderr >&2; Exit 0; }
+cat stderr >&2
+$FGREP 'AM_INIT_AUTOMAKE([1.9])' stderr
diff --git a/t/vpath.sh b/t/vpath.sh
new file mode 100755 (executable)
index 0000000..4bfc9be
--- /dev/null
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure VPATH can be overridden.
+# Report from Anthony Green.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+VPATH = zardoz
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+grep VPATH Makefile.in # For debugging.
+grep '^VPATH = zardoz$' Makefile.in
+grep 'VPATH.*@srcdir@' Makefile.in && Exit 1
+
+:
diff --git a/t/vtexi.sh b/t/vtexi.sh
new file mode 100755 (executable)
index 0000000..9d1bc24
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic checks and some regressions testing on 'version.texi'
+# support for texinfo files.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = textutils.texi
+END
+
+cat > textutils.texi << 'END'
+@include version.texi
+@setfilename textutils.info
+END
+
+# Required when using Texinfo.
+: > mdate-sh
+: > texinfo.tex
+
+$ACLOCAL
+$AUTOMAKE
+
+# Test for bug reported by Jim Meyering:
+# When I ran automake-0.29 on textutils,
+# I noticed that doc/Makefile.in had
+#   textutils.info: textutils.texi
+# instead of
+#   textutils.info: textutils.texi version.texi
+# Today this should be:
+#   $(srcdir)/textutils.info: $(srcdir)/version.texi
+# or:
+#   $(srcdir)/textutils.info: version.texi
+grep '^\$(srcdir)/textutils\.info:.*[ /]version\.texi *$' Makefile.in
+
+# Test for bug reported by Lars Hecking:
+# When running the first version of configure.ac aware automake,
+# @CONFIGURE_AC@ was not properly substituted.
+$EGREP 'stamp-vti:.*textutils\.texi( .*)?$' Makefile.in
+$EGREP 'stamp-vti:.*\$\(top_srcdir\)/configure( .*)?$' Makefile.in
+
+# Check that the path to mdate-sh is correct.  Over escaping of '$'
+# etc. once led to '\$\(srcdir\)/mdate-sh'.
+# Filter out '$(srcdir)/mdate-sh'; there should be no occurrences
+# of '.../mdate-sh' left then.
+sed 's,\$(srcdir)/mdate-sh,,g' Makefile.in | grep '/mdate-sh' && Exit 1
+
+:
diff --git a/t/vtexi2.sh b/t/vtexi2.sh
new file mode 100755 (executable)
index 0000000..18f1e9e
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for bug reported by Glenn Amerine:
+#   When automake sees version.texi is being included by a texi file,
+#   version.texi gets listed as a dependency for the .info file but
+#   not the .dvi file.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = zardoz.texi
+END
+
+cat > zardoz.texi << 'END'
+@setfilename zardoz
+@include version.texi
+END
+
+# Required when using Texinfo.
+: > mdate-sh
+: > texinfo.tex
+
+$ACLOCAL
+$AUTOMAKE
+
+grep '^zardoz\.dvi:.*[ /]version.texi' Makefile.in
+
+:
diff --git a/t/vtexi3.sh b/t/vtexi3.sh
new file mode 100755 (executable)
index 0000000..9dd3e67
--- /dev/null
@@ -0,0 +1,124 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that vers*.texi files are automatically created and distributed
+# if @included into a texi source.  Also check that they correctly contain
+# the @values definitions they are advertised to.
+# See also the related test 'vtexi4.test', which does similar checks, but
+# for version.texi only, and requires makeinfo, tex and texi2dvi.
+
+. ./defs || Exit 1
+
+# We are going to override package version in AC_INIT, so we need
+# to redefine the name of the distdir as well.
+distdir=$me-7.45.3a
+
+# This should work without tex, texinfo or makeinfo.
+TEX=false TEXI2DVI=false MAKEINFO=false
+export TEX TEXI2DVI MAKEINFO
+
+cat > configure.ac << END
+AC_INIT([$me], [7.45.3a])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = foobar.texi quux.texi zardoz.texi
+.PHONY: echo-distfiles
+echo-distfiles:
+       @echo ' ' $(DISTFILES) ' '
+END
+
+cat > foobar.texi << 'END'
+@setfilename foobar.info
+random text
+@include version.texi
+END
+
+cat > quux.texi << 'END'
+@setfilename quux.info
+@include version-quux.texi
+random text
+END
+
+cat > zardoz.texi << 'END'
+@setfilename zardoz.info
+some randome text
+@include vers1a_2b.texi
+more random text
+END
+
+# Required when using Texinfo.
+: > texinfo.tex
+cp "$am_scriptdir"/mdate-sh .
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+day='([1-9]|1[0-9]|2[0-9]|3[01])'
+month='(January|February|March|April|May|June|July|August|September|October|November|December)'
+year='20[0-9][0-9]' # Hopefully automake will be obsolete in 80 years ;-)
+date="$day $month $year"
+
+do_check ()
+{
+  # Basename of the vers*.texi file.
+  vfile=$1
+  # The $(srcdir) of the current build.
+  srcdir=$2
+  # The vers*.texi file must be created in $(srcdir).
+  $MAKE $srcdir/$vfile.texi
+  cat $srcdir/$vfile.texi
+  # EDITION and VERSION are synonyms, as per documentation.
+  grep "^@set EDITION 7\\.45\\.3a$" $srcdir/$vfile.texi
+  grep "^@set VERSION 7\\.45\\.3a$" $srcdir/$vfile.texi
+  # Check that UPDATED seems right, and that UPDATED and UPDATED-MONTH
+  # are consistent.
+  $EGREP "^@set UPDATED $date$" $srcdir/$vfile.texi
+  vmonth=`grep '^@set UPDATED ' $srcdir/$vfile.texi | awk '{print $4, $5}'`
+  grep "^@set UPDATED-MONTH $vmonth$" $srcdir/$vfile.texi
+  # Check that the vers*.texi file is distributed according
+  # to $(DISTFILES).
+  $MAKE echo-distfiles # For debugging.
+  $MAKE -s echo-distfiles | grep "[ /]$vfile\\.texi"
+}
+
+mkdir build
+cd build
+../configure
+
+do_check version ..
+do_check version-quux ..
+do_check vers1a_2b ..
+
+# The various $(srcdir)/*.info are required for the distribution
+# and they must be newer than version.texi, so that make won't try
+# to rebuild them.
+$sleep
+touch ../foobar.info
+touch ../quux.info
+touch ../zardoz.info
+# Check that the vers*.texi files are really distributed.
+$MAKE distdir
+ls -l $distdir
+diff ../version.texi $distdir/version.texi
+diff ../version-quux.texi $distdir/version-quux.texi
+diff ../version.texi $distdir/vers1a_2b.texi
+
+:
diff --git a/t/vtexi4.sh b/t/vtexi4.sh
new file mode 100755 (executable)
index 0000000..6038444
--- /dev/null
@@ -0,0 +1,113 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the version.texi file is automatically created and distributed
+# if @included into a texi source.  Also check that is correctly defined
+# @values definitions it is advertised to.
+# See also the related test 'vtexi3.test', which does similar checks, but
+# for more vers*.texi files, and does not require makeinfo, tex and
+# texi2dvi.
+
+required='makeinfo tex texi2dvi-o'
+. ./defs || Exit 1
+
+case `LC_ALL=C date '+%u'` in
+  [1-7]) date_is_posix=:;;
+      *) date_is_posx=false;;
+esac
+$date_is_posix \
+  && day=`LC_ALL=C date '+%d'` && test -n "$day" \
+  && month=`LC_ALL=C date '+%B'` && test -n "$month" \
+  && year=`LC_ALL=C date '+%Y'`&& test -n "$year" \
+  || skip_ "'date' is not POSIX-compliant enough"
+day=`echo "$day" | sed 's/^0//'`
+
+(echo '\ex\a' | grep x) \
+  || skip_ "grep doesn't work on input that is not pure text"
+
+cat > configure.ac << END
+AC_INIT([$me], [123.456])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+
+cat > defs.am <<END
+my_date_rx = $day $month $year
+my_month_rx = $month $year
+my_version_rx = 123\.456
+END
+
+cat > Makefile.am << 'END'
+include defs.am
+info_TEXINFOS = foo.texi
+test-grepinfo:
+## Not useless uses of cat: we only tested that grep worked on
+## non-text input when that's given from a pipe.
+       cat $(srcdir)/foo.info | grep 'GREPVERSION=$(my_version_rx)='
+       cat $(srcdir)/foo.info | grep 'GREPEDITION=$(my_version_rx)='
+       cat $(srcdir)/foo.info | grep 'GREPDATE=$(my_date_rx)='
+       cat $(srcdir)/foo.info | grep 'GREPMONTH=$(my_month_rx)='
+test-distfiles:
+       @echo DISTFILES = $(DISTFILES)
+       echo ' ' $(DISTFILES) ' ' | grep '[ /]version.texi '
+test-distdir: distdir
+       ls -l $(distdir)
+       diff $(srcdir)/version.texi $(distdir)/version.texi
+.PHONY: test-grepinfo test-distfiles test-distdir
+check-local: test-grepinfo test-distfiles test-distdir
+END
+
+cat > foo.texi << 'END'
+\input texinfo
+@c %**start of header
+@setfilename foo.info
+@settitle Zardoz
+@c %**end of header
+
+@node Top
+@include version.texi
+
+GREPVERSION=@value{VERSION}=
+
+GREPEDITION=@value{EDITION}=
+
+GREPDATE=@value{UPDATED}=
+
+GREPMONTH=@value{UPDATED-MONTH}=
+
+@bye
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE all dvi
+
+# Debugging & sanity checks.
+ls -l
+cat version.texi
+cat foo.info
+test -f foo.dvi
+
+$MAKE test-grepinfo
+$MAKE test-distfiles
+$MAKE test-distdir
+$MAKE distcheck
+
+:
diff --git a/t/warning-groups-win-over-strictness.sh b/t/warning-groups-win-over-strictness.sh
new file mode 100755 (executable)
index 0000000..3d3885d
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that explicitly-defined warning levels take precedence over
+# implicit strictness-implied warnings, even when these explicit warning
+# levels are "catch-all warnings" (such as '-Wall' and '-Wnone').
+# Since we are at it, also throw in *.am and *.m4 file inclusions.
+
+. ./defs || Exit 1
+
+# We want complete control over automake options.
+AUTOMAKE=$am_original_AUTOMAKE
+
+# Files required in gnu and/or gnits strictness.
+touch README INSTALL NEWS AUTHORS ChangeLog COPYING THANKS
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+m4_include([am-init-automake.m4])
+AC_PROG_CC
+AC_CONFIG_FILES([Makefile])
+# Other similar tests do not use AC_OUTPUT, so we use it here,
+# for completeness and for better coverage.
+AC_OUTPUT
+END
+
+cat > Makefile.am <<END
+include automake-options.am
+FOO := bar
+END
+
+rm -rf autom4te*.cache
+: > automake-options.am
+echo 'AM_INIT_AUTOMAKE' > am-init-automake.m4
+$ACLOCAL
+AUTOMAKE_fails -Werror -Wall --foreign
+grep '^Makefile\.am:.*:=.*not portable' stderr
+
+rm -rf autom4te*.cache
+: > automake-options.am
+echo 'AM_INIT_AUTOMAKE([-Werror -Wnone gnu])' > am-init-automake.m4
+$ACLOCAL
+$AUTOMAKE
+
+rm -rf autom4te*.cache
+echo 'AUTOMAKE_OPTIONS = -Werror -Wnone gnits' > automake-options.am
+echo 'AM_INIT_AUTOMAKE' > am-init-automake.m4
+$ACLOCAL
+$AUTOMAKE
+
+:
diff --git a/t/warnings-override.sh b/t/warnings-override.sh
new file mode 100755 (executable)
index 0000000..9f973c6
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# The warnings specified in Makefile.am:AUTOMAKE_OPTIONS should override
+# those specified in configure.ac:AM_INIT_AUTOMAKE, and both should
+# override the warnings specified on the command line.
+# NOTE: the current semantics might not be the best one (even if it has
+# been in place for quite a long time); see also Automake bug #7673.
+# Update this test if the semantics are changed.
+
+. ./defs || Exit 1
+
+# We want (almost) complete control over automake options.
+AUTOMAKE="$am_original_AUTOMAKE -Werror"
+
+cat > Makefile.am <<'END'
+FOO := bar
+AUTOMAKE_OPTIONS =
+END
+
+set_warnings ()
+{
+  set +x
+  sed <$2 >$2-t -e "s|^\\(AUTOMAKE_OPTIONS\\) *=.*|\\1 = $1|" \
+                -e "s|^\\(AM_INIT_AUTOMAKE\\).*|\\1([$1])|"
+  mv -f $2-t $2
+  set -x
+  cat $2
+}
+
+ok ()
+{
+  $AUTOMAKE $*
+}
+
+ko ()
+{
+  AUTOMAKE_fails $*
+  grep '^Makefile\.am:1:.*:=.*not portable' stderr
+}
+
+$ACLOCAL
+
+# Files required in gnu strictness.
+touch README INSTALL NEWS AUTHORS ChangeLog COPYING
+
+rm -rf autom4te*.cache
+set_warnings '-Wno-portability' Makefile.am
+set_warnings '' configure.ac
+
+ok -Wportability
+ok
+
+rm -rf autom4te*.cache
+set_warnings '' Makefile.am
+set_warnings '-Wno-portability' configure.ac
+
+ok -Wportability
+ok
+
+rm -rf autom4te*.cache
+set_warnings '-Wno-portability' Makefile.am
+set_warnings '-Wno-portability' configure.ac
+
+ok -Wportability
+
+rm -rf autom4te*.cache
+set_warnings '-Wportability' Makefile.am
+set_warnings '' configure.ac
+
+ko
+ko -Wno-portability
+
+rm -rf autom4te*.cache
+set_warnings '' Makefile.am
+set_warnings '-Wportability' configure.ac
+
+ko
+ko -Wno-portability
+
+rm -rf autom4te*.cache
+set_warnings '-Wportability' Makefile.am
+set_warnings '-Wportability' configure.ac
+ko -Wno-portability
+
+rm -rf autom4te*.cache
+set_warnings '-Wno-portability' Makefile.am
+set_warnings '-Wportability' configure.ac
+ok
+ok -Wportability
+
+rm -rf autom4te*.cache
+set_warnings '-Wportability' Makefile.am
+set_warnings '-Wno-portability' configure.ac
+ko
+ko -Wno-portability
+
+:
diff --git a/t/warnings-precedence.sh b/t/warnings-precedence.sh
new file mode 100755 (executable)
index 0000000..a588670
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# On the command line, in AM_INIT_AUTOMAKE, and in AUTOMAKE_OPTIONS,
+# warnings specified later should take precedence over those specified
+# earlier.
+
+. ./defs || Exit 1
+
+# We want (almost) complete control over automake options.
+AUTOMAKE="$am_original_AUTOMAKE -Werror"
+
+cat > Makefile.am <<'END'
+FOO := bar
+AUTOMAKE_OPTIONS =
+END
+
+set_warnings ()
+{
+  set +x
+  sed <$2 >$2-t -e "s|^\\(AUTOMAKE_OPTIONS\\) *=.*|\\1 = $1|" \
+                -e "s|^\\(AM_INIT_AUTOMAKE\\).*|\\1([$1])|"
+  mv -f $2-t $2
+  set -x
+  cat $2
+}
+
+ok ()
+{
+  $AUTOMAKE $*
+}
+
+ko ()
+{
+  AUTOMAKE_fails $*
+  grep '^Makefile\.am:1:.*:=.*not portable' stderr
+}
+
+# Files required in gnu strictness.
+touch README INSTALL NEWS AUTHORS ChangeLog COPYING
+
+$ACLOCAL
+ok -Wportability -Wno-portability
+ko -Wno-portability -Wportability
+
+set_warnings '' Makefile.am
+set_warnings '-Wportability -Wno-portability' configure.ac
+rm -rf autom4te*.cache
+$ACLOCAL
+ok
+set_warnings '-Wno-portability -Wportability' configure.ac
+rm -rf autom4te*.cache
+$ACLOCAL
+ko
+
+set_warnings '' configure.ac
+rm -rf autom4te*.cache
+$ACLOCAL
+set_warnings '-Wportability -Wno-portability' Makefile.am
+ok
+set_warnings '-Wno-portability -Wportability' Makefile.am
+ko
+
+:
diff --git a/t/warnings-strictness-interactions.sh b/t/warnings-strictness-interactions.sh
new file mode 100755 (executable)
index 0000000..774fd3a
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the default warnings triggered by a strictness specified
+# in AUTOMAKE_OPTIONS take precedence over explicit warnings given in
+# AM_INIT_AUTOMAKE.
+
+. ./defs || Exit 1
+
+# We want (almost) complete control over automake options.
+AUTOMAKE="$am_original_AUTOMAKE -Werror"
+
+cat > Makefile.am <<END
+AUTOMAKE_OPTIONS =
+FOO := bar
+END
+
+set_am_opts ()
+{
+  set +x
+  sed <$2 >$2-t -e "s|^\\(AUTOMAKE_OPTIONS\\) *=.*|\\1 = $1|" \
+                -e "s|^\\(AM_INIT_AUTOMAKE\\).*|\\1([$1])|"
+  mv -f $2-t $2
+  set -x
+  cat $2
+}
+
+set_am_opts '-Wportability' configure.ac
+set_am_opts 'foreign' Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+
+rm -rf autom4te*.cache
+
+# Files required in gnu strictness.
+touch README INSTALL NEWS AUTHORS ChangeLog COPYING
+
+set_am_opts '-Wno-portability' configure.ac
+set_am_opts 'gnu' Makefile.am
+
+AUTOMAKE_fails
+$ACLOCAL
+grep '^Makefile\.am:2:.*:=.*not portable' stderr
+
+:
diff --git a/t/warnings-unknown.sh b/t/warnings-unknown.sh
new file mode 100755 (executable)
index 0000000..4d64059
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake complains about unknown warnings.
+
+. ./defs || Exit 1
+
+# We want (almost) complete control over automake options.
+AUTOMAKE="$am_original_AUTOMAKE --foreign -Werror"
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([-Wno-zardoz])
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am <<END
+AUTOMAKE_OPTIONS = -Wfoobar
+END
+
+$ACLOCAL
+
+AUTOMAKE_fails -Wbazquux
+# FIXME: we could get rid of this once we improve our wrapper scripts.
+sed "s/^automake:/automake-$APIVERSION:/" stderr > t
+mv -f t stderr
+cat stderr >&2
+grep '^configure\.ac:2:.* unknown warning category.*zardoz' stderr
+grep '^Makefile\.am:1:.* unknown warning category.*foobar' stderr
+grep "^automake-$APIVERSION:.* unknown warning category.*bazquux" stderr
+
+# Check that we can override warnings about unknown warning categories.
+$AUTOMAKE -Wno-unsupported -Wbazquux
+
+:
diff --git a/t/warnings-win-over-strictness.sh b/t/warnings-win-over-strictness.sh
new file mode 100755 (executable)
index 0000000..5d47f50
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that, on the command line, explicitly-defined warnings take
+# precedence over implicit strictness-implied warnings.
+
+. ./defs || Exit 1
+
+# We want complete control over automake options.
+AUTOMAKE=$am_original_AUTOMAKE
+
+ok ()
+{
+  AUTOMAKE_run $*
+  test ! -s stderr
+}
+
+ko ()
+{
+  AUTOMAKE_run $*
+  grep '^Makefile\.am:.*:=.*not portable' stderr
+  test `wc -l <stderr` -eq 1
+}
+
+set_am_opts()
+{
+  set +x
+  sed <$2 >$2-t -e "s|^\\(AUTOMAKE_OPTIONS\\) *=.*|\\1 = $1|" \
+                -e "s|^\\(AM_INIT_AUTOMAKE\\).*|\\1([$1])|"
+  mv -f $2-t $2
+  set -x
+  cat $2
+}
+
+# Files required in gnu strictness.
+touch README INSTALL NEWS AUTHORS ChangeLog COPYING
+
+cat > Makefile.am <<END
+AUTOMAKE_OPTIONS =
+FOO := bar
+END
+
+$ACLOCAL
+
+ko --foreign -Wportability
+ko -Wportability --foreign
+ok --gnu -Wno-portability
+ok -Wno-portability --gnu
+
+set_am_opts '' Makefile.am
+
+rm -rf autom4te*.cache
+set_am_opts 'foreign -Wportability' configure.ac
+ko
+rm -rf autom4te*.cache
+set_am_opts '-Wportability foreign' configure.ac
+ko
+rm -rf autom4te*.cache
+set_am_opts 'gnu -Wno-portability' configure.ac
+ok
+rm -rf autom4te*.cache
+set_am_opts '-Wno-portability gnu' configure.ac
+ok
+
+rm -rf autom4te*.cache
+set_am_opts '' configure.ac
+
+set_am_opts 'foreign -Wportability' Makefile.am
+ko
+set_am_opts '-Wportability foreign' Makefile.am
+ko
+set_am_opts 'gnu -Wno-portability' Makefile.am
+ok
+set_am_opts '-Wno-portability gnu' Makefile.am
+ok
+
+:
diff --git a/t/warnopts.sh b/t/warnopts.sh
new file mode 100755 (executable)
index 0000000..1662d91
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that we can enable or disable warnings on a per-file basis.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<END
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+
+# These two Makefile contain the same errors, but have different
+# warnings disabled.
+
+cat >Makefile.am <<END
+AUTOMAKE_OPTIONS = -Wno-obsolete
+INCLUDES = -Ifoo
+foo_SOURCES = unused
+SUBDIRS = sub
+END
+
+cat >sub/Makefile.am <<END
+AUTOMAKE_OPTIONS = -Wno-syntax
+INCLUDES = -Ifoo
+foo_SOURCES = unused
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+# The expected diagnostic is
+#   Makefile.am:3: warning: variable 'foo_SOURCES' is defined but no program or
+#                           library has 'foo' as canonical name (possible typo)
+#   sub/Makefile.am:2: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS'
+grep '^Makefile.am:.*foo_SOURCES' stderr
+grep '^sub/Makefile.am:.*INCLUDES' stderr
+grep '^sub/Makefile.am:.*foo_SOURCES' stderr && Exit 1
+grep '^Makefile.am:.*INCLUDES' stderr && Exit 1
+# Only three lines of warnings.
+test `grep -v 'warnings are treated as errors' stderr | wc -l` = 3
+
+# On fast machines the autom4te.cache created during the above run of
+# $AUTOMAKE is likely to have the same time stamp as the configure.ac
+# created below; thus causing traces for the old configure.ac to be
+# used.  We could do '$sleep', but it's faster to erase the
+# directory.  (Erase autom4te*.cache, not autom4te.cache, because some
+# bogus installations of Autoconf use a versioned cache).
+rm -rf autom4te*.cache
+
+# If we add a global -Wnone, all warnings should disappear.
+cat >configure.ac <<END
+AC_INIT([warnopts], [1.0])
+AM_INIT_AUTOMAKE([-Wnone])
+AC_CONFIG_FILES([Makefile sub/Makefile])
+AC_OUTPUT
+END
+$ACLOCAL
+$AUTOMAKE
diff --git a/t/werror.sh b/t/werror.sh
new file mode 100755 (executable)
index 0000000..606fed6
--- /dev/null
@@ -0,0 +1,26 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure -Werror and --add-missing work together.
+
+. ./defs || Exit 1
+
+: > Makefile.am
+
+rm -f install-sh depcomp missing mkinstalldirs
+
+$ACLOCAL
+$AUTOMAKE -Werror --add-missing
diff --git a/t/werror2.sh b/t/werror2.sh
new file mode 100755 (executable)
index 0000000..67e0e01
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure that Makefile.in is not overwritten on error.  Otherwise
+# although the rebuilding rules would fail on error, they would
+# succeed if make is run a second time immediately afterwards.
+# Report from Harlan Stenn.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT>>configure.ac
+
+: > Makefile.am
+
+$ACLOCAL
+# Create Makefile.in before configure.  configure ensures files
+# generated by it or later are newer than configure, so this allows
+# us to avoid a $sleep before updating Makefile.am below.
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+$MAKE
+
+cat >Makefile.am <<END
+AUTOMAKE_OPTIONS = -Werror
+INCLUDES = -Ifoo
+foo_SOURCES = unused
+END
+
+# This repetition is deliberate; see heading comments.
+$MAKE && Exit 1
+$MAKE && Exit 1
+
+:
diff --git a/t/werror3.sh b/t/werror3.sh
new file mode 100755 (executable)
index 0000000..b5e35e3
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure a per-Makefile.am -Werror setting is not carried over
+# to another Makefile.am.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<\END
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+cat >sub/Makefile.am <<\END
+AUTOMAKE_OPTIONS = -Werror
+END
+cat >Makefile.am <<\END
+VAR = foo
+VAR = bar
+END
+
+$ACLOCAL
+
+# The issue would not manifest with threaded execution.
+unset AUTOMAKE_JOBS || :
+AUTOMAKE_run -Wno-error
+grep 'VAR multiply defined' stderr
+
+AUTOMAKE_JOBS=2
+export AUTOMAKE_JOBS
+AUTOMAKE_run -Wno-error
+grep 'VAR multiply defined' stderr
+
+:
diff --git a/t/werror4.sh b/t/werror4.sh
new file mode 100755 (executable)
index 0000000..b2f3f6a
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# -Werror and local -Werror settings should be flagged for the user.
+
+. ./defs || Exit 1
+
+cat >>configure.ac <<\END
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+cat >sub/Makefile.am <<\END
+AUTOMAKE_OPTIONS = -Werror
+SUB = foo
+SUB = bar
+END
+cat >Makefile.am <<\END
+AUTOMAKE_OPTIONS = -Werror
+VAR = foo
+VAR = bar
+END
+
+$ACLOCAL
+
+AUTOMAKE_fails -Wno-error
+grep 'VAR multiply defined' stderr
+grep 'SUB multiply defined' stderr
+test `grep -c 'warnings are treated as errors' stderr` -eq 1
+
+sed '/AUTOMAKE_OPTIONS/d' sub/Makefile.am > t
+mv -f t sub/Makefile.am
+
+AUTOMAKE_fails -Wno-error
+grep 'VAR multiply defined' stderr
+grep 'SUB multiply defined' stderr
+test `grep -c 'warnings are treated as errors' stderr` -eq 1
+
+sed '/AUTOMAKE_OPTIONS/d' Makefile.am > t
+mv -f t Makefile.am
+
+AUTOMAKE_fails -Werror
+grep 'VAR multiply defined' stderr
+grep 'SUB multiply defined' stderr
+test `grep -c 'warnings are treated as errors' stderr` -eq 1
+
+AUTOMAKE_run -Wno-error
+grep 'VAR multiply defined' stderr
+grep 'SUB multiply defined' stderr
+grep 'warnings are treated as errors' stderr && Exit 1
+
+:
diff --git a/t/whoami.sh b/t/whoami.sh
new file mode 100755 (executable)
index 0000000..72153ca
--- /dev/null
@@ -0,0 +1,27 @@
+#! /bin/sh
+# Copyright (C) 1998-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure aclocal doesn't barf on "WHO_AM_I=...".  Report
+# from Johan Danielsson (and a very nice bug report, too, I might
+# add).
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+WHO_AM_I=17
+END
+
+$ACLOCAL
diff --git a/t/wrap/aclocal.in b/t/wrap/aclocal.in
new file mode 100644 (file)
index 0000000..18ee13a
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+# @configure_input@
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+fi
+
+perllibdir="@abs_top_builddir@/lib@PATH_SEPARATOR@@abs_top_srcdir@/lib"
+export perllibdir
+
+exec "@abs_top_builddir@/aclocal" "--automake-acdir=@abs_top_srcdir@/m4" \
+     "--system-acdir=@abs_top_srcdir@/m4/acdir" ${1+"$@"}
diff --git a/t/wrap/automake.in b/t/wrap/automake.in
new file mode 100644 (file)
index 0000000..14f437f
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+# @configure_input@
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+fi
+
+perllibdir="@abs_top_builddir@/lib@PATH_SEPARATOR@@abs_top_srcdir@/lib"
+export perllibdir
+exec "@abs_top_builddir@/automake" "--libdir=@abs_top_srcdir@/lib" ${1+"$@"}
diff --git a/t/xsource.sh b/t/xsource.sh
new file mode 100755 (executable)
index 0000000..5f89dc9
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure multiple source files with the same object
+# file causes error.
+
+. ./defs || Exit 1
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = z.c x/z.c
+END
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+END
+
+mkdir x
+
+: > z.c
+: > x/z.c
+
+$ACLOCAL
+AUTOMAKE_fails
+$FGREP 'z.$(OBJEXT)' stderr
diff --git a/t/yacc-auxdir.sh b/t/yacc-auxdir.sh
new file mode 100755 (executable)
index 0000000..1b494e8
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure ylwrap is put in right location.
+# Report from Tim Van Holder.
+
+. ./defs || Exit 1
+
+mkdir aux1 sub
+
+cat > configure.ac << END
+AC_INIT([$me], [1.0])
+# 'aux' is not an acceptable file/directory name on Windows systems
+AC_CONFIG_AUX_DIR([aux1])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile sub/Makefile])
+AC_PROG_CC
+AC_PROG_YACC
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+bin_PROGRAMS = foo
+AM_YFLAGS = -d
+foo_SOURCES = foo.y
+END
+
+cat > sub/Makefile.am << 'END'
+bin_PROGRAMS = bar
+AM_YFLAGS = -d
+bar_SOURCES = bar.y main.c
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+test -f aux1/ylwrap
+test ! -f ylwrap
+test ! -f sub/ylwrap
+grep -i 'ylwrap' Makefile.in sub/Makefile.in # For debugging.
+$FGREP '$(top_srcdir)/aux1/ylwrap' Makefile.in
+$FGREP '$(top_srcdir)/aux1/ylwrap' sub/Makefile.in
+
+:
diff --git a/t/yacc-basic.sh b/t/yacc-basic.sh
new file mode 100755 (executable)
index 0000000..d2fd490
--- /dev/null
@@ -0,0 +1,108 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic semantic checks on Yacc support (without yacc-generated headers).
+# Keep in sync with sister test 'yacc-cxx.test'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar
+foo_SOURCES = parse.y foo.c
+bar_SOURCES = $(foo_SOURCES)
+bar_YFLAGS = -v
+
+.PHONY: echo-distcom
+echo-distcom:
+       @echo ' ' $(DIST_COMMON) ' '
+END
+
+cat > parse.y << 'END'
+%{
+#include <stdio.h>
+#include <stdlib.h>
+int yylex () { return getchar (); }
+void yyerror (char *s) {}
+%}
+%%
+a : 'a' { exit(0); };
+END
+
+cat > foo.c << 'END'
+int main () { yyparse (); return 1; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+ls -l
+# The Yacc-derived C sources must be created, and not removed once
+# compiled (i.e., not treated like "intermediate files" in the GNU
+# make sense).
+test -f parse.c
+test -f bar-parse.c
+# Check that per-object flags are honored.
+test -f bar-parse.output
+
+if cross_compiling; then :; else
+  echo a | ./foo
+  echo b | ./foo && Exit 1
+  echo a | ./bar
+  echo b | ./bar && Exit 1
+  : For shells with busted 'set -e'.
+fi
+
+# The Yacc-derived C sources must be shipped.
+$MAKE echo-distcom
+$MAKE -s echo-distcom | grep '[ /]parse\.c '
+$MAKE -s echo-distcom | grep '[ /]bar-parse\.c '
+$MAKE distdir
+ls -l $distdir
+test -f $distdir/parse.c
+test -f $distdir/bar-parse.c
+
+# Sanity check on distribution.
+# Note that, for this to succeed, bar-parse.output must either not
+# be distributed, or properly cleaned by automake-generated rules.
+# We don't want to set the exact semantics yet, but want to ensure
+# they are are consistent.
+yl_distcheck
+
+# Make sure that the Yacc-derived C sources are erased by
+# maintainer-clean, and not by distclean.
+test -f parse.c
+test -f bar-parse.c
+$MAKE distclean
+ls -l
+test -f parse.c
+test -f bar-parse.c
+./configure # We must re-create 'Makefile'.
+$MAKE maintainer-clean
+ls -l
+test ! -f parse.c
+test ! -f bar-parse.c
+
+:
diff --git a/t/yacc-bison-skeleton-cxx.sh b/t/yacc-bison-skeleton-cxx.sh
new file mode 100755 (executable)
index 0000000..f5d8545
--- /dev/null
@@ -0,0 +1,98 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure bison + bison's C++ skeleton + C++ works.
+# For Automake bug#7648 and PR automake/491.
+
+required='c++ bison'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.yy foo.cc
+
+# This is required even with %defines in zardoz.yy.
+AM_YFLAGS = -d
+
+BUILT_SOURCES = zardoz.hh
+EXTRA_DIST = stack.hh location.hh position.hh
+END
+
+cat > zardoz.yy << 'END'
+%skeleton "lalr1.cc"
+%defines
+
+%{
+#define YYSTYPE int
+int yylex(YYSTYPE* yylval_param);
+%}
+
+%%
+start :        /* empty */
+%%
+
+int
+yylex(YYSTYPE*)
+{
+    return 0;
+}
+
+void
+yy::parser::error(const yy::parser::location_type&, const std::string& m)
+{
+    return;
+}
+END
+
+cat > foo.cc << 'END'
+#include "zardoz.hh"
+
+using namespace std;
+
+int
+main(int argc, char** argv)
+{
+  yy::parser my_parser;
+  return my_parser.parse ();
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Try a VPATH build first.
+mkdir build
+cd build
+../configure YACC='bison -y'
+$MAKE
+cd ..
+
+# Now try an in-tree build.
+./configure YACC='bison -y'
+$MAKE
+
+# Check that distribution is self-contained, and do not require
+# bison to be built.
+env YACC=false DISTCHECK_CONFIGURE_FLAGS='YACC=false' $MAKE -e distcheck
+
+:
diff --git a/t/yacc-bison-skeleton.sh b/t/yacc-bison-skeleton.sh
new file mode 100755 (executable)
index 0000000..8cf957b
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure bison + bison's skeleton works.
+# For Automake bug#7648 and PR automake/491.
+
+required='cc bison'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.y foo.c
+AM_YFLAGS = -d --skeleton glr.c
+END
+
+# Parser.
+cat > zardoz.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (const char *s) { return; }
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+cat > foo.c << 'END'
+#include "zardoz.h"
+int main (void)
+{
+  return yyparse ();
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Try a VPATH build first.
+mkdir build
+cd build
+../configure YACC='bison -y'
+$MAKE
+cd ..
+
+# Now try an in-tree build.
+./configure YACC='bison -y'
+$MAKE
+
+# Check that distribution is self-contained, and do not require
+# bison to be built.
+env YACC=false DISTCHECK_CONFIGURE_FLAGS='YACC=false' $MAKE -e distcheck
+
+:
diff --git a/t/yacc-clean-cxx.sh b/t/yacc-clean-cxx.sh
new file mode 100755 (executable)
index 0000000..399f026
--- /dev/null
@@ -0,0 +1,164 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that C++ source and header files derived from non-distributed
+# Yacc sources are cleaned by "make clean", while C++ source and
+# header files derived from distributed Yacc sources are cleaned by
+# "make maintainer-clean".
+# See also sister test 'yacc-clean.test'.
+
+required='c++ yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_YACC
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# Use two subdirectories, one to test with '-d' in YFLAGS, the
+# other one to test with empty YFLAGS.
+SUBDIRS = sub1 sub2
+END
+
+mkdir sub1 sub2
+
+cat > sub1/Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz qux
+
+foo_SOURCES = mainfoo.cc parsefoo.yxx
+
+bar_SOURCES = mainbar.cpp parsebar.yy
+bar_YFLAGS = $(AM_YFLAGS)
+
+baz_SOURCES = mainbaz.c++
+nodist_baz_SOURCES = parsebaz.y++
+
+qux_SOURCES = mainqux.cxx
+nodist_qux_SOURCES = parsequx.ypp
+qux_YFLAGS = $(AM_YFLAGS)
+
+parsebaz.y++ parsequx.ypp:
+       cp $(srcdir)/parsefoo.yxx $@
+
+CLEANFILES = parsebaz.y++ parsequx.ypp
+END
+
+cat > sub2/Makefile.am << 'END'
+include $(top_srcdir)/sub1/Makefile.am
+AM_YFLAGS = -d
+END
+
+cat > sub1/parsefoo.yxx << 'END'
+%{
+// This file should contain valid C++ but invalid C.
+#include <cstdio>
+// "std::" qualification required by Sun C++ 5.9.
+int yylex (void) { return std::getchar (); }
+void yyerror (const char *s) { return; }
+%}
+%%
+x : 'x' { };
+END
+cp sub1/parsefoo.yxx sub1/parsebar.yy
+cp sub1/parsefoo.yxx sub2/parsefoo.yxx
+cp sub1/parsefoo.yxx sub2/parsebar.yy
+
+cat > sub1/mainfoo.cc << 'END'
+// This file should contain valid C++ but invalid C.
+using namespace std;
+int main (int argc, char **argv)
+{
+  extern int yyparse (void);
+  return yyparse ();
+}
+END
+cp sub1/mainfoo.cc sub1/mainbar.cpp
+cp sub1/mainfoo.cc sub1/mainbaz.c++
+cp sub1/mainfoo.cc sub1/mainqux.cxx
+cp sub1/main???.c* sub2
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+cp config.status config.sav
+
+$MAKE
+ls -l . sub1 sub2
+# Sanity checks.
+test -f sub1/parsefoo.cxx
+test -f sub1/bar-parsebar.cc
+test -f sub1/parsebaz.y++
+test -f sub1/parsebaz.c++
+test -f sub1/parsequx.ypp
+test -f sub1/qux-parsequx.cpp
+test -f sub2/parsefoo.cxx
+test -f sub2/parsefoo.hxx
+test -f sub2/bar-parsebar.cc
+test -f sub2/bar-parsebar.hh
+test -f sub2/parsebaz.y++
+test -f sub2/parsebaz.c++
+test -f sub2/parsebaz.h++
+test -f sub2/parsequx.ypp
+test -f sub2/qux-parsequx.cpp
+test -f sub2/qux-parsequx.hpp
+
+for target in clean distclean; do
+  $MAKE $target
+  ls -l . sub1 sub2
+  test -f sub1/parsefoo.cxx
+  test -f sub1/bar-parsebar.cc
+  test ! -r sub1/parsebaz.y++
+  test ! -r sub1/parsebaz.c++
+  test ! -r sub1/parsequx.ypp
+  test ! -r sub1/qux-parsequx.cpp
+  test -f sub2/parsefoo.cxx
+  test -f sub2/parsefoo.hxx
+  test -f sub2/bar-parsebar.cc
+  test -f sub2/bar-parsebar.hh
+  test ! -r sub2/parsebaz.y++
+  test ! -r sub2/parsebaz.c++
+  test ! -r sub2/parsebaz.h++
+  test ! -r sub2/parsequx.ypp
+  test ! -r sub2/qux-parsequx.cpp
+  test ! -r sub2/qux-parsequx.hpp
+done
+
+cp config.sav config.status
+./config.status # re-create Makefile
+
+$MAKE maintainer-clean
+ls -l . sub1 sub2
+test -f sub1/parsefoo.yxx
+test -f sub1/parsebar.yy
+test ! -r sub1/parsefoo.cxx
+test ! -r sub1/bar-parsebar.cc
+test -f sub2/parsefoo.yxx
+test -f sub2/parsebar.yy
+test ! -r sub2/parsefoo.cxx
+test ! -r sub2/parsefoo.hxx
+test ! -r sub2/bar-parsebar.cc
+test ! -r sub2/bar-parsebar.hh
+
+cp config.sav config.status
+./config.status # re-create Makefile
+
+:
diff --git a/t/yacc-clean.sh b/t/yacc-clean.sh
new file mode 100755 (executable)
index 0000000..530f87f
--- /dev/null
@@ -0,0 +1,147 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that .c and .h files derived from non-distributed .y sources
+# are cleaned by "make clean", while .c and .h files derived from
+# distributed .y sources are cleaned by "make maintainer-clean".
+# See also sister test 'yacc-cxx-clean.test'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# Use two subdirectories, one to test with '-d' in YFLAGS, the
+# other one to test with empty YFLAGS.
+SUBDIRS = sub1 sub2
+END
+
+mkdir sub1 sub2
+
+cat > sub1/Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz qux
+
+foo_SOURCES = main.c parse.y
+
+bar_SOURCES = main.c parse.y
+bar_YFLAGS = $(AM_YFLAGS)
+
+baz_SOURCES = main.c
+nodist_baz_SOURCES = baz.y
+
+qux_SOURCES = main.c
+nodist_qux_SOURCES = baz.y
+qux_YFLAGS = $(AM_YFLAGS)
+
+baz.y:
+       cp $(srcdir)/parse.y $@
+
+CLEANFILES = baz.y
+END
+
+cat > sub2/Makefile.am << 'END'
+include $(top_srcdir)/sub1/Makefile.am
+AM_YFLAGS = -d
+END
+
+cat > sub1/parse.y << 'END'
+%{
+int yylex () { return (getchar ()); }
+void yyerror (char *s) {}
+%}
+%%
+x : 'x' { };
+END
+cp sub1/parse.y sub2/parse.y
+
+cat > sub1/main.c << 'END'
+int main ()
+{
+  return yyparse ();
+}
+END
+cp sub1/main.c sub2/main.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+cp config.status config.sav
+
+$MAKE
+ls -l . sub1 sub2
+# Sanity checks.
+test -f sub1/parse.y
+test -f sub1/parse.c
+test -f sub1/bar-parse.c
+test -f sub1/baz.y
+test -f sub1/baz.c
+test -f sub1/qux-baz.c
+test -f sub2/parse.y
+test -f sub2/parse.c
+test -f sub2/parse.h
+test -f sub2/bar-parse.c
+test -f sub2/bar-parse.h
+test -f sub2/baz.y
+test -f sub2/baz.c
+test -f sub2/baz.h
+test -f sub2/qux-baz.c
+test -f sub2/qux-baz.h
+
+for target in clean distclean; do
+  $MAKE $target
+  ls -l . sub1 sub2
+  test -f sub1/parse.y
+  test -f sub1/parse.c
+  test -f sub1/bar-parse.c
+  test ! -r sub1/baz.y
+  test ! -r sub1/baz.c
+  test ! -r sub1/qux-baz.c
+  test -f sub2/parse.y
+  test -f sub2/parse.c
+  test -f sub2/parse.h
+  test -f sub2/bar-parse.c
+  test -f sub2/bar-parse.h
+  test ! -r sub2/baz.y
+  test ! -r sub2/baz.c
+  test ! -r sub2/baz.h
+  test ! -r sub2/qux-baz.c
+  test ! -r sub2/qux-baz.h
+done
+
+cp config.sav config.status
+./config.status # Re-create 'Makefile'.
+
+$MAKE maintainer-clean
+ls -l . sub1 sub2
+test -f sub1/parse.y
+test ! -r sub1/parse.c
+test ! -r sub1/bar-parse.c
+test -f sub2/parse.y
+test ! -r sub2/parse.c
+test ! -r sub2/parse.h
+test ! -r sub2/bar-parse.c
+test ! -r sub2/bar-parse.h
+
+:
diff --git a/t/yacc-cxx.sh b/t/yacc-cxx.sh
new file mode 100755 (executable)
index 0000000..41a25ec
--- /dev/null
@@ -0,0 +1,140 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic semantic checks on Yacc + C++ support (when yacc-generated
+# headers are not involved).
+# Keep in sync with sister test 'yacc-basic.test'.
+
+required='c++ yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo1 foo2 foo3 foo4
+foo1_SOURCES = parse1.yy  foo.cc
+foo2_SOURCES = parse2.y++ bar.c++
+foo3_SOURCES = parse3.yxx foo.cc
+foo4_SOURCES = parse4.ypp bar2.cxx
+foo3_YFLAGS = -v
+foo4_YFLAGS = $(foo3_YFLAGS)
+
+.PHONY: echo-distcom
+echo-distcom:
+       @echo ' ' $(DIST_COMMON) ' '
+END
+
+cat > parse1.yy << 'END'
+%{
+// Valid C++, but deliberately invalid C.
+#include <cstdio>
+#include <cstdlib>
+// "std::" qualification required by Sun C++ 5.9.
+int yylex (void) { return std::getchar (); }
+void yyerror (const char *s) { return; }
+%}
+%%
+a : 'a' { exit(0); };
+END
+cp parse1.yy parse2.y++
+cp parse1.yy parse3.yxx
+cp parse1.yy parse4.ypp
+
+cat > foo.cc << 'END'
+// Valid C++, but deliberately invalid C.
+using namespace std;
+int main (int argc, char **argv)
+{
+  int yyparse (void);
+  yyparse ();
+  return 1;
+}
+END
+cp foo.cc bar.c++
+cp foo.cc bar2.cxx
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE
+
+# The Yacc-derived C++ sources must be created, and not removed once
+# compiled (i.e., not treated like "intermediate files" in the GNU
+# make sense).
+test -f parse1.cc
+test -f parse2.c++
+test -f foo3-parse3.cxx
+test -f foo4-parse4.cpp
+# Check that per-object flags are honored.
+test -f foo3-parse3.output
+test -f foo4-parse4.output
+
+if cross_compiling; then :; else
+  for i in 1 2 3 4; do
+    echo a | ./foo$i
+    echo b | ./foo$i && Exit 1
+    : For shells with busted 'set -e'.
+  done
+fi
+
+# The Yacc-derived C++ sources must be shipped.
+$MAKE echo-distcom
+$MAKE -s echo-distcom | grep '[ /]parse1\.cc '
+$MAKE -s echo-distcom | grep '[ /]parse2\.c++ '
+$MAKE -s echo-distcom | grep '[ /]foo3-parse3\.cxx '
+$MAKE -s echo-distcom | grep '[ /]foo4-parse4\.cpp '
+$MAKE distdir
+ls -l $distdir
+test -f $distdir/parse1.cc
+test -f $distdir/parse2.c++
+test -f $distdir/foo3-parse3.cxx
+test -f $distdir/foo4-parse4.cpp
+
+# Sanity check on distribution.
+# Note that, for this to succeed, foo3-parse3.output and foo4-parse4.output
+# must either not be distributed, or properly cleaned by automake-generated
+# rules.  We don't want to set the exact semantics yet, but want to ensure
+# they are are consistent.
+yl_distcheck
+
+# Make sure that the Yacc-derived C++ sources are erased by
+# maintainer-clean, and not by distclean.
+test -f parse1.cc
+test -f parse2.c++
+test -f foo3-parse3.cxx
+test -f foo4-parse4.cpp
+$MAKE distclean
+ls -l
+test -f parse1.cc
+test -f parse2.c++
+test -f foo3-parse3.cxx
+test -f foo4-parse4.cpp
+./configure # Re-create 'Makefile'.
+$MAKE maintainer-clean
+ls -l
+test ! -f parse1.cc
+test ! -f parse2.c++
+test ! -f foo3-parse3.cxx
+test ! -f foo4-parse4.cpp
+
+:
diff --git a/t/yacc-d-basic.sh b/t/yacc-d-basic.sh
new file mode 100755 (executable)
index 0000000..a633f41
--- /dev/null
@@ -0,0 +1,154 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Tests Yacc support with yacc-generated headers
+# (i.e., '-d' in *YFLAGS).
+# Keep in sync with sister test 'yacc-d-cxx.test'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_CONFIG_FILES([foo/Makefile bar/Makefile baz/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+SUBDIRS = foo bar baz
+END
+
+mkdir foo bar baz
+
+cat > foo/Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = parse.y main.c
+.PHONY: echo-distcom
+echo-distcom:
+       @echo ' ' $(DIST_COMMON) ' '
+END
+cp foo/Makefile.am bar/Makefile.am
+cp foo/Makefile.am baz/Makefile.am
+
+cat > foo/parse.y << 'END'
+%{
+#include "parse.h"
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+x : 'x' {};
+%%
+END
+cp foo/parse.y bar/parse.y
+
+cat > foo/main.c << 'END'
+#include "parse.h"
+int main ()
+{
+  return yyparse ();
+}
+END
+cp foo/main.c bar/main.c
+
+# Even the generated header file is renamed when target-specific YFLAGS
+# are used.  This might not be the best behavior, but it has been in
+# place for quite a long time, so just go along with it for now.
+sed 's/"parse\.h"/"zardoz-parse.h"/' foo/parse.y > baz/parse.y
+sed 's/"parse\.h"/"zardoz-parse.h"/' foo/main.c > baz/main.c
+
+$ACLOCAL
+$AUTOCONF
+
+$AUTOMAKE -a
+$FGREP parse.h foo/Makefile.in bar/Makefile.in baz/Makefile.in && Exit 1
+
+cat >> foo/Makefile.am <<END
+BUILT_SOURCES = parse.h
+YFLAGS=\
+-d
+END
+$AUTOMAKE -Wno-gnu foo/Makefile
+
+sed 's/EOL$//' >> bar/Makefile.am <<END
+AM_YFLAGS${tab}=  -d EOL
+BUILT_SOURCES = parse.h
+END
+$AUTOMAKE bar/Makefile
+
+cat >> baz/Makefile.am <<END
+BUILT_SOURCES = zardoz-parse.h
+zardoz_YFLAGS =-d${tab}
+END
+$AUTOMAKE baz/Makefile
+
+./configure
+
+$MAKE
+
+test -f foo/parse.c
+test -f foo/parse.h
+test -f bar/parse.c
+test -f bar/parse.h
+test -f baz/zardoz-parse.c
+test -f baz/zardoz-parse.h
+
+# The generated C source and header files must be shipped.
+for dir in foo bar; do
+  cd $dir
+  $MAKE echo-distcom
+  $MAKE -s echo-distcom | grep '[ /]parse.c '
+  $MAKE -s echo-distcom | grep '[ /]parse.h '
+  cd ..
+done
+cd baz
+$MAKE echo-distcom
+$MAKE -s echo-distcom | grep '[ /]zardoz-parse.c '
+$MAKE -s echo-distcom | grep '[ /]zardoz-parse.h '
+cd ..
+
+$MAKE distdir
+ls -l $distdir
+test -f $distdir/foo/parse.c
+test -f $distdir/foo/parse.h
+test -f $distdir/bar/parse.c
+test -f $distdir/bar/parse.h
+test -f $distdir/baz/zardoz-parse.c
+test -f $distdir/baz/zardoz-parse.h
+
+# Sanity check the distribution.
+yl_distcheck
+
+# While we are at it, make sure that 'parse.c' and 'parse.h' are erased
+# by maintainer-clean, and not by distclean.
+$MAKE distclean
+test -f foo/parse.c
+test -f foo/parse.h
+test -f bar/parse.c
+test -f bar/parse.h
+test -f baz/zardoz-parse.c
+test -f baz/zardoz-parse.h
+./configure # Re-create 'Makefile'.
+$MAKE maintainer-clean
+test ! -f foo/parse.c
+test ! -f foo/parse.h
+test ! -f bar/parse.c
+test ! -f bar/parse.h
+test ! -f baz/zardoz-parse.c
+test ! -f baz/zardoz-parse.h
+
+:
diff --git a/t/yacc-d-cxx.sh b/t/yacc-d-cxx.sh
new file mode 100755 (executable)
index 0000000..1f667c8
--- /dev/null
@@ -0,0 +1,232 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Various tests on Yacc/C++ support with yacc-generated headers
+# (i.e., '-d' in *YFLAGS).
+# Keep in sync with sister test 'yacc-d-basic.test'.
+
+required='c++ yacc'
+. ./defs || Exit 1
+
+write_parse ()
+{
+  header=$1
+  unindent <<END
+    %{
+    // Valid C++, but deliberately invalid C.
+    #include <cstdlib>
+    #include "$header"
+    int yylex (void) { return 0; }
+    void yyerror (const char *s) {}
+    %}
+    %%
+    x : 'x' {};
+    %%
+END
+}
+
+write_main ()
+{
+  header=$1
+  unindent <<END
+    // Valid C++, but deliberately invalid C.
+    #include <cstdio>
+    #include "$header"
+    int main (int argc, char **argv)
+    {
+      int yyparse (void);
+      return yyparse ();
+    }
+END
+}
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_YACC
+AC_CONFIG_FILES([foo/Makefile bar/Makefile baz/Makefile qux/Makefile])
+AC_OUTPUT
+END
+
+mkdir foo bar baz qux baz/sub
+
+# These makefiles will be extended later.
+cat > Makefile.am <<'END'
+.PHONY: echo-distcom
+echo-distcom:
+       @echo ' ' $(DIST_COMMON) ' '
+END
+cp Makefile.am foo/Makefile.am
+cp Makefile.am bar/Makefile.am
+cp Makefile.am baz/Makefile.am
+cp Makefile.am qux/Makefile.am
+
+cat >> Makefile.am <<'END'
+SUBDIRS = foo bar baz qux
+END
+
+$ACLOCAL
+$AUTOCONF
+
+cp "$am_scriptdir/ylwrap" . \
+  || fatal_ "cannot fetch auxiliary script 'ylwrap'"
+
+$AUTOMAKE Makefile
+
+# Try with -d in $(YFLAGS) (don't do this in real life!).
+cat >> foo/Makefile.am <<END
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = parse.yy main.cc
+BUILT_SOURCES = parse.hh
+YFLAGS=\
+-d
+END
+
+$AUTOMAKE -Wno-gnu foo/Makefile
+
+write_parse parse.hh > foo/parse.yy
+write_main parse.hh > foo/main.cc
+
+# Try with -d in $(AM_YFLAGS).
+cat >> bar/Makefile.am <<END
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = parse.ypp main.cpp
+BUILT_SOURCES = parse.hpp
+AM_YFLAGS${tab}=  -d ${tab}
+END
+
+$AUTOMAKE bar/Makefile
+
+write_parse parse.hpp > bar/parse.ypp
+write_main parse.hpp > bar/main.cpp
+
+# Try with -d in $(AM_YFLAGS), and a subdir parser.
+cat >> baz/Makefile.am <<END
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = joe
+joe_SOURCES = sub/parse.y++ sub/main.c++
+BUILT_SOURCES = sub/parse.h++
+AM_YFLAGS = \
+${tab}-d
+END
+
+$AUTOMAKE baz/Makefile
+
+write_parse sub/parse.h++ > baz/sub/parse.y++
+write_main sub/parse.h++ > baz/sub/main.c++
+
+# Try with -d in $(xxx_YFLAGS) (per-object flag).
+cat >> qux/Makefile.am <<END
+bin_PROGRAMS = maude
+maude_SOURCES = parse.yxx main.cxx
+maude_YFLAGS=${tab}  -d${tab}
+BUILT_SOURCES = maude-parse.hxx
+END
+
+$AUTOMAKE qux/Makefile
+
+write_parse maude-parse.hxx > qux/parse.yxx
+write_main maude-parse.hxx > qux/main.cxx
+
+./configure
+
+$MAKE
+ls -l . foo bar baz baz/sub qux # For debugging.
+
+test -f foo/parse.cc
+test -f foo/parse.hh
+test -f bar/parse.cpp
+test -f bar/parse.hpp
+test -f baz/sub/parse.c++
+test -f baz/sub/parse.h++
+test -f qux/maude-parse.cxx
+test -f qux/maude-parse.hxx
+
+# The ylwrap script must be shipped.
+$MAKE echo-distcom
+$MAKE -s echo-distcom | grep '[ /]ylwrap '
+
+# The generated C++ source and header files must be shipped.
+cd foo
+$MAKE echo-distcom
+$MAKE -s echo-distcom | grep '[ /]parse\.cc '
+$MAKE -s echo-distcom | grep '[ /]parse\.hh '
+cd ..
+cd bar
+$MAKE echo-distcom
+$MAKE -s echo-distcom | grep '[ /]parse\.cpp '
+$MAKE -s echo-distcom | grep '[ /]parse\.hpp '
+cd ..
+cd baz
+$MAKE echo-distcom
+$MAKE -s echo-distcom | grep '[ /]sub/parse\.c++ '
+$MAKE -s echo-distcom | grep '[ /]sub/parse\.h++ '
+cd ..
+cd qux
+$MAKE echo-distcom
+$MAKE -s echo-distcom | grep '[ /]maude-parse\.cxx '
+$MAKE -s echo-distcom | grep '[ /]maude-parse\.hxx '
+cd ..
+
+$MAKE distdir
+find $distdir # For debugging.
+
+test -f $distdir/ylwrap
+test -f $distdir/foo/parse.cc
+test -f $distdir/foo/parse.hh
+test -f $distdir/bar/parse.cpp
+test -f $distdir/bar/parse.hpp
+test -f $distdir/baz/sub/parse.c++
+test -f $distdir/baz/sub/parse.h++
+test -f $distdir/qux/maude-parse.cxx
+test -f $distdir/qux/maude-parse.hxx
+
+# The Yacc-derived C++ sources must be created, and not removed once
+# compiled (i.e., not treated like "intermediate files" in the GNU
+# make sense).
+yl_distcheck
+
+# Check that we can recover from deleted headers.
+$MAKE clean
+rm -f foo/parse.hh bar/parse.hpp baz/sub/parse.h++ qux/maude-parse.hxx
+$MAKE
+test -f foo/parse.hh
+test -f bar/parse.hpp
+test -f baz/sub/parse.h++
+test -f qux/maude-parse.hxx
+
+# Make sure that the Yacc-derived C++ sources are erased by
+# maintainer-clean, and not by distclean.
+$MAKE distclean
+test -f foo/parse.cc
+test -f foo/parse.hh
+test -f bar/parse.cpp
+test -f bar/parse.hpp
+test -f baz/sub/parse.c++
+test -f baz/sub/parse.h++
+test -f qux/maude-parse.cxx
+test -f qux/maude-parse.hxx
+./configure # Re-create 'Makefile'.
+$MAKE maintainer-clean
+test ! -f foo/parse.cc
+test ! -f foo/parse.hh
+test ! -f bar/parse.cpp
+test ! -f bar/parse.hpp
+test ! -f baz/sub/parse.c++
+test ! -f baz/sub/parse.h++
+test ! -f qux/maude-parse.cxx
+test ! -f qux/maude-parse.hxx
+
+:
diff --git a/t/yacc-d-vpath.sh b/t/yacc-d-vpath.sh
new file mode 100755 (executable)
index 0000000..78a486a
--- /dev/null
@@ -0,0 +1,108 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This test checks that dependent files are updated before including
+# in the distribution. 'parse.c' depends on 'parse.y'.  The latter is
+# updated so that 'parse.c' should be rebuilt.  Then we are running
+# 'make' and 'make distdir' and check whether the version of 'parse.c'
+# to be distributed is up to date.
+
+# Please keep this in sync with sister test 'yaccvpath.test'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = parse.y foo.c
+AM_YFLAGS = -d
+END
+
+# Original parser, with 'foobar'.
+cat > parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%token FOOBAR
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+cat > foo.c << 'END'
+#include "parse.h"
+int main () { return 0; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+$YACC -d parse.y
+mv y.tab.c parse.c
+mv y.tab.h parse.h
+# Sanity checks.
+grep foobar parse.c
+grep FOOBAR parse.h
+
+mkdir sub
+cd sub
+../configure
+
+$sleep
+
+# New parser, with 'fubar'.
+cat > ../parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%token FUBAR
+%%
+fubar : 'f' 'u' 'b' 'a' 'r' {};
+END
+
+$MAKE
+$MAKE distdir
+$FGREP fubar $distdir/parse.c
+$FGREP FUBAR $distdir/parse.h
+
+# Now check to make sure that 'make dist' will rebuild the parser.
+
+$sleep
+
+# New parser, with 'maude'.
+cat > ../parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%token MAUDE
+%%
+maude : 'm' 'a' 'u' 'd' 'e' {};
+END
+
+$MAKE distdir
+$FGREP maude $distdir/parse.c
+$FGREP MAUDE $distdir/parse.h
+
+:
diff --git a/t/yacc-deleted-headers.sh b/t/yacc-deleted-headers.sh
new file mode 100755 (executable)
index 0000000..3ac0254
--- /dev/null
@@ -0,0 +1,163 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Tests that we can recover from deleted headers generated by 'yacc -d'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = p1 p2 p3 p4
+# The order in which files are listed in the p*_SOURCES variables
+# below is significant, since it causes make failures whenever
+# the proper definition of BUILT_SOURCES or the declaration of
+# extra dependencies for 'main3.o' are removed.
+p1_SOURCES = main1.c parse1.y
+p2_SOURCES = main2.c parse2.y
+p3_SOURCES = main3.c parse3.y parse3.h
+p4_SOURCES = parse4.y
+AM_YFLAGS = -d
+p2_YFLAGS = -d
+
+BUILT_SOURCES = parse1.h p2-parse2.h
+
+# When we know which files include a yacc-generated header, we
+# should be able to just declare dependencies directly instead
+# of relying on the BUILT_SOURCES hack, and things should still
+# work correctly.
+main3.@OBJEXT@: parse3.h
+
+.PHONY: clean-p3 build-p3
+build-p3: p3$(EXEEXT)
+clean-p3:
+       rm -f p3$(EXEEXT)
+END
+
+cat > parse1.y << 'END'
+%{
+#include "parse1.h"
+int yylex () { return 0; }
+void yyerror (char *s) { return; }
+%}
+%token ZARDOZ
+%%
+x : 'x' {};
+%%
+END
+
+cat > main1.c << 'END'
+#include "parse1.h"
+int main (void)
+{
+  return ZARDOZ + yyparse ();
+}
+END
+
+sed 's/"parse1\.h"/"p2-parse2.h"/' parse1.y > parse2.y
+sed 's/"parse1\.h"/"p2-parse2.h"/' main1.c > main2.c
+
+sed 's/"parse1\.h"/"parse3.h"/' parse1.y > parse3.y
+sed 's/"parse1\.h"/"parse3.h"/' main1.c > main3.c
+
+cat > parse4.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) { return; }
+%}
+%%
+x : 'x' {};
+%%
+int main (void)
+{
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+
+headers='parse1.h p2-parse2.h parse3.h parse4.h'
+
+# Check that we remake only the necessary headers.
+
+rm -f $headers
+$MAKE parse1.h
+test -f parse1.h
+test ! -r p2-parse2.h
+test ! -r parse3.h
+test ! -r parse4.h
+
+rm -f $headers
+$MAKE p2-parse2.h
+test ! -r parse1.h
+test -f p2-parse2.h
+test ! -r parse3.h
+test ! -r parse4.h
+
+rm -f $headers
+$MAKE parse3.h
+test ! -r parse1.h
+test ! -r p2-parse2.h
+test -f parse3.h
+test ! -r parse4.h
+# Since we declared parse3.h into $(p3_SOURCES), make should be
+# able to rebuild it automatically before remaking 'p3'.
+rm -f $headers
+$MAKE clean-p3
+test ! -f parse3.h # Sanity check.
+$MAKE build-p3
+test -f parse3.h
+
+$MAKE
+
+rm -f $headers
+$MAKE parse4.h
+test ! -r parse1.h
+test ! -r p2-parse2.h
+test ! -r parse3.h
+test -f parse4.h
+
+# Now remake all the headers together.
+
+rm -f $headers
+$MAKE $headers
+test -f parse1.h
+test -f p2-parse2.h
+test -f parse3.h
+test -f parse4.h
+
+# Most headers should be remade by "make all".
+
+rm -f $headers
+$MAKE all
+test -f parse1.h
+test -f p2-parse2.h
+test -f parse3.h
+# parse4.h is not declared in any *_SOURCES variable, nor #included
+# by any C source file, so it shouldn't be rebuilt by "make all".
+test ! -r parse4.h
+
+:
diff --git a/t/yacc-depend.sh b/t/yacc-depend.sh
new file mode 100755 (executable)
index 0000000..04ddb52
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure depcomp does not needlessly update headers for yacc rules.
+# Report from Paolo Bonzini.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+AM_YFLAGS = -d
+foo_SOURCES = foo.y main.c
+BUILT_SOURCES = foo.h
+END
+
+cat > foo.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) { return; }
+%}
+%token TOKEN
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+
+cat > main.c << 'END'
+#include "foo.h"
+int main(void)
+{
+  return yyparse ();
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Try to enable dependency tracking if possible, even if that means
+# using slow dependency extractors.
+./configure --enable-dependency-tracking
+$MAKE
+ls -l # For debugging.
+
+# Make sure foo.h is not updated if not really needed.
+$sleep
+: > my-timestamp
+$sleep
+touch foo.y
+$MAKE
+stat my-timestamp foo.* || : # For debugging.
+is_newest my-timestamp foo.h
+
+# Make sure foo.h is updated if needed.
+$sleep
+sed 's/TOKEN/TEKON/g' foo.y > t
+mv -f t foo.y
+$MAKE
+stat my-timestamp foo.* || : # For debugging.
+is_newest foo.h my-timestamp
+
+:
diff --git a/t/yacc-depend2.sh b/t/yacc-depend2.sh
new file mode 100755 (executable)
index 0000000..df48a0b
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure depcomp does not needlessly update headers and objects
+# for yacc rules.  This test still fails with FreeBSD make (but passes
+# with NetBSD make).
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+AM_YFLAGS = -d
+foo_SOURCES = foo.y main.c
+BUILT_SOURCES = foo.h
+.PHONY: debug-info test-time-unchanged test-time-changed
+debug-info:
+       ls -l
+       stat *.[ch] *.$(OBJEXT) my-timestamp || :
+test-time-unchanged: debug-info
+       test `ls -1t main.$(OBJEXT) my-timestamp | sed 1q` = my-timestamp
+test-time-changed: debug-info
+       test `ls -1t main.$(OBJEXT) my-timestamp | sed 1q` = main.$(OBJEXT)
+END
+
+cat > foo.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) { return; }
+%}
+%token TOKEN
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+
+cat > main.c << 'END'
+#include "foo.h"
+int main(void)
+{
+  return yyparse ();
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Try to enable dependency tracking if possible, even if that means
+# using slow dependency extractors.
+./configure --enable-dependency-tracking
+$MAKE
+ls -l # For debugging.
+
+$sleep
+: > my-timestamp
+$sleep
+touch foo.y
+$MAKE
+$MAKE test-time-unchanged
+$sleep
+sed 's/TOKEN/TEKON/g' foo.y > t
+mv -f t foo.y
+$MAKE
+$MAKE test-time-changed
+
+:
diff --git a/t/yacc-dist-nobuild-subdir.sh b/t/yacc-dist-nobuild-subdir.sh
new file mode 100755 (executable)
index 0000000..6cb11ee
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that VPATH builds and "make distcheck" works with packages
+# using yacc and the automake 'subdir-objects' option.
+# Exposes automake bug#8485.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+# This test is bounded to fail for any implementation that
+# triggers automake bug#7884.
+useless_vpath_rebuild && skip_ "would trip on automake bug#7884"
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+mkdir sub
+
+cat > sub/parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) { return; }
+%}
+%%
+x : 'x' {};
+%%
+int main (void)
+{
+  return yyparse ();
+}
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+noinst_PROGRAMS = foo bar
+foo_SOURCES = sub/parse.y
+bar_SOURCES = $(foo_SOURCES)
+AM_YFLAGS = -d
+bar_YFLAGS =
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE distdir
+
+# Yacc-derived C source and header files must be built and distributed.
+
+test   -f sub/parse.c
+test   -f sub/parse.h
+test   -f sub/bar-parse.c
+test ! -r sub/bar-parse.h
+
+test   -f $distdir/sub/parse.c
+test   -f $distdir/sub/parse.h
+test   -f $distdir/sub/bar-parse.c
+test ! -r $distdir/sub/bar-parse.h
+
+# But they shouldn't be rebuilt in VPATH builds.
+
+mkdir $distdir/build
+chmod -R a-w $distdir
+cd $distdir/build
+chmod u+w .
+# Try to enable dependency tracking even with slow dependency
+# extractors, to improve coverage.
+../configure --enable-dependency-tracking YACC=false
+$MAKE
+ls -l sub/*.[ch] && Exit 1
+
+env DISTCHECK_CONFIGURE_FLAGS='YACC=false' $MAKE distcheck
+
+:
diff --git a/t/yacc-dist-nobuild.sh b/t/yacc-dist-nobuild.sh
new file mode 100755 (executable)
index 0000000..6f02f11
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that distributed Yacc-generated parsers are not uselessly
+# remade from an unpacked distributed tarball.
+# See automake bug#7884.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foobar zardoz
+foobar_SOURCES = parse.y main.c
+zardoz_SOURCES = $(foobar_SOURCES)
+zardoz_YFLAGS = -d
+END
+
+cat > parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+cat > main.c << 'END'
+int main () { return 0; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+
+$MAKE distdir
+chmod -R a-w $distdir
+
+mkdir bin
+cat > bin/yacc <<'END'
+#!/bin/sh
+echo "$0 invoked, shouldn't happen!" >&2
+exit 1
+END
+cp bin/yacc bin/bison
+chmod a+x bin/yacc bin/bison
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH
+
+YACC=yacc BISON=bison
+export YACC BISON
+
+mkdir build
+cd build
+../$distdir/configure
+$MAKE
+
+# Sanity check.
+cd ..
+chmod u+w $distdir
+rm -f $distdir/parse.c
+chmod a-w $distdir
+mkdir build2
+cd build2
+../$distdir/configure
+$MAKE >out 2>&1 && { cat out; Exit 1; }
+cat out
+$FGREP parse.c out
+
+:
diff --git a/t/yacc-line.sh b/t/yacc-line.sh
new file mode 100755 (executable)
index 0000000..d122157
--- /dev/null
@@ -0,0 +1,125 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake yacc support ensures that yacc-generated C
+# files use correct "#line" directives.  Try also with the
+# 'subdir-object' option enabled.
+# See also sister test 'lex-line.test'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+mkdir dir sub sub/dir
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub
+bin_PROGRAMS = foo bar
+AM_YFLAGS = -d
+bar_YFLAGS =
+foo_SOURCES = zardoz.y
+bar_SOURCES = dir/quux.y
+## Avoid spurious failures with Solaris make.
+zardoz.@OBJEXT@: zardoz.c
+bar-quux.@OBJEXT@: bar-quux.c
+END
+
+cat > sub/Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+noinst_PROGRAMS = foo bar
+foo_YFLAGS = -d
+foo_SOURCES = zardoz.y
+bar_SOURCES = dir/quux.y
+## Avoid spurious failures with Solaris make.
+foo-zardoz.@OBJEXT@: foo-zardoz.c
+dir/quux.@OBJEXT@: dir/quux.c
+END
+
+cat > zardoz.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) { return; }
+%}
+%%
+x : 'x' {};
+%%
+int main(void)
+{
+  return yyparse ();
+}
+END
+
+cp zardoz.y dir/quux.y
+cp zardoz.y sub/zardoz.y
+cp zardoz.y sub/dir/quux.y
+
+c_outputs='zardoz.c bar-quux.c sub/foo-zardoz.c sub/dir/quux.c'
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+for vpath in : false; do
+
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE
+
+  # For debugging,
+  ls -l . sub sub/dir
+  $EGREP 'line|\.y' $c_outputs
+
+  # Adjusted "#line" should not contain reference to the builddir.
+  grep '#.*line.*build.*\.y' $c_outputs && Exit 1
+  # Adjusted "#line" should not contain reference to the absolute
+  # srcdir.
+  $EGREP '#.*line *"?/.*\.y' $c_outputs && Exit 1
+  # Adjusted "#line" should not contain reference to the default
+  # output file names, e.g., 'y.tab.c' and 'y.tab.h'.
+  grep '#.*line.*y\.tab\.' $c_outputs && Exit 1
+  # Look out for a silly regression.
+  grep "#.*\.y.*\.y" $c_outputs && Exit 1
+  if $vpath; then
+    grep '#.*line.*"\.\./zardoz\.y"' zardoz.c
+    grep '#.*line.*"\.\./dir/quux\.y"' bar-quux.c
+    grep '#.*line.*"\.\./\.\./sub/zardoz\.y"' sub/foo-zardoz.c
+    grep '#.*line.*"\.\./\.\./sub/dir/quux\.y"' sub/dir/quux.c
+  else
+    grep '#.*line.*"zardoz\.y"' zardoz.c
+    grep '#.*line.*"dir/quux\.y"' bar-quux.c
+    grep '#.*line.*"zardoz\.y"' sub/foo-zardoz.c
+    grep '#.*line.*"dir/quux\.y"' sub/dir/quux.c
+  fi
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/yacc-mix-c-cxx.sh b/t/yacc-mix-c-cxx.sh
new file mode 100755 (executable)
index 0000000..d122942
--- /dev/null
@@ -0,0 +1,206 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that many different Yacc parsers (both C and C++) can co-exists
+# in the same directory.
+
+required='cc c++ yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = c1 c2 cxx1 cxx2 cxx3
+AM_YFLAGS = -d
+
+c1_SOURCES = p.y p.h 1.c
+c2_SOURCES = p.y 2.c
+c2_YFLAGS =
+
+cxx1_SOURCES = parse.yy main1.cc parse.hh
+
+cxx2_SOURCES = parse2.y++ main2.c++
+cxx2_YFLAGS =
+
+cxx3_SOURCES = parse3.yxx main3.cxx
+
+BUILT_SOURCES = p.h parse.hh parse3.hxx
+END
+
+# The content of all the .c and .y files created below is valid C but
+# deliberately invalid C++.
+# Vice versa, the content of all the .c++, .cxx, .cc, .y++, .yxx and
+# .yy files created below is valid C++ but deliberately invalid C.
+
+cat > p.y <<'END'
+%{
+int yylex (void) { int new = 0; return new; }
+void yyerror (char *s) { return; }
+%}
+%token ZARDOZ
+%%
+x : 'x' {};
+%%
+END
+
+cat > 1.c <<'END'
+#include "p.h"
+int main ()
+{
+    int new = ZARDOZ;
+    return yyparse () + new;
+}
+
+END
+
+cat > 2.c <<'END'
+int main ()
+{
+    int yyparse ();
+    int new = 0;
+    return yyparse () + new;
+}
+END
+
+cat > parse.yy <<'END'
+%{
+#include <cstdlib>
+#include "parse.hh"
+int yylex (void) { return 0; }
+void yyerror (const char *s) { return; }
+%}
+%token FOOBAR
+%%
+x : 'x' {};
+%%
+END
+
+cat > parse2.y++ <<'END'
+%{
+#include <cstdlib>
+int yylex (void) { return 0; }
+void yyerror (const char *s) { return; }
+%}
+%%
+x : 'x' {};
+%%
+END
+
+cat > main1.cc <<'END'
+using namespace std;
+#include "parse.hh"
+int main (int argc, char **argv)
+{
+    int yyparse (void);
+    return yyparse () + FOOBAR;
+}
+END
+
+cat > main2.c++ <<'END'
+using namespace std;
+int main (int argc, char **argv)
+{
+    int yyparse (void);
+    return yyparse ();
+}
+END
+
+edit () { sed -e 's/FOOBAR/BAZQUUX/' -e 's/"parse\.hh"/"parse3.hxx"/'; }
+edit <parse.yy >parse3.yxx
+edit <main1.cc >main3.cxx
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+# Try a VPATH and by default serial build first, and then an in-tree
+# and by default parallel build.
+
+for try in 0 1; do
+
+  if test $try -eq 0; then
+    # VPATH serial build.
+    mkdir build
+    cd build
+    srcdir=..
+    debug_info="ls -l . $srcdir"
+    run_make=$MAKE
+  elif test $try -eq 1; then
+    # In-tree parallel build.
+    srcdir=.
+    debug_info="ls -l"
+    case $MAKE in
+      *\ -j*)
+        # Degree of parallelism already specified by the user: do
+        # not override it.
+        run_make=$MAKE;;
+      *)
+        # Some make implementations (e.g., HP-UX) don't grok '-j',
+        # some require no space between '-j' and the number of jobs
+        # (e.g., older GNU make versions), and some *do* require a
+        # space between '-j' and the number of jobs (e.g., Solaris
+        # dmake).  We need a runtime test to see what works.
+        echo 'all:' > Makefile
+        for run_make in "$MAKE -j3" "$MAKE -j 3" "$MAKE"; do
+          $run_make && break
+        done
+        rm -f Makefile
+    esac
+  else
+    echo "$me: invalid value of \$try '$try'" >&2
+    Exit 99
+  fi
+
+  $srcdir/configure
+
+  $run_make
+  $debug_info
+
+  test -f p.c
+  test -f p.h
+  test -f c2-p.c
+  test ! -r c2-p.h
+
+  test -f parse.cc
+  test -f parse.hh
+  test -f parse3.cxx
+  test -f parse3.hxx
+
+  test -f cxx2-parse2.c++
+  test ! -r parse2.h++
+  test ! -r cxx2-parse2.h++
+
+  # Minimal checks about recovering from header removal.
+  rm -f p.h parse.hh parse3.hxx
+  $run_make p.h parse.hh
+  $debug_info
+  test -f p.h
+  test -f parse.hh
+  test ! -r parse3.hxx
+  $run_make
+  $debug_info
+  test -f parse3.hxx
+
+  cd $srcdir
+
+done
+
+:
diff --git a/t/yacc-nodist.sh b/t/yacc-nodist.sh
new file mode 100755 (executable)
index 0000000..2124357
--- /dev/null
@@ -0,0 +1,104 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Checks for .c and .h files derived from non-distributed yacc sources.
+# The test 'yacc-pr204.test' does similar check with AM_MAINTAINER_MODE
+# enabled.
+# The tests 'lex-nodist.test' and 'lex-pr204.test' does similar checks
+# for lex-generated .c files.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub1 sub2
+.PHONY: test-build test-dist
+test-build: all
+       ls -l . sub1 sub2
+       test -f sub1/parse.y
+       test -f sub1/parse.c
+       test -f sub2/parse.y
+       test -f sub2/parse.c
+       test -f sub2/parse.h
+test-dist: distdir
+       ls -l $(distdir) $(distdir)/sub1 $(distdir)/sub2
+       test ! -r $(distdir)/sub1/parse.y
+       test ! -r $(distdir)/sub1/parse.c
+       test ! -r $(distdir)/sub1/parse.h
+       test ! -r $(distdir)/sub2/parse.y
+       test ! -r $(distdir)/sub2/parse.c
+       test ! -r $(distdir)/sub2/parse.h
+check-local: test-build test-dist
+END
+
+mkdir sub1 sub2
+
+cat > sub1/Makefile.am << 'END'
+parse.y:
+       rm -f $@ $@-t
+       :; { : \
+         && echo "%{" \
+         && echo "int yylex () { return 0; }" \
+         && echo "void yyerror (char *s) {}" \
+         && echo "%}" \
+         && echo "%%" \
+         && echo "maude : 'm' 'a' 'u' 'd' 'e' {}"; \
+       } > $@-t
+       chmod a-w $@-t && mv -f $@-t $@
+
+bin_PROGRAMS = prog
+prog_SOURCES = main.c
+nodist_prog_SOURCES = parse.y
+CLEANFILES = $(nodist_prog_SOURCES)
+END
+
+cat sub1/Makefile.am - > sub2/Makefile.am << 'END'
+AM_YFLAGS = -d
+BUILT_SOURCES = parse.h
+END
+
+cat > sub1/main.c << 'END'
+int main ()
+{
+  return yyparse ();
+}
+END
+cat - sub1/main.c > sub2/main.c << 'END'
+#include "parse.h"
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+$MAKE test-build
+$MAKE test-dist
+
+# But the distribution must work correctly, assuming the user has
+# the proper tools to process yacc files.  Do this check only with
+# GNU make, to avoid tripping on automake bug#7884.
+if using_gmake; then $MAKE distcheck; fi
+
+:
diff --git a/t/yacc-pr204.sh b/t/yacc-pr204.sh
new file mode 100755 (executable)
index 0000000..6507b51
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# For PR 204.
+# C sources derived from nodist_ yacc sources should not be distributed.
+# See also related test 'yacc-nodist.test'.
+# The tests 'lex-nodist.test' and 'lex-pr204.test' does similar checks
+# for lex-generated C files.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'EOF'
+AM_MAINTAINER_MODE
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+EOF
+
+# The PARSE2 intermediate variable is there to make
+# sure Automake match 'nodist_' against the right
+# variable name...
+cat > Makefile.am << 'EOF'
+AM_YFLAGS = -d
+EXTRA_PROGRAMS = foo
+PARSE2 = parse2.y
+nodist_foo_SOURCES = parse.y $(PARSE2)
+
+distdirtest: distdir
+       test ! -f $(distdir)/parse.c
+       test ! -f $(distdir)/parse.y
+       test ! -f $(distdir)/parse.h
+       test ! -f $(distdir)/parse2.c
+       test ! -f $(distdir)/parse2.y
+       test ! -f $(distdir)/parse2.h
+EOF
+
+cat > parse.y << 'END'
+%{
+int yylex () {return 0;}
+void yyerror (char *s) {}
+%}
+%%
+maude : 'm' 'a' 'u' 'd' 'e' {};
+END
+
+cp parse.y parse2.y
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE distdirtest
+
+# Make sure parse.c and parse2.c are still targets.
+$MAKE parse.c parse2.c
+test -f parse.c
+test -f parse2.c
+
+# Ensure the rebuild rule works despite AM_MAINTAINER_MODE, because
+# it's a nodist_ parser.
+$sleep
+touch parse.y parse2.y
+$sleep
+$MAKE parse.c parse2.c
+stat parse.c parse.y parse2.c parse2.y || : # For debugging.
+test `ls -t parse.c parse.y | sed 1q` = parse.c
+test `ls -t parse2.c parse2.y | sed 1q` = parse2.c
+
+:
diff --git a/t/yacc-weirdnames.sh b/t/yacc-weirdnames.sh
new file mode 100755 (executable)
index 0000000..82270fe
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that yacc sources with many dots in their name are handled
+# correctly.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar foo2 bar2
+
+foo_SOURCES = parse.y.y
+bar_SOURCES = parse.s.f..y
+bar_YFLAGS = -d
+
+foo2_SOURCES = parse..5.y++
+bar2_SOURCES = parse.yxx.yy
+bar2_YFLAGS = -d
+END
+
+outputs=' parse.y.c      bar-parse.s.f..c   bar-parse.s.f..h
+          parse..5.c++   bar2-parse.yxx.cc  bar2-parse.yxx.hh '
+
+$ACLOCAL
+$AUTOMAKE -a
+
+$EGREP '(\.[ch]|parse)' Makefile.in # For debugging.
+
+# All expected files should be mentioned in the generated Makefile.in.
+for s in $outputs; do
+  $FGREP $s Makefile.in
+done
+
+:
diff --git a/t/yacc.sh b/t/yacc.sh
new file mode 100755 (executable)
index 0000000..60b5a4f
--- /dev/null
+++ b/t/yacc.sh
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure intermediate .c file is built from yacc source.
+# Bug from Thomas Morgan.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.y
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+$FGREP 'zardoz.c' Makefile.in
+
+:
diff --git a/t/yacc2.sh b/t/yacc2.sh
new file mode 100755 (executable)
index 0000000..bfab752
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/sh
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure intermediate .h file is not generated nor removed
+# if (AM_)?YFLAGS do not contain -d.  Requested by Jim Meyering.
+# See also the related semantic test 'yacc-d-basic.test'.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+END
+
+# Run it here once and for all, since we are not going to modify
+# configure.ac anymore.
+$ACLOCAL
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.y
+END
+
+# Don't redefine several times the same variable.
+cp Makefile.am Makefile.src
+
+$AUTOMAKE -a
+# If zardoz.h IS mentioned, fail.
+$FGREP 'zardoz.h' Makefile.in && Exit 1
+
+cp Makefile.src Makefile.am
+echo 'AM_YFLAGS = -d' >> Makefile.am
+$AUTOMAKE
+# If zardoz.h is NOT mentioned, fail.
+$FGREP 'zardoz.h' Makefile.in
+
+cp Makefile.src Makefile.am
+echo 'AM_YFLAGS = ' >> Makefile.am
+$AUTOMAKE
+# If zardoz.h IS mentioned, fail.
+$FGREP 'zardoz.h' Makefile.in && Exit 1
+
+cp Makefile.src Makefile.am
+echo 'YFLAGS = -d' >> Makefile.am
+# YFLAGS is a user variable.
+AUTOMAKE_fails
+grep 'YFLAGS.* user variable' stderr
+grep 'AM_YFLAGS.* instead' stderr
+$AUTOMAKE -Wno-gnu
+# If zardoz.h is NOT mentioned, fail.
+$FGREP 'zardoz.h' Makefile.in
+
+cp Makefile.src Makefile.am
+echo 'YFLAGS = ' >> Makefile.am
+$AUTOMAKE -Wno-gnu
+# If zardoz.h IS mentioned, fail.
+$FGREP 'zardoz.h' Makefile.in && Exit 1
+
+:
diff --git a/t/yacc4.sh b/t/yacc4.sh
new file mode 100755 (executable)
index 0000000..3f9a204
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Some simple tests of ylwrap functionality.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar
+foo_SOURCES = parse.y foo.c
+bar_SOURCES = bar.y foo.c
+END
+
+# First parser.
+cat > parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+# Second parser.
+cat > bar.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+fubar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+cat > foo.c << 'END'
+int main (void)
+{
+  return 0;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+test -f ylwrap
+
+mkdir sub
+cd sub
+
+../configure
+$MAKE
+
+grep '^#.*/sub/\.\./' bar.c && Exit 1
+grep '^#.*/sub/\.\./' parse.c && Exit 1
+
+# Make distclean must not erase bar.c nor parse.c (by GNU standards) ...
+$MAKE distclean
+test -f bar.c
+test -f parse.c
+# ... but maintainer-clean should.
+../configure
+$MAKE maintainer-clean
+test ! -f bar.c
+test ! -f parse.c
+
+:
diff --git a/t/yacc5.sh b/t/yacc5.sh
new file mode 100755 (executable)
index 0000000..ab24b56
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test of yacc functionality, derived from GNU binutils
+# by Tim Van Holder.
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_YACC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = maude
+maude_SOURCES = sub/maude.y
+END
+
+mkdir sub
+
+: > sub/maude.y
+
+$ACLOCAL
+$AUTOMAKE -a
+
+grep '^maude\.c:.*maude\.y' Makefile.in
+
+
+## Try again with subdir-objects.
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = maude
+maude_SOURCES = sub/maude.y
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+# No rule needed, the default .y.c: inference rule is enough
+# (but there may be an additional dependency on a dirstamp file).
+grep '^sub/maude\.c:.*maude\.y' Makefile.in && Exit 1
+
+
+## Try again with per-exe flags.
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = maude
+maude_SOURCES = sub/maude.y
+## A particularly trickey case.
+maude_YFLAGS = -d
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+# Rule should use maude_YFLAGS.
+grep 'AM_YFLAGS.*maude' Makefile.in && Exit 1
+
+# Silly regression.
+grep 'maudec' Makefile.in && Exit 1
+
+# Make sure the .o file is required.
+grep '^am_maude_OBJECTS.*maude' Makefile.in
+
+:
diff --git a/t/yacc7.sh b/t/yacc7.sh
new file mode 100755 (executable)
index 0000000..a3602e9
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure dependencies are generated correctly for .h files.
+# Report from Richard Boulton.
+#
+# Also check that the sources of the generated parser are distributed.
+# PR/47.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+AM_YFLAGS = -d
+
+check-dist: distdir
+       test -f $(distdir)/foo.y
+       test -f $(distdir)/foo.c
+       test -f $(distdir)/foo.h
+END
+
+# The %union will cause Bison to output '#line's in y.tab.h too.
+cat > foo.y << 'END'
+%union
+{
+  int i;
+  char c;
+}
+%%
+WORD: "up";
+%%
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+./configure
+
+$MAKE foo.h
+
+test -f foo.h
+
+rm -f foo.h foo.c
+$MAKE check-dist
+
+# We should be able to recover if foo.h is deleted.
+
+rm -f foo.h
+$MAKE foo.h
+test -f foo.h
+
+# Make sure '#line ... y.tab.h' gets replaced.
+$FGREP 'y.tab.h' foo.h && Exit 1
+
+# Make distclean must not erase foo.c nor foo.h (by GNU standards) ...
+$MAKE foo.c
+test -f foo.h
+test -f foo.c
+$MAKE distclean
+test -f foo.h
+test -f foo.c
+# ... but maintainer-clean should.
+./configure # Re-create 'Makefile'.
+$MAKE maintainer-clean
+test ! -f foo.h
+test ! -f foo.c
+
+:
diff --git a/t/yacc8.sh b/t/yacc8.sh
new file mode 100755 (executable)
index 0000000..bab627d
--- /dev/null
@@ -0,0 +1,109 @@
+#! /bin/sh
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test for subdir parsers.
+
+required='cc yacc'
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = foo/foo
+foo_foo_SOURCES = foo/parse.y
+AM_YFLAGS = -d
+
+.PHONY: obj
+obj: foo/parse.$(OBJEXT)
+
+.PHONY: test1 test2
+test1: foo/parse.$(OBJEXT)
+       test -f foo/parse.c
+       test -f foo/parse.$(OBJEXT)
+test2: foo/parse2.$(OBJEXT)
+       test -f foo/parse2.c
+       test -f foo/parse2.$(OBJEXT)
+END
+
+mkdir foo
+
+cat > foo/parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir sub
+cd sub
+
+../configure
+$MAKE test1
+
+# Aside of the rest of this test, let's see if we can recover from
+# parse.h removal.
+test -f foo/parse.h
+rm -f foo/parse.h
+$MAKE foo/parse.h
+test -f foo/parse.h
+
+# Make sure foo/parse.h is not updated, unless when needed.
+$sleep
+: > z
+$sleep
+touch ../foo/parse.y
+$MAKE obj
+test `ls -1t foo/parse.h z | sed 1q` = z
+$sleep
+sed 's/%%/%token TOKEN\n%%/g' ../foo/parse.y >../foo/parse.yt
+mv -f ../foo/parse.yt ../foo/parse.y
+$MAKE obj
+test `ls -1t foo/parse.h z | sed 1q` = foo/parse.h
+
+# Now, adds another parser to test ylwrap.
+
+cd ..
+
+# Sleep some to make sure timestamp of Makefile.am will change.
+$sleep
+
+cp foo/parse.y foo/parse2.y
+cat >> Makefile.am << 'END'
+EXTRA_foo_foo_SOURCES = foo/parse2.y
+END
+
+$AUTOMAKE -a
+test -f ./ylwrap
+
+cd sub
+# Regenerate Makefile (automatic in GNU Make, but not in other Makes).
+./config.status
+$MAKE test2
+
+:
diff --git a/t/yaccdry.sh b/t/yaccdry.sh
new file mode 100755 (executable)
index 0000000..3100ce3
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Removal recovery rules for headers should not remove files with 'make -n'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AM_YFLAGS = -d
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c parse.y
+END
+
+cat > foo.c << 'END'
+int main () { return 0; }
+END
+
+cat > parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+./configure
+$MAKE
+
+rm -f parse.h
+$MAKE -n parse.h
+test -f parse.c
+test ! -f parse.h
+
+:
diff --git a/t/yaccpp.sh b/t/yaccpp.sh
new file mode 100755 (executable)
index 0000000..c065a50
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure Yacc + C++ is not obviously broken.
+# See also related tests 'yacc-cxx.test' and 'yacc-d-cxx.test',
+# which does much more in-depth checks (but requires an actual
+# Yacc program and a working C++ compiler).
+
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CXX
+AC_PROG_YACC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz qux
+foo_SOURCES = foo.y++
+bar_SOURCES = bar.ypp
+baz_SOURCES = baz.yy
+qux_SOURCES = qux.yxx
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+$EGREP '(\.[ch]|foo|bar|baz|qux)' Makefile.in # For debugging.
+
+$EGREP '(foo|bar|baz|qux)\.h' Makefile.in && Exit 1
+
+sed -e 's/^/ /' -e 's/$/ /' Makefile.in >mk
+
+$FGREP ' foo.c++ ' mk
+$FGREP ' bar.cpp ' mk
+$FGREP ' baz.cc '  mk
+$FGREP ' qux.cxx ' mk
+
+cat >> Makefile.am <<END
+AM_YFLAGS = -d
+qux_YFLAGS = foo
+END
+
+$AUTOMAKE
+
+$EGREP '(\.[ch]|foo|bar|baz|qux)' Makefile.in # For debugging.
+
+sed -e 's/^/ /' -e 's/$/ /' Makefile.in >mk
+
+$FGREP ' foo.c++ ' mk
+$FGREP ' foo.h++ ' mk
+$FGREP ' bar.cpp ' mk
+$FGREP ' bar.hpp ' mk
+$FGREP ' baz.cc '  mk
+$FGREP ' baz.hh '  mk
+
+$EGREP '(^| )foo\.h\+\+(:| .*:)' Makefile.in
+$EGREP '(^| )bar\.hpp(:| .*:)'   Makefile.in
+$EGREP '(^| )baz\.hh(:| .*:)'    Makefile.in
+
+grep ' foo\.h[ :]' mk && Exit 1
+grep ' bar\.h[ :]' mk && Exit 1
+grep ' baz\.h[ :]' mk && Exit 1
+
+$FGREP ' qux-qux.cxx ' mk
+$EGREP '(^| )qux-qux\.cxx(:| .*:)' Makefile.in
+grep 'qux\.h.*:' Makefile.in && Exit 1
+
+:
diff --git a/t/yaccvpath.sh b/t/yaccvpath.sh
new file mode 100755 (executable)
index 0000000..65ab53b
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This test checks that dependent files are updated before including
+# in the distribution. 'parse.c' depends on 'parse.y'. The later is
+# updated so that 'parse.c' should be rebuild. Then we are running
+# 'make' and 'make distdir' and check whether the version of 'parse.c'
+# to be distributed is up to date.
+
+# Please keep this in sync with sister test 'yacc-d-vpath.test'.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = parse.y foo.c
+END
+
+# Original parser, with 'foobar'.
+cat > parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+cat > foo.c << 'END'
+int main () { return 0; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+$YACC parse.y
+mv y.tab.c parse.c
+
+mkdir sub
+cd sub
+../configure
+
+$sleep
+
+# New parser, with 'fubar'.
+cat > ../parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+fubar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+$MAKE
+$MAKE distdir
+$FGREP fubar $distdir/parse.c
+
+# Now check to make sure that 'make dist' will rebuild the parser.
+
+$sleep
+
+# New parser, with 'maude'.
+cat > ../parse.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) {}
+%}
+%%
+maude : 'm' 'a' 'u' 'd' 'e' {};
+END
+
+$MAKE distdir
+$FGREP maude $distdir/parse.c
+
+:
diff --git a/t/yflags-cmdline-override.sh b/t/yflags-cmdline-override.sh
new file mode 100755 (executable)
index 0000000..fb27c0b
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake can cope with user-redefinition of $(YFLAGS)
+# at configure time and/or at make time.
+
+required='cc yacc'
+. ./defs || Exit 1
+
+unset YFLAGS || :
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+# A minor automake wart: automake doesn't generate code to clean
+# '*.output' files generated by yacc (it's not even clear if that
+# would be useful in general, so it's probably better to be
+# conservative).
+CLEANFILES = foo.output
+# Another automake wart: '-d' flag won't be given at automake time,
+# so automake won't be able to generate code to clean 'foo.h' :-(
+MAINTAINERCLEANFILES = foo.h
+END
+
+cat > foo.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) { return; }
+int main () { return 0; }
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+$AUTOCONF
+
+./configure YFLAGS='-d -v'
+$MAKE
+ls -l
+test -f foo.c
+test -f foo.h
+test -f foo.output
+
+$MAKE maintainer-clean
+ls -l
+
+./configure YFLAGS='-v'
+$MAKE
+ls -l
+test -f foo.c
+test ! -r foo.h
+test -f foo.output
+
+$MAKE maintainer-clean
+ls -l
+
+./configure YFLAGS='-v'
+YFLAGS=-d $MAKE -e
+ls -l
+test -f foo.c
+test -f foo.h
+test ! -r foo.output
+
+$MAKE maintainer-clean
+ls -l
+
+:
diff --git a/t/yflags-conditional.sh b/t/yflags-conditional.sh
new file mode 100755 (executable)
index 0000000..0cd09d2
--- /dev/null
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake complains about *_YFLAGS variables which have
+# conditional content.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+
+# 'YFLAGS' is AC_SUBST'd by AC_PROG_YACC by default, but we
+# don't want this, since it might confuse our error messages.
+# Also, AM_SUBST_NOTMAKE seems not to help about this.
+# So we simply define $(YACC) by hand.
+AC_SUBST([YACC], [yacc])
+
+AM_CONDITIONAL([COND], [:])
+END
+
+$ACLOCAL
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo zardoz
+foo_SOURCES = foo.y
+zardoz_SOURCES = zardoz.y
+if COND
+AM_YFLAGS = -v
+zardoz_YFLAGS = -v
+endif COND
+END
+
+cat > Makefile1.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+## This is a dummy comment to keep line count right.
+if COND
+YFLAGS = foo
+endif COND
+END
+
+cat > Makefile2.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+AM_YFLAGS = am_yflags
+if COND
+YFLAGS = yflags
+endif COND
+END
+
+cat > Makefile3.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+foo_YFLAGS = foo_yflags
+if COND
+YFLAGS = yflags
+endif COND
+END
+
+cat > Makefile4.am <<'END'
+bin_PROGRAMS = foo zardoz
+
+foo_SOURCES = foo.y
+zardoz_SOURCES = $(foo_SOURCES)
+
+YFLAGS =
+AM_YFLAGS = $(COND_VAR1)
+zardoz_YFLAGS = $(COND_VAR2:z=r)
+
+COND_VAR2 = foo
+if COND
+YFLAGS += -v
+COND_VAR2 += bar
+else !COND
+COND_VAR1 = -d
+endif !COND
+END
+
+cat > Makefile5.am <<'END'
+bin_PROGRAMS = foo zardoz
+foo_SOURCES = foo.y
+zardoz_SOURCES = zardoz.y
+YFLAGS = -v
+AM_YFLAGS = -v
+if COND
+zardoz_YFLAGS = -v
+endif
+END
+
+cat > Makefile6.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+foo_YFLAGS = -v
+if COND
+quux_YFLAGS = -v
+AM_YFLAGS = -v
+endif
+END
+
+: > ylwrap
+
+LC_ALL=C; export LC_ALL; # For grep regexes below.
+
+AUTOMAKE_fails -Wnone -Wunsupported Makefile
+grep '^Makefile\.am:5:.*AM_YFLAGS.* conditional contents' stderr
+grep '^Makefile\.am:6:.*zardoz_YFLAGS.* conditional contents' stderr
+
+for i in 1 2 3; do
+  AUTOMAKE_fails -Wnone -Wunsupported Makefile$i
+  grep "^Makefile$i\\.am:5:.*[^a-zA-Z0-9_]YFLAGS.* conditional contents" \
+       stderr
+done
+
+AUTOMAKE_fails -Wnone -Wunsupported Makefile4
+grep '^Makefile4\.am:6:.*[^a-zA-Z0-9_]YFLAGS.* conditional contents' stderr
+grep '^Makefile4\.am:7:.*AM_YFLAGS.* conditional contents' stderr
+grep '^Makefile4\.am:8:.*zardoz_YFLAGS.* conditional contents' stderr
+
+# Now let's check we avoid false positives.
+
+# Disable 'gnu' warnings because we override the user variable 'YFLAGS'.
+AUTOMAKE_fails -Wno-gnu Makefile5
+grep -v '^Makefile5\.am:.*zardoz_YFLAGS' stderr \
+ | grep -v ': warnings are treated as errors' \
+ | grep . && Exit 1
+
+# Disable 'gnu' warnings because we override the user variable 'YFLAGS'.
+$AUTOMAKE -Wno-gnu Makefile6
+
+:
diff --git a/t/yflags-d-false-positives.sh b/t/yflags-d-false-positives.sh
new file mode 100755 (executable)
index 0000000..78820ca
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check for false positives in automake recognition of '-d' in YFLAGS.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_YACC
+END
+
+$ACLOCAL
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = zardoz foobar
+zardoz_SOURCES = zardoz.y
+foobar_SOURCES = foobar.y
+# All the "almost -d" substrings ("- d", "-dd", etc.) are meant.
+AM_YFLAGS = -xd --d - d --output=d
+foobar_YFLAGS = - d $(foovar)-d -dd
+END
+
+$AUTOMAKE -a
+$EGREP '(foobar|zardoz)\.h.*:' Makefile.in && Exit 1
+$EGREP '(foobar|zardoz)\.h' Makefile.in | $FGREP -v '$(YLWRAP) ' && Exit 1
+
+:
diff --git a/t/yflags-force-conditional.sh b/t/yflags-force-conditional.sh
new file mode 100755 (executable)
index 0000000..53038a8
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the user can force automake to use *_YFLAGS variables
+# which have conditional content.
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_SUBST([CC], [false])
+AC_PROG_YACC
+AM_CONDITIONAL([COND], [test x"$cond" = x"yes"])
+AC_OUTPUT
+END
+
+mkdir bin
+cat > bin/fake-yacc <<'END'
+#!/bin/sh
+echo "/* $* */" > y.tab.c
+echo 'extern int dummy;' >> y.tab.c
+END
+chmod a+x bin/fake-yacc
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH
+YACC=fake-yacc; export YACC
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo bar
+foo_SOURCES = foo.y main.c
+bar_SOURCES = $(foo_SOURCES)
+bar_YFLAGS = $(bar_yflags2)
+if COND
+AM_YFLAGS = __am_cond_yes__
+bar_YFLAGS += __bar_cond_yes__
+else !COND
+AM_YFLAGS = __am_cond_no__
+bar_yflags2 = __bar_cond_no__
+endif !COND
+END
+
+: > foo.y
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a -Wno-unsupported
+
+$EGREP '(YFLAGS|yflags|am__append)' Makefile.in # For debugging.
+
+./configure cond=yes
+$MAKE foo.c bar-foo.c
+
+cat foo.c
+cat bar-foo.c
+
+$FGREP ' __am_cond_yes__ ' foo.c
+$FGREP ' __bar_cond_yes__ ' bar-foo.c
+$FGREP 'cond_no' foo.c bar-foo.c && Exit 1
+
+$MAKE maintainer-clean
+ls -l
+
+./configure cond=no
+$MAKE foo.c bar-foo.c
+
+cat foo.c
+cat bar-foo.c
+
+$FGREP ' __am_cond_no__ ' foo.c
+$FGREP ' __bar_cond_no__ ' bar-foo.c
+$FGREP 'cond_yes' foo.c bar-foo.c && Exit 1
+
+:
diff --git a/t/yflags-force-override.sh b/t/yflags-force-override.sh
new file mode 100755 (executable)
index 0000000..3f4755e
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake can cope with a definition of the $(YFLAGS) variable
+# in Makefile.am (even if that is extremely bad practice, because that
+# variable is user-reserved).
+
+required='cc yacc'
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.y
+# Don't do this in a real-life Makefile.am!
+YFLAGS = -d -v
+END
+
+cat > foo.y << 'END'
+%{
+int yylex () { return 0; }
+void yyerror (char *s) { return; }
+int main () { return 0; }
+%}
+%%
+foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
+$ACLOCAL
+$AUTOMAKE -a -Wno-gnu
+
+$EGREP '(foo|YFLAGS)' Makefile.in # For debugging.
+grep '^foo.h *:' Makefile.in
+
+$AUTOCONF
+./configure
+
+$MAKE
+
+test -f foo.c
+test -f foo.h
+test -f foo.output
+
+:
diff --git a/t/yflags-var-expand.sh b/t/yflags-var-expand.sh
new file mode 100755 (executable)
index 0000000..d3bd0d4
--- /dev/null
@@ -0,0 +1,61 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that automake expand variables when looking for '-d' in YFLAGS;
+# for example, the following is supposed to work:
+#  foo_flags = -d
+#  AM_YFLAGS = $(foo_flags)
+
+. ./defs || Exit 1
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_YACC
+END
+
+$ACLOCAL
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo bar
+foo_SOURCES = foo.y
+bar_SOURCES = bar.y
+my_YFLAGS = -x
+AM_YFLAGS = $(my_YFLAGS:x=d)
+bar_YFLAGS = $(AM_YFLAGS)
+END
+
+$AUTOMAKE -a
+
+$EGREP '(foo|bar|YFLAGS)' Makefile.in # For debugging.
+grep '^foo.h *:' Makefile.in
+grep '^bar-bar.h *:' Makefile.in
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = -Wno-gnu
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = parser.y
+my_YFLAGS = $(my_YFLAGS_1)
+my_YFLAGS += $(my_YFLAGS_2)
+my_YFLAGS_2 = -d
+YFLAGS = $(my_YFLAGS)
+END
+
+$AUTOMAKE
+
+$EGREP 'parser|YFLAGS' Makefile.in # For debugging.
+grep '^parser.h *:' Makefile.in
+
+:
diff --git a/t/yflags.sh b/t/yflags.sh
new file mode 100755 (executable)
index 0000000..fbc39f5
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that $(YFLAGS) takes precedence over both $(AM_YFLAGS) and
+# $(foo_YFLAGS).
+# Please keep this in sync with the sister tests yflags2.test, lflags.test
+# and lflags2.test.
+
+. ./defs || Exit 1
+
+cat >fake-yacc <<'END'
+#!/bin/sh
+echo '/*' "$*" '*/' >y.tab.c
+echo 'extern int dummy;' >> y.tab.c
+END
+chmod a+x fake-yacc
+
+# Remove Yacc from the environment, so that it won't interfere
+# with 'make -e' below.
+unset YACC || :
+
+cat >> configure.ac <<'END'
+AC_SUBST([CC], [false])
+# Simulate presence of Yacc using our fake-yacc script.
+AC_SUBST([YACC], ['$(abs_top_srcdir)'/fake-yacc])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo bar
+foo_SOURCES = main.c foo.y
+bar_SOURCES = main.c bar.y
+AM_YFLAGS = __am_flags__
+bar_YFLAGS = __bar_flags__
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+grep '\$(YFLAGS).*\$(bar_YFLAGS)' Makefile.in && Exit 1
+grep '\$(YFLAGS).*\$(AM_YFLAGS)' Makefile.in && Exit 1
+
+: > foo.y
+: > bar.y
+
+$AUTOCONF
+./configure
+env YFLAGS=__user_flags__ $MAKE -e foo.c bar-bar.c
+
+cat foo.c
+cat bar-bar.c
+
+grep '__am_flags__.*__user_flags__' foo.c
+grep '__bar_flags__.*__user_flags__' bar-bar.c
+
+:
diff --git a/t/yflags2.sh b/t/yflags2.sh
new file mode 100755 (executable)
index 0000000..a933447
--- /dev/null
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2010-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that $(YFLAGS) takes precedence over both $(AM_YFLAGS) and
+# $(foo_YFLAGS).
+# Please keep this in sync with the sister tests yflags.test, lflags.test
+# and lflags2.test.
+
+. ./defs || Exit 1
+
+cat >fake-yacc <<'END'
+#!/bin/sh
+echo '/*' "$*" '*/' >y.tab.c
+echo 'extern int dummy;' >> y.tab.c
+END
+chmod a+x fake-yacc
+
+# Remove Yacc from the environment, so that it won't interfere
+# with 'make -e' below.
+unset YACC || :
+
+cat >> configure.ac <<'END'
+AC_SUBST([CXX], [false])
+# Simulate presence of Yacc using our fake-yacc script.
+AC_SUBST([YACC], ['$(abs_top_srcdir)'/fake-yacc])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = no-dependencies
+bin_PROGRAMS = foo bar
+foo_SOURCES = main.cc foo.yy
+bar_SOURCES = main.cc bar.y++
+AM_YFLAGS = __am_flags__
+bar_YFLAGS = __bar_flags__
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+grep '\$(YFLAGS).*\$(bar_YFLAGS)' Makefile.in && Exit 1
+grep '\$(YFLAGS).*\$(AM_YFLAGS)' Makefile.in && Exit 1
+
+: > foo.yy
+: > bar.y++
+
+$AUTOCONF
+./configure
+env YFLAGS=__user_flags__ $MAKE -e foo.cc bar-bar.c++
+
+cat foo.cc
+cat bar-bar.c++
+
+grep '__am_flags__.*__user_flags__' foo.cc
+grep '__bar_flags__.*__user_flags__' bar-bar.c++
+
+: