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
* 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.
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
$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/;
}
$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
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");
lex-subobj-nodep.test \
remake-am-pr10111.test \
remake-m4-pr10111.test \
-vala-vpath.test \
txinfo5.test
include $(srcdir)/parallel-tests.am
cat > hello.vala <<'END'
void main ()
{
- stdout.printf ("foo\n");
+ stdout.printf ("foofoofoo\n");
}
END
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
+
:
$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
+: