Merge branch 'micro' into maint
authorStefano Lattarini <stefano.lattarini@gmail.com>
Mon, 3 Jun 2013 19:18:25 +0000 (21:18 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Mon, 3 Jun 2013 19:18:25 +0000 (21:18 +0200)
* micro:
  configure: remove an obsolete TODO comment
  post-release: micro version bump (1.13.3a)
  release: stable micro release 1.13.3
  typofix: fix grammaro in comments in t/tags-pr12372.sh

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
176 files changed:
.gitignore
GNUmakefile
HACKING
Makefile.am
NEWS
PLANS/README [new file with mode: 0644]
PLANS/obsolete-removed/am-prog-mkdir-p.txt [new file with mode: 0644]
PLANS/obsolete-removed/configure.in.txt [new file with mode: 0644]
PLANS/rm-f-without-args.txt [new file with mode: 0644]
PLANS/subdir-objects.txt [new file with mode: 0644]
PLANS/texi/drop-split-info-files.txt [new file with mode: 0644]
PLANS/texi/warnings-for-automake-ng-compatibility.txt [new file with mode: 0644]
THANKS
bin/Makefile.inc [new file with mode: 0644]
bin/aclocal.in [moved from aclocal.in with 98% similarity]
bin/automake.in [moved from automake.in with 91% similarity]
bin/gen-perl-protos [new file with mode: 0755]
bootstrap.sh
configure.ac
contrib/t/Makefile.inc [new file with mode: 0644]
doc/Makefile.inc [new file with mode: 0644]
doc/automake.texi
gen-testsuite-part
lib/Automake/Config.in
lib/Automake/Language.pm [new file with mode: 0644]
lib/Automake/Makefile.inc [new file with mode: 0644]
lib/Automake/Options.pm
lib/Makefile.inc [new file with mode: 0644]
lib/am/Makefile.inc [new file with mode: 0644]
lib/am/depend2.am
lib/am/distdir.am
lib/am/remake-hdr.am
lib/am/texi-vers.am
lib/am/texibuild.am
lib/ylwrap
m4/Makefile.inc [new file with mode: 0644]
m4/amversion.m4
m4/ar-lib.m4
m4/init.m4
m4/minuso.m4 [deleted file]
m4/prog-cc-c-o.m4 [new file with mode: 0644]
maintainer/am-ft [new file with mode: 0755]
maintainer/am-xft [moved from contrib/t/local.am with 61% similarity, mode: 0755]
maintainer/maint.mk [moved from maint.mk with 98% similarity]
maintainer/rename-tests [new file with mode: 0755]
maintainer/syntax-checks.mk [moved from syntax-checks.mk with 91% similarity]
t/Makefile.inc [new file with mode: 0644]
t/aclocal-I-and-install.sh [moved from t/acloca10.sh with 97% similarity]
t/aclocal-I-order-2.sh
t/aclocal-I-order-3.sh
t/aclocal-pr450.sh
t/acsubst2.sh
t/add-missing.tap
t/am-prog-cc-c-o.sh [new file with mode: 0644]
t/ax/am-test-lib.sh
t/ax/cc-no-c-o.in [new file with mode: 0644]
t/ax/depcomp.sh
t/ax/runtest.in [moved from runtest.in with 86% similarity]
t/ax/tap-setup.sh
t/ax/test-defs.in
t/c-demo.sh
t/ccnoco-deps.sh [new file with mode: 0755]
t/ccnoco-lib.sh [new file with mode: 0755]
t/ccnoco-lt.sh [new file with mode: 0755]
t/ccnoco.sh
t/ccnoco2.sh [deleted file]
t/ccnoco3.sh
t/ccnoco4.sh [new file with mode: 0644]
t/check8.sh
t/compile4.sh
t/cond11.sh
t/cscope.tap
t/cxx-lt-demo.sh
t/depcomp8a.sh
t/depcomp8b.sh
t/discover.sh
t/dist-auxdir-many-subdirs.sh
t/dist-formats.tap
t/dist-lzma.sh [moved from t/lzma.sh with 95% similarity]
t/dist-shar.sh [new file with mode: 0644]
t/dist-tarZ.sh [new file with mode: 0644]
t/distcom2.sh
t/dollarvar2.sh
t/ext2.sh
t/extra-dist-wildcards.sh
t/extra-portability.sh
t/extra2.sh
t/fort2.sh
t/fort4.sh
t/fort5.sh
t/get-sysconf.sh
t/instdir-ltlib.sh
t/instdir-prog.sh
t/lex-line.sh
t/lex-multiple.sh [new file with mode: 0644]
t/lex-subobj-nodep.sh
t/lex5.sh
t/libobj19.sh
t/libtool3.sh
t/libtool9.sh
t/link_cond.sh
t/list-of-tests.mk
t/ltinstloc.sh
t/ltlibsrc.sh
t/ltorder.sh
t/parallel-tests-suffix-prog.sh
t/per-target-flags.sh
t/pr224.sh
t/pr401.sh
t/pr401b.sh
t/pr401c.sh
t/preproc-basics.sh [new file with mode: 0644]
t/preproc-c-compile.sh [new file with mode: 0644]
t/preproc-demo.sh [new file with mode: 0644]
t/preproc-errmsg.sh [new file with mode: 0644]
t/python-virtualenv.sh
t/remake-deeply-nested.sh
t/remake-renamed-m4-macro-and-file.sh
t/repeated-options.sh
t/rm-f-probe.sh [new file with mode: 0644]
t/self-check-cc-no-c-o.sh [new file with mode: 0644]
t/silent-c.sh
t/silent-lex.sh
t/silent-lt.sh
t/silent-many-languages.sh
t/silent-nested-vars.sh
t/silent-yacc.sh
t/sourcefile-in-subdir.sh
t/specflg-dummy.sh
t/specflg6.sh
t/specflg7.sh
t/specflg8.sh
t/specflg9.sh
t/spy-double-colon.sh [moved from t/spy.sh with 100% similarity]
t/spy-rm.tap
t/subobj-clean-lt-pr10697.sh
t/subobj-clean-pr10697.sh
t/subobj.sh
t/subobj10.sh
t/subobj11a.sh
t/subobj11b.sh
t/subobj11c.sh
t/subobj4.sh
t/subobj5.sh
t/subobj6.sh
t/subobj7.sh
t/subobj8.sh
t/subpkg-yacc.sh
t/subpkg.sh
t/suffix-custom-subobj-and-specflg.sh
t/tar-opts-errors.sh [moved from t/tar3.sh with 100% similarity]
t/tar-pax.sh [moved from t/tar2.sh with 100% similarity]
t/tar-ustar.sh [moved from t/tar.sh with 100% similarity]
t/target-cflags.sh
t/txinfo-builddir.sh [new file with mode: 0644]
t/txinfo-nodist-info.sh [new file with mode: 0644]
t/txinfo23.sh
t/txinfo24.sh
t/txinfo25.sh
t/txinfo28.sh
t/vala-libs.sh
t/vala-mix.sh
t/vala-non-recursive-setup.sh
t/vala-per-target-flags.sh
t/vala-recursive-setup.sh
t/vala-vapi.sh
t/wrap/aclocal.in
t/wrap/automake.in
t/yacc-cxx-grepping.sh [moved from t/yaccpp.sh with 100% similarity]
t/yacc-dist-nobuild-subdir.sh
t/yacc-dry.sh [moved from t/yaccdry.sh with 100% similarity]
t/yacc-grepping2.sh
t/yacc-line.sh
t/yacc-misc.sh [moved from t/yacc4.sh with 100% similarity]
t/yacc-subdir.sh
t/yacc-vpath.sh [moved from t/yaccvpath.sh with 100% similarity]

index 2cd6bd3..19da02f 100644 (file)
@@ -12,8 +12,8 @@
 /config.status
 /config.status.lineno
 /configure.lineno
-/aclocal
-/automake
+/bin/aclocal
+/bin/automake
 /runtest
 /doc/.dirstamp
 /doc/automake*.info
@@ -35,6 +35,7 @@
 /doc/amhello/config.h.in~
 /doc/amhello/configure
 /doc/amhello/depcomp
+/doc/amhello/compile
 /doc/amhello/install-sh
 /doc/amhello/missing
 /doc/web-manual
@@ -44,6 +45,7 @@
 /t/wrap/automake-1.*
 /t/ax/test-defs.sh
 /t/ax/shell-no-trail-bslash
+/t/ax/cc-no-c-o
 /t/testsuite-part.am
 /t/*-w.tap
 /t/*-w.sh
index 21db5c4..52c2002 100644 (file)
@@ -25,8 +25,8 @@ ifeq ($(wildcard Makefile),)
   $(error Fatal Error)
 endif
 include ./Makefile
-include $(srcdir)/maint.mk
-include $(srcdir)/syntax-checks.mk
+include $(srcdir)/maintainer/maint.mk
+include $(srcdir)/maintainer/syntax-checks.mk
 
 else # ! bootstrap in $(MAKECMDGOALS)
 
@@ -50,7 +50,7 @@ export BOOTSTRAP_SHELL
 #      kick in, because the tree might be in an inconsistent state (e.g.,
 #      we have just switched from 'maint' to 'master', and have the built
 #      'automake' script left from 'maint', but the files 'lib/am/*.am'
-#      are from 'master': if 'automake' gets run and used those files --
+#      are from 'master': if 'automake' gets run and uses those files --
 #      boom!).
 
 ifdef config-status # Bootstrap from an already-configured tree.
diff --git a/HACKING b/HACKING
index 194a775..fdadada 100644 (file)
--- a/HACKING
+++ b/HACKING
 
 * Changes other than *trivial* bug fixes must be mentioned in NEWS.
 
+* Changes which are potentially controversial, require a non-trivial
+  plan, or must be implemented gradually with a roadmap spanning several
+  releases (either minor or major) should be discussed on the list,
+  and have a proper entry in the PLANS directory.  This entry should be
+  always committed in the "maint" branch, even if the change it deals
+  with is only for the master branch, or a topic branch.  Usually, in
+  addition to this, it is useful to open a "wishlist" report on the
+  Automake debbugs tracker, to keep the idea more visible, and have the
+  discussions surrounding it easily archived in a central place.
+
 ============================================================================
 = Naming
 
@@ -84,7 +94,7 @@
   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.
+* Don't use & for function calls, unless really required.
   The use of & prevents prototypes from being checked.
 
 ============================================================================
   the active branches descending from the buggy commit.  This offers a
   simple way to fix the bug consistently and effectively.
 
-* For merges, prefer 'git merge --log' over plain 'git merge', so that
+* When merging, 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.
 
 * The 'master', 'maint' and 'micro' branches should not be rewound, i.e.,
   should always fast-forward, except maybe for privacy issues.  For
   feature branches, the announcement for the branch should document
-  the rewinding policy.  It is usually a good idea to keep rewindable
-  branches in the 'experimental/*' "namespace"; i.e., give them names
-  like 'experimental/testsuite-work' or 'experimental/djgpp-for-WinNT'.
+  the rewinding policy.
+  If a topic branch is expected to be rewound, it is good practice to put
+  it in the 'experimental/*' namespace; for example, a rewindable branch
+  dealing with Vala support could be named like "experimental/vala-work".
 
 ============================================================================
 = Writing a good commit message
       <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 a general overview of what it does, and how.  This section
+      should almost always be provided, possibly only with the expection
+      of obvious fixes or very trivial changes.
 
       And if the detailed explanation is quite long or detailed, you can
       want to break it in more paragraphs.
 
       <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:
+* The <detailed list of touched files> should usually be provided (but
+  for short or trivial changes), and should follow 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.
   The repository will always have its own "odd" number so we can easily
   distinguish net and repo versions.)
 
-* Run this:
+* Run these commands, in this order:
 
-    make bootstrap && make check && make distcheck
+    make bootstrap
+    make check keep_testdirs=yes
+    make maintainer-check
+    make distcheck
+    make check-no-trailing-backslash-in-recipes
+    make check-cc-no-c-o
 
   It is also advised to run "git clean -fdx" before invoking the
   bootstrap, to ensure a really clean rebuild.  However, it must
index 15b87c9..143308a 100644 (file)
@@ -22,11 +22,22 @@ CLEANFILES =
 DISTCLEANFILES =
 MAINTAINERCLEANFILES =
 EXTRA_DIST =
+TAGS_FILES =
+dist_noinst_DATA =
+nodist_noinst_DATA =
+dist_noinst_SCRIPTS =
+nodist_noinst_SCRIPTS =
 
 ## ------------ ##
 ##  Top level.  ##
 ## ------------ ##
 
+EXTRA_DIST += \
+  bootstrap.sh \
+  GNUmakefile \
+  HACKING \
+  PLANS
+
 # 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
@@ -58,58 +69,11 @@ generated_file_finalize = $(AM_V_at) \
   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 \
-  maint.mk \
-  syntax-checks.mk \
-  HACKING
-
 # For some tests or targets, we need to have the just-build automake and
 # aclocal scripts avaiable on PATH.
 extend_PATH = \
   { PATH='$(abs_builddir)/t/wrap'$(PATH_SEPARATOR)$$PATH && export PATH; }
 
-# 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.
@@ -122,541 +86,11 @@ maintainer-clean-local:
        rm -rf .autom4te.cache
 
 # So that automake won't complain about the missing ChangeLog.
-# The real rule for ChangeLog generation is now in maint.mk (as
-# it is maintainer-specific).
+# The real rule for ChangeLog generation is now in maintainer/maint.mk
+# (as it is maintainer-specific).
 ChangeLog:
 
-
-## -------------------------------------------------------------------- ##
-##  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/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/cond.m4 \
-  m4/cond-if.m4 \
-  m4/depend.m4 \
-  m4/depout.m4 \
-  m4/dmalloc.m4 \
-  m4/extra-recurs.m4 \
-  m4/gcj.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/obsolete.m4 \
-  m4/options.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
-
-automake_internal_acdir = $(automake_acdir)/internal
-dist_automake_internal_ac_DATA = m4/internal/ac-config-macro-dirs.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 t/ax/is_newest t/ax/deltree.pl
-
-## Will be updated later.
-TESTS =
-
-# Some testsuite-influential variables should be overridable from the
-# test scripts, but not from the environment.
-# Keep this in sync with the similar list in 'runtest.in'.
-AM_TESTS_ENVIRONMENT = \
-  for v in \
-    required \
-    am_test_protocol \
-    am_serial_tests \
-    am_test_prefer_config_shell \
-    am_original_AUTOMAKE \
-    am_original_ACLOCAL \
-    am_test_lib_sourced \
-    test_lib_sourced \
-  ; do \
-    eval test x"\$${$$v}" = x || unset $$v; \
-  done;
-# 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_;
-
-# For sourcing of extra "shell libraries" by our test scripts.  As per
-# POSIX, sourcing a file with '.' will cause it to be looked up in $PATH
-# in case it is given with a relative name containing no slashes.
-AM_TESTS_ENVIRONMENT += \
-  if test $(srcdir) != .; then \
-    PATH='$(abs_srcdir)/t/ax'$(PATH_SEPARATOR)$$PATH; \
-  fi; \
-  PATH='$(abs_builddir)/t/ax'$(PATH_SEPARATOR)$$PATH; \
-  export PATH;
-
-# 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
-
-# Hand-written tests for stuff in 'contrib/'.
-include $(srcdir)/contrib/t/local.am
-TESTS += $(contrib_TESTS)
-EXTRA_DIST += $(contrib_TESTS)
-
-# Static dependencies valid for each test case (also further
-# extended later).  Note that use 'noinst_' rather than 'check_'
-# as the prefix, because we really want them to be built by
-# "make all".  This makes it easier to run the test cases by
-# hand after having simply configured and built the package.
-
-nodist_noinst_SCRIPTS = \
-  t/wrap/aclocal-$(APIVERSION) \
-  t/wrap/automake-$(APIVERSION)
-
-dist_noinst_DATA = \
-  t/ax/test-init.sh \
-  t/ax/test-lib.sh \
-  t/ax/am-test-lib.sh \
-  t/ax/tap-functions.sh
-
-# 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
-
-t/ax/test-defs.sh: t/ax/test-defs.in Makefile
-       $(AM_V_at)rm -f $@ $@-t
-       $(AM_V_at)$(MKDIR_P) t/ax
-       $(AM_V_GEN)in=t/ax/test-defs.in \
-         && $(do_subst) <$(srcdir)/$$in >$@-t
-       $(generated_file_finalize)
-EXTRA_DIST += t/ax/test-defs.in
-CLEANFILES += t/ax/test-defs.sh
-nodist_noinst_DATA = t/ax/test-defs.sh
-
-## Will be updated soon.
-noinst_SCRIPTS =
-
-t/ax/shell-no-trail-bslash: t/ax/shell-no-trail-bslash.in Makefile
-       $(AM_V_at)rm -f $@ $@-t
-       $(AM_V_GEN)in=t/ax/shell-no-trail-bslash.in \
-         && $(MKDIR_P) t/ax \
-         && $(do_subst) <$(srcdir)/$$in >$@-t \
-         && chmod a+x $@-t
-       $(generated_file_finalize)
-EXTRA_DIST += t/ax/shell-no-trail-bslash.in
-CLEANFILES += t/ax/shell-no-trail-bslash
-noinst_SCRIPTS += t/ax/shell-no-trail-bslash
-
-runtest: runtest.in Makefile
-       $(AM_V_at)rm -f $@ $@-t
-       $(AM_V_GEN)in=runtest.in \
-         && $(MKDIR_P) t/ax \
-         && $(do_subst) <$(srcdir)/runtest.in >$@-t \
-         && chmod a+x $@-t
-       $(generated_file_finalize)
-EXTRA_DIST += runtest.in
-CLEANFILES += runtest
-noinst_SCRIPTS += runtest
-
-# 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
-
-# Check that our test cases are syntactically correct.
-# See automake bug#11898.
-check-tests-syntax:
-       @st=0; \
-       err () { echo "$@: $$*" >&2; st=1; }; \
-## The user might do something like "make check TESTS=t/foo" or
-## "make check TESTS_LOGS=t/foo.log" and expect (say) the test
-## 't/foo.sh' to be run; this has worked well until today, and
-## we want to continue supporting this use case.
-       bases=`for log in : $(TEST_LOGS); do echo $$log; done \
-         | sed -e '/^:$$/d' -e 's/\.log$$//'`; \
-       for bas in $$bases; do \
-         for suf in sh tap pl; do \
-           tst=$$bas.$$suf; \
-## Emulate VPATH search.
-           if test -f $$tst; then \
-             break; \
-           elif test -f $(srcdir)/$$tst; then \
-             tst=$(srcdir)/$$tst; \
-             break; \
-           else \
-             tst=''; \
-           fi; \
-         done; \
-         test -n "$$tst" || err "couldn't find test '$$bas'"; \
-## Don't check that perl tests are valid shell scripts!
-         test $$suf = pl && continue; \
-         $(AM_V_P) && echo " $(AM_TEST_RUNNER_SHELL) -n $$tst"; \
-         $(AM_TEST_RUNNER_SHELL) -n "$$tst" \
-           || err "test '$$tst' syntactically invalid"; \
-       done; \
-       exit $$st
-check-local: check-tests-syntax
-.PHONY: check-tests-syntax
-
-# Recipes with a trailing backslash character (possibly followed by
-# blank characters only) can cause spurious syntax errors with at
-# least older bash versions (e.g., bash 2.05b), and can be potentially
-# be unportable to other weaker shells.  Run the testsuite in a way
-# that helps catching such problems in Automake-generated recipes.
-# See automake bug#10436.
-check-no-trailing-backslash-in-recipes:
-       $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \
-         CONFIG_SHELL='$(abs_top_builddir)/t/ax/shell-no-trail-bslash'
-.PHONY: check-no-trailing-backslash-in-recipes
-
-# Automake-generated Makefiles should work when run with parallel make.
-check-parallel:
-       $(AM_V_GEN)$(MAKE) $(AM_MAKEFLAGS) check \
-         AM_TESTSUITE_MAKE="$${AM_TESTSUITE_MAKE-$${MAKE-make}} -j4"
-.PHONY: check-parallel
-
-## Checking the list of tests.
-test_subdirs = t t/pm contrib/t
-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
-
-# Performance tests.
-.PHONY: perf
-perf: all
-       $(MAKE) $(AM_MAKEFLAGS) TEST_SUITE_LOG='$(PERF_TEST_SUITE_LOG)' \
-                               TESTS='$(perf_TESTS)' check
-PERF_TEST_SUITE_LOG = t/perf/test-suite.log
-CLEANFILES += $(PERF_TEST_SUITE_LOG)
-EXTRA_DIST += $(perf_TESTS)
-
-clean-local: clean-local-check
-.PHONY: clean-local-check
-clean-local-check:
-       $(AM_V_GEN)$(PERL) $(srcdir)/t/ax/deltree.pl t/*.dir t/*/*.dir */t/*.dir
-
-
-## ---------------- ##
-##  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 \
-    && $(extend_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
-
-setup_autotools_paths = { \
-  $(extend_PATH) \
-    && 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 \
-    && true; \
-}
-
-# We depend on configure.ac so that we regenerate the tarball
-# whenever the Automake version changes.
-$(srcdir)/doc/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac
-       $(AM_V_GEN)tmp=amhello-output.tmp \
-         && $(am__cd) $(srcdir)/doc/amhello \
-         && : Make our aclocal and automake avaiable before system ones. \
-         && $(setup_autotools_paths) \
-         && ( \
-           { $(AM_V_P) || exec 5>&2 >$$tmp 2>&1; } \
-             && $(am_AUTORECONF) -vfi \
-             && ./configure \
-             && $(MAKE) $(AM_MAKEFLAGS) distcheck \
-             && $(MAKE) $(AM_MAKEFLAGS) distclean \
-             || { \
-               if $(AM_V_P); then :; else \
-                 echo "$@: recipe failed." >&5; \
-                 echo "See file '`pwd`/$$tmp' for details" >&5; \
-               fi; \
-               exit 1; \
-             } \
-         ) \
-         && rm -rf $(amhello_configury) $$tmp \
-         && mv -f amhello-1.0.tar.gz ..
-
-
-## ------------------------------------------------- ##
-##  Third-party, obsolescent or experimental stuff.  ##
-## ------------------------------------------------- ##
-
+# Third-party, obsolescent or experimental stuff.
 EXTRA_DIST += \
   contrib/check-html.am \
   contrib/multilib/README \
@@ -666,11 +100,7 @@ EXTRA_DIST += \
   contrib/multilib/multi.m4 \
   contrib/README
 
-
-## --------------------------------------------------- ##
-##  Older files, kept mostly for historical interest.  ##
-## --------------------------------------------------- ##
-
+# Older files, kept mostly for historical interest.
 EXTRA_DIST += \
   old/ChangeLog-tests \
   old/ChangeLog.96 \
@@ -683,3 +113,22 @@ EXTRA_DIST += \
   old/ChangeLog.09 \
   old/ChangeLog.11 \
   old/TODO
+
+# Maintainer-specific files and scripts.
+EXTRA_DIST += \
+  maintainer/am-ft \
+  maintainer/am-xft \
+  maintainer/rename-tests \
+  maintainer/maint.mk \
+  maintainer/syntax-checks.mk
+
+# Most work delegated to sub-dir makefile fragments.
+include $(srcdir)/bin/Makefile.inc
+include $(srcdir)/doc/Makefile.inc
+include $(srcdir)/lib/Makefile.inc
+include $(srcdir)/lib/Automake/Makefile.inc
+include $(srcdir)/lib/am/Makefile.inc
+include $(srcdir)/m4/Makefile.inc
+include $(srcdir)/t/Makefile.inc
+
+# vim: ft=automake noet
diff --git a/NEWS b/NEWS
index d540aab..46d6b2e 100644 (file)
--- a/NEWS
+++ b/NEWS
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+New in 1.14:
+
+* C compilation, and the AC_PROG_CC and AM_PROG_CC_C_O macros:
+
+  - The 'compile' script is now unconditionally required for all
+    packages that perform C compilation (note that if you are using
+    the '--add-missing' option, automake will fetch that script for
+    you, so you shouldn't need any explicit adjustment).
+    This new behaviour is needed to avoid obscure errors when the
+    'subdir-objects' option is used, and the compiler is an inferior
+    one that doesn't grasp the combined use of both the "-c -o"
+    options; see discussion about automake bug#13378 for more details:
+    <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#35>
+    <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#44>
+
+  - The next major Automake version (2.0) will unconditionally turn on
+    the 'subdir-objects' option.  In order to smooth out the transition,
+    we now give a warning (in the category 'unsupported') whenever a
+    source file is present in a subdirectory but the 'subdir-object' is
+    not enabled.  For example, the following usage will trigger such a
+    warning (of course, assuming the 'subdir-objects' option is off):
+
+        bin_PROGRAMS = sub/foo
+        sub_foo_SOURCES = sub/main.c sub/bar.c
+
+  - Automake will automatically enhance the AC_PROG_CC autoconf macro
+    to make it check, at configure time, that the C compiler supports
+    the combined use of both the "-c -o" options.  The result of this
+    check is saved in the cache variable 'am_cv_prog_cc_c_o', and said
+    result can be overridden by pre-defining that variable.
+
+  - The AM_PROG_CC_C_O can still be called, but that should no longer
+    be necessary. This macro is now just a thin wrapper around the
+    Automake-enhanced AC_PROG_CC.  This means, among the other things,
+    that its behaviour is changed in three ways:
+
+      1. It no longer invokes the Autoconf-provided AC_PROG_CC_C_O
+         macros behind the scenes.
+
+      2. It caches the check result in the 'am_cv_prog_cc_c_o'variable,
+         and not in a 'ac_cv_prog_cc_*_c_o' variable whose exact name
+         in only dynamically computed at configure runtime (sic!) from
+         the content of the '$CC' variable.
+
+      3. It no longer automatically AC_DEFINE the C preprocessor
+         symbol 'NO_MINUS_C_MINUS_O'.
+
+* Texinfo support:
+
+  - Automake can now be instructed to place '.info' files generated from
+    Texinfo input in the builddir rather than in the srcdir; this is done
+    specifying the new automake option 'info-in-builddir'.  This feature
+    was requested by the developers of GCC, GDB, GNU binutils and the GNU
+    bfd library.  See the extensive discussion about automake bug#11034
+    for more details.
+
+  - For quite a long time, Automake has been implementing an undocumented
+    hack which ensured that '.info' files which appeared to be cleaned
+    (by e.g. being listed in the CLEANFILES or DISTCLEANFILES variables)
+    were built in the builddir rather than in the srcdir; this hack was
+    introduced to ensure better backward-compatibility with packages such
+    as Texinfo, which did 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 generated '.info' files.
+
+    Now that we have the 'info-in-builddir' option that explicitly causes
+    generated '.info' files to be placed in the builddir, this hack should
+    be longer necessary, so we deprecate it with runtime warnings.  It will
+    likely be removed altogether in Automake 2.0.
+
+* Relative directory in Makefile fragments:
+
+  - The special Automake-time substitutions '%reldir%' and '%canon_reldir%'
+    (and their short versions, '%D%' and '%C%' respectively) can now be used
+    in an included Makefile fragment.  The former is substituted with the
+    relative directory of the included fragment (compared to the top level
+    including Makefile), and the latter with the canonicalized version of
+    the same relative directory:
+
+        bin_PROGRAMS += %reldir%/foo
+        %canon_reldir%_foo_SOURCES = %reldir%/bar.c
+
+* Deprecated distribution formats:
+
+  - The 'shar' and 'compress' distribution formats are deprecated, and
+    scheduled for removal in Automake 2.0.  Accordingly, the use of the
+    'dist-shar' and 'dist-tarZ' will cause warnings at automake runtime
+    (in the 'obsolete' category), and the recipes for the Automake-generated
+    targets 'dist-shar' and 'dist-tarZ' will unconditionally display
+    (non-fatal) warnings at make runtime.
+
+* New configure runtime warnings about "rm -f" support:
+
+  - To simplify transition to Automake 2.0, the shell code expanded by
+    AM_INIT_AUTOMAKE now checks (at configure runtime) that the default
+    'rm' program in PATH doesn't complain when called without any
+    non-option argument if the '-f' option is given (so that commands
+    like "rm -f" and "rm -rf" act as a no-op, instead of raising usage
+    error).  If this is not the case,
+    the configure script is aborted, to call the attention of the user
+    on the issue, and invite him to fix his PATH.  The checked 'rm'
+    behavior is very widespread in the wild, and will be required by
+    future POSIX version:
+
+        <http://austingroupbugs.net/view.php?id=542>
+
+    The user can still force the configure process to complete even in the
+    presence of a broken 'rm' by defining the ACCEPT_INFERIOR_RM_PROGRAM
+    environment variable to "yes".  And the generated Makefiles should
+    still work correctly even when such broken 'rm' is used.  But note
+    that this will no longer be the case with Automake 2.0 though, so, if
+    you encounter the warning, please report it to us ASAP (and try to fix
+    your environment as well).
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 New in 1.13.3:
 
 * Documentation fixes:
@@ -143,17 +265,6 @@ New in 1.13.3:
 
 New in 1.13.2:
 
-* Obsolescent features:
-
-  - Use of suffix-less info files (that can be specified through the
-    '@setfilename' macro in Texinfo input files) is discouraged, and
-    its use will raise warnings in the 'obsolete' category.
-
-  - Use of Texinfo input files with '.txi' or '.texinfo' extensions
-    is discouraged, and its use will raise warnings in the 'obsolete'
-    category.  You are advised to simply use the '.texi' extension
-    instead.
-
 * Documentation fixes:
 
   - The long-deprecated but still supported two-arguments invocation form
@@ -178,6 +289,25 @@ New in 1.13.2:
   - Other minor miscellaneous fixes and improvements; in particular,
     some improvements in cross-references.
 
+* Obsolescent features:
+
+  - Use of suffix-less info files (that can be specified through the
+    '@setfilename' macro in Texinfo input files) is discouraged, and
+    its use will raise warnings in the 'obsolete' category.  Simply
+    use the '.info' extension for all your info files, transforming
+    usages like:
+
+        @setfilename myprogram
+
+    into:
+
+        @setfilename myprogram.info
+
+  - Use of Texinfo input files with '.txi' or '.texinfo' extensions
+    is discouraged, and its use will raise warnings in the 'obsolete'
+    category.  You are advised to simply use the '.texi' extension
+    instead.
+
 * Bugs fixed:
 
   - When the 'ustar' option is used, the generated configure script no
diff --git a/PLANS/README b/PLANS/README
new file mode 100644 (file)
index 0000000..87cb8dc
--- /dev/null
@@ -0,0 +1,25 @@
+"Plans" for future or on-going Automake development.
+
+The contents is meant to help ensure a more controlled and smooth
+development and evolution for Automake, in several ways.
+
+ - Having the plans clearly spelled out should will avoid messy
+   roadmaps with no clear way forward or with muddy or ill-defined
+   aims or purposes; a trap this is too easy to fall into.
+
+ - Keeping planned changes cooking and re-hashed for a while should
+   ensure rough edges are smoothed up, transitions are planned in a
+   proper way (hopefully avoiding debacles like the AM_MKDIR_PROG_P
+   deprecation and the AM_CONFIG_HEADER too-abrupt removal), and
+   "power users" have more chances of getting informed in due time,
+   thus having all the time to prepare for the changes or raise
+   objections against them.
+
+ - Having the plans clearly stated and registered in a "centralized"
+   location should make it more difficult to them to slip through
+   the cracks, getting forgotten or (worse) only half-implemented.
+
+ - Even for discussions and plans registered on the Bug Tracker
+   as well, a corresponding entry in the PLANS directory can help
+   in keeping main ideas summarized, and consensus and/or objections
+   registered and easily compared.
diff --git a/PLANS/obsolete-removed/am-prog-mkdir-p.txt b/PLANS/obsolete-removed/am-prog-mkdir-p.txt
new file mode 100644 (file)
index 0000000..20d5cf5
--- /dev/null
@@ -0,0 +1,62 @@
+The macro AM_PROG_MKDIR_P is no longer going to be removed from Automake.
+Let's see a bit of history to understand why.
+
+I had already scheduled the removal of the long-deprecated AM_PROG_MKDR_P
+macro (superseded by the Autoconf-provided one AC_PROG_MKDIR_P) for
+Automake 1.13 -- see commit 'v1.12-20-g8a1c64f'.
+
+Alas, it turned out the latest Gettext version at the time (0.18.1.1) was
+still using that macro:
+
+  <http://lists.gnu.org/archive/html/automake/2012-09/msg00010.html>
+
+And since the maintenance of Gettext was stalled, I couldn't get a fix
+committed and released in time for the appearance of Automake 1.13:
+
+  <http://lists.gnu.org/archive/html/bug-gettext/2012-04/msg00018.html>
+  <http://lists.gnu.org/archive/html/bug-gettext/2012-06/msg00012.html>
+  <http://lists.gnu.org/archive/html/bug-gettext/2012-10/msg00001.html>
+
+So, on strong advice by Jim Meyering, in commit 'v1.12.4-158-gdf23daf'
+I re-introduced AM_PROG_MKDIR_P in Automake (thanks to Jim for having
+convinced me to do so in time!)
+
+But then, Gettext (as said, the greatest "offender" in the use of
+AM_PROG_MKDIR_P), in its latest release 0.18.2, finally removed all the
+uses of that macro still present in its code base.  Yay.  So I thought
+we could finally and quite safely remove AM_PROG_MKDIR_P in Automake 1.14;
+and I proceeded to do so, see commit 'v1.13-30-gd01834b' and the merge
+commit 'v1.13-5-gb373ad9'.  Well, it turned out I was wrong, again, and
+in a trickier and sublter way this time.  Let's see the details.
+
+If a package's 'configure.ac' contains a call like:
+
+    AM_GNU_GETTEXT_VERSION([0.18])
+
+then the 'autopoint' script will bring the data files from the Gettext
+release *1.18* into the package's tree -- yes, even even if the developer
+has installed *and is using* Gettext 1.18.2!  Now, these data files
+comprise m4 files (that will be seen by subsequent aclocal and autoconf
+calls), and of course, the pre-0.18.2 version of some of these files
+still contains occurrences of AM_PROG_MKDIR_P -- so Automake 1.13 errors
+out, and we lose.  That already happened in practice:
+
+    <http://lists.gnu.org/archive/html/bug-grep/2013-01/msg00003.html>
+
+Moreover, while I might see it as not unreasonable to ask a developer
+using Automake 2.0 to also update Gettext to 1.18.2, that would not
+be enough; in order for gettext to use the correct data files, that
+developer would have to update his configure.ac to read:
+
+    AM_GNU_GETTEXT_VERSION([0.18.2])
+
+thus requiring *all* of his co-developers to install Gettext 1.18.2,
+even if they are still using, say, Automake 1.13 or 1.14.  Bad.
+
+So I decided to re-instate this macro as a simple alias for AC_PROG_MKDIR_P
+(plus a non-fatal runtime warning in the 'obsolete' category), and drop
+any plan to remove it (see how much good those plans have done us so far).
+See commit v1.13.1-109-g030ecb4.
+
+Similarly, the obsolete '@mkdir_p@' substitution and '$(mkdir_p)' make
+variable are still supported, as simple aliases to '$(MKDIR_P)'.
diff --git a/PLANS/obsolete-removed/configure.in.txt b/PLANS/obsolete-removed/configure.in.txt
new file mode 100644 (file)
index 0000000..d3f6da7
--- /dev/null
@@ -0,0 +1,28 @@
+In Automake 1.13.x (once planned, then dropped)
+-----------------------------------------------
+
+We are already warning about 'configure.in' used as the name for the
+Autoconf input file ('configure.ac' should be used instead); we've
+been doing that since Automake 1.12.4.
+
+We had scheduled to remove support for it altogether in Automake 1.13
+(and announced that in our NEWS file), because we thought that Autoconf
+too would have started deprecating it by the time our 1.13 release was
+done.  Alas, this hasn't been the case: the deprecation code is only
+present in the development version of autoconf so far (scheduled to
+become Autoconf 2.70).  So ...
+
+
+For Automake 2.0
+----------------
+
+... we have decided to wait until 2.70 is out before really removing
+'configure.in' support.  Since we plan to require Autoconf 2.70 in
+Automake 2.0 (so that we can remove the hacky code emulating
+AC_CONFIG_MACRO_DIRS for older autoconf versions), we are quite sure
+that Autoconf will actually have started deprecating 'configure.in'
+by the time Automake 2.0 is released.
+
+Note that the removal of 'configure.in' has already been implemented
+in our 'master' branch (from where the 2.0 release will be finally
+cut); see commits 'v1.13-17-gbff57c8' and 'v1.13-21-g7626e63'.
diff --git a/PLANS/rm-f-without-args.txt b/PLANS/rm-f-without-args.txt
new file mode 100644 (file)
index 0000000..b940fc3
--- /dev/null
@@ -0,0 +1,40 @@
+Summary
+-------
+
+POSIX will say in a future version that calling "rm -f" with no argument
+is OK; and this sensible behaviour seem to be already very widespread in
+"the wild" (and possibly lacking only on those systems that are well on
+their way to obsolescence).
+
+Se we'd like to simplify several automake-generated "cleaning" rules
+accordingly, to get rid of the awful idiom:
+
+  test -z "$(VAR)" || rm -f $(VAR)
+
+See automake bug#10828.
+
+For Automake 1.14 (DONE)
+------------------------
+
+Add a temporary "probe check" in AM_INIT_AUTOMAKE that verifies that
+the no-args "rm -f" usage is supported on the system configure is
+being run on; complain loudly if this is not the case, and tell the
+user to report the situation to us.
+
+For Automake 2.0
+----------------
+
+Make any failure in the configure-time probe check introduced by the
+previous point fatal; and in case of failure, also suggest to the user
+to install an older version of GNU coreutils to work around the
+limitation of his system (this version should be old enough not to
+be bootstrapped with Automake 2.0, otherwise the user will face a
+bootstrapping catch-22).
+
+In all our recipes, start assuming "rm -f" with no argument is OK;
+simplify and de-uglify the recipes accordingly.
+
+For Automake 3.0
+----------------
+
+Remove the runtime probe altogether.
diff --git a/PLANS/subdir-objects.txt b/PLANS/subdir-objects.txt
new file mode 100644 (file)
index 0000000..94c6305
--- /dev/null
@@ -0,0 +1,62 @@
+Summary
+-------
+
+We want to make the behaviour currently enabled by the 'subdir-objects'
+the default one, and in fact the *only* one, in Automake 2.0.
+See automake bug#13378: <http://debbugs.gnu.org/13378>.
+
+Details
+-------
+
+The fact that Automake-generated Makefiles place compiled object files in
+the current directory by default, also when the corresponding source file
+is in a subdirectory, is basically an historical accident, due to the fact
+that the 'subdir-objects' option had only been introduced in April 1999,
+starting with commit 'user-dep-gen-branchpoint-56-g88b5959', and never
+made the default (likely to avoid backwards-compatibility issues).
+
+Since I believe the behaviour enabled by the 'subdir-objects' is the most
+useful one, and in fact the *only* natural one, I'd like to make it the
+only one available, simplifying the Automake implementation and APIs a
+little in the process.
+
+Alas, since this also means changing the default behaviour of Automake
+('subdir-objects' is not enabled by default, sadly), this means the
+transition path will be less smooth than I'd like.
+
+DONE for automake 1.13.2
+------------------------
+
+The bug spotted by Nick Bowler:
+
+  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#35>
+  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#44>
+
+and exposed in test case 't/ccnoco4.sh' has been fixed (see commit
+v1.13.1-56-g34001a9).  The bug was due to the fact that Automake-generated
+C compilation rules mistakenly passed the "-c -o" options combination
+unconditionally (even to losing compiler) when the 'subdir-objects' was
+used but sources were only present in the top-level directory.
+
+DONE for automake 1.14
+----------------------
+
+We give a warning in the category 'unsupported' if the 'subdir-objects'
+option is not specified.  This should give the users enough forewarning
+about the planned change, and give them time to update their packages
+to the new semantic.
+
+We also make sure to avoid the warning when it would be irrelevant, i.e.,
+if all source files sit in "current" directory (thanks to Peter Johansson
+for suggesting this).
+
+For automake 2.0
+----------------
+
+Make the behaviour once activated by the 'subdir-object' option mandatory.
+With that change, we'll drop support for the "old" behaviour of having
+object files derived from sources in a subdirectory being placed in the
+current directory rather than in that same subdirectory.
+
+Still keep the 'subdir-objects' option supported (as a simple no-op
+now), to save useless churn in our user's build systems.
diff --git a/PLANS/texi/drop-split-info-files.txt b/PLANS/texi/drop-split-info-files.txt
new file mode 100644 (file)
index 0000000..a0a5636
--- /dev/null
@@ -0,0 +1,27 @@
+For in Automake 2.0 (DONE)
+--------------------------
+
+We will drop split info files in Automake 2.0.
+See automake bug#13351: <http://debbugs.gnu.org/13351>.
+
+Basically, it has been confirmed that the original reason behind
+the existence of split info files was indeed "efficiency,
+especially memory size":
+<http://lists.gnu.org/archive/html/texinfo-devel/2012-08/msg00024.html>
+
+So split info files have lost their reason d'etre on modern systems
+(where even Emacs has become a lightweight program ;-).  And you are
+not using an embedded system to read Info documentation, right?
+
+In addition, it appears that the use of split info files (at least
+the way Automake-generated rules have been handling them for a long
+time) can cause real problems in some (admittedly quite corner-case)
+situations; see automake bug#12320: <http://debbugs.gnu.org/12320>.
+
+This change should be completely transparent to the developer (no
+adjustments needed to be made to Makefile.am or other parts of the
+build system).  In case some CI system or overly picky build script
+used to rely on that feature, they'll have to be adjusted; but that
+is expected to be a rare occurrence, and thus a price worth pay for
+the nice simplifications and the fixlets this planned change will
+offer us.
diff --git a/PLANS/texi/warnings-for-automake-ng-compatibility.txt b/PLANS/texi/warnings-for-automake-ng-compatibility.txt
new file mode 100644 (file)
index 0000000..aca46b4
--- /dev/null
@@ -0,0 +1,21 @@
+Done in automake 1.13.2:
+------------------------
+
+I have discouraged the use of '.txi' and '.texinfo' suffixes for
+Texinfo inputs (see commit 'v1.13.1-6-ge1ed314') and the generation
+of suffix-less info files (commit 'v1.13.1-4-g2af418d').
+
+This is done to ease transition to Automake-NG (see commits
+'v1.12.1-416-gd5459b9' and 'v1.12.1-392-ga0c7b6a' there), and
+(to a lesser degree) to discourage use of seldom-tested setups.
+
+
+The Future:
+-----------
+
+I have no plans to do the further step of removing support for those
+usages in future Automake versions.  That would be a gratuitous
+incompatibility (in Automake-NG, they have been useful because have
+allowed further refactorings and improvements, but those were
+based on GNU make features, and as such have no place in mainline
+Automake).
diff --git a/THANKS b/THANKS
index c5c7c49..763c285 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -6,7 +6,7 @@ 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
+Akim Demaille                   akim@gnu.org
 Alan Modra                      amodra@bigpond.net.au
 Alex Hornby                     alex@anvil.co.uk
 Alex Unleashed                  unledev@gmail.com
@@ -109,7 +109,7 @@ 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 Blake                      eblake@redhat.com
 Eric Dorland                    eric@debian.org
 Eric Magnien                    emagnien@club-internet.fr
 Eric Siegerman                  erics_97@pobox.com
diff --git a/bin/Makefile.inc b/bin/Makefile.inc
new file mode 100644 (file)
index 0000000..5842b71
--- /dev/null
@@ -0,0 +1,71 @@
+## Copyright (C) 1995-2013 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ----------------------------------- ##
+##  The automake and aclocal scripts.  ##
+## ----------------------------------- ##
+
+bin_SCRIPTS = %D%/automake %D%/aclocal
+CLEANFILES += $(bin_SCRIPTS)
+
+# Used by maintainer checks and such.
+automake_in = $(srcdir)/%D%/automake.in
+aclocal_in  = $(srcdir)/%D%/aclocal.in
+automake_script = %D%/automake
+aclocal_script  = %D%/aclocal
+
+AUTOMAKESOURCES = $(automake_in) $(aclocal_in)
+TAGS_FILES += $(AUTOMAKESOURCES)
+EXTRA_DIST += $(AUTOMAKESOURCES)
+
+# 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 -e 's,.*/,,' -e '$(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 -e 's,.*/,,' -e '$(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.
+%D%/automake: %D%/automake.in
+%D%/aclocal: %D%/aclocal.in
+%D%/automake %D%/aclocal: Makefile %D%/gen-perl-protos
+       $(AM_V_GEN)rm -f $@ $@-t $@-t2 \
+         && $(MKDIR_P) $(@D) \
+## Common substitutions.
+         && in=$@.in && $(do_subst) <$(srcdir)/$$in >$@-t \
+## Auto-compute prototypes of perl subroutines.
+         && $(PERL) -w $(srcdir)/%D%/gen-perl-protos $@-t > $@-t2 \
+         && mv -f $@-t2 $@-t \
+## We can't use '$(generated_file_finalize)' here, because currently
+## Automake contains occurrences of unexpanded @substitutions@ in
+## comments, and that is perfectly legit.
+         && chmod a+x,a-w $@-t && mv -f $@-t $@
+EXTRA_DIST += %D%/gen-perl-protos
+
+# vim: ft=automake noet
similarity index 98%
rename from aclocal.in
rename to bin/aclocal.in
index 0787019..ba30479 100644 (file)
@@ -174,27 +174,7 @@ use constant SCAN_M4_DIRS_ERROR => 2;
 
 # 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 ();
+#! Prototypes here will automatically be generated by the build system.
 
 ################################################################
 
similarity index 91%
rename from automake.in
rename to bin/automake.in
index 63d5bdf..40b3181 100644 (file)
@@ -25,7 +25,9 @@ eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac'
 # Perl reimplementation by Tom Tromey <tromey@redhat.com>, and
 # Alexandre Duret-Lutz <adl@gnu.org>.
 
-package Language;
+package Automake;
+
+use strict;
 
 BEGIN
 {
@@ -43,93 +45,6 @@ BEGIN
   $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
 {
@@ -156,10 +71,18 @@ use Automake::VarDef;
 use Automake::Rule;
 use Automake::RuleDef;
 use Automake::Wrap 'makefile_wrap';
+use Automake::Language;
 use File::Basename;
 use File::Spec;
 use Carp;
 
+## ----------------------- ##
+## Subroutine prototypes.  ##
+## ----------------------- ##
+
+#! Prototypes here will automatically be generated by the build system.
+
+
 ## ----------- ##
 ## Constants.  ##
 ## ----------- ##
@@ -341,7 +264,7 @@ my %ac_config_files_location = ();
 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
+# 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 = '';
@@ -387,9 +310,6 @@ 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 = ();
 
@@ -609,7 +529,7 @@ my %am_file_cache;
 # 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 ($$)
+sub var_SUFFIXES_trigger
 {
     my ($type, $value) = @_;
     accept_extensions (split (' ', $value));
@@ -618,16 +538,9 @@ Automake::Variable::hook ('SUFFIXES', \&var_SUFFIXES_trigger);
 
 ################################################################
 
-## --------------------------------- ##
-## Forward subroutine declarations.  ##
-## --------------------------------- ##
-sub register_language (%);
-sub file_contents_internal ($$$%);
-sub define_files_variable ($\@$$);
 
-
-# &initialize_per_input ()
-# ------------------------
+# initialize_per_input ()
+# -----------------------
 # (Re)-Initialize per-Makefile.am variables.
 sub initialize_per_input ()
 {
@@ -696,6 +609,15 @@ sub initialize_per_input ()
 
 # Initialize our list of languages that are internally supported.
 
+my @cpplike_flags =
+  qw{
+    $(DEFS)
+    $(DEFAULT_INCLUDES)
+    $(INCLUDES)
+    $(AM_CPPFLAGS)
+    $(CPPFLAGS)
+  };
+
 # C.
 register_language ('name' => 'c',
                   'Name' => 'C',
@@ -704,12 +626,13 @@ register_language ('name' => 'c',
                   'flags' => ['CFLAGS', 'CPPFLAGS'],
                   'ccer' => 'CC',
                   'compiler' => 'COMPILE',
-                  'compile' => '$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)',
+                  'compile' => "\$(CC) @cpplike_flags \$(AM_CFLAGS) \$(CFLAGS)",
                   'lder' => 'CCLD',
                   'ld' => '$(CC)',
                   'linker' => 'LINK',
                   'link' => '$(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
                   'compile_flag' => '-c',
+                  'output_flag' => '-o',
                   'libtool_tag' => 'CC',
                   'extensions' => ['.c']);
 
@@ -721,7 +644,7 @@ register_language ('name' => 'cxx',
                   '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)',
+                  'compile' => "\$(CXX) @cpplike_flags \$(AM_CXXFLAGS) \$(CXXFLAGS)",
                   'ccer' => 'CXX',
                   'compiler' => 'CXXCOMPILE',
                   'compile_flag' => '-c',
@@ -740,7 +663,7 @@ register_language ('name' => 'objc',
                   '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)',
+                  'compile' => "\$(OBJC) @cpplike_flags \$(AM_OBJCFLAGS) \$(OBJCFLAGS)",
                   'ccer' => 'OBJC',
                   'compiler' => 'OBJCCOMPILE',
                   'compile_flag' => '-c',
@@ -758,7 +681,7 @@ register_language ('name' => 'objcxx',
                   '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)',
+                  'compile' => "\$(OBJCXX) @cpplike_flags \$(AM_OBJCXXFLAGS) \$(OBJCXXFLAGS)",
                   'ccer' => 'OBJCXX',
                   'compiler' => 'OBJCXXCOMPILE',
                   'compile_flag' => '-c',
@@ -776,7 +699,7 @@ register_language ('name' => 'upc',
                   '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)',
+                  'compile' => "\$(UPC) @cpplike_flags \$(AM_UPCFLAGS) \$(UPCFLAGS)",
                   'ccer' => 'UPC',
                   'compiler' => 'UPCCOMPILE',
                   'compile_flag' => '-c',
@@ -895,7 +818,7 @@ register_language ('name' => 'cppasm',
 
                   'autodep' => 'CCAS',
                   'flags' => ['CCASFLAGS', 'CPPFLAGS'],
-                  'compile' => '$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)',
+                  'compile' => "\$(CCAS) @cpplike_flags \$(AM_CCASFLAGS) \$(CCASFLAGS)",
                   'ccer' => 'CPPAS',
                   'compiler' => 'CPPASCOMPILE',
                   'compile_flag' => '-c',
@@ -949,7 +872,7 @@ register_language ('name' => 'ppfc',
                   'flags' => ['FCFLAGS', 'CPPFLAGS'],
                   'ccer' => 'PPFC',
                   'compiler' => 'PPFCCOMPILE',
-                  'compile' => '$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)',
+                  'compile' => "\$(FC) @cpplike_flags \$(AM_FCFLAGS) \$(FCFLAGS)",
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
                   'libtool_tag' => 'FC',
@@ -981,7 +904,7 @@ register_language ('name' => 'ppf77',
                   'flags' => ['FFLAGS', 'CPPFLAGS'],
                   'ccer' => 'PPF77',
                   'compiler' => 'PPF77COMPILE',
-                  'compile' => '$(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)',
+                  'compile' => "\$(F77) @cpplike_flags \$(AM_FFLAGS) \$(FFLAGS)",
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
                   'libtool_tag' => 'F77',
@@ -1033,7 +956,7 @@ register_language ('name' => 'java',
 # err_am ($MESSAGE, [%OPTIONS])
 # -----------------------------
 # Uncategorized errors about the current Makefile.am.
-sub err_am ($;%)
+sub err_am
 {
   msg_am ('error', @_);
 }
@@ -1041,7 +964,7 @@ sub err_am ($;%)
 # err_ac ($MESSAGE, [%OPTIONS])
 # -----------------------------
 # Uncategorized errors about configure.ac.
-sub err_ac ($;%)
+sub err_ac
 {
   msg_ac ('error', @_);
 }
@@ -1049,7 +972,7 @@ sub err_ac ($;%)
 # msg_am ($CHANNEL, $MESSAGE, [%OPTIONS])
 # ---------------------------------------
 # Messages about about the current Makefile.am.
-sub msg_am ($$;%)
+sub msg_am
 {
   my ($channel, $msg, %opts) = @_;
   msg $channel, "${am_file}.am", $msg, %opts;
@@ -1058,7 +981,7 @@ sub msg_am ($$;%)
 # msg_ac ($CHANNEL, $MESSAGE, [%OPTIONS])
 # ---------------------------------------
 # Messages about about configure.ac.
-sub msg_ac ($$;%)
+sub msg_ac
 {
   my ($channel, $msg, %opts) = @_;
   msg $channel, $configure_ac, $msg, %opts;
@@ -1072,7 +995,7 @@ sub msg_ac ($$;%)
 # 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 ($)
+sub subst
 {
     my ($text) = @_;
     return '@' . $text . '@';
@@ -1082,12 +1005,12 @@ sub subst ($)
 
 
 # $BACKPATH
-# &backname ($RELDIR)
-# --------------------
+# 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 ($)
+sub backname
 {
     my ($file) = @_;
     my @res;
@@ -1114,7 +1037,7 @@ sub backname ($)
 # verbose_var (NAME)
 # ------------------
 # The public variable stem used to implement silent rules.
-sub verbose_var ($)
+sub verbose_var
 {
     my ($name) = @_;
     return 'AM_V_' . $name;
@@ -1123,7 +1046,7 @@ sub verbose_var ($)
 # verbose_private_var (NAME)
 # --------------------------
 # The naming policy for the private variables for silent rules.
-sub verbose_private_var ($)
+sub verbose_private_var
 {
     my ($name) = @_;
     return 'am__v_' . $name;
@@ -1134,7 +1057,7 @@ sub verbose_private_var ($)
 # For  silent rules, setup VAR and dispatcher, to expand to
 # VAL-IF-SILENT if silent, to VAL-IF-VERBOSE (defaulting to
 # empty) if not.
-sub define_verbose_var ($$;$)
+sub define_verbose_var
 {
     my ($name, $silent_val, $verbose_val) = @_;
     $verbose_val = '' unless defined $verbose_val;
@@ -1157,18 +1080,16 @@ sub define_verbose_var ($$;$)
       if (! vardef ($verbose_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 ($)
+# Contents of '%VERBOSE%' variable to expand before rule command.
+sub verbose_flag
 {
     my ($name) = @_;
     return '$(' . verbose_var ($name) . ')';
 }
 
-sub verbose_nodep_flag ($)
+sub verbose_nodep_flag
 {
     my ($name) = @_;
     return '$(' . verbose_var ($name) . subst ('am__nodep') . ')';
@@ -1185,14 +1106,12 @@ sub silent_flag ()
 # define_verbose_tagvar (NAME)
 # ----------------------------
 # Engage the needed silent rules machinery for tag NAME.
-sub define_verbose_tagvar ($)
+sub define_verbose_tagvar
 {
     my ($name) = @_;
     define_verbose_var ($name, '@echo "  '. $name . ' ' x (8 - length ($name)) . '" $@;');
 }
 
-# define_verbose_texinfo
-# ----------------------
 # Engage the needed silent rules machinery for assorted texinfo commands.
 sub define_verbose_texinfo ()
 {
@@ -1205,8 +1124,6 @@ sub define_verbose_texinfo ()
   define_verbose_var('texidevnull', '> /dev/null');
 }
 
-# define_verbose_libtool
-# ----------------------
 # Engage the needed silent rules machinery for 'libtool --silent'.
 sub define_verbose_libtool ()
 {
@@ -1232,8 +1149,8 @@ sub handle_silent ()
 ################################################################
 
 
-# Handle AUTOMAKE_OPTIONS variable.  Return 1 on error, 0 otherwise.
-sub handle_options
+# Handle AUTOMAKE_OPTIONS variable.  Return 0 on error, 1 otherwise.
+sub handle_options ()
 {
   my $var = var ('AUTOMAKE_OPTIONS');
   if ($var)
@@ -1246,7 +1163,7 @@ sub handle_options
       my @options = map { { option => $_->[1], where => $_->[0] } }
                        $var->value_as_list_recursive (cond_filter => TRUE,
                                                       location => 1);
-      return 1 if process_option_list (@options);
+      return 0 unless process_option_list (@options);
     }
 
   if ($strictness == GNITS)
@@ -1256,7 +1173,7 @@ sub handle_options
       set_option ('check-news', INTERNAL);
     }
 
-  return 0;
+  return 1;
 }
 
 # shadow_unconditionally ($varname, $where)
@@ -1266,7 +1183,7 @@ sub handle_options
 # 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 ($$)
+sub shadow_unconditionally
 {
   my ($varname, $where) = @_;
   my $var = var $varname;
@@ -1283,7 +1200,7 @@ sub shadow_unconditionally ($$)
 # ----------------------------
 # Make sure each variable VAR in @LIST does not exist, suggest using AM_VAR
 # otherwise.
-sub check_user_variables (@)
+sub check_user_variables
 {
   my @dont_override = @_;
   foreach my $flag (@dont_override)
@@ -1306,7 +1223,7 @@ sub check_user_variables (@)
 }
 
 # Call finish function for each language that was used.
-sub handle_languages
+sub handle_languages ()
 {
     if (! option 'no-dependencies')
     {
@@ -1315,10 +1232,10 @@ sub handle_languages
        if (keys %extension_seen && keys %dep_files)
        {
            # Set location of depcomp.
-           &define_variable ('depcomp',
-                             "\$(SHELL) $am_config_aux_dir/depcomp",
-                             INTERNAL);
-           &define_variable ('am__depfiles_maybe', 'depfiles', INTERNAL);
+           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');
 
@@ -1341,15 +1258,15 @@ sub handle_languages
 
            # 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");
+           $output_rules .= file_contents ('depend',
+                                           new Automake::Location,
+                                           DEPDIRS => "@depdirs");
        }
     }
     else
     {
-       &define_variable ('depcomp', '', INTERNAL);
-       &define_variable ('am__depfiles_maybe', '', INTERNAL);
+       define_variable ('depcomp', '', INTERNAL);
+       define_variable ('am__depfiles_maybe', '', INTERNAL);
     }
 
     my %done;
@@ -1384,7 +1301,7 @@ sub handle_languages
                         'FASTDEP' => $FASTDEP,
                         '-c'      => $lang->compile_flag || '',
                         # These are not used, but they need to be defined
-                        # so &transform do not complain.
+                        # so transform() do not complain.
                         SUBDIROBJ     => 0,
                         'DERIVED-EXT' => 'BUG',
                         DIST_SOURCE   => 1,
@@ -1397,17 +1314,9 @@ sub handle_languages
        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];
+           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
@@ -1448,7 +1357,7 @@ sub handle_languages
 
                             COMPILE   => '$(' . $lang->compiler . ')',
                             LTCOMPILE => '$(LT' . $lang->compiler . ')',
-                            -o        => $output_flag,
+                            -o        => $lang->output_flag,
                             SUBDIROBJ => !! option 'subdir-objects');
        }
 
@@ -1577,7 +1486,7 @@ sub handle_languages
 
     if ($needs_c)
       {
-       &define_compiler_variable ($languages{'c'})
+       define_compiler_variable ($languages{'c'})
          unless defined $done{$languages{'c'}};
        define_linker_variable ($languages{'c'});
       }
@@ -1661,7 +1570,7 @@ sub check_libobjs_sources
 #     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 ($$$$$%)
+sub handle_single_transform
 {
     my ($var, $topparent, $derived, $obj, $_file, %transform) = @_;
     my @files = ($_file);
@@ -1712,13 +1621,13 @@ sub handle_single_transform ($$$$$%)
        # language function.
        my $aggregate = 'AM';
 
-       $extension = &derive_suffix ($extension, $obj);
+       $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);
+           saw_extension ($extension);
 
            # Do we have per-executable flags for this executable?
            my $have_per_exec_flags = 0;
@@ -1796,9 +1705,36 @@ sub handle_single_transform ($$$$$%)
 
            # If rewrite said it was ok, put the object into a
            # subdir.
-           if ($r == LANG_SUBDIR && $directory ne '')
+           if ($directory ne '')
            {
-               $object = $directory . '/' . $object;
+              if ($r == LANG_SUBDIR)
+                {
+                  $object = $directory . '/' . $object;
+                }
+              else
+                {
+                  # Since the next major version of automake (2.0) will
+                  # make the behaviour so far only activated with the
+                  # 'subdir-object' option mandatory, it's better if we
+                  # start warning users not using that option.
+                  # As suggested by Peter Johansson, we strive to avoid
+                  # the warning when it would be irrelevant, i.e., if
+                  # all source files sit in "current" directory.
+                  msg_var 'unsupported', $var,
+                          "source file '$full' is in a subdirectory,"
+                          . "\nbut option 'subdir-objects' is disabled";
+                  msg 'unsupported', INTERNAL, <<'EOF', uniq_scope => US_GLOBAL;
+possible forward-incompatibility.
+At least a source file is in a subdirectory, but the 'subdir-objects'
+automake option hasn't been enabled.  For now, the corresponding output
+object file(s) will be placed in the top-level directory.  However,
+this behaviour will change in future Automake versions: they will
+unconditionally cause object files to be placed in the same subdirectory
+of the corresponding sources.
+You are advised to start using 'subdir-objects' option throughout your
+project, to avoid future incompatibilities.
+EOF
+                }
            }
 
            # If the object file has been renamed (because per-target
@@ -1931,7 +1867,7 @@ sub handle_single_transform ($$$$$%)
            unshift (@files, $object);
            # Distribute derived sources unless the source they are
            # derived from is not.
-           &push_dist_common ($object)
+           push_dist_common ($object)
              unless ($topparent =~ /^(?:nobase_)?nodist_/);
            next;
          }
@@ -1986,7 +1922,7 @@ sub handle_single_transform ($$$$$%)
                  unless option 'no-dependencies';
            }
 
-           &pretty_print_rule ($object . ':', "\t", @dep_list)
+           pretty_print_rule ($object . ':', "\t", @dep_list)
                if scalar @dep_list > 0;
        }
 
@@ -2037,7 +1973,7 @@ sub handle_single_transform ($$$$$%)
 #
 # 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 ($$$$$$$%)
+sub define_objects_from_sources
 {
   my ($var, $objvar, $nodefine, $one_file,
       $obj, $topparent, $where, %transform) = @_;
@@ -2071,7 +2007,7 @@ sub define_objects_from_sources ($$$$$$$%)
 #   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 ($$$$%)
+sub handle_source_transform
 {
     # one_file is canonical name.  unxformed is given name.  obj is
     # object extension.
@@ -2109,14 +2045,14 @@ sub handle_source_transform ($$$$%)
        $needlinker |=
            define_objects_from_sources ($varname,
                                         $xpfx . $one_file . '_OBJECTS',
-                                        $prefix =~ /EXTRA_/,
+                                        !!($prefix =~ /EXTRA_/),
                                         $one_file, $obj, $varname, $where,
                                         DIST_SOURCE => ($prefix !~ /^nodist_/),
                                         %transform);
     }
     if ($needlinker)
     {
-       $linker ||= &resolve_linker (%linkers_used);
+       $linker ||= resolve_linker (%linkers_used);
     }
 
     my @keys = sort keys %used_pfx;
@@ -2156,7 +2092,7 @@ sub handle_source_transform ($$$$%)
            $default_source = '$(srcdir)/' . $default_source;
          }
 
-       &define_variable ($one_file . "_SOURCES", $default_source, $where);
+       define_variable ($one_file . "_SOURCES", $default_source, $where);
        push (@sources, $default_source);
        push (@dist_sources, $default_source);
 
@@ -2166,7 +2102,7 @@ sub handle_source_transform ($$$$%)
                                   $one_file . '_SOURCES',
                                   $one_file, $obj,
                                   $default_source, %transform);
-       $linker ||= &resolve_linker (%linkers_used);
+       $linker ||= resolve_linker (%linkers_used);
        define_pretty_variable ($one_file . '_OBJECTS', TRUE, $where, @result);
     }
     else
@@ -2271,7 +2207,7 @@ sub handle_lib_objects
 # -------------------------------
 # Definitions common to LIBOBJS and ALLOCA.
 # VAR should be one of LIBOBJS, LTLIBOBJS, ALLOCA, or LTALLOCA.
-sub handle_LIBOBJS_or_ALLOCA ($)
+sub handle_LIBOBJS_or_ALLOCA
 {
   my ($var) = @_;
 
@@ -2310,7 +2246,7 @@ sub handle_LIBOBJS_or_ALLOCA ($)
   return $dir;
 }
 
-sub handle_LIBOBJS ($$$)
+sub handle_LIBOBJS
 {
   my ($var, $cond, $lt) = @_;
   my $myobjext = $lt ? 'lo' : 'o';
@@ -2325,8 +2261,8 @@ sub handle_LIBOBJS ($$$)
     {
       if ($iter =~ /\.[cly]$/)
        {
-         &saw_extension ($&);
-         &saw_extension ('.c');
+         saw_extension ($&);
+         saw_extension ('.c');
        }
 
       if ($iter =~ /\.h$/)
@@ -2349,7 +2285,7 @@ sub handle_LIBOBJS ($$$)
     }
 }
 
-sub handle_ALLOCA ($$$)
+sub handle_ALLOCA
 {
   my ($var, $cond, $lt) = @_;
   my $myobjext = $lt ? 'lo' : 'o';
@@ -2359,10 +2295,10 @@ sub handle_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');
+  saw_extension ('.c');
 }
 
-# Canonicalize the input parameter
+# Canonicalize the input parameter.
 sub canonicalize
 {
     my ($string) = @_;
@@ -2377,7 +2313,7 @@ sub check_canonical_spelling
 {
   my ($name, @suffixes) = @_;
 
-  my $xname = &canonicalize ($name);
+  my $xname = canonicalize ($name);
   if ($xname ne $name)
     {
       foreach my $xt (@suffixes)
@@ -2389,9 +2325,6 @@ sub check_canonical_spelling
   return $xname;
 }
 
-
-# handle_compile ()
-# -----------------
 # Set up the compile suite.
 sub handle_compile ()
 {
@@ -2437,19 +2370,17 @@ sub handle_compile ()
     }
 
     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)));
+      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
+sub handle_libtool ()
 {
   return unless var ('LIBTOOL');
 
@@ -2470,24 +2401,22 @@ sub handle_libtool
   check_user_variables 'LIBTOOLFLAGS';
 
   # Output the libtool compilation rules.
-  $output_rules .= &file_contents ('libtool',
-                                  new Automake::Location,
+  $output_rules .= file_contents ('libtool',
+                                 new Automake::Location,
                                   LTRMS => join ("\n", @libtool_rms));
 }
 
-# handle_programs ()
-# ------------------
-# Handle C programs.
-sub handle_programs
+
+sub handle_programs ()
 {
-  my @proglist = &am_install_var ('progs', 'PROGRAMS',
-                                 'bin', 'sbin', 'libexec', 'pkglibexec',
-                                 'noinst', 'check');
+  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');
+    var ('LDADD') && handle_lib_objects ('', 'LDADD');
 
   foreach my $pair (@proglist)
     {
@@ -2499,30 +2428,30 @@ sub handle_programs
       $known_programs{$one_file} = $where;
 
       # Canonicalize names and check for misspellings.
-      my $xname = &check_canonical_spelling ($one_file, '_LDADD', '_LDFLAGS',
-                                            '_SOURCES', '_OBJECTS',
-                                            '_DEPENDENCIES');
+      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);
+      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');
+         $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);
+         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');
+             $seen_libobjs = handle_lib_objects ($xname, 'LDADD');
            }
        }
 
@@ -2534,7 +2463,7 @@ sub handle_programs
       set_seen ($xname . '_LDFLAGS');
 
       # Determine program to use for link.
-      my($xlink, $vlink) = &define_per_target_linker_variable ($linker, $xname);
+      my($xlink, $vlink) = define_per_target_linker_variable ($linker, $xname);
       $vlink = verbose_flag ($vlink || 'GEN');
 
       # If the resulting program lies in a subdirectory,
@@ -2543,37 +2472,34 @@ sub handle_programs
 
       $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)');
+      $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');
+             check_libobjs_sources ($xname, $xname . '_LDADD');
            }
          elsif (var ('LDADD'))
            {
-             &check_libobjs_sources ($xname, 'LDADD');
+             check_libobjs_sources ($xname, 'LDADD');
            }
        }
     }
 }
 
 
-# handle_libraries ()
-# -------------------
-# Handle libraries.
-sub handle_libraries
+sub handle_libraries ()
 {
-  my @liblist = &am_install_var ('libs', 'LIBRARIES',
-                                'lib', 'pkglib', 'noinst', 'check');
+  my @liblist = am_install_var ('libs', 'LIBRARIES',
+                                'lib', 'pkglib', 'noinst', 'check');
   return if ! @liblist;
   $must_handle_compiled_objects = 1;
 
@@ -2586,9 +2512,9 @@ sub handle_libraries
       $var->requires_variables ('library used', 'RANLIB');
     }
 
-  &define_variable ('AR', 'ar', INTERNAL);
-  &define_variable ('ARFLAGS', 'cru', INTERNAL);
-  &define_verbose_tagvar ('AR');
+  define_variable ('AR', 'ar', INTERNAL);
+  define_variable ('ARFLAGS', 'cru', INTERNAL);
+  define_verbose_tagvar ('AR');
 
   foreach my $pair (@liblist)
     {
@@ -2615,27 +2541,27 @@ sub handle_libraries
       my $obj = '.$(OBJEXT)';
 
       # Canonicalize names and check for misspellings.
-      my $xlib = &check_canonical_spelling ($onelib, '_LIBADD', '_SOURCES',
-                                           '_OBJECTS', '_DEPENDENCIES',
-                                           '_AR');
+      my $xlib = check_canonical_spelling ($onelib, '_LIBADD', '_SOURCES',
+                                           '_OBJECTS', '_DEPENDENCIES',
+                                           '_AR');
 
       if (! var ($xlib . '_AR'))
        {
-         &define_variable ($xlib . '_AR', '$(AR) $(ARFLAGS)', $where);
+         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'))
+         if (handle_lib_objects ($xlib, $xlib . '_LIBADD'))
            {
              $seen_libobjs = 1;
            }
        }
       else
        {
-         &define_variable ($xlib . "_LIBADD", '', $where);
+         define_variable ($xlib . "_LIBADD", '', $where);
        }
 
       reject_var ($xlib . '_LDADD',
@@ -2645,8 +2571,8 @@ sub handle_libraries
       set_seen ($xlib . '_DEPENDENCIES');
       set_seen ('EXTRA_' . $xlib . '_DEPENDENCIES');
 
-      &handle_source_transform ($xlib, $onelib, $obj, $where,
-                               NONLIBTOOL => 1, LIBTOOL => 0);
+      handle_source_transform ($xlib, $onelib, $obj, $where,
+                               NONLIBTOOL => 1, LIBTOOL => 0);
 
       # If the resulting library lies in a subdirectory,
       # make sure this directory will exist.
@@ -2654,19 +2580,19 @@ sub handle_libraries
       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);
+      $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');
+             check_libobjs_sources ($xlib, $xlib . '_LIBADD');
            }
        }
 
@@ -2680,13 +2606,10 @@ sub handle_libraries
 }
 
 
-# handle_ltlibraries ()
-# ---------------------
-# Handle shared libraries.
-sub handle_ltlibraries
+sub handle_ltlibraries ()
 {
-  my @liblist = &am_install_var ('ltlib', 'LTLIBRARIES',
-                                'noinst', 'lib', 'pkglib', 'check');
+  my @liblist = am_install_var ('ltlib', 'LTLIBRARIES',
+                                'noinst', 'lib', 'pkglib', 'check');
   return if ! @liblist;
   $must_handle_compiled_objects = 1;
 
@@ -2788,9 +2711,9 @@ sub handle_ltlibraries
       my $obj = '.lo';
 
       # Canonicalize names and check for misspellings.
-      my $xlib = &check_canonical_spelling ($onelib, '_LIBADD', '_LDFLAGS',
-                                           '_SOURCES', '_OBJECTS',
-                                           '_DEPENDENCIES');
+      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';
@@ -2837,25 +2760,25 @@ sub handle_ltlibraries
       # libraries.
       if (var ($xlib . '_LIBADD'))
        {
-         if (&handle_lib_objects ($xlib, $xlib . '_LIBADD'))
+         if (handle_lib_objects ($xlib, $xlib . '_LIBADD'))
            {
              $seen_libobjs = 1;
            }
        }
       else
        {
-         &define_variable ($xlib . "_LIBADD", '', $where);
+         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);
+      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);
+      my($xlink, $vlink) = define_per_target_linker_variable ($linker, $xlib);
       $vlink = verbose_flag ($vlink || 'GEN');
 
       my $rpathvar = "am_${xlib}_rpath";
@@ -2900,19 +2823,19 @@ sub handle_ltlibraries
       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);
+      $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');
+             check_libobjs_sources ($xlib, $xlib . '_LIBADD');
            }
        }
 
@@ -2952,30 +2875,27 @@ sub check_typos ()
 }
 
 
-# Handle scripts.
-sub 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');
+    am_install_var ('-candist', 'scripts', 'SCRIPTS',
+                    'bin', 'sbin', 'libexec', 'pkglibexec', 'pkgdata',
+                    'noinst', 'check');
 }
 
 
-
-
 ## ------------------------ ##
 ## Handling Texinfo files.  ##
 ## ------------------------ ##
 
 # ($OUTFILE, $VFILE)
-# &scan_texinfo_file ($FILENAME)
-# ------------------------------
+# scan_texinfo_file ($FILENAME)
+# -----------------------------
 # $OUTFILE     - name of the info file produced by $FILENAME.
 # $VFILE       - name of the version.texi file used (undef if none).
-sub scan_texinfo_file ($)
+sub scan_texinfo_file
 {
   my ($filename) = @_;
 
@@ -3030,7 +2950,7 @@ sub scan_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 ($$$@)
+sub output_texinfo_build_rules
 {
   my ($source, $dest, $insrc, @deps) = @_;
 
@@ -3124,8 +3044,8 @@ sub output_texinfo_build_rules ($$$@)
 # ($MOSTLYCLEAN, $TEXICLEAN, $MAINTCLEAN)
 # handle_texinfo_helper ($info_texinfos)
 # --------------------------------------
-# Handle all Texinfo source; helper for handle_texinfo.
-sub handle_texinfo_helper ($)
+# Handle all Texinfo source; helper for 'handle_texinfo'.
+sub handle_texinfo_helper
 {
   my ($info_texinfos) = @_;
   my (@infobase, @info_deps_list, @texi_deps);
@@ -3274,23 +3194,51 @@ sub handle_texinfo_helper ($)
       # 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;
-
+      # off in two cases:
+      #  (1) 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.
+      #  (2) When the undocumented option 'info-in-builddir' is given.
+      #      This is done to allow the developers of GCC, GDB, GNU
+      #      binutils and the GNU bfd library to force the '.info' files
+      #      to be generated in the builddir rather than the srcdir, as
+      #      was once done when the (now removed) 'cygnus' option was
+      #      given.  See automake bug#11034 for more discussion.
+      my $insrc = 1;
       my $soutdir = '$(srcdir)/' . $outdir;
+
+      if (option 'info-in-builddir')
+        {
+          $insrc = 0;
+        }
+      elsif ($out_file =~ $user_cleaned_files)
+        {
+          $insrc = 0;
+          msg 'obsolete', "$am_file.am", <<EOF;
+Oops!
+    It appears this file (or files included by it) are triggering
+    an undocumented, soon-to-be-removed automake hack.
+    Future automake versions will no longer place in the builddir
+    (rather than in the srcdir) the generated '.info' files that
+    appear to be cleaned, by e.g. being listed in CLEANFILES or
+    DISTCLEANFILES.
+    If you want your '.info' files to be placed in the builddir
+    rather than in the srcdir, you have to use the shiny new
+    'info-in-builddir' automake option.
+EOF
+        }
+
       $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;
+      push (@texi_deps, "${soutdir}${vtexi}") if $vtexi;
 
       my $canonical = canonicalize ($infobase);
       if (var ($canonical . "_TEXINFOS"))
@@ -3417,9 +3365,6 @@ sub handle_texinfo_helper ($)
 }
 
 
-# handle_texinfo ()
-# -----------------
-# Handle all Texinfo source.
 sub handle_texinfo ()
 {
   reject_var 'TEXINFOS', "'TEXINFOS' is an anachronism; use 'info_TEXINFOS'";
@@ -3448,8 +3393,7 @@ sub handle_texinfo ()
 }
 
 
-# Handle any man pages.
-sub handle_man_pages
+sub handle_man_pages ()
 {
   reject_var 'MANS', "'MANS' is an anachronism; use 'man_MANS'";
 
@@ -3483,7 +3427,7 @@ sub handle_man_pages
                      $trans_sect_vars{$varname} = 1;
                    }
 
-                 &push_dist_common ($varname)
+                 push_dist_common ($varname)
                    if $pfx eq 'dist_';
                }
            }
@@ -3518,7 +3462,7 @@ sub handle_man_pages
                {
                  $trans_vars{$varname} = 1;
                }
-             &push_dist_common ($varname)
+             push_dist_common ($varname)
                if $pfx eq 'dist_';
            }
        }
@@ -3562,18 +3506,18 @@ sub handle_man_pages
       @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");
+      $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,
@@ -3587,17 +3531,17 @@ sub handle_man_pages
     unless option 'no-installman';
 }
 
-# Handle DATA variables.
-sub handle_data
+
+sub handle_data ()
 {
-    &am_install_var ('-noextra', '-candist', 'data', 'DATA',
-                    'data', 'dataroot', 'doc', 'dvi', 'html', 'pdf',
-                    'ps', 'sysconf', 'sharedstate', 'localstate',
-                    'pkgdata', 'lisp', 'noinst', 'check');
+    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
+
+sub handle_tags ()
 {
     my @config;
     foreach my $spec (@config_headers)
@@ -3619,7 +3563,7 @@ sub handle_tags
     if (rvar('am__tagged_files')->value_as_list_recursive
           || var ('ETAGS_ARGS') || var ('SUBDIRS'))
       {
-       $output_rules .= &file_contents ('tags', new Automake::Location);
+       $output_rules .= file_contents ('tags', new Automake::Location);
        set_seen 'TAGS_DEPENDENCIES';
       }
     else
@@ -3644,7 +3588,7 @@ sub handle_tags
 # 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 ($)
+sub user_phony_rule
 {
   my ($name) = @_;
   my $rule = rule $name;
@@ -3664,8 +3608,6 @@ sub user_phony_rule ($)
 }
 
 
-# handle_dist
-# -----------
 # Handle 'dist' target.
 sub handle_dist ()
 {
@@ -3728,7 +3670,7 @@ sub handle_dist ()
   if ($relative_dir eq '.'
       && $config_aux_dir_set_in_configure_ac)
     {
-      if (! &is_make_dir ($config_aux_dir))
+      if (! is_make_dir ($config_aux_dir))
        {
          $check_aux = 1;
        }
@@ -3739,14 +3681,14 @@ sub handle_dist ()
          # The file might be absent, but if it can be built it's ok.
          || rule $cfile)
        {
-         &push_dist_common ($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")
+         push_dist_common ("$config_aux_dir/$cfile")
        }
     }
 
@@ -3774,7 +3716,7 @@ sub handle_dist ()
   # 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 @dist_common;
+  @dist_common = uniq (@dist_common);
   variable_delete 'DIST_COMMON';
   define_pretty_variable ('DIST_COMMON', TRUE, INTERNAL, @dist_common);
 
@@ -3795,10 +3737,10 @@ sub handle_dist ()
   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);
+  $output_rules .= file_contents ('distdir',
+                                 new Automake::Location,
+                                 %transform,
+                                 FILENAME_FILTER => $filename_filter);
 }
 
 
@@ -3806,7 +3748,7 @@ sub handle_dist ()
 # -------------------------------------------------------
 # 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 ($$;$)
+sub check_directory
 {
   my ($dir, $where, $reldir) = @_;
   $reldir = '.' unless defined $reldir;
@@ -3844,7 +3786,7 @@ sub check_directory ($$;$)
 # check_directories_in_var ($VARIABLE)
 # ------------------------------------
 # Recursively check all items in variables $VARIABLE as directories
-sub check_directories_in_var ($)
+sub check_directories_in_var
 {
   my ($var) = @_;
   $var->traverse_recursively
@@ -3858,9 +3800,7 @@ sub check_directories_in_var ($)
      skip_ac_subst => 1);
 }
 
-# &handle_subdirs ()
-# ------------------
-# Handle subdirectories.
+
 sub handle_subdirs ()
 {
   my $subdirs = var ('SUBDIRS');
@@ -3873,14 +3813,14 @@ sub handle_subdirs ()
   check_directories_in_var $dsubdirs
     if $dsubdirs;
 
-  $output_rules .= &file_contents ('subdirs', new Automake::Location);
+  $output_rules .= file_contents ('subdirs', new Automake::Location);
   rvar ('RECURSIVE_TARGETS')->rdef (TRUE)->{'pretty'} = VAR_SORTED; # Gross!
 }
 
 
 # ($REGEN, @DEPENDENCIES)
-# &scan_aclocal_m4
-# ----------------
+# scan_aclocal_m4
+# ---------------
 # If aclocal.m4 creation is automated, return the list of its dependencies.
 sub scan_aclocal_m4 ()
 {
@@ -3891,7 +3831,7 @@ sub scan_aclocal_m4 ()
 
   if (-f 'aclocal.m4')
     {
-      &define_variable ("ACLOCAL_M4", '$(top_srcdir)/aclocal.m4', INTERNAL);
+      define_variable ("ACLOCAL_M4", '$(top_srcdir)/aclocal.m4', INTERNAL);
 
       my $aclocal = new Automake::XFile "< aclocal.m4";
       my $line = $aclocal->getline;
@@ -3916,8 +3856,8 @@ sub scan_aclocal_m4 ()
 }
 
 
-# Helper function for substitute_ac_subst_variables.
-sub substitute_ac_subst_variables_worker($)
+# Helper function for 'substitute_ac_subst_variables'.
+sub substitute_ac_subst_variables_worker
 {
   my ($token) = @_;
   return "\@$token\@" if var $token;
@@ -3928,22 +3868,22 @@ sub substitute_ac_subst_variables_worker($)
 # -------------------------------------
 # Replace any occurrence of ${FOO} in $TEXT by @FOO@ if FOO is an AC_SUBST
 # variable.
-sub substitute_ac_subst_variables ($)
+sub substitute_ac_subst_variables
 {
   my ($text) = @_;
-  $text =~ s/\${([^ \t=:+{}]+)}/&substitute_ac_subst_variables_worker ($1)/ge;
+  $text =~ s/\${([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge;
   return $text;
 }
 
 # @DEPENDENCIES
-# &prepend_srcdir (@INPUTS)
-# -------------------------
+# 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 (@)
+sub prepend_srcdir
 {
   my (@inputs) = @_;
   my @newinputs;
@@ -3969,7 +3909,7 @@ sub prepend_srcdir (@)
 # 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 ($@)
+sub rewrite_inputs_into_dependencies
 {
   my ($file, @inputs) = @_;
   my @res = ();
@@ -4010,11 +3950,11 @@ sub rewrite_inputs_into_dependencies ($@)
 
 
 
-# &handle_configure ($MAKEFILE_AM, $MAKEFILE_IN, $MAKEFILE, @INPUTS)
-# ------------------------------------------------------------------
+# 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 ($$$@)
+sub handle_configure
 {
   my ($makefile_am, $makefile_in, $makefile, @inputs) = @_;
 
@@ -4057,7 +3997,7 @@ sub handle_configure ($$$@)
 
   if ($relative_dir eq '.')
     {
-      &push_dist_common ('acconfig.h')
+      push_dist_common ('acconfig.h')
        if -f 'acconfig.h';
     }
 
@@ -4076,7 +4016,7 @@ sub handle_configure ($$$@)
       # 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)))
+         || ($relative_dir eq '.' && ! is_make_dir ($config_h_dir)))
        {
          my ($cn_sans_dir, $stamp_dir);
          if ($relative_dir eq $config_h_dir)
@@ -4223,7 +4163,7 @@ sub handle_configure ($$$@)
       my $fd = dirname ($file);
       if ($fd ne $relative_dir)
        {
-         if ($relative_dir eq '.' && ! &is_make_dir ($fd))
+         if ($relative_dir eq '.' && ! is_make_dir ($fd))
            {
              $local = $file;
            }
@@ -4278,7 +4218,7 @@ sub handle_configure ($$$@)
          my $fd = dirname ($link);
          if ($fd ne $relative_dir)
            {
-             if ($relative_dir eq '.' && ! &is_make_dir ($fd))
+             if ($relative_dir eq '.' && ! is_make_dir ($fd))
                {
                  $local = $link;
                }
@@ -4306,7 +4246,7 @@ sub handle_configure ($$$@)
          # 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)))
+             || ($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).
@@ -4323,20 +4263,19 @@ sub handle_configure ($$$@)
                          @actual_other_vpath_files);
 }
 
-# Handle C headers.
-sub handle_headers
+sub handle_headers ()
 {
-    my @r = &am_install_var ('-defaultdist', 'header', 'HEADERS', 'include',
-                            'oldinclude', 'pkginclude',
-                            'noinst', 'check');
+    my @r = am_install_var ('-defaultdist', 'header', 'HEADERS', 'include',
+                           'oldinclude', 'pkginclude',
+                           'noinst', 'check');
     foreach (@r)
     {
       next unless $_->[1] =~ /\..*$/;
-      &saw_extension ($&);
+      saw_extension ($&);
     }
 }
 
-sub handle_gettext
+sub handle_gettext ()
 {
   return if ! $seen_gettext || $relative_dir ne '.';
 
@@ -4392,8 +4331,8 @@ sub handle_gettext
   require_file ($ac_gettext_location, GNU, 'ABOUT-NLS');
 }
 
-# Handle footer elements.
-sub handle_footer
+# Emit makefile footer.
+sub handle_footer ()
 {
     reject_rule ('.SUFFIXES',
                 "use variable 'SUFFIXES', not target '.SUFFIXES'");
@@ -4431,21 +4370,23 @@ sub handle_footer
 # Generate 'make install' rules.
 sub handle_install ()
 {
-  $output_rules .= &file_contents
+  $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' => (user_phony_rule ('installdirs-local')
                             ? ' installdirs-local' : ''),
      am__installdirs => variable_value ('am__installdirs') || '');
 }
 
 
-# Deal with all and all-am.
-sub handle_all ($)
+# handle_all ($MAKEFILE)
+#-----------------------
+# Deal with 'all' and 'all-am'.
+sub handle_all
 {
     my ($makefile) = @_;
 
@@ -4467,8 +4408,8 @@ sub handle_all ($)
     push (@all, "all-local")
       if user_phony_rule "all-local";
 
-    &pretty_print_rule ("all-am:", "\t\t", @all);
-    &depend ('.PHONY', 'all-am', 'all');
+    pretty_print_rule ("all-am:", "\t\t", @all);
+    depend ('.PHONY', 'all-am', 'all');
 
 
     # Output 'all'.
@@ -4505,7 +4446,7 @@ sub handle_all ($)
       }
 }
 
-# Generate helper targets for user recursion, where needed.
+# Generate helper targets for user-defined recursive targets, where needed.
 sub handle_user_recursion ()
 {
   return unless @extra_recursive_targets;
@@ -4524,7 +4465,7 @@ sub handle_user_recursion ()
       # associated 'foo-local' rule; we define it as an empty rule by
       # default, so that the user can transparently extend it in his
       # own Makefile.am.
-      pretty_print_rule ("$target-local:");
+      pretty_print_rule ("$target-local:", '', '');
       # $target-recursive might as well be undefined, so do not add
       # it here; it's taken care of in subdirs.am anyway.
       depend (".PHONY", "$target-am", "$target-local");
@@ -4532,8 +4473,6 @@ sub handle_user_recursion ()
 }
 
 
-# &do_check_merge_target ()
-# -------------------------
 # Handle check merge target specially.
 sub do_check_merge_target ()
 {
@@ -4570,10 +4509,8 @@ sub do_check_merge_target ()
     if var ('BUILT_SOURCES');
 }
 
-# handle_clean ($MAKEFILE)
-# ------------------------
 # Handle all 'clean' targets.
-sub handle_clean ($)
+sub handle_clean
 {
   my ($makefile) = @_;
 
@@ -4611,7 +4548,7 @@ sub handle_clean ($)
       push @{$rms{$when}}, "\t-$rm\n";
     }
 
-  $output_rules .= &file_contents
+  $output_rules .= file_contents
     ('clean',
      new Automake::Location,
      MOSTLYCLEAN_RMS      => join ('', sort @{$rms{&MOSTLY_CLEAN}}),
@@ -4623,10 +4560,9 @@ sub handle_clean ($)
 }
 
 
-# &target_cmp ($A, $B)
-# --------------------
-# Subroutine for &handle_factored_dependencies to let '.PHONY' and
-# other '.TARGETS' be last.
+# Subroutine for handle_factored_dependencies() to let '.PHONY' and
+# other '.TARGETS' be last.  This is meant to be used as a comparison
+# subroutine passed to the sort built-int.
 sub target_cmp
 {
   return 0 if $a eq $b;
@@ -4642,10 +4578,8 @@ sub target_cmp
 }
 
 
-# &handle_factored_dependencies ()
-# --------------------------------
 # Handle everything related to gathered targets.
-sub handle_factored_dependencies
+sub handle_factored_dependencies ()
 {
   # Reject bad hooks.
   foreach my $utarg ('uninstall-data-local', 'uninstall-data-hook',
@@ -4722,7 +4656,7 @@ sub handle_factored_dependencies
       foreach my $cond (@undefined_conds)
        {
          my $condstr = $cond->subst_string;
-         &pretty_print_rule ("$condstr$_:", "$condstr\t", @uniq_deps);
+         pretty_print_rule ("$condstr$_:", "$condstr\t", @uniq_deps);
          $output_rules .= $actions{$_} if defined $actions{$_};
          $output_rules .= "\n";
        }
@@ -4730,14 +4664,14 @@ sub handle_factored_dependencies
 }
 
 
-# &handle_tests_dejagnu ()
-# ------------------------
-sub handle_tests_dejagnu
+sub handle_tests_dejagnu ()
 {
     push (@check_tests, 'check-DEJAGNU');
     $output_rules .= file_contents ('dejagnu', new Automake::Location);
 }
 
+# handle_per_suffix_test ($TEST_SUFFIX, [%TRANSFORM])
+#----------------------------------------------------
 sub handle_per_suffix_test
 {
   my ($test_suffix, %transform) = @_;
@@ -4791,7 +4725,7 @@ sub handle_per_suffix_test
 # ------------------------------
 # Return true if $EXT can appear in $(TEST_EXTENSIONS), return false
 # otherwise.
-sub is_valid_test_extension ($)
+sub is_valid_test_extension
 {
   my $ext = shift;
   return 1
@@ -4801,12 +4735,12 @@ sub is_valid_test_extension ($)
   return 0;
 }
 
-# Handle TESTS variable and other checks.
-sub handle_tests
+
+sub handle_tests ()
 {
   if (option 'dejagnu')
     {
-      &handle_tests_dejagnu;
+      handle_tests_dejagnu;
     }
   else
     {
@@ -4821,9 +4755,9 @@ sub handle_tests
     {
       push (@check_tests, 'check-TESTS');
       my $check_deps = "@check";
-      $output_rules .= &file_contents ('check', new Automake::Location,
-                                      SERIAL_TESTS => !! option 'serial-tests',
-                                       CHECK_DEPS => $check_deps);
+      $output_rules .= file_contents ('check', new Automake::Location,
+                                      SERIAL_TESTS => !! option 'serial-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.
@@ -4935,11 +4869,10 @@ sub handle_tests
     }
 }
 
-# Handle Emacs Lisp.
-sub handle_emacs_lisp
+sub handle_emacs_lisp ()
 {
-  my @elfiles = &am_install_var ('-candist', 'lisp', 'LISP',
-                                'lisp', 'noinst');
+  my @elfiles = am_install_var ('-candist', 'lisp', 'LISP',
+                                'lisp', 'noinst');
 
   return if ! @elfiles;
 
@@ -4956,24 +4889,22 @@ sub handle_emacs_lisp
                     'EMACS', 'lispdir');
 }
 
-# Handle Python
-sub handle_python
+sub handle_python ()
 {
-  my @pyfiles = &am_install_var ('-defaultdist', 'python', 'PYTHON',
-                                'noinst');
+  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);
+  define_variable ('py_compile', "$am_config_aux_dir/py-compile", INTERNAL);
 }
 
-# Handle Java.
-sub handle_java
+sub handle_java ()
 {
-    my @sourcelist = &am_install_var ('-candist',
-                                     'java', 'JAVA',
-                                     'noinst', 'check');
+    my @sourcelist = am_install_var ('-candist',
+                                     'java', 'JAVA',
+                                     'noinst', 'check');
     return if ! @sourcelist;
 
     my @prefixes = am_primary_prefixes ('JAVA', 1,
@@ -5013,8 +4944,7 @@ sub handle_java
 }
 
 
-# Handle some of the minor options.
-sub handle_minor_options
+sub handle_minor_options ()
 {
   if (option 'readme-alpha')
     {
@@ -5039,11 +4969,11 @@ sub handle_minor_options
 ################################################################
 
 # ($OUTPUT, @INPUTS)
-# &split_config_file_spec ($SPEC)
-# -------------------------------
+# split_config_file_spec ($SPEC)
+# ------------------------------
 # Decode the Autoconf syntax for config files (files, headers, links
 # etc.).
-sub split_config_file_spec ($)
+sub split_config_file_spec
 {
   my ($spec) = @_;
   my ($output, @inputs) = split (/:/, $spec);
@@ -5060,7 +4990,7 @@ sub split_config_file_spec ($)
 # 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 (@)
+sub locate_am
 {
   my (@rest) = @_;
   my $input;
@@ -5077,11 +5007,11 @@ sub locate_am (@)
 
 my %make_list;
 
-# &scan_autoconf_config_files ($WHERE, $CONFIG-FILES)
-# ---------------------------------------------------
+# 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 ($$)
+sub scan_autoconf_config_files
 {
   my ($where, $config_files) = @_;
 
@@ -5119,9 +5049,7 @@ sub scan_autoconf_config_files ($$)
 }
 
 
-# &scan_autoconf_traces ($FILENAME)
-# ---------------------------------
-sub scan_autoconf_traces ($)
+sub scan_autoconf_traces
 {
   my ($filename) = @_;
 
@@ -5152,7 +5080,6 @@ sub scan_autoconf_traces ($)
                AM_INIT_AUTOMAKE => 0,
                AM_MAINTAINER_MODE => 0,
                AM_PROG_AR => 0,
-               AM_PROG_CC_C_O => 0,
                _AM_SUBST_NOTMAKE => 1,
                _AM_COND_IF => 1,
                _AM_COND_ELSE => 1,
@@ -5345,7 +5272,7 @@ EOF
            {
              my @opts = split (' ', $args[1]);
              @opts = map { { option => $_, where => $where } } @opts;
-             exit $exit_code if process_global_option_list (@opts);
+             exit $exit_code unless process_global_option_list (@opts);
            }
        }
       elsif ($macro eq 'AM_MAINTAINER_MODE')
@@ -5356,10 +5283,6 @@ EOF
        {
          $seen_ar = $where;
        }
-      elsif ($macro eq 'AM_PROG_CC_C_O')
-       {
-         $seen_cc_c_o = $where;
-       }
       elsif ($macro eq '_AM_COND_IF')
         {
          cond_stack_if ('', $args[1], $where);
@@ -5430,8 +5353,6 @@ EOF
 }
 
 
-# &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.
@@ -5517,7 +5438,7 @@ sub scan_autoconf_files ()
 ################################################################
 
 # Do any extra checking for GNU standards.
-sub check_gnu_standards
+sub check_gnu_standards ()
 {
   if ($relative_dir eq '.')
     {
@@ -5549,7 +5470,7 @@ sub check_gnu_standards
 }
 
 # Do any extra checking for GNITS standards.
-sub check_gnits_standards
+sub check_gnits_standards ()
 {
   if ($relative_dir eq '.')
     {
@@ -5575,50 +5496,11 @@ sub check_gnits_standards
 
 # This is just a convenience function that can be used to determine
 # when a subdir object should be used.
-sub lang_sub_obj
+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 header file.
 sub lang_header_rewrite
 {
@@ -5640,7 +5522,7 @@ sub lang_yacc_rewrite
 {
     my ($directory, $base, $ext) = @_;
 
-    my $r = &lang_sub_obj;
+    my $r = lang_sub_obj;
     (my $newext = $ext) =~ tr/y/c/;
     return ($r, $newext);
 }
@@ -5651,7 +5533,7 @@ sub lang_lex_rewrite
 {
     my ($directory, $base, $ext) = @_;
 
-    my $r = &lang_sub_obj;
+    my $r = lang_sub_obj;
     (my $newext = $ext) =~ tr/l/c/;
     return ($r, $newext);
 }
@@ -5668,7 +5550,7 @@ sub lang_java_rewrite
 # language, etc.  A finish function is only called if a source file of
 # the appropriate type has been seen.
 
-sub lang_vala_finish_target ($$)
+sub lang_vala_finish_target
 {
   my ($self, $name) = @_;
 
@@ -5763,7 +5645,7 @@ sub lang_vala_finish_target ($$)
 # 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
+sub lang_vala_finish ()
 {
   my ($self) = @_;
 
@@ -5849,9 +5731,9 @@ sub lang_yacc_target_hook
              . "$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
+       # listed in a nodist_ variable.  (handle_source_transform()
        # will set DIST_SOURCE.)
-       &push_dist_common ($header)
+       push_dist_common ($header)
          if $transform{'DIST_SOURCE'};
 
        # The GNU rules say that yacc/lex output files should be removed
@@ -5877,17 +5759,17 @@ sub lang_lex_target_hook
 }
 
 # This is a helper for both lex and yacc.
-sub yacc_lex_finish_helper
+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);
+  define_variable ('YLWRAP', "$am_config_aux_dir/ylwrap", INTERNAL);
 }
 
-sub lang_yacc_finish
+sub lang_yacc_finish ()
 {
   return if defined $language_scratch{'yacc-done'};
   $language_scratch{'yacc-done'} = 1;
@@ -5898,7 +5780,7 @@ sub lang_yacc_finish
 }
 
 
-sub lang_lex_finish
+sub lang_lex_finish ()
 {
   return if defined $language_scratch{'lex-done'};
   $language_scratch{'lex-done'} = 1;
@@ -5933,7 +5815,7 @@ sub saw_extension
 # ------------------------------
 # Register a single language.
 # Each %ATTRIBUTE is of the form ATTRIBUTE => VALUE.
-sub register_language (%)
+sub register_language
 {
   my (%option) = @_;
 
@@ -5949,7 +5831,7 @@ sub register_language (%)
   $option{'nodist_specific'} = 0
     unless defined $option{'nodist_specific'};
 
-  my $lang = new Language (%option);
+  my $lang = new Automake::Language (%option);
 
   # Fill indexes.
   $extension_map{$_} = $lang->name foreach @{$lang->extensions};
@@ -5975,7 +5857,7 @@ sub register_language (%)
   # Update the suffix rules map.
   foreach my $suffix (@{$lang->extensions})
     {
-      foreach my $dest (&{$lang->output_extensions} ($suffix))
+      foreach my $dest ($lang->output_extensions->($suffix))
        {
          register_suffix_rule (INTERNAL, $suffix, $dest);
        }
@@ -5986,7 +5868,7 @@ sub register_language (%)
 # --------------------------
 # 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 ($$)
+sub derive_suffix
 {
   my ($source_ext, $obj) = @_;
 
@@ -6001,12 +5883,10 @@ sub derive_suffix ($$)
 }
 
 
-################################################################
-
-# Pretty-print something and append to output_rules.
+# Pretty-print something and append to '$output_rules'.
 sub pretty_print_rule
 {
-    $output_rules .= &makefile_wrap (@_);
+    $output_rules .= makefile_wrap (shift, shift, @_);
 }
 
 
@@ -6021,7 +5901,7 @@ sub pretty_print_rule
 # $STRING
 # make_conditional_string ($NEGATE, $COND)
 # ----------------------------------------
-sub make_conditional_string ($$)
+sub make_conditional_string
 {
   my ($negate, $cond) = @_;
   $cond = "${cond}_TRUE"
@@ -6049,7 +5929,7 @@ my %_am_macro_for_cond =
 # $COND
 # cond_stack_if ($NEGATE, $COND, $WHERE)
 # --------------------------------------
-sub cond_stack_if ($$$)
+sub cond_stack_if
 {
   my ($negate, $cond, $where) = @_;
 
@@ -6079,7 +5959,7 @@ sub cond_stack_if ($$$)
 # $COND
 # cond_stack_else ($NEGATE, $COND, $WHERE)
 # ----------------------------------------
-sub cond_stack_else ($$$)
+sub cond_stack_else
 {
   my ($negate, $cond, $where) = @_;
 
@@ -6109,7 +5989,7 @@ sub cond_stack_else ($$$)
 # $COND
 # cond_stack_endif ($NEGATE, $COND, $WHERE)
 # -----------------------------------------
-sub cond_stack_endif ($$$)
+sub cond_stack_endif
 {
   my ($negate, $cond, $where) = @_;
   my $old_cond;
@@ -6144,15 +6024,15 @@ sub cond_stack_endif ($$$)
 ## ------------------------ ##
 
 
-# &define_pretty_variable ($VAR, $COND, $WHERE, @VALUE)
-# -----------------------------------------------------
+# 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 ($$$@)
+sub define_pretty_variable
 {
     my ($var, $cond, $where, @value) = @_;
 
@@ -6169,7 +6049,7 @@ sub define_pretty_variable ($$$@)
 # --------------------------------------
 # Define a new Automake Makefile variable VAR to VALUE, but only if
 # not already defined.
-sub define_variable ($$$)
+sub define_variable
 {
     my ($var, $value, $where) = @_;
     define_pretty_variable ($var, TRUE, $where, $value);
@@ -6191,14 +6071,14 @@ sub define_files_variable ($\@$$)
 
 # Like define_variable, but define a variable to be the configure
 # substitution by the same name.
-sub define_configure_variable ($)
+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,
+  Automake::Variable::define ($var, VAR_CONFIGURE, '', TRUE, subst ($var),
                              '', $configure_vars{$var}, $pretty);
 }
 
@@ -6207,7 +6087,7 @@ sub define_configure_variable ($)
 # --------------------------------
 # Define a compiler variable.  We also handle defining the 'LT'
 # version of the command when using libtool.
-sub define_compiler_variable ($)
+sub define_compiler_variable
 {
     my ($lang) = @_;
 
@@ -6215,23 +6095,20 @@ sub define_compiler_variable ($)
     my $libtool_tag = '';
     $libtool_tag = '--tag=' . $lang->libtool_tag . ' '
       if $lang->libtool_tag && exists $libtool_tags{$lang->libtool_tag};
-    &define_variable ($var, $value, INTERNAL);
+    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_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 ($)
+sub define_linker_variable
 {
     my ($lang) = @_;
 
@@ -6239,7 +6116,7 @@ sub define_linker_variable ($)
     $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);
+    define_variable ($lang->lder, $lang->ld, INTERNAL);
     # CCLINK = $(CCLD) blah blah...
     my $link = '';
     if (var ('LIBTOOL'))
@@ -6248,12 +6125,12 @@ sub define_linker_variable ($)
        $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');
+    define_variable ($lang->linker, $link . $lang->link, INTERNAL);
+    define_variable ($lang->compiler, $lang, INTERNAL);
+    define_verbose_tagvar ($lang->lder || 'GEN');
 }
 
-sub define_per_target_linker_variable ($$)
+sub define_per_target_linker_variable
 {
   my ($linker, $target) = @_;
 
@@ -6297,14 +6174,14 @@ sub define_per_target_linker_variable ($$)
   return ($lang->linker, $lang->lder)
     if $link_command eq $orig_command;
 
-  &define_variable ("${target}_LINK", $link_command, INTERNAL);
+  define_variable ("${target}_LINK", $link_command, INTERNAL);
   return ("${target}_LINK", $lang->lder);
 }
 
 ################################################################
 
-# &check_trailing_slash ($WHERE, $LINE)
-# -------------------------------------
+# check_trailing_slash ($WHERE, $LINE)
+# ------------------------------------
 # Return 1 iff $LINE ends with a slash.
 # Might modify $LINE.
 sub check_trailing_slash ($\$)
@@ -6322,15 +6199,16 @@ sub check_trailing_slash ($\$)
 }
 
 
-# &read_am_file ($AMFILE, $WHERE)
-# -------------------------------
+# read_am_file ($AMFILE, $WHERE, $RELDIR)
+# ---------------------------------------
 # 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 ($$)
+sub read_am_file
 {
-    my ($amfile, $where) = @_;
+    my ($amfile, $where, $reldir) = @_;
+    my $canon_reldir = &canonicalize ($reldir);
 
     my $am_file = new Automake::XFile ("< $amfile");
     verb "reading $amfile";
@@ -6415,6 +6293,17 @@ sub read_am_file ($$)
 
        my $new_saw_bk = check_trailing_slash ($where, $_);
 
+       if ($reldir eq '.')
+         {
+           # If present, eat the following '_' or '/', converting
+           # "%reldir%/foo" and "%canon_reldir%_foo" into plain "foo"
+           # when $reldir is '.'.
+           $_ =~ s,%(D|reldir)%/,,g;
+           $_ =~ s,%(C|canon_reldir)%_,,g;
+         }
+       $_ =~ s/%(D|reldir)%/${reldir}/g;
+       $_ =~ s/%(C|canon_reldir)%/${canon_reldir}/g;
+
        if (/$IGNORE_PATTERN/o)
        {
            # Merely delete comments beginning with two hashes.
@@ -6576,8 +6465,10 @@ sub read_am_file ($$)
                push_dist_common ("\$\(srcdir\)/$path");
                $path = $relative_dir . "/" . $path if $relative_dir ne '.';
              }
+           my $new_reldir = File::Spec->abs2rel ($path, $relative_dir);
+           $new_reldir = '.' if $new_reldir !~ s,/[^/]*$,,;
            $where->push_context ("'$path' included from here");
-           &read_am_file ($path, $where);
+           read_am_file ($path, $where, $new_reldir);
            $where->pop_context;
        }
        else
@@ -6610,11 +6501,9 @@ sub read_am_file ($$)
 }
 
 
-# define_standard_variables ()
-# ----------------------------
 # A helper for read_main_am_file which initializes configure variables
 # and variables from header-vars.am.
-sub define_standard_variables
+sub define_standard_variables ()
 {
   my $saved_output_vars = $output_vars;
   my ($comments, undef, $rules) =
@@ -6623,14 +6512,16 @@ sub define_standard_variables
 
   foreach my $var (sort keys %configure_vars)
     {
-      &define_configure_variable ($var);
+      define_configure_variable ($var);
     }
 
   $output_vars .= $comments . $rules;
 }
 
-# Read main am file.
-sub read_main_am_file ($$)
+
+# read_main_am_file ($MAKEFILE_AM, $MAKEFILE_IN)
+# ----------------------------------------------
+sub read_main_am_file
 {
     my ($amfile, $infile) = @_;
 
@@ -6647,20 +6538,19 @@ sub read_main_am_file ($$)
 
     # We want to predefine as many variables as possible.  This lets
     # the user set them with '+=' in Makefile.am.
-    &define_standard_variables;
+    define_standard_variables;
 
     # Read user file, which might override some of our values.
-    &read_am_file ($amfile, new Automake::Location);
+    read_am_file ($amfile, new Automake::Location, '.');
 }
 
 
 
 ################################################################
 
-# $FLATTENED
-# &flatten ($STRING)
-# ------------------
-# Flatten the $STRING and return the result.
+# $STRING
+# flatten ($ORIGINAL_STRING)
+# --------------------------
 sub flatten
 {
   $_ = shift;
@@ -6675,10 +6565,10 @@ sub flatten
 
 
 # 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 ($$$)
+sub transform_token ($\%$)
 {
   my ($token, $transform, $key) = @_;
   my $res = $transform->{$key};
@@ -6688,12 +6578,12 @@ sub transform_token ($$$)
 
 
 # transform ($TOKEN, \%PAIRS)
-# ===========================
+# ---------------------------
 # If ($TOKEN, $VAL) is in %PAIRS:
 #   - replaces %KEY% with $VAL,
 #   - enables/disables ?KEY? and ?!KEY?,
 #   - replaces %?KEY% with TRUE or FALSE.
-sub transform ($$)
+sub transform ($\%)
 {
   my ($token, $transform) = @_;
 
@@ -6702,18 +6592,18 @@ sub transform ($$)
   # when there is neither IFTRUE nor IFFALSE.
   if ($token =~ /^%([\w\-]+)%$/)
     {
-      return transform_token ($token, $transform, $1);
+      return transform_token ($token, %$transform, $1);
     }
   # %?KEY%.
   elsif ($token =~ /^%\?([\w\-]+)%$/)
     {
-      return transform_token ($token, $transform, $1) ? 'TRUE' : 'FALSE';
+      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);
+      my $val = transform_token ($token, %$transform, $2);
       return (!!$val == $neg) ? '##%' : '';
     }
   else
@@ -6728,7 +6618,7 @@ sub transform ($$)
 # Load a $MAKEFILE, apply the %TRANSFORM, and return the result.
 # No extra parsing or post-processing is done (i.e., recognition of
 # rules declaration or of make variables definitions).
-sub preprocess_file ($%)
+sub preprocess_file
 {
   my ($file, %transform) = @_;
 
@@ -6780,7 +6670,7 @@ sub preprocess_file ($%)
   # Substitute Automake template tokens.
   s/(?: % \?? [\w\-]+ %
       | \? !? [\w\-]+ \?
-    )/transform($&, \%transform)/gex;
+    )/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.)
@@ -6791,11 +6681,11 @@ sub preprocess_file ($%)
 
 
 # @PARAGRAPHS
-# &make_paragraphs ($MAKEFILE, [%TRANSFORM])
-# ------------------------------------------
+# make_paragraphs ($MAKEFILE, [%TRANSFORM])
+# -----------------------------------------
 # Load a $MAKEFILE, apply the %TRANSFORM, and return it as a list of
 # paragraphs.
-sub make_paragraphs ($%)
+sub make_paragraphs
 {
   my ($file, %transform) = @_;
   $transform{FIRST} = !$transformed_files{$file};
@@ -6837,12 +6727,12 @@ sub make_paragraphs ($%)
 
 
 # ($COMMENT, $VARIABLES, $RULES)
-# &file_contents_internal ($IS_AM, $FILE, $WHERE, [%TRANSFORM])
-# -------------------------------------------------------------
+# 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 ($$$%)
+sub file_contents_internal
 {
     my ($is_am, $file, $where, %transform) = @_;
 
@@ -6936,7 +6826,7 @@ sub file_contents_internal ($$$%)
          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 $flat_deps = flatten ($dependencies);
          my @deps = split (' ', $flat_deps);
 
          foreach (split (' ', $targets))
@@ -6960,7 +6850,7 @@ sub file_contents_internal ($$$%)
              # Output only if not in FALSE.
              if (defined $dependencies{$_} && $cond != FALSE)
                {
-                 &depend ($_, @deps);
+                 depend ($_, @deps);
                  register_action ($_, $actions);
                }
              else
@@ -7030,11 +6920,11 @@ sub file_contents_internal ($$$%)
 
 
 # $CONTENTS
-# &file_contents ($BASENAME, $WHERE, [%TRANSFORM])
-# ------------------------------------------------
+# 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 ($$%)
+sub file_contents
 {
     my ($basename, $where, %transform) = @_;
     my ($comments, $variables, $rules) =
@@ -7045,8 +6935,8 @@ sub file_contents ($$%)
 
 
 # @PREFIX
-# &am_primary_prefixes ($PRIMARY, $CAN_DIST, @PREFIXES)
-# -----------------------------------------------------
+# am_primary_prefixes ($PRIMARY, $CAN_DIST, @PREFIXES)
+# ----------------------------------------------------
 # Find all variable prefixes that are used for install directories.  A
 # prefix 'zar' qualifies iff:
 #
@@ -7060,7 +6950,7 @@ sub file_contents ($$%)
 # 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 ($$@)
+sub am_primary_prefixes
 {
   my ($primary, $can_dist, @prefixes) = @_;
 
@@ -7120,6 +7010,9 @@ sub am_primary_prefixes ($$@)
 }
 
 
+# am_install_var (-OPTION..., file, HOW, where...)
+# ------------------------------------------------
+#
 # 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,
@@ -7134,7 +7027,6 @@ sub am_primary_prefixes ($$@)
 # 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) = @_;
@@ -7239,11 +7131,12 @@ sub am_install_var
            }
          else
            {
-             # Strip any $(EXEEXT) suffix the user might have added, or this
-             # will confuse &handle_source_transform and &check_canonical_spelling.
+             # 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.
+             # 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';
 
@@ -7287,18 +7180,17 @@ sub am_install_var
 
       # 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);
+      $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.
@@ -7341,6 +7233,8 @@ sub am_install_var
 my %make_dirs = ();
 my $make_dirs_set = 0;
 
+# is_make_dir ($DIRECTORY)
+# ------------------------
 sub is_make_dir
 {
     my ($dir) = @_;
@@ -7392,8 +7286,8 @@ sub locate_aux_dir ()
 }
 
 
-# &push_required_file ($DIR, $FILE, $FULLFILE)
-# --------------------------------------------------
+# push_required_file ($DIR, $FILE, $FULLFILE)
+# -------------------------------------------
 # Push the given file onto DIST_COMMON.
 sub push_required_file
 {
@@ -7429,7 +7323,7 @@ sub push_required_file
       $am_config_libobj_dir =~ s|/*$||;
       push_dist_common ("$am_config_libobj_dir/$file");
     }
-  elsif ($relative_dir eq '.' && ! &is_make_dir ($dir))
+  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
@@ -7479,10 +7373,10 @@ sub push_required_file
 # than once.
 my %required_file_not_found = ();
 
-# &required_file_check_or_copy ($WHERE, $DIRECTORY, $FILE)
-# --------------------------------------------------------
+# 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 ($$$)
+sub required_file_check_or_copy
 {
   my ($where, $dir, $file) = @_;
 
@@ -7588,13 +7482,13 @@ sub required_file_check_or_copy ($$$)
 }
 
 
-# &require_file_internal ($WHERE, $MYSTRICT, $DIRECTORY, $QUEUE, @FILES)
-# ----------------------------------------------------------------------
+# 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 ($$$@)
+sub require_file_internal
 {
   my ($where, $mystrict, $dir, $queue, @files) = @_;
 
@@ -7617,28 +7511,28 @@ sub require_file_internal ($$$@)
     }
 }
 
-# &require_file ($WHERE, $MYSTRICT, @FILES)
-# -----------------------------------------
-sub require_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 ($$$@)
+# 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_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 ($$$@)
+sub require_libsource_with_macro
 {
     my ($cond, $macro, $mystrict, @files) = @_;
     $macro = rvar ($macro) unless ref $macro;
@@ -7653,10 +7547,10 @@ sub require_libsource_with_macro ($$$@)
       }
 }
 
-# &queue_required_file_check_or_copy ($QUEUE, $KEY, $DIR, $WHERE,
-#                                     $MYSTRICT, @FILES)
-# ---------------------------------------------------------------
-sub queue_required_file_check_or_copy ($$$$@)
+# 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;
@@ -7671,9 +7565,9 @@ sub queue_required_file_check_or_copy ($$$$@)
     $queue->enqueue ($key, $dir, @serial_loc, $mystrict, 0 + @files, @files);
 }
 
-# &require_queued_file_check_or_copy ($QUEUE)
-# -------------------------------------------
-sub require_queued_file_check_or_copy ($)
+# require_queued_file_check_or_copy ($QUEUE)
+# ------------------------------------------
+sub require_queued_file_check_or_copy
 {
     my ($queue) = @_;
     my $where;
@@ -7704,10 +7598,10 @@ sub require_queued_file_check_or_copy ($)
       }
 }
 
-# &require_conf_file ($WHERE, $MYSTRICT, @FILES)
-# ----------------------------------------------
+# require_conf_file ($WHERE, $MYSTRICT, @FILES)
+# ---------------------------------------------
 # Looks in configuration path, as specified by AC_CONFIG_AUX_DIR.
-sub require_conf_file ($$@)
+sub require_conf_file
 {
     my ($where, $mystrict, @files) = @_;
     my $queue = defined $required_conf_file_queue ? 1 : 0;
@@ -7716,9 +7610,9 @@ sub require_conf_file ($$@)
 }
 
 
-# &require_conf_file_with_macro ($COND, $MACRO, $MYSTRICT, @FILES)
-# ----------------------------------------------------------------
-sub require_conf_file_with_macro ($$$@)
+# 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,
@@ -7727,14 +7621,14 @@ sub require_conf_file_with_macro ($$$@)
 
 ################################################################
 
-# &require_build_directory ($DIRECTORY)
-# -------------------------------------
+# 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 ($)
+sub require_build_directory
 {
   my $directory = shift;
 
@@ -7768,12 +7662,12 @@ sub require_build_directory ($)
   return $dirstamp;
 }
 
-# &require_build_directory_maybe ($FILE)
-# --------------------------------------
+# 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 ($)
+sub require_build_directory_maybe
 {
     my $file = shift;
     my $directory = dirname ($file);
@@ -7790,7 +7684,7 @@ sub require_build_directory_maybe ($)
 
 ################################################################
 
-# Push a list of files onto dist_common.
+# Push a list of files onto '@dist_common'.
 sub push_dist_common
 {
   prog_error "push_dist_common run after handle_dist"
@@ -7806,7 +7700,7 @@ sub push_dist_common
 # ----------------------------------------------
 # Generate a Makefile.in given the name of the corresponding Makefile and
 # the name of the file output by config.status.
-sub generate_makefile ($$)
+sub generate_makefile
 {
   my ($makefile_am, $makefile_in) = @_;
 
@@ -7821,14 +7715,14 @@ sub generate_makefile ($$)
   # $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.
+  # other than to mark them as dependencies.  See the subroutine
+  # 'scan_autoconf_files' for details.
   my ($makefile, @inputs) = split (/:/, $output_files{$makefile_in});
 
   $relative_dir = dirname ($makefile);
 
   read_main_am_file ($makefile_am, $makefile_in);
-  if (handle_options)
+  if (not handle_options)
     {
       # Process buffered warnings.
       flush_messages;
@@ -7878,9 +7772,9 @@ sub generate_makefile ($$)
 
   handle_silent;
 
-  # These must be run after all the sources are scanned.  They
-  # use variables defined by &handle_libraries, &handle_ltlibraries,
-  # or &handle_programs.
+  # 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;
@@ -7981,16 +7875,16 @@ sub generate_makefile ($$)
   print $gm_file $output;
 }
 
-################################################################
-
-
-
 
 ################################################################
 
+
 # Helper function for usage().
-sub print_autodist_files (@)
+sub print_autodist_files
 {
+  # NOTE: we need to call our 'uniq' function with the leading '&'
+  # here, because otherwise perl complains that "Unquoted string
+  # 'uniq' may clash with future reserved word".
   my @lcomm = sort (&uniq (@_));
 
   my @four;
@@ -8032,7 +7926,6 @@ sub print_autodist_files (@)
 }
 
 
-# Print usage information.
 sub usage ()
 {
     print "Usage: $0 [OPTION]... [Makefile]...
@@ -8083,9 +7976,6 @@ General help using GNU software: <http://www.gnu.org/gethelp/>.
 }
 
 
-# &version ()
-# -----------
-# Print version information
 sub version ()
 {
   print <<EOF;
@@ -8138,7 +8028,7 @@ sub parse_arguments ()
   set_global_option ('no-dependencies', $cli_where) if $ignore_deps;
   for my $warning (@warnings)
     {
-      &parse_warnings ('-W', $warning);
+      parse_warnings ('-W', $warning);
     }
 
   return unless @ARGV;
@@ -8169,10 +8059,9 @@ sub parse_arguments ()
 }
 
 
-# handle_makefile ($MAKEFILE_IN)
-# ------------------------------
-# Deal with $MAKEFILE_IN.
-sub handle_makefile ($)
+# handle_makefile ($MAKEFILE)
+# ---------------------------
+sub handle_makefile
 {
   my ($file) =  @_;
   ($am_file = $file) =~ s/\.in$//;
@@ -8192,8 +8081,6 @@ sub handle_makefile ($)
     }
 }
 
-# handle_makefiles_serial ()
-# --------------------------
 # Deal with all makefiles, without threads.
 sub handle_makefiles_serial ()
 {
@@ -8203,10 +8090,8 @@ sub handle_makefiles_serial ()
     }
 }
 
-# get_number_of_threads ()
-# ------------------------
 # Logic for deciding how many worker threads to use.
-sub get_number_of_threads
+sub get_number_of_threads ()
 {
   my $nthreads = $ENV{'AUTOMAKE_JOBS'} || 0;
 
@@ -8235,7 +8120,7 @@ sub get_number_of_threads
 #
 # 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 ($)
+sub handle_makefiles_threaded
 {
   my ($nthreads) = @_;
 
diff --git a/bin/gen-perl-protos b/bin/gen-perl-protos
new file mode 100755 (executable)
index 0000000..9e73d8d
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/env perl
+#
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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/>.
+
+use warnings;
+use strict;
+
+my @lines = <>;
+my @protos = map { /^(sub \w+\s*\(.*\))/ ? ("$1;") : () } @lines;
+
+while (defined ($_ = shift @lines))
+  {
+    if (/^#!.* prototypes/i)
+      {
+        print "# BEGIN AUTOMATICALLY GENERATED PROTOTYPES\n";
+        print join ("\n", sort @protos) . "\n";
+        print "# END AUTOMATICALLY GENERATED PROTOTYPES\n";
+      }
+    else
+      {
+        print;
+      }
+  }
index fc58a21..5add98a 100755 (executable)
@@ -35,7 +35,6 @@ export AUTOM4TE  # ditto
 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=2013
@@ -83,7 +82,6 @@ dosubst ()
   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" \
@@ -97,27 +95,29 @@ dosubst ()
 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 temporary replacement for aclocal and automake.
+for p in bin/aclocal bin/automake; do
+  dosubst $p.in $p.tmp
+  $PERL -w bin/gen-perl-protos $p.tmp > $p.tmp2
+  mv -f $p.tmp2 $p.tmp
+done
 
 # 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.
+# Run the autotools.  Bail out if any warning is triggered.
 # 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
+$PERL ./bin/aclocal.tmp -Wall -Werror -I m4 \
+                        --automake-acdir=m4 --system-acdir=m4/acdir
+$AUTOCONF -Wall -Werror
+$PERL ./bin/automake.tmp -Wall -Werror
 
 # Remove temporary files and directories.
 rm -rf aclocal-$APIVERSION automake-$APIVERSION
-rm -f aclocal.tmp automake.tmp
+rm -f bin/aclocal.tmp bin/automake.tmp
index 6cc5973..1c3db78 100644 (file)
@@ -16,9 +16,9 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 AC_PREREQ([2.69])
-AC_INIT([GNU Automake], [1.13.3a], [bug-automake@gnu.org])
+AC_INIT([GNU Automake], [1.13c], [bug-automake@gnu.org])
 
-AC_CONFIG_SRCDIR([automake.in])
+AC_CONFIG_SRCDIR([bin/automake.in])
 AC_CONFIG_AUX_DIR([lib])
 
 AM_SILENT_RULES([yes])
@@ -39,7 +39,7 @@ 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
+AM_INIT_AUTOMAKE([-Wall -Werror dist-xz filename-length-max=99
                   no-define no-dependencies])
 
 ## Keep this on a line of its own, since it must be found and processed
@@ -86,32 +86,6 @@ 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.
diff --git a/contrib/t/Makefile.inc b/contrib/t/Makefile.inc
new file mode 100644 (file)
index 0000000..a92b80d
--- /dev/null
@@ -0,0 +1,26 @@
+## Included by top-level Makefile for Automake.
+
+## Copyright (C) 1995-2013 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## -------------------------------- ##
+##  Tests for stuff in 'contrib/'.  ##
+## -------------------------------- ##
+
+contrib_TESTS = \
+  %D%/parallel-tests-html.sh \
+  %D%/parallel-tests-html-recursive.sh \
+  %D%/help-multilib.sh \
+  %D%/multilib.sh
diff --git a/doc/Makefile.inc b/doc/Makefile.inc
new file mode 100644 (file)
index 0000000..dd477d6
--- /dev/null
@@ -0,0 +1,116 @@
+## Included by top-level Makefile for Automake.
+
+## Copyright (C) 1995-2013 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ---------------- ##
+##  Documentation.  ##
+## ---------------- ##
+
+info_TEXINFOS = %D%/automake.texi %D%/automake-history.texi
+doc_automake_TEXINFOS = %D%/fdl.texi
+doc_automake_history_TEXINFOS = %D%/fdl.texi
+
+man1_MANS = \
+  %D%/aclocal.1 \
+  %D%/automake.1 \
+  %D%/aclocal-$(APIVERSION).1 \
+  %D%/automake-$(APIVERSION).1
+
+$(man1_MANS): $(top_srcdir)/configure.ac
+
+CLEANFILES += $(man1_MANS)
+EXTRA_DIST += %D%/help2man
+
+update_mans = \
+  $(AM_V_GEN): \
+    && $(MKDIR_P) %D% \
+    && $(extend_PATH) \
+    && $(PERL) $(srcdir)/%D%/help2man --output=$@
+
+%D%/aclocal.1 %D%/automake.1:
+       $(AM_V_GEN): \
+         && $(MKDIR_P) %D% \
+         && f=`echo $@ | sed 's|.*/||; s|\.1$$||; $(transform)'` \
+         && echo ".so man1/$$f-$(APIVERSION).1" > $@
+
+%D%/aclocal-$(APIVERSION).1: $(aclocal_script) lib/Automake/Config.pm
+       $(update_mans) aclocal-$(APIVERSION)
+%D%/automake-$(APIVERSION).1: $(automake_script) lib/Automake/Config.pm
+       $(update_mans) automake-$(APIVERSION)
+
+## ---------------------------- ##
+##  Example package "amhello".  ##
+## ---------------------------- ##
+
+amhello_sources = \
+  %D%/amhello/configure.ac \
+  %D%/amhello/Makefile.am \
+  %D%/amhello/README \
+  %D%/amhello/src/main.c \
+  %D%/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)/%D%/amhello-1.0.tar.gz
+
+setup_autotools_paths = { \
+  $(extend_PATH) \
+    && 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 \
+    && true; \
+}
+
+# We depend on configure.ac so that we regenerate the tarball
+# whenever the Automake version changes.
+$(srcdir)/%D%/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac
+       $(AM_V_GEN)tmp=amhello-output.tmp \
+         && $(am__cd) $(srcdir)/%D%/amhello \
+         && : Make our aclocal and automake avaiable before system ones. \
+         && $(setup_autotools_paths) \
+         && ( \
+           { $(AM_V_P) || exec 5>&2 >$$tmp 2>&1; } \
+             && $(am_AUTORECONF) -vfi \
+             && ./configure \
+             && $(MAKE) $(AM_MAKEFLAGS) distcheck \
+             && $(MAKE) $(AM_MAKEFLAGS) distclean \
+             || { \
+               if $(AM_V_P); then :; else \
+                 echo "$@: recipe failed." >&5; \
+                 echo "See file '`pwd`/$$tmp' for details" >&5; \
+               fi; \
+               exit 1; \
+             } \
+         ) \
+         && rm -rf $(amhello_configury) $$tmp \
+         && mv -f amhello-1.0.tar.gz ..
+
+
+# vim: ft=automake noet
index c62d3b4..8f4020b 100644 (file)
@@ -1498,6 +1498,7 @@ command as follows:
 ~/amhello % @kbd{autoreconf --install}
 configure.ac: installing './install-sh'
 configure.ac: installing './missing'
+configure.ac: installing './compile'
 src/Makefile.am: installing './depcomp'
 @end example
 
@@ -3995,11 +3996,11 @@ choose the assembler for you (by default the C compiler) and set
 
 @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.
+This is an obsolescent macro that checks that the C compiler supports
+the @option{-c} and @option{-o} options together.  Note that, since
+Automake 1.14, the @code{AC_PROG_CC} is rewritten to implement such
+checks itself, and thus the explicit use of @code{AM_PROG_CC_C_O}
+should no longer be required.
 
 @item AM_PROG_LEX
 @acindex AM_PROG_LEX
@@ -5812,9 +5813,7 @@ different name for the intermediate object files.  Ordinarily a file
 like @file{sample.c} will be compiled to produce @file{sample.o}.
 However, if the program's @code{_CFLAGS} variable is set, then the
 object file will be named, for instance, @file{maude-sample.o}.  (See
-also @ref{Renamed Objects}.)  The use of per-target compilation flags
-with C sources requires that the macro @code{AM_PROG_CC_C_O} be called
-from @file{configure.ac}.
+also @ref{Renamed Objects}).
 
 In compilations with per-target flags, the ordinary @samp{AM_} form of
 the flags variable is @emph{not} automatically included in the
@@ -6245,10 +6244,10 @@ rebuild rule for distributed Yacc and Lex sources are only used when
 @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
+When @command{lex} or @command{yacc} sources are used, @code{automake -a}
+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
@@ -7837,6 +7836,11 @@ 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.
 
+It is worth noting that, contrary to what happens with the other formats,
+the generated @file{.info} files are by default placed in @code{srcdir}
+rather than in the @code{builddir}.  This can be changed with the
+@option{info-in-builddir} option.
+
 @trindex dvi
 @trindex html
 @trindex pdf
@@ -8415,7 +8419,9 @@ 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.
+version control files; thus we recommend against using this feature
+as-is.  However, you can use the @code{dist-hook} feature to
+ameliorate the problem; @pxref{The dist Hook}.
 
 @vindex SUBDIRS
 @vindex DIST_SUBDIRS
@@ -8694,13 +8700,16 @@ Generate a @samp{zip} archive of the distribution.
 
 @item @code{dist-tarZ}
 Generate a tar archive of the distribution, compressed with the
-historical (obsolescent) program @command{compress}.  Use of this
-option is discouraged.
+historical (and obsolescent) program @command{compress}.  This
+option is deprecated, and it and the corresponding functionality
+will be removed altogether in Automake 2.0.
 @trindex dist-tarZ
 
 @item @code{dist-shar}
-Generate a @samp{shar} archive of the distribution.  This format archive
-is obsolescent, and use of this option is discouraged.
+Generate a @samp{shar} archive of the distribution.  This format
+archive is obsolescent, and use of this option is deprecated.
+It and the corresponding functionality will be removed altogether
+in Automake 2.0.
 @trindex dist-shar
 
 @end table
@@ -10096,15 +10105,17 @@ Hook @code{dist-zip} to @code{dist}.
 @cindex Option, @option{dist-shar}
 @opindex dist-shar
 Hook @code{dist-shar} to @code{dist}.  Use of this option
-is discouraged, as the @samp{shar} format is obsolescent and
-problematic.
+is deprecated, as the @samp{shar} format is obsolescent and
+problematic.  Support for it will be removed altogether in
+Automake 2.0.
 @trindex dist-shar
 
 @item @option{dist-tarZ}
 @cindex Option, @option{dist-tarZ}
 @opindex dist-tarZ
 Hook @code{dist-tarZ} to @code{dist}.  Use of this option
-is discouraged, as the @samp{compress} program is obsolete.
+is deprecated, as the @samp{compress} program is obsolete.
+Support for it will be removed altogether in Automake 2.0.
 @trindex dist-tarZ
 
 @item @option{filename-length-max=99}
@@ -10118,6 +10129,14 @@ options below.  This option should be used in the top-level
 @file{configure.ac}, it will be ignored otherwise.  It will also be
 ignored in sub-packages of nested packages (@pxref{Subpackages}).
 
+@item @option{info-in-builddir}
+@cindex Option, @option{info-in-builddir}
+@opindex info-in-builddir
+Instruct Automake to place the generated @file{.info} files in the
+@code{builddir} rather than in the @code{srcdir}.  Note that this
+might make VPATH builds with some non-GNU make implementations more
+brittle.
+
 @item @option{no-define}
 @cindex Option, @option{no-define}
 @opindex no-define
@@ -10253,9 +10272,6 @@ 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}
@@ -10510,6 +10526,26 @@ 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}.
 
+Inside a fragment, the construct @code{%reldir%} is replaced with the
+directory of the fragment relative to the base @file{Makefile.am}.
+Similarly, @code{%canon_reldir%} is replaced with the canonicalized
+(@pxref{Canonicalization}) form of @code{%reldir%}.  As a convenience,
+@code{%D%} is a synonym for @code{%reldir%}, and @code{%C%}
+is a synonym for @code{%canon_reldir%}.
+
+A special feature is that if the fragment is in the same directory as
+the base @file{Makefile.am} (i.e., @code{%reldir%} is @code{.}), then
+@code{%reldir%} and @code{%canon_reldir%} will expand to the empty
+string as well as eat, if present, a following slash or underscore
+respectively.
+
+Thus, a makefile fragment might look like this:
+
+@example
+bin_PROGRAMS += %reldir%/mumble
+%canon_reldir%_mumble_SOURCES = %reldir%/one.c
+@end example
+
 @node Conditionals
 @chapter Conditionals
 
index 4584d2b..3bd5c9f 100755 (executable)
@@ -342,7 +342,7 @@ my %depmodes =
   (
     auto         => ["cc"],
     disabled     => ["cc"],
-    makedepend   => ["cc", "makedepend"],
+    makedepend   => ["cc", "makedepend", "-c-o"],
     dashmstdout  => ["gcc"],
     cpp          => ["gcc"],
 # This was for older (pre-3.x) GCC versions (newer versions
index fe6ef9d..885e74e 100644 (file)
@@ -33,7 +33,14 @@ our $PACKAGE_BUGREPORT = '@PACKAGE_BUGREPORT@';
 our $VERSION = '@VERSION@';
 our $RELEASE_YEAR = '@RELEASE_YEAR@';
 our $libdir = '@datadir@/@PACKAGE@-@APIVERSION@';
-our $perl_threads = @PERL_THREADS@;
+
+our $perl_threads = 0;
+# We need at least this version for CLONE support.
+if (eval { require 5.007_002; })
+  {
+    use Config;
+    $perl_threads = $Config{useithreads};
+  }
 
 1;
 
diff --git a/lib/Automake/Language.pm b/lib/Automake/Language.pm
new file mode 100644 (file)
index 0000000..a678e1e
--- /dev/null
@@ -0,0 +1,122 @@
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Automake::Language;
+
+use 5.006;
+use strict;
+
+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->(@_);
+    }
+}
+
+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/Makefile.inc b/lib/Automake/Makefile.inc
new file mode 100644 (file)
index 0000000..48b1523
--- /dev/null
@@ -0,0 +1,57 @@
+## Included by top-level Makefile for Automake.
+
+## Copyright (C) 1995-2013 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ---------------------------------------------------- ##
+##  Private perl modules used by automake and aclocal.  ##
+## ---------------------------------------------------- ##
+
+perllibdir = $(pkgvdatadir)/Automake
+
+dist_perllib_DATA = \
+  %D%/ChannelDefs.pm \
+  %D%/Channels.pm \
+  %D%/Condition.pm \
+  %D%/Configure_ac.pm \
+  %D%/DisjConditions.pm \
+  %D%/FileUtils.pm \
+  %D%/General.pm \
+  %D%/Getopt.pm \
+  %D%/Item.pm \
+  %D%/ItemDef.pm \
+  %D%/Language.pm \
+  %D%/Location.pm \
+  %D%/Options.pm \
+  %D%/Rule.pm \
+  %D%/RuleDef.pm \
+  %D%/Variable.pm \
+  %D%/VarDef.pm \
+  %D%/Version.pm \
+  %D%/XFile.pm \
+  %D%/Wrap.pm
+
+nodist_perllib_DATA = %D%/Config.pm
+CLEANFILES += $(nodist_perllib_DATA)
+
+%D%/Config.pm: %D%/Config.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_at)$(MKDIR_P) %D%
+       $(AM_V_GEN)in=Config.in \
+         && $(do_subst) <$(srcdir)/%D%/Config.in >$@-t
+       $(generated_file_finalize)
+EXTRA_DIST += %D%/Config.in
+
+# vim: ft=automake noet
index a5e6e8d..fab33f3 100644 (file)
@@ -241,24 +241,27 @@ 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.
+Return 0 on error, 1 otherwise.
 
 =cut
 
-# _option_must_be_from_configure ($OPTION, $WHERE)
+# $BOOL
+# _option_is_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 ($$)
+sub _option_is_from_configure ($$)
 {
   my ($opt, $where)= @_;
-  return
+  return 1
     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";
+  return 0;
 }
 
+# $BOOL
 # _is_valid_easy_option ($OPTION)
 # -------------------------------
 # Explicitly recognize valid automake options that require no
@@ -272,10 +275,9 @@ sub _is_valid_easy_option ($)
     dejagnu
     dist-bzip2
     dist-lzip
-    dist-shar
-    dist-tarZ
     dist-xz
     dist-zip
+    info-in-builddir
     no-define
     no-dependencies
     no-dist
@@ -305,6 +307,7 @@ sub _process_option_list (\%@)
 {
   my ($options, @list) = @_;
   my @warnings = ();
+  my $ret = 1;
 
   foreach my $h (@list)
     {
@@ -321,17 +324,35 @@ sub _process_option_list (\%@)
           # Obsolete (and now removed) de-ANSI-fication support.
           error ($where,
                  "automatic de-ANSI-fication support has been removed");
+          $ret = 0;
         }
       # TODO: Remove this special check in Automake 3.0.
       elsif ($_ eq 'cygnus')
         {
           error $where, "support for Cygnus-style trees has been removed";
+          $ret = 0;
         }
       # TODO: Remove this special check in Automake 3.0.
       elsif ($_ eq 'dist-lzma')
         {
           error ($where, "support for lzma-compressed distribution " .
                          "archives has been removed");
+          $ret = 0;
+        }
+      # TODO: Make this a fatal error in Automake 2.0.
+      elsif ($_ eq 'dist-shar')
+        {
+          msg ('obsolete', $where,
+               "support for shar distribution archives is deprecated.\n" .
+               "  It will be removed in Automake 2.0");
+        }
+      # TODO: Make this a fatal error in Automake 2.0.
+      elsif ($_ eq 'dist-tarZ')
+        {
+          msg ('obsolete', $where,
+               "support for distribution archives compressed with " .
+               "legacy program 'compress' is deprecated.\n" .
+               "  It will be removed in Automake 2.0");
         }
       elsif (/^filename-length-max=(\d+)$/)
         {
@@ -340,14 +361,17 @@ sub _process_option_list (\%@)
         }
       elsif ($_ eq 'tar-v7' || $_ eq 'tar-ustar' || $_ eq 'tar-pax')
         {
-          _option_must_be_from_configure ($_, $where);
+          if (not _option_is_from_configure ($_, $where))
+            {
+              $ret = 0;
+            }
           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;
+              $ret = 0;
             }
         }
       elsif (/^\d+\.\d+(?:\.\d+)?[a-z]?(?:-[A-Za-z0-9]+)?$/)
@@ -355,9 +379,8 @@ sub _process_option_list (\%@)
           # Got a version number.
           if (Automake::Version::check ($VERSION, $&))
             {
-              error ($where, "require Automake $_, but have $VERSION",
-                     uniq_scope => US_GLOBAL);
-              return 1;
+              error ($where, "require Automake $_, but have $VERSION");
+              $ret = 0;
             }
         }
       elsif (/^(?:--warnings=|-W)(.*)$/)
@@ -367,11 +390,11 @@ sub _process_option_list (\%@)
         }
       elsif (! _is_valid_easy_option $_)
         {
-          error ($where, "option '$_' not recognized",
-                 uniq_scope => US_GLOBAL);
-          return 1;
+          error ($where, "option '$_' not recognized");
+          $ret = 0;
         }
     }
+
   # We process warnings here, so that any explicitly-given warning setting
   # will take precedence over warning settings defined implicitly by the
   # strictness.
@@ -381,23 +404,24 @@ sub _process_option_list (\%@)
           "unknown warning category '$w->{'cat'}'"
         if switch_warning $w->{cat};
     }
-  return 0;
+
+  return $ret;
 }
 
 sub process_option_list (@)
 {
   prog_error "local options already processed"
     if $_options_processed;
-  return _process_option_list (%_options, @_);
   $_options_processed = 1;
+  _process_option_list (%_options, @_);
 }
 
 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;
+  _process_option_list (%_global_options, @_);
 }
 
 =item C<set_strictness ($name)>
diff --git a/lib/Makefile.inc b/lib/Makefile.inc
new file mode 100644 (file)
index 0000000..d1971f5
--- /dev/null
@@ -0,0 +1,68 @@
+## Included by top-level Makefile for Automake.
+
+## Copyright (C) 1995-2013 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## -------------------------------------------------------------------- ##
+##  Auxiliary scripts and files for use with "automake --add-missing".  ##
+## -------------------------------------------------------------------- ##
+
+dist_pkgvdata_DATA = \
+  %D%/COPYING \
+  %D%/INSTALL \
+  %D%/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 = \
+  %D%/config.guess \
+  %D%/config.sub \
+  %D%/install-sh \
+  %D%/mdate-sh \
+  %D%/missing \
+  %D%/mkinstalldirs \
+  %D%/ylwrap \
+  %D%/depcomp \
+  %D%/compile \
+  %D%/py-compile \
+  %D%/ar-lib \
+  %D%/test-driver \
+  %D%/tap-driver.sh \
+  %D%/tap-driver.pl
+
+install-data-hook:
+       @$(POST_INSTALL)
+       @for f in $(dist_script_DATA); do echo $$f; done \
+         | sed 's,^%D%/,,' \
+         | ( 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,^%D%/,,' \
+         | while read f; do \
+             path="$(pkgvdatadir)/$$f"; \
+             test -x "$$path" || echo $$path; \
+           done \
+         | sed 's/$$/: not executable/' \
+         | grep . 1>&2 && exit 1; exit 0
+
+# vim: ft=automake noet
diff --git a/lib/am/Makefile.inc b/lib/am/Makefile.inc
new file mode 100644 (file)
index 0000000..da94682
--- /dev/null
@@ -0,0 +1,65 @@
+## Included by top-level Makefile for Automake.
+
+## Copyright (C) 1995-2013 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## --------------------- ##
+##  Makefile fragments.  ##
+## --------------------- ##
+
+amdir = @amdir@
+
+dist_am_DATA = \
+  %D%/check.am \
+  %D%/check2.am \
+  %D%/clean-hdr.am \
+  %D%/clean.am \
+  %D%/compile.am \
+  %D%/configure.am \
+  %D%/data.am \
+  %D%/dejagnu.am \
+  %D%/depend.am \
+  %D%/depend2.am \
+  %D%/distdir.am \
+  %D%/footer.am \
+  %D%/header-vars.am \
+  %D%/header.am \
+  %D%/install.am \
+  %D%/inst-vars.am \
+  %D%/java.am \
+  %D%/lang-compile.am \
+  %D%/lex.am \
+  %D%/library.am \
+  %D%/libs.am \
+  %D%/libtool.am \
+  %D%/lisp.am \
+  %D%/ltlib.am \
+  %D%/ltlibrary.am \
+  %D%/mans-vars.am \
+  %D%/mans.am \
+  %D%/program.am \
+  %D%/progs.am \
+  %D%/python.am \
+  %D%/remake-hdr.am \
+  %D%/scripts.am \
+  %D%/subdirs.am \
+  %D%/tags.am \
+  %D%/texi-vers.am \
+  %D%/texibuild.am \
+  %D%/texinfos.am \
+  %D%/vala.am \
+  %D%/yacc.am
+
+# vim: ft=automake noet
index 80d4185..5c6439a 100644 (file)
 ##   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.)
+## 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 or later.  In this case we can skip the use of
+## depcomp and easily inline the dependency tracking.
 
 if %?NONLIBTOOL%
 ?GENERIC?%EXT%.o:
index e5d8d5e..0e5f6bd 100644 (file)
@@ -339,12 +339,18 @@ dist-xz: distdir
 ?COMPRESS?DIST_ARCHIVES += $(distdir).tar.Z
 .PHONY: dist-tarZ
 dist-tarZ: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        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
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
        $(am__post_remove_distdir)
 
index 1703b01..979427d 100644 (file)
@@ -16,8 +16,8 @@
 
 %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
+       @test -f $@ || rm -f %STAMP%
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) %STAMP%
 
 
 %STAMP%: %CONFIG_H_DEPS% $(top_builddir)/config.status
index 3f91cf1..bddf382 100644 (file)
@@ -31,7 +31,7 @@ DIST_COMMON += %VTEXI% %STAMPVTI%
 ## %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%
+?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"; \
index 3256fde..a59d443 100644 (file)
@@ -110,15 +110,9 @@ INFO_DEPS += %DEST_INFO_PREFIX%%DEST_SUFFIX%
 ?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; \
+         rm -rf $@ && mv $(@:.html=.htp) $@; \
        else \
-         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
-           rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
-         exit 1; \
+         rm -rf $(@:.html=.htp); exit 1; \
        fi
 
 ## If we are using the generic rules, we need separate dependencies.
index 1c4d776..8f072a8 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 # ylwrap - wrapper for lex/yacc invocations.
 
-scriptversion=2012-12-21.17; # UTC
+scriptversion=2013-01-12.17; # UTC
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
@@ -40,7 +40,7 @@ get_dirname ()
 # guard FILE
 # ----------
 # The CPP macro used to guard inclusion of FILE.
-guard()
+guard ()
 {
   printf '%s\n' "$1"                                                    \
     | sed                                                               \
@@ -96,17 +96,17 @@ esac
 
 
 # The input.
-input="$1"
+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
+case $input in
   [\\/]* | ?:[\\/]*)
     # Absolute path; do nothing.
     ;;
   *)
     # Relative path.  Make it absolute.
-    input="`pwd`/$input"
+    input=`pwd`/$input
     ;;
 esac
 input_rx=`get_dirname "$input" | quote_for_sed`
@@ -132,8 +132,8 @@ sed_fix_filenames=
 # guard in its implementation file.
 sed_fix_header_guards=
 
-while test "$#" -ne 0; do
-  if test "$1" = "--"; then
+while test $# -ne 0; do
+  if test x"$1" = x"--"; then
     shift
     break
   fi
@@ -153,16 +153,14 @@ while test "$#" -ne 0; do
 done
 
 # The program to run.
-prog="$1"
+prog=$1
 shift
 # Make any relative path in $prog absolute.
-case "$prog" in
+case $prog in
   [\\/]* | ?:[\\/]*) ;;
-  *[\\/]*) prog="`pwd`/$prog" ;;
+  *[\\/]*) 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
@@ -188,7 +186,7 @@ if test $ret -eq 0; then
       # otherwise prepend '../'.
       case $to in
         [\\/]* | ?:[\\/]*) target=$to;;
-        *) target="../$to";;
+        *) target=../$to;;
       esac
 
       # Do not overwrite unchanged header files to avoid useless
@@ -197,7 +195,7 @@ if test $ret -eq 0; then
       # output of all other files to a temporary file so we can
       # compare them to existing versions.
       if test $from != $parser; then
-        realtarget="$target"
+        realtarget=$target
         target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'`
       fi
 
diff --git a/m4/Makefile.inc b/m4/Makefile.inc
new file mode 100644 (file)
index 0000000..8df1890
--- /dev/null
@@ -0,0 +1,79 @@
+## Included by top-level Makefile for Automake.
+
+## Copyright (C) 1995-2013 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ------------------------------ ##
+##  Automake-provided m4 macros.  ##
+## ------------------------------ ##
+
+system_acdir = @system_acdir@
+automake_acdir = @automake_acdir@
+
+dist_automake_ac_DATA = \
+  %D%/amversion.m4 \
+  %D%/ar-lib.m4 \
+  %D%/as.m4 \
+  %D%/auxdir.m4 \
+  %D%/cond.m4 \
+  %D%/cond-if.m4 \
+  %D%/depend.m4 \
+  %D%/depout.m4 \
+  %D%/dmalloc.m4 \
+  %D%/extra-recurs.m4 \
+  %D%/gcj.m4 \
+  %D%/init.m4 \
+  %D%/install-sh.m4 \
+  %D%/lead-dot.m4 \
+  %D%/lex.m4 \
+  %D%/lispdir.m4 \
+  %D%/maintainer.m4 \
+  %D%/make.m4 \
+  %D%/missing.m4 \
+  %D%/mkdirp.m4 \
+  %D%/obsolete.m4 \
+  %D%/options.m4 \
+  %D%/python.m4 \
+  %D%/prog-cc-c-o.m4 \
+  %D%/runlog.m4 \
+  %D%/sanity.m4 \
+  %D%/silent.m4 \
+  %D%/strip.m4 \
+  %D%/substnot.m4 \
+  %D%/tar.m4 \
+  %D%/upc.m4 \
+  %D%/vala.m4
+
+dist_system_ac_DATA = %D%/acdir/README
+
+automake_internal_acdir = $(automake_acdir)/internal
+dist_automake_internal_ac_DATA = %D%/internal/ac-config-macro-dirs.m4
+
+# 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)' for the benefit of non-GNU makes: this is
+# how amversion.m4 appears in our dependencies.
+$(top_srcdir)/%D%/amversion.m4: $(srcdir)/configure.ac \
+                                $(srcdir)/%D%/amversion.in
+       $(AM_V_at)rm -f $@-t $@
+       $(AM_V_GEN)in=amversion.in \
+         && $(do_subst) <$(srcdir)/%D%/amversion.in >$@-t
+       $(generated_file_finalize)
+EXTRA_DIST += %D%/amversion.in
+
+# vim: ft=automake noet
index 1a044e0..b7d4c18 100644 (file)
 # 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.13'
+[am__api_version='1.13c'
 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.13.3a], [],
+m4_if([$1], [1.13c], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -31,7 +31,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.3a])dnl
+[AM_AUTOMAKE_VERSION([1.13c])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
index f895f6b..58726d0 100644 (file)
@@ -19,7 +19,8 @@ AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
 : ${AR=ar}
 
 AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
-  [am_cv_ar_interface=ar
+  [AC_LANG_PUSH([C])
+   am_cv_ar_interface=ar
    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
      [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
       AC_TRY_EVAL([am_ar_try])
@@ -36,7 +37,7 @@ AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
       fi
       rm -f conftest.lib libconftest.a
      ])
-   ])
+   AC_LANG_POP([C])])
 
 case $am_cv_ar_interface in
 ar)
index 44b2481..432ff20 100644 (file)
@@ -9,6 +9,12 @@
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -117,7 +123,48 @@ dnl macro 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
-])
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
 
 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
@@ -125,7 +172,6 @@ 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.
diff --git a/m4/minuso.m4 b/m4/minuso.m4
deleted file mode 100644 (file)
index 984427c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-##                                                          -*- Autoconf -*-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
diff --git a/m4/prog-cc-c-o.m4 b/m4/prog-cc-c-o.m4
new file mode 100644 (file)
index 0000000..3b2a849
--- /dev/null
@@ -0,0 +1,47 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
diff --git a/maintainer/am-ft b/maintainer/am-ft
new file mode 100755 (executable)
index 0000000..1d22790
--- /dev/null
@@ -0,0 +1,125 @@
+#!/usr/bin/env bash
+# Remote testing of Automake tarballs made easy.
+# This script requires Bash 4.x or later.
+
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# TODO: some documentation would be nice ...
+
+set -u
+me=${0##*/}
+
+fatal () { echo "$me: $*" >&2; exit 1; }
+
+cmd='
+  test_script=$HOME/.am-test/run
+  if test -f "$test_script" && test -x "$test_script"; then
+    "$test_script" "$@"
+  else
+    nice -n19 ./configure && nice -n19 make -j10 check
+  fi
+'
+
+remote=
+interactive=1
+while test $# -gt 0; do
+  case $1 in
+   -b|--batch) interactive=0;;
+   -c|--command) cmd=${2-}; shift;;
+   -*) fatal "'$1': invalid option";;
+    *) remote=$1; shift; break;;
+  esac
+  shift
+done
+[[ -n $remote ]] || fatal "no remote given"
+
+if ((interactive)); then
+  do_on_error='{
+    AM_TESTSUITE_FAILED=yes
+    export AM_TESTSUITE_FAILED
+    # We should not modify the environment with which the failed
+    # tests have run, hence do not read ".profile", ".bashrc", and
+    # company.
+    exec bash --noprofile --norc -i
+  }'
+else
+  do_on_error='exit $?'
+fi
+
+tarball=$(echo automake*.tar.xz)
+
+case $tarball in
+  *' '*) fatal "too many automake tarballs: $tarball";;
+esac
+
+test -f $tarball || fatal "no automake tarball found"
+
+distdir=${tarball%%.tar.xz}
+
+env='PATH=$HOME/bin:$PATH'
+if test -t 1; then
+  env+=" TERM='$TERM' AM_COLOR_TESTS=always"
+fi
+
+# This is tempting:
+#   $ ssh "command" arg-1 ... arg-2
+# but doesn't work as expected.  So we need the following hack
+# to propagate the command line arguments to the remote shell.
+quoted_args=--
+while (($# > 0)); do
+  case $1 in
+    *\'*) quoted_args+=" "$(printf '%s\n' "$1" | sed "s/'/'\\''/g");;
+       *) quoted_args+=" '$1'";;
+  esac
+  shift
+done
+
+set -e
+set -x
+
+scp $tarball $remote:tmp/
+
+# Multiple '-t' to force tty allocation.
+ssh -t -t $remote "
+  set -x; set -e; set -u;
+  set $quoted_args
+  cd tmp
+  if test -e $distdir; then
+    # Use 'perl', not only 'rm -rf', to correctly handle read-only
+    # files or directory.  Fall back to 'rm' if something goes awry.
+    perl -e 'use File::Path qw/rmtree/; rmtree(\"$distdir\")' \
+      || rm -rf $distdir || exit 1
+    test ! -e $distdir
+  fi
+  xz -dc $tarball | tar xf -
+  cd $distdir
+  "'
+  am_extra_acdir=$HOME/.am-test/extra-aclocal
+  am_extra_bindir=$HOME/.am-test/extra-bin
+  am_extra_setup=$HOME/.am-test/extra-setup.sh
+  if test -d "$am_extra_acdir"; then
+    export ACLOCAL_PATH=$am_extra_acdir${ACLOCAL_PATH+":$ACLOCAL_PATH"}
+  fi
+  if test -d "$am_extra_bindir"; then
+    export PATH=$am_extra_bindir:$PATH
+  fi
+  '"
+  export $env
+  if test -f \"\$am_extra_setup\"; then
+    . \"\$am_extra_setup\"
+  fi
+  ($cmd) || $do_on_error
+"
old mode 100644 (file)
new mode 100755 (executable)
similarity index 61%
rename from contrib/t/local.am
rename to maintainer/am-xft
index f44df9c..d7fee4c
@@ -1,4 +1,5 @@
-# Copyright (C) 1995-2013 Free Software Foundation, Inc.
+#!/bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # 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: tests for stuff in 'contrib/'.
-
-## Relative to the top-level directory.
-contrib_testsuite_dir = contrib/t
-
-contrib_TESTS = \
-  $(contrib_testsuite_dir)/parallel-tests-html.sh \
-  $(contrib_testsuite_dir)/parallel-tests-html-recursive.sh \
-  $(contrib_testsuite_dir)/help-multilib.sh \
-  $(contrib_testsuite_dir)/multilib.sh
+MAKE=${MAKE-make} GIT=${GIT-git}
+$GIT clean -fdx && $MAKE bootstrap && $MAKE dist && exec am-ft "$@"
similarity index 98%
rename from maint.mk
rename to maintainer/maint.mk
index 534f2a3..e46b6db 100644 (file)
--- a/maint.mk
@@ -477,11 +477,17 @@ files_without_copyright += lib/mkinstalldirs
 # This script has an MIT-style license
 files_without_copyright += lib/install-sh
 
+# The UPDATE_COPYRIGHT_YEAR environment variable is honoured by the
+# 'lib/update-copyright' script.
 .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; }; \
