diff options
author | Zeeshan Ali <zeeshanak@gnome.org> | 2019-03-30 18:04:26 +0100 |
---|---|---|
committer | Zeeshan Ali <zeeshanak@gnome.org> | 2019-04-07 15:11:47 +0200 |
commit | fd61e128ee3a5f288efa0951360305aacedea500 (patch) | |
tree | 8d95cc163a5583c1c87bf9aa45d2e0a369f72ecc | |
parent | e832e7b0640e520db31ffe98cf371d9794531c8b (diff) | |
download | geoclue-wip/rust.tar.gz |
WIP: Generate Rust code for our D-Bus interfaceswip/rust
-rwxr-xr-x | interface/dbus-codegen-rust.py | 11 | ||||
-rw-r--r-- | interface/meson.build | 38 |
2 files changed, 48 insertions, 1 deletions
diff --git a/interface/dbus-codegen-rust.py b/interface/dbus-codegen-rust.py new file mode 100755 index 0000000..69d85a0 --- /dev/null +++ b/interface/dbus-codegen-rust.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import sys +import os + +if len(sys.argv) < 4: + print('Usage: CODEGEN_BINARY OUTPUT_FILE INPUT_FILE') + + sys.exit(-1) + +os.system(sys.argv[1] + ">" + sys.argv[2] + "<" + sys.argv[3]) diff --git a/interface/meson.build b/interface/meson.build index 9e230a7..e15e12b 100644 --- a/interface/meson.build +++ b/interface/meson.build @@ -1,6 +1,33 @@ dbus_interface_dir = join_paths(datadir, 'dbus-1', 'interfaces') geoclue_iface_sources = [] +geoclue_iface_rust_sources = [] + +# Fetch dbus-codegen-rust command +cargo = find_program('cargo') +dbus_codegen_rs_fetch_cmd = [ + cargo, + 'install', 'dbus-codegen', + '--bin', 'dbus-codegen-rust', + '--root', meson.current_build_dir() ] +dbus_codegen_rs_dep = custom_target( + 'dbus-codegen-rs-dep', + output: 'dbus-codegen-rs-dep.out', + capture: true, + command: dbus_codegen_rs_fetch_cmd) + +dbus_codegen_rs = join_paths( + meson.current_build_dir(), + 'bin', + 'dbus-codegen-rust') +python = find_program('python3') +dbus_codegen_rs_wrapper = find_program('dbus-codegen-rust.py') +dbus_codegen_rs_cmd = [ + python, + dbus_codegen_rs_wrapper, + dbus_codegen_rs, + '@OUTPUT@', + '@INPUT@'] # Client interface client_interface_xml = 'org.freedesktop.GeoClue2.Client.xml' @@ -10,6 +37,15 @@ geoclue_iface_sources += gnome.gdbus_codegen( interface_prefix: 'org.freedesktop.GeoClue2.', namespace: 'GClueDBus', docbook: 'docs') +geoclue_iface_rust_sources += custom_target( + 'gclue-client-interface', + input: client_interface_xml, + output: 'client-dbus.rs', + install: true, + install_dir: dbus_interface_dir, + depends: dbus_codegen_rs_dep, + command: dbus_codegen_rs_cmd) + # Location interface location_interface_xml = 'org.freedesktop.GeoClue2.Location.xml' geoclue_iface_sources += gnome.gdbus_codegen( @@ -18,6 +54,7 @@ geoclue_iface_sources += gnome.gdbus_codegen( interface_prefix: 'org.freedesktop.GeoClue2.', namespace: 'GClueDBus', docbook: 'docs') + # Manager interface manager_interface_xml = 'org.freedesktop.GeoClue2.Manager.xml' geoclue_iface_sources += gnome.gdbus_codegen( @@ -81,7 +118,6 @@ interface_files = [ location_interface_xml, # Provide a single interface file too for backwards compatiblity. # At least gnome-settings-daemon currently relies on that. unified_interface_xml = 'org.freedesktop.GeoClue2.xml' -python = find_program('python3') create_interface = find_program('create-unified-xml.py') cmd = [python, create_interface, '@OUTPUT@', '@INPUT@' ] |