automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.13.1-11


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.13.1-114-gbba21ec
Date: Wed, 16 Jan 2013 12:47:56 +0000

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

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

The branch, master has been updated
       via  bba21ec30fcc603765b39c296fa6bf79b07c420c (commit)
       via  3d9ee5edf6f4a6100b8faa2a3e0c7dc32ba91ea9 (commit)
       via  030ecb45f60d9504155cf0778f9a93c746a5088b (commit)
       via  4864af66bfd189a501061d775bb9743a1285d88e (commit)
       via  593032130119da79aba14dc26c3cc985bf3a5610 (commit)
       via  cdba479fe5739555ad9ec30e0224f24b2facf548 (commit)
      from  2aa49391fe2918db3e5d59f4f96ca3612c955d78 (commit)

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

- Log -----------------------------------------------------------------
commit bba21ec30fcc603765b39c296fa6bf79b07c420c
Merge: 3d9ee5e cdba479
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 16 13:35:10 2013 +0100

    Merge branch 'texi-no-split-info'
    
    * texi-no-split-info:
      texi: no longer support split info files

commit 3d9ee5edf6f4a6100b8faa2a3e0c7dc32ba91ea9
Merge: 030ecb4 4864af6
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 16 13:20:12 2013 +0100

    Merge branch 'maint'
    
    * maint:
      subdir-objects: complain if it isn't enabled
      plans: update w.r.t. latest changes

commit 030ecb45f60d9504155cf0778f9a93c746a5088b
Author: Stefano Lattarini <address@hidden>
Date:   Mon Jan 14 20:43:24 2013 +0100

    compat: restore AM_PROG_MKDIR, again
    
    OK, this is getting ridiculous, but we cannot remove this macro yet
    (and, yes, the fault for this mess lies entirely on me; let's not
    dwell on that, thank you very much).
    
    Gettext (so far the greatest "offender" in the use of AM_PROG_MKDIR), in
    its latest release 0.18.2, has removed all the uses of that macro still
    present in its code base.  So I thought we could finally and safely
    remove it.  Wrong.  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.  This has already happened in practice:
    
      <http://lists.gnu.org/archive/html/bug-grep/2013-01/msg00003.html>
    
    Moreover, while we might see it as not unreasonable to ask a developer
    using Automake 1.14 to also update Gettext to 1.18.2, that would not
    be enough; in order for gettext to use the correct data files, our
    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.  Bad.
    
    So we re-instate this macro as a simple alias for AC_PROG_MKDIR (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).
    
    Note that NEWS is not yet adjusted, since we'll have to adjust it in
    maint before (to minimize spurious merge conflicts).
    
    * doc/automake.texi: Update.
    * PLANS/obsolete-removed/am-prog-mkdir-p.txt: Likewise.
    * t/gettext-macros.sh: Adjust.
    * t/am-prog-mkdir-p.sh: New test.
    * t/mkdir_p.sh: Remove, folded into the new one.
    * t/am-prog-mkdir-p-no-more: Remove as superseded.
    * t/list-of-tests.mk: Adjust.
    * t/obsolete-err.m4: Re-instate AM_PROG_MKDIR_P as a working
    alias for AC_PROG_MKDIR_P (albeit giving runtime warnings, and
    calling AC_SUBST on 'mkdir_p' too).
    * m4/init.m4 (AM_INIT_AUTOMAKE): No longer call AC_SUBST for
    'mkdir_p', as that is once again AM_PROG_MKDIR_P's business.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit cdba479fe5739555ad9ec30e0224f24b2facf548
Author: Stefano Lattarini <address@hidden>
Date:   Fri Jan 4 18:12:29 2013 +0100

    texi: no longer support split info files
    
    See automake bug#13351 and bug#12320.
    
    Automake-generated recipes have for a long time supported "split"
    info files:
    
      
