aboutsummaryrefslogtreecommitdiff
path: root/test cases/vala
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2018-05-10 13:59:10 +0530
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2018-05-10 12:31:04 +0200
commit8a9f7cf1332a0be9b2e90d39483c6aa7c67fffee (patch)
treea9df0dc2c69144444662e5b9da73d38ce79923bd /test cases/vala
parent9565293f16c43056433c797d441eb2a2a0e25a46 (diff)
downloadmeson-8a9f7cf1332a0be9b2e90d39483c6aa7c67fffee.zip
meson-8a9f7cf1332a0be9b2e90d39483c6aa7c67fffee.tar.gz
meson-8a9f7cf1332a0be9b2e90d39483c6aa7c67fffee.tar.bz2
vala: Fix shared_module linking with export_dynamic executable
Need to generate a vapi and a header, and then use that in the shared module. Needed for GNOME games. Closes https://github.com/mesonbuild/meson/issues/3538
Diffstat (limited to 'test cases/vala')
-rw-r--r--test cases/vala/24 export dynamic shared module/app.vala21
-rw-r--r--test cases/vala/24 export dynamic shared module/meson.build20
-rw-r--r--test cases/vala/24 export dynamic shared module/module.vala3
3 files changed, 44 insertions, 0 deletions
diff --git a/test cases/vala/24 export dynamic shared module/app.vala b/test cases/vala/24 export dynamic shared module/app.vala
new file mode 100644
index 0000000..e016ecd
--- /dev/null
+++ b/test cases/vala/24 export dynamic shared module/app.vala
@@ -0,0 +1,21 @@
+const string MODULE_LIB = "libapp_module.so";
+
+delegate int ModuleFunc ();
+
+public int app_func () {
+ return 41;
+}
+
+int main () {
+ Module module;
+ void *func;
+ unowned ModuleFunc mfunc;
+
+ module = Module.open (MODULE_LIB, ModuleFlags.BIND_LAZY);
+ module.symbol ("module_func", out func);
+ mfunc = (ModuleFunc) func;
+
+ print ("%d\n", mfunc ());
+
+ return 0;
+}
diff --git a/test cases/vala/24 export dynamic shared module/meson.build b/test cases/vala/24 export dynamic shared module/meson.build
new file mode 100644
index 0000000..9aa9fd9
--- /dev/null
+++ b/test cases/vala/24 export dynamic shared module/meson.build
@@ -0,0 +1,20 @@
+project ('test', ['c', 'vala'], version: '0.1')
+
+deps = [
+ dependency ('glib-2.0'),
+ dependency ('gmodule-2.0'),
+]
+
+app = executable (
+ 'app',
+ ['app.vala'],
+ dependencies: deps,
+ export_dynamic: true
+)
+
+shared_module (
+ 'app_module',
+ ['module.vala'],
+ link_with: app,
+ dependencies : deps,
+)
diff --git a/test cases/vala/24 export dynamic shared module/module.vala b/test cases/vala/24 export dynamic shared module/module.vala
new file mode 100644
index 0000000..5553727
--- /dev/null
+++ b/test cases/vala/24 export dynamic shared module/module.vala
@@ -0,0 +1,3 @@
+public int module_func () {
+ return app_func() + 1;
+}