2009-05-17 Jürg Billeter <j@bitron.ch>
+ Vala: Use $(srcdir) in rebuild rules.
+ 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.
+ * automake.in (lang_vala_finish_target): Rebuild files in
+ $(srcdir).
+ * tests/vala2.test: Test rebuild rules from VPATH build.
+
Vala: Add and test rebuild rules for generated header and vapi files.
valac will generate additional files when using, for example, -H in
VALAFLAGS. We need to recognize these options and add appropriate
{
foreach my $file ($var->value_as_list_recursive)
{
- $output_rules .= "$file: ${derived}_vala.stamp\n".
+ $output_rules .= "\$(srcdir)/$file: \$(srcdir)/${derived}_vala.stamp\n".
"\t\@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/;
}
'--vapi', '--internal-vapi', '--gir')))
{
my $headerfile = $flag;
- $output_rules .= "$headerfile: ${derived}_vala.stamp\n".
+ $output_rules .= "\$(srcdir)/$headerfile: \$(srcdir)/${derived}_vala.stamp\n".
"\t\@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