valac is always run in srcdir as the generated files are distributed. So srcdir needs to be taken into account in the rebuild rules to not wrongly trigger a rebuild in the wrong directory.
Signed-off-by: Jürg Billeter <j...@bitron.ch> --- automake.in | 12 ++++++------ tests/vala2.test | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/automake.in b/automake.in index a2b735f..13dd79b 100755 --- a/automake.in +++ b/automake.in @@ -5942,10 +5942,10 @@ sub lang_vala_finish_target ($$) { foreach my $file ($var->value_as_list_recursive) { - $output_rules .= "$file: ${derived}_vala.stamp\n". + $output_rules .= "\$(srcdir)/$file: \$(srcdir)/${derived}_vala.stamp\n". "\...@if test -f \$@; then :; else \\\n". - "\t rm -f ${derived}_vala.stamp; \\\n". - "\t \$(MAKE) \$(AM_MAKEFLAGS) ${derived}_vala.stamp; \\\n". + "\t rm -f \$(srcdir)/${derived}_vala.stamp; \\\n". + "\t cd \$(srcdir) && \$(MAKE) \$(AM_MAKEFLAGS) ${derived}_vala.stamp; \\\n". "\tfi\n" if $file =~ s/(.*)\.vala$/$1.c/; } @@ -5962,10 +5962,10 @@ sub lang_vala_finish_target ($$) '--vapi', '--internal-vapi', '--gir'))) { my $headerfile = $flag; - $output_rules .= "$headerfile: ${derived}_vala.stamp\n". + $output_rules .= "\$(srcdir)/$headerfile: \$(srcdir)/${derived}_vala.stamp\n". "\...@if test -f \$@; then :; else \\\n". - "\t rm -f ${derived}_vala.stamp; \\\n". - "\t \$(MAKE) \$(AM_MAKEFLAGS) ${derived}_vala.stamp; \\\n". + "\t rm -f \$(srcdir)/${derived}_vala.stamp; \\\n". + "\t cd \$(srcdir) && \$(MAKE) \$(AM_MAKEFLAGS) ${derived}_vala.stamp; \\\n". "\tfi\n"; # valac is not used when building from dist tarballs diff --git a/tests/vala2.test b/tests/vala2.test index bfa38cd..d9dcfc5 100755 --- a/tests/vala2.test +++ b/tests/vala2.test @@ -81,3 +81,7 @@ cd build $MAKE $MAKE distcheck +# test rebuild rules from builddir +touch ../src/zardoz.vala +$MAKE + -- 1.6.3