+       if test -n "$$UPDATE_COPYRIGHT_YEAR"; then \
+          current_year=$$UPDATE_COPYRIGHT_YEAR; \
+       else \
+         current_year=`date +%Y` && test -n "$$current_year" \
+           || { echo "$@: cannot get current year" >&2; exit 1; }; \
+       fi; \
        sed -i "/^RELEASE_YEAR=/s/=.*$$/=$$current_year/" \
          bootstrap.sh configure.ac; \
        excluded_re=`( \
@@ -491,6 +497,7 @@ update-copyright:
        ) | sed -e '$$!s,$$,|,' | tr -d '\012\015'`; \
        $(GIT) ls-files \
          | grep -Ev '(^|/)README$$' \
+         | grep -Ev '^PLANS(/|$$)' \
          | grep -Ev "^($$excluded_re)$$" \
          | $(update_copyright_env) xargs $(srcdir)/lib/$@
 
diff --git a/maintainer/rename-tests b/maintainer/rename-tests
new file mode 100755 (executable)
index 0000000..28963fa
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+# Convenience script to rename test cases in Automake.
+
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+set -e -u
+
+me=${0##*/}
+fatal () { echo "$me: $*" >&2; exit 1; }
+
+case $# in
+  0) input=$(cat);;
+  1) input=$(cat -- "$1");;
+  *) fatal "too many arguments";;
+esac
+
+AWK=${AWK-awk}
+SED=${SED-sed}
+
+[[ -f bin/automake.in && -d lib/Automake ]] \
+  || fatal "can only be run from the top-level of the Automake source tree"
+
+$SED --version 2>&1 | grep GNU >/dev/null 2>&1 \
+  || fatal "GNU sed is required by this script"
+
+# Validate and cleanup input.
+input=$(
+  $AWK -v me="$me" "
+    /^#/ { next; }
+    (NF == 0) { next; }
+    (NF != 2) { print me \": wrong number of fields at line \" NR;
+                exit(1); }
+    { printf (\"t/%s t/%s\\n\", \$1, \$2); }
+  " <<<"$input")
+
+# Prepare git commit message.
+exec 5>$me.git-msg
+echo "tests: more significant names for some tests" >&5
+echo >&5
+$AWK >&5 <<<"$input" \
+  '{ printf ("* %s: Rename...\n* %s: ... like this.\n", $1, $2) }'
+exec 5>&-
+
+# Rename tests.
+eval "$($AWK '{ printf ("git mv %s %s\n", $1, $2) }' <<<"$input")"
+
+# Adjust the list of tests (do this conditionally, since such a
+# list is not required nor used in Automake-NG.
+if test -f t/list-of-tests.mk; then
+  $SED -e "$($AWK '{ printf ("s|^%s |%s |\n", $1, $2) }' <<<"$input")" \
+       -i t/list-of-tests.mk
+fi
+
+git status
similarity index 91%
rename from syntax-checks.mk
rename to maintainer/syntax-checks.mk
index 61737ae..5d08750 100644 (file)
@@ -78,7 +78,7 @@ sc_unquoted_DESTDIR \
 sc_tabs_in_texi \
 sc_at_in_texi
 
-$(syntax_check_rules): automake aclocal
+$(syntax_check_rules): bin/automake bin/aclocal
 maintainer-check: $(syntax_check_rules)
 .PHONY: maintainer-check $(syntax_check_rules)
 
@@ -108,20 +108,25 @@ $(syntax_check_rules): sc_sanity_gnu_grep
 # aclocal.
 automake_diff_no = 8
 aclocal_diff_no = 9
+sc_diff_automake sc_diff_aclocal: in=$($*_in)
+sc_diff_automake sc_diff_aclocal: out=$($*_script)
 sc_diff_automake sc_diff_aclocal: sc_diff_% :
-       @set +e; tmp=$*-diffs.tmp; \
-        diff -u $(srcdir)/$*.in $* > $$tmp; test $$? -eq 1 || exit 1; \
-        added=`grep -v '^+++ ' $$tmp | grep -c '^+'` || exit 1; \
-        removed=`grep -v '^--- ' $$tmp | grep -c '^-'` || exit 1; \
-        test $$added,$$removed = $($*_diff_no),$($*_diff_no) \
+       @set +e; \
+       in=$*-in.tmp out=$*-out.tmp diffs=$*-diffs.tmp \
+         && sed '/^#!.*[pP]rototypes/d' $(in) > $$in \
+         && sed '/^# BEGIN.* PROTO/,/^# END.* PROTO/d' $(out) > $$out \
+         && { diff -u $$in $$out > $$diffs; test $$? -eq 1; } \
+         && added=`grep -v '^+++ ' $$diffs | grep -c '^+'` \
+         && removed=`grep -v '^--- ' $$diffs | grep -c '^-'` \
+         && test $$added,$$removed = $($*_diff_no),$($*_diff_no) \
          || { \
-           echo "Found unexpected diffs between $*.in and $*"; \
+           echo "Found unexpected diffs between $(in) and $(out)"; \
            echo "Lines added:   $$added"  ; \
            echo "Lines removed: $$removed"; \
-           cat $$tmp >&2; \
+           cat $$diffs; \
            exit 1; \
-         } >&1; \
-       rm -f $$tmp
+         } >&2; \
+       rm -f $$in $$out $$diffs
 
 # Expect no instances of '${...}'.  However, $${...} is ok, since that
 # is a shell construct, not a Makefile construct.
@@ -134,7 +139,7 @@ sc_no_brace_variable_expansions:
 # Make sure 'rm' is called with '-f'.
 sc_rm_minus_f:
        @if grep -v '^#' $(ams) $(xtests) \
-          | grep -vE '/(spy-rm\.tap|subobj-clean.*-pr10697\.sh):' \
+          | grep -vE '/(rm-f-probe\.sh|spy-rm\.tap|subobj-clean.*-pr10697\.sh):' \
           | grep -E '\<rm ([^-]|\-[^f ]*\>)'; \
        then \
          echo "Suspicious 'rm' invocation." 1>&2; \
@@ -170,22 +175,22 @@ sc_pre_normal_post_install_uninstall:
 
 # We never want to use "undef", only "delete", but for $/.
 sc_perl_no_undef:
-       @if grep -n -w 'undef ' $(srcdir)/automake.in | \
+       @if grep -n -w 'undef ' $(automake_in) | \
              grep -F -v 'undef $$/'; then \
-         echo "Found undef in automake.in; use delete instead" 1>&2; \
+         echo "Found 'undef' in the lines above; 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 \
+       @if grep -n 'split (/ /' $(automake_in) $(acloca_in); then \
          echo "Found bad split in the lines above." 1>&2; \
          exit 1; \
        fi
 
 # Look for cd within backquotes
 sc_cd_in_backquotes:
-       @if grep -n '^[^#]*` *cd ' $(srcdir)/automake.in $(ams); then \
+       @if grep -n '^[^#]*` *cd ' $(automake_in) $(ams); then \
          echo "Consider using \$$(am__cd) in the lines above." 1>&2; \
          exit 1; \
        fi
@@ -193,7 +198,7 @@ sc_cd_in_backquotes:
 # 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) | \
+       @if grep -n '^[^#]*cd ' $(automake_in) $(ams) | \
              grep -v 'echo.*cd ' | \
              grep -v 'am__cd =' | \
              grep -v '^[^#]*cd [./]' | \
@@ -207,30 +212,32 @@ sc_cd_relative_dir:
 
 # 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 \
+       @if grep -Hn '[^%@_A-Za-z0-9][_A-Za-z0-9]*[^) ] *= *@_' \
+           $(automake_in) $(aclocal_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.
+## Allow only few variables to be localized in automake and aclocal.
 sc_perl_local:
-       @if egrep -v '^[ \t]*local \$$[_~]( *=|;)' $(srcdir)/automake.in | \
-               grep '^[ \t]*local [^*]'; then \
+       @if egrep -v '^[ \t]*local \$$[_~]( *=|;)' \
+             $(automake_in) $(aclocal_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 \
+       @if grep '@AMDEP''_TRUE@' $(automake_in); then \
          echo "Don't put AMDEP_TRUE substitution in automake.in" 1>&2; \
          exit 1; \
        fi
 
 # Recursive make invocations should always pass $(AM_MAKEFLAGS)
 # to $(MAKE), for portability to non-GNU make.
-sc_make_without_am_makeflags:
-       @if grep '^[^#].*(MAKE) ' $(ams) $(srcdir)/automake.in \
+sc_tests_make_without_am_makeflags:
+       @if grep '^[^#].*(MAKE) ' $(ams) $(automake_in) \
            | grep -Fv '$$(AM_MAKEFLAGS)'; \
        then \
          echo 'Use $$(MAKE) $$(AM_MAKEFLAGS).' 1>&2; \
@@ -505,11 +512,11 @@ sc_tests_PATH_SEPARATOR:
 # 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 \
+       @if test `grep -E '^[^#]*@[A-Za-z_0-9]+@' bin/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 \
+       @if test `grep -E '^[^#]*@[A-Za-z_0-9]+@' bin/automake | wc -l` -ne 0; then \
          echo "Unresolved @...@ substitution in automake" 1>&2; \
          exit 1; \
        fi
diff --git a/t/Makefile.inc b/t/Makefile.inc
new file mode 100644 (file)
index 0000000..b67f3a5
--- /dev/null
@@ -0,0 +1,272 @@
+## Included by top-level Makefile for Automake.
+
+## Copyright (C) 1995-2013 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## ------------ ##
+##  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 += %D%/README %D%/ax/is %D%/ax/is_newest %D%/ax/deltree.pl
+
+## Will be updated later.
+TESTS =
+
+# Some testsuite-influential variables should be overridable from the
+# test scripts, but not from the environment.
+# Keep this in sync with the similar list in ax/runtest.in.
+AM_TESTS_ENVIRONMENT = \
+  for v in \
+    required \
+    am_test_protocol \
+    am_serial_tests \
+    am_test_prefer_config_shell \
+    am_original_AUTOMAKE \
+    am_original_ACLOCAL \
+    am_test_lib_sourced \
+    test_lib_sourced \
+  ; do \
+    eval test x"\$${$$v}" = x || unset $$v; \
+  done;
+# 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_;
+
+# For sourcing of extra "shell libraries" by our test scripts.  As per
+# POSIX, sourcing a file with '.' will cause it to be looked up in $PATH
+# in case it is given with a relative name containing no slashes.
+AM_TESTS_ENVIRONMENT += \
+  if test $(srcdir) != .; then \
+    PATH='$(abs_srcdir)/%D%/ax'$(PATH_SEPARATOR)$$PATH; \
+  fi; \
+  PATH='$(abs_builddir)/%D%/ax'$(PATH_SEPARATOR)$$PATH; \
+  export PATH;
+
+# Hand-written tests.
+
+include $(srcdir)/%D%/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)/%D%/testsuite-part.am
+
+TESTS += $(generated_TESTS)
+EXTRA_DIST += $(generated_TESTS)
+
+$(srcdir)/%D%/testsuite-part.am:
+       $(AM_V_at)rm -f %D%/testsuite-part.tmp $@
+       $(AM_V_GEN)$(PERL) $(srcdir)/gen-testsuite-part \
+         --srcdir $(srcdir) > %D%/testsuite-part.tmp
+       $(AM_V_at)chmod a-w %D%/testsuite-part.tmp
+       $(AM_V_at)mv -f %D%/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)/%D%/testsuite-part.am: $(srcdir)/gen-testsuite-part
+$(srcdir)/%D%/testsuite-part.am: Makefile.am
+
+# Hand-written tests for stuff in 'contrib/'.
+include $(srcdir)/contrib/%D%/Makefile.inc
+TESTS += $(contrib_TESTS)
+EXTRA_DIST += $(contrib_TESTS)
+
+# Static dependencies valid for each test case (also further
+# extended later).  Note that use 'noinst_' rather than 'check_'
+# as the prefix, because we really want them to be built by
+# "make all".  This makes it easier to run the test cases by
+# hand after having simply configured and built the package.
+
+nodist_noinst_SCRIPTS += \
+  %D%/wrap/aclocal-$(APIVERSION) \
+  %D%/wrap/automake-$(APIVERSION)
+
+dist_noinst_DATA += \
+  %D%/ax/test-init.sh \
+  %D%/ax/test-lib.sh \
+  %D%/ax/am-test-lib.sh \
+  %D%/ax/tap-functions.sh
+
+# Few more static dependencies.
+%D%/distcheck-missing-m4.log: %D%/ax/distcheck-hook-m4.am
+%D%/distcheck-outdated-m4.log: %D%/ax/distcheck-hook-m4.am
+EXTRA_DIST += %D%/ax/distcheck-hook-m4.am
+
+%D%/ax/test-defs.sh: %D%/ax/test-defs.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_at)$(MKDIR_P) %D%/ax
+       $(AM_V_GEN)in=%D%/ax/test-defs.in \
+         && $(do_subst) <$(srcdir)/$$in >$@-t
+       $(generated_file_finalize)
+EXTRA_DIST += %D%/ax/test-defs.in
+CLEANFILES += %D%/ax/test-defs.sh
+nodist_noinst_DATA += %D%/ax/test-defs.sh
+
+%D%/ax/shell-no-trail-bslash: %D%/ax/shell-no-trail-bslash.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_GEN)in=%D%/ax/shell-no-trail-bslash.in \
+         && $(MKDIR_P) %D%/ax \
+         && $(do_subst) <$(srcdir)/$$in >$@-t \
+         && chmod a+x $@-t
+       $(generated_file_finalize)
+EXTRA_DIST += %D%/ax/shell-no-trail-bslash.in
+CLEANFILES += %D%/ax/shell-no-trail-bslash
+nodist_noinst_SCRIPTS += %D%/ax/shell-no-trail-bslash
+
+%D%/ax/cc-no-c-o: %D%/ax/cc-no-c-o.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_GEN)in=%D%/ax/cc-no-c-o.in \
+         && $(MKDIR_P) %D%/ax \
+         && $(do_subst) <$(srcdir)/$$in >$@-t \
+         && chmod a+x $@-t
+       $(generated_file_finalize)
+EXTRA_DIST += %D%/ax/cc-no-c-o.in
+CLEANFILES += %D%/ax/cc-no-c-o
+nodist_noinst_SCRIPTS += %D%/ax/cc-no-c-o
+
+runtest: %D%/ax/runtest.in Makefile
+       $(AM_V_at)rm -f $@ $@-t
+       $(AM_V_GEN)in=%D%/ax/runtest.in \
+         && $(MKDIR_P) %D%/ax \
+         && $(do_subst) <$(srcdir)/$$in >$@-t \
+         && chmod a+x $@-t
+       $(generated_file_finalize)
+EXTRA_DIST += %D%/ax/runtest.in
+CLEANFILES += runtest
+nodist_noinst_SCRIPTS += runtest
+
+# 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
+
+# Check that our test cases are syntactically correct.
+# See automake bug#11898.
+check-tests-syntax:
+       @st=0; \
+       err () { echo "$@: $$*" >&2; st=1; }; \
+## The user might do something like "make check TESTS=t/foo" or
+## "make check TESTS_LOGS=t/foo.log" and expect (say) the test
+## 't/foo.sh' to be run; this has worked well until today, and
+## we want to continue supporting this use case.
+       bases=`for log in : $(TEST_LOGS); do echo $$log; done \
+         | sed -e '/^:$$/d' -e 's/\.log$$//'`; \
+       for bas in $$bases; do \
+         for suf in sh tap pl; do \
+           tst=$$bas.$$suf; \
+## Emulate VPATH search.
+           if test -f $$tst; then \
+             break; \
+           elif test -f $(srcdir)/$$tst; then \
+             tst=$(srcdir)/$$tst; \
+             break; \
+           else \
+             tst=''; \
+           fi; \
+         done; \
+         test -n "$$tst" || err "couldn't find test '$$bas'"; \
+## Don't check that perl tests are valid shell scripts!
+         test $$suf = pl && continue; \
+         $(AM_V_P) && echo " $(AM_TEST_RUNNER_SHELL) -n $$tst"; \
+         $(AM_TEST_RUNNER_SHELL) -n "$$tst" \
+           || err "test '$$tst' syntactically invalid"; \
+       done; \
+       exit $$st
+check-local: check-tests-syntax
+.PHONY: check-tests-syntax
+
+# Recipes with a trailing backslash character (possibly followed by
+# blank characters only) can cause spurious syntax errors with at
+# least older bash versions (e.g., bash 2.05b), and can be potentially
+# be unportable to other weaker shells.  Run the testsuite in a way
+# that helps catching such problems in Automake-generated recipes.
+# See automake bug#10436.
+check-no-trailing-backslash-in-recipes:
+       $(AM_V_GEN)$(MAKE) $(AM_MAKEFLAGS) check \
+         CONFIG_SHELL='$(abs_top_builddir)/%D%/ax/shell-no-trail-bslash'
+.PHONY: check-no-trailing-backslash-in-recipes
+
+# Some compilers out there (hello, MSVC) still choke on "-c -o" being
+# passed together on the command line.  Run the whole testsuite faking
+# the presence of such a compiler, to help catch regressions that would
+# otherwise only present themselves later "in the wild".  See also the
+# long discussion about automake bug#13378.
+check-cc-no-c-o:
+       $(AM_V_GEN)$(MAKE) $(AM_MAKEFLAGS) check \
+         AM_TESTSUITE_SIMULATING_NO_CC_C_O=yes
+.PHONY: check-cc-no-c-o
+
+# Automake-generated Makefiles should work when run with parallel make.
+check-parallel:
+       $(AM_V_GEN)$(MAKE) $(AM_MAKEFLAGS) check \
+         AM_TESTSUITE_MAKE="$${AM_TESTSUITE_MAKE-$${MAKE-make}} -j4"
+.PHONY: check-parallel
+
+## Checking the list of tests.
+test_subdirs = %D% %D%/pm contrib/%D%
+include %D%/CheckListOfTests.am
+
+# Run the testsuite with the installed aclocal and automake.
+installcheck-local: installcheck-testsuite
+installcheck-testsuite:
+       $(AM_V_GEN)$(MAKE) $(AM_MAKEFLAGS) check \
+         am_running_installcheck=yes
+
+# Performance tests.
+.PHONY: perf
+perf: all
+       $(AM_V_GEN)$(MAKE) $(AM_MAKEFLAGS) check \
+         TEST_SUITE_LOG='$(PERF_TEST_SUITE_LOG)' TESTS='$(perf_TESTS)'
+PERF_TEST_SUITE_LOG = %D%/perf/test-suite.log
+CLEANFILES += $(PERF_TEST_SUITE_LOG)
+EXTRA_DIST += $(perf_TESTS)
+
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+       $(AM_V_GEN)$(PERL) $(srcdir)/t/ax/deltree.pl t/*.dir t/*/*.dir */t/*.dir
+
+# vim: ft=automake noet
similarity index 97%
rename from t/acloca10.sh
rename to t/aclocal-I-and-install.sh
index 632e816..7c1b0d4 100644 (file)
@@ -15,7 +15,7 @@
 # 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 aclocal-I-order-1.sh, with the macro calls
+# This is the similar to aclocal-I-order-1.sh, with the macro calls
 # reversed (it did make a difference).
 #
 # Also check for --install.
@@ -28,8 +28,8 @@ am_create_testdir=empty
 
 cat > configure.ac << 'END'
 AC_INIT
-MACRO1
 MACRO2
+MACRO1
 MACRO3
 END
 
index fd58b4e..c3fe00a 100644 (file)
@@ -16,7 +16,7 @@
 
 # Make sure that when two files define the same macro in the same
 # directory, the macro from the lexically greatest file is used.
-# See also sister test 'aclocal-I-ordering-2.sh'.
+# See also sister test 'aclocal-I-order-3.sh'.
 
 am_create_testdir=empty
 . test-init.sh
index d2077fe..4fcbf4c 100644 (file)
@@ -16,7 +16,7 @@
 
 # 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 acloca-I-ordering.sh, but without calling MACRO2.
+# Same as aclocal-I-order-2.sh, but without calling MACRO2.
 
 am_create_testdir=empty
 . test-init.sh
index 7f4796f..184cc33 100644 (file)
@@ -20,8 +20,8 @@
 
 . test-init.sh
 
-cat >configure.ac <<'END'
-AC_INIT([acloca19], [1.0])
+cat >configure.ac <<END
+AC_INIT([$me], [1.0])
 m4_include([aconfig.ac])
 FOO
 AC_OUTPUT
index 2428dc2..fc7c9ad 100644 (file)
@@ -18,7 +18,6 @@
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_SUBST([FOOBAR_CFLAGS],[blablabla])
 END
 
index f74c2fd..e0a628b 100644 (file)
@@ -62,6 +62,7 @@ AC_CANONICAL_TARGET
 AC_CANONICAL_SYSTEM
 AM_PATH_LISPDIR
 AM_PATH_PYTHON
+AC_OUTPUT
 END
 $ACLOCAL || framework_failure_ "cannot pre-compute aclocal.m4"
 
@@ -247,6 +248,7 @@ check_ <<'END'
 depcomp/C
 == Files ==
 depcomp
+compile
 == configure.ac ==
 AC_PROG_CC
 == Makefile.am ==
@@ -271,9 +273,9 @@ 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
+# Using AC_PROG_CC in configure.ac should be enough.
+# No need to also define, say, xxx_PROGRAMS in Makefile.am.
+AC_PROG_CC
 END
 
 # For config.guess and config.sub.
@@ -295,6 +297,7 @@ check_ <<'END'
 ylwrap/Lex
 == Files ==
 ylwrap
+compile
 == configure.ac ==
 AC_PROG_CC
 AC_PROG_LEX
@@ -309,6 +312,7 @@ check_ <<'END'
 ylwrap/Yacc
 == Files ==
 ylwrap
+compile
 == configure.ac ==
 AC_PROG_CC
 AC_PROG_YACC
diff --git a/t/am-prog-cc-c-o.sh b/t/am-prog-cc-c-o.sh
new file mode 100644 (file)
index 0000000..08522a4
--- /dev/null
@@ -0,0 +1,126 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that uses of the obsolescent AM_PROG_CC_C_O macro doesn't
+# cause spurious warnings or errors.  Suggested by Eric Blake.
+
+# We need gcc for for two reasons:
+#  1. to ensure our C compiler grasps "-c -o" together.
+#  2. to be able to later fake a dumb compiler not grasping that
+#     (done with 'cc-no-c-o' script below, which required gcc).
+required=gcc
+. test-init.sh
+
+echo bin_PROGRAMS = foo > Makefile.am
+echo 'int main (void) { return 0; }' > foo.c
+
+cp configure.ac configure.bak
+
+cat > acinclude.m4 <<'END'
+AC_DEFUN([AM_TWEAKED_OUTPUT], [
+# For debugging.
+printf "CC = '%s'\\n" "$CC"
+# Make sure that $CC can be used after AM_PROG_CC_C_O.
+$CC --version || exit 1
+$CC -v || exit 1
+# $CC rewrite should only take place on time.
+case " $CC " in
+  *" compile"*" compile"*) AC_MSG_ERROR([CC rewritten twice]);;
+esac
+AC_OUTPUT
+])
+END
+
+# ---
+
+cat configure.bak - > configure.ac << 'END'
+dnl It's OK to call AM_PROG_CC_C_O after AC_PROG_CC.
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_TWEAKED_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure >stdout || { cat stdout; exit 1; }
+cat stdout
+if test "$AM_TESTSUITE_SIMULATING_NO_CC_C_O" != no; then
+  $EGREP 'understands? -c and -o together.* no$' stdout
+else
+  $EGREP 'understands? -c and -o together.* yes$' stdout
+fi
+
+# No repeated checks please.
+test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
+
+$MAKE
+$MAKE maintainer-clean
+rm -rf autom4te*.cache
+
+# ---
+
+cat configure.bak - > configure.ac << 'END'
+dnl It's also OK to call AM_PROG_CC_C_O *before* AC_PROG_CC.
+AM_PROG_CC_C_O
+AC_PROG_CC
+AM_TWEAKED_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure >stdout || { cat stdout; exit 1; }
+cat stdout
+if test "$AM_TESTSUITE_SIMULATING_NO_CC_C_O" != no; then
+  $EGREP 'understands? -c and -o together.* no$' stdout
+else
+  $EGREP 'understands? -c and -o together.* yes$' stdout
+fi
+
+# Repeated checks are OK in this case, but should be cached.
+test $(grep ".*-c['\" ].*-o['\" ]" stdout \
+        | $FGREP -v ' (cached) ' | wc -l) -eq 1
+
+$MAKE
+$MAKE maintainer-clean
+rm -rf autom4te*.cache
+
+# ---
+
+cat configure.bak - > configure.ac << 'END'
+dnl It's also OK to call AM_PROG_CC_C_O *without* AC_PROG_CC.
+AM_PROG_CC_C_O
+AM_TWEAKED_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Make sure the compiler doesn't understand '-c -o'
+CC=$am_testaux_builddir/cc-no-c-o; export CC
+
+./configure >stdout || { cat stdout; exit 1; }
+cat stdout
+$EGREP 'understands? -c and -o together.* no$' stdout
+# No repeated checks please.
+test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
+$MAKE
+
+:
index 351db13..182b070 100644 (file)
@@ -761,6 +761,11 @@ require_tool ()
   case $1 in
     cc|c++|fortran|fortran77)
       require_compiler_ $1;;
+    -c-o)
+      if test x"$AM_TESTSUITE_SIMULATING_NO_CC_C_O" = x"yes"; then
+        skip_all_ "need a C compiler that grasps -c and -o together"
+      fi
+      ;;
     xsi-lib-shell)
       if test x"$am_test_prefer_config_shell" = x"yes"; then
         require_xsi "$SHELL"
@@ -1031,7 +1036,7 @@ am_setup_testdir ()
     || 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 . \
+       "$am_scriptdir"/compile "$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,
diff --git a/t/ax/cc-no-c-o.in b/t/ax/cc-no-c-o.in
new file mode 100644 (file)
index 0000000..c18f9b9
--- /dev/null
@@ -0,0 +1,29 @@
+#! @AM_TEST_RUNNER_SHELL@
+# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# A "C compiler" that chokes when the '-c' and '-o' options are passed
+# together to it on the command line.  See also automake bug#13378.
+
+am_CC=${AM_TESTSUITE_GNU_CC-'@GNU_CC@'}
+
+case " $* " in
+ *\ -c*\ -o* | *\ -o*\ -c*)
+    echo "$0: both '-o' and '-c' seen on the command line" >&2
+    exit 2
+    ;;
+esac
+
+exec $am_CC "$@"
index ff0ecb6..03b0b7e 100644 (file)
@@ -130,9 +130,8 @@ check_distclean ()
 cat > configure.ac <<END
 AC_INIT([$me], [1.0])
 AC_CONFIG_AUX_DIR([build-aux])
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE([subdir-objects])
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_AR
 $(if test $depcomp_with_libtool = yes; then
     echo AC_PROG_LIBTOOL
@@ -199,18 +198,17 @@ ${normalized_target}_${LINKADD} = src/libbaz.$a
 grep-test:
 ## For debugging.
        cat \$(DEPDIR)/foo.$po || :
-       cat \$(DEPDIR)/subfoo.$po || :
+       cat sub/\$(DEPDIR)/subfoo.$po || :
        cat src/\$(DEPDIR)/baz.$po || :
        cat src/sub2/\$(DEPDIR)/sub2foo.$po || :
-## Checks done here.
+## Checks are done here.
        grep '^foo.$objext.*:' \$(DEPDIR)/foo.$po
-       grep '^subfoo\.$objext.*:' \$(DEPDIR)/subfoo.$po
+       grep '^sub/subfoo\.$objext.*:' sub/\$(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.
similarity index 86%
rename from runtest.in
rename to t/ax/runtest.in
index 364ba4a..57ce889 100644 (file)
@@ -1,4 +1,5 @@
 #!@AM_TEST_RUNNER_SHELL@
+# @configure_input@
 #
 # Copyright (C) 2012-2013 Free Software Foundation, Inc.
 #
@@ -57,6 +58,7 @@ for v in \
 done
 unset v
 
+xecho () { printf '%s\n' "$*"; }
 error () { echo "$0: $*" >&2; exit 255; }
 
 # Some shell flags should be passed over to the test scripts.
@@ -64,7 +66,8 @@ shell_opts=
 while test $# -gt 0; do
   case $1 in
     --help)
-       echo "Usage: $0 [--shell=PATH] [SHELL-OPTIONS] TEST [TEST-OPTIONS]"
+       xecho "Usage: $0 [--shell=PATH] [-k] [SHELL-OPTIONS]" \
+             "[VAR=VALUE ...] TEST [TEST-OPTIONS]"
        exit $?
        ;;
     --shell)
@@ -80,9 +83,17 @@ while test $# -gt 0; do
        shell_opts="$shell_opts -o $2"
        shift
        ;;
+    -k|--keep-testdir|--keep-testdirs)
+       keep_testdirs=yes; export keep_testdirs;;
     -*)
        # Assume it is an option to pass through to the shell.
        shell_opts="$shell_opts $1";;
+    *=*)
+       var=${1%%=*} val=${1#*=}
+       xecho "$var" | LC_ALL=C grep '^[a-zA-Z_][a-zA-Z0-9_]*$' >/dev/null \
+         || error "'$var': invalid variable name"
+       eval "$var=\$val && export $var" || exit 1
+       ;;
      *)
        break;;
   esac
index 6955c86..3c992a3 100644 (file)
@@ -22,7 +22,7 @@
 
 # Check that we are running from a proper directory: last thing we want
 # is to overwrite some random user files.
-test -f ../../automake && test -f ../../runtest && test -d ../../t \
+test -f ../../bin/automake && test -f ../../runtest && test -d ../../t \
   || fatal_ "running from a wrong directory"
 
 test ! -f Makefile.am || mv Makefile.am Makefile.am~ \
index fd81479..c716cab 100644 (file)
@@ -76,6 +76,11 @@ PATH_SEPARATOR='@PATH_SEPARATOR@'
 host_alias=${host_alias-'@host_alias@'}; export host_alias
 build_alias=${build_alias-'@build_alias@'}; export build_alias
 
+# Whether the testsuite is being run by faking the presence of a C
+# compiler that doesn't grasp the '-c' and '-o' flags together.  By
+# default, of course, it isn't.
+: "${AM_TESTSUITE_SIMULATING_NO_CC_C_O:=no}"
+
 # A concurrency-safe "mkdir -p" implementation.
 MKDIR_P=${AM_TESTSUITE_MKDIR_P-'@MKDIR_P@'}
 
@@ -136,7 +141,11 @@ 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@'}}
+if test $AM_TESTSUITE_SIMULATING_NO_CC_C_O = no; then
+  CC=${AM_TESTSUITE_CC-${CC-'@CC@'}}
+else
+  CC=$am_testaux_builddir/cc-no-c-o
+fi
 CXX=${AM_TESTSUITE_CXX-${CXX-'@CXX@'}}
 F77=${AM_TESTSUITE_F77-${F77-'@F77@'}}
 FC=${AM_TESTSUITE_FC-${FC-'@FC@'}}
@@ -147,6 +156,11 @@ FFLAGS=${AM_TESTSUITE_FFLAGS-${FFLAGS-'@FFLAGS@'}}
 CPPFLAGS=${AM_TESTSUITE_CPPFLAGS-${CPPFLAGS-'@CPPFLAGS@'}}
 
 # GNU compilers and their flags.
+if test $AM_TESTSUITE_SIMULATING_NO_CC_C_O = no; then
+  GNU_CC=${AM_TESTSUITE_GNU_CC-${GNU_CC-'@GNU_CC@'}}
+else
+  GNU_CC=$am_testaux_builddir/cc-no-c-o
+fi
 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@'}}
index df2fc55..a0012e2 100644 (file)
@@ -27,7 +27,6 @@ AC_CONFIG_SRCDIR([tests/test.test])
 AC_CONFIG_AUX_DIR([build-aux])
 AM_INIT_AUTOMAKE
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_AR
 AC_PROG_RANLIB
 AM_CONDITIONAL([RUN_TESTS], [test x"$run_tests" != x"no"])
diff --git a/t/ccnoco-deps.sh b/t/ccnoco-deps.sh
new file mode 100755 (executable)
index 0000000..d4931d5
--- /dev/null
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that dependency tracking can also work with compilers that
+# doesn't understand '-c -o', even if the AM_PROG_CC_C_O macro is not
+# explicitly called.
+
+required=gcc # For 'cc-no-c-o'.
+. test-init.sh
+
+echo '#define myStr "Hello"' > foobar.h
+
+cat > foo.c << 'END'
+#include <stdio.h>
+#include "foobar.h"
+int main (void)
+{
+  printf ("%s\n", myStr);
+  return 0;
+}
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c foobar.h
+check-deps: all
+       test -n '$(DEPDIR)' && test -d '$(DEPDIR)'
+       ls -l $(DEPDIR)
+       grep 'stdio\.h' $(DEPDIR)/foo.Po
+       grep 'foobar\.h' $(DEPDIR)/foo.Po
+check-updated: all
+       is_newest foo foobar.h
+END
+
+# We deliberately don't invoke AM_PROG_CC_C_O here.
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Make sure the compiler doesn't understand '-c -o'.
+CC=$am_testaux_builddir/cc-no-c-o; export CC
+
+./configure >stdout || { cat stdout; exit 1; }
+cat stdout
+$EGREP 'understands? -c and -o together.* no$' stdout
+grep '^checking dependency style .*\.\.\. gcc' stdout
+
+$MAKE check-deps
+
+if ! cross_compiling; then
+  ./foo
+  test "$(./foo)" = Hello
+fi
+
+$sleep
+echo '#define myStr "Howdy"' > foobar.h
+$MAKE check-updated
+
+if ! cross_compiling; then
+  ./foo
+  test "$(./foo)" = Howdy
+fi
+
+:
diff --git a/t/ccnoco-lib.sh b/t/ccnoco-lib.sh
new file mode 100755 (executable)
index 0000000..a6464ec
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure we can compile when the compiler doesn't
+# understand '-c -o'.
+
+required=gcc # For cc-no-c-o.
+. test-init.sh
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+$CC --version || exit 1
+$CC -v || exit 1
+AC_PROG_RANLIB
+AM_PROG_AR
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+mylibsdir = $(libdir)/my-libs
+mylibs_LIBRARIES = libwish.a
+libwish_a_SOURCES = a.c
+# Make sure we need something strange.
+libwish_CFLAGS = -O0
+END
+
+cat > a.c << 'END'
+int wish_granted (void)
+{
+   return 0;
+}
+END
+
+# Make sure the compiler doesn't understand '-c -o'.
+CC=$am_testaux_builddir/cc-no-c-o; export CC
+
+$ACLOCAL
+$AUTOCONF -Wall -Werror
+$AUTOMAKE --copy --add-missing
+
+for vpath in : false; do
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+  $srcdir/configure >stdout || { cat stdout; exit 1; }
+  cat stdout
+  $EGREP 'understands? -c and -o together.* no$' stdout
+  # No repeated checks please.
+  test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
+  $MAKE
+  cd $srcdir
+done
+
+$MAKE distcheck
+
+:
diff --git a/t/ccnoco-lt.sh b/t/ccnoco-lt.sh
new file mode 100755 (executable)
index 0000000..793987b
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure we can compile libtool libraries when the compiler
+# doesn't understand '-c -o'.
+
+required='gcc libtoolize' # For cc-no-c-o.
+. test-init.sh
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+LT_INIT
+$CC --version
+$CC -v
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+lib_LTLIBRARIES = libwish.la
+END
+
+cat > libwish.c << 'END'
+int wish_granted (void)
+{
+   return 0;
+}
+END
+
+# Make sure the compiler doesn't understand '-c -o'.
+CC=$am_testaux_builddir/cc-no-c-o; export CC
+
+libtoolize --verbose --install
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+for vpath in : false; do
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+  $srcdir/configure >stdout || { cat stdout; exit 1; }
+  cat stdout
+  $EGREP 'understands? -c and -o together.* no$' stdout
+  # No repeated checks please.
+  test $(grep ".*-c['\" ].*-o['\" ]" stdout \
+          | $FGREP -v ' -c -o file.o' | wc -l) -eq 1
+  # Once we have rewritten $CC to use our 'compile' wrapper script,
+  # libtool should pick it up correctly, and not mess with the
+  # redefinition.
+  grep '^checking if .*/compile .*supports -c -o file\.o\.\.\. yes' stdout
+  # And of course, we should be able to build our package.
+  $MAKE
+  cd $srcdir
+done
+
+$MAKE distcheck
+
+:
index cffabd7..d00b6f9 100644 (file)
 # Test to make sure we can compile when the compiler doesn't
 # understand '-c -o'.
 
-required=gcc
+required=gcc # For cc-no-c-o.
 . test-init.sh
 
 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 --version || exit 1
 $CC -v || exit 1
 AC_OUTPUT
 END
@@ -44,28 +43,11 @@ int main ()
 }
 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 the testsuite setup.
-exec $CC "\$@"
-END
-
-chmod +x Mycomp
-
-# Make sure the compiler doesn't understand '-c -o'
-CC=$(pwd)/Mycomp
-export CC
+# Make sure the compiler doesn't understand '-c -o'.
+CC=$am_testaux_builddir/cc-no-c-o; export CC
 
 $ACLOCAL
-$AUTOCONF
+$AUTOCONF -Wall -Werror
 $AUTOMAKE --copy --add-missing
 
 for vpath in : false; do
@@ -76,9 +58,15 @@ for vpath in : false; do
   else
     srcdir=.
   fi
-  $srcdir/configure
+  $srcdir/configure >stdout || { cat stdout; exit 1; }
+  cat stdout
+  $EGREP 'understands? -c and -o together.* no$' stdout
+  # No repeated checks please.
+  test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
   $MAKE
   cd $srcdir
 done
 
+$MAKE distcheck
+
 :
diff --git a/t/ccnoco2.sh b/t/ccnoco2.sh
deleted file mode 100644 (file)
index a835fa6..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Make sure Automake requires AM_PROG_CC_C_O when either per-targets
-# flags or subdir-objects are used.
-
-. test-init.sh
-
-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
-
-:
index 8e3547b..36bff76 100644 (file)
 
 # Test to make sure 'compile' doesn't call 'mv SRC SRC'.
 
-required=gcc
+required=gcc # For cc-no-c-o.
 . test-init.sh
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 $CC --version; $CC -v; # For debugging.
 AC_OUTPUT
 END
@@ -43,25 +42,8 @@ int main ()
 }
 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 the testsuite setup.
-exec $CC "\$@"
-END
-
-chmod +x Mycomp
-
 # Make sure the compiler doesn't understand '-c -o'
-CC=$(pwd)/Mycomp
-export CC
+CC=$am_testaux_builddir/cc-no-c-o; export CC
 
 $ACLOCAL
 $AUTOCONF
diff --git a/t/ccnoco4.sh b/t/ccnoco4.sh
new file mode 100644 (file)
index 0000000..beb02da
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that Automake-generated C compilation rules don't mistakenly
+# use the "-c -o" options combination unconditionally (even with losing
+# compilers) when the 'subdir-objects' is used but sources are only
+# present in the top-level directory.  Reported by Nick Bowler in the
+# discussion on automake bug#13378:
+# <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#35>
+# <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#44>
+
+required=gcc # For cc-no-c-o.
+. test-init.sh
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+$CC --version; $CC -v; # For debugging.
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = foo bar
+bar_SOURCES = foo.c
+END
+
+echo 'int main (void) { return 0; }' > foo.c
+
+# Make sure the compiler doesn't understand '-c -o'
+CC=$am_testaux_builddir/cc-no-c-o; export CC
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+./configure
+$MAKE
+$MAKE distcheck
+
+:
index 2586c0b..41fe307 100644 (file)
@@ -22,7 +22,6 @@ required='cc native'
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 END
 
index a06aa87..ddabe31 100644 (file)
@@ -46,7 +46,6 @@ absmainobj=$cwd/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])
index 03c4077..7d729d8 100644 (file)
@@ -47,7 +47,6 @@ END
 
 : > config.guess
 : > config.sub
-: > compile
 
 $ACLOCAL
 $AUTOCONF
index 88d498b..c39a9b6 100644 (file)
@@ -22,8 +22,10 @@ plan_ 18
 
 ocwd=$(pwd) || fatal_ "getting top-level directory"
 
-cat >> configure.ac << 'END'
-AC_CONFIG_FILES([sub/Makefile])
+cat > configure.ac << 'END'
+AC_INIT([cscope-test], [1.0])
+AM_INIT_AUTOMAKE([subdir-objects])
+AC_CONFIG_FILES([Makefile sub/Makefile])
 AC_SUBST([CC],  [who-cares])
 AC_SUBST([CXX], [who-cares])
 AC_SUBST([FC],  [who-cares])
index 7f73f93..faf18bd 100644 (file)
@@ -94,10 +94,12 @@ $AUTOCONF
 $AUTOMAKE --add-missing --copy
 
 ls -l . ax # For debugging.
-for f in ltmain.sh depcomp config.guess config.sub; do
+# Ideally, the 'compile' script should not be required by C++ compilers.
+# But alas, LT_INIT seems to invoke AC_PROG_CC anyway, and that brings in
+# that script.
+for f in ltmain.sh depcomp compile config.guess config.sub; do
   test -f ax/$f && test ! -h ax/$f || exit 1
 done
-test ! -e ax/compile # Not required by C++ compilers.
 
 cat > src/main.cc << 'END'
 #include "libfoo.h++"
index aa0be39..d6c73ed 100644 (file)
@@ -24,7 +24,6 @@ required=cc
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-#x AM_PROG_CC_C_O
 AC_OUTPUT
 END
 
@@ -49,7 +48,9 @@ int bar (void)
 END
 
 $ACLOCAL
-$AUTOMAKE -a
+# FIXME: stop disabling the warnings in the 'unsupported' category
+# FIXME: once the 'subdir-objects' option has been mandatory.
+$AUTOMAKE -a -Wno-unsupported
 grep include Makefile.in # For debugging.
 grep 'include.*\./\$(DEPDIR)/foo\.P' Makefile.in
 grep 'include.*\./\$(DEPDIR)/bar\.P' Makefile.in
@@ -64,12 +65,9 @@ DISTCHECK_CONFIGURE_FLAGS='--enable-dependency-tracking' $MAKE distcheck
 
 # Try again with subdir-objects option.
 
-sed 's/#x //' configure.ac >configure.tmp
-mv -f configure.tmp configure.ac
 echo AUTOMAKE_OPTIONS = subdir-objects >> Makefile.am
 
-$ACLOCAL
-$AUTOMAKE -a
+$AUTOMAKE
 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
index c2a54da..879ee1c 100644 (file)
@@ -31,6 +31,9 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
+## FIXME: stop disabling the warnings in the 'unsupported' category
+## FIXME: once the 'subdir-objects' option has been mandatory.
+AUTOMAKE_OPTIONS = -Wno-unsupported
 lib_LTLIBRARIES = libzardoz.la
 libzardoz_la_SOURCES = foo.c sub/bar.c
 END
@@ -42,7 +45,9 @@ echo 'int bar (void) { return 0; }' > sub/bar.c
 libtoolize
 
 $ACLOCAL
-$AUTOMAKE -a
+# FIXME: stop disabling the warnings in the 'unsupported' category
+# FIXME: once the 'subdir-objects' option has been mandatory.
+$AUTOMAKE -a -Wno-unsupported
 grep include Makefile.in # For debugging.
 grep 'include.*\./\$(DEPDIR)/foo\.P' Makefile.in
 grep 'include.*\./\$(DEPDIR)/bar\.P' Makefile.in
@@ -56,12 +61,9 @@ DISTCHECK_CONFIGURE_FLAGS='--enable-dependency-tracking' $MAKE distcheck
 
 # Try again with subdir-objects option.
 
-sed 's/#x //' configure.ac >configure.tmp
-mv -f configure.tmp configure.ac
-echo AUTOMAKE_OPTIONS = subdir-objects >> Makefile.am
+echo AUTOMAKE_OPTIONS += subdir-objects >> Makefile.am
 
-$ACLOCAL
-$AUTOMAKE -a
+$AUTOMAKE
 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
index f841c5b..5d564b5 100644 (file)
@@ -19,9 +19,9 @@
 . test-init.sh
 
 cat >> configure.ac << 'END'
+AC_PROG_CC
 AC_PROG_RANLIB
 AM_PROG_AR
-AC_PROG_CC
 AC_LIBOBJ([fsusage])
 AC_OUTPUT
 END
index d49372a..ec1a964 100644 (file)
@@ -63,6 +63,7 @@ END
   required_files='
     install-sh
     missing
+    compile
     depcomp
     py-compile
     test-driver
index 7829512..49281d9 100644 (file)
@@ -20,7 +20,7 @@
 am_create_testdir=empty
 . test-init.sh
 
-plan_ 70
+plan_ 66
 
 # ---------------------------------------------------- #
 #  Common and/or auxiliary subroutines and variables.  #
@@ -56,12 +56,10 @@ 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
 }
@@ -73,20 +71,6 @@ have_compressor ()
     # Assume gzip(1) is available on every reasonable portability target.
     gzip)
       return 0;;
-    # 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 aaaaaaaaaaaaaaaaaaaaa
-      done | compress -c >/dev/null && return 0
-      return 1
-      ;;
     *)
       case $1 in
         # Do not use --version, or older versions bzip2 would try to
@@ -113,7 +97,7 @@ have_compressor ()
   fatal_ "have_compressor(): dead code reached"
 }
 
-all_compression_formats='gzip tarZ lzip xz bzip2 zip shar'
+all_compression_formats='gzip lzip xz bzip2 zip'
 
 all_compressors=$(
   for x in $all_compression_formats; do
@@ -305,7 +289,7 @@ END
 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
+nogzip in ac  and  zip    in  ac
 
 
 # ----------------------------------------------------------- #
@@ -324,13 +308,13 @@ 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
+# We only use formats requiring 'gzip', 'bzip2' and 'xz' programs,
+# since there are the most likely to be all found on the majority
 # of systems.
 
-start_subtest parallel-compression ac_opts=dist-bzip2 am_opts=dist-tarZ
+start_subtest parallel-compression ac_opts=dist-bzip2 am_opts=dist-xz
 
-desc=gzip+bzip2+tarZ
+desc=gzip+bzip2+xz
 tarname=parallel-compression-1.0
 
 check_tarball ()
@@ -353,11 +337,17 @@ check_tarball ()
 
 command_ok_ "$desc [automake]" $AUTOMAKE
 
-skip_reason=
-have_compressor compress || skip_reason="'compress' not available"
-have_compressor bzip2 || skip_reason="'bzip2' not available"
+if ! have_compressor xz && ! have_compressor bzip2; then
+  skip_reason="both 'bzip2' and 'xz' are unavailable"
+elif ! have_compressor xz; then
+  skip_reason="'xz' not available"
+elif ! have_compressor bzip2; then
+  skip_reason="'bzip2' not available"
+else
+  skip_reason=
+fi
 if test "$MAKE_j4" = false; then
-  test -z "$skip_reason" || skip_reason="$skip_reason and "
+  test -z "$skip_reason" || skip_reason="$skip_reason, and "
   skip_reason="${skip_reason}make concurrency unavailable"
 fi
 
@@ -370,7 +360,7 @@ else
   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
+  command_ok_ "$desc [check .tar.xz tarball]"  check_tarball xz
 fi
 
 unset tarname desc skip_reason
@@ -445,8 +435,8 @@ 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;;
+    tar|zip) cp check-distdir $prog;;
+          *) cp grep-distdir-error $prog;;
   esac
 done
 unset prog
similarity index 95%
rename from t/lzma.sh
rename to t/dist-lzma.sh
index 30fc689..d1d3e4b 100644 (file)
--- a/t/lzma.sh
@@ -25,8 +25,8 @@ $ACLOCAL --force
 AUTOMAKE_fails -Wnone -Wno-error
 grep "^Makefile\\.am:1:.*$errmsg" stderr
 
-cat > configure.ac << 'END'
-AC_INIT([lzma], [1.0])
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
 AM_INIT_AUTOMAKE([no-dist-gzip dist-lzma])
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
diff --git a/t/dist-shar.sh b/t/dist-shar.sh
new file mode 100644 (file)
index 0000000..2265fd9
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for no-dist-gzip with dist-shar.
+
+required='shar unshar'
+. test-init.sh
+
+errmsg='support for shar .*deprecated'
+
+echo AUTOMAKE_OPTIONS = dist-shar > Makefile.am
+$ACLOCAL
+AUTOMAKE_fails -Wnone -Wobsolete
+grep "^Makefile\\.am:1:.*$errmsg" stderr
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([no-dist-gzip dist-shar])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+: > Makefile.am
+
+rm -rf autom4te*.cache
+$ACLOCAL
+AUTOMAKE_run -Wno-error
+grep "^configure\\.ac:2:.*$errmsg" stderr
+
+$AUTOCONF
+./configure
+$MAKE distcheck
+test -f $distdir.shar.gz
+
+:
diff --git a/t/dist-tarZ.sh b/t/dist-tarZ.sh
new file mode 100644 (file)
index 0000000..f276481
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check support for no-dist-gzip with dist-tarZ.
+
+. test-init.sh
+
+# 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.
+for x in 1 2 3 4 5 6 7 8; do
+  echo aaaaaaaaaaaaaaaaaaaaa
+done | compress -c >/dev/null \
+  || skip_ "cannot find a working 'compress' program"
+
+errmsg=".*legacy .*'compress' .*deprecated"
+
+echo AUTOMAKE_OPTIONS = dist-tarZ > Makefile.am
+$ACLOCAL
+AUTOMAKE_fails -Wnone -Wobsolete
+grep "^Makefile\\.am:1:.*$errmsg" stderr
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE([no-dist-gzip dist-tarZ])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+END
+: > Makefile.am
+
+rm -rf autom4te*.cache
+$ACLOCAL
+AUTOMAKE_run -Wno-error
+grep "^configure\\.ac:2:.*$errmsg" stderr
+
+$AUTOCONF
+./configure
+$MAKE distcheck
+test -f dist-tarz-1.0.tar.Z
+
+:
index 57154d9..1f39b66 100644 (file)
@@ -22,7 +22,6 @@
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_CONFIG_FILES([subdir/Makefile])
 AC_OUTPUT
 END
@@ -44,6 +43,8 @@ $ACLOCAL
 
 for opt in '' --no-force; do
 
+  rm -f compile depcomp
+
   $AUTOMAKE $opt --add-missing
 
   test -f compile
@@ -74,7 +75,7 @@ for opt in '' --no-force; do
 
   $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).
+  # Makefile because it's required in configure.ac (by AC_PROG_CC).
   $FGREP ' $(top_srcdir)/compile ' dc.txt || $FGREP ' compile ' dc.txt
 
 done
index 7183743..ef2dd06 100644 (file)
@@ -65,27 +65,22 @@ grep 'recursive variable expansion' stderr
 cat >Makefile.am <<'EOF'
 x = 1
 bla = $(foo$(x))
-noinst_PROGRAMS = foo
-foo_CPPFLAGS = -Dwhatever
+oops = $(var-with-dash)
 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 'var-with-dash' 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 'var-with-dash' stderr && exit 1
 grep 'recursive variable expansion' stderr
 
 :
index 1089080..4858aec 100644 (file)
--- a/t/ext2.sh
+++ b/t/ext2.sh
@@ -25,6 +25,7 @@ AC_PROG_CXX
 EOF
 
 cat >Makefile.am <<EOF
+AUTOMAKE_OPTIONS = subdir-objects
 bin_PROGRAMS = p q r
 p_SOURCES = a.cc b.cpp c.cxx
 q_SOURCES = sub/d.cc sub/e.cpp sub/f.cxx
index 5e7ef98..782b8d7 100644 (file)
@@ -16,8 +16,8 @@
 
 # Check that wildcards in EXTRA_DIST are honoured.
 # Suggested by observations from Braden McDaniel.
-# See also sister test 'extra11.sh', that checks a similar usage
-# with the involvement of the $(wildcard) GNU make builtin.
+# See also sister test 'extra-dist-wildcards-gnu.sh', that checks a
+# similar usage with the involvement of the $(wildcard) GNU make builtin.
 
 required=GNUmake
 . test-init.sh
index 94dd799..63849c7 100644 (file)
@@ -40,7 +40,7 @@ $ACLOCAL
 
 cat >Makefile.am <<END
 EXTRA_LIBRARIES = libfoo.a
-libfoo_a_SOURCES = sub/foo.c
+libfoo_a_SOURCES = foo.c
 END
 
 # Sanity check: extra-portability warnings causes the expected error.
@@ -62,30 +62,29 @@ $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
+echo 'var = $(foo--bar)' >> Makefile.am
 
 # Enabling extra-portability enables portability as well ...
 AUTOMAKE_fails -Wextra-portability
-grep 'requires.*AM_PROG_CC_C_O' stderr
+grep 'foo--bar' 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 'foo--bar' 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 'foo--bar' 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 'foo--bar' 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 'foo--bar' stderr
 grep 'requires.*AM_PROG_AR' stderr && exit 1
 
 # Disabling portability disables extra-portability.
index b971a4b..f3c3f5b 100644 (file)
@@ -14,7 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Check to make sure EXTRA_foo_SOURCES not defined unnecessarily.
+# Check to make sure EXTRA_foo_SOURCES are not defined unnecessarily.
 
 . test-init.sh
 
index c99e8b7..c2c0f03 100644 (file)
@@ -19,6 +19,7 @@
 
 # Cf. 'fort1.sh' and 'link_f90_only.sh'.
 
+required=gfortran # Required only in order to run ./configure.
 . test-init.sh
 
 mkdir sub
@@ -30,33 +31,62 @@ AC_FC_SRCEXT([f95])
 AC_FC_SRCEXT([f03])
 AC_FC_SRCEXT([f08])
 AC_FC_SRCEXT([blabla])
+AC_OUTPUT
 END
 
 cat >Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+FC = fake-fc
 bin_PROGRAMS = hello goodbye
-hello_SOURCES = hello.f90 foo.f95 sub/bar.f95 hi.f03 sub/howdy.f03 greets.f08 sub/bonjour.f08
+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 =
+goodbye_FCFLAGS = --gby
 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
+
+sed '/^AC_FC_SRCEXT.*blabla/d' configure.ac >t
+mv -f t configure.ac
+
+rm -rf autom4te*.cache
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+./configure
+
+touch hello.f90 foo.f95 sub/bar.f95 hi.f03 sub/howdy.f03 greets.f08 \
+      sub/bonjour.f08 bye.f95 sub/baz.f90
+
+run_make -O -- -n \
+  FCFLAGS_f90=--@90 FCFLAGS_f95=--@95 FCFLAGS_f03=--@03 FCFLAGS_f08=--@08
+# To make it easier to have  stricter grepping below.
+sed -e 's/[    ][      ]*/  /g' -e 's/^/ /' -e 's/$/ /' stdout > out
+cat out
+
+grep ' fake-fc .* --@90 .* hello\.f90 ' out
+grep ' fake-fc .* --@95 .* foo\.f95 ' out
+grep ' fake-fc .* --@95 .* sub/bar\.f95 ' out
+grep ' fake-fc .* --@03 .* hi\.f03 ' out
+grep ' fake-fc .* --@03 .* sub/howdy\.f03 ' out
+grep ' fake-fc .* --@08 .* greets\.f08 ' out
+grep ' fake-fc .* --@08 .* sub/bonjour\.f08 ' out
+grep ' fake-fc .* --gby .* --@95 .*[` ]bye\.f95 ' out
+grep ' fake-fc .* --gby .* --@90 .*[` ]sub/baz\.f90 ' out
+
+test $(grep -c '.*--gby.*\.f' out) -eq 2
+
+$EGREP 'fake-fc.*--@(95|03|08).*\.f90' out && exit 1
+$EGREP 'fake-fc.*--@(90|03|08).*\.f95' out && exit 1
+$EGREP 'fake-fc.*--@(90|95|08).*\.f03' out && exit 1
+$EGREP 'fake-fc.*--@(95|95|03).*\.f08' out && exit 1
 
 :
index 822edb8..2ef27ab 100644 (file)
@@ -65,7 +65,7 @@ LDADD = $(FCLIBS)
 END
 
 $ACLOCAL
-$AUTOMAKE -a
+$AUTOMAKE -a -Wno-unsupported
 # The Fortran 77 linker should be preferred:
 grep '.\$(FCLINK)' Makefile.in && exit 1
 
index 0272706..7b9991b 100644 (file)
@@ -75,7 +75,9 @@ END
 
 libtoolize --force
 $ACLOCAL
-$AUTOMAKE -a
+# FIXME: stop disabling the warnings in the 'unsupported' category
+# FIXME: once the 'subdir-objects' option has been mandatory.
+$AUTOMAKE -a -Wno-unsupported
 $AUTOCONF
 
 # This test requires Libtool >= 2.0.  Earlier Libtool does not
index 4c68108..bd4932f 100644 (file)
@@ -46,6 +46,14 @@ $PERL -V || st=1
 # happen with older perl installation, or on MinGW/MSYS.
 $PERL -e 'use TAP::Parser; print $TAP::Parser::VERSION, "\n"' || :
 
+# It's OK if the selected Lex and Yacc programs don't know how to print
+# the version number or the help screen; those are usually available only
+# for Flex and Bison.
+$LEX --version || :
+$LEX --help || :
+$YACC --version || :
+$YACC --help || :
+
 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
index 526e29c..92e8440 100644 (file)
@@ -23,7 +23,6 @@ required='cc libtoolize'
 
 cat >>configure.ac <<'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_AR
 AC_PROG_LIBTOOL
 AM_PATH_PYTHON
@@ -67,7 +66,6 @@ cd build
 ../configure --prefix="$instdir" PYTHON="echo" \
              am_cv_python_pythondir="$instdir/python" \
              am_cv_python_pyexecdir="$instdir/pyexec"
-$MAKE
 
 nulldirs='bindir= libdir= pyexecdir='
 null_install
index 26e6c42..73296f5 100644 (file)
@@ -23,7 +23,6 @@ required=cc
 
 cat >>configure.ac <<'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_AR
 AC_PROG_RANLIB
 AM_PATH_PYTHON
@@ -66,7 +65,6 @@ cd build
 ../configure --prefix="$instdir" PYTHON="echo" \
              am_cv_python_pythondir="$instdir/python" \
              am_cv_python_pyexecdir="$instdir/pyexec"
-$MAKE
 
 nulldirs='bindir= libdir= pyexecdir='
 null_install
index d4340e4..258f6af 100644 (file)
@@ -25,7 +25,6 @@ required='cc lex'
 cat >> configure.ac << 'END'
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_PROG_LEX
 AC_OUTPUT
 END
@@ -87,7 +86,9 @@ c_outputs='zardoz.c bar-quux.c sub/foo-zardoz.c sub/dir/quux.c'
 
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE -a
+# FIXME: stop disabling the warnings in the 'unsupported' category
+# FIXME: once the 'subdir-objects' option has been mandatory.
+$AUTOMAKE -a -Wno-unsupported
 
 for vpath in : false; do
 
diff --git a/t/lex-multiple.sh b/t/lex-multiple.sh
new file mode 100644 (file)
index 0000000..e804bb2
--- /dev/null
@@ -0,0 +1,107 @@
+#! /bin/sh
+# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that we can build a program using several lexers at once
+# (assuming Flex is used).  That is a little tricky, but possible.
+# See:
+# <http://lists.gnu.org/archive/html/automake/2010-10/msg00081.html>
+# <http://lists.gnu.org/archive/html/automake/2009-03/msg00061.html>
+
+required='cc flex'
+. test-init.sh
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_LEX
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = zardoz
+
+zardoz_SOURCES = main.c
+# Convenience libraries.
+noinst_LIBRARIES = liblex.a liblex-foo.a liblex-bar.a
+zardoz_LDADD = $(noinst_LIBRARIES)
+
+liblex_a_SOURCES = 0.l
+
+# We need the output to always be named 'lex.yy.c', in order for
+# ylwrap to pick it up.
+liblex_foo_a_LFLAGS = -Pfoo -olex.yy.c
+liblex_foo_a_SOURCES = a.l
+
+# Ditto.
+liblex_bar_a_LFLAGS = -Pbar_ -olex.yy.c
+liblex_bar_a_SOURCES = b.l
+END
+
+cat > main.c << 'END'
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main (int argc, char *argv[])
+{
+  if (argc != 2)
+    abort ();
+  else if (!strcmp(argv[1], "--vanilla"))
+    return (yylex () != 121);
+  else if (!strcmp(argv[1], "--foo"))
+    return (foolex () != 121);
+  else if (!strcmp(argv[1], "--bar"))
+    return (bar_lex () != 121);
+  else
+    abort ();
+}
+END
+
+cat > 0.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"VANILLA" { printf (":%s:\n", yytext); return 121; }
+. { printf (":%s:\n", yytext); return 1; }
+%%
+/* Avoid possible link errors. */
+int yywrap (void) { return 1; }
+END
+
+sed 's/VANILLA/FOO/' 0.l > a.l
+sed 's/VANILLA/BAR/' 0.l > b.l
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+$MAKE
+
+if ! cross_compiling; then
+  echo VANILLA | ./zardoz --vanilla
+  echo FOO | ./zardoz --foo
+  echo BAR | ./zardoz --bar
+  ./zardoz --vanilla </dev/null && exit 1
+  echo BAR | ./zardoz --foo && exit 1
+  : For shells with busted 'set -e'.
+fi
+
+yl_distcheck
+
+:
index 3282350..75e4f0c 100644 (file)
@@ -22,7 +22,6 @@ required='cc lex'
 
 cat >>configure.ac <<\END
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_PROG_LEX
 AC_OUTPUT
 END
index 13c8239..232f77d 100644 (file)
--- a/t/lex5.sh
+++ b/t/lex5.sh
@@ -21,7 +21,6 @@ required='cc lex'
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_LEX
 AC_OUTPUT
 END
index fdca575..1a4cf23 100644 (file)
@@ -22,7 +22,6 @@ required=cc
 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])
@@ -55,7 +54,6 @@ 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
index fb8c194..5653280 100644 (file)
@@ -28,6 +28,10 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
+# FIXME: stop disabling the warnings in the 'unsupported' category
+# FIXME: once the 'subdir-objects' option has been mandatory.
+AUTOMAKE_OPTIONS = -Wno-unsupported
+
 lib_LTLIBRARIES = lib0.la liba/liba.la
 lib0_la_SOURCES = 0.c
 liba_liba_la_SOURCES = liba/a.c
index 7a613dc..411d2bb 100644 (file)
@@ -24,7 +24,6 @@ required='cc libtoolize'
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_AR
 AC_LIBTOOL_DLOPEN
 AM_PROG_LIBTOOL
index 98b523b..85be517 100644 (file)
@@ -64,7 +64,7 @@ run_make CXX=false
 
 # Sanity check.
 rm -f foo foo.exe
-run_make CC=false && exit 99
+run_make CC=false && fatal_ '"make CC=false" succeeded unexpectedly'
 
 $MAKE distclean
 
@@ -83,6 +83,6 @@ run_make CC=false
 
 # Sanity check.
 rm -f foo foo.exe
-run_make CXX=false && exit 99
+run_make CXX=false && fatal_ '"make CXX=false" succeeded unexpectedly'
 
 :
index fb2e444..5525cfd 100644 (file)
@@ -71,10 +71,10 @@ t/get-sysconf.sh \
 $(perl_TESTS) \
 t/instspc.tap \
 t/aclocal.sh \
-t/acloca10.sh \
 t/aclocal-I-order-1.sh \
 t/aclocal-I-order-2.sh \
 t/aclocal-I-order-3.sh \
+t/aclocal-I-and-install.sh \
 t/aclocal-acdir.sh \
 t/aclocal-amflags.sh \
 t/aclocal-autoconf-version-check.sh \
@@ -132,6 +132,7 @@ t/aminit-moreargs-deprecation.sh \
 t/amassign.sh \
 t/am-config-header.sh \
 t/am-prog-cc-stdc.sh \
+t/am-prog-cc-c-o.sh \
 t/am-macro-not-found.sh \
 t/amopt.sh \
 t/amopts-location.sh \
@@ -207,8 +208,11 @@ t/canon7.sh \
 t/canon8.sh \
 t/canon-name.sh \
 t/ccnoco.sh \
-t/ccnoco2.sh \
+t/ccnoco-lib.sh \
+t/ccnoco-lt.sh \
 t/ccnoco3.sh \
+t/ccnoco4.sh \
+t/ccnoco-deps.sh \
 t/check.sh \
 t/check2.sh \
 t/check4.sh \
@@ -383,6 +387,9 @@ t/destdir.sh \
 t/dir-named-obj-is-bad.sh \
 t/discover.sh \
 t/dist-formats.tap \
+t/dist-lzma.sh \
+t/dist-tarZ.sh \
+t/dist-shar.sh \
 t/dist-auxdir-many-subdirs.sh \
 t/dist-auxfile-2.sh \
 t/dist-auxfile.sh \
@@ -568,6 +575,7 @@ t/lex-header.sh \
 t/lex-lib.sh \
 t/lex-lib-external.sh \
 t/lex-libobj.sh \
+t/lex-multiple.sh \
 t/lex-noyywrap.sh \
 t/lex-clean-cxx.sh \
 t/lex-clean.sh \
@@ -653,7 +661,6 @@ 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 \
@@ -865,6 +872,10 @@ t/pr401.sh \
 t/pr401b.sh \
 t/pr401c.sh \
 t/prefix.sh \
+t/preproc-basics.sh \
+t/preproc-c-compile.sh \
+t/preproc-demo.sh \
+t/preproc-errmsg.sh \
 t/primary.sh \
 t/primary2.sh \
 t/primary3.sh \
@@ -953,7 +964,9 @@ t/remake-macrodir.sh \
 t/remake-timing-bug-pr8365.sh \
 t/reqd2.sh \
 t/repeated-options.sh \
+t/rm-f-probe.sh \
 t/rulepat.sh \
+t/self-check-cc-no-c-o.sh \
 t/self-check-configure-help.sh \
 t/self-check-dir.tap \
 t/self-check-exit.tap \
@@ -993,7 +1006,7 @@ t/spell.sh \
 t/spell2.sh \
 t/spell3.sh \
 t/spelling.sh \
-t/spy.sh \
+t/spy-double-colon.sh \
 t/spy-rm.tap \
 t/stdinc.sh \
 t/stamph2.sh \
@@ -1152,9 +1165,9 @@ t/tags.sh \
 t/tags2.sh \
 t/tagsub.sh \
 t/tags-pr12372.sh \
-t/tar.sh \
-t/tar2.sh \
-t/tar3.sh \
+t/tar-ustar.sh \
+t/tar-pax.sh \
+t/tar-opts-errors.sh \
 t/tar-ustar-id-too-high.sh \
 t/tar-override.sh \
 t/target-cflags.sh \
@@ -1164,12 +1177,14 @@ t/tests-environment-and-log-compiler.sh \
 t/txinfo-absolute-srcdir-pr408.sh \
 t/txinfo-add-missing-and-dist.sh \
 t/txinfo-bsd-make-recurs.sh \
+t/txinfo-builddir.sh \
 t/txinfo-clean.sh \
 t/txinfo-dvi-recurs.sh \
 t/txinfo-info-in-srcdir.sh \
 t/txinfo-makeinfo-error-no-clobber.sh \
 t/txinfo-many-output-formats.sh \
 t/txinfo-many-output-formats-vpath.sh \
+t/txinfo-nodist-info.sh \
 t/txinfo-no-clutter.sh \
 t/txinfo-no-extra-dist.sh \
 t/txinfo-no-installinfo.sh \
@@ -1241,10 +1256,10 @@ t/werror3.sh \
 t/werror4.sh \
 t/whoami.sh \
 t/xsource.sh \
-t/yacc4.sh \
-t/yaccdry.sh \
-t/yaccpp.sh \
-t/yaccvpath.sh \
+t/yacc-misc.sh \
+t/yacc-dry.sh \
+t/yacc-cxx-grepping.sh \
+t/yacc-vpath.sh \
 t/yacc-auxdir.sh \
 t/yacc-basic.sh \
 t/yacc-cxx.sh \
index b9670cb..bae3d49 100644 (file)
@@ -35,6 +35,7 @@ lib_LTLIBRARIES = liba1.la sub/liba2.la
 pkglib_LTLIBRARIES = liba1.la
 nobase_lib_LTLIBRARIES = sub/liba2.la
 endif
+AUTOMAKE_OPTIONS = subdir-objects
 END
 
 libtoolize
index e58bba7..8c8098b 100644 (file)
@@ -35,6 +35,8 @@ noinst_LTLIBRARIES = foo.la zoo.d/old2.la
 
 $(srcdir)/zoo_d_old2_la.c: $(srcdir)/old_la.c
        cp $(srcdir)/old_la.c $@
+
+AUTOMAKE_OPTIONS = -Wno-unsupported
 END
 
 cat > foo.c << 'END'
index 82ad9fc..de87274 100644 (file)
@@ -27,6 +27,7 @@ AC_OUTPUT
 END
 
 cat >Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
 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
index 64f103c..7b924a3 100644 (file)
@@ -27,6 +27,7 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
 ## 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)
index ef19e69..d27a244 100644 (file)
@@ -26,7 +26,6 @@ AC_INIT([$me], [1.0])
 AM_INIT_AUTOMAKE([-Wno-extra-portability])
 AC_CONFIG_FILES([$makefiles])
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_PROG_CXX
 AC_PROG_RANLIB
 AC_OUTPUT
@@ -55,15 +54,8 @@ cat - libMakefile.am > libMakefile2.am << 'END'
 AUTOMAKE_OPTIONS = no-dependencies
 END
 
-# Make sure 'compile' is required.
-for m in $makefiles; do
-  AUTOMAKE_fails $m
-  $EGREP " required file.* '(compile|\./compile)'" stderr
-done
-
 makefiles=$(for mkf in $makefiles; do echo $mkf.in; done)
 
-: > compile
 $AUTOMAKE
 
 # Sanity check.
index 764d9fb..b6bf6b9 100644 (file)
@@ -43,7 +43,6 @@ EOF
 
 cat >>configure.ac <<'EOF'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 EOF
 
index f302042..89094de 100644 (file)
@@ -45,7 +45,6 @@ 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
@@ -118,7 +117,7 @@ mv -f src/t src/Makefile.am
 ## Test using LIBOBJS from a sibling directory. ##
 ## -------------------------------------------- ##
 
-sed 's/#x //; s/lib\/Makefile //' configure.ac >configure.tmp
+sed 's/lib\/Makefile //' configure.ac >configure.tmp
 mv -f configure.tmp configure.ac
 
 cat >Makefile.am <<'EOF'
index 3fa2ad1..cf7a698 100644 (file)
@@ -45,7 +45,6 @@ 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
@@ -118,7 +117,7 @@ mv -f src/t src/Makefile.am
 ## Test using LTLIBOBJS from a sibling directory. ##
 ## ---------------------------------------------- ##
 
-sed 's/#x //; s/lib\/Makefile //' configure.ac >configure.tmp
+sed 's/lib\/Makefile //' configure.ac >configure.tmp
 mv -f configure.tmp configure.ac
 
 cat >Makefile.am <<'EOF'
index 07c755d..22e5876 100644 (file)
@@ -47,7 +47,6 @@ 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
@@ -120,7 +119,7 @@ mv -f src/t src/Makefile.am
 ## Test using ALLOCA from a sibling directory. ##
 ## ------------------------------------------- ##
 
-sed 's/#x //; s/lib\/Makefile //' configure.ac >configure.tmp
+sed 's/lib\/Makefile //' configure.ac >configure.tmp
 mv -f configure.tmp configure.ac
 
 cat >Makefile.am <<'EOF'
diff --git a/t/preproc-basics.sh b/t/preproc-basics.sh
new file mode 100644 (file)
index 0000000..6000d88
--- /dev/null
@@ -0,0 +1,106 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Basic tests for '%...%' preprocessing in included Makefile fragments:
+#   %reldir%        a.k.a.  %D%
+#   %canon_reldir%  a.k.a.  %C%
+
+. test-init.sh
+
+cat >> configure.ac << 'END'
+AC_CONFIG_FILES([zot/Makefile])
+AC_OUTPUT
+END
+
+mkdir foo foo/bar foo/foobar zot
+
+cat > Makefile.am << 'END'
+include $(top_srcdir)/foo/local.mk
+include $(srcdir)/foo/foobar/local.mk
+include local.mk
+END
+
+cat > zot/Makefile.am << 'END'
+include $(top_srcdir)/zot/local.mk
+
+## Check that '%canon_reldir%' doesn't remain overridden
+## by the previous include.
+%canon_reldir%_zot_whoami:
+       echo "I am %reldir%/Makefile.am" >$@
+
+include $(top_srcdir)/top.mk
+include ../reltop.mk
+END
+
+cat > local.mk << 'END'
+%canon_reldir%_whoami:
+       echo "I am %reldir%/local.mk" >$@
+END
+
+cat > top.mk << 'END'
+%canon_reldir%_top_whoami:
+       echo "I am %reldir%/top.mk" >$@
+END
+
+cat > reltop.mk << 'END'
+%C%_reltop_whoami:
+       echo "I am %D%/reltop.mk" >$@
+END
+
+cp local.mk foo
+cp local.mk foo/bar
+cp local.mk foo/foobar
+cp local.mk zot
+
+cat >> foo/local.mk << 'END'
+include %reldir%/bar/local.mk
+## Check that '%canon_reldir%' doesn't remain overridden by the
+## previous include.  The duplicated checks are done to ensure that
+## Automake substitutes all pre-processing occurrences on a line,
+## not just the first one.
+test-%reldir%:
+       test '%reldir%'       = foo  &&  test '%reldir%' = foo
+       test '%D%'            = foo  &&  test '%D%'      = foo
+       test '%canon_reldir%' = foo  &&  test '%C%'      = foo
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+check ()
+{
+  test $# -eq 2 || fatal_ "made_into(): bad usage"
+  target=$1 contents=$2
+  rm -f "$target" \
+   && $MAKE "$target" \
+   && test x"$(cat "$target")" = x"$contents"
+}
+
+check whoami "I am local.mk"
+check foo_whoami "I am foo/local.mk"
+check foo_bar_whoami "I am foo/bar/local.mk"
+check foo_foobar_whoami "I am foo/foobar/local.mk"
+$MAKE test-foo
+
+cd zot
+check whoami "I am local.mk"
+check ___top_whoami "I am ../top.mk"
+check ___reltop_whoami "I am ../reltop.mk"
+check zot_whoami "I am Makefile.am"
+
+:
diff --git a/t/preproc-c-compile.sh b/t/preproc-c-compile.sh
new file mode 100644 (file)
index 0000000..7c398a8
--- /dev/null
@@ -0,0 +1,118 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test pre-processing substitutions '%reldir%' and '%canon_reldir%'
+# with C compilation and subdir objects.
+
+require=cc
+. test-init.sh
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_CONFIG_FILES([zot/Makefile])
+AC_OUTPUT
+END
+
+mkdir foo
+mkdir foo/bar
+mkdir foo/foobar
+mkdir zot
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+SUBDIRS = zot
+bin_PROGRAMS =
+
+include $(top_srcdir)/foo/local.mk
+include $(srcdir)/foo/foobar/local.mk
+include local.mk
+
+check-local:
+       is $(bin_PROGRAMS) == \
+         foo/mumble2$(EXEEXT) \
+         foo/bar/mumble$(EXEEXT) \
+         foo/foobar/mumble$(EXEEXT) \
+         mumble$(EXEEXT)
+       test '$(mumble_SOURCES)' = one.c
+       test '$(foo_mumble2_SOURCES)' = foo/one.c
+       test '$(foo_bar_mumble_SOURCES)' = foo/bar/one.c
+       test '$(foo_foobar_mumble_SOURCES)' = foo/foobar/one.c
+       test -f mumble$(EXEEXT)
+       test -f foo/mumble2$(EXEEXT)
+       test -f foo/bar/mumble$(EXEEXT)
+       test -f foo/foobar/mumble$(EXEEXT)
+       test -f zot/mumble$(EXEEXT)
+       : Test some of the object files too.
+       test -f one.$(OBJEXT)
+       test -f foo/foobar/one.$(OBJEXT)
+       test -f zot/one.$(OBJEXT)
+END
+
+cat > zot/Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS =
+include $(top_srcdir)/zot/local.mk
+
+test:
+       test '$(bin_PROGRAMS)' = mumble$(EXEEXT)
+       test '$(mumble_SOURCES)' = one.c
+check-local: test
+END
+
+cat > local.mk << 'END'
+bin_PROGRAMS += %reldir%/mumble
+%canon_reldir%_mumble_SOURCES = %reldir%/one.c
+END
+
+echo 'int main (void) { return 0; }' > one.c
+
+sed 's/mumble/mumble2/' local.mk > foo/local.mk
+cp local.mk foo/bar
+cp local.mk foo/foobar
+cp local.mk zot
+echo "include %reldir%/bar/local.mk" >> foo/local.mk
+
+cp one.c foo
+cp one.c foo/bar
+cp one.c foo/foobar
+cp one.c zot
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+$MAKE
+$MAKE check-local
+if ! cross_compiling; then
+  ./mumble
+  ./foo/mumble2
+  ./foo/bar/mumble
+  ./foo/foobar/mumble
+  ./zot/mumble
+fi
+
+(cd zot && $MAKE test)
+
+# GNU install refuses to override a just-installed file; since we
+# have plenty of 'mumble' dummy programs to install in the same
+# location, such "overridden installations" are not a problem for
+# us; so just force the use the 'install-sh' script.
+ac_cv_path_install=$(pwd)/install-sh; export ac_cv_path_install
+$MAKE distcheck
+
+:
diff --git a/t/preproc-demo.sh b/t/preproc-demo.sh
new file mode 100644 (file)
index 0000000..1f29057
--- /dev/null
@@ -0,0 +1,229 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Demo of a package using pre-processing substitutions '%reldir%' and
+# '%canon_reldir%', and their respective shorthands '%D%' and '%C%'.
+
+am_create_testdir=empty
+required=cc
+. test-init.sh
+
+if cross_compiling; then
+  WE_ARE_CROSS_COMPILING=yes
+else
+  WE_ARE_CROSS_COMPILING=no
+fi
+export WE_ARE_CROSS_COMPILING
+
+SAFE_PRINT_FAIL=; unset SAFE_PRINT_FAIL
+
+cat > configure.ac << 'END'
+AC_INIT([GNU Demo], [0.7], [bug-automake@gnu.org])
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE([1.12.6 foreign subdir-objects -Wall])
+AM_CONDITIONAL([NATIVE_BUILD], [test $WE_ARE_CROSS_COMPILING != yes])
+AC_CONFIG_FILES([Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+mkdir build-aux lib lib/tests src tests
+
+## Top level.
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS =
+check_PROGRAMS =
+noinst_LIBRARIES =
+AM_CPPFLAGS =
+AM_TESTS_ENVIRONMENT =
+CLEANFILES =
+EXTRA_DIST =
+LDADD =
+TESTS =
+
+include $(srcdir)/src/progs.am
+include $(srcdir)/lib/gnulib.am
+include $(srcdir)/tests/check.am
+END
+
+## Src subdir.
+
+cat > src/progs.am <<'END'
+bin_PROGRAMS += %reldir%/hello
+
+bin_PROGRAMS += %D%/goodbye
+%canon_reldir%_goodbye_SOURCES = %D%/hello.c
+%C%_goodbye_CPPFLAGS = $(AM_CPPFLAGS) -DGREETINGS='"Goodbye"'
+
+# The testsuite should have access to our built programs.
+AM_TESTS_ENVIRONMENT += \
+  PROGDIR='$(top_builddir)/%reldir%'; \
+  export PROGDIR; \
+  PATH='$(abs_builddir)/%reldir%'$(PATH_SEPARATOR)$$PATH; \
+  export PATH;
+END
+
+cat > src/hello.c <<'END'
+#include "safe-print.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+#ifndef GREETINGS
+#  define GREETINGS "Hello"
+#endif
+
+int
+main (void)
+{
+  safe_print (stdout, GREETINGS ", World!\n");
+  exit (EXIT_SUCCESS);
+}
+END
+
+## Lib subdir.
+
+cat > lib/gnulib.am << 'END'
+noinst_LIBRARIES += %D%/libgnu.a
+
+AM_CPPFLAGS += -I%D% -I$(top_srcdir)/%D%
+LDADD += $(noinst_LIBRARIES)
+
+%C%_libgnu_a_SOURCES = \
+  %D%/safe-print.c \
+  %D%/safe-print.h
+
+if NATIVE_BUILD
+include %D%/tests/gnulib-check.am
+endif
+END
+
+cat > lib/safe-print.c <<'END'
+#include "safe-print.h"
+#include <string.h>
+#include <stdlib.h>
+
+void
+safe_print (FILE *fp, const char * str)
+{
+  if (fprintf (fp, "%s", str) != strlen (str)
+       || fflush (fp) != 0 || ferror (fp))
+    {
+      fprintf (stderr, "I/O error\n");
+      exit (EXIT_FAILURE);
+    }
+}
+
+END
+
+cat > lib/safe-print.h <<'END'
+#include <stdio.h>
+void safe_print (FILE *, const char *);
+END
+
+## Lib/Tests (sub)subdir.
+
+cat > lib/tests/gnulib-check.am <<'END'
+check_PROGRAMS += %D%/safe-print-test
+TESTS += $(check_PROGRAMS)
+AM_TESTS_ENVIRONMENT += EXEEXT='$(EXEEXT)'; export EXEEXT;
+END
+
+cat > lib/tests/safe-print-test.c <<'END'
+#include "safe-print.h"
+int
+main (void)
+{
+  safe_print (stdout, "dummy\n");
+  return 0;
+}
+END
+
+## Tests subdir.
+
+cat > tests/check.am <<'END'
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
+
+handwritten_TESTS = \
+  %D%/hello.sh \
+  %D%/built.sh
+TESTS += $(handwritten_TESTS)
+EXTRA_DIST += $(handwritten_TESTS)
+
+TESTS += %D%/goodbye.sh
+CLEANFILES += %D%/goodbye.sh
+%D%/goodbye.sh: %D%/hello.sh
+       $(MKDIR_P) %D%
+       rm -f $@ $@-t
+       sed -e 's/hello/goodbye/' \
+           -e 's/Hello/Goodbye/' \
+          < $(srcdir)/%D%/hello.sh >$@-t
+       chmod a-w,a+x $@-t && mv -f $@-t $@
+END
+
+cat > tests/hello.sh <<'END'
+#!/bin/sh
+set -x -e
+if test "$WE_ARE_CROSS_COMPILING" = yes; then
+  echo Skipping: cannot run in cross-compilation mode
+  exit 77
+else
+  hello || exit 1
+  test "`hello`" = 'Hello, World!' || exit 1
+fi
+END
+
+cat > tests/built.sh <<'END'
+#!/bin/sh
+set -x
+test -n "$PROGDIR" || exit 99
+test -f "$PROGDIR/hello$EXEEXT" || exit 1
+test -x "$PROGDIR/hello$EXEEXT" || exit 1
+test -f "$PROGDIR/goodbye$EXEEXT" || exit 1
+test -x "$PROGDIR/goodbye$EXEEXT" || exit 1
+END
+
+
+## Go.
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing --copy
+test ! -e compile
+test -f build-aux/compile
+
+./configure
+
+$MAKE
+
+run_make -O check VERBOSE=x
+cat tests/built.log
+cat tests/hello.log
+cat tests/goodbye.log
+if cross_compiling; then
+  test ! -e lib/tests/safe-print-test.log
+  count_test_results total=3 pass=1 fail=0 xpass=0 xfail=0 skip=2 error=0
+else
+  count_test_results total=4 pass=4 fail=0 xpass=0 xfail=0 skip=0 error=0
+fi
+
+$MAKE distcheck
+
+:
diff --git a/t/preproc-errmsg.sh b/t/preproc-errmsg.sh
new file mode 100644 (file)
index 0000000..704562d
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Tests error messages when '%reldir%' and '%canon_reldir%' substitutions
+# (and their shorthands '%D%' and '%C%') are involved.
+
+. test-init.sh
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AM_PROG_AR
+END
+
+: > ar-lib
+
+mkdir sub sub/sub2
+
+cat > Makefile.am <<'END'
+%canon_reldir%_x1_SOURCES = bar.c
+include sub/local.mk
+END
+
+cat > sub/local.mk <<'END'
+AUTOMAKE_OPTIONS = -Wno-extra-portability
+include %D%/sub2/more.mk
+noinst_LIBRARIES = %reldir%-one.a %D%-two.a
+%C%_x2_SOURCES = foo.c
+END
+
+cat > sub/sub2/more.mk <<'END'
+%C%_UNDEFINED +=
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+
+cat > expected << 'END'
+sub/sub2/more.mk:1: sub_sub2_UNDEFINED must be set with '=' before using '+='
+Makefile.am:2: 'sub/local.mk' included from here
+sub/local.mk:2: 'sub/sub2/more.mk' included from here
+sub/local.mk:3: 'sub-one.a' is not a standard library name
+sub/local.mk:3: did you mean 'libsub-one.a'?
+Makefile.am:2: 'sub/local.mk' included from here
+sub/local.mk:3: 'sub-two.a' is not a standard library name
+sub/local.mk:3: did you mean 'libsub-two.a'?
+Makefile.am:2: 'sub/local.mk' included from here
+Makefile.am:1: variable 'x1_SOURCES' is defined but no program or
+Makefile.am:1: library has 'x1' as canonical name (possible typo)
+sub/local.mk:4: variable 'sub_x2_SOURCES' is defined but no program or
+sub/local.mk:4: library has 'sub_x2' as canonical name (possible typo)
+Makefile.am:2: 'sub/local.mk' included from here
+END
+
+# We need to break these substitutions into multiple sed invocations
+# to avoid spuriously triggering the 'sc_tests_logs_duplicate_prefixes'
+# maintainer check.
+sed -e '/warnings are treated as errors/d' stderr > t1
+sed -e 's/: warning:/:/' t1 > t2
+sed -e 's/: error:/:/' t2 > t3
+sed -e 's/  */ /g' t3 > obtained
+
+diff expected obtained
+
+:
index a67e7c2..faf1d5a 100644 (file)
@@ -178,13 +178,12 @@ $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
-check_install -e
+check_install pythondir="$py_site" pyexecdir="$py_site" \
+              AM_MAKEFLAGS="pythondir='$py_site' pyexecdir='$py_site'"
 test ! -e bad-prefix
 $MAKE test-run
-check_uninstall -e
-unset pythondir pyexecdir
+check_uninstall pythondir="$py_site" pyexecdir="$py_site" \
+                AM_MAKEFLAGS="pythondir='$py_site' pyexecdir='$py_site'"
 
 # Also check that the distribution is self-contained, for completeness.
 $MAKE distcheck
index d17fd57..e054c20 100644 (file)
@@ -30,7 +30,7 @@ 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.
+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
index 68d1883..9cd3bc9 100644 (file)
@@ -16,7 +16,7 @@
 
 # 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.sh'.
+# about this situation.  See also related test 'aclocal-deleted-header.sh'.
 
 . test-init.sh
 
index af1897b..95963c5 100644 (file)
@@ -24,7 +24,6 @@ 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
@@ -58,7 +57,7 @@ int main (void)
 }
 END
 
-cp "$am_scriptdir"/compile "$am_scriptdir"/test-driver .
+cp "$am_scriptdir"/test-driver .
 
 $ACLOCAL
 $AUTOMAKE --foreign --foreign -Wall 2>stderr || { cat stderr >&2; exit 1; }
diff --git a/t/rm-f-probe.sh b/t/rm-f-probe.sh
new file mode 100644 (file)
index 0000000..1cb220a
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Verify our probe that checks that "rm -f" doesn't complain if called
+# without file operands works as expected.  See automake bug#10828.
+
+. test-init.sh
+
+echo AC_OUTPUT >> configure.ac
+: > Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+mkdir bin
+cat > bin/rm <<'END'
+#!/bin/sh
+set -e; set -u;
+PATH=$original_PATH; export PATH
+rm_opts=
+while test $# -gt 0; do
+  case $1 in
+    -*) rm_opts="$rm_opts $1";;
+     *) break;;
+  esac
+  shift
+done
+if test $# -eq 0; then
+  echo "Oops, fake rm called without arguments" >&2
+  exit 1
+else
+  exec rm $rm_opts "$@"
+fi
+END
+chmod a+x bin/rm
+
+original_PATH=$PATH
+PATH=$(pwd)/bin$PATH_SEPARATOR$PATH
+export PATH original_PATH
+
+rm -f && exit 99 # Sanity check.
+
+./configure 2>stderr && { cat stderr >&2; exit 1; }
+cat stderr >&2
+
+grep "'rm' program.* unable to run without file operands" stderr
+$FGREP "tell bug-automake@gnu.org about your system" stderr
+$FGREP "install GNU coreutils" stderr
+$EGREP "(^| |')ACCEPT_INFERIOR_RM_PROGRAM($| |')" stderr
+
+ACCEPT_INFERIOR_RM_PROGRAM=yes; export ACCEPT_INFERIOR_RM_PROGRAM
+
+./configure
+$MAKE
+$MAKE distcheck
+
+# For the sake of our exit trap.
+PATH=$original_PATH; export PATH
+
+:
diff --git a/t/self-check-cc-no-c-o.sh b/t/self-check-cc-no-c-o.sh
new file mode 100644 (file)
index 0000000..69809b7
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that our fake "C compiler" that doesn't grasp the '-c' and
+# '-o' command-line options passed together, used to enhance testsuite
+# coverage.
+
+required=gcc # Our fake compiler uses gcc.
+am_create_testdir=empty
+. test-init.sh
+
+CC=$am_testaux_builddir/cc-no-c-o; export CC
+
+echo 'int main (void) { return 0; }' > foo.c
+$CC -c foo.c
+test -f foo.o || test -f foo.obj
+$CC -c -o bar.o foo.c 2>stderr && { cat stderr >&2; exit 1; }
+cat stderr >&2
+grep "both '-o' and '-c' seen on the command line" stderr
+test ! -e bar.o && test ! -e bar.obj
+
+:
index 1614c22..52a3862 100644 (file)
@@ -25,7 +25,6 @@ mkdir sub
 cat >>configure.ac <<'EOF'
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 EOF
 
