aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/gnome.py18
-rw-r--r--test cases/frameworks/7 gnome/gdbus/com.example.Sample.xml10
-rw-r--r--test cases/frameworks/7 gnome/gdbus/gdbusprog.c8
-rw-r--r--test cases/frameworks/7 gnome/gdbus/meson.build9
-rw-r--r--test cases/frameworks/7 gnome/meson.build2
5 files changed, 47 insertions, 0 deletions
diff --git a/modules/gnome.py b/modules/gnome.py
index f6d13a9..c0e391f 100644
--- a/modules/gnome.py
+++ b/modules/gnome.py
@@ -89,6 +89,24 @@ class GnomeModule:
target_g = build.CustomTarget(targetname, state.subdir, kwargs)
return target_g
+ def gdbus_codegen(self, state, args, kwargs):
+ if len(args) != 2:
+ raise MesonException('Gdbus_codegen takes two arguments, name and xml file.')
+ namebase = args[0]
+ xml_file = args[1]
+ cmd = ['gdbus-codegen']
+ if 'interface_prefix' in kwargs:
+ cmd += ['--interface-prefix', kwargs.pop('interface_prefix')]
+ if 'namespace' in kwargs:
+ cmd += ['--c-namespace', kwargs.pop('namespace')]
+ cmd += ['--generate-c-code', os.path.join(state.subdir, namebase), '@INPUT@']
+ outputs = [namebase + '.c', namebase + '.h']
+ custom_kwargs = {'input' : xml_file,
+ 'output' : outputs,
+ 'command' : cmd
+ }
+ return build.CustomTarget(namebase + '-gdbus', state.subdir, custom_kwargs)
+
def initialize():
mlog.log('Warning, glib compiled dependencies will not work until this upstream issue is fixed:',
mlog.bold('https://bugzilla.gnome.org/show_bug.cgi?id=745754'))
diff --git a/test cases/frameworks/7 gnome/gdbus/com.example.Sample.xml b/test cases/frameworks/7 gnome/gdbus/com.example.Sample.xml
new file mode 100644
index 0000000..9ece885
--- /dev/null
+++ b/test cases/frameworks/7 gnome/gdbus/com.example.Sample.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node>
+ <interface name="com.example">
+ <method name="Hello">
+ <arg direction="in" type="s" name="name"/>
+ <arg direction="out" type="s" name="greeting"/>
+ </method>
+ </interface>
+</node>
diff --git a/test cases/frameworks/7 gnome/gdbus/gdbusprog.c b/test cases/frameworks/7 gnome/gdbus/gdbusprog.c
new file mode 100644
index 0000000..b42b6fe
--- /dev/null
+++ b/test cases/frameworks/7 gnome/gdbus/gdbusprog.c
@@ -0,0 +1,8 @@
+#include"generated-gdbus.h"
+
+int main(int argc, char **argv) {
+ SampleComExample *s;
+ s = sample_com_example_skeleton_new();
+ g_object_unref(s);
+ return 0;
+}
diff --git a/test cases/frameworks/7 gnome/gdbus/meson.build b/test cases/frameworks/7 gnome/gdbus/meson.build
new file mode 100644
index 0000000..6aa2849
--- /dev/null
+++ b/test cases/frameworks/7 gnome/gdbus/meson.build
@@ -0,0 +1,9 @@
+gdbus_src = gnome.gdbus_codegen('generated-gdbus', 'com.example.Sample.xml',
+interface_prefix : 'com.example.',
+namespace : 'Sample')
+
+gdbus_exe = executable('gdbus-test', 'gdbusprog.c',
+gdbus_src,
+include_directories : include_directories('..'),
+dependencies : giounix)
+test('gdbus', gdbus_exe)
diff --git a/test cases/frameworks/7 gnome/meson.build b/test cases/frameworks/7 gnome/meson.build
index 4a45e62..ceddb5e 100644
--- a/test cases/frameworks/7 gnome/meson.build
+++ b/test cases/frameworks/7 gnome/meson.build
@@ -2,6 +2,7 @@ project('gobject-introspection', 'c')
gnome = import('gnome')
gio = dependency('gio-2.0')
+giounix = dependency('gio-unix-2.0')
glib = dependency('glib-2.0')
gobj = dependency('gobject-2.0')
gir = dependency('gobject-introspection-1.0')
@@ -10,4 +11,5 @@ gmod = dependency('gmodule-2.0')
subdir('resources')
subdir('gir')
subdir('schemas')
+subdir('gdbus')