summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2018-01-03 18:32:07 +0000
committerJon Turney <jon.turney@dronecode.org.uk>2018-01-06 14:23:53 +0000
commit8a27c08b05e4537d5061d30ddd8aad9dc52cf1c4 (patch)
tree4adabb3a57bb13d08fc23845b12a9d798104bf9e
parentbbdd6ecd4c36d5f66217fad0e53fdc42bfa59e90 (diff)
downloadmeson-8a27c08b05e4537d5061d30ddd8aad9dc52cf1c4.tar.gz
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.
-rw-r--r--test cases/vala/11 generated vapi/libbar/bar.c23
-rw-r--r--test cases/vala/11 generated vapi/libbar/bar.h6
-rw-r--r--test cases/vala/11 generated vapi/libfoo/foo.c23
-rw-r--r--test cases/vala/11 generated vapi/libfoo/foo.h6
-rw-r--r--test cases/vala/11 generated vapi/main.vala4
5 files changed, 52 insertions, 10 deletions
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();
}
}