http://www.gnu.org/software/texinfo/manual/texinfo/texinfo.html#Tag-and-Split-Files
    
    When I asked the rationale for this feature:
    
      http://lists.gnu.org/archive/html/texinfo-devel/2012-08/msg00015.html
    
    Karl Berry confirmed that the reason for its existence was indeed
    "efficiency, especially memory size":
    
      http://lists.gnu.org/archive/html/texinfo-devel/2012-08/msg00024.html
    
    He also added that "The Elisp manual is one of the largest ones around.
    Looks like it would be maybe 3.5mb as one file."  Not in any way big by
    modern standards.
    
    OTOH, it appears that the use of split info files (at least in the way
    they have been handled by Automake-generated rules for a long time) can
    cause real problems in some (admittedly quite corner-case) situations:
    
      http://thread.gmane.org/gmane.comp.parsers.bison.bugs/3963
      http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12320
    
    So we now follow suit with Automake-NG (see commit v1.12.2-901-gdd603e2,
    <http://lists.gnu.org/archive/html/automake-ng/2012-08/msg00147.html>)
    and have Automake-generated makefiles pass the '--no-split' option
    unconditionally to makeinfo invocations.
    
    This allow some nice simplifications in our Texinfo recipes, and offer
    an automatic fix for bug#12320.
    
    Another *very* good aspect of such a change is that it should be 100%
    transparent to the Automake users.
    
    * lib/am/texinfos.am: Simplify moderately.
    * lib/am/texibuild.am: Simplify greatly the recipe for the creation
    of info files.
    * t/txinfo-makeinfo-error-no-clobber.sh: Adjust.
    * t/txinfo-no-split.sh: New test.
    * t/list-of-tests.mk: Add it.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

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

Summary of changes:
 PLANS/obsolete-removed/am-prog-mkdir-p.txt         |   72 ++------------------
 PLANS/subdir-objects.txt                           |   37 +++++-----
 .../warnings-for-automake-ng-compatibility.txt     |    4 +-
 automake.in                                        |   31 ++++++++-
 doc/automake.texi                                  |   27 ++++++-
 lib/am/texibuild.am                                |   41 ++---------
 lib/am/texinfos.am                                 |   37 +++++------
 m4/init.m4                                         |    5 --
 m4/obsolete-err.m4                                 |   18 +++---
 t/am-prog-mkdir-p-no-more.sh                       |   44 ------------
 t/{mkdir_p.sh => am-prog-mkdir-p.sh}               |   33 +++++++---
 t/ax/depcomp.sh                                    |    9 +--
 t/cscope.tap                                       |    6 +-
 t/depcomp8a.sh                                     |    4 +-
 t/depcomp8b.sh                                     |    9 ++-
 t/ext2.sh                                          |    1 +
 t/extra-portability.sh                             |    2 +-
 t/fort2.sh                                         |   58 ++++++++++++----
 t/fort4.sh                                         |    2 +-
 t/fort5.sh                                         |    4 +-
 t/gettext-macros.sh                                |   13 ++--
 t/lex-line.sh                                      |    4 +-
 t/libtool3.sh                                      |    4 +
 t/list-of-tests.mk                                 |    4 +-
 t/ltinstloc.sh                                     |    1 +
 t/ltlibsrc.sh                                      |    2 +
 t/ltorder.sh                                       |    1 +
 t/parallel-tests-suffix-prog.sh                    |    1 +
 t/sourcefile-in-subdir.sh                          |    2 +-
 t/specflg9.sh                                      |    1 +
 t/subobj.sh                                        |   61 +++++++++++++++--
 t/subobj4.sh                                       |    2 +-
 t/subobj7.sh                                       |    1 +
 t/subpkg-yacc.sh                                   |    2 +-
 t/subpkg.sh                                        |    2 +-
 t/suffix-custom-subobj-and-specflg.sh              |   11 +---
 t/txinfo-makeinfo-error-no-clobber.sh              |    7 --
 t/{txinfo-nodist-info.sh => txinfo-no-split.sh}    |   72 ++++++++++++++------
 t/vala-libs.sh                                     |    3 +-
 t/vala-non-recursive-setup.sh                      |    1 +
 t/yacc-grepping2.sh                                |   10 ++-
 t/yacc-line.sh                                     |    4 +-
 42 files changed, 350 insertions(+), 303 deletions(-)
 delete mode 100755 t/am-prog-mkdir-p-no-more.sh
 rename t/{mkdir_p.sh => am-prog-mkdir-p.sh} (56%)
 copy t/{txinfo-nodist-info.sh => txinfo-no-split.sh} (50%)

diff --git a/PLANS/obsolete-removed/am-prog-mkdir-p.txt 
b/PLANS/obsolete-removed/am-prog-mkdir-p.txt
index b096ece..4143fac 100644
--- a/PLANS/obsolete-removed/am-prog-mkdir-p.txt
+++ b/PLANS/obsolete-removed/am-prog-mkdir-p.txt
@@ -1,67 +1,9 @@
-In Automake 1.13.x
-------------------
+We have dropped any plan to remove the obsolescent macro AM_PROG_MKDIR_P,
+(today just an alias for the Autoconf-provided macro AC_PROG_MKDIR_P), as
+well as the related $(mkdir_p) make variable and the @mkdir_p@ configure
+substitution.
 
-We 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'.
+That planned removal has already proven source of countless headaches and
+backward-compatibility issues, which vastly outweigh any "clean-up benefit"
+we would get from the removal of that obsolescent but unobtrusive cruft.
 
-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, we 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 a strong advice by Jim Meyering, in commit 'v1.12.4-158-gdf23daf'
-we re-introduced AM_PROG_MKDIR_P in Automake.  That has been an
-unfortunate necessity (thanks to Jim for having convinced me of that in
-time!)
-
-
-For Automake 1.14
------------------
-
-Finally, AM_PROG_MKDR_P we'll be fully obsolete in in Automake 1.14 (see
-commit 'v1.12.4-174-g5a28948', merged in master by 'v1.13-5-gb373ad9'),
-while still offering a clear error message for the moment (see follow-up
-commit 'v1.13-30-gd01834b').
-
-We can finally do so because Gettext has got a maintainer in the meantime,
-and a new release has been made that no longer uses AM_PROG_MKDIR_P:
-
-  <http://lists.gnu.org/archive/html/bug-gettext/2012-12/msg00064.html>
-
-We still keep the obsolete '@mkdir_p@' substitution and '$(mkdir_p)'
-variable around though, since they are still used by 'Makefile.in.in'
-template from gettext:
-
-  $ cd ~/src/gettext
-  $ git checkout master
-  $ git describe
-  v0.18.2-4-g3188bbf
-  $ grep mkdir_p gettext-runtime/po/Makefile.in.in | grep -v '^#'
-  mkdir_p = @mkdir_p@
-       $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
-       $(mkdir_p) $(DESTDIR)$$dir; \
-       $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
-       $(mkdir_p) $(DESTDIR)$$dir; \
-
-(see also Automake commit v1.12.1-112-g2551021).
-
-More to the point, it's almost impossible to diagnose usages of those
-macro and substitution using the existing Automake parsing and warning
-infrastructure; it's much easier to just keep them around for a while.
-
-
-The future
-----------
-
-We want to finally remove '@mkdir_p@' and '$(mkdir_p)' as well some
-day.  It would be nice if we could do so with some kind of deprecation,
-but that is not worth too much work.  Anyway, no hurry an no high
-priority for this removal.
diff --git a/PLANS/subdir-objects.txt b/PLANS/subdir-objects.txt
index e3aec6b..e4e6e25 100644
--- a/PLANS/subdir-objects.txt
+++ b/PLANS/subdir-objects.txt
@@ -24,33 +24,28 @@ 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.
 
