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