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