vala: fix VPATH builds
authorRyan Lortie <desrt@desrt.ca>
Sat, 7 Jan 2012 06:08:11 +0000 (01:08 -0500)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sun, 8 Jan 2012 11:07:21 +0000 (12:07 +0100)
This change fixes automake bug#9859.

* automake.in (lang_vala_finish_target): Create the stamp file
'${derived}_vala.stamp' in $(srcdir), not in $(builddir).
Also, don't try to chdir to the $(srcdir) to trigger the rebuild
rules, since that is just wrong in a VPATH setup.
* tests/vala-vpath.test, tests/vala2.test: Extend to catch more
possible VPATH issues.
* tests/Makefile.am (XFAIL_TESTS): Remove 'vala-vpath.test'.
* NEWS, THANKS: Update.

Co-authored-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Copyright-paperwork-exempt: yes

NEWS
THANKS
automake.in
tests/Makefile.am
tests/vala-vpath.test
tests/vala2.test

diff --git a/NEWS b/NEWS
index 2b09bb5..9f2c6a1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -129,6 +129,8 @@ Bugs fixed in 1.11.0a:
 
 * Long-standing bugs:
 
+  - Vala support now works better in VPATH setups.
+
   - The "deleted header file problem" for *.am files is avoided by stub
     rules.  This allows `make' to trigger a rerun of `automake' also if
     some previously needed `.am' file has been removed.
diff --git a/THANKS b/THANKS
index e9c6db8..fbb7eb4 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -315,6 +315,7 @@ Roman Fietze                roman.fietze@telemotive.de
 Ronald Landheer                ronald@landheer.com
 Roumen Petrov          bugtrack@roumenpetrov.info
 Rusty Ballinger                rusty@rlyeh.engr.sgi.com
+Ryan Lortie            desrt@desrt.ca
 Ryan T. Sammartino     ryants@shaw.ca
 Sam Hocevar            sam@zoy.org
 Sam Sirlin             sam@kalessin.jpl.nasa.gov
index a689b63..e1d6319 100644 (file)
@@ -6023,7 +6023,7 @@ sub lang_vala_finish_target ($$)
           $output_rules .= "\$(srcdir)/$file: \$(srcdir)/${derived}_vala.stamp\n"
             . "\t\@if test -f \$@; then :; else rm -f \$(srcdir)/${derived}_vala.stamp; fi\n"
             . "\t\@if test -f \$@; then :; else \\\n"
-            . "\t  \$(am__cd) \$(srcdir) && \$(MAKE) \$(AM_MAKEFLAGS) ${derived}_vala.stamp; \\\n"
+            . "\t  \$(MAKE) \$(AM_MAKEFLAGS) \$(srcdir)/${derived}_vala.stamp; \\\n"
            . "\tfi\n"
             if $file =~ s/(.*)\.vala$/$1.c/;
         }
@@ -6043,7 +6043,7 @@ sub lang_vala_finish_target ($$)
              $output_rules .= "\$(srcdir)/$headerfile: \$(srcdir)/${derived}_vala.stamp\n"
                . "\t\@if test -f \$@; then :; else rm -f \$(srcdir)/${derived}_vala.stamp; fi\n"
                . "\t\@if test -f \$@; then :; else \\\n"
-               . "\t  \$(am__cd) \$(srcdir) && \$(MAKE) \$(AM_MAKEFLAGS) ${derived}_vala.stamp; \\\n"
+               . "\t  \$(MAKE) \$(AM_MAKEFLAGS) \$(srcdir)/${derived}_vala.stamp; \\\n"
                . "\tfi\n";
 
              # valac is not used when building from dist tarballs
@@ -6076,8 +6076,8 @@ sub lang_vala_finish_target ($$)
   my $silent = silent_flag ();
 
   $output_rules .=
-    "${derived}_vala.stamp: \$(${derived}_SOURCES)\n".
-    "\t${verbose}${compile} \$(${derived}_SOURCES)\n".
+    "\$(srcdir)/${derived}_vala.stamp: \$(${derived}_SOURCES)\n".
+    "\t${verbose}cd \$(srcdir) && ${compile} \$(${derived}_SOURCES)\n".
     "\t${silent}touch \$@\n";
 
   push_dist_common ("${derived}_vala.stamp");
index 9db0a03..8817b64 100644 (file)
@@ -30,7 +30,6 @@ pr8365-remake-timing.test \
 lex-subobj-nodep.test \
 remake-am-pr10111.test \
 remake-m4-pr10111.test \
-vala-vpath.test \
 txinfo5.test
 
 include $(srcdir)/parallel-tests.am
index 99e30db..9d60dbb 100755 (executable)
@@ -38,7 +38,7 @@ END
 cat > hello.vala <<'END'
 void main ()
 {
-  stdout.printf ("foo\n");
+  stdout.printf ("foofoofoo\n");
 }
 END
 
@@ -50,6 +50,23 @@ mkdir build
 cd build
 ../configure || Exit 77
 $MAKE
+grep foofoofoo ../hello.c
 $MAKE distcheck
 
+# Rebuild rules work also in VPATH builds.
+cat > ../hello.vala <<'END'
+int main ()
+{
+  stdout.printf ("barbarbar\n");
+  return 0;
+}
+END
+
+$MAKE
+grep barbarbar ../hello.c
+
+# Rebuild rules are not uselessly triggered.
+$MAKE -q
+$MAKE -n | grep '\.stamp' && Exit 1
+
 :
index e559540..a8a3d90 100755 (executable)
@@ -81,7 +81,14 @@ cd build
 $MAKE
 $MAKE distcheck
 
-# test rebuild rules from builddir
-touch ../src/zardoz.vala
+# Test rebuild rules from builddir.
+rm -f ../src/zardoz.c
 $MAKE
+grep 'Zardoz!' ../src/zardoz.c
+sed 's/Zardoz!/FooBar!/' ../src/zardoz.c > t
+mv -f t ../src/zardoz.c
+$MAKE
+grep 'FooBar!' ../src/zardoz.c
+grep 'Zardoz!' ../src/zardoz.c && Exit 1
 
+: