| 1 | keymaps = [ |
| 2 | ['atset1', 'linux'], |
| 3 | ['linux', 'qcode'], |
| 4 | ['linux', 'atset1'], |
| 5 | ['linux', 'atset2'], |
| 6 | ['linux', 'atset3'], |
| 7 | ['qcode', 'linux'], |
| 8 | ['linux', 'qnum'], |
| 9 | ['linux', 'sun'], |
| 10 | ['qnum', 'linux'], |
| 11 | ['usb', 'linux'], |
| 12 | ['win32', 'linux'], |
| 13 | ['x11', 'linux'], |
| 14 | ['xorgkbd', 'linux'], |
| 15 | ['xorgxquartz', 'linux'], |
| 16 | ['xorgxwin', 'linux'], |
| 17 | ['osx', 'linux'], |
| 18 | ] |
| 19 | |
| 20 | if have_system or xkbcommon.found() |
| 21 | keycodemapdb_proj = subproject('keycodemapdb', required: true) |
| 22 | foreach e : keymaps |
| 23 | output = 'input-keymap-@0@-to-@1@.c.inc'.format(e[0], e[1]) |
| 24 | genh += custom_target(output, |
| 25 | output: output, |
| 26 | capture: true, |
| 27 | input: keycodemapdb_proj.get_variable('keymaps_csv'), |
| 28 | command: [python, keycodemapdb_proj.get_variable('keymap_gen').full_path(), |
| 29 | 'code-map', '--lang', 'glib2', |
| 30 | '--varname', 'qemu_input_map_@0@_to_@1@'.format(e[0], e[1]), |
| 31 | '@INPUT0@', e[0], e[1]]) |
| 32 | endforeach |
| 33 | endif |
| 34 | |
| 35 | libui_sources = files( |
| 36 | 'clipboard.c', |
| 37 | 'console.c', |
| 38 | 'cursor.c', |
| 39 | 'dmabuf.c', |
| 40 | 'display-surface.c', |
| 41 | 'input-keymap.c', |
| 42 | 'kbd-state.c', |
| 43 | 'keymaps.c', |
| 44 | 'qemu-pixman.c', |
| 45 | 'spice-module.c', |
| 46 | 'vgafont.c', |
| 47 | ) |
| 48 | if pixman.found() |
| 49 | libui_sources += files('cp437.c', 'vt100.c') |
| 50 | endif |
| 51 | libui = static_library('qemuui', libui_sources + genh, |
| 52 | dependencies: [pixman, spice_headers], |
| 53 | build_by_default: false) |
| 54 | ui = declare_dependency(objects: libui.extract_all_objects(recursive: false), dependencies: [pixman]) |
| 55 | system_ss.add(png) |
| 56 | system_ss.add(files( |
| 57 | 'input-barrier.c', |
| 58 | 'input.c', |
| 59 | 'ui-qmp-cmds.c', |
| 60 | 'util.c', |
| 61 | )) |
| 62 | if have_hmp |
| 63 | system_ss.add(files('ui-hmp-cmds.c')) |
| 64 | endif |
| 65 | system_ss.add(ui) |
| 66 | system_ss.add(when: pixman, if_true: files('console-vc.c'), if_false: files('console-vc-stubs.c')) |
| 67 | if dbus_display |
| 68 | system_ss.add(files('dbus-module.c')) |
| 69 | endif |
| 70 | system_ss.add(when: spice_protocol, if_true: files('vdagent.c')) |
| 71 | |
| 72 | if host_os == 'linux' |
| 73 | system_ss.add(files('input-linux.c', 'udmabuf.c')) |
| 74 | endif |
| 75 | system_ss.add(when: cocoa, if_true: files('cocoa.m')) |
| 76 | |
| 77 | vnc_ss = ss.source_set() |
| 78 | vnc_ss.add(files( |
| 79 | 'vnc.c', |
| 80 | 'vnc-enc-zlib.c', |
| 81 | 'vnc-enc-hextile.c', |
| 82 | 'vnc-enc-tight.c', |
| 83 | 'vnc-palette.c', |
| 84 | 'vnc-enc-zrle.c', |
| 85 | 'vnc-auth-vencrypt.c', |
| 86 | 'vnc-ws.c', |
| 87 | 'vnc-jobs.c', |
| 88 | 'vnc-clipboard.c', |
| 89 | )) |
| 90 | vnc_ss.add(zlib, jpeg, png) |
| 91 | vnc_ss.add(when: sasl, if_true: files('vnc-auth-sasl.c')) |
| 92 | system_ss.add_all(when: [vnc, pixman], if_true: vnc_ss) |
| 93 | system_ss.add(when: vnc, if_true: files('vnc-system.c'), if_false: files('vnc-stubs.c')) |
| 94 | |
| 95 | ui_modules = {} |
| 96 | |
| 97 | if curses.found() |
| 98 | curses_ss = ss.source_set() |
| 99 | curses_ss.add(when: [curses, iconv], if_true: [files('curses.c'), pixman]) |
| 100 | ui_modules += {'curses' : curses_ss} |
| 101 | endif |
| 102 | |
| 103 | system_ss.add(opengl) |
| 104 | if opengl.found() |
| 105 | opengl_ss = ss.source_set() |
| 106 | opengl_ss.add(gbm, pixman) |
| 107 | opengl_ss.add(when: [opengl], |
| 108 | if_true: files('shader.c', 'console-gl.c', 'egl-helpers.c', 'egl-context.c')) |
| 109 | ui_modules += {'opengl' : opengl_ss} |
| 110 | endif |
| 111 | |
| 112 | if opengl.found() |
| 113 | egl_headless_ss = ss.source_set() |
| 114 | egl_headless_ss.add(when: [opengl, pixman], |
| 115 | if_true: [files('egl-headless.c'), gbm]) |
| 116 | ui_modules += {'egl-headless' : egl_headless_ss} |
| 117 | endif |
| 118 | |
| 119 | dbus_display1 = files() |
| 120 | if dbus_display |
| 121 | dbus_ss = ss.source_set() |
| 122 | env = environment() |
| 123 | env.set('HOST_OS', host_os) |
| 124 | xml = custom_target('dbus-display preprocess', |
| 125 | input: 'dbus-display1.xml', |
| 126 | output: 'dbus-display1.xml', |
| 127 | env: env, |
| 128 | command: [xml_pp, '@INPUT@', '@OUTPUT@']) |
| 129 | dbus_display1 = custom_target('dbus-display gdbus-codegen', |
| 130 | output: ['dbus-display1.h', 'dbus-display1.c'], |
| 131 | input: xml, |
| 132 | command: [gdbus_codegen, '@INPUT@', |
| 133 | '--glib-min-required', '2.64', |
| 134 | '--output-directory', meson.current_build_dir(), |
| 135 | '--interface-prefix', 'org.qemu.', |
| 136 | '--c-namespace', 'QemuDBus', |
| 137 | '--generate-c-code', '@BASENAME@']) |
| 138 | dbus_display1_h = declare_dependency(dependencies: [gio], |
| 139 | sources: dbus_display1[0]) |
| 140 | dbus_ss.add(when: gio, |
| 141 | if_true: [files( |
| 142 | 'dbus-chardev.c', |
| 143 | 'dbus-clipboard.c', |
| 144 | 'dbus-console.c', |
| 145 | 'dbus-error.c', |
| 146 | 'dbus-listener.c', |
| 147 | 'dbus.c', |
| 148 | ), opengl, gbm, pixman, dbus_display1]) |
| 149 | ui_modules += {'dbus' : dbus_ss} |
| 150 | endif |
| 151 | |
| 152 | if gtk.found() |
| 153 | if host_os == 'windows' |
| 154 | system_ss.add(files('win32-kbd-hook.c')) |
| 155 | endif |
| 156 | |
| 157 | gtk_ss = ss.source_set() |
| 158 | gtk_ss.add(gtk, vte, pixman, files('gtk.c')) |
| 159 | gtk_ss.add(files('gtk-clipboard.c')) |
| 160 | gtk_ss.add(when: x11, if_true: files('x_keymap.c')) |
| 161 | gtk_ss.add(when: opengl, if_true: files('gtk-gl-area.c')) |
| 162 | gtk_ss.add(when: [x11, opengl], if_true: files('gtk-egl.c')) |
| 163 | ui_modules += {'gtk' : gtk_ss} |
| 164 | endif |
| 165 | |
| 166 | if sdl.found() |
| 167 | sdl_ss = ss.source_set() |
| 168 | sdl_ss.add(sdl, sdl_image, pixman, glib, files( |
| 169 | 'sdl2-2d.c', |
| 170 | 'sdl2-input.c', |
| 171 | 'sdl2.c', |
| 172 | )) |
| 173 | sdl_ss.add(when: opengl, if_true: files('sdl2-gl.c')) |
| 174 | sdl_ss.add(when: x11, if_true: files('x_keymap.c')) |
| 175 | ui_modules += {'sdl' : sdl_ss} |
| 176 | endif |
| 177 | |
| 178 | if spice.found() |
| 179 | spice_core_ss = ss.source_set() |
| 180 | spice_core_ss.add(spice, pixman, files( |
| 181 | 'spice-core.c', |
| 182 | 'spice-input.c', |
| 183 | 'spice-display.c' |
| 184 | )) |
| 185 | ui_modules += {'spice-core' : spice_core_ss} |
| 186 | |
| 187 | if gio.found() |
| 188 | spice_ss = ss.source_set() |
| 189 | spice_ss.add(spice, gio, pixman, files('spice-app.c')) |
| 190 | ui_modules += {'spice-app': spice_ss} |
| 191 | endif |
| 192 | endif |
| 193 | |
| 194 | subdir('shader') |
| 195 | |
| 196 | if have_system |
| 197 | subdir('icons') |
| 198 | |
| 199 | install_data('qemu.desktop', install_dir: qemu_desktopdir) |
| 200 | endif |
| 201 | |
| 202 | modules += {'ui': ui_modules} |