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