index fdafe94..3bfc400 100644 (file)
@@ -22,7 +22,6 @@ required='cc lex'
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_PROG_CC_C_O
 AC_PROG_LEX
 AC_CONFIG_FILES([sub/Makefile])
 AC_OUTPUT
index cfbaaab..69a7d60 100644 (file)
@@ -26,7 +26,6 @@ cat >>configure.ac <<'EOF'
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
 AM_PROG_AR
-AM_PROG_CC_C_O
 AC_PROG_LIBTOOL
 AC_OUTPUT
 EOF
index bc0f822..4018ff2 100644 (file)
@@ -91,7 +91,6 @@ do_and_check_verbose_build ()
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_PROG_CC_C_O
 AC_PROG_F77
 AC_PROG_FC
 AC_PROG_LEX
index 611965e..4a5f631 100644 (file)
@@ -22,7 +22,6 @@
 cat >>configure.ac <<'EOF'
 AM_SILENT_RULES
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 EOF
 
index 8344b65..cbe21d4 100644 (file)
@@ -22,7 +22,7 @@ required='cc yacc'
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_PROG_CC_C_O
+AC_PROG_CC
 AC_PROG_YACC
 AC_CONFIG_FILES([sub/Makefile])
 AC_OUTPUT
index a010776..1054f18 100644 (file)
@@ -29,7 +29,7 @@ AC_PROG_CC
 END
 
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE -Wno-unsupported
 
 grep '^z\.o: x/z\.c$' Makefile.in
 
