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