1gnome = import('gnome')
2dbus_src = gnome.gdbus_codegen(
3    'sm.puri.OSK0',
4    join_paths(meson.source_root() / 'data' / 'dbus', 'sm.puri.OSK0.xml')
5)
6
7config_h = configure_file(
8    input: 'config.h.in',
9    output: 'config.h',
10    configuration: conf_data
11)
12
13sources = [
14  config_h,
15  'dbus.c',
16  'imservice.c',
17  'popover.c',
18  'server-context-service.c',
19  'wayland.c',
20  '../eek/eek.c',
21  '../eek/eek-element.c',
22  '../eek/eek-gtk-keyboard.c',
23  '../eek/eek-keyboard.c',
24  '../eek/eek-renderer.c',
25  '../eek/eek-types.c',
26  '../eek/layersurface.c',
27  dbus_src,
28  '../eekboard/eekboard-context-service.c',
29  #  '../eekboard/eekboard-xklutil.c',
30  squeekboard_resources,
31  wl_proto_sources,
32]
33
34cc = meson.get_compiler('c')
35
36
37deps = [
38#  dependency('glib-2.0', version: '>=2.26.0'),
39  dependency('gio-2.0', version: '>=2.26.0'),
40  dependency('gio-unix-2.0'),
41  dependency('gnome-desktop-3.0', version: '>=3.0'),
42  dependency('gtk+-3.0', version: '>=3.0'),
43  dependency('libfeedback-0.0'),
44  dependency('wayland-client', version: '>=1.14'),
45  dependency('xkbcommon'),
46  cc.find_library('m'),
47  cc.find_library('rt'),
48  cc.find_library('dl'),
49  cc.find_library('pthread'),
50#  dependency('libxklavier'), # FIXME remove
51]
52
53rslibs = custom_target(
54    'rslibs',
55    build_by_default: true,
56    build_always_stale: true,
57    output: ['librs.a'],
58    install: false,
59    console: true,
60    command: [cargo_build] + ['@OUTPUT@', '--lib'] + cargo_build_flags,
61    depends: cargo_toml,
62)
63
64build_rstests = custom_target(
65    'build_rstests',
66    build_by_default: false,
67    # HACK: this target needs to build before all the tests,
68    # but it doesn't produce anything stable.
69    # Declaring build_by_default with some random but irrelevant output
70    # ensures that it's always built as it should
71    build_always_stale: true,
72    output: ['src'],
73    install: false,
74    console: true,
75    command: [cargo_script, 'test', '--no-run'] + cargo_build_flags,
76    depends: [rslibs, cargo_toml], # no point building tests if the code itself fails
77)
78
79test(
80    'rstest',
81    cargo_script,
82    args: ['test'] + cargo_build_flags,
83    env: ['SOURCE_DIR=' + meson.source_root()],
84    # this is a whole Carg-based test suite, let it run for a while
85    timeout: 900,
86    depends: [build_rstests, cargo_toml],
87)
88
89libsqueekboard = static_library('libsqueekboard',
90  sources,
91  link_with: [rslibs],
92  include_directories: [include_directories('..'), include_directories('../eek')],
93  dependencies: deps,
94  c_args: [
95    '-DTHEMESDIR="' + pkgdatadir + '/themes"',
96    '-DKEYBOARDSDIR="' + pkgdatadir + '/keyboards"',
97    '-DEEKBOARD_COMPILATION=1',
98    '-DEEK_COMPILATION=1'],
99)
100
101squeekboard = executable('squeekboard',
102  'server-main.c',
103  wl_proto_sources,
104  squeekboard_resources,
105  link_with: libsqueekboard,
106  include_directories: [include_directories('..'), include_directories('../eek')],
107  dependencies: deps,
108  install: true,
109  c_args: [
110    '-DTHEMESDIR="' + pkgdatadir + '/themes"',
111    '-DKEYBOARDSDIR="' + pkgdatadir + '/keyboards"',
112    '-DEEKBOARD_COMPILATION=1',
113    '-DEEK_COMPILATION=1'],
114)
115
116