contrib/vhost-user-blk: convert to Meson
[qemu/ar7.git] / meson.build
blob4343f0be6c80bd73d761bb947db8b9244cefe43b
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)
26 endif
27 if host_machine.system() == 'darwin'
28   add_languages('objc', required: false, native: false)
29 endif
31 if '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'])
36 endif
38 configure_file(input: files('scripts/ninjatool.py'),
39                output: 'ninjatool',
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)
51 socket = []
52 version_res = []
53 if targetos == 'windows'
54   socket = cc.find_library('ws2_32')
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('.'))
60 endif
61 glib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(),
62                           link_args: config_host['GLIB_LIBS'].split())
63 gio = not_found
64 if 'CONFIG_GIO' in config_host
65   gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
66                            link_args: config_host['GIO_LIBS'].split())
67 endif
68 lttng = not_found
69 if 'CONFIG_TRACE_UST' in config_host
70   lttng = declare_dependency(link_args: config_host['LTTNG_UST_LIBS'].split())
71 endif
72 urcubp = not_found
73 if 'CONFIG_TRACE_UST' in config_host
74   urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
75 endif
76 nettle = not_found
77 if 'CONFIG_NETTLE' in config_host
78   nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
79                               link_args: config_host['NETTLE_LIBS'].split())
80 endif
81 gnutls = not_found
82 if 'CONFIG_GNUTLS' in config_host
83   gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(),
84                               link_args: config_host['GNUTLS_LIBS'].split())
85 endif
86 seccomp = not_found
87 if 'CONFIG_SECCOMP' in config_host
88   seccomp = declare_dependency(compile_args: config_host['SECCOMP_CFLAGS'].split(),
89                                link_args: config_host['SECCOMP_LIBS'].split())
90 endif
91 libcap_ng = not_found
92 if 'CONFIG_LIBCAP_NG' in config_host
93   libcap_ng = declare_dependency(link_args: config_host['LIBCAP_NG_LIBS'].split())
94 endif
96 target_dirs = config_host['TARGET_DIRS'].split()
97 have_user = false
98 have_system = false
99 foreach target : target_dirs
100   have_user = have_user or target.endswith('-user')
101   have_system = have_system or target.endswith('-softmmu')
102 endforeach
103 have_tools = 'CONFIG_TOOLS' in config_host
104 have_block = have_system or have_tools
106 # Generators
108 qapi_gen = find_program('scripts/qapi-gen.py')
109 qapi_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'
128 tracetool = [
129   python, files('scripts/tracetool.py'),
130    '--backend=' + config_host['TRACE_BACKENDS']
133 # Collect sourcesets.
135 util_ss = ss.source_set()
136 stub_ss = ss.source_set()
137 trace_ss = ss.source_set()
139 ###############
140 # Trace files #
141 ###############
143 trace_events_subdirs = [
144   'accel/kvm',
145   'accel/tcg',
146   'crypto',
147   'monitor',
149 if have_user
150   trace_events_subdirs += [ 'linux-user' ]
151 endif
152 if have_block
153   trace_events_subdirs += [
154     'authz',
155     'block',
156     'io',
157     'nbd',
158     'scsi',
159   ]
160 endif
161 if 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   ]
217 endif
218 trace_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',
233 genh = []
235 subdir('qapi')
236 subdir('qobject')
237 subdir('stubs')
238 subdir('trace')
239 subdir('util')
240 subdir('crypto')
241 subdir('storage-daemon')
243 # Build targets from sourcesets
245 stub_ss = stub_ss.apply(config_host, strict: false)
247 util_ss.add_all(trace_ss)
248 util_ss = util_ss.apply(config_host, strict: false)
249 libqemuutil = static_library('qemuutil',
250                              sources: util_ss.sources() + stub_ss.sources() + genh,
251                              dependencies: [util_ss.dependencies(), m, glib, socket])
252 qemuutil = declare_dependency(link_with: libqemuutil,
253                               sources: genh + version_res)
255 # Other build targets
257 if have_tools
258   if 'CONFIG_VHOST_USER' in config_host
259     subdir('contrib/libvhost-user')
260     subdir('contrib/vhost-user-blk')
261   endif
262 endif
264 subdir('tools')
266 summary_info = {}
267 summary_info += {'Install prefix':    config_host['prefix']}
268 summary_info += {'BIOS directory':    config_host['qemu_datadir']}
269 summary_info += {'firmware path':     config_host['qemu_firmwarepath']}
270 summary_info += {'binary directory':  config_host['bindir']}
271 summary_info += {'library directory': config_host['libdir']}
272 summary_info += {'module directory':  config_host['qemu_moddir']}
273 summary_info += {'libexec directory': config_host['libexecdir']}
274 summary_info += {'include directory': config_host['includedir']}
275 summary_info += {'config directory':  config_host['sysconfdir']}
276 if targetos != 'windows'
277   summary_info += {'local state directory': config_host['qemu_localstatedir']}
278   summary_info += {'Manual directory':      config_host['mandir']}
279 else
280   summary_info += {'local state directory': 'queried at runtime'}
281 endif
282 summary_info += {'Build directory':   meson.current_build_dir()}
283 summary_info += {'Source path':       meson.current_source_dir()}
284 summary_info += {'GIT binary':        config_host['GIT']}
285 summary_info += {'GIT submodules':    config_host['GIT_SUBMODULES']}
286 summary_info += {'C compiler':        meson.get_compiler('c').cmd_array()[0]}
287 summary_info += {'Host C compiler':   meson.get_compiler('c', native: true).cmd_array()[0]}
288 if link_language == 'cpp'
289   summary_info += {'C++ compiler':      meson.get_compiler('cpp').cmd_array()[0]}
290 else
291   summary_info += {'C++ compiler':      false}
292 endif
293 if targetos == 'darwin'
294   summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]}
295 endif
296 summary_info += {'ARFLAGS':           config_host['ARFLAGS']}
297 summary_info += {'CFLAGS':            config_host['CFLAGS']}
298 summary_info += {'QEMU_CFLAGS':       config_host['QEMU_CFLAGS']}
299 summary_info += {'QEMU_LDFLAGS':      config_host['QEMU_LDFLAGS']}
300 summary_info += {'make':              config_host['MAKE']}
301 summary_info += {'install':           config_host['INSTALL']}
302 summary_info += {'python':            '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
303 summary_info += {'sphinx-build':      config_host['SPHINX_BUILD']}
304 summary_info += {'genisoimage':       config_host['GENISOIMAGE']}
305 # TODO: add back version
306 summary_info += {'slirp support':     config_host.has_key('CONFIG_SLIRP')}
307 if config_host.has_key('CONFIG_SLIRP')
308   summary_info += {'smbd':            config_host['CONFIG_SMBD_COMMAND']}
309 endif
310 summary_info += {'module support':    config_host.has_key('CONFIG_MODULES')}
311 if config_host.has_key('CONFIG_MODULES')
312   summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')}
313 endif
314 summary_info += {'host CPU':          cpu}
315 summary_info += {'host endianness':   build_machine.endian()}
316 summary_info += {'target list':       config_host['TARGET_DIRS']}
317 summary_info += {'gprof enabled':     config_host.has_key('CONFIG_GPROF')}
318 summary_info += {'sparse enabled':    meson.get_compiler('c').cmd_array().contains('cgcc')}
319 summary_info += {'strip binaries':    get_option('strip')}
320 summary_info += {'profiler':          config_host.has_key('CONFIG_PROFILER')}
321 summary_info += {'static build':      config_host.has_key('CONFIG_TOOLS')}
322 if targetos == 'darwin'
323   summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
324 endif
325 # TODO: add back version
326 summary_info += {'SDL support':       config_host.has_key('CONFIG_SDL')}
327 summary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
328 # TODO: add back version
329 summary_info += {'GTK support':       config_host.has_key('CONFIG_GTK')}
330 summary_info += {'GTK GL support':    config_host.has_key('CONFIG_GTK_GL')}
331 # TODO: add back version
332 summary_info += {'VTE support':       config_host.has_key('CONFIG_VTE')}
333 summary_info += {'TLS priority':      config_host['CONFIG_TLS_PRIORITY']}
334 summary_info += {'GNUTLS support':    config_host.has_key('CONFIG_GNUTLS')}
335 # TODO: add back version
336 summary_info += {'libgcrypt':         config_host.has_key('CONFIG_GCRYPT')}
337 if 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')}
340 endif
341 # TODO: add back version
342 summary_info += {'nettle':            config_host.has_key('CONFIG_NETTLE')}
343 if config_host.has_key('CONFIG_NETTLE')
344    summary_info += {'  XTS':             not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
345 endif
346 summary_info += {'libtasn1':          config_host.has_key('CONFIG_TASN1')}
347 summary_info += {'PAM':               config_host.has_key('CONFIG_AUTH_PAM')}
348 summary_info += {'iconv support':     config_host.has_key('CONFIG_ICONV')}
349 summary_info += {'curses support':    config_host.has_key('CONFIG_CURSES')}
350 # TODO: add back version
351 summary_info += {'virgl support':     config_host.has_key('CONFIG_VIRGL')}
352 summary_info += {'curl support':      config_host.has_key('CONFIG_CURL')}
353 summary_info += {'mingw32 support':   targetos == 'windows'}
354 summary_info += {'Audio drivers':     config_host['CONFIG_AUDIO_DRIVERS']}
355 summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
356 summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
357 summary_info += {'VirtFS support':    config_host.has_key('CONFIG_VIRTFS')}
358 summary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
359 summary_info += {'VNC support':       config_host.has_key('CONFIG_VNC')}
360 if 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')}
364 endif
365 summary_info += {'xen support':       config_host.has_key('CONFIG_XEN_BACKEND')}
366 if config_host.has_key('CONFIG_XEN_BACKEND')
367   summary_info += {'xen ctrl version':  config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
368 endif
369 summary_info += {'brlapi support':    config_host.has_key('CONFIG_BRLAPI')}
370 summary_info += {'Documentation':     config_host.has_key('BUILD_DOCS')}
371 summary_info += {'PIE':               get_option('b_pie')}
372 summary_info += {'vde support':       config_host.has_key('CONFIG_VDE')}
373 summary_info += {'netmap support':    config_host.has_key('CONFIG_NETMAP')}
374 summary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
375 summary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
376 summary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
377 summary_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
388 summary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')}
389 summary_info += {'RDMA support':      config_host.has_key('CONFIG_RDMA')}
390 summary_info += {'PVRDMA support':    config_host.has_key('CONFIG_PVRDMA')}
391 summary_info += {'fdt support':       config_host.has_key('CONFIG_FDT')}
392 summary_info += {'membarrier':        config_host.has_key('CONFIG_MEMBARRIER')}
393 summary_info += {'preadv support':    config_host.has_key('CONFIG_PREADV')}
394 summary_info += {'fdatasync':         config_host.has_key('CONFIG_FDATASYNC')}
395 summary_info += {'madvise':           config_host.has_key('CONFIG_MADVISE')}
396 summary_info += {'posix_madvise':     config_host.has_key('CONFIG_POSIX_MADVISE')}
397 summary_info += {'posix_memalign':    config_host.has_key('CONFIG_POSIX_MEMALIGN')}
398 summary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')}
399 summary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')}
400 summary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')}
401 summary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
402 summary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
403 summary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')}
404 summary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
405 summary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
406 summary_info += {'Trace backends':    config_host['TRACE_BACKENDS']}
407 if config_host['TRACE_BACKENDS'].split().contains('simple')
408   summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'}
409 endif
410 # TODO: add back protocol and server version
411 summary_info += {'spice support':     config_host.has_key('CONFIG_SPICE')}
412 summary_info += {'rbd support':       config_host.has_key('CONFIG_RBD')}
413 summary_info += {'xfsctl support':    config_host.has_key('CONFIG_XFS')}
414 summary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
415 summary_info += {'libusb':            config_host.has_key('CONFIG_USB_LIBUSB')}
416 summary_info += {'usb net redir':     config_host.has_key('CONFIG_USB_REDIR')}
417 summary_info += {'OpenGL support':    config_host.has_key('CONFIG_OPENGL')}
418 summary_info += {'OpenGL dmabufs':    config_host.has_key('CONFIG_OPENGL_DMABUF')}
419 summary_info += {'libiscsi support':  config_host.has_key('CONFIG_LIBISCSI')}
420 summary_info += {'libnfs support':    config_host.has_key('CONFIG_LIBNFS')}
421 summary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
422 if 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')}
429 endif
430 summary_info += {'seccomp support':   config_host.has_key('CONFIG_SECCOMP')}
431 summary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
432 summary_info += {'coroutine pool':    config_host['CONFIG_COROUTINE_POOL'] == '1'}
433 summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
434 summary_info += {'mutex debugging':   config_host.has_key('CONFIG_DEBUG_MUTEX')}
435 summary_info += {'crypto afalg':      config_host.has_key('CONFIG_AF_ALG')}
436 summary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
437 summary_info += {'gcov':              get_option('b_coverage')}
438 summary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
439 summary_info += {'libssh support':    config_host.has_key('CONFIG_LIBSSH')}
440 summary_info += {'QOM debugging':     config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
441 summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
442 summary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
443 summary_info += {'snappy support':    config_host.has_key('CONFIG_SNAPPY')}
444 summary_info += {'bzip2 support':     config_host.has_key('CONFIG_BZIP2')}
445 summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
446 summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
447 summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
448 summary_info += {'libxml2':           config_host.has_key('CONFIG_LIBXML2')}
449 summary_info += {'tcmalloc support':  config_host.has_key('CONFIG_TCMALLOC')}
450 summary_info += {'jemalloc support':  config_host.has_key('CONFIG_JEMALLOC')}
451 summary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')}
452 summary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')}
453 summary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')}
454 summary_info += {'bochs support':     config_host.has_key('CONFIG_BOCHS')}
455 summary_info += {'cloop support':     config_host.has_key('CONFIG_CLOOP')}
456 summary_info += {'dmg support':       config_host.has_key('CONFIG_DMG')}
457 summary_info += {'qcow v1 support':   config_host.has_key('CONFIG_QCOW1')}
458 summary_info += {'vdi support':       config_host.has_key('CONFIG_VDI')}
459 summary_info += {'vvfat support':     config_host.has_key('CONFIG_VVFAT')}
460 summary_info += {'qed support':       config_host.has_key('CONFIG_QED')}
461 summary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')}
462 summary_info += {'sheepdog support':  config_host.has_key('CONFIG_SHEEPDOG')}
463 summary_info += {'capstone':          config_host.has_key('CONFIG_CAPSTONE')}
464 summary_info += {'libpmem support':   config_host.has_key('CONFIG_LIBPMEM')}
465 summary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
466 summary_info += {'libudev':           config_host.has_key('CONFIG_LIBUDEV')}
467 summary_info += {'default devices':   config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
468 summary_info += {'plugin support':    config_host.has_key('CONFIG_PLUGIN')}
469 summary_info += {'fuzzing support':   config_host.has_key('CONFIG_FUZZ')}
470 if config_host.has_key('HAVE_GDB_BIN')
471   summary_info += {'gdb':             config_host['HAVE_GDB_BIN']}
472 endif
473 summary_info += {'thread sanitizer':  config_host.has_key('CONFIG_TSAN')}
474 summary_info += {'rng-none':          config_host.has_key('CONFIG_RNG_NONE')}
475 summary_info += {'Linux keyring':     config_host.has_key('CONFIG_SECRET_KEYRING')}
476 summary(summary_info, bool_yn: true)
478 if 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.')
489 endif
491 if 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.')
502 endif