1spice_gtk_include += [include_directories('.')] 2 3# 4# Source files for spice-client-glib 5# 6 7# generate spice-version.h 8version_info = meson.project_version().split('.') 9major = '@0@'.format(version_info[0]) 10minor = '@0@'.format(version_info[1]) 11micro = '0' 12if version_info.length() > 2 13 micro = version_info[2].split('-')[0] 14endif 15version_data = configuration_data() 16version_data.set('SPICE_GTK_MAJOR_VERSION', major) 17version_data.set('SPICE_GTK_MINOR_VERSION', minor) 18version_data.set('SPICE_GTK_MICRO_VERSION', micro) 19spice_version_h = configure_file(input : 'spice-version.h.in', 20 output : 'spice-version.h', 21 configuration : version_data) 22 23spice_client_glib_headers = [ 24 spice_version_h, 25 'channel-cursor.h', 26 'channel-display.h', 27 'channel-inputs.h', 28 'channel-main.h', 29 'channel-playback.h', 30 'channel-port.h', 31 'channel-record.h', 32 'channel-smartcard.h', 33 'channel-usbredir.h', 34 'channel-webdav.h', 35 'qmp-port.h', 36 'smartcard-manager.h', 37 'spice-audio.h', 38 'spice-channel.h', 39 'spice-client.h', 40 'spice-file-transfer-task.h', 41 'spice-option.h', 42 'spice-session.h', 43 'spice-types.h', 44 'spice-uri.h', 45 'spice-util.h', 46 'usb-device-manager.h', 47] 48 49install_headers(spice_client_glib_headers, subdir : 'spice-client-glib-2.0') 50 51# generate spice-marshal.[ch] 52gnome = import('gnome') 53spice_marshals = gnome.genmarshal('spice-marshal', sources : 'spice-marshal.txt') 54 55# generate spice-glib-enums.[ch] 56spice_client_glib_enums = gnome.mkenums_simple('spice-glib-enums', 57 sources : ['spice-channel.h', 'channel-inputs.h', 'spice-session.h'], 58 install_header : true, 59 install_dir : join_paths(spice_gtk_includedir, 'spice-client-glib-2.0')) 60 61spice_client_glib_introspection_sources = [ 62 spice_client_glib_headers, 63 spice_client_glib_enums, 64 'channel-cursor.c', 65 'channel-display.c', 66 'channel-inputs.c', 67 'channel-main.c', 68 'channel-playback.c', 69 'channel-port.c', 70 'channel-record.c', 71 'channel-smartcard.c', 72 'channel-usbredir.c', 73 'channel-webdav.c', 74 'qmp-port.c', 75 'smartcard-manager.c', 76 'spice-audio.c', 77 'spice-channel.c', 78 'spice-client.c', 79 'spice-option.c', 80 'spice-session.c', 81 'spice-util.c', 82 'usb-device-manager.c', 83] 84 85spice_client_glib_sources = [ 86 spice_marshals, 87 spice_client_glib_introspection_sources, 88 'bio-gio.c', 89 'bio-gio.h', 90 'channel-base.c', 91 'channel-display-gst.c', 92 'channel-display-priv.h', 93 'channel-playback-priv.h', 94 'channel-usbredir-priv.h', 95 'client_sw_canvas.c', 96 'client_sw_canvas.h', 97 'coroutine.h', 98 'decode-glz.c', 99 'decode.h', 100 'decode-jpeg.c', 101 'decode-zlib.c', 102 'gio-coroutine.c', 103 'gio-coroutine.h', 104 'qmp-port.c', 105 'qmp-port.h', 106 'smartcard-manager-priv.h', 107 'spice-audio-priv.h', 108 'spice-channel-cache.h', 109 'spice-channel-priv.h', 110 'spice-common.h', 111 'spice-file-transfer-task.c', 112 'spice-file-transfer-task-priv.h', 113 'spice-glib-main.c', 114 'spice-gstaudio.c', 115 'spice-gstaudio.h', 116 'spice-option.h', 117 'spice-session-priv.h', 118 'spice-uri.c', 119 'spice-uri-priv.h', 120 'spice-util-priv.h', 121 'usb-device-manager-priv.h', 122 'usbutil.c', 123 'usbutil.h', 124 'vmcstream.c', 125 'vmcstream.h', 126] 127 128if spice_gtk_has_builtin_mjpeg 129 spice_client_glib_sources += 'channel-display-mjpeg.c' 130endif 131 132if spice_gtk_has_polkit 133 spice_client_glib_sources += ['usb-acl-helper.c', 134 'usb-acl-helper.h'] 135endif 136 137if spice_gtk_has_phodav 138 spice_client_glib_sources += ['giopipe.c', 139 'giopipe.h'] 140endif 141 142if spice_gtk_has_pulse 143 spice_client_glib_sources += ['spice-pulse.c', 144 'spice-pulse.h'] 145endif 146 147if spice_gtk_coroutine == 'gthread' 148 spice_client_glib_sources += 'coroutine_gthread.c' 149elif spice_gtk_coroutine == 'ucontext' 150 spice_client_glib_sources += ['continuation.c', 151 'continuation.h', 152 'coroutine_ucontext.c'] 153elif spice_gtk_coroutine == 'winfiber' 154 spice_client_glib_sources += 'coroutine_winfibers.c' 155endif 156 157if spice_gtk_has_usbredir and host_machine.system() == 'windows' 158 spice_client_glib_sources += ['usbdk_api.c', 159 'usbdk_api.h', 160 'win-usb-dev.c', 161 'win-usb-dev.h'] 162endif 163 164# 165# libspice-client-glib-2.0.so 166# 167 168# version-script 169spice_client_glib_syms = files('map-file') 170spice_client_glib_syms_path = join_paths(meson.current_source_dir(), 'map-file') 171spice_gtk_version_script = '-Wl,--version-script=@0@'.format(spice_client_glib_syms_path) 172spice_gtk_has_version_script = compiler.has_link_argument(spice_gtk_version_script) 173if not spice_gtk_has_version_script 174 spice_client_glib_syms = files('spice-glib-sym-file') 175 spice_client_glib_syms_path = join_paths(meson.current_source_dir(), 'spice-glib-sym-file') 176 spice_gtk_version_script = ['-export-symbols', spice_client_glib_syms_path] 177endif 178 179# soversion 180# XXX: KEEP IN SYNC WITH src/Makefile.am FILE 181# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html 182spice_client_glib_current = 14 183spice_client_glib_revision = 0 184spice_client_glib_age = 6 185spice_client_glib_so_version = '@0@.@1@.@2@'.format(spice_client_glib_current - spice_client_glib_age, 186 spice_client_glib_age, 187 spice_client_glib_revision) 188message('libspice-client-glib.so version: ' + spice_client_glib_so_version) 189 190spice_client_glib_lib = library('spice-client-glib-2.0', spice_client_glib_sources, 191 version : spice_client_glib_so_version, 192 install : true, 193 include_directories : spice_gtk_include, 194 link_args : [spice_gtk_version_script], 195 link_depends : spice_client_glib_syms, 196 dependencies : spice_glib_deps) 197 198spice_client_glib_dep = declare_dependency(sources : [spice_marshals[1], spice_client_glib_enums[1]], 199 link_with : spice_client_glib_lib, 200 include_directories : spice_gtk_include, 201 dependencies : spice_glib_deps) 202 203# 204# SpiceClientGLib-2.0.gir 205# 206if spice_gtk_has_introspection 207spice_client_glib_gir = gnome.generate_gir(spice_client_glib_lib, 208 export_packages : 'spice-client-glib-2.0', 209 extra_args : ['--accept-unprefixed'], 210 header : 'spice-client.h', 211 includes : ['GObject-2.0', 'Gio-2.0', 'GstBase-1.0'], 212 identifier_prefix : 'Spice', 213 include_directories: spice_gtk_include, 214 link_with : spice_client_glib_lib, 215 symbol_prefix : 'spice', 216 install : spice_gtk_has_introspection, 217 namespace : 'SpiceClientGLib', 218 nsversion : '2.0', 219 sources : spice_client_glib_introspection_sources) 220endif 221# 222# spice-client-glib-usb-acl-helper 223# 224if spice_gtk_has_polkit 225 executable('spice-client-glib-usb-acl-helper', 226 'spice-client-glib-usb-acl-helper.c', 227 include_directories : spice_gtk_include, 228 install : true, 229 install_dir : spice_gtk_usb_acl_helper_dir, 230 install_mode : ['rwsr-xr-x', 'root', 'root'], 231 dependencies : spice_acl_deps, 232 pie : spice_gtk_has_pie 233 ) 234endif 235 236 237if spice_gtk_has_gtk 238 # 239 # Source files for spice-client-gtk 240 # 241 242 spice_client_gtk_headers = [ 243 'spice-client-gtk.h', 244 'spice-grabsequence.h', 245 'spice-gtk-session.h', 246 'spice-widget.h', 247 'usb-device-widget.h', 248 ] 249 250 install_headers(spice_client_gtk_headers, subdir : 'spice-client-gtk-3.0') 251 252 # generate spice-widget-enums.[ch] 253 spice_widget_enums = gnome.mkenums_simple('spice-widget-enums', 254 sources : 'spice-widget.h', 255 install_header : true, 256 install_dir : join_paths(spice_gtk_includedir, 'spice-client-gtk-3.0')) 257 258 spice_client_gtk_introspection_sources = [ 259 spice_client_gtk_headers, 260 spice_widget_enums, 261 'spice-grabsequence.c', 262 'spice-gtk-session.c', 263 'spice-widget.c', 264 'usb-device-widget.c', 265 ] 266 267 spice_client_gtk_sources = [ 268 spice_marshals, 269 spice_client_gtk_introspection_sources, 270 'desktop-integration.c', 271 'desktop-integration.h', 272 'spice-file-transfer-task.h', 273 'spice-grabsequence.h', 274 'spice-grabsequence-priv.h', 275 'spice-gtk-session-priv.h', 276 'spice-util.c', 277 'spice-util-priv.h', 278 'spice-widget-cairo.c', 279 'spice-widget-priv.h', 280 'vncdisplaykeymap.c', 281 'vncdisplaykeymap.h', 282 ] 283 284 if spice_gtk_has_egl 285 spice_client_gtk_sources += 'spice-widget-egl.c' 286 endif 287 288 # keymaps 289 python = import('python').find_installation() 290 keymaps = ['xorgevdev', 291 'xorgkbd', 292 'xorgxquartz', 293 'xorgxwin', 294 'osx', 295 'win32', 296 'x11'] 297 298 foreach keymap : keymaps 299 varname = 'keymap_@0@2xtkbd'.format(keymap) 300 target = 'vncdisplay@0@.h'.format(varname) 301 cmd = [python, keymapgen, '--lang', 'glib2', '--varname', varname, 'code-map', keymapcsv, keymap, 'xtkbd'] 302 spice_client_gtk_sources += custom_target(target, 303 output : target, 304 capture : true, 305 build_by_default: true, 306 command : cmd) 307 endforeach 308 309 # 310 # libspice-client-gtk.so 311 # 312 spice_client_gtk_syms = spice_client_glib_syms 313 if not spice_gtk_has_version_script 314 spice_client_gtk_syms = files('spice-gtk-sym-file') 315 spice_client_gtk_syms_path = join_paths(meson.current_source_dir(), 'spice-gtk-sym-file') 316 spice_gtk_version_script = ['-export-symbols', spice_client_gtk_syms_path] 317 endif 318 319 # soversion 320 # XXX: KEEP IN SYNC WITH src/Makefile.am FILE 321 # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html 322 spice_client_gtk_current = 5 323 spice_client_gtk_revision = 0 324 spice_client_gtk_age = 0 325 spice_client_gtk_so_version = '@0@.@1@.@2@'.format(spice_client_gtk_current - spice_client_gtk_age, 326 spice_client_gtk_age, 327 spice_client_gtk_revision) 328 message('libspice-client-gtk.so version: ' + spice_client_gtk_so_version) 329 330 spice_client_gtk_lib = library('spice-client-gtk-3.0', spice_client_gtk_sources, 331 version : spice_client_gtk_so_version, 332 install : true, 333 link_args : [spice_gtk_version_script], 334 link_depends : spice_client_gtk_syms, 335 dependencies : [spice_client_glib_dep, spice_gtk_deps]) 336 337 spice_client_gtk_dep = declare_dependency(sources : spice_widget_enums[1], 338 link_with : spice_client_gtk_lib, 339 dependencies : [spice_client_glib_dep, spice_gtk_deps]) 340 341if spice_gtk_has_introspection 342 # 343 # SpiceClientGtk-3.0.gir 344 # 345 spice_client_gtk_gir = gnome.generate_gir(spice_client_gtk_lib, 346 export_packages : 'spice-client-gtk-3.0', 347 extra_args : ['--accept-unprefixed'], 348 header : 'spice-widget.h', 349 includes : ['GObject-2.0', 'Gtk-3.0', spice_client_glib_gir[0]], 350 include_directories: spice_gtk_include, 351 link_with : spice_client_glib_lib, 352 identifier_prefix : 'Spice', 353 symbol_prefix : 'spice', 354 install : spice_gtk_has_introspection, 355 namespace : 'SpiceClientGtk', 356 nsversion : '3.0', 357 sources : spice_client_gtk_introspection_sources) 358 endif 359endif 360