]> git.proxmox.com Git - mirror_qemu.git/blame - meson.build
meson: keymap-gen
[mirror_qemu.git] / meson.build
CommitLineData
a5665051
PB
1project('qemu', ['c'], meson_version: '>=0.55.0',
2 default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_lundef=false'],
3 version: run_command('head', meson.source_root() / 'VERSION').stdout().strip())
4
5not_found = dependency('', required: false)
6keyval = import('unstable-keyval')
a81df1b6
PB
7ss = import('sourceset')
8
9cc = meson.get_compiler('c')
a5665051
PB
10config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
11
12add_project_arguments(config_host['QEMU_CFLAGS'].split(),
13 native: false, language: ['c', 'objc'])
14add_project_arguments(config_host['QEMU_CXXFLAGS'].split(),
15 native: false, language: 'cpp')
16add_project_link_arguments(config_host['QEMU_LDFLAGS'].split(),
17 native: false, language: ['c', 'cpp', 'objc'])
18add_project_arguments(config_host['QEMU_INCLUDES'].split(),
19 language: ['c', 'cpp', 'objc'])
20
fc929892
MAL
21python = import('python').find_installation()
22
23link_language = meson.get_external_property('link_language', 'cpp')
24if link_language == 'cpp'
25 add_languages('cpp', required: true, native: false)
26endif
a5665051
PB
27if host_machine.system() == 'darwin'
28 add_languages('objc', required: false, native: false)
29endif
30
968b4db3
PB
31if 'SPARSE_CFLAGS' in config_host
32 run_target('sparse',
33 command: [find_program('scripts/check_sparse.py'),
34 config_host['SPARSE_CFLAGS'].split(),
35 'compile_commands.json'])
36endif
37
a5665051
PB
38configure_file(input: files('scripts/ninjatool.py'),
39 output: 'ninjatool',
40 configuration: config_host)
f9332757
PB
41
42supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux']
43supported_cpus = ['ppc', 'ppc64', 's390x', 'sparc64', 'riscv32', 'riscv64', 'x86', 'x86_64',
44 'arm', 'aarch64', 'mips', 'mips64', 'sparc', 'sparc64']
45
46cpu = host_machine.cpu_family()
47targetos = host_machine.system()
48
a81df1b6
PB
49m = cc.find_library('m', required: false)
50util = cc.find_library('util', required: false)
51socket = []
04c6f1e7 52version_res = []
d92989aa
MAL
53coref = []
54iokit = []
55cocoa = []
56hvf = []
a81df1b6
PB
57if targetos == 'windows'
58 socket = cc.find_library('ws2_32')
04c6f1e7
MAL
59
60 win = import('windows')
61 version_res = win.compile_resources('version.rc',
62 depend_files: files('pc-bios/qemu-nsis.ico'),
63 include_directories: include_directories('.'))
d92989aa
MAL
64elif targetos == 'darwin'
65 coref = dependency('appleframeworks', modules: 'CoreFoundation')
66 iokit = dependency('appleframeworks', modules: 'IOKit')
67 cocoa = dependency('appleframeworks', modules: 'Cocoa')
68 hvf = dependency('appleframeworks', modules: 'Hypervisor')
cfad62f1
PB
69elif targetos == 'sunos'
70 socket = [cc.find_library('socket'),
71 cc.find_library('nsl'),
72 cc.find_library('resolv')]
73elif targetos == 'haiku'
74 socket = [cc.find_library('posix_error_mapper'),
75 cc.find_library('network'),
76 cc.find_library('bsd')]
a81df1b6
PB
77endif
78glib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(),
79 link_args: config_host['GLIB_LIBS'].split())
80gio = not_found
81if 'CONFIG_GIO' in config_host
82 gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
83 link_args: config_host['GIO_LIBS'].split())
84endif
85lttng = not_found
86if 'CONFIG_TRACE_UST' in config_host
87 lttng = declare_dependency(link_args: config_host['LTTNG_UST_LIBS'].split())
88endif
89urcubp = not_found
90if 'CONFIG_TRACE_UST' in config_host
91 urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
92endif
93nettle = not_found
94if 'CONFIG_NETTLE' in config_host
95 nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
96 link_args: config_host['NETTLE_LIBS'].split())
97endif
98gnutls = not_found
99if 'CONFIG_GNUTLS' in config_host
100 gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(),
101 link_args: config_host['GNUTLS_LIBS'].split())
102endif
ea458960
MAL
103pixman = declare_dependency(compile_args: config_host['PIXMAN_CFLAGS'].split(),
104 link_args: config_host['PIXMAN_LIBS'].split())
ec0d5893
MAL
105libattr = not_found
106if 'CONFIG_ATTR' in config_host
107 libattr = declare_dependency(link_args: config_host['LIBATTR_LIBS'].split())
108endif
3f99cf57
PB
109seccomp = not_found
110if 'CONFIG_SECCOMP' in config_host
111 seccomp = declare_dependency(compile_args: config_host['SECCOMP_CFLAGS'].split(),
112 link_args: config_host['SECCOMP_LIBS'].split())
113endif
114libcap_ng = not_found
115if 'CONFIG_LIBCAP_NG' in config_host
116 libcap_ng = declare_dependency(link_args: config_host['LIBCAP_NG_LIBS'].split())
117endif
ade60d4f
MAL
118xkbcommon = not_found
119if 'CONFIG_XKBCOMMON' in config_host
120 xkbcommon = declare_dependency(compile_args: config_host['XKBCOMMON_CFLAGS'].split(),
121 link_args: config_host['XKBCOMMON_LIBS'].split())
122endif
5ee24e78 123rt = cc.find_library('rt', required: false)
99650b62
PB
124libiscsi = not_found
125if 'CONFIG_LIBISCSI' in config_host
126 libiscsi = declare_dependency(compile_args: config_host['LIBISCSI_CFLAGS'].split(),
127 link_args: config_host['LIBISCSI_LIBS'].split())
128endif
ea458960
MAL
129gbm = not_found
130if 'CONFIG_GBM' in config_host
131 gbm = declare_dependency(compile_args: config_host['GBM_CFLAGS'].split(),
132 link_args: config_host['GBM_LIBS'].split())
133endif
134virgl = not_found
135if 'CONFIG_VIRGL' in config_host
136 virgl = declare_dependency(compile_args: config_host['VIRGL_CFLAGS'].split(),
137 link_args: config_host['VIRGL_LIBS'].split())
138endif
1d7bb6ab
MAL
139curl = not_found
140if 'CONFIG_CURL' in config_host
141 curl = declare_dependency(compile_args: config_host['CURL_CFLAGS'].split(),
142 link_args: config_host['CURL_LIBS'].split())
143endif
f15bff25
PB
144libudev = not_found
145if 'CONFIG_LIBUDEV' in config_host
146 libudev = declare_dependency(link_args: config_host['LIBUDEV_LIBS'].split())
147endif
a81df1b6
PB
148
149target_dirs = config_host['TARGET_DIRS'].split()
150have_user = false
151have_system = false
152foreach target : target_dirs
153 have_user = have_user or target.endswith('-user')
154 have_system = have_system or target.endswith('-softmmu')
155endforeach
156have_tools = 'CONFIG_TOOLS' in config_host
157have_block = have_system or have_tools
158
159# Generators
160
161qapi_gen = find_program('scripts/qapi-gen.py')
162qapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py',
163 meson.source_root() / 'scripts/qapi/commands.py',
164 meson.source_root() / 'scripts/qapi/common.py',
165 meson.source_root() / 'scripts/qapi/doc.py',
166 meson.source_root() / 'scripts/qapi/error.py',
167 meson.source_root() / 'scripts/qapi/events.py',
168 meson.source_root() / 'scripts/qapi/expr.py',
169 meson.source_root() / 'scripts/qapi/gen.py',
170 meson.source_root() / 'scripts/qapi/introspect.py',
171 meson.source_root() / 'scripts/qapi/parser.py',
172 meson.source_root() / 'scripts/qapi/schema.py',
173 meson.source_root() / 'scripts/qapi/source.py',
174 meson.source_root() / 'scripts/qapi/types.py',
175 meson.source_root() / 'scripts/qapi/visit.py',
176 meson.source_root() / 'scripts/qapi/common.py',
177 meson.source_root() / 'scripts/qapi/doc.py',
178 meson.source_root() / 'scripts/qapi-gen.py'
179]
180
181tracetool = [
182 python, files('scripts/tracetool.py'),
183 '--backend=' + config_host['TRACE_BACKENDS']
184]
185
186# Collect sourcesets.
187
188util_ss = ss.source_set()
189stub_ss = ss.source_set()
190trace_ss = ss.source_set()
191
192###############
193# Trace files #
194###############
195
196trace_events_subdirs = [
197 'accel/kvm',
198 'accel/tcg',
199 'crypto',
200 'monitor',
201]
202if have_user
203 trace_events_subdirs += [ 'linux-user' ]
204endif
205if have_block
206 trace_events_subdirs += [
207 'authz',
208 'block',
209 'io',
210 'nbd',
211 'scsi',
212 ]
213endif
214if have_system
215 trace_events_subdirs += [
216 'audio',
217 'backends',
218 'backends/tpm',
219 'chardev',
220 'hw/9pfs',
221 'hw/acpi',
222 'hw/alpha',
223 'hw/arm',
224 'hw/audio',
225 'hw/block',
226 'hw/block/dataplane',
227 'hw/char',
228 'hw/display',
229 'hw/dma',
230 'hw/hppa',
231 'hw/hyperv',
232 'hw/i2c',
233 'hw/i386',
234 'hw/i386/xen',
235 'hw/ide',
236 'hw/input',
237 'hw/intc',
238 'hw/isa',
239 'hw/mem',
240 'hw/mips',
241 'hw/misc',
242 'hw/misc/macio',
243 'hw/net',
244 'hw/nvram',
245 'hw/pci',
246 'hw/pci-host',
247 'hw/ppc',
248 'hw/rdma',
249 'hw/rdma/vmw',
250 'hw/rtc',
251 'hw/s390x',
252 'hw/scsi',
253 'hw/sd',
254 'hw/sparc',
255 'hw/sparc64',
256 'hw/ssi',
257 'hw/timer',
258 'hw/tpm',
259 'hw/usb',
260 'hw/vfio',
261 'hw/virtio',
262 'hw/watchdog',
263 'hw/xen',
264 'hw/gpio',
265 'hw/riscv',
266 'migration',
267 'net',
268 'ui',
269 ]
270endif
271trace_events_subdirs += [
272 'hw/core',
273 'qapi',
274 'qom',
275 'target/arm',
276 'target/hppa',
277 'target/i386',
278 'target/mips',
279 'target/ppc',
280 'target/riscv',
281 'target/s390x',
282 'target/sparc',
283 'util',
284]
285
286genh = []
287
288subdir('qapi')
289subdir('qobject')
290subdir('stubs')
291subdir('trace')
292subdir('util')
293subdir('crypto')
294subdir('storage-daemon')
2d78b56e 295subdir('ui')
a81df1b6
PB
296
297# Build targets from sourcesets
298
299stub_ss = stub_ss.apply(config_host, strict: false)
300
301util_ss.add_all(trace_ss)
302util_ss = util_ss.apply(config_host, strict: false)
303libqemuutil = static_library('qemuutil',
304 sources: util_ss.sources() + stub_ss.sources() + genh,
305 dependencies: [util_ss.dependencies(), m, glib, socket])
306qemuutil = declare_dependency(link_with: libqemuutil,
04c6f1e7 307 sources: genh + version_res)
a81df1b6 308
ec0d5893
MAL
309subdir('fsdev')
310
931049b4 311# Other build targets
f15bff25
PB
312if 'CONFIG_GUEST_AGENT' in config_host
313 subdir('qga')
314endif
315
931049b4 316if have_tools
a9c9727c 317 subdir('contrib/rdmacm-mux')
1d7bb6ab 318 subdir('contrib/elf2dmp')
a9c9727c 319
ade60d4f
MAL
320 if 'CONFIG_XKBCOMMON' in config_host
321 executable('qemu-keymap', files('qemu-keymap.c', 'ui/input-keymap.c'),
322 dependencies: [qemuutil, xkbcommon], install: true)
323 endif
324
157e7b13
MAL
325 executable('qemu-edid', files('qemu-edid.c', 'hw/display/edid-generate.c'),
326 dependencies: qemuutil,
327 install: true)
328
931049b4
PB
329 if 'CONFIG_VHOST_USER' in config_host
330 subdir('contrib/libvhost-user')
2d7ac0af 331 subdir('contrib/vhost-user-blk')
ea458960
MAL
332 if 'CONFIG_LINUX' in config_host
333 subdir('contrib/vhost-user-gpu')
334 endif
32fcc624 335 subdir('contrib/vhost-user-input')
99650b62 336 subdir('contrib/vhost-user-scsi')
931049b4 337 endif
8f51e01c
MAL
338
339 if targetos == 'linux'
340 executable('qemu-bridge-helper', files('qemu-bridge-helper.c'),
341 dependencies: [qemuutil, libcap_ng],
342 install: true,
343 install_dir: get_option('libexecdir'))
344 endif
345
5ee24e78
MAL
346 if 'CONFIG_IVSHMEM' in config_host
347 subdir('contrib/ivshmem-client')
348 subdir('contrib/ivshmem-server')
349 endif
931049b4
PB
350endif
351
3f99cf57
PB
352subdir('tools')
353
f9332757
PB
354summary_info = {}
355summary_info += {'Install prefix': config_host['prefix']}
356summary_info += {'BIOS directory': config_host['qemu_datadir']}
357summary_info += {'firmware path': config_host['qemu_firmwarepath']}
358summary_info += {'binary directory': config_host['bindir']}
359summary_info += {'library directory': config_host['libdir']}
360summary_info += {'module directory': config_host['qemu_moddir']}
361summary_info += {'libexec directory': config_host['libexecdir']}
362summary_info += {'include directory': config_host['includedir']}
363summary_info += {'config directory': config_host['sysconfdir']}
364if targetos != 'windows'
365 summary_info += {'local state directory': config_host['qemu_localstatedir']}
366 summary_info += {'Manual directory': config_host['mandir']}
367else
368 summary_info += {'local state directory': 'queried at runtime'}
369endif
370summary_info += {'Build directory': meson.current_build_dir()}
371summary_info += {'Source path': meson.current_source_dir()}
372summary_info += {'GIT binary': config_host['GIT']}
373summary_info += {'GIT submodules': config_host['GIT_SUBMODULES']}
374summary_info += {'C compiler': meson.get_compiler('c').cmd_array()[0]}
375summary_info += {'Host C compiler': meson.get_compiler('c', native: true).cmd_array()[0]}
376if link_language == 'cpp'
377 summary_info += {'C++ compiler': meson.get_compiler('cpp').cmd_array()[0]}
378else
379 summary_info += {'C++ compiler': false}
380endif
381if targetos == 'darwin'
382 summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]}
383endif
384summary_info += {'ARFLAGS': config_host['ARFLAGS']}
385summary_info += {'CFLAGS': config_host['CFLAGS']}
386summary_info += {'QEMU_CFLAGS': config_host['QEMU_CFLAGS']}
387summary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']}
388summary_info += {'make': config_host['MAKE']}
389summary_info += {'install': config_host['INSTALL']}
390summary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
391summary_info += {'sphinx-build': config_host['SPHINX_BUILD']}
392summary_info += {'genisoimage': config_host['GENISOIMAGE']}
393# TODO: add back version
394summary_info += {'slirp support': config_host.has_key('CONFIG_SLIRP')}
395if config_host.has_key('CONFIG_SLIRP')
396 summary_info += {'smbd': config_host['CONFIG_SMBD_COMMAND']}
397endif
398summary_info += {'module support': config_host.has_key('CONFIG_MODULES')}
399if config_host.has_key('CONFIG_MODULES')
400 summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')}
401endif
402summary_info += {'host CPU': cpu}
403summary_info += {'host endianness': build_machine.endian()}
404summary_info += {'target list': config_host['TARGET_DIRS']}
405summary_info += {'gprof enabled': config_host.has_key('CONFIG_GPROF')}
406summary_info += {'sparse enabled': meson.get_compiler('c').cmd_array().contains('cgcc')}
407summary_info += {'strip binaries': get_option('strip')}
408summary_info += {'profiler': config_host.has_key('CONFIG_PROFILER')}
409summary_info += {'static build': config_host.has_key('CONFIG_TOOLS')}
410if targetos == 'darwin'
411 summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
412endif
413# TODO: add back version
414summary_info += {'SDL support': config_host.has_key('CONFIG_SDL')}
415summary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
416# TODO: add back version
417summary_info += {'GTK support': config_host.has_key('CONFIG_GTK')}
418summary_info += {'GTK GL support': config_host.has_key('CONFIG_GTK_GL')}
419# TODO: add back version
420summary_info += {'VTE support': config_host.has_key('CONFIG_VTE')}
421summary_info += {'TLS priority': config_host['CONFIG_TLS_PRIORITY']}
422summary_info += {'GNUTLS support': config_host.has_key('CONFIG_GNUTLS')}
423# TODO: add back version
424summary_info += {'libgcrypt': config_host.has_key('CONFIG_GCRYPT')}
425if config_host.has_key('CONFIG_GCRYPT')
426 summary_info += {' hmac': config_host.has_key('CONFIG_GCRYPT_HMAC')}
427 summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
428endif
429# TODO: add back version
430summary_info += {'nettle': config_host.has_key('CONFIG_NETTLE')}
431if config_host.has_key('CONFIG_NETTLE')
432 summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
433endif
434summary_info += {'libtasn1': config_host.has_key('CONFIG_TASN1')}
435summary_info += {'PAM': config_host.has_key('CONFIG_AUTH_PAM')}
436summary_info += {'iconv support': config_host.has_key('CONFIG_ICONV')}
437summary_info += {'curses support': config_host.has_key('CONFIG_CURSES')}
438# TODO: add back version
439summary_info += {'virgl support': config_host.has_key('CONFIG_VIRGL')}
440summary_info += {'curl support': config_host.has_key('CONFIG_CURL')}
441summary_info += {'mingw32 support': targetos == 'windows'}
442summary_info += {'Audio drivers': config_host['CONFIG_AUDIO_DRIVERS']}
443summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
444summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
445summary_info += {'VirtFS support': config_host.has_key('CONFIG_VIRTFS')}
446summary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
447summary_info += {'VNC support': config_host.has_key('CONFIG_VNC')}
448if config_host.has_key('CONFIG_VNC')
449 summary_info += {'VNC SASL support': config_host.has_key('CONFIG_VNC_SASL')}
450 summary_info += {'VNC JPEG support': config_host.has_key('CONFIG_VNC_JPEG')}
451 summary_info += {'VNC PNG support': config_host.has_key('CONFIG_VNC_PNG')}
452endif
453summary_info += {'xen support': config_host.has_key('CONFIG_XEN_BACKEND')}
454if config_host.has_key('CONFIG_XEN_BACKEND')
455 summary_info += {'xen ctrl version': config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
456endif
457summary_info += {'brlapi support': config_host.has_key('CONFIG_BRLAPI')}
458summary_info += {'Documentation': config_host.has_key('BUILD_DOCS')}
459summary_info += {'PIE': get_option('b_pie')}
460summary_info += {'vde support': config_host.has_key('CONFIG_VDE')}
461summary_info += {'netmap support': config_host.has_key('CONFIG_NETMAP')}
462summary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
463summary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
464summary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
465summary_info += {'Install blobs': config_host.has_key('INSTALL_BLOBS')}
466# TODO: add back KVM/HAX/HVF/WHPX/TCG
467#summary_info += {'KVM support': have_kvm'}
468#summary_info += {'HAX support': have_hax'}
469#summary_info += {'HVF support': have_hvf'}
470#summary_info += {'WHPX support': have_whpx'}
471#summary_info += {'TCG support': have_tcg'}
472#if get_option('tcg')
473# summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
474# summary_info += {'TCG interpreter': config_host.has_key('CONFIG_TCG_INTERPRETER')}
475#endif
476summary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')}
477summary_info += {'RDMA support': config_host.has_key('CONFIG_RDMA')}
478summary_info += {'PVRDMA support': config_host.has_key('CONFIG_PVRDMA')}
479summary_info += {'fdt support': config_host.has_key('CONFIG_FDT')}
480summary_info += {'membarrier': config_host.has_key('CONFIG_MEMBARRIER')}
481summary_info += {'preadv support': config_host.has_key('CONFIG_PREADV')}
482summary_info += {'fdatasync': config_host.has_key('CONFIG_FDATASYNC')}
483summary_info += {'madvise': config_host.has_key('CONFIG_MADVISE')}
484summary_info += {'posix_madvise': config_host.has_key('CONFIG_POSIX_MADVISE')}
485summary_info += {'posix_memalign': config_host.has_key('CONFIG_POSIX_MEMALIGN')}
486summary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')}
487summary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')}
488summary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')}
489summary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
490summary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
491summary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')}
492summary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
493summary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
494summary_info += {'Trace backends': config_host['TRACE_BACKENDS']}
495if config_host['TRACE_BACKENDS'].split().contains('simple')
496 summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'}
497endif
498# TODO: add back protocol and server version
499summary_info += {'spice support': config_host.has_key('CONFIG_SPICE')}
500summary_info += {'rbd support': config_host.has_key('CONFIG_RBD')}
501summary_info += {'xfsctl support': config_host.has_key('CONFIG_XFS')}
502summary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
503summary_info += {'libusb': config_host.has_key('CONFIG_USB_LIBUSB')}
504summary_info += {'usb net redir': config_host.has_key('CONFIG_USB_REDIR')}
505summary_info += {'OpenGL support': config_host.has_key('CONFIG_OPENGL')}
506summary_info += {'OpenGL dmabufs': config_host.has_key('CONFIG_OPENGL_DMABUF')}
507summary_info += {'libiscsi support': config_host.has_key('CONFIG_LIBISCSI')}
508summary_info += {'libnfs support': config_host.has_key('CONFIG_LIBNFS')}
509summary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
510if targetos == 'windows'
511 if 'WIN_SDK' in config_host
512 summary_info += {'Windows SDK': config_host['WIN_SDK']}
513 endif
514 summary_info += {'QGA VSS support': config_host.has_key('CONFIG_QGA_VSS')}
515 summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
516 summary_info += {'QGA MSI support': config_host.has_key('CONFIG_QGA_MSI_ENABLED')}
517endif
518summary_info += {'seccomp support': config_host.has_key('CONFIG_SECCOMP')}
519summary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
520summary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1'}
521summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
522summary_info += {'mutex debugging': config_host.has_key('CONFIG_DEBUG_MUTEX')}
523summary_info += {'crypto afalg': config_host.has_key('CONFIG_AF_ALG')}
524summary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
bf0e56a3 525summary_info += {'gcov': get_option('b_coverage')}
f9332757
PB
526summary_info += {'TPM support': config_host.has_key('CONFIG_TPM')}
527summary_info += {'libssh support': config_host.has_key('CONFIG_LIBSSH')}
528summary_info += {'QOM debugging': config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
529summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
530summary_info += {'lzo support': config_host.has_key('CONFIG_LZO')}
531summary_info += {'snappy support': config_host.has_key('CONFIG_SNAPPY')}
532summary_info += {'bzip2 support': config_host.has_key('CONFIG_BZIP2')}
533summary_info += {'lzfse support': config_host.has_key('CONFIG_LZFSE')}
534summary_info += {'zstd support': config_host.has_key('CONFIG_ZSTD')}
535summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
536summary_info += {'libxml2': config_host.has_key('CONFIG_LIBXML2')}
537summary_info += {'tcmalloc support': config_host.has_key('CONFIG_TCMALLOC')}
538summary_info += {'jemalloc support': config_host.has_key('CONFIG_JEMALLOC')}
539summary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')}
540summary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')}
541summary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')}
542summary_info += {'bochs support': config_host.has_key('CONFIG_BOCHS')}
543summary_info += {'cloop support': config_host.has_key('CONFIG_CLOOP')}
544summary_info += {'dmg support': config_host.has_key('CONFIG_DMG')}
545summary_info += {'qcow v1 support': config_host.has_key('CONFIG_QCOW1')}
546summary_info += {'vdi support': config_host.has_key('CONFIG_VDI')}
547summary_info += {'vvfat support': config_host.has_key('CONFIG_VVFAT')}
548summary_info += {'qed support': config_host.has_key('CONFIG_QED')}
549summary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')}
550summary_info += {'sheepdog support': config_host.has_key('CONFIG_SHEEPDOG')}
551summary_info += {'capstone': config_host.has_key('CONFIG_CAPSTONE')}
552summary_info += {'libpmem support': config_host.has_key('CONFIG_LIBPMEM')}
553summary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
554summary_info += {'libudev': config_host.has_key('CONFIG_LIBUDEV')}
555summary_info += {'default devices': config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
556summary_info += {'plugin support': config_host.has_key('CONFIG_PLUGIN')}
557summary_info += {'fuzzing support': config_host.has_key('CONFIG_FUZZ')}
558if config_host.has_key('HAVE_GDB_BIN')
559 summary_info += {'gdb': config_host['HAVE_GDB_BIN']}
560endif
561summary_info += {'thread sanitizer': config_host.has_key('CONFIG_TSAN')}
562summary_info += {'rng-none': config_host.has_key('CONFIG_RNG_NONE')}
563summary_info += {'Linux keyring': config_host.has_key('CONFIG_SECRET_KEYRING')}
564summary(summary_info, bool_yn: true)
565
566if not supported_cpus.contains(cpu)
567 message()
568 warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!')
569 message()
570 message('CPU host architecture ' + cpu + ' support is not currently maintained.')
571 message('The QEMU project intends to remove support for this host CPU in')
572 message('a future release if nobody volunteers to maintain it and to')
573 message('provide a build host for our continuous integration setup.')
574 message('configure has succeeded and you can continue to build, but')
575 message('if you care about QEMU on this platform you should contact')
576 message('us upstream at qemu-devel@nongnu.org.')
577endif
578
579if not supported_oses.contains(targetos)
580 message()
581 warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!')
582 message()
583 message('Host OS ' + targetos + 'support is not currently maintained.')
584 message('The QEMU project intends to remove support for this host OS in')
585 message('a future release if nobody volunteers to maintain it and to')
586 message('provide a build host for our continuous integration setup.')
587 message('configure has succeeded and you can continue to build, but')
588 message('if you care about QEMU on this platform you should contact')
589 message('us upstream at qemu-devel@nongnu.org.')
590endif