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