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