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)
27 if host_machine.system() == 'darwin'
28 add_languages('objc', required: false, native: false)
31 if 'SPARSE_CFLAGS' in config_host
33 command: [find_program('scripts/check_sparse.py'),
34 config_host['SPARSE_CFLAGS'].split(),
35 'compile_commands.json'])
38 configure_file(input: files('scripts/ninjatool.py'),
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)
57 if targetos == 'windows'
58 socket = cc.find_library('ws2_32')
60 win = import('windows')
61 version_res = win.compile_resources('version.rc',
62 depend_files: files('pc-bios/qemu-nsis.ico'),
63 include_directories: include_directories('.'))
64 elif targetos == 'darwin'
65 coref = dependency('appleframeworks', modules: 'CoreFoundation')
66 iokit = dependency('appleframeworks', modules: 'IOKit')
67 cocoa = dependency('appleframeworks', modules: 'Cocoa')
68 hvf = dependency('appleframeworks', modules: 'Hypervisor')
69 elif targetos == 'sunos'
70 socket = [cc.find_library('socket'),
71 cc.find_library('nsl'),
72 cc.find_library('resolv')]
73 elif targetos == 'haiku'
74 socket = [cc.find_library('posix_error_mapper'),
75 cc.find_library('network'),
76 cc.find_library('bsd')]
78 glib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(),
79 link_args: config_host['GLIB_LIBS'].split())
81 if 'CONFIG_GIO' in config_host
82 gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
83 link_args: config_host['GIO_LIBS'].split())
86 if 'CONFIG_TRACE_UST' in config_host
87 lttng = declare_dependency(link_args: config_host['LTTNG_UST_LIBS'].split())
90 if 'CONFIG_TRACE_UST' in config_host
91 urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
94 if 'CONFIG_NETTLE' in config_host
95 nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
96 link_args: config_host['NETTLE_LIBS'].split())
99 if 'CONFIG_GNUTLS' in config_host
100 gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(),
101 link_args: config_host['GNUTLS_LIBS'].split())
103 pixman = declare_dependency(compile_args: config_host['PIXMAN_CFLAGS'].split(),
104 link_args: config_host['PIXMAN_LIBS'].split())
106 if 'CONFIG_SECCOMP' in config_host
107 seccomp = declare_dependency(compile_args: config_host['SECCOMP_CFLAGS'].split(),
108 link_args: config_host['SECCOMP_LIBS'].split())
110 libcap_ng = not_found
111 if 'CONFIG_LIBCAP_NG' in config_host
112 libcap_ng = declare_dependency(link_args: config_host['LIBCAP_NG_LIBS'].split())
114 rt = cc.find_library('rt', required: false)
116 if 'CONFIG_LIBISCSI' in config_host
117 libiscsi = declare_dependency(compile_args: config_host['LIBISCSI_CFLAGS'].split(),
118 link_args: config_host['LIBISCSI_LIBS'].split())
121 if 'CONFIG_GBM' in config_host
122 gbm = declare_dependency(compile_args: config_host['GBM_CFLAGS'].split(),
123 link_args: config_host['GBM_LIBS'].split())
126 if 'CONFIG_VIRGL' in config_host
127 virgl = declare_dependency(compile_args: config_host['VIRGL_CFLAGS'].split(),
128 link_args: config_host['VIRGL_LIBS'].split())
131 if 'CONFIG_CURL' in config_host
132 curl = declare_dependency(compile_args: config_host['CURL_CFLAGS'].split(),
133 link_args: config_host['CURL_LIBS'].split())
136 if 'CONFIG_LIBUDEV' in config_host
137 libudev = declare_dependency(link_args: config_host['LIBUDEV_LIBS'].split())
140 target_dirs = config_host['TARGET_DIRS'].split()
143 foreach target : target_dirs
144 have_user = have_user or target.endswith('-user')
145 have_system = have_system or target.endswith('-softmmu')
147 have_tools = 'CONFIG_TOOLS' in config_host
148 have_block = have_system or have_tools
152 qapi_gen = find_program('scripts/qapi-gen.py')
153 qapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py',
154 meson.source_root() / 'scripts/qapi/commands.py',
155 meson.source_root() / 'scripts/qapi/common.py',
156 meson.source_root() / 'scripts/qapi/doc.py',
157 meson.source_root() / 'scripts/qapi/error.py',
158 meson.source_root() / 'scripts/qapi/events.py',
159 meson.source_root() / 'scripts/qapi/expr.py',
160 meson.source_root() / 'scripts/qapi/gen.py',
161 meson.source_root() / 'scripts/qapi/introspect.py',
162 meson.source_root() / 'scripts/qapi/parser.py',
163 meson.source_root() / 'scripts/qapi/schema.py',
164 meson.source_root() / 'scripts/qapi/source.py',
165 meson.source_root() / 'scripts/qapi/types.py',
166 meson.source_root() / 'scripts/qapi/visit.py',
167 meson.source_root() / 'scripts/qapi/common.py',
168 meson.source_root() / 'scripts/qapi/doc.py',
169 meson.source_root() / 'scripts/qapi-gen.py'
173 python, files('scripts/tracetool.py'),
174 '--backend=' + config_host['TRACE_BACKENDS']
177 # Collect sourcesets.
179 util_ss = ss.source_set()
180 stub_ss = ss.source_set()
181 trace_ss = ss.source_set()
187 trace_events_subdirs = [
194 trace_events_subdirs += [ 'linux-user' ]
197 trace_events_subdirs += [
206 trace_events_subdirs += [
217 'hw/block/dataplane',
262 trace_events_subdirs += [
285 subdir('storage-daemon')
287 # Build targets from sourcesets
289 stub_ss = stub_ss.apply(config_host, strict: false)
291 util_ss.add_all(trace_ss)
292 util_ss = util_ss.apply(config_host, strict: false)
293 libqemuutil = static_library('qemuutil',
294 sources: util_ss.sources() + stub_ss.sources() + genh,
295 dependencies: [util_ss.dependencies(), m, glib, socket])
296 qemuutil = declare_dependency(link_with: libqemuutil,
297 sources: genh + version_res)
299 # Other build targets
301 if 'CONFIG_GUEST_AGENT' in config_host
306 subdir('contrib/rdmacm-mux')
307 subdir('contrib/elf2dmp')
309 if 'CONFIG_VHOST_USER' in config_host
310 subdir('contrib/libvhost-user')
311 subdir('contrib/vhost-user-blk')
312 if 'CONFIG_LINUX' in config_host
313 subdir('contrib/vhost-user-gpu')
315 subdir('contrib/vhost-user-input')
316 subdir('contrib/vhost-user-scsi')
318 if 'CONFIG_IVSHMEM' in config_host
319 subdir('contrib/ivshmem-client')
320 subdir('contrib/ivshmem-server')
327 summary_info += {'Install prefix': config_host['prefix']}
328 summary_info += {'BIOS directory': config_host['qemu_datadir']}
329 summary_info += {'firmware path': config_host['qemu_firmwarepath']}
330 summary_info += {'binary directory': config_host['bindir']}
331 summary_info += {'library directory': config_host['libdir']}
332 summary_info += {'module directory': config_host['qemu_moddir']}
333 summary_info += {'libexec directory': config_host['libexecdir']}
334 summary_info += {'include directory': config_host['includedir']}
335 summary_info += {'config directory': config_host['sysconfdir']}
336 if targetos != 'windows'
337 summary_info += {'local state directory': config_host['qemu_localstatedir']}
338 summary_info += {'Manual directory': config_host['mandir']}
340 summary_info += {'local state directory': 'queried at runtime'}
342 summary_info += {'Build directory': meson.current_build_dir()}
343 summary_info += {'Source path': meson.current_source_dir()}
344 summary_info += {'GIT binary': config_host['GIT']}
345 summary_info += {'GIT submodules': config_host['GIT_SUBMODULES']}
346 summary_info += {'C compiler': meson.get_compiler('c').cmd_array()[0]}
347 summary_info += {'Host C compiler': meson.get_compiler('c', native: true).cmd_array()[0]}
348 if link_language == 'cpp'
349 summary_info += {'C++ compiler': meson.get_compiler('cpp').cmd_array()[0]}
351 summary_info += {'C++ compiler': false}
353 if targetos == 'darwin'
354 summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]}
356 summary_info += {'ARFLAGS': config_host['ARFLAGS']}
357 summary_info += {'CFLAGS': config_host['CFLAGS']}
358 summary_info += {'QEMU_CFLAGS': config_host['QEMU_CFLAGS']}
359 summary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']}
360 summary_info += {'make': config_host['MAKE']}
361 summary_info += {'install': config_host['INSTALL']}
362 summary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
363 summary_info += {'sphinx-build': config_host['SPHINX_BUILD']}
364 summary_info += {'genisoimage': config_host['GENISOIMAGE']}
365 # TODO: add back version
366 summary_info += {'slirp support': config_host.has_key('CONFIG_SLIRP')}
367 if config_host.has_key('CONFIG_SLIRP')
368 summary_info += {'smbd': config_host['CONFIG_SMBD_COMMAND']}
370 summary_info += {'module support': config_host.has_key('CONFIG_MODULES')}
371 if config_host.has_key('CONFIG_MODULES')
372 summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')}
374 summary_info += {'host CPU': cpu}
375 summary_info += {'host endianness': build_machine.endian()}
376 summary_info += {'target list': config_host['TARGET_DIRS']}
377 summary_info += {'gprof enabled': config_host.has_key('CONFIG_GPROF')}
378 summary_info += {'sparse enabled': meson.get_compiler('c').cmd_array().contains('cgcc')}
379 summary_info += {'strip binaries': get_option('strip')}
380 summary_info += {'profiler': config_host.has_key('CONFIG_PROFILER')}
381 summary_info += {'static build': config_host.has_key('CONFIG_TOOLS')}
382 if targetos == 'darwin'
383 summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
385 # TODO: add back version
386 summary_info += {'SDL support': config_host.has_key('CONFIG_SDL')}
387 summary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
388 # TODO: add back version
389 summary_info += {'GTK support': config_host.has_key('CONFIG_GTK')}
390 summary_info += {'GTK GL support': config_host.has_key('CONFIG_GTK_GL')}
391 # TODO: add back version
392 summary_info += {'VTE support': config_host.has_key('CONFIG_VTE')}
393 summary_info += {'TLS priority': config_host['CONFIG_TLS_PRIORITY']}
394 summary_info += {'GNUTLS support': config_host.has_key('CONFIG_GNUTLS')}
395 # TODO: add back version
396 summary_info += {'libgcrypt': config_host.has_key('CONFIG_GCRYPT')}
397 if config_host.has_key('CONFIG_GCRYPT')
398 summary_info += {' hmac': config_host.has_key('CONFIG_GCRYPT_HMAC')}
399 summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
401 # TODO: add back version
402 summary_info += {'nettle': config_host.has_key('CONFIG_NETTLE')}
403 if config_host.has_key('CONFIG_NETTLE')
404 summary_info += {' XTS': not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
406 summary_info += {'libtasn1': config_host.has_key('CONFIG_TASN1')}
407 summary_info += {'PAM': config_host.has_key('CONFIG_AUTH_PAM')}
408 summary_info += {'iconv support': config_host.has_key('CONFIG_ICONV')}
409 summary_info += {'curses support': config_host.has_key('CONFIG_CURSES')}
410 # TODO: add back version
411 summary_info += {'virgl support': config_host.has_key('CONFIG_VIRGL')}
412 summary_info += {'curl support': config_host.has_key('CONFIG_CURL')}
413 summary_info += {'mingw32 support': targetos == 'windows'}
414 summary_info += {'Audio drivers': config_host['CONFIG_AUDIO_DRIVERS']}
415 summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
416 summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
417 summary_info += {'VirtFS support': config_host.has_key('CONFIG_VIRTFS')}
418 summary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
419 summary_info += {'VNC support': config_host.has_key('CONFIG_VNC')}
420 if config_host.has_key('CONFIG_VNC')
421 summary_info += {'VNC SASL support': config_host.has_key('CONFIG_VNC_SASL')}
422 summary_info += {'VNC JPEG support': config_host.has_key('CONFIG_VNC_JPEG')}
423 summary_info += {'VNC PNG support': config_host.has_key('CONFIG_VNC_PNG')}
425 summary_info += {'xen support': config_host.has_key('CONFIG_XEN_BACKEND')}
426 if config_host.has_key('CONFIG_XEN_BACKEND')
427 summary_info += {'xen ctrl version': config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
429 summary_info += {'brlapi support': config_host.has_key('CONFIG_BRLAPI')}
430 summary_info += {'Documentation': config_host.has_key('BUILD_DOCS')}
431 summary_info += {'PIE': get_option('b_pie')}
432 summary_info += {'vde support': config_host.has_key('CONFIG_VDE')}
433 summary_info += {'netmap support': config_host.has_key('CONFIG_NETMAP')}
434 summary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
435 summary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
436 summary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
437 summary_info += {'Install blobs': config_host.has_key('INSTALL_BLOBS')}
438 # TODO: add back KVM/HAX/HVF/WHPX/TCG
439 #summary_info += {'KVM support': have_kvm'}
440 #summary_info += {'HAX support': have_hax'}
441 #summary_info += {'HVF support': have_hvf'}
442 #summary_info += {'WHPX support': have_whpx'}
443 #summary_info += {'TCG support': have_tcg'}
444 #if get_option('tcg')
445 # summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
446 # summary_info += {'TCG interpreter': config_host.has_key('CONFIG_TCG_INTERPRETER')}
448 summary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')}
449 summary_info += {'RDMA support': config_host.has_key('CONFIG_RDMA')}
450 summary_info += {'PVRDMA support': config_host.has_key('CONFIG_PVRDMA')}
451 summary_info += {'fdt support': config_host.has_key('CONFIG_FDT')}
452 summary_info += {'membarrier': config_host.has_key('CONFIG_MEMBARRIER')}
453 summary_info += {'preadv support': config_host.has_key('CONFIG_PREADV')}
454 summary_info += {'fdatasync': config_host.has_key('CONFIG_FDATASYNC')}
455 summary_info += {'madvise': config_host.has_key('CONFIG_MADVISE')}
456 summary_info += {'posix_madvise': config_host.has_key('CONFIG_POSIX_MADVISE')}
457 summary_info += {'posix_memalign': config_host.has_key('CONFIG_POSIX_MEMALIGN')}
458 summary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')}
459 summary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')}
460 summary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')}
461 summary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
462 summary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
463 summary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')}
464 summary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
465 summary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
466 summary_info += {'Trace backends': config_host['TRACE_BACKENDS']}
467 if config_host['TRACE_BACKENDS'].split().contains('simple')
468 summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'}
470 # TODO: add back protocol and server version
471 summary_info += {'spice support': config_host.has_key('CONFIG_SPICE')}
472 summary_info += {'rbd support': config_host.has_key('CONFIG_RBD')}
473 summary_info += {'xfsctl support': config_host.has_key('CONFIG_XFS')}
474 summary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
475 summary_info += {'libusb': config_host.has_key('CONFIG_USB_LIBUSB')}
476 summary_info += {'usb net redir': config_host.has_key('CONFIG_USB_REDIR')}
477 summary_info += {'OpenGL support': config_host.has_key('CONFIG_OPENGL')}
478 summary_info += {'OpenGL dmabufs': config_host.has_key('CONFIG_OPENGL_DMABUF')}
479 summary_info += {'libiscsi support': config_host.has_key('CONFIG_LIBISCSI')}
480 summary_info += {'libnfs support': config_host.has_key('CONFIG_LIBNFS')}
481 summary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
482 if targetos == 'windows'
483 if 'WIN_SDK' in config_host
484 summary_info += {'Windows SDK': config_host['WIN_SDK']}
486 summary_info += {'QGA VSS support': config_host.has_key('CONFIG_QGA_VSS')}
487 summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
488 summary_info += {'QGA MSI support': config_host.has_key('CONFIG_QGA_MSI_ENABLED')}
490 summary_info += {'seccomp support': config_host.has_key('CONFIG_SECCOMP')}
491 summary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
492 summary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1'}
493 summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
494 summary_info += {'mutex debugging': config_host.has_key('CONFIG_DEBUG_MUTEX')}
495 summary_info += {'crypto afalg': config_host.has_key('CONFIG_AF_ALG')}
496 summary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
497 summary_info += {'gcov': get_option('b_coverage')}
498 summary_info += {'TPM support': config_host.has_key('CONFIG_TPM')}
499 summary_info += {'libssh support': config_host.has_key('CONFIG_LIBSSH')}
500 summary_info += {'QOM debugging': config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
501 summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
502 summary_info += {'lzo support': config_host.has_key('CONFIG_LZO')}
503 summary_info += {'snappy support': config_host.has_key('CONFIG_SNAPPY')}
504 summary_info += {'bzip2 support': config_host.has_key('CONFIG_BZIP2')}
505 summary_info += {'lzfse support': config_host.has_key('CONFIG_LZFSE')}
506 summary_info += {'zstd support': config_host.has_key('CONFIG_ZSTD')}
507 summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
508 summary_info += {'libxml2': config_host.has_key('CONFIG_LIBXML2')}
509 summary_info += {'tcmalloc support': config_host.has_key('CONFIG_TCMALLOC')}
510 summary_info += {'jemalloc support': config_host.has_key('CONFIG_JEMALLOC')}
511 summary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')}
512 summary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')}
513 summary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')}
514 summary_info += {'bochs support': config_host.has_key('CONFIG_BOCHS')}
515 summary_info += {'cloop support': config_host.has_key('CONFIG_CLOOP')}
516 summary_info += {'dmg support': config_host.has_key('CONFIG_DMG')}
517 summary_info += {'qcow v1 support': config_host.has_key('CONFIG_QCOW1')}
518 summary_info += {'vdi support': config_host.has_key('CONFIG_VDI')}
519 summary_info += {'vvfat support': config_host.has_key('CONFIG_VVFAT')}
520 summary_info += {'qed support': config_host.has_key('CONFIG_QED')}
521 summary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')}
522 summary_info += {'sheepdog support': config_host.has_key('CONFIG_SHEEPDOG')}
523 summary_info += {'capstone': config_host.has_key('CONFIG_CAPSTONE')}
524 summary_info += {'libpmem support': config_host.has_key('CONFIG_LIBPMEM')}
525 summary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
526 summary_info += {'libudev': config_host.has_key('CONFIG_LIBUDEV')}
527 summary_info += {'default devices': config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
528 summary_info += {'plugin support': config_host.has_key('CONFIG_PLUGIN')}
529 summary_info += {'fuzzing support': config_host.has_key('CONFIG_FUZZ')}
530 if config_host.has_key('HAVE_GDB_BIN')
531 summary_info += {'gdb': config_host['HAVE_GDB_BIN']}
533 summary_info += {'thread sanitizer': config_host.has_key('CONFIG_TSAN')}
534 summary_info += {'rng-none': config_host.has_key('CONFIG_RNG_NONE')}
535 summary_info += {'Linux keyring': config_host.has_key('CONFIG_SECRET_KEYRING')}
536 summary(summary_info, bool_yn: true)
538 if not supported_cpus.contains(cpu)
540 warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!')
542 message('CPU host architecture ' + cpu + ' support is not currently maintained.')
543 message('The QEMU project intends to remove support for this host CPU in')
544 message('a future release if nobody volunteers to maintain it and to')
545 message('provide a build host for our continuous integration setup.')
546 message('configure has succeeded and you can continue to build, but')
547 message('if you care about QEMU on this platform you should contact')
548 message('us upstream at qemu-devel@nongnu.org.')
551 if not supported_oses.contains(targetos)
553 warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!')
555 message('Host OS ' + targetos + 'support is not currently maintained.')
556 message('The QEMU project intends to remove support for this host OS in')
557 message('a future release if nobody volunteers to maintain it and to')
558 message('provide a build host for our continuous integration setup.')
559 message('configure has succeeded and you can continue to build, but')
560 message('if you care about QEMU on this platform you should contact')
561 message('us upstream at qemu-devel@nongnu.org.')