]> git.proxmox.com Git - mirror_qemu.git/blame - meson.build
meson: handle edk2 bios and descriptors
[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
2c273f32 161genh = []
3f885659 162hxtool = find_program('scripts/hxtool')
650b5d54 163shaderinclude = find_program('scripts/shaderinclude.pl')
a81df1b6
PB
164qapi_gen = find_program('scripts/qapi-gen.py')
165qapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py',
166 meson.source_root() / 'scripts/qapi/commands.py',
167 meson.source_root() / 'scripts/qapi/common.py',
168 meson.source_root() / 'scripts/qapi/doc.py',
169 meson.source_root() / 'scripts/qapi/error.py',
170 meson.source_root() / 'scripts/qapi/events.py',
171 meson.source_root() / 'scripts/qapi/expr.py',
172 meson.source_root() / 'scripts/qapi/gen.py',
173 meson.source_root() / 'scripts/qapi/introspect.py',
174 meson.source_root() / 'scripts/qapi/parser.py',
175 meson.source_root() / 'scripts/qapi/schema.py',
176 meson.source_root() / 'scripts/qapi/source.py',
177 meson.source_root() / 'scripts/qapi/types.py',
178 meson.source_root() / 'scripts/qapi/visit.py',
179 meson.source_root() / 'scripts/qapi/common.py',
180 meson.source_root() / 'scripts/qapi/doc.py',
181 meson.source_root() / 'scripts/qapi-gen.py'
182]
183
184tracetool = [
185 python, files('scripts/tracetool.py'),
186 '--backend=' + config_host['TRACE_BACKENDS']
187]
188
2c273f32
MAL
189qemu_version_cmd = [find_program('scripts/qemu-version.sh'),
190 meson.current_source_dir(),
191 config_host['PKGVERSION'], config_host['VERSION']]
192qemu_version = custom_target('qemu-version.h',
193 output: 'qemu-version.h',
194 command: qemu_version_cmd,
195 capture: true,
196 build_by_default: true,
197 build_always_stale: true)
198genh += qemu_version
199
3f885659
MAL
200hxdep = []
201hx_headers = [
202 ['qemu-options.hx', 'qemu-options.def'],
203 ['qemu-img-cmds.hx', 'qemu-img-cmds.h'],
204]
205if have_system
206 hx_headers += [
207 ['hmp-commands.hx', 'hmp-commands.h'],
208 ['hmp-commands-info.hx', 'hmp-commands-info.h'],
209 ]
210endif
211foreach d : hx_headers
212 custom_target(d[1],
213 input: files(d[0]),
214 output: d[1],
215 capture: true,
216 build_by_default: true, # to be removed when added to a target
217 command: [hxtool, '-h', '@INPUT0@'])
218endforeach
219genh += hxdep
220
a81df1b6
PB
221# Collect sourcesets.
222
223util_ss = ss.source_set()
224stub_ss = ss.source_set()
225trace_ss = ss.source_set()
226
227###############
228# Trace files #
229###############
230
231trace_events_subdirs = [
232 'accel/kvm',
233 'accel/tcg',
234 'crypto',
235 'monitor',
236]
237if have_user
238 trace_events_subdirs += [ 'linux-user' ]
239endif
240if have_block
241 trace_events_subdirs += [
242 'authz',
243 'block',
244 'io',
245 'nbd',
246 'scsi',
247 ]
248endif
249if have_system
250 trace_events_subdirs += [
251 'audio',
252 'backends',
253 'backends/tpm',
254 'chardev',
255 'hw/9pfs',
256 'hw/acpi',
257 'hw/alpha',
258 'hw/arm',
259 'hw/audio',
260 'hw/block',
261 'hw/block/dataplane',
262 'hw/char',
263 'hw/display',
264 'hw/dma',
265 'hw/hppa',
266 'hw/hyperv',
267 'hw/i2c',
268 'hw/i386',
269 'hw/i386/xen',
270 'hw/ide',
271 'hw/input',
272 'hw/intc',
273 'hw/isa',
274 'hw/mem',
275 'hw/mips',
276 'hw/misc',
277 'hw/misc/macio',
278 'hw/net',
279 'hw/nvram',
280 'hw/pci',
281 'hw/pci-host',
282 'hw/ppc',
283 'hw/rdma',
284 'hw/rdma/vmw',
285 'hw/rtc',
286 'hw/s390x',
287 'hw/scsi',
288 'hw/sd',
289 'hw/sparc',
290 'hw/sparc64',
291 'hw/ssi',
292 'hw/timer',
293 'hw/tpm',
294 'hw/usb',
295 'hw/vfio',
296 'hw/virtio',
297 'hw/watchdog',
298 'hw/xen',
299 'hw/gpio',
300 'hw/riscv',
301 'migration',
302 'net',
303 'ui',
304 ]
305endif
306trace_events_subdirs += [
307 'hw/core',
308 'qapi',
309 'qom',
310 'target/arm',
311 'target/hppa',
312 'target/i386',
313 'target/mips',
314 'target/ppc',
315 'target/riscv',
316 'target/s390x',
317 'target/sparc',
318 'util',
319]
320
a81df1b6
PB
321subdir('qapi')
322subdir('qobject')
323subdir('stubs')
324subdir('trace')
325subdir('util')
326subdir('crypto')
327subdir('storage-daemon')
2d78b56e 328subdir('ui')
a81df1b6
PB
329
330# Build targets from sourcesets
331
332stub_ss = stub_ss.apply(config_host, strict: false)
333
334util_ss.add_all(trace_ss)
335util_ss = util_ss.apply(config_host, strict: false)
336libqemuutil = static_library('qemuutil',
337 sources: util_ss.sources() + stub_ss.sources() + genh,
338 dependencies: [util_ss.dependencies(), m, glib, socket])
339qemuutil = declare_dependency(link_with: libqemuutil,
04c6f1e7 340 sources: genh + version_res)
a81df1b6 341
ec0d5893
MAL
342subdir('fsdev')
343
931049b4 344# Other build targets
f15bff25
PB
345if 'CONFIG_GUEST_AGENT' in config_host
346 subdir('qga')
347endif
348
931049b4 349if have_tools
a9c9727c 350 subdir('contrib/rdmacm-mux')
1d7bb6ab 351 subdir('contrib/elf2dmp')
a9c9727c 352
ade60d4f
MAL
353 if 'CONFIG_XKBCOMMON' in config_host
354 executable('qemu-keymap', files('qemu-keymap.c', 'ui/input-keymap.c'),
355 dependencies: [qemuutil, xkbcommon], install: true)
356 endif
357
157e7b13
MAL
358 executable('qemu-edid', files('qemu-edid.c', 'hw/display/edid-generate.c'),
359 dependencies: qemuutil,
360 install: true)
361
931049b4
PB
362 if 'CONFIG_VHOST_USER' in config_host
363 subdir('contrib/libvhost-user')
2d7ac0af 364 subdir('contrib/vhost-user-blk')
ea458960
MAL
365 if 'CONFIG_LINUX' in config_host
366 subdir('contrib/vhost-user-gpu')
367 endif
32fcc624 368 subdir('contrib/vhost-user-input')
99650b62 369 subdir('contrib/vhost-user-scsi')
931049b4 370 endif
8f51e01c
MAL
371
372 if targetos == 'linux'
373 executable('qemu-bridge-helper', files('qemu-bridge-helper.c'),
374 dependencies: [qemuutil, libcap_ng],
375 install: true,
376 install_dir: get_option('libexecdir'))
377 endif
378
5ee24e78
MAL
379 if 'CONFIG_IVSHMEM' in config_host
380 subdir('contrib/ivshmem-client')
381 subdir('contrib/ivshmem-server')
382 endif
931049b4
PB
383endif
384
3f99cf57 385subdir('tools')
bdcbea7a 386subdir('pc-bios')
3f99cf57 387
f9332757
PB
388summary_info = {}
389summary_info += {'Install prefix': config_host['prefix']}
390summary_info += {'BIOS directory': config_host['qemu_datadir']}
391summary_info += {'firmware path': config_host['qemu_firmwarepath']}
392summary_info += {'binary directory': config_host['bindir']}
393summary_info += {'library directory': config_host['libdir']}
394summary_info += {'module directory': config_host['qemu_moddir']}
395summary_info += {'libexec directory': config_host['libexecdir']}
396summary_info += {'include directory': config_host['includedir']}
397summary_info += {'config directory': config_host['sysconfdir']}
398if targetos != 'windows'
399 summary_info += {'local state directory': config_host['qemu_localstatedir']}
400 summary_info += {'Manual directory': config_host['mandir']}
401else
402 summary_info += {'local state directory': 'queried at runtime'}
403endif
404summary_info += {'Build directory': meson.current_build_dir()}
405summary_info += {'Source path': meson.current_source_dir()}
406summary_info += {'GIT binary': config_host['GIT']}
407summary_info += {'GIT submodules': config_host['GIT_SUBMODULES']}
408summary_info += {'C compiler': meson.get_compiler('c').cmd_array()[0]}
409summary_info += {'Host C compiler': meson.get_compiler('c', native: true).cmd_array()[0]}
410if link_language == 'cpp'
411 summary_info += {'C++ compiler': meson.get_compiler('cpp').cmd_array()[0]}
412else
413 summary_info += {'C++ compiler': false}
414endif
415if targetos == 'darwin'
416 summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]}
417endif
418summary_info += {'ARFLAGS': config_host['ARFLAGS']}
419summary_info += {'CFLAGS': config_host['CFLAGS']}
420summary_info += {'QEMU_CFLAGS': config_host['QEMU_CFLAGS']}
421summary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']}
422summary_info += {'make': config_host['MAKE']}
423summary_info += {'install': config_host['INSTALL']}
424summary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
425summary_info += {'sphinx-build': config_host['SPHINX_BUILD']}
426summary_info += {'genisoimage': config_host['GENISOIMAGE']}
427# TODO: add back version
428summary_info += {'slirp support': config_host.has_key('CONFIG_SLIRP')}
429if config_host.has_key('CONFIG_SLIRP')
430 summary_info += {'smbd': config_host['CONFIG_SMBD_COMMAND']}
431endif
432summary_info += {'module support': config_host.has_key('CONFIG_MODULES')}
433if config_host.has_key('CONFIG_MODULES')
434 summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')}
435endif
436summary_info += {'host CPU': cpu}
437summary_info += {'host endianness': build_machine.endian()}
438summary_info += {'target list': config_host['TARGET_DIRS']}
439summary_info += {'gprof enabled': config_host.has_key('CONFIG_GPROF')}
440summary_info += {'sparse enabled': meson.get_compiler('c').cmd_array().contains('cgcc')}
441summary_info += {'strip binaries': get_option('strip')}
442summary_info += {'profiler': config_host.has_key('CONFIG_PROFILER')}
443summary_info += {'static build': config_host.has_key('CONFIG_TOOLS')}
444if targetos == 'darwin'
445 summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
446endif
447# TODO: add back version
448summary_info += {'SDL support': config_host.has_key('CONFIG_SDL')}
449summary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
450# TODO: add back version
451summary_info += {'GTK support': config_host.has_key('CONFIG_GTK')}
452summary_info += {'GTK GL support': config_host.has_key('CONFIG_GTK_GL')}
453# TODO: add back version
454summary_info += {'VTE support': config_host.has_key('CONFIG_VTE')}
455summary_info += {'TLS priority': config_host['CONFIG_TLS_PRIORITY']}
456summary_info += {'GNUTLS support': config_host.has_key('CONFIG_GNUTLS')}
457# TODO: add back version
458summary_info += {'libgcrypt': config_host.has_key('CONFIG_GCRYPT')}
459if config_host.has_key('CONFIG_GCRYPT')
460 summary_info += {' hmac': config_host.has_key('CONFIG_GCRYPT_HMAC')}
461 summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
462endif
463# TODO: add back version
464summary_info += {'nettle': config_host.has_key('CONFIG_NETTLE')}
465if config_host.has_key('CONFIG_NETTLE')
466 summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
467endif
468summary_info += {'libtasn1': config_host.has_key('CONFIG_TASN1')}
469summary_info += {'PAM': config_host.has_key('CONFIG_AUTH_PAM')}
470summary_info += {'iconv support': config_host.has_key('CONFIG_ICONV')}
471summary_info += {'curses support': config_host.has_key('CONFIG_CURSES')}
472# TODO: add back version
473summary_info += {'virgl support': config_host.has_key('CONFIG_VIRGL')}
474summary_info += {'curl support': config_host.has_key('CONFIG_CURL')}
475summary_info += {'mingw32 support': targetos == 'windows'}
476summary_info += {'Audio drivers': config_host['CONFIG_AUDIO_DRIVERS']}
477summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
478summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
479summary_info += {'VirtFS support': config_host.has_key('CONFIG_VIRTFS')}
480summary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
481summary_info += {'VNC support': config_host.has_key('CONFIG_VNC')}
482if config_host.has_key('CONFIG_VNC')
483 summary_info += {'VNC SASL support': config_host.has_key('CONFIG_VNC_SASL')}
484 summary_info += {'VNC JPEG support': config_host.has_key('CONFIG_VNC_JPEG')}
485 summary_info += {'VNC PNG support': config_host.has_key('CONFIG_VNC_PNG')}
486endif
487summary_info += {'xen support': config_host.has_key('CONFIG_XEN_BACKEND')}
488if config_host.has_key('CONFIG_XEN_BACKEND')
489 summary_info += {'xen ctrl version': config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
490endif
491summary_info += {'brlapi support': config_host.has_key('CONFIG_BRLAPI')}
492summary_info += {'Documentation': config_host.has_key('BUILD_DOCS')}
493summary_info += {'PIE': get_option('b_pie')}
494summary_info += {'vde support': config_host.has_key('CONFIG_VDE')}
495summary_info += {'netmap support': config_host.has_key('CONFIG_NETMAP')}
496summary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
497summary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
498summary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
499summary_info += {'Install blobs': config_host.has_key('INSTALL_BLOBS')}
500# TODO: add back KVM/HAX/HVF/WHPX/TCG
501#summary_info += {'KVM support': have_kvm'}
502#summary_info += {'HAX support': have_hax'}
503#summary_info += {'HVF support': have_hvf'}
504#summary_info += {'WHPX support': have_whpx'}
505#summary_info += {'TCG support': have_tcg'}
506#if get_option('tcg')
507# summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
508# summary_info += {'TCG interpreter': config_host.has_key('CONFIG_TCG_INTERPRETER')}
509#endif
510summary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')}
511summary_info += {'RDMA support': config_host.has_key('CONFIG_RDMA')}
512summary_info += {'PVRDMA support': config_host.has_key('CONFIG_PVRDMA')}
513summary_info += {'fdt support': config_host.has_key('CONFIG_FDT')}
514summary_info += {'membarrier': config_host.has_key('CONFIG_MEMBARRIER')}
515summary_info += {'preadv support': config_host.has_key('CONFIG_PREADV')}
516summary_info += {'fdatasync': config_host.has_key('CONFIG_FDATASYNC')}
517summary_info += {'madvise': config_host.has_key('CONFIG_MADVISE')}
518summary_info += {'posix_madvise': config_host.has_key('CONFIG_POSIX_MADVISE')}
519summary_info += {'posix_memalign': config_host.has_key('CONFIG_POSIX_MEMALIGN')}
520summary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')}
521summary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')}
522summary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')}
523summary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
524summary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
525summary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')}
526summary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
527summary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
528summary_info += {'Trace backends': config_host['TRACE_BACKENDS']}
529if config_host['TRACE_BACKENDS'].split().contains('simple')
530 summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'}
531endif
532# TODO: add back protocol and server version
533summary_info += {'spice support': config_host.has_key('CONFIG_SPICE')}
534summary_info += {'rbd support': config_host.has_key('CONFIG_RBD')}
535summary_info += {'xfsctl support': config_host.has_key('CONFIG_XFS')}
536summary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
537summary_info += {'libusb': config_host.has_key('CONFIG_USB_LIBUSB')}
538summary_info += {'usb net redir': config_host.has_key('CONFIG_USB_REDIR')}
539summary_info += {'OpenGL support': config_host.has_key('CONFIG_OPENGL')}
540summary_info += {'OpenGL dmabufs': config_host.has_key('CONFIG_OPENGL_DMABUF')}
541summary_info += {'libiscsi support': config_host.has_key('CONFIG_LIBISCSI')}
542summary_info += {'libnfs support': config_host.has_key('CONFIG_LIBNFS')}
543summary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
544if targetos == 'windows'
545 if 'WIN_SDK' in config_host
546 summary_info += {'Windows SDK': config_host['WIN_SDK']}
547 endif
548 summary_info += {'QGA VSS support': config_host.has_key('CONFIG_QGA_VSS')}
549 summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
550 summary_info += {'QGA MSI support': config_host.has_key('CONFIG_QGA_MSI_ENABLED')}
551endif
552summary_info += {'seccomp support': config_host.has_key('CONFIG_SECCOMP')}
553summary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
554summary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1'}
555summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
556summary_info += {'mutex debugging': config_host.has_key('CONFIG_DEBUG_MUTEX')}
557summary_info += {'crypto afalg': config_host.has_key('CONFIG_AF_ALG')}
558summary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
bf0e56a3 559summary_info += {'gcov': get_option('b_coverage')}
f9332757
PB
560summary_info += {'TPM support': config_host.has_key('CONFIG_TPM')}
561summary_info += {'libssh support': config_host.has_key('CONFIG_LIBSSH')}
562summary_info += {'QOM debugging': config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
563summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
564summary_info += {'lzo support': config_host.has_key('CONFIG_LZO')}
565summary_info += {'snappy support': config_host.has_key('CONFIG_SNAPPY')}
566summary_info += {'bzip2 support': config_host.has_key('CONFIG_BZIP2')}
567summary_info += {'lzfse support': config_host.has_key('CONFIG_LZFSE')}
568summary_info += {'zstd support': config_host.has_key('CONFIG_ZSTD')}
569summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
570summary_info += {'libxml2': config_host.has_key('CONFIG_LIBXML2')}
571summary_info += {'tcmalloc support': config_host.has_key('CONFIG_TCMALLOC')}
572summary_info += {'jemalloc support': config_host.has_key('CONFIG_JEMALLOC')}
573summary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')}
574summary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')}
575summary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')}
576summary_info += {'bochs support': config_host.has_key('CONFIG_BOCHS')}
577summary_info += {'cloop support': config_host.has_key('CONFIG_CLOOP')}
578summary_info += {'dmg support': config_host.has_key('CONFIG_DMG')}
579summary_info += {'qcow v1 support': config_host.has_key('CONFIG_QCOW1')}
580summary_info += {'vdi support': config_host.has_key('CONFIG_VDI')}
581summary_info += {'vvfat support': config_host.has_key('CONFIG_VVFAT')}
582summary_info += {'qed support': config_host.has_key('CONFIG_QED')}
583summary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')}
584summary_info += {'sheepdog support': config_host.has_key('CONFIG_SHEEPDOG')}
585summary_info += {'capstone': config_host.has_key('CONFIG_CAPSTONE')}
586summary_info += {'libpmem support': config_host.has_key('CONFIG_LIBPMEM')}
587summary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
588summary_info += {'libudev': config_host.has_key('CONFIG_LIBUDEV')}
589summary_info += {'default devices': config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
590summary_info += {'plugin support': config_host.has_key('CONFIG_PLUGIN')}
591summary_info += {'fuzzing support': config_host.has_key('CONFIG_FUZZ')}
592if config_host.has_key('HAVE_GDB_BIN')
593 summary_info += {'gdb': config_host['HAVE_GDB_BIN']}
594endif
595summary_info += {'thread sanitizer': config_host.has_key('CONFIG_TSAN')}
596summary_info += {'rng-none': config_host.has_key('CONFIG_RNG_NONE')}
597summary_info += {'Linux keyring': config_host.has_key('CONFIG_SECRET_KEYRING')}
598summary(summary_info, bool_yn: true)
599
600if not supported_cpus.contains(cpu)
601 message()
602 warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!')
603 message()
604 message('CPU host architecture ' + cpu + ' support is not currently maintained.')
605 message('The QEMU project intends to remove support for this host CPU in')
606 message('a future release if nobody volunteers to maintain it and to')
607 message('provide a build host for our continuous integration setup.')
608 message('configure has succeeded and you can continue to build, but')
609 message('if you care about QEMU on this platform you should contact')
610 message('us upstream at qemu-devel@nongnu.org.')
611endif
612
613if not supported_oses.contains(targetos)
614 message()
615 warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!')
616 message()
617 message('Host OS ' + targetos + 'support is not currently maintained.')
618 message('The QEMU project intends to remove support for this host OS in')
619 message('a future release if nobody volunteers to maintain it and to')
620 message('provide a build host for our continuous integration setup.')
621 message('configure has succeeded and you can continue to build, but')
622 message('if you care about QEMU on this platform you should contact')
623 message('us upstream at qemu-devel@nongnu.org.')
624endif