+2009-05-17 Jürg Billeter <j@bitron.ch>
+
+ 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
+ rebuild rules to fix parallel build.
+ * automake.in (lang_vala_finish_target): Recognize -H, -h,
+ --header, --internal-header, --vapi, --internal-api, --gir flags
+ to valac and rebuild rules for generated headers; distribute
+ and maintainer-clean them.
+ * tests/vala2.test: Test rebuild rules.
+
2009-05-17 Jürg Billeter <j@bitron.ch>
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
}
}
+ # Add rebuild rules for generated header and vapi files
+ my $flags = var ($derived . '_VALAFLAGS');
+ if ($flags)
+ {
+ my $lastflag = '';
+ foreach my $flag ($flags->value_as_list_recursive)
+ {
+ if (grep (/$lastflag/, ('-H', '-h', '--header', '--internal-header',
+ '--vapi', '--internal-vapi', '--gir')))
+ {
+ my $headerfile = $flag;
+ $output_rules .= "$headerfile: ${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".
+ "\tfi\n";
+
+ # valac is not used when building from dist tarballs
+ # distribute the generated files
+ push_dist_common ($headerfile);
+ $clean_files{$headerfile} = MAINTAINER_CLEAN;
+ }
+ $lastflag = $flag;
+ }
+ }
+
my $compile = $self->compile;
# Rewrite each occurrence of `AM_VALAFLAGS' in the compile
cat > 'src/Makefile.am' <<'END'
bin_PROGRAMS = zardoz
+zardoz_VALAFLAGS = -H zardoz.h
zardoz_CFLAGS = $(GOBJECT_CFLAGS)
zardoz_LDADD = $(GOBJECT_LIBS)
zardoz_SOURCES = zardoz.vala
./configure || Exit 77
$MAKE
+
+# test rebuild rules
+rm src/zardoz.h
+$MAKE -C src zardoz.h
+
$MAKE distcheck
$MAKE distclean
mkdir build