index 89ac206..c1b9cd5 100644 (file)
@@ -64,7 +64,6 @@ AC_PROG_RANLIB
 AC_PROG_LIBTOOL
 AM_PROG_UPC
 AC_PROG_OBJC
-AM_PROG_CC_C_O
 END
 
 cat > Makefile.am <<'END'
index 77d837a..8178b34 100644 (file)
@@ -22,7 +22,6 @@
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_CONDITIONAL([BAR], [true])
 END
 
@@ -36,8 +35,6 @@ foo_CFLAGS = -DFOO
 foo_SOURCES = foo.c
 END
 
-: > compile
-
 $ACLOCAL
 $AUTOMAKE
 
index ee3786e..0a40b5d 100644 (file)
@@ -21,7 +21,6 @@ required='cc native'
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 END
 
index 3bb785b..5e51053 100644 (file)
@@ -23,7 +23,6 @@ required='cc native'
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 END
 
index 0ee90f1..4f3d3b0 100644 (file)
 
 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 = zzfoo zzbar
 zzfoo_SOURCES = sub/foo.c
 zzbar_SOURCES = bar.c
similarity index 100%
rename from t/spy.sh
rename to t/spy-double-colon.sh
index 29840ab..3b8dd2d 100644 (file)
 # 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>
+# See automake bug#10828.
+# Other references:
+# <http://lists.gnu.org/archive/html/bug-autoconf/2012-02/msg00002.html>
+# <http://austingroupbugs.net/view.php?id=542>
 
 am_create_testdir=empty
 . test-init.sh
