From: Jürg Billeter Date: Fri, 15 May 2009 13:50:59 +0000 (+0200) Subject: Vala: Add and test rebuild rules for generated header and vapi files. X-Git-Tag: v1.11~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9d837379de93389244d75dfbcb6d33ed66d4f9f;p=thirdparty%2Fautomake.git 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. Signed-off-by: Jürg Billeter Signed-off-by: Ralf Wildenhues --- diff --git a/ChangeLog b/ChangeLog index a8589d354..b0f6f7afa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-05-17 Jürg Billeter + + 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 Ralf Wildenhues diff --git a/automake.in b/automake.in index be525053b..a2b735f02 100755 --- a/automake.in +++ b/automake.in @@ -5951,6 +5951,32 @@ sub lang_vala_finish_target ($$) } } + # 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 diff --git a/tests/vala2.test b/tests/vala2.test index a6efba98a..bfa38cd3b 100755 --- a/tests/vala2.test +++ b/tests/vala2.test @@ -44,6 +44,7 @@ END 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 @@ -67,6 +68,11 @@ $AUTOMAKE -a ./configure || Exit 77 $MAKE + +# test rebuild rules +rm src/zardoz.h +$MAKE -C src zardoz.h + $MAKE distcheck $MAKE distclean mkdir build