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