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