From 8a27c08b05e4537d5061d30ddd8aad9dc52cf1c4 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 3 Jan 2018 18:32:07 +0000 Subject: Use GObject-based libraries in test case/vala/11 generated vapi Non-GObject-based libraries are not (reliably) introspectable, and this only happens to work by accident, at the moment. Briefly: In non-libtool mode, g-ir-scanner inspects the run-time dependencies of a generated executable to determine the shared library name an -l flag corresponds to. But this generated executable only references the libraries by *_get_type() functions. So, if the library doesn't contain any Gobject-based types, it is not referenced, and this inspection fails with PECOFF binaries. It seems that distutils doesn't currently decide to use --as-needed, so this just happens to work on ELF. --- test cases/vala/11 generated vapi/libbar/bar.c | 23 ++++++++++++++++++++--- test cases/vala/11 generated vapi/libbar/bar.h | 6 +++++- test cases/vala/11 generated vapi/libfoo/foo.c | 23 ++++++++++++++++++++--- test cases/vala/11 generated vapi/libfoo/foo.h | 6 +++++- test cases/vala/11 generated vapi/main.vala | 4 ++-- 5 files changed, 52 insertions(+), 10 deletions(-) (limited to 'test cases') diff --git a/test cases/vala/11 generated vapi/libbar/bar.c b/test cases/vala/11 generated vapi/libbar/bar.c index f0f5cb896..303714194 100644 --- a/test cases/vala/11 generated vapi/libbar/bar.c +++ b/test cases/vala/11 generated vapi/libbar/bar.c @@ -1,12 +1,29 @@ #include "bar.h" #include "foo.h" +struct _BarBar +{ + GObject parent_instance; +}; + +G_DEFINE_TYPE (BarBar, bar_bar, G_TYPE_OBJECT) + +static void +bar_bar_class_init (BarBarClass *klass) +{ +} + +static void +bar_bar_init (BarBar *self) +{ +} + /** - * bar_return_success: + * bar_bar_return_success: * * Returns 0 */ -int bar_return_success(void) +int bar_bar_return_success(void) { - return foo_return_success(); + return foo_foo_return_success(); } diff --git a/test cases/vala/11 generated vapi/libbar/bar.h b/test cases/vala/11 generated vapi/libbar/bar.h index 165b10490..4ca72704b 100644 --- a/test cases/vala/11 generated vapi/libbar/bar.h +++ b/test cases/vala/11 generated vapi/libbar/bar.h @@ -2,4 +2,8 @@ #pragma once -int bar_return_success(void); +#define BAR_TYPE_BAR (bar_bar_get_type()) + +G_DECLARE_FINAL_TYPE (BarBar, bar_bar, BAR, BAR, GObject) + +int bar_bar_return_success(void); diff --git a/test cases/vala/11 generated vapi/libfoo/foo.c b/test cases/vala/11 generated vapi/libfoo/foo.c index 0413ac558..dd2b891fa 100644 --- a/test cases/vala/11 generated vapi/libfoo/foo.c +++ b/test cases/vala/11 generated vapi/libfoo/foo.c @@ -1,11 +1,28 @@ #include "foo.h" +struct _FooFoo +{ + GObject parent_instance; +}; + +G_DEFINE_TYPE (FooFoo, foo_foo, G_TYPE_OBJECT) + +static void +foo_foo_class_init (FooFooClass *klass) +{ +} + +static void +foo_foo_init (FooFoo *self) +{ +} + /** - * foo_return_success: + * foo_foo_return_success: * * Returns 0 */ -int foo_return_success(void) +int foo_foo_return_success(void) { - return 0; + return 0; } diff --git a/test cases/vala/11 generated vapi/libfoo/foo.h b/test cases/vala/11 generated vapi/libfoo/foo.h index f09256d7c..e1887d8c3 100644 --- a/test cases/vala/11 generated vapi/libfoo/foo.h +++ b/test cases/vala/11 generated vapi/libfoo/foo.h @@ -2,4 +2,8 @@ #pragma once -int foo_return_success(void); +#define FOO_TYPE_FOO (foo_foo_get_type()) + +G_DECLARE_FINAL_TYPE (FooFoo, foo_foo, Foo, FOO, GObject) + +int foo_foo_return_success(void); diff --git a/test cases/vala/11 generated vapi/main.vala b/test cases/vala/11 generated vapi/main.vala index 303ab33ea..d61fba0f4 100644 --- a/test cases/vala/11 generated vapi/main.vala +++ b/test cases/vala/11 generated vapi/main.vala @@ -3,7 +3,7 @@ using Bar; class Main : GLib.Object { public static int main(string[] args) { - var ignore = Foo.return_success(); - return Bar.return_success(); + var ignore = Foo.Foo.return_success(); + return Bar.Bar.return_success(); } } -- cgit v1.2.3