From 97339d3be4b6f4cab28b8dac9cb467d769049a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Andr=C3=A9=20Vadla=20Ravn=C3=A5s?= Date: Fri, 12 May 2017 16:59:07 +0200 Subject: [PATCH] ninja: Also include Vala headers in generated headers --- mesonbuild/backend/ninjabackend.py | 5 ++++- test cases/vala/16 mixed dependence/app.vala | 7 +++++++ test cases/vala/16 mixed dependence/meson.build | 12 ++++++++++++ test cases/vala/16 mixed dependence/mixer-glue.c | 5 +++++ test cases/vala/16 mixed dependence/mixer.vala | 3 +++ test cases/vala/17 plain consumer/app.c | 11 +++++++++++ test cases/vala/17 plain consumer/badger.vala | 10 ++++++++++ test cases/vala/17 plain consumer/meson.build | 12 ++++++++++++ 8 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 test cases/vala/16 mixed dependence/app.vala create mode 100644 test cases/vala/16 mixed dependence/meson.build create mode 100644 test cases/vala/16 mixed dependence/mixer-glue.c create mode 100644 test cases/vala/16 mixed dependence/mixer.vala create mode 100644 test cases/vala/17 plain consumer/app.c create mode 100644 test cases/vala/17 plain consumer/badger.vala create mode 100644 test cases/vala/17 plain consumer/meson.build diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 0e8e86226..076940b11 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -233,6 +233,9 @@ int dummy; for src in genlist.get_outputs(): if self.environment.is_header(src): header_deps.append(self.get_target_generated_dir(target, genlist, src)) + if 'vala' in target.compilers and not isinstance(target, build.Executable): + vala_header = File.from_built_file(self.get_target_dir(target), target.vala_header) + header_deps.append(vala_header) # Recurse and find generated headers for dep in target.link_targets: if isinstance(dep, (build.StaticLibrary, build.SharedLibrary)): @@ -1081,7 +1084,7 @@ int dummy; args += ['--library=' + target.name] # Outputted header hname = os.path.join(self.get_target_dir(target), target.vala_header) - args += ['-H', hname] + args += ['-H', hname, '--use-header'] valac_outputs.append(hname) # Outputted vapi file vapiname = os.path.join(self.get_target_dir(target), target.vala_vapi) diff --git a/test cases/vala/16 mixed dependence/app.vala b/test cases/vala/16 mixed dependence/app.vala new file mode 100644 index 000000000..5b545436b --- /dev/null +++ b/test cases/vala/16 mixed dependence/app.vala @@ -0,0 +1,7 @@ +namespace App { + public static int main(string[] args) { + var mixer = new Mixer(); + print("Current volume is %u\n", mixer.get_volume()); + return 0; + } +} diff --git a/test cases/vala/16 mixed dependence/meson.build b/test cases/vala/16 mixed dependence/meson.build new file mode 100644 index 000000000..e6967be00 --- /dev/null +++ b/test cases/vala/16 mixed dependence/meson.build @@ -0,0 +1,12 @@ +project('mixed dependence', 'vala', 'c') + +deps = [dependency('glib-2.0'), dependency('gobject-2.0')] + +mixer = static_library('mixer', 'mixer.vala', 'mixer-glue.c', + dependencies : deps) + +app = executable('app', 'app.vala', + link_with : mixer, + dependencies : deps) + +test('valamixeddependencetest', app) diff --git a/test cases/vala/16 mixed dependence/mixer-glue.c b/test cases/vala/16 mixed dependence/mixer-glue.c new file mode 100644 index 000000000..d6c0c37e0 --- /dev/null +++ b/test cases/vala/16 mixed dependence/mixer-glue.c @@ -0,0 +1,5 @@ +#include "mixer.h" + +guint mixer_get_volume(Mixer *mixer) { + return 11; +} diff --git a/test cases/vala/16 mixed dependence/mixer.vala b/test cases/vala/16 mixed dependence/mixer.vala new file mode 100644 index 000000000..f207132be --- /dev/null +++ b/test cases/vala/16 mixed dependence/mixer.vala @@ -0,0 +1,3 @@ +public class Mixer : Object { + public extern uint get_volume(); +} diff --git a/test cases/vala/17 plain consumer/app.c b/test cases/vala/17 plain consumer/app.c new file mode 100644 index 000000000..c8d0010c3 --- /dev/null +++ b/test cases/vala/17 plain consumer/app.c @@ -0,0 +1,11 @@ +#include "badger.h" + +int main(int argc, char *argv[]) { + Badger *badger; + + badger = g_object_new(TYPE_BADGER, NULL); + g_print("Badger whose name is '%s'\n", badger_get_name(badger)); + g_object_unref(badger); + + return 0; +} diff --git a/test cases/vala/17 plain consumer/badger.vala b/test cases/vala/17 plain consumer/badger.vala new file mode 100644 index 000000000..1aaeda6c0 --- /dev/null +++ b/test cases/vala/17 plain consumer/badger.vala @@ -0,0 +1,10 @@ +public class Badger : Object { + public string name { + get; + construct; + } + + Badger() { + Object(name: "Joe"); + } +} diff --git a/test cases/vala/17 plain consumer/meson.build b/test cases/vala/17 plain consumer/meson.build new file mode 100644 index 000000000..e98bca122 --- /dev/null +++ b/test cases/vala/17 plain consumer/meson.build @@ -0,0 +1,12 @@ +project('plain consumer', 'vala', 'c') + +deps = [dependency('glib-2.0'), dependency('gobject-2.0')] + +badger = static_library('badger', 'badger.vala', + dependencies : deps) + +app = executable('app', 'app.c', + link_with : badger, + dependencies : deps) + +test('valaplainconsumertest', app)