-For automake 1.13.2 (ASAP)
---------------------------
+DONE for automake 1.13.2
+------------------------
 
-Fix the bug spotted by Nick Bowler:
+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': currently, Automake-generated
-C compilation rules mistakenly pass the "-c -o" options combination
-unconditionally (even to losing compiler) when the 'subdir-objects' is
-used but sources are only present in the top-level directory.
+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.
 
-For automake 1.13.2 (with more ease)
-------------------------------------
+TODO for automake 1.13.2
+------------------------
 
 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.
 
-This warning, when there are C sources in subdirs, should also mention the
-need to use AM_PROG_CC_C_O in configure.ac (thanks to Peter Breitenlohner
-for suggesting this).  This is not strictly required, but will make
-things a little simpler for the users, by giving a more complete feedback:
-<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#29>
-
 Be 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).
@@ -58,10 +53,14 @@ suggesting this).
 For automake 1.14
 -----------------
 
-Flip the 'subdir-object' option on by default.  At the same time,
-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.
+Remove the copy & paste of Autoconf internals in our AC_PROG_CC rewrite
+See the first patch in the series:
+<http://lists.gnu.org/archive/html/automake-patches/2013-01/msg00102.html>
+
+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-object' option supported (as a simple no-op
 now), to save useless churn in our user's build systems.
diff --git a/PLANS/texi/warnings-for-automake-ng-compatibility.txt 
b/PLANS/texi/warnings-for-automake-ng-compatibility.txt
index 1dd3da3..aca46b4 100644
--- a/PLANS/texi/warnings-for-automake-ng-compatibility.txt
+++ b/PLANS/texi/warnings-for-automake-ng-compatibility.txt
@@ -1,5 +1,5 @@
-For automake 1.13.2:
---------------------
+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
diff --git a/automake.in b/automake.in
index a1d1f2e..0473af4 100644
--- a/automake.in
+++ b/automake.in
@@ -1784,9 +1784,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 (1.14) 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
diff --git a/doc/automake.texi b/doc/automake.texi
index 6ec14b0..5eaa277 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -4050,10 +4050,10 @@ define @code{WITH_DMALLOC} and add @option{-ldmalloc} 
to @code{LIBS}.
 @cindex obsolete macros
 
 Although using some of the following macros was required in past
-releases, you should not use any of them in new code.  Also, all
-these macros will be @emph{removed in some future Automake version},
-so you should consider updating your @file{configure.ac} to avoid
-problems in the future.
+releases, you should not use any of them in new code.  Also, most
+of these macros will probably be @emph{removed in some future Automake
+version}, so you should consider updating your @file{configure.ac}
+to avoid problems in the future.
 
 @table @code
 
@@ -4064,6 +4064,25 @@ This is an @emph{obsolete wrapper} around 
@code{AC_PROG_CC_C_O}.  New
 code needs not to use this macro.  It will be deprecated, and then
 removed, in future Automake versions.
 
address@hidden AM_PROG_MKDIR_P
address@hidden AM_PROG_MKDIR_P
address@hidden @code{mkdir -p}, macro check
address@hidden MKDIR_P
address@hidden mkdir_p
+
+From Automake 1.8 to 1.9.6 this macro used to define the output
+variable @code{mkdir_p} to one of @code{mkdir -p}, @code{install-sh
+-d}, or @code{mkinstalldirs}.
+
+Nowadays Autoconf provides a similar functionality with
address@hidden (@pxref{Particular Programs, , Particular
+Program Checks, autoconf, The Autoconf Manual}), however this defines
+the output variable @code{MKDIR_P} instead.  In case you are still
+using the @code{AM_PROG_MKDIR_P} macro in your @file{configure.ac},
+or its provided variable @code{$(mkdir_p)} in your @file{Makefile.am},
+you are advised to switch ASAP to the more modern Autoconf-provided
+interface instead.
+
 @end table
 
 @node Private Macros
diff --git a/lib/am/texibuild.am b/lib/am/texibuild.am
index 8adf5a9..eb54da4 100644
--- a/lib/am/texibuild.am
+++ b/lib/am/texibuild.am
@@ -22,39 +22,14 @@
 ## should never be dependent upon a non-distributed built file.
 ## Therefore we ensure that %DIRSTAMP% exists in the rule.
 ?!INSRC??DIRSTAMP?     @test -f %DIRSTAMP% || $(MAKE) $(AM_MAKEFLAGS) 