index ddcd112..053ce41 100644 (file)
@@ -28,7 +28,6 @@ cat >> configure.ac << 'END'
 AM_PROG_AR
 AC_PROG_LIBTOOL
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 END
 
index df97f07..e244e3d 100644 (file)
@@ -26,7 +26,6 @@ required=cc
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_CONFIG_FILES([get-objext.sh:get-objext.in])
 AC_OUTPUT
 END
index 2431184..f595e68 100644 (file)
 # You 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.
+# Test of subdir objects with C and C++.
 
 . test-init.sh
 
-cat >> configure.ac << 'END'
+cat >> configure.ac <<'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
+AC_PROG_CXX
+AC_PROG_YACC
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
 END
 
+$ACLOCAL
+: > ylwrap
+
 cat > Makefile.am << 'END'
-AUTOMAKE_OPTIONS = subdir-objects
+SUBDIRS = sub
 bin_PROGRAMS = wish
-wish_SOURCES = generic/a.c generic/b.c
+wish_SOURCES = generic/a.c
+wish_SOURCES += another/z.cxx
 END
 
-$ACLOCAL
+mkdir sub
+cat > sub/Makefile.am << 'END'
+dream_SOURCES = generic/b.c more/r.y
+bin_PROGRAMS = dream
+END
+
+AUTOMAKE_fails
+grep "^Makefile\.am:3:.*'generic/a\.c'.* in a subdirectory" stderr
+grep "^Makefile\.am:[34]:.*'another/z\.cxx'.* in a subdirectory" stderr
+grep "^sub/Makefile\.am:1:.*'generic/b\.c'.* in a subdirectory" stderr
+grep "option 'subdir-objects' is disabled" stderr
+# Verbose tips should be given, but not too many times.
+for msg in \
+  "possible forward-incompatibility" \
+  "advi[sc]e.* 'subdir-objects' option throughout" \
+  "unconditionally.* object file.* same subdirectory" \
+; do
+  test $(grep -c "$msg" stderr) -eq 1
+done
+
+# Guard against stupid typos.
+grep 'subdir-object([^s]|$)' stderr && exit 1
+
+$AUTOMAKE -Wno-unsupported
+
+echo AUTOMAKE_OPTIONS = subdir-objects >> Makefile.am
+AUTOMAKE_fails
+grep "^Makefile\.am" stderr && exit 1
+grep "^sub/Makefile\.am:.*'generic/b\.c'.* in a subdirectory" stderr
+grep "option 'subdir-objects' is disabled" stderr
+
+sed 's/^AM_INIT_AUTOMAKE/&([subdir-objects])/' configure.ac > configure.tmp
+mv -f configure.tmp configure.ac
+$ACLOCAL --force
+$AUTOMAKE
+
+rm -f compile
 $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
