meson: Add optional GSettings support
authorArnaud Rebillout <arnaud.rebillout@collabora.com>
Sun, 21 Oct 2018 08:39:30 +0000 (15:39 +0700)
committerArun Raghavan <arun@arunraghavan.net>
Thu, 27 Dec 2018 11:55:56 +0000 (17:25 +0530)
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
meson.build
meson_options.txt
src/modules/gsettings/meson.build [new file with mode: 0644]
src/modules/gsettings/post-install.sh [new file with mode: 0755]
src/modules/meson.build

index 1b82597..4fed044 100644 (file)
@@ -39,10 +39,13 @@ assert(prefix.startswith('/'), 'Prefix is not absolute: "@0@"'.format(prefix))
 
 bindir = join_paths(prefix, get_option('bindir'))
 libdir = join_paths(prefix, get_option('libdir'))
+libexecdir = join_paths(prefix, get_option('libexecdir'))
 datadir = join_paths(prefix, get_option('datadir'))
 localstatedir = join_paths(prefix, get_option('localstatedir'))
 sysconfdir = join_paths(prefix, get_option('sysconfdir'))
 
+pulselibexecdir = join_paths(libexecdir, 'pulse')
+
 pulsedspdir = get_option('pulsedspdir')
 if pulsedspdir == ''
   join_paths(libdir, 'pulseaudio')
@@ -230,6 +233,11 @@ if dbus_dep.found()
   cdata.set('HAVE_DBUS', 1)
 endif
 
+gio_dep = dependency('gio-2.0', version : '>= 2.26.0', required : get_option('gsettings'))
+if gio_dep.found()
+  cdata.set('HAVE_GSETTINGS', 1)
+endif
+
 glib_dep = dependency('glib-2.0', version : '>= 2.4.0', required: get_option('glib'))
 if glib_dep.found()
   cdata.set('HAVE_GLIB', 1)
index a5e76f5..3d73a8a 100644 (file)
@@ -41,6 +41,9 @@ option('fftw',
 option('glib',
        type : 'feature', value : 'auto',
        description : 'Optional GLib 2 support')
+option('gsettings',
+       type : 'feature', value : 'auto',
+       description : 'Optional GSettings support')
 option('gtk',
        type : 'feature', value : 'auto',
        description : 'Optional Gtk+ 3 support')
diff --git a/src/modules/gsettings/meson.build b/src/modules/gsettings/meson.build
new file mode 100644 (file)
index 0000000..7a0a034
--- /dev/null
@@ -0,0 +1,37 @@
+# GSettings helper
+
+gsettings_helper_sources = [
+  'gsettings-helper.c',
+]
+
+gsettings_helper = executable('gsettings-helper',
+  gsettings_helper_sources,
+  c_args : pa_c_args,
+  include_directories : [configinc, topinc],
+  link_with : [libpulsecommon, libpulse],
+  dependencies : [gio_dep],
+  install_dir : pulselibexecdir,
+  install : true,
+)
+
+# GSettings schemas
+
+compile_schemas = find_program('glib-compile-schemas', required : false)
+if compile_schemas.found()
+  test('Validate schema files in ' + meson.current_source_dir(),
+    compile_schemas,
+    args: ['--strict', '--dry-run', meson.current_source_dir()]
+  )
+endif
+
+install_data('org.freedesktop.pulseaudio.gschema.xml',
+  install_dir : join_paths(datadir, 'glib-2.0', 'schemas')
+)
+
+meson.add_install_script('post-install.sh', datadir)
+
+# Conversion from GConf to GSettings
+
+install_data('pulseaudio.convert',
+  install_dir : join_paths(datadir, 'GConf', 'gsettings')
+)
diff --git a/src/modules/gsettings/post-install.sh b/src/modules/gsettings/post-install.sh
new file mode 100755 (executable)
index 0000000..0262046
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+set -u
+
+DATADIR="$1"
+
+echo "Compiling GSettings schemas..."
+glib-compile-schemas "$DATADIR/glib-2.0/schemas"
index 90cfabd..8be0021 100644 (file)
@@ -137,6 +137,15 @@ if dbus_dep.found() and fftw_dep.found()
   ]
 endif
 
+if gio_dep.found()
+  subdir('gsettings')
+  all_modules += [
+    [ 'module-gsettings',
+      [ 'gsettings/module-gsettings.c', 'stdin-util.c', 'stdin-util.h' ],
+      [], ['-DPA_GSETTINGS_HELPER="' + pulselibexecdir + 'gsettings-helper"'] ]
+  ]
+endif
+
 if jack_dep.found()
   all_modules += [
     [ 'module-jack-sink', 'jack/module-jack-sink.c', [], [], [jack_dep] ],