%DIRSTAMP%
-## Back up the info files before running makeinfo. This is the cheapest
-## way to ensure that
-## 1) If the texinfo file shrinks (or if you start using --no-split),
-##    you'll not be left with some dead info files lying around -- dead
-##    files which would end up in the distribution.
-## 2) If the texinfo file has some minor mistakes which cause makeinfo
-##    to fail, the info files are not removed.  (They are needed by the
-##    developer while he writes documentation.)
-       %AM_V_MAKEINFO%restore=: && backupdir=.am$$$$ && \
-?INSRC?        am__cwd=`pwd` && $(am__cd) $(srcdir) && \
-       rm -rf $$backupdir && mkdir $$backupdir && \
-## If makeinfo is not installed we must not backup the files so
-## 'missing' can do its job and touch $@ if it exists.
-       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
-         for f in $@ address@hidden address@hidden; do \
-           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
-         done; \
-       else :; fi && \
-?INSRC?        cd "$$am__cwd"; \
-       if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) %MAKEINFOFLAGS% \
-?!INSRC?        -o $@ `test -f '%SOURCE_INFO%' || echo 
'$(srcdir)/'`%SOURCE_INFO%; \
-?INSRC??!GENERIC_INFO?  -o $@ $(srcdir)/%SOURCE_INFO%; \
-?INSRC??GENERIC_INFO?   -o $@ $<; \
-       then \
-         rc=0; \
-?INSRC?          $(am__cd) $(srcdir); \
-       else \
-         rc=$$?; \
-## Beware that backup info files might come from a subdirectory.
-?INSRC?          $(am__cd) $(srcdir) && \
-         $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
-       fi; \
-       rm -rf $$backupdir; exit $$rc
+## If the texinfo file has some minor mistakes which cause makeinfo
+## to fail, the info files are not removed.
+       $(AM_V_MAKEINFO)$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
+                       %MAKEINFOFLAGS% --no-split -o address@hidden \
+?!INSRC?               `test -f '%SOURCE_INFO%' || echo 
'$(srcdir)/'`%SOURCE_INFO%
+?INSRC??!GENERIC_INFO? $(srcdir)/%SOURCE_INFO%
+?INSRC??GENERIC_INFO?  $<
+       $(AM_V_at)mv -f address@hidden $@
 
 INFO_DEPS += %DEST_INFO_PREFIX%%DEST_SUFFIX%
 
diff --git a/lib/am/texinfos.am b/lib/am/texinfos.am
index 9b92920..a57bb03 100644
--- a/lib/am/texinfos.am
+++ b/lib/am/texinfos.am
@@ -191,12 +191,11 @@ install-info-am: $(INFO_DEPS)
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
          esac; \
-         if test -f $$file; then d=.; else d=$(srcdir); fi; \
-         for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \
-           if test -f $$ifile; then \
-             echo "$$ifile"; \
-           else : ; fi; \
-         done; \
+         if test -f $$file; then \
+           echo ./$$file; \
+         else \
+           echo $(srcdir)/$$file; \
+         fi; \
        done | $(am__base_list) | \
        while read files; do \
          echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
@@ -311,8 +310,8 @@ uninstall-info-am:
        for file in $$list; do \
          relfile=`echo "$$file" | sed 's|^.*/||'`; \
          (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then 
\
-            echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile 
$$relfile-[0-9] $$relfile-[0-9][0-9]"; \
-            rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9]; \
+            echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile"; \
+            rm -f $$relfile; \
           else :; fi); \
        done
 
@@ -345,15 +344,14 @@ dist-info: $(INFO_DEPS)
          case $$base in \
            $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
          esac; \
-         if test -f $$base; then d=.; else d=$(srcdir); fi; \
-         for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9]; do \
-           if test -f $$file; then \
-## Strip leading '$$d/'.
-             relfile=`expr "$$file" : "$$d/\(.*\)"`; \
-             test -f "$(distdir)/$$relfile" || \
-               cp -p $$file "$(distdir)/$$relfile"; \
-           else :; fi; \
-         done; \
+         if test -f $$base; then \
+           file=./$$base; \
+         else \
+           file=$(srcdir)/$$base; \
+         fi; \
+         if test -f $$file && test ! -f "$(distdir)/$$base"; then \
+           cp -p $$file "$(distdir)/$$base"; \
+         fi; \
        done
 endif %?LOCAL-TEXIS%
 
@@ -383,10 +381,7 @@ clean-aminfo:
 
 .PHONY maintainer-clean-am: maintainer-clean-aminfo
 maintainer-clean-aminfo:
-       @list='$(INFO_DEPS)'; for i in $$list; do \
-         echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9]"; \
-         rm -f $$i $$i-[0-9] $$i-[0-9][0-9]; \
-       done
+       -test -z "$(INFO_DEPS)" || rm -f $(INFO_DEPS)
 ## Use '-rf', not just '-f'; see comments in 'mostlyclean-aminfo'
 ## above for details.
 ?MAINTCLEAN?   -test -z "%MAINTCLEAN%" \