+grep '^configure\.ac:[48]:.*install.*compile' stderr
 test -f compile
 
 grep '^generic/a\.\$(OBJEXT):' Makefile.in
-grep '[^/]a\.\$(OBJEXT)' Makefile.in && exit 1
+grep '^generic/b\.\$(OBJEXT):' sub/Makefile.in
+grep '^another/z\.\$(OBJEXT):' Makefile.in
+$EGREP '(^|[^/])[abz]\.\$(OBJEXT)' Makefile.in sub/Makefile.in && exit 1
 
 # Opportunistically test for a different bug.
-grep '^generic/b\.\$(OBJEXT):.*dirstamp' Makefile.in
+grep '^another/z\.\$(OBJEXT):.*dirstamp' Makefile.in
+grep '^generic/b\.\$(OBJEXT):.*dirstamp' sub/Makefile.in
 
 :
index 1be42a9..f3181d1 100644 (file)
@@ -16,7 +16,7 @@
 
 # PR 492: Test asm subdir-objects.
 
-required=gcc
+required='gcc -c-o'
 . test-init.sh
 
 cat > configure.ac << END
index 25cbf4e..2ff04b5 100644 (file)
@@ -31,7 +31,6 @@ required=cc
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 END
 
index 14970a0..deaa2b6 100644 (file)
 
 . test-init.sh
 
