summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorIñigo Martínez <inigomartinez@gmail.com>2018-02-01 08:35:23 +0100
committerBastien Nocera <hadess@hadess.net>2018-02-05 17:42:49 +0100
commitf180fc7cd655d29d6fdae7e71e2cb6bc8672e823 (patch)
treec7552bdd1780262b13f4458cbbff1302b6016c0a /plugins
parent8351ff4d451da2004efc36a205e369b3207ecfe6 (diff)
downloadgnome-settings-daemon-f180fc7cd655d29d6fdae7e71e2cb6bc8672e823.tar.gz
build: Port to meson build system
meson is a build system focused on speed an ease of use, which helps speeding up the software development. This patch adds meson support along autotools. https://bugzilla.gnome.org/show_bug.cgi?id=793087
Diffstat (limited to 'plugins')
-rw-r--r--plugins/a11y-settings/meson.build29
-rw-r--r--plugins/clipboard/meson.build31
-rw-r--r--plugins/color/meson.build63
-rw-r--r--plugins/common/meson.build89
-rw-r--r--plugins/datetime/meson.build49
-rw-r--r--plugins/dummy/meson.build47
-rw-r--r--plugins/housekeeping/meson.build49
-rw-r--r--plugins/keyboard/meson.build30
-rw-r--r--plugins/media-keys/meson.build66
-rw-r--r--plugins/meson.build48
-rw-r--r--plugins/mouse/meson.build53
-rw-r--r--plugins/power/meson.build154
-rw-r--r--plugins/print-notifications/meson.build44
-rw-r--r--plugins/rfkill/meson.build32
-rw-r--r--plugins/screensaver-proxy/meson.build26
-rw-r--r--plugins/sharing/meson.build33
-rw-r--r--plugins/smartcard/meson.build58
-rw-r--r--plugins/sound/meson.build29
-rw-r--r--plugins/wacom/meson.build74
-rw-r--r--plugins/xsettings/meson.build57
20 files changed, 1061 insertions, 0 deletions
diff --git a/plugins/a11y-settings/meson.build b/plugins/a11y-settings/meson.build
new file mode 100644
index 00000000..f088466e
--- /dev/null
+++ b/plugins/a11y-settings/meson.build
@@ -0,0 +1,29 @@
+desktop = 'org.gnome.SettingsDaemon.A11ySettings.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-a11y-settings-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ gio_dep,
+ gsettings_desktop_dep
+]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/clipboard/meson.build b/plugins/clipboard/meson.build
new file mode 100644
index 00000000..df25cc7a
--- /dev/null
+++ b/plugins/clipboard/meson.build
@@ -0,0 +1,31 @@
+desktop = 'org.gnome.SettingsDaemon.Clipboard.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-clipboard-manager.c',
+ 'list.c',
+ 'main.c',
+ 'xutils.c'
+)
+
+deps = plugins_deps + [
+ gtk_x11_dep,
+ x11_dep
+]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/color/meson.build b/plugins/color/meson.build
new file mode 100644
index 00000000..f026c0a6
--- /dev/null
+++ b/plugins/color/meson.build
@@ -0,0 +1,63 @@
+desktop = 'org.gnome.SettingsDaemon.Color.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gcm-edid.c',
+ 'gnome-datetime-source.c',
+ 'gsd-color-calibrate.c',
+ 'gsd-color-manager.c',
+ 'gsd-color-profiles.c',
+ 'gsd-color-state.c',
+ 'gsd-night-light.c',
+ 'gsd-night-light-common.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ colord_dep,
+ gnome_desktop_dep,
+ lcms_dep,
+ libcanberra_gtk_dep,
+ libgeoclue_dep,
+ libnotify_dep,
+ m_dep,
+]
+
+cflags += ['-DBINDIR="@0@"'.format(gsd_bindir)]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
+
+sources = files(
+ 'gcm-edid.c',
+ 'gcm-self-test.c',
+ 'gnome-datetime-source.c',
+ 'gsd-night-light.c',
+ 'gsd-night-light-common.c'
+)
+
+test_unit = 'gcm-self-test'
+
+exe = executable(
+ test_unit,
+ sources,
+ include_directories: top_inc,
+ dependencies: deps,
+ c_args: '-DTESTDATADIR="@0@"'.format(join_paths(meson.current_source_dir(), 'test-data'))
+)
+
+test(test_unit, exe)
diff --git a/plugins/common/meson.build b/plugins/common/meson.build
new file mode 100644
index 00000000..2a0f4b28
--- /dev/null
+++ b/plugins/common/meson.build
@@ -0,0 +1,89 @@
+common_inc = include_directories('.')
+
+sources = files(
+ 'gsd-device-manager.c',
+ 'gsd-device-manager-x11.c',
+ 'gsd-device-mapper.c',
+ 'gsd-input-helper.c',
+ 'gsd-settings-migrate.c',
+ 'gsd-shell-helper.c'
+)
+
+enums_header = 'gsd-device-manager.h'
+
+enums = 'gsd-common-enums'
+
+sources += gnome.mkenums(
+ enums + '.h',
+ sources: enums_header,
+ fhead: '#ifndef GSD_COMMON_ENUMS_H\n#define GSD_COMMON_ENUMS_H\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n',
+ fprod: '/* enumerations from "@filename@" */\n',
+ vhead: 'GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define GSD_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n',
+ ftail: 'G_END_DECLS\n\n#endif /* !GSD_COMMON_ENUMS_H */'
+)
+
+sources += gnome.mkenums(
+ enums + '.c',
+ sources: enums_header,
+ fhead: '#include "gsd-device-manager.h"\n#include "gsd-common-enums.h"\n',
+ fprod: '\n/* enumerations from "@filename@" */',
+ vhead: 'GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {',
+ vprod: ' { @VALUENAME@, "@VALUENAME@", "@valuenick@" },',
+ vtail: ' { 0, NULL, NULL }\n };\n etype = g_@type@_register_static ("@EnumName@", values);\n }\n return etype;\n}\n'
+)
+
+resource_data = files('gtk.css')
+
+sources += gnome.compile_resources(
+ 'gsd-resources',
+ 'gsd.gresources.xml',
+ c_name: 'gsd',
+ dependencies: resource_data
+)
+
+deps = plugins_deps + [
+ gnome_desktop_dep,
+ gtk_x11_dep,
+ x11_dep,
+ dependency('kbproto'),
+ dependency('xi')
+]
+
+ldflags = []
+if host_is_darwin
+ ldflags += ['-Wl,-bundle_loader,@0@'.format(join_paths(), meson.build_root(), meson.project_name(), meson.project_name())]
+endif
+
+if enable_gudev
+ sources += files('gsd-device-manager-udev.c')
+
+ deps += gudev_dep
+endif
+
+if enable_wacom
+ deps += libwacom_dep
+endif
+
+libcommon = shared_module(
+ plugin_name,
+ sources: sources,
+ include_directories: [top_inc, data_inc],
+ dependencies: deps,
+ c_args: cflags,
+ link_args: ldflags
+)
+
+libcommon_dep = declare_dependency(
+ include_directories: common_inc,
+ link_with: libcommon
+)
+
+executable(
+ 'gsd-test-input-helper',
+ 'test-input-helper.c',
+ include_directories: top_inc,
+ dependencies: gtk_dep,
+ link_with: libcommon,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/datetime/meson.build b/plugins/datetime/meson.build
new file mode 100644
index 00000000..a21d48f4
--- /dev/null
+++ b/plugins/datetime/meson.build
@@ -0,0 +1,49 @@
+desktop = 'org.gnome.SettingsDaemon.Datetime.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+install_data(
+ 'backward',
+ install_dir: join_paths(gsd_pkgdatadir, 'datetime')
+)
+
+sources = files(
+ 'gsd-datetime-manager.c',
+ 'gsd-timezone-monitor.c',
+ 'main.c',
+ 'tz.c',
+ 'weather-tz.c'
+)
+
+sources += gnome.gdbus_codegen(
+ 'timedated',
+ 'timedated1-interface.xml',
+ interface_prefix: 'org.freedesktop.'
+)
+
+deps = plugins_deps + [
+ geocode_glib_dep,
+ gweather_dep,
+ libgeoclue_dep,
+ libnotify_dep,
+ m_dep,
+ polkit_gobject_dep
+]
+
+cflags += ['-DGNOMECC_DATA_DIR="@0@"'.format(gsd_pkgdatadir)]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/dummy/meson.build b/plugins/dummy/meson.build
new file mode 100644
index 00000000..a4e76187
--- /dev/null
+++ b/plugins/dummy/meson.build
@@ -0,0 +1,47 @@
+desktops = []
+if not enable_smartcard
+ desktops += ['org.gnome.SettingsDaemon.Smartcard']
+endif
+
+if not enable_cups
+ desktops += ['org.gnome.SettingsDaemon.PrintNotifications']
+endif
+
+if not enable_rfkill
+ desktops += ['org.gnome.SettingsDaemon.Rfkill']
+endif
+
+if not enable_wacom
+ desktops += ['org.gnome.SettingsDaemon.Wacom']
+endif
+
+foreach desktop: desktops
+ dummy_conf = configuration_data()
+ dummy_conf.set('libexecdir', gsd_libexecdir)
+ dummy_conf.set('pluginname', desktop)
+
+ configure_file(
+ input: 'org.gnome.SettingsDaemon.Dummy.desktop.in',
+ output: desktop + '.desktop',
+ configuration: dummy_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+ )
+endforeach
+
+sources = files(
+ 'gsd-dummy-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [gio_dep]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/housekeeping/meson.build b/plugins/housekeeping/meson.build
new file mode 100644
index 00000000..bc743705
--- /dev/null
+++ b/plugins/housekeeping/meson.build
@@ -0,0 +1,49 @@
+desktop = 'org.gnome.SettingsDaemon.Housekeeping.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+common_files = files(
+ 'gsd-disk-space.c',
+ 'gsd-disk-space-helper.c'
+)
+
+sources = common_files + files(
+ 'gsd-housekeeping-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ gtk_dep,
+ libnotify_dep
+]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
+
+programs = [
+ 'gsd-disk-space-test',
+ 'gsd-empty-trash-test',
+ 'gsd-purge-temp-test'
+]
+
+foreach program: programs
+ executable(
+ program,
+ common_files + [program + '.c'],
+ include_directories: top_inc,
+ dependencies: deps
+ )
+endforeach
diff --git a/plugins/keyboard/meson.build b/plugins/keyboard/meson.build
new file mode 100644
index 00000000..413424a5
--- /dev/null
+++ b/plugins/keyboard/meson.build
@@ -0,0 +1,30 @@
+desktop = 'org.gnome.SettingsDaemon.Keyboard.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-keyboard-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ gtk_dep,
+ libcommon_dep,
+ x11_dep
+]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, data_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/media-keys/meson.build b/plugins/media-keys/meson.build
new file mode 100644
index 00000000..18696e96
--- /dev/null
+++ b/plugins/media-keys/meson.build
@@ -0,0 +1,66 @@
+desktop = 'org.gnome.SettingsDaemon.MediaKeys.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'bus-watch-namespace.c',
+ 'gsd-media-keys-manager.c',
+ 'gsd-screenshot-utils.c',
+ 'main.c',
+ 'mpris-controller.c'
+)
+
+marshal = 'gsd-marshal'
+
+sources += gnome.genmarshal(
+ marshal,
+ sources: marshal + '.list',
+ prefix: marshal.underscorify(),
+ internal: true
+)
+
+sources += gnome.gdbus_codegen(
+ 'shell-key-grabber',
+ 'org.gnome.ShellKeyGrabber.xml',
+ interface_prefix: 'org.gnome.',
+ namespace: 'Shell'
+)
+
+deps = plugins_deps + [
+ gsettings_desktop_dep,
+ libcanberra_gtk_dep,
+ libcommon_dep,
+ libgvc_dep,
+ libpulse_mainloop_glib_dep,
+ m_dep,
+ upower_glib_dep
+]
+
+if enable_gudev
+ deps += gudev_dep
+endif
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, data_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
+
+program = 'audio-selection-test'
+
+executable(
+ program,
+ program + '.c',
+ include_directories: top_inc,
+ dependencies: deps
+)
diff --git a/plugins/meson.build b/plugins/meson.build
new file mode 100644
index 00000000..6babd8ec
--- /dev/null
+++ b/plugins/meson.build
@@ -0,0 +1,48 @@
+enabled_plugins = [
+ 'a11y-settings',
+ 'clipboard',
+ 'color',
+ 'datetime',
+ 'dummy',
+ 'power',
+ 'housekeeping',
+ 'keyboard',
+ 'media-keys',
+ 'mouse',
+ 'screensaver-proxy',
+ 'sharing',
+ 'sound',
+ 'xsettings'
+]
+
+if enable_smartcard
+ enabled_plugins += ['smartcard']
+endif
+
+if enable_wacom
+ enabled_plugins += ['wacom']
+endif
+
+if enable_cups
+ enabled_plugins += ['print-notifications']
+endif
+
+if enable_rfkill
+ enabled_plugins += ['rfkill']
+endif
+
+plugins_conf = configuration_data()
+plugins_conf.set('libexecdir', gsd_libexecdir)
+
+plugins_deps = [libgsd_dep]
+
+plugins_cflags = ['-DGNOME_SETTINGS_LOCALEDIR="@0@"'.format(gsd_localedir)]
+
+foreach plugin_name: ['common'] + enabled_plugins
+ cflags = [
+ '-DG_LOG_DOMAIN="@0@-plugin"'.format(plugin_name),
+ '-DPLUGIN_NAME="@0@"'.format(plugin_name),
+ ] + plugins_cflags
+
+ subdir(plugin_name)
+endforeach
diff --git a/plugins/mouse/meson.build b/plugins/mouse/meson.build
new file mode 100644
index 00000000..a01d2758
--- /dev/null
+++ b/plugins/mouse/meson.build
@@ -0,0 +1,53 @@
+desktop = 'org.gnome.SettingsDaemon.Mouse.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-mouse-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ gio_dep,
+ gsettings_desktop_dep,
+ libcommon_dep,
+ m_dep
+]
+
+cflags += ['-DLIBEXECDIR="@0@"'.format(gsd_libexecdir)]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, data_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
+
+sources = files(
+ 'gsd-locate-pointer.c',
+ 'gsd-timeline.c'
+)
+
+deps = [
+ gtk_dep,
+ m_dep,
+ x11_dep
+]
+
+executable(
+ 'gsd-locate-pointer',
+ sources,
+ include_directories: top_inc,
+ dependencies: deps,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/power/meson.build b/plugins/power/meson.build
new file mode 100644
index 00000000..652ce40c
--- /dev/null
+++ b/plugins/power/meson.build
@@ -0,0 +1,154 @@
+desktop = 'org.gnome.SettingsDaemon.Power.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gpm-common.c',
+ 'gsd-backlight-linux.c',
+ 'gsd-power-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ libcanberra_gtk_dep,
+ libcommon_dep,
+ libnotify_dep,
+ gnome_desktop_dep,
+ m_dep,
+ upower_glib_dep,
+ x11_dep,
+ xtst_dep,
+ dependency('xext')
+]
+
+if enable_gudev
+ deps += gudev_dep
+endif
+
+cflags += ['-DLIBEXECDIR="@0@"'.format(gsd_libexecdir)]
+
+gsd_power = executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, data_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
+
+sources = files('gsd-power-enums-update.c')
+
+enums_headers = files(
+ 'gsm-inhibitor-flag.h',
+ 'gsm-presence-flag.h'
+)
+
+enums = 'gsd-power-enums'
+
+sources += gnome.mkenums(
+ enums + '.h',
+ sources: enums_headers,
+ fhead: '#ifndef GSD_POWER_ENUMS_H\n#define GSD_POWER_ENUMS_H\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n',
+ fprod: '/* enumerations from "@filename@" */\n',
+ vhead: 'GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define GSD_POWER_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n',
+ ftail: 'G_END_DECLS\n\n#endif /* !GSD_POWER_ENUMS_H */'
+)
+
+sources += gnome.mkenums(
+ enums + '.c',
+ sources: enums_headers,
+ fhead: '#include "gsm-inhibitor-flag.h"\n#include "gsm-presence-flag.h"\n#include "gsd-power-enums.h"',
+ fprod: '\n/* enumerations from "@filename@" */',
+ vhead: 'GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {',
+ vprod: ' { @VALUENAME@, "@VALUENAME@", "@valuenick@" },',
+ vtail: ' { 0, NULL, NULL }\n };\n etype = g_@type@_register_static ("@EnumName@", values);\n }\n return etype;\n}\n'
+)
+
+gsd_power_enums_update = executable(
+ 'gsd-power-enums-update',
+ sources,
+ include_directories: top_inc,
+ dependencies: deps,
+ c_args: cflags
+)
+
+if enable_gudev
+ policy = 'org.gnome.settings-daemon.plugins.power.policy'
+
+ policy_in = configure_file(
+ input: policy + '.in.in',
+ output: policy + '.in',
+ configuration: plugins_conf
+ )
+
+ custom_target(
+ policy,
+ input: policy_in,
+ output: policy,
+ command: intltool_xml_cmd,
+ install: true,
+ install_dir: join_paths(gsd_datadir, 'polkit-1', 'actions')
+ )
+
+ sources = files(
+ 'gsd-backlight-helper.c',
+ 'gsd-backlight-linux.c'
+ )
+
+ deps = [
+ gudev_dep,
+ m_dep
+ ]
+
+ executable(
+ 'gsd-backlight-helper',
+ sources,
+ include_directories: top_inc,
+ dependencies: deps,
+ install: true,
+ install_dir: gsd_libexecdir
+ )
+endif
+
+output = 'gsdpowerconstants.py'
+
+gsdpowerconstants_py = custom_target(
+ output,
+ input: 'gsd-power-constants.h',
+ output: output,
+ build_by_default: true,
+ command: [join_paths(meson.current_source_dir(), 'gsd-power-constants-update.pl'), '@INPUT@', '@OUTPUT@']
+)
+
+output = 'gsdpowerenums.py'
+
+gsdpowerenums_py = custom_target(
+ output,
+ output: output,
+ capture: true,
+ build_by_default: true,
+ command: [gsd_power_enums_update]
+)
+
+test_py = find_program('test.py')
+
+envs = [
+ 'BUILDDIR=' + meson.current_build_dir(),
+ 'TOP_BUILDDIR=' + meson.build_root()
+]
+
+test(
+ 'test-power',
+ test_py,
+# args: 'PowerPluginTest.test_sleep_inactive_blank',
+ env: envs,
+ timeout: 300
+)
+
diff --git a/plugins/print-notifications/meson.build b/plugins/print-notifications/meson.build
new file mode 100644
index 00000000..241f305b
--- /dev/null
+++ b/plugins/print-notifications/meson.build
@@ -0,0 +1,44 @@
+desktop = 'org.gnome.SettingsDaemon.PrintNotifications.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-print-notifications-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ cups_dep,
+ gtk_dep,
+ libnotify_dep
+]
+
+cflags += ['-DLIBEXECDIR="@0@"'.format(gsd_libexecdir)]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
+
+program = 'gsd-printer'
+
+executable(
+ program,
+ program + '.c',
+ include_directories: top_inc,
+ dependencies: deps,
+ c_args: '-DGNOME_SETTINGS_LOCALEDIR="@0@"'.format(gsd_localedir),
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/rfkill/meson.build b/plugins/rfkill/meson.build
new file mode 100644
index 00000000..8a4d094d
--- /dev/null
+++ b/plugins/rfkill/meson.build
@@ -0,0 +1,32 @@
+desktop = 'org.gnome.SettingsDaemon.Rfkill.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+install_data(
+ '61-gnome-settings-daemon-rfkill.rules',
+ install_dir: join_paths(udev_dir, 'rules.d')
+)
+
+sources = files(
+ 'gsd-rfkill-manager.c',
+ 'rfkill-glib.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [gio_unix_dep]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/screensaver-proxy/meson.build b/plugins/screensaver-proxy/meson.build
new file mode 100644
index 00000000..dda0fed4
--- /dev/null
+++ b/plugins/screensaver-proxy/meson.build
@@ -0,0 +1,26 @@
+desktop = 'org.gnome.SettingsDaemon.ScreensaverProxy.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-screensaver-proxy-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [gio_dep]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/sharing/meson.build b/plugins/sharing/meson.build
new file mode 100644
index 00000000..5ab82652
--- /dev/null
+++ b/plugins/sharing/meson.build
@@ -0,0 +1,33 @@
+desktop = 'org.gnome.SettingsDaemon.Sharing.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-sharing-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ gio_unix_dep,
+ libnotify_dep
+]
+
+if enable_network_manager
+ deps += libnm_dep
+endif
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/smartcard/meson.build b/plugins/smartcard/meson.build
new file mode 100644
index 00000000..da256e25
--- /dev/null
+++ b/plugins/smartcard/meson.build
@@ -0,0 +1,58 @@
+desktop = 'org.gnome.SettingsDaemon.Smartcard.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-smartcard-manager.c',
+ 'gsd-smartcard-service.c',
+ 'gsd-smartcard-utils.c',
+ 'main.c'
+)
+
+enum_headers = files(
+ 'gsd-smartcard-manager.h',
+ 'gsd-smartcard-utils.h'
+)
+
+enum_types = 'gsd-smartcard-enum-types'
+
+sources += gnome.mkenums(
+ enum_types,
+ sources: enum_headers,
+ c_template: enum_types + '.c.in',
+ h_template: enum_types + '.h.in'
+)
+
+gdbus = 'org.gnome.SettingsDaemon.Smartcard'
+
+sources += gnome.gdbus_codegen(
+ gdbus,
+ gdbus + '.xml',
+ interface_prefix: gdbus + '.',
+ namespace: 'GsdSmartcardService',
+ object_manager: true
+)
+
+deps = plugins_deps + [
+ gio_unix_dep,
+ libnotify_dep,
+ nss_dep
+]
+
+cflags += ['-DGSD_SMARTCARD_MANAGER_NSS_DB="@0@"'.format(system_nssdb_dir)]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/sound/meson.build b/plugins/sound/meson.build
new file mode 100644
index 00000000..acba4371
--- /dev/null
+++ b/plugins/sound/meson.build
@@ -0,0 +1,29 @@
+desktop = 'org.gnome.SettingsDaemon.Sound.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+sources = files(
+ 'gsd-sound-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ gio_dep,
+ libpulse_mainloop_glib_dep
+]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
diff --git a/plugins/wacom/meson.build b/plugins/wacom/meson.build
new file mode 100644
index 00000000..064b5764
--- /dev/null
+++ b/plugins/wacom/meson.build
@@ -0,0 +1,74 @@
+desktop = 'org.gnome.SettingsDaemon.Wacom.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+policy = 'org.gnome.settings-daemon.plugins.wacom.policy'
+
+policy_in = configure_file(
+ input: policy + '.in.in',
+ output: policy + '.in',
+ configuration: plugins_conf
+)
+
+custom_target(
+ policy,
+ input: policy_in,
+ output: policy,
+ command: intltool_xml_cmd,
+ install: true,
+ install_dir: join_paths(gsd_datadir, 'polkit-1', 'actions')
+)
+
+sources = files(
+ 'gsd-wacom-manager.c',
+ 'gsd-wacom-oled.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ gtk_dep,
+ libcommon_dep,
+ m_dep,
+ pango_dep
+]
+
+cflags += ['-DLIBEXECDIR="@0@"'.format(gsd_libexecdir)]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, data_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
+
+if enable_gudev
+ deps = [
+ gudev_dep,
+ m_dep
+ ]
+
+ programs = [
+ 'gsd-wacom-led-helper',
+ 'gsd-wacom-oled-helper',
+ ]
+
+ foreach program: programs
+ executable(
+ program,
+ program + '.c',
+ include_directories: top_inc,
+ dependencies: deps,
+ install: true,
+ install_dir: gsd_libexecdir
+ )
+ endforeach
+endif
diff --git a/plugins/xsettings/meson.build b/plugins/xsettings/meson.build
new file mode 100644
index 00000000..6cfb8f7a
--- /dev/null
+++ b/plugins/xsettings/meson.build
@@ -0,0 +1,57 @@
+desktop = 'org.gnome.SettingsDaemon.XSettings.desktop'
+
+configure_file(
+ input: desktop + '.in',
+ output: desktop,
+ configuration: plugins_conf,
+ install: true,
+ install_dir: gsd_xdg_autostart
+)
+
+gsd_xsettings_gtk = files('gsd-xsettings-gtk.c')
+
+fc_monitor = files('fc-monitor.c')
+
+wm_button_layout_translation = files('wm-button-layout-translation.c')
+
+sources = gsd_xsettings_gtk + fc_monitor + wm_button_layout_translation + files(
+ 'gsd-remote-display-manager.c',
+ 'gsd-xsettings-manager.c',
+ 'xsettings-common.c',
+ 'xsettings-manager.c',
+ 'main.c'
+)
+
+deps = plugins_deps + [
+ gtk_dep,
+ x11_dep,
+ dependency('fontconfig')
+]
+
+cflags += ['-DGTK_MODULES_DIRECTORY="@0@"'.format(join_paths(gsd_pkglibdir, 'gtk-modules'))]
+
+executable(
+ 'gsd-' + plugin_name,
+ sources,
+ include_directories: [top_inc, common_inc, data_inc],
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+ install_dir: gsd_libexecdir
+)
+
+programs = [
+ ['test-gtk-modules', gsd_xsettings_gtk + ['test-gtk-modules.c'], cflags],
+ ['test-fontconfig-monitor', fc_monitor, cflags + ['-DFONTCONFIG_MONITOR_TEST']],
+ ['test-wm-button-layout-translations', wm_button_layout_translation + ['test-wm-button-layout-translations.c'], []]
+]
+
+foreach program: programs
+ executable(
+ program[0],
+ program[1],
+ include_directories: top_inc,
+ dependencies: deps,
+ c_args: program[2]
+ )
+endforeach