diff --git a/m4/init.m4 b/m4/init.m4
index 6857c44..d7d4013 100644
--- a/m4/init.m4
+++ b/m4/init.m4
@@ -79,11 +79,6 @@ AM_MISSING_PROG([MAKEINFO], [makeinfo])
 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
diff --git a/m4/obsolete-err.m4 b/m4/obsolete-err.m4
index a94a651..1ba6df3 100644
--- a/m4/obsolete-err.m4
+++ b/m4/obsolete-err.m4
@@ -1,6 +1,5 @@
 #  -*- Autoconf -*-
-# Obsolete and "removed" macros, that must however still report explicit
-# error messages when used, to smooth transition.
+# Deprecated, obsolescent or and obsolete macros.
 #
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
@@ -8,6 +7,14 @@
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])dnl
+AC_DIAGNOSE([obsolete],
+[macro '$0' is deprecated.
+You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
+and use '$(MKDIR_P)' instead of '$(mkdir_p)' in your Makefile.am files.])])
+
 dnl TODO: Remove in Automake 1.15.
 AC_DEFUN([AM_CONFIG_HEADER],
 [AC_FATAL(['$0': this macro is obsolete.
@@ -20,13 +27,6 @@ AC_DEFUN([AM_PROG_CC_STDC],
     Also, your code should no longer depend upon 'am_cv_prog_cc_stdc',
     but upon 'ac_cv_prog_cc_stdc'.])])
 
-dnl TODO: Remove in Automake 1.16.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_FATAL(['$0': this macro is obsolete.
-    You should simply use the 'AC][_PROG_MKDIR_P' macro instead, and
-    use '$(MKDIR_P)' instead of '$(mkdir_p)' in your Makefile.am
-    files.])])
-
 dnl TODO: Remove in Automake 1.14.
 AC_DEFUN([AM_C_PROTOTYPES],
          [AC_FATAL([automatic de-ANSI-fication support has been removed])])
diff --git a/t/am-prog-mkdir-p-no-more.sh b/t/am-prog-mkdir-p-no-more.sh
deleted file mode 100755
index 78a3ef9..0000000
--- a/t/am-prog-mkdir-p-no-more.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#! /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 any attempt to use the obsolete macro AM_PROG_MKDIR_P
-# elicits clear and explicit fatal errors.
-
-. test-init.sh
-
-geterr ()
-{
-    "$@" -Wnone 2>stderr && { cat stderr >&2; exit 1; }
-    cat stderr >&2
-    grep "^configure\.ac:4:.*'AM_PROG_MKDIR_P'.*obsolete" stderr
-    grep "'AC_PROG_MKDIR_P'.* instead" stderr
-    grep " use '\$(MKDIR_P)' instead of '\$(mkdir_p)'.*Makefile" stderr
-}
-
-$ACLOCAL
-mv aclocal.m4 aclocal.sav
-
-echo AM_PROG_MKDIR_P >> configure.ac
-
-geterr $ACLOCAL
-test ! -f aclocal.m4
-
-cat aclocal.sav "$am_automake_acdir"/obsolete-err.m4 > aclocal.m4
-
-geterr $AUTOCONF
-geterr $AUTOMAKE
-
-:
diff --git a/t/mkdir_p.sh b/t/am-prog-mkdir-p.sh
similarity index 56%
rename from t/mkdir_p.sh
rename to t/am-prog-mkdir-p.sh
index 2e83423..ad5a810 100755
--- a/t/mkdir_p.sh
+++ b/t/am-prog-mkdir-p.sh
@@ -14,38 +14,53 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# AM_INIT_AUTOMAKE should still define $(mkdir_p), for backward
+# Check that the AM_PROG_MKDIR_P macro is deprecated, but still works.
+# We should should also still define $(mkdir_p), for backward
 # compatibility.
 
 . test-init.sh
 
-cat >> configure.ac << 'END'
+cat >> configure.ac <<'END'
 AC_CONFIG_FILES([sub/Makefile])
+AM_PROG_MKDIR_P
 AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
 SUBDIRS = sub
 all-local:
-       $(mkdir_p) . dir1/a
-       @mkdir_p@ . dir2/b
+       $(MKDIR_P) . dir1/a
+       $(mkdir_p) . dir2/b
+       @MKDIR_P@ . dir3/c
+       @mkdir_p@ . dir4/d
 check-local: all
        test -d dir1/a
        test -d dir2/b
        test -d dir3/c
-       test -d dir3/d
+       test -d dir4/d
+       test -d dir5/e
+       test -d dir5/f
+       test -d dir5/g
 END
 
 mkdir sub
 cat > sub/Makefile.am << 'END'
-# '$(mkdir_p)' should continue to work even in subdir makefiles.
+# Even '$(mkdir_p)' should continue to work also in subdir makefiles.
 all-local:
-       $(mkdir_p) .. ../dir3/c
-       @mkdir_p@ .. ../dir3/d
+       $(MKDIR_P) .. ../dir5/d
+       $(mkdir_p) .. ../dir5/e
+       @MKDIR_P@ .. ../dir5/f
+       @mkdir_p@ .. ../dir5/g
 END
 
 $ACLOCAL