-cat >> configure.ac << 'END'
-AC_PROG_CC
-AM_PROG_CC_C_O
-END
+echo AC_PROG_CC >> configure.ac
 
 cat > Makefile.am << 'END'
 AUTOMAKE_OPTIONS = subdir-objects
index a8a435b..7476e47 100644 (file)
 
 . test-init.sh
 
-cat >> configure.ac << 'END'
-AC_PROG_CC
-AM_PROG_CC_C_O
-END
+echo AC_PROG_CC >> configure.ac
 
 cat > Makefile.am << 'END'
 AUTOMAKE_OPTIONS = subdir-objects
index b1b577d..dbbed30 100644 (file)
@@ -21,7 +21,6 @@
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_PROG_CXX
 AC_CONFIG_FILES([d1/Makefile d2/Makefile])
 AC_OUTPUT
@@ -41,11 +40,10 @@ END
 cat > d2/Makefile.am << 'END'
 END
 
-: > compile
 : > d2/z.c
 
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE -Wno-unsupported
 
 grep '\$(CC) .*\.\./d2/z\.c' d1/Makefile.in
 
index 5482304..4851423 100644 (file)
@@ -23,7 +23,6 @@ required=cc
 cat >> configure.ac << 'END'
 AC_CONFIG_FILES([generic/Makefile])
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 END
 
