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