-$AUTOCONF -Werror -Wall
+$AUTOCONF -Wnone -Wobsolete -Werror 2>stderr && { cat stderr >&2; exit 1; }
+cat stderr >&2
+grep "^configure\\.ac:5:.*'AM_PROG_MKDIR_P'.*deprecated" stderr
+grep "[Aa]utoconf-provided 'AC_PROG_MKDIR_P'.* instead" stderr
+grep "'\$(MKDIR_P)' instead of '\$(mkdir_p)'" stderr
+
+$AUTOCONF -Wno-obsolete
 $AUTOMAKE
 
 ./configure
diff --git a/t/ax/depcomp.sh b/t/ax/depcomp.sh
index 0e5b6a5..1534d5f 100644
--- a/t/ax/depcomp.sh
+++ b/t/ax/depcomp.sh
@@ -130,7 +130,7 @@ 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_AR
 $(if test $depcomp_with_libtool = yes; then
@@ -199,18 +199,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.
diff --git a/t/cscope.tap b/t/cscope.tap
index 29feec2..9dbe01b 100755
--- a/t/cscope.tap
+++ b/t/cscope.tap
@@ -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])
diff --git a/t/depcomp8a.sh b/t/depcomp8a.sh
index 76aa376..d6c73ed 100755
--- a/t/depcomp8a.sh
+++ b/t/depcomp8a.sh
@@ -48,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
diff --git a/t/depcomp8b.sh b/t/depcomp8b.sh
index 52382f1..879ee1c 100755
--- a/t/depcomp8b.sh
+++ b/t/depcomp8b.sh
@@ -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,7 +61,7 @@ DISTCHECK_CONFIGURE_FLAGS='--enable-dependency-tracking' 
$MAKE distcheck
 
 # Try again with subdir-objects option.
 
-echo AUTOMAKE_OPTIONS = subdir-objects >> Makefile.am
+echo AUTOMAKE_OPTIONS += subdir-objects >> Makefile.am
 
 $AUTOMAKE
 grep include Makefile.in # For debugging.
diff --git a/t/ext2.sh b/t/ext2.sh
index 1089080..4858aec 100755
--- 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
diff --git a/t/extra-portability.sh b/t/extra-portability.sh
index 1ea23ad..63849c7 100755
--- a/t/extra-portability.sh
+++ b/t/extra-portability.sh
@@ -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.
diff --git a/t/fort2.sh b/t/fort2.sh
index c99e8b7..d614452 100755
--- a/t/fort2.sh
+++ b/t/fort2.sh
@@ -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,64 @@ 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
+
+$MAKE -n \
+  address@hidden address@hidden address@hidden address@hidden \
+  > stdout || { cat stdout; exit 1; }
+cat stdout
+# To make it easier to have  stricter grepping below.
+sed -e 's/[    ][      ]*/  /g' -e 's/^/ /' -e 's/$/ /' stdout > out
+cat out
+
+grep ' fake-fc .* address@hidden .* hello\.f90 ' out
+grep ' fake-fc .* address@hidden .* foo\.f95 ' out
+grep ' fake-fc .* address@hidden .* sub/bar\.f95 ' out
+grep ' fake-fc .* address@hidden .* hi\.f03 ' out
+grep ' fake-fc .* address@hidden .* sub/howdy\.f03 ' out
+grep ' fake-fc .* address@hidden .* greets\.f08 ' out
+grep ' fake-fc .* address@hidden .* sub/bonjour\.f08 ' out
+grep ' fake-fc .* --gby .* address@hidden .*[` ]bye\.f95 ' out
+grep ' fake-fc .* --gby .* address@hidden .*[` ]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
 
 :
diff --git a/t/fort4.sh b/t/fort4.sh
index 822edb8..2ef27ab 100755
--- a/t/fort4.sh
+++ b/t/fort4.sh
@@ -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
 
diff --git a/t/fort5.sh b/t/fort5.sh
index 0272706..7b9991b 100755
--- a/t/fort5.sh
+++ b/t/fort5.sh
@@ -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
diff --git a/t/gettext-macros.sh b/t/gettext-macros.sh
index 67839b4..5a93240 100755
--- a/t/gettext-macros.sh
+++ b/t/gettext-macros.sh
@@ -62,7 +62,10 @@ AM_GNU_GETTEXT
 AM_GNU_GETTEXT_VERSION([$autopoint_version])
 END
 
-if ! ($am_gettextize_command --force && test -f m4/gettext.m4); then
+if $am_gettextize_command --force && test -f m4/gettext.m4; then
+  echo "ACLOCAL_PATH='$(pwd)/m4':\$ACLOCAL_PATH" >> get.sh
+  echo "export ACLOCAL_PATH" >> get.sh
+else
   # Older versions of gettext might not have a gettextize program
   # available, but this doesn't mean the user hasn't made the gettext
   # macros available, e.g., by properly setting ACLOCAL_PATH.
@@ -76,12 +79,12 @@ if ! ($am_gettextize_command --force && test -f 
m4/gettext.m4); then
   fi
 fi
 
-echo "ACLOCAL_PATH='$(pwd)/m4':\$ACLOCAL_PATH" >> get.sh
-echo "export ACLOCAL_PATH" >> get.sh
-
+cat >> get.sh <<'END'
 # Even recent versions of gettext used the now-obsolete 'AM_PROG_MKDIR_P'
 # m4 macro.  So we need the following to avoid spurious errors.