index 71755fd..0e7aa86 100644 (file)
@@ -21,7 +21,7 @@ required=cc
 . test-init.sh
 
 cat >> configure.ac << 'END'
-AM_PROG_CC_C_O
+AC_PROG_CC
 AC_OUTPUT
 END
 
index 2d997c7..de73cc2 100644 (file)
 
 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 = wish
 wish_SOURCES = foo.c generic/a.c
 END
index 51e1727..dd03008 100644 (file)
@@ -23,7 +23,6 @@ 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
index 639e415..9fc6761 100644 (file)
@@ -49,7 +49,7 @@ mkdir lib/src
 
 cat >lib/configure.ac <<'EOF'
 AC_INIT([lib], [2.3])
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE([subdir-objects])
 AC_PROG_RANLIB
 AC_PROG_YACC
 dnl This comes after YACC and RANLIB checks, deliberately.
index 6f59ac5..2b3d163 100644 (file)
@@ -62,7 +62,7 @@ mkdir lib/src
 
 cat >lib/configure.ac <<'EOF'
 AC_INIT([lib], [2.3])
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE([subdir-objects])
 AC_CONFIG_MACRO_DIR([../m4])
 AM_PROG_AR
 AC_PROG_RANLIB
@@ -91,7 +91,7 @@ int lib (void)
 EOF
 
 $ACLOCAL
-$AUTOCONF
+$AUTOCONF -Werror -Wall
 $AUTOMAKE -Wno-override
 
 cd lib
index e9f35c7..b862d88 100644 (file)
@@ -23,7 +23,6 @@ required=cc
 
 cat >>configure.ac <<EOF
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 EOF
 
@@ -54,18 +53,9 @@ 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
 
similarity index 100%
rename from t/tar3.sh
rename to t/tar-opts-errors.sh
similarity index 100%
rename from t/tar2.sh
rename to t/tar-pax.sh
similarity index 100%
rename from t/tar.sh
rename to t/tar-ustar.sh
index 3c7d720..01bcbce 100644 (file)
@@ -22,7 +22,6 @@ required=cc
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_OUTPUT
 END
 
diff --git a/t/txinfo-builddir.sh b/t/txinfo-builddir.sh
new file mode 100644 (file)
index 0000000..42d4112
--- /dev/null
@@ -0,0 +1,131 @@
+#! /bin/sh
+# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that info files are built in builddir when needed.
+# This test that this can be done through the so far undocumented
+# option 'info-in-builddir', as requested by at least GCC, GDB,
+# GNU binutils and the GNU bfd library.  See automake bug#11034.
+
+required='makeinfo tex texi2dvi'
+. test-init.sh
+
+if useless_vpath_rebuild; then
+  skip_ "$MAKE has brittle VPATH support"
+fi
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = info-in-builddir
+info_TEXINFOS = foo.texi subdir/bar.texi mu.texi
+subdir_bar_TEXINFOS = subdir/inc.texi
+CLEANFILES = mu.info
+
+# mu.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...
+check-local:
+       test ! -e mu.info
+       test -f ../mu.info
+END
+
+mkdir subdir
+
+cat > foo.texi << 'END'
+\input texinfo
+@setfilename foo.info
+@settitle foo
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+cat > mu.texi << 'END'
+\input texinfo
+@setfilename mu.info
+@settitle mu
+@node Top
+Mu mu mu.
+@bye
+END
+
+cat > subdir/bar.texi << 'END'
+\input texinfo
+@setfilename bar.info
+@settitle bar
+@node Top
+Hello walls.
+@include inc.texi
+@bye
+END
+
+echo "I'm included." > subdir/inc.texi
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+mkdir build
+cd build
+../configure
+$MAKE info
+test -f foo.info
+test -f subdir/bar.info
+test -f mu.info
+test -f ../stamp-vti
+test -f ../version.texi
+test ! -e ../foo.info
+test ! -e ../subdir/bar.info
+test ! -e ../mu.info
+$MAKE clean
+test -f foo.info
+test -f subdir/bar.info
+test ! -e mu.info
+test -f ../stamp-vti
+test -f ../version.texi
+
+# Make sure stamp-vti is older that version.texi.
+# (A common situation in a real tree).
+$sleep
+touch ../stamp-vti
+
+$MAKE distcheck
+# Being distributed, this file should have been rebuilt.
+test -f mu.info
+
+$MAKE distclean
+test -f ../stamp-vti
+test -f ../version.texi
+test -f foo.info
+test -f subdir/bar.info
+test ! -e mu.info
+
+../configure
+$MAKE maintainer-clean
+test ! -e ../stamp-vti
+test ! -e ../version.texi
+test ! -e stamp-vti
+test ! -e version.texi
+test ! -e foo.info
+test ! -e subdir/bar.info
+test ! -e mu.info
+
+:
diff --git a/t/txinfo-nodist-info.sh b/t/txinfo-nodist-info.sh
new file mode 100644 (file)
index 0000000..265587e
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that we can force generated '.info' info files not to be
+# distributed.
+
+required=makeinfo
+. test-init.sh
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = info-in-builddir
+info_TEXINFOS = foo.texi
+CLEANFILES = foo.info
+
+# To make distcheck work without requiring TeX and texi2dvi.
+dvi:
+
+# Do not distribute generated '.info' files.
+dist-info:
+       @:
+END
+
+mkdir subdir
+
+cat > foo.texi << 'END'
+\input texinfo
+@setfilename foo.info
+@settitle foo
+@node Top
+Hello walls.
+@include version.texi
+@bye
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a -Wno-override
+
+./configure
+$MAKE distdir
+ls -l . $distdir # For debugging.
+test ! -e foo.info
+test ! -e $distdir/foo.info
+$MAKE
+test -f foo.info
+$MAKE distdir
+ls -l $distdir # For debugging.
+test ! -f $distdir/foo.info
+$MAKE distcheck
+
+:
index c2b2797..6c2d9ce 100644 (file)
@@ -53,9 +53,12 @@ I'm included.
 END
 
 $ACLOCAL
-$AUTOMAKE --add-missing
 $AUTOCONF
 
+AUTOMAKE_run --add-missing -Wno-error
+grep "Makefile\.am:.*undocumented.* automake hack" stderr
+grep "Makefile\.am:.*'info-in-builddir' automake option" stderr
+
 mkdir build
 cd build
 ../configure
index bfad312..9daa82e 100644 (file)
@@ -41,7 +41,7 @@ Hello walls.
 END
 
 $ACLOCAL
-$AUTOMAKE --add-missing
+$AUTOMAKE --add-missing -Wno-obsolete
 $AUTOCONF
 
 mkdir build
index 369a759..aad0cb7 100644 (file)
@@ -53,9 +53,14 @@ Hello walls.
 END
 
 $ACLOCAL
-$AUTOMAKE --add-missing
 $AUTOCONF
 
+AUTOMAKE_fails --add-missing
+grep "Makefile\.am:.*undocumented.* automake hack" stderr
+grep "Makefile\.am:.*'info-in-builddir' automake option" stderr
+
+$AUTOMAKE --add-missing -Wno-obsolete
+
 mkdir build
 cd build
 ../configure
index 171632a..191a218 100644 (file)
@@ -50,7 +50,7 @@ Hello walls.
 END
 
 $ACLOCAL
-$AUTOMAKE --add-missing
+$AUTOMAKE --add-missing -Wno-error
 $AUTOCONF
 
 mkdir build
index f3e9054..f1ed99a 100644 (file)
@@ -22,7 +22,6 @@ required="valac cc pkg-config libtoolize GNUmake"
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_AR
 AC_PROG_RANLIB
 AC_PROG_LIBTOOL
@@ -32,6 +31,7 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
 lib_LIBRARIES = libmu.a
 lib_LTLIBRARIES = src/libzardoz.la
 libmu_a_SOURCES = mu.vala mu2.c mu.vapi mu2.h
@@ -76,7 +76,7 @@ int main ()
 }
 END
 
-mkdir src
+mkdir -p src
 cat > src/zardoz-foo.vala << 'END'
 using GLib;
 public class Foo {
index 7b7403d..1ac851e 100644 (file)
@@ -21,7 +21,6 @@ required='valac cc pkg-config GNUmake'
 
 cat >> configure.ac <<'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_VALAC([0.7.3])
 PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
 AC_OUTPUT
index ca65a4f..88f67a8 100644 (file)
@@ -23,7 +23,6 @@ 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
@@ -40,6 +39,7 @@ public class Zardoz {
 END
 
 cat > 'Makefile.am' <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
 bin_PROGRAMS = src/zardoz
 src_zardoz_CFLAGS = $(GOBJECT_CFLAGS)
 src_zardoz_LDADD = $(GOBJECT_LIBS)
index 3461365..add07cf 100644 (file)
@@ -23,7 +23,6 @@ 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])
index 5c1f4c6..cf7980d 100644 (file)
@@ -23,7 +23,6 @@ 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])
index 9def253..ce5ca9d 100644 (file)
@@ -21,7 +21,6 @@ required='pkg-config valac cc GNUmake'
 
 cat >> configure.ac <<'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AM_PROG_VALAC([0.7.3])
 PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
 AC_OUTPUT
index 3e60eb0..cdcae1a 100644 (file)
@@ -26,4 +26,4 @@ BEGIN
     '--automake-acdir=@abs_top_srcdir@/m4',
     '--system-acdir=@abs_top_srcdir@/m4/acdir';
 }
-require '@abs_top_builddir@/aclocal';
+require '@abs_top_builddir@/bin/aclocal';
index bc6eab6..cf18d7b 100644 (file)
@@ -24,4 +24,4 @@ BEGIN
     if '@srcdir@' ne '.';
   unshift @ARGV, '--libdir=@abs_top_srcdir@/lib';
 }
-require '@abs_top_builddir@/automake';
+require '@abs_top_builddir@/bin/automake';
similarity index 100%
rename from t/yaccpp.sh
rename to t/yacc-cxx-grepping.sh
index 7ea2528..8b7f7ff 100644 (file)
@@ -27,7 +27,6 @@ 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
similarity index 100%
rename from t/yaccdry.sh
rename to t/yacc-dry.sh
index 9f20798..3c5da22 100644 (file)
@@ -21,7 +21,6 @@
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_PROG_YACC
 END
 
@@ -35,7 +34,9 @@ mkdir sub
 : > sub/maude.y
 
 $ACLOCAL
-$AUTOMAKE -a
+# FIXME: stop disabling the warnings in the 'unsupported' category
+# FIXME: once the 'subdir-objects' option has been mandatory.
+$AUTOMAKE -a -Wno-unsupported
 
 grep '^maude\.c:.*maude\.y' Makefile.in
 
@@ -48,7 +49,6 @@ bin_PROGRAMS = maude
 maude_SOURCES = sub/maude.y
 END
 
-$ACLOCAL
 $AUTOMAKE -a
 
 # No rule needed, the default .y.c: inference rule is enough
@@ -65,8 +65,9 @@ maude_SOURCES = sub/maude.y
 maude_YFLAGS = -d
 END
 
-$ACLOCAL
-$AUTOMAKE -a
+# FIXME: stop disabling the warnings in the 'unsupported' category
+# FIXME: once the 'subdir-objects' option has been mandatory.
+$AUTOMAKE -a -Wno-unsupported
 
 # Rule should use maude_YFLAGS.
 grep 'AM_YFLAGS.*maude' Makefile.in && exit 1
index ed30c56..b034af3 100644 (file)
@@ -25,7 +25,6 @@ required='cc yacc'
 cat >> configure.ac << 'END'
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_PROG_YACC
 AC_OUTPUT
 END
@@ -77,7 +76,9 @@ c_outputs='zardoz.c bar-quux.c sub/foo-zardoz.c sub/dir/quux.c'
 
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE -a
+# FIXME: stop disabling the warnings in the 'unsupported' category
+# FIXME: once the 'subdir-objects' option has been mandatory.
+$AUTOMAKE -a -Wno-unsupported
 
 for vpath in : false; do
 
similarity index 100%
rename from t/yacc4.sh
rename to t/yacc-misc.sh
index 9db4921..95788ec 100644 (file)
@@ -22,7 +22,6 @@ required='cc yacc'
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-AM_PROG_CC_C_O
 AC_PROG_YACC
 AC_OUTPUT
 END
similarity index 100%
rename from t/yaccvpath.sh
rename to t/yacc-vpath.sh