automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.15-9


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.15-972-g7e90553
Date: Wed, 07 Jan 2015 18:00:59 +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=7e905534983e138e29c36abdaa3909d40969cc9a

The branch, ng/master has been updated
       via  7e905534983e138e29c36abdaa3909d40969cc9a (commit)
       via  99948e986a210d1e63daa41ca1861620818e4955 (commit)
       via  d38e1ac7130f404da8e81c9ad90802803cea9038 (commit)
       via  25b8f7b1e4d775d6cb1a28d05dba1c5a2b4b9d86 (commit)
       via  8f3a565e9a708298be5e6fa136210c3ef4f5163d (commit)
       via  6357a630dc3cac6682a0f17b255104b4dd78f89a (commit)
       via  92ed3be97837a3de1634a13959c70c686b17d38d (commit)
       via  93855f67e885ce4c16e0c71728e1ff3e6b2e64b9 (commit)
       via  08849db866b44510f6b8fd49e313c91a43a3dfd3 (commit)
       via  1b4c84b80d6099fd6747b129630bbf00c388e0f9 (commit)
       via  e3908dd893aadc5e7775ede9a8a24d8667b371b9 (commit)
       via  6a675ef17edf7109da189f5ae70e2dc6b7665896 (commit)
       via  9bd4f71feba86e618bba0a78708e37f7a1133689 (commit)
      from  9fb499a9b6f4ee175ba8a8d7d00bd756e4242173 (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 7e905534983e138e29c36abdaa3909d40969cc9a
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 7 11:59:03 2015 +0100

    [ng] tests: fix spurious failure due to non-POSIX shells
    
    Seen on, e.g., Solaris 10.
    
    * t/internals.tap: Here, by making sure a POSIX shell is used to
    run the recipe in the Makefiles running our unit tests.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 99948e986a210d1e63daa41ca1861620818e4955
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 7 11:35:48 2015 +0100

    [ng] vala tests: avoid spurious failure with Sun C/C++ compilers
    
    * t/vala-mix2.sh: Here, by forcing the use of the GNU C/C++ compilers.
    If we don't, our dependency-tracking code forces 'make' to try to rebuild
    spurious binaries or object files when the Sun C compiler is in use, with
    reasons like:
      '/opt/SUNWspro/prod/include/CC/Cstd/./istream.cc' is newer \
          than target '/opt/SUNWspro/prod/include/CC/Cstd/./istream'
    Go figure.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit d38e1ac7130f404da8e81c9ad90802803cea9038
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 7 11:02:46 2015 +0100

    [ng] tests: avoid a spurious failure with ${CC} lacking dep-tracking support
    
    * t/subobj-indir-pr13928.sh: Here: do not expect .Po files to be created in
    the .deps directories if the compiler is found not to support generation of
    dependency tracking information.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 25b8f7b1e4d775d6cb1a28d05dba1c5a2b4b9d86
Author: Stefano Lattarini <address@hidden>
Date:   Tue Jan 6 22:45:46 2015 +0100

    [ng] cosmetics: adjust few comments, fix indentation
    
    * bin/automake.in (handle_languages): Here.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 8f3a565e9a708298be5e6fa136210c3ef4f5163d
Merge: 9fb499a 6357a63
Author: Stefano Lattarini <address@hidden>
Date:   Tue Jan 6 22:03:06 2015 +0100

    Merge branch 'master' into ng/master (bug#13928 fixed by this)
    
    Part of this merge is actually a no-op, since we had already fixed
    Automake-NG so that the 'subdir-object' option (enabled by default)
    would work when foo_SOURCES contains $(var).
    
    OTOH, even Automake-NG suffered of the bug where built object files,
    as well as dependency-tracking makefile fragments, could be placed
    in $(srcdir) when a source file was specified as '$(srdir)/foo.c' or
    '$(top_srcdir)/bar.c'. See bug#16375 and bug#15293.
    
    * master:
      deps: fix corner-case "make distclean" bug
      compile: don't place built object files in $(srcdir), ever ...
      tests: fix some bugs in an XFAILing test
      deps: 'subdir-object' option now works when foo_SOURCES contains $(var)
      NEWS: fix a typo
    
    Signed-off-by: Stefano Lattarini <address@hidden>

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

Summary of changes:
 NEWS                           |   45 +++++++++++++-
 PLANS/subdir-objects.txt       |   10 +--
 THANKS                         |    1 +
 bin/automake.in                |   93 +++++++++++++++------------
 t/Makefile.inc                 |    1 -
 t/depcomp8a.sh                 |   13 ++--
 t/depcomp8b.sh                 |    8 +-
 t/extra-sources.sh             |    2 +-
 t/internals.tap                |    8 ++-
 t/lex-depend-cxx.sh            |    6 ++
 t/lex-depend-grep.sh           |    2 +-
 t/subobj-indir-pr13928.sh      |   13 +++-
 t/subobj-pr13928-more-langs.sh |  138 ++++++++++++++++++++++++++++++++++++++++
 t/subobj-vpath-pr13928.sh      |   89 ++++++++++++++++++++++---
 t/vala-mix2.sh                 |    4 +-
 15 files changed, 354 insertions(+), 79 deletions(-)
 create mode 100644 t/subobj-pr13928-more-langs.sh

diff --git a/NEWS b/NEWS
index 7cdf304..539ce0f 100644
--- a/NEWS
+++ b/NEWS
@@ -140,6 +140,49 @@ New in 2.0:
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+New in 1.16:
+
+* Bugs fixed:
+
+  - Automatic dependency tracking has been fixed to work also when the
+    'subdir-object' option is used and some 'foo_SOURCES' definition
+    contains unexpanded references to make variables, as in, e.g.:
+
+        a_src = sources/libs/aaa
+        b_src = sources/bbb
+        foo_SOURCES = $(a_src)/bar.c $(b_src)/baz.c
+
+    With such a setup, the created makefile fragment containing dependency
+    tracking information will be correctly placed under the directories
+    named 'sources/libs/aaa/.deps' and 'sources/bbb/.deps', rather than
+    mistakenly under directories named (literally!) '$(src_a)/.deps' and
+    '$(src_b)/.deps' (this was the first part of automake bug#13928).
+
+    Notice that in order to fix this bug we had to slightly change the
+    semantics of how config.status bootstraps the makefile fragments
+    required for the dependency tracking to work: rather than attempting
+    to parse the Makefiles via grep and sed trickeries only, we actually
+    invoke 'make' on a slightly preprocessed version of those Makefiles,
+    using a private target that is only meant to bootstrap the required
+    makefile fragments.
+
+  - The 'subdir-object' option no longer causes object files corresponding
+    to source files specified with an explicit '$(srcdir)' component to be
+    placed in the source tree rather than in the build tree.
+
+    For example, if Makefile.am contains:
+
+        AUTOMAKE_OPTIONS = subdir-objects
+        foo_SOURCES = $(srcdir)/foo.c $(srcdir)/s/bar.c $(top_srcdir)/baz.c
+
+    then "make all" will create 'foo.o' and 's/bar.o' in $(builddir) rather
+    than in $(srcdir), and will create 'baz.o' in $(top_builddir) rather
+    than in $(top_srcdir).
+
+    This was the second part of automake bug#13928.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 New in 1.15:
 
 * Improvements and refactorings in the install-sh script:
@@ -160,7 +203,7 @@ New in 1.15:
 
 * Automake-generated testsuites:
 
-  - The default test-driver used by the Automake-generates testsuites
+  - The default test-driver used by the Automake-generated testsuites
     now appends the result and exit status of each "plain" test to the
     associated log file (automake bug#11814).
 
diff --git a/PLANS/subdir-objects.txt b/PLANS/subdir-objects.txt
index 3cf6101..c849e33 100644
--- a/PLANS/subdir-objects.txt
+++ b/PLANS/subdir-objects.txt
@@ -5,9 +5,6 @@ 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>.
 
-Sadly, **THIS IS IMPOSSIBLE** until automake bug#13928 is resolved:
-http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13928
-
 Details
 -------
 
@@ -53,11 +50,10 @@ 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 some automake 1.x (*before* 2.0 can be released)
-----------------------------------------------------
+For automake 1.16 (*before* 2.0 can be released)
+------------------------------------------------
 
-Find a proper way to fix the blocking automake bug#13928:
-http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13928
+Submit the pending patch series that fixes http://debbugs.gnu.org/13928
 
 For automake 2.0
 ----------------
diff --git a/THANKS b/THANKS
index b66f744..8b87d58 100644
--- a/THANKS
+++ b/THANKS
@@ -192,6 +192,7 @@ Joel N. Weber II                address@hidden
 Joerg-Martin Schwarz            address@hidden
 Johan Dahlin                    address@hidden
 Johan Danielsson                address@hidden
+Johan Kristensen                address@hidden
 Johannes Nicolai                address@hidden
 John Calcote                    address@hidden
 John F Trudeau                  address@hidden
diff --git a/bin/automake.in b/bin/automake.in
index 7b3d1c9..f77980e 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -1132,34 +1132,28 @@ sub check_user_variables
 sub handle_languages ()
 {
     if (! option 'no-dependencies')
-    {
-       # Include auto-dep code.  Don't include it if DEP_FILES would
-       # be empty.
-       if (keys %extension_seen && keys %dep_files)
-       {
-           # Set location of depcomp.
+      {
+        # Include automatic dependency tracking code, if needed.
+        if (keys %extension_seen && keys %dep_files)
+          {
             define_variable ('depcomp', INTERNAL,
-                              '$(SHELL) $(am.conf.aux-dir)/depcomp');
+                             '$(SHELL) $(am.conf.aux-dir)/depcomp');
 
-           require_conf_file ("$am_file.am", FOREIGN, 'depcomp');
+            require_conf_file ("$am_file.am", FOREIGN, 'depcomp');
 
-           my @deplist = sort keys %dep_files;
-           # Generate each 'include' individually.  Irix 6 make will
-           # not properly include several files resulting from a
-           # variable expansion; generating many separate includes
-           # seems safest.
-           $output_rules .= "\n";
-           foreach my $depfile (@deplist)
-           {
-               $output_rules .= subst ('AMDEP_TRUE') . "-include $depfile\n";
-               $clean_dirs{dirname ($depfile)} = DIST_CLEAN;
-           }
-       }
-    }
+            my @deplist = sort keys %dep_files;
+            $output_rules .= "\n";
+            foreach my $depfile (@deplist)
+              {
+                $output_rules .= subst ('AMDEP_TRUE') . "-include $depfile\n";
+                $clean_dirs{dirname ($depfile)} = DIST_CLEAN;
+              }
+          }
+      }
     else
-    {
-       define_variable ('depcomp', INTERNAL, '');
-    }
+      {
+        define_variable ('depcomp', INTERNAL, '');
+      }
 
     my %done;
 
@@ -1453,9 +1447,9 @@ sub handle_single_transform
        my $renamed = 0;
        my ($linker, $object);
 
-       # This records whether we've seen a derived source file (e.g.
-       # yacc output).
-       my $derived_source = 0;
+        # This records whether we've seen a derived source file (e.g., yacc
+        # or lex output).
+        my $derived_source;
 
        # This holds the 'aggregate context' of the file we are
        # currently examining.  If the file is compiled with
@@ -1506,17 +1500,36 @@ sub handle_single_transform
            # Now extract linker and other info.
            $linker = $lang->linker;
 
-           my $this_obj_ext;
-           if (defined $source_extension)
-           {
-               $this_obj_ext = $source_extension;
-               $derived_source = 1;
-           }
-           else
-           {
-               $this_obj_ext = $obj;
-           }
-           $object = $base . $this_obj_ext;
+            my $this_obj_ext;
+            if (defined $source_extension)
+              {
+                $this_obj_ext = $source_extension;
+                $derived_source = 1;
+              }
+            else
+              {
+                $this_obj_ext = $obj;
+                $derived_source = 0;
+                # Don't ever place built object files in $(srcdir),
+                # even when sources are specified explicitly as (say)
+                # '$(srcdir)/foo.c' or '$(top_srcdir)/foo.c'.
+                # See automake bug#13928.
+                my @d = split '/', $directory;
+                if (@d > 0 && option 'subdir-objects')
+                  {
+                    my $d = $d[0];
+                    if ($d eq '$(srcdir)' or $d eq '${srcdir}')
+                      {
+                        shift @d;
+                      }
+                    elsif ($d eq '$(top_srcdir)' or $d eq '${top_srcdir}')
+                      {
+                        $d[0] = '$(top_builddir)';
+                      }
+                    $directory = join '/', @d;
+                  }
+              }
+            $object = $base . $this_obj_ext;
 
            if ($have_per_exec_flags)
            {
diff --git a/t/Makefile.inc b/t/Makefile.inc
index 15f0a52..c3e72fc 100644
--- a/t/Makefile.inc
+++ b/t/Makefile.inc
@@ -96,7 +96,6 @@ XFAIL_TESTS = \
   %D%/remake-timing-bug-pr8365.sh \
   %D%/remake-am-pr10111.sh \
   %D%/remake-m4-pr10111.sh \
-  %D%/subobj-vpath-pr13928.sh \
   %D%/var-undef-append.sh \
   $(perl_fake_XFAIL_TESTS)
  
diff --git a/t/depcomp8a.sh b/t/depcomp8a.sh
index c9d4910..2190800 100644
--- a/t/depcomp8a.sh
+++ b/t/depcomp8a.sh
@@ -48,14 +48,11 @@ int bar (void)
 END
 
 $ACLOCAL
-# 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
-
-LC_ALL=C grep 'include.*[^a-zA-Z0-9_/]sub/\$(DEPDIR)/bar\.P' Makefile.in
-$EGREP 'include.*/(\.|sub)/\$\(DEPDIR\)' Makefile.in && exit 1
+$AUTOMAKE -a
+grep '\.P' Makefile.in # For debugging.
+grep '\./\$(DEPDIR)/foo\.Po' Makefile.in
+grep '[^a-zA-Z0-9_/]sub/\$(DEPDIR)/bar\.Po' Makefile.in
+$EGREP '/(\.|sub)/\$\(DEPDIR\)' Makefile.in && exit 1
 
 $AUTOCONF
 # Don't reject slower dependency extractors, for better coverage.
diff --git a/t/depcomp8b.sh b/t/depcomp8b.sh
index 25a945a..7395b5b 100644
--- a/t/depcomp8b.sh
+++ b/t/depcomp8b.sh
@@ -42,10 +42,10 @@ libtoolize
 $ACLOCAL
 $AUTOMAKE -a
 
-grep include Makefile.in # For debugging.
-LC_ALL=C grep 'include.*\./\$(DEPDIR)/foo\.P' Makefile.in
-LC_ALL=C grep 'include.*[^a-zA-Z0-9_/]sub/\$(DEPDIR)/bar\.P' Makefile.in
-$EGREP 'include.*/(\.|sub)/\$\(DEPDIR\)' Makefile.in && exit 1
+grep '\.P' Makefile.in # For debugging.
+grep '\./\$(DEPDIR)/foo\.Plo' Makefile.in
+grep '[^a-zA-Z0-9_/]sub/\$(DEPDIR)/bar\.Plo' Makefile.in
+$EGREP '/(\.|sub)/\$\(DEPDIR\)' Makefile.in && exit 1
 
 $AUTOCONF
 # Don't reject slower dependency extractors, for better coverage.
diff --git a/t/extra-sources.sh b/t/extra-sources.sh
index 2ff7f8b..ffea3f5 100644
--- a/t/extra-sources.sh
+++ b/t/extra-sources.sh
@@ -21,7 +21,7 @@
 
 echo AC_PROG_CC >> configure.ac
 
-cat > Makefile.am << 'END'
+cat > Makefile.am <<'END'
 bin_PROGRAMS = www
 www_SOURCES = www.c
 EXTRA_www_SOURCES = xtra.c
diff --git a/t/internals.tap b/t/internals.tap
index eede974..cc997c3 100644
--- a/t/internals.tap
+++ b/t/internals.tap
@@ -37,11 +37,17 @@ T ()
   cd T$i.d
   {
     echo 'include ../defn.mk'
+    # Make sure $(shell ...) invocations use a POSIX shell -- /bin/sh is
+    # borked and non-POSIX on a few systems, most notably Solaris 10.
+    # That has already caused spurious failures in the past.
+    echo "SHELL = ${SHELL}"
     echo 'lower = abcdefghijklmnopqrstuvwxyz'
     echo 'upper = ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     echo 'digits = 0123456789'
+    # The rest of the makefile come from the standard input passed to this
+    # function.
+    cat
   } > Makefile
-  cat >> Makefile
   test_name=$1; shift
   command_ok_ "$test_name" $MAKE ${1+"$@"} test
   cd ..
diff --git a/t/lex-depend-cxx.sh b/t/lex-depend-cxx.sh
index 5412e9c..3e2821f 100644
--- a/t/lex-depend-cxx.sh
+++ b/t/lex-depend-cxx.sh
@@ -83,6 +83,12 @@ $AUTOCONF
 ./configure --enable-dependency-tracking
 
 $MAKE
+
+# For debugging.
+for f in $(find . -name '*.Po'); do
+  cat $f
+done
+
 $MAKE test-deps-exist
 
 $sleep
diff --git a/t/lex-depend-grep.sh b/t/lex-depend-grep.sh
index dedea2d..70e5cb8 100644
--- a/t/lex-depend-grep.sh
+++ b/t/lex-depend-grep.sh
@@ -40,7 +40,7 @@ $AUTOMAKE -a
 $EGREP '([mj]oe|_[01234]|include|\.P)' Makefile.in # For debugging.
 
 for x in joe moe _0 _1 _2 _3 _4; do
-  grep "include.*$x\.Po" Makefile.in
+  $EGREP '\$\(DEPDIR\)/'"$x"'\.Po( |$)' Makefile.in
 done
 
 :
diff --git a/t/subobj-indir-pr13928.sh b/t/subobj-indir-pr13928.sh
index afad53b..7626996 100644
--- a/t/subobj-indir-pr13928.sh
+++ b/t/subobj-indir-pr13928.sh
@@ -38,12 +38,21 @@ END
 mkdir s
 echo 'int main(void) { return 0; }' > s/foo.c
 
-$ACLOCAL && $AUTOCONF && $AUTOMAKE -a || fatal_ "autotools failed"
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
 
 ./configure
 $MAKE
-test -f s/.deps/foo.Po
+
+test -d s/.deps
+if ! grep '^am_cv_CC_dependencies_compiler_type=none$' config.log; then
+  # This file is not created if the compiler does not support generation
+  # of dependency tracking information.
+  test -f s/.deps/foo.Po
+fi
 find . | $FGREP '$(src)' && exit 1
+
 $MAKE distcheck
 
 :
diff --git a/t/subobj-pr13928-more-langs.sh b/t/subobj-pr13928-more-langs.sh
new file mode 100644
index 0000000..323e248
--- /dev/null
+++ b/t/subobj-pr13928-more-langs.sh
@@ -0,0 +1,138 @@
+#! /bin/sh
+# Copyright (C) 2015 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Expose part of automake bug#13928, also for non-C languages: if the
+# subdir-objects option is in use and a source file is listed in a
+# _SOURCES variable with a leading $(srcdir) component, Automake will
+# generate a Makefile that tries to create the corresponding object
+# file in $(srcdir) as well.
+
+required='cc c++ fortran77 fortran'
+. test-init.sh
+
+cat >> configure.ac <<'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_F77
+AC_PROG_FC
+AM_CONDITIONAL([OBVIOUS], [:])
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+SUBDIRS = sub
+
+LESS = m/o/r/e
+
+noinst_PROGRAMS = test test2
+test_SOURCES = $(srcdir)/test.f90
+
+test2_SOURCES = $(indir)
+
+indir = ${indir2} $(empty)
+indir2 =
+if OBVIOUS
+indir2 += ${srcdir}/$(LESS)///test.f
+else
+endif
+
+test-objs:
+       ls -la @srcdir@ .
+        :
+       test ! -f @srcdir@/test.$(OBJEXT)
+       test -f test.$(OBJEXT)
+       test ! -f @srcdir@/m/o/r/e/test.$(OBJEXT)
+       test -f m/o/r/e/test.$(OBJEXT)
+        :
+       test ! -f @srcdir@/bar.$(OBJEXT)
+       test -f bar.$(OBJEXT)
+       test ! -f @srcdir@/baz.$(OBJEXT)
+       test -f baz.$(OBJEXT)
+        :
+       test ! -d @srcdir@/$(DEPDIR)
+       test ! -d @srcdir@/m/o/r/e/$(DEPDIR)
+       test -d $(DEPDIR)
+       test -d m/o/r/e/$(DEPDIR)
+
+check-local: test-objs
+END
+
+mkdir sub
+cat > sub/Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = foo
+foo = baz
+foo_SOURCES = foo.h \
+             $(top_srcdir)/bar.cc \
+              ${top_srcdir}/$(foo).c
+END
+
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkfiles='Makefile.in sub/Makefile.in'
+$EGREP '(test|ba[rz])\.|DEPDIR|dirstamp|srcdir' $mkfiles # For debugging.
+$EGREP '\$.(top_)?srcdir./(test|ba[rz]|\$.foo.)\.[o$]' $mkfiles && exit 1
+$FGREP '\$.(top_)?srcdir./.*$(am__dirstamp)' $mkfiles && exit 1
+$FGREP '\$.(top_)?srcdir./.*$(DEPDIR)' $mkfiles && exit 1
+
+cat > test.f90 <<'EOF'
+      program foo
+      stop
+      end
+EOF
+
+mkdir -p m/o/r/e
+cp test.f90 m/o/r/e/test.f
+
+cat > sub/foo.h <<'END'
+#ifdef __cplusplus
+extern "C"
+#endif
+int foo (void);
+END
+
+cat > bar.cc <<'END'
+#include "foo.h"
+#include <iostream>
+int main (void)
+{
+  std::cout << "OK!" << "\n";
+  return foo ();
+}
+END
+
+cat > baz.c <<'END'
+#include "foo.h"
+int foo (void)
+{
+  return 0;
+}
+END
+
+mkdir build
+cd build
+../configure
+
+$MAKE
+$MAKE test-objs
+$MAKE distcheck
+
+:
diff --git a/t/subobj-vpath-pr13928.sh b/t/subobj-vpath-pr13928.sh
index a10d657..a7db9d8 100644
--- a/t/subobj-vpath-pr13928.sh
+++ b/t/subobj-vpath-pr13928.sh
@@ -22,39 +22,106 @@
 required=cc
 . test-init.sh
 
-cat >> configure.ac << 'END'
+cat >> configure.ac <<'END'
 AC_PROG_CC
 AM_PROG_CC_C_O
+AM_CONDITIONAL([OBVIOUS], [:])
+AC_CONFIG_FILES([sub/Makefile])
 AC_OUTPUT
 END
 
 cat > Makefile.am <<'END'
 AUTOMAKE_OPTIONS = subdir-objects
-noinst_PROGRAMS = test
+SUBDIRS = sub
+
+LESS = more
+
+noinst_PROGRAMS = test test2
 test_SOURCES = $(srcdir)/test.c
+
+test2_SOURCES = $(indir)
+
+indir =
+if OBVIOUS
+indir += ${srcdir}/$(LESS)/test.c
+else
+endif
+
 test-objs:
-       test ! -f $(srcdir)/test.$(OBJEXT)
+       ls -la @srcdir@ .
+        :
+       test ! -f @srcdir@/test.$(OBJEXT)
        test -f test.$(OBJEXT)
+       test ! -f @srcdir@/more/test.$(OBJEXT)
+       test -f more/test.$(OBJEXT)
+        :
+       test ! -f @srcdir@/bar.$(OBJEXT)
+       test -f bar.$(OBJEXT)
+       test ! -f @srcdir@/baz.$(OBJEXT)
+       test -f baz.$(OBJEXT)
+        :
+       test ! -d @srcdir@/$(DEPDIR)
+       test ! -d @srcdir@/more/$(DEPDIR)
+       test -d $(DEPDIR)
+       test -d more/$(DEPDIR)
+
+check-local: test-objs
+END
+
+mkdir sub
+cat > sub/Makefile.am <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = foo
+foo_SOURCES = foo.h \
+             $(top_srcdir)/bar.c \
+              ${top_srcdir}/baz.c
+END
+
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkfiles='Makefile.in sub/Makefile.in'
+$EGREP '(test|ba[rz])\.|DEPDIR|dirstamp|srcdir' $mkfiles # For debugging.
+$EGREP '\$.(top_)?srcdir./(test|ba[rz])\.[o$]' $mkfiles && exit 1
+$FGREP '\$.(top_)?srcdir./.*$(am__dirstamp)' $mkfiles && exit 1
+$FGREP '\$.(top_)?srcdir./.*$(DEPDIR)' $mkfiles && exit 1
+
+cat > test.c <<'END'
+int main (void)
+{
+  return 0;
+}
 END
 
-$ACLOCAL && $AUTOCONF && $AUTOMAKE -a || fatal_ "autotools failed"
+mkdir more
+cp test.c more/test.c
 
-$EGREP 'test\.|DEPDIR|dirstamp|srcdir' Makefile.in || : # For debugging.
-$EGREP '\$.srcdir./test\.[o$]' Makefile.in && exit 1
-$FGREP '$(srcdir)/$(am__dirstamp)' Makefile.in && exit 1
-$FGREP '$(srcdir)/$(DEPDIR)' && exit 1
+echo 'int foo (void);' > sub/foo.h
 
-cat > test.c << 'END'
+cat > bar.c <<'END'
+#include "foo.h"
 int main (void)
 {
+  return foo ();
+}
+END
+
+cat > baz.c <<'END'
+#include "foo.h"
+int foo (void)
+{
   return 0;
 }
 END
 
-mkdir build && cd build || fatal "preparation of build directory failed"
-../configure || fatal_ "./configure failed"
+mkdir build
+cd build
+../configure
 
 $MAKE
 $MAKE test-objs
+$MAKE distcheck
 
 :
diff --git a/t/vala-mix2.sh b/t/vala-mix2.sh
index 0725100..5ad1b5d 100644
--- a/t/vala-mix2.sh
+++ b/t/vala-mix2.sh
@@ -17,7 +17,7 @@
 # Vala sources, C and C++ sources and C and C++ headers in the same
 # program.  Functional test.  See automake bug#10894.
 
-required='valac cc c++ pkg-config'
+required='valac gcc g++ pkg-config'
 . test-init.sh
 
 cat >> configure.ac <<'END'
@@ -90,8 +90,8 @@ have_generated_files ()
 have_generated_files
 
 # Remake rules are not uselessly triggered.
-$MAKE -q
 $MAKE -n | $FGREP vala.stamp && exit 1
+$MAKE -q
 
 # But are triggered when they should.
 for file in zardoz.vala foo.h bar.c baz.c zen.hh master.cxx; do


hooks/post-receive
-- 
GNU Automake



reply via email to

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