-echo 'AC_DEFUN([AM_PROG_MKDIR_P], [AC_PROG_MKDIR_P(address@hidden)])' >> 
m4/mk-dirp.m4
+ACLOCAL="$ACLOCAL -Wno-obsolete"
+AUTOMAKE="$AUTOMAKE -Wno-obsolete"
+END
 
 . ./get.sh
 
diff --git a/t/lex-line.sh b/t/lex-line.sh
index 9b27c0b..258f6af 100755
--- a/t/lex-line.sh
+++ b/t/lex-line.sh
@@ -86,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/libtool3.sh b/t/libtool3.sh
index fb8c194..5653280 100755
--- a/t/libtool3.sh
+++ b/t/libtool3.sh
@@ -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
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index d2b6876..70f1535 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -133,7 +133,7 @@ t/amassign.sh \
 t/am-config-header-no-more.sh \
 t/am-prog-cc-c-o.sh \
 t/am-prog-cc-stdc-no-more.sh \
-t/am-prog-mkdir-p-no-more.sh \
+t/am-prog-mkdir-p.sh \
 t/am-macro-not-found.sh \
 t/amopt.sh \
 t/amopts-location.sh \
@@ -686,7 +686,6 @@ t/missing-version-mismatch.sh \
 t/missing3.sh \
 t/am-missing-prog.sh \
 t/missing-auxfile-stops-makefiles-creation.sh \
-t/mkdir_p.sh \
 t/mkinstall.sh \
 t/mkinst2.sh \
 t/mkinst3.sh \
@@ -1174,6 +1173,7 @@ t/txinfo-no-clutter.sh \
 t/txinfo-no-extra-dist.sh \
 t/txinfo-no-installinfo.sh \
 t/txinfo-no-repeated-targets.sh \
+t/txinfo-no-split.sh \
 t/txinfo-other-suffixes.sh \
 t/txinfo-override-infodeps.sh \
 t/txinfo-override-texinfo-tex.sh \
diff --git a/t/ltinstloc.sh b/t/ltinstloc.sh
index b9670cb..bae3d49 100755
--- a/t/ltinstloc.sh
+++ b/t/ltinstloc.sh
@@ -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
diff --git a/t/ltlibsrc.sh b/t/ltlibsrc.sh
index e58bba7..8c8098b 100755
--- a/t/ltlibsrc.sh
+++ b/t/ltlibsrc.sh
@@ -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'
diff --git a/t/ltorder.sh b/t/ltorder.sh
index fe9d7bd..c243ac7 100755
--- a/t/ltorder.sh
+++ b/t/ltorder.sh
@@ -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
diff --git a/t/parallel-tests-suffix-prog.sh b/t/parallel-tests-suffix-prog.sh
index 64f103c..7b924a3 100755
--- a/t/parallel-tests-suffix-prog.sh
+++ b/t/parallel-tests-suffix-prog.sh
@@ -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)
diff --git a/t/sourcefile-in-subdir.sh b/t/sourcefile-in-subdir.sh
index a010776..1054f18 100755
--- a/t/sourcefile-in-subdir.sh
+++ b/t/sourcefile-in-subdir.sh
@@ -29,7 +29,7 @@ AC_PROG_CC
 END
 
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE -Wno-unsupported
 
 grep '^z\.o: x/z\.c$' Makefile.in
 
diff --git a/t/specflg9.sh b/t/specflg9.sh
index 3e0c694..4f3d3b0 100755
--- a/t/specflg9.sh
+++ b/t/specflg9.sh
@@ -24,6 +24,7 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
 bin_PROGRAMS = zzfoo zzbar
 zzfoo_SOURCES = sub/foo.c
 zzbar_SOURCES = bar.c
diff --git a/t/subobj.sh b/t/subobj.sh
index d16512a..22ab2d3 100755
--- a/t/subobj.sh
+++ b/t/subobj.sh
@@ -14,19 +14,63 @@
 # You 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
 
-echo AC_PROG_CC >> configure.ac
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_YACC
+AC_CONFIG_FILES([sub/Makefile])
+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
@@ -35,9 +79,12 @@ grep '^configure\.ac:4:.*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
 
 :
diff --git a/t/subobj4.sh b/t/subobj4.sh
index 816f506..dbbed30 100755
--- a/t/subobj4.sh
+++ b/t/subobj4.sh
@@ -43,7 +43,7 @@ END
 : > d2/z.c
 
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE -Wno-unsupported
 
 grep '\$(CC) .*\.\./d2/z\.c' d1/Makefile.in
 
diff --git a/t/subobj7.sh b/t/subobj7.sh
index 5dc9ea8..de73cc2 100755
--- a/t/subobj7.sh
+++ b/t/subobj7.sh
@@ -25,6 +25,7 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
 bin_PROGRAMS = wish
 wish_SOURCES = foo.c generic/a.c
 END
diff --git a/t/subpkg-yacc.sh b/t/subpkg-yacc.sh
index 639e415..9fc6761 100755
--- a/t/subpkg-yacc.sh
+++ b/t/subpkg-yacc.sh
@@ -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.
diff --git a/t/subpkg.sh b/t/subpkg.sh
index 6f59ac5..f9cdc74 100755
--- a/t/subpkg.sh
+++ b/t/subpkg.sh
@@ -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
diff --git a/t/suffix-custom-subobj-and-specflg.sh 
b/t/suffix-custom-subobj-and-specflg.sh
index 32356d7..b862d88 100755
--- a/t/suffix-custom-subobj-and-specflg.sh
+++ b/t/suffix-custom-subobj-and-specflg.sh
@@ -53,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
 
diff --git a/t/txinfo-makeinfo-error-no-clobber.sh 
b/t/txinfo-makeinfo-error-no-clobber.sh
index f4b7d01..c567e89 100755
--- a/t/txinfo-makeinfo-error-no-clobber.sh
+++ b/t/txinfo-makeinfo-error-no-clobber.sh
@@ -45,10 +45,6 @@ $AUTOCONF
 ./configure
 $MAKE
 
-# Feign more info files.
-: > main.info-1
-: > sub/main.info-1
-
 # Break main.texi.
 $sleep
 cp main.texi main.old
@@ -64,15 +60,12 @@ END
 # makeinfo will bail out, but we should conserve the old info files.
 $MAKE && exit 1
 test -f main.info
-test -f main.info-1
 
 # Restore main.texi, and break sub/main.texi.
 cp main.texi sub/main.texi
 mv main.old main.texi
 $MAKE && exit 1
 test -f main.info
-test ! -e main.info-1
 test -f sub/main.info
-test -f sub/main.info-1
 
 :
diff --git a/t/txinfo-nodist-info.sh b/t/txinfo-no-split.sh
similarity index 50%
copy from t/txinfo-nodist-info.sh
copy to t/txinfo-no-split.sh
index 265587e..aecf7e7 100755
--- a/t/txinfo-nodist-info.sh
+++ b/t/txinfo-no-split.sh
@@ -14,53 +14,81 @@
 # You 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.
+# Info split files should not be produced (automake bug#13351).
 
 required=makeinfo
 . test-init.sh
 
 echo AC_OUTPUT >> configure.ac
 
-cat > Makefile.am << 'END'
-AUTOMAKE_OPTIONS = info-in-builddir
+cat > Makefile.am <<'END'
+MAKEINFO = makeinfo --split-size 10
 info_TEXINFOS = foo.texi
-CLEANFILES = foo.info
 
-# To make distcheck work without requiring TeX and texi2dvi.
-dvi:
+test-split: # A sanity check.
+       $(MAKEINFO) -o split.info foo.texi
 
-# Do not distribute generated '.info' files.
-dist-info:
-       @:
+check-local:
+       test -f $(srcdir)/foo.info
+       test ! -f $(srcdir)/foo.info-1
+       test "`find $(srcdir) . | grep '\.info'`" = "$(srcdir)/foo.info"
 END
 
-mkdir subdir
-
 cat > foo.texi << 'END'
 \input texinfo
 @setfilename foo.info
 @settitle foo
address@hidden Dummy utilities
address@hidden
+* Foo: (foo).  Does nothing at all.
address@hidden direntry
+
 @node Top
-Hello walls.
address@hidden version.texi
address@hidden Foo
+
address@hidden
+* Intro::    Introduction
+* Planets::  List of Planets
address@hidden menu
+
address@hidden Intro
address@hidden Introduction
+Will list planets.
+
address@hidden Planets
address@hidden List of planets
+Hello Mercury.
+Hello Venus
+Hello Earth
+Hello Mars.
+Hello Jupiter.
+Hello Saturn.
+Hello Uran.
+Hello Neptune.
+Hello Pluto.
 @bye
 END
 
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE -a -Wno-override
+$AUTOMAKE -a
 
 ./configure
-$MAKE distdir
-ls -l . $distdir # For debugging.
-test ! -e foo.info
-test ! -e $distdir/foo.info
+
+$MAKE test-split
+ls -l # For debugging.
+test -f split.info
+test -f split.info-1
+test -f split.info-2
+rm -f split*
+
 $MAKE
+
+ls -l # For debugging.
 test -f foo.info
-$MAKE distdir
-ls -l $distdir # For debugging.
-test ! -f $distdir/foo.info
+test ! -f foo.info-1
+test "$(find . | $FGREP '.info' | sed 's|^\./||')" = foo.info
+
 $MAKE distcheck
 
 :
diff --git a/t/vala-libs.sh b/t/vala-libs.sh
index 66fd243..f1ed99a 100755
--- a/t/vala-libs.sh
+++ b/t/vala-libs.sh
@@ -31,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
@@ -75,7 +76,7 @@ int main ()
 }
 END
 
-mkdir src
+mkdir -p src
 cat > src/zardoz-foo.vala << 'END'
 using GLib;
 public class Foo {
diff --git a/t/vala-non-recursive-setup.sh b/t/vala-non-recursive-setup.sh
index 88d9d33..88f67a8 100755
--- a/t/vala-non-recursive-setup.sh
+++ b/t/vala-non-recursive-setup.sh
@@ -39,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)
diff --git a/t/yacc-grepping2.sh b/t/yacc-grepping2.sh
index 58a963c..3c5da22 100755
--- a/t/yacc-grepping2.sh
+++ b/t/yacc-grepping2.sh
@@ -34,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
 
@@ -47,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
@@ -64,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
diff --git a/t/yacc-line.sh b/t/yacc-line.sh
index 9067a2d..b034af3 100755
--- a/t/yacc-line.sh
+++ b/t/yacc-line.sh
@@ -76,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
 


hooks/post-receive
-- 
GNU Automake



reply via email to

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