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