summaryrefslogtreecommitdiffstats
path: root/gnome-settings-daemon/meson.build
blob: 6c1790037b30329bd7885c4ec058d68cf1dfa37e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
sources = files(
  'gnome-settings-bus.c',
  'gnome-settings-profile.c'
)

dbus_ifaces = [
  ['SessionManager', 'gsd-session-manager-glue'],
  ['ScreenSaver', 'gsd-screen-saver-glue'],
  ['Shell', 'gsd-shell-glue']
]

dbus_headers = []

codegen = find_program('codegen.py')

foreach iface: dbus_ifaces
  name = 'org.gnome.' + iface[0]

  # FIXME: Opaque target return from gdbus_codegen
  # Please see:
  #   https://bugzilla.gnome.org/show_bug.cgi?id=791015
  #   https://github.com/mesonbuild/meson/pull/2930
  '''
  dbus_sources += gnome.gdbus_codegen(
    iface[1],
    name + '.xml',
    interface_prefix: name + '.',
    namespace: 'Gsd',
    annotations: [name, 'org.gtk.GDBus.C.Name', iface[0]]
  )
  '''

  # FIXME: Ugly workaround that simulates the generation of
  #        two different targets.
  dbus_sources = custom_target(
    iface[1],
    input: name + '.xml',
    output: [iface[1] + '.h', iface[1] + '.c'],
    command: [codegen, iface[0], iface[1], meson.current_build_dir(), '@INPUT@', '@OUTPUT@']
  )

  dbus_headers += dbus_sources[0]
  sources += dbus_sources[1]
endforeach

deps = [gio_unix_dep]

if enable_wayland
  deps += wayland_client_dep
endif

libgsd = shared_library(
  'gsd',
  sources: sources + dbus_headers,
  include_directories: top_inc,
  dependencies: deps,
  install: true,
  install_dir: gsd_pkglibdir
)

libgsd_dep = declare_dependency(
  sources: dbus_headers,
  include_directories: include_directories('.'),
  link_with: libgsd
)