xref: /openbmc/qemu/meson.build (revision 650b5d54)
1a5665051SPaolo Bonziniproject('qemu', ['c'], meson_version: '>=0.55.0',
2a5665051SPaolo Bonzini        default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_lundef=false'],
3a5665051SPaolo Bonzini        version: run_command('head', meson.source_root() / 'VERSION').stdout().strip())
4a5665051SPaolo Bonzini
5a5665051SPaolo Bonzininot_found = dependency('', required: false)
6a5665051SPaolo Bonzinikeyval = import('unstable-keyval')
7a81df1b6SPaolo Bonziniss = import('sourceset')
8a81df1b6SPaolo Bonzini
9a81df1b6SPaolo Bonzinicc = meson.get_compiler('c')
10a5665051SPaolo Bonziniconfig_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
11a5665051SPaolo Bonzini
12a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_CFLAGS'].split(),
13a5665051SPaolo Bonzini                      native: false, language: ['c', 'objc'])
14a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_CXXFLAGS'].split(),
15a5665051SPaolo Bonzini                      native: false, language: 'cpp')
16a5665051SPaolo Bonziniadd_project_link_arguments(config_host['QEMU_LDFLAGS'].split(),
17a5665051SPaolo Bonzini                           native: false, language: ['c', 'cpp', 'objc'])
18a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_INCLUDES'].split(),
19a5665051SPaolo Bonzini                      language: ['c', 'cpp', 'objc'])
20a5665051SPaolo Bonzini
21fc929892SMarc-André Lureaupython = import('python').find_installation()
22fc929892SMarc-André Lureau
23fc929892SMarc-André Lureaulink_language = meson.get_external_property('link_language', 'cpp')
24fc929892SMarc-André Lureauif link_language == 'cpp'
25fc929892SMarc-André Lureau  add_languages('cpp', required: true, native: false)
26fc929892SMarc-André Lureauendif
27a5665051SPaolo Bonziniif host_machine.system() == 'darwin'
28a5665051SPaolo Bonzini  add_languages('objc', required: false, native: false)
29a5665051SPaolo Bonziniendif
30a5665051SPaolo Bonzini
31968b4db3SPaolo Bonziniif 'SPARSE_CFLAGS' in config_host
32968b4db3SPaolo Bonzini  run_target('sparse',
33968b4db3SPaolo Bonzini             command: [find_program('scripts/check_sparse.py'),
34968b4db3SPaolo Bonzini                       config_host['SPARSE_CFLAGS'].split(),
35968b4db3SPaolo Bonzini                       'compile_commands.json'])
36968b4db3SPaolo Bonziniendif
37968b4db3SPaolo Bonzini
38a5665051SPaolo Bonziniconfigure_file(input: files('scripts/ninjatool.py'),
39a5665051SPaolo Bonzini               output: 'ninjatool',
40a5665051SPaolo Bonzini               configuration: config_host)
41f9332757SPaolo Bonzini
42f9332757SPaolo Bonzinisupported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux']
43f9332757SPaolo Bonzinisupported_cpus = ['ppc', 'ppc64', 's390x', 'sparc64', 'riscv32', 'riscv64', 'x86', 'x86_64',
44f9332757SPaolo Bonzini  'arm', 'aarch64', 'mips', 'mips64', 'sparc', 'sparc64']
45f9332757SPaolo Bonzini
46f9332757SPaolo Bonzinicpu = host_machine.cpu_family()
47f9332757SPaolo Bonzinitargetos = host_machine.system()
48f9332757SPaolo Bonzini
49a81df1b6SPaolo Bonzinim = cc.find_library('m', required: false)
50a81df1b6SPaolo Bonziniutil = cc.find_library('util', required: false)
51a81df1b6SPaolo Bonzinisocket = []
5204c6f1e7SMarc-André Lureauversion_res = []
53d92989aaSMarc-André Lureaucoref = []
54d92989aaSMarc-André Lureauiokit = []
55d92989aaSMarc-André Lureaucocoa = []
56d92989aaSMarc-André Lureauhvf = []
57a81df1b6SPaolo Bonziniif targetos == 'windows'
58a81df1b6SPaolo Bonzini  socket = cc.find_library('ws2_32')
5904c6f1e7SMarc-André Lureau
6004c6f1e7SMarc-André Lureau  win = import('windows')
6104c6f1e7SMarc-André Lureau  version_res = win.compile_resources('version.rc',
6204c6f1e7SMarc-André Lureau                                      depend_files: files('pc-bios/qemu-nsis.ico'),
6304c6f1e7SMarc-André Lureau                                      include_directories: include_directories('.'))
64d92989aaSMarc-André Lureauelif targetos == 'darwin'
65d92989aaSMarc-André Lureau  coref = dependency('appleframeworks', modules: 'CoreFoundation')
66d92989aaSMarc-André Lureau  iokit = dependency('appleframeworks', modules: 'IOKit')
67d92989aaSMarc-André Lureau  cocoa = dependency('appleframeworks', modules: 'Cocoa')
68d92989aaSMarc-André Lureau  hvf = dependency('appleframeworks', modules: 'Hypervisor')
69cfad62f1SPaolo Bonzinielif targetos == 'sunos'
70cfad62f1SPaolo Bonzini  socket = [cc.find_library('socket'),
71cfad62f1SPaolo Bonzini            cc.find_library('nsl'),
72cfad62f1SPaolo Bonzini            cc.find_library('resolv')]
73cfad62f1SPaolo Bonzinielif targetos == 'haiku'
74cfad62f1SPaolo Bonzini  socket = [cc.find_library('posix_error_mapper'),
75cfad62f1SPaolo Bonzini            cc.find_library('network'),
76cfad62f1SPaolo Bonzini            cc.find_library('bsd')]
77a81df1b6SPaolo Bonziniendif
78a81df1b6SPaolo Bonziniglib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(),
79a81df1b6SPaolo Bonzini                          link_args: config_host['GLIB_LIBS'].split())
80a81df1b6SPaolo Bonzinigio = not_found
81a81df1b6SPaolo Bonziniif 'CONFIG_GIO' in config_host
82a81df1b6SPaolo Bonzini  gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
83a81df1b6SPaolo Bonzini                           link_args: config_host['GIO_LIBS'].split())
84a81df1b6SPaolo Bonziniendif
85a81df1b6SPaolo Bonzinilttng = not_found
86a81df1b6SPaolo Bonziniif 'CONFIG_TRACE_UST' in config_host
87a81df1b6SPaolo Bonzini  lttng = declare_dependency(link_args: config_host['LTTNG_UST_LIBS'].split())
88a81df1b6SPaolo Bonziniendif
89a81df1b6SPaolo Bonziniurcubp = not_found
90a81df1b6SPaolo Bonziniif 'CONFIG_TRACE_UST' in config_host
91a81df1b6SPaolo Bonzini  urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
92a81df1b6SPaolo Bonziniendif
93a81df1b6SPaolo Bonzininettle = not_found
94a81df1b6SPaolo Bonziniif 'CONFIG_NETTLE' in config_host
95a81df1b6SPaolo Bonzini  nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
96a81df1b6SPaolo Bonzini                              link_args: config_host['NETTLE_LIBS'].split())
97a81df1b6SPaolo Bonziniendif
98a81df1b6SPaolo Bonzinignutls = not_found
99a81df1b6SPaolo Bonziniif 'CONFIG_GNUTLS' in config_host
100a81df1b6SPaolo Bonzini  gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(),
101a81df1b6SPaolo Bonzini                              link_args: config_host['GNUTLS_LIBS'].split())
102a81df1b6SPaolo Bonziniendif
103ea458960SMarc-André Lureaupixman = declare_dependency(compile_args: config_host['PIXMAN_CFLAGS'].split(),
104ea458960SMarc-André Lureau                            link_args: config_host['PIXMAN_LIBS'].split())
105ec0d5893SMarc-André Lureaulibattr = not_found
106ec0d5893SMarc-André Lureauif 'CONFIG_ATTR' in config_host
107ec0d5893SMarc-André Lureau  libattr = declare_dependency(link_args: config_host['LIBATTR_LIBS'].split())
108ec0d5893SMarc-André Lureauendif
1093f99cf57SPaolo Bonziniseccomp = not_found
1103f99cf57SPaolo Bonziniif 'CONFIG_SECCOMP' in config_host
1113f99cf57SPaolo Bonzini  seccomp = declare_dependency(compile_args: config_host['SECCOMP_CFLAGS'].split(),
1123f99cf57SPaolo Bonzini                               link_args: config_host['SECCOMP_LIBS'].split())
1133f99cf57SPaolo Bonziniendif
1143f99cf57SPaolo Bonzinilibcap_ng = not_found
1153f99cf57SPaolo Bonziniif 'CONFIG_LIBCAP_NG' in config_host
1163f99cf57SPaolo Bonzini  libcap_ng = declare_dependency(link_args: config_host['LIBCAP_NG_LIBS'].split())
1173f99cf57SPaolo Bonziniendif
118ade60d4fSMarc-André Lureauxkbcommon = not_found
119ade60d4fSMarc-André Lureauif 'CONFIG_XKBCOMMON' in config_host
120ade60d4fSMarc-André Lureau  xkbcommon = declare_dependency(compile_args: config_host['XKBCOMMON_CFLAGS'].split(),
121ade60d4fSMarc-André Lureau                                 link_args: config_host['XKBCOMMON_LIBS'].split())
122ade60d4fSMarc-André Lureauendif
1235ee24e78SMarc-André Lureaurt = cc.find_library('rt', required: false)
12499650b62SPaolo Bonzinilibiscsi = not_found
12599650b62SPaolo Bonziniif 'CONFIG_LIBISCSI' in config_host
12699650b62SPaolo Bonzini  libiscsi = declare_dependency(compile_args: config_host['LIBISCSI_CFLAGS'].split(),
12799650b62SPaolo Bonzini                                link_args: config_host['LIBISCSI_LIBS'].split())
12899650b62SPaolo Bonziniendif
129ea458960SMarc-André Lureaugbm = not_found
130ea458960SMarc-André Lureauif 'CONFIG_GBM' in config_host
131ea458960SMarc-André Lureau  gbm = declare_dependency(compile_args: config_host['GBM_CFLAGS'].split(),
132ea458960SMarc-André Lureau                           link_args: config_host['GBM_LIBS'].split())
133ea458960SMarc-André Lureauendif
134ea458960SMarc-André Lureauvirgl = not_found
135ea458960SMarc-André Lureauif 'CONFIG_VIRGL' in config_host
136ea458960SMarc-André Lureau  virgl = declare_dependency(compile_args: config_host['VIRGL_CFLAGS'].split(),
137ea458960SMarc-André Lureau                             link_args: config_host['VIRGL_LIBS'].split())
138ea458960SMarc-André Lureauendif
1391d7bb6abSMarc-André Lureaucurl = not_found
1401d7bb6abSMarc-André Lureauif 'CONFIG_CURL' in config_host
1411d7bb6abSMarc-André Lureau  curl = declare_dependency(compile_args: config_host['CURL_CFLAGS'].split(),
1421d7bb6abSMarc-André Lureau                            link_args: config_host['CURL_LIBS'].split())
1431d7bb6abSMarc-André Lureauendif
144f15bff25SPaolo Bonzinilibudev = not_found
145f15bff25SPaolo Bonziniif 'CONFIG_LIBUDEV' in config_host
146f15bff25SPaolo Bonzini  libudev = declare_dependency(link_args: config_host['LIBUDEV_LIBS'].split())
147f15bff25SPaolo Bonziniendif
148a81df1b6SPaolo Bonzini
149a81df1b6SPaolo Bonzinitarget_dirs = config_host['TARGET_DIRS'].split()
150a81df1b6SPaolo Bonzinihave_user = false
151a81df1b6SPaolo Bonzinihave_system = false
152a81df1b6SPaolo Bonziniforeach target : target_dirs
153a81df1b6SPaolo Bonzini  have_user = have_user or target.endswith('-user')
154a81df1b6SPaolo Bonzini  have_system = have_system or target.endswith('-softmmu')
155a81df1b6SPaolo Bonziniendforeach
156a81df1b6SPaolo Bonzinihave_tools = 'CONFIG_TOOLS' in config_host
157a81df1b6SPaolo Bonzinihave_block = have_system or have_tools
158a81df1b6SPaolo Bonzini
159a81df1b6SPaolo Bonzini# Generators
160a81df1b6SPaolo Bonzini
1612c273f32SMarc-André Lureaugenh = []
162*650b5d54SMarc-André Lureaushaderinclude = find_program('scripts/shaderinclude.pl')
163a81df1b6SPaolo Bonziniqapi_gen = find_program('scripts/qapi-gen.py')
164a81df1b6SPaolo Bonziniqapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py',
165a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/commands.py',
166a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/common.py',
167a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/doc.py',
168a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/error.py',
169a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/events.py',
170a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/expr.py',
171a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/gen.py',
172a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/introspect.py',
173a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/parser.py',
174a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/schema.py',
175a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/source.py',
176a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/types.py',
177a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/visit.py',
178a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/common.py',
179a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/doc.py',
180a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi-gen.py'
181a81df1b6SPaolo Bonzini]
182a81df1b6SPaolo Bonzini
183a81df1b6SPaolo Bonzinitracetool = [
184a81df1b6SPaolo Bonzini  python, files('scripts/tracetool.py'),
185a81df1b6SPaolo Bonzini   '--backend=' + config_host['TRACE_BACKENDS']
186a81df1b6SPaolo Bonzini]
187a81df1b6SPaolo Bonzini
1882c273f32SMarc-André Lureauqemu_version_cmd = [find_program('scripts/qemu-version.sh'),
1892c273f32SMarc-André Lureau                    meson.current_source_dir(),
1902c273f32SMarc-André Lureau                    config_host['PKGVERSION'], config_host['VERSION']]
1912c273f32SMarc-André Lureauqemu_version = custom_target('qemu-version.h',
1922c273f32SMarc-André Lureau                             output: 'qemu-version.h',
1932c273f32SMarc-André Lureau                             command: qemu_version_cmd,
1942c273f32SMarc-André Lureau                             capture: true,
1952c273f32SMarc-André Lureau                             build_by_default: true,
1962c273f32SMarc-André Lureau                             build_always_stale: true)
1972c273f32SMarc-André Lureaugenh += qemu_version
1982c273f32SMarc-André Lureau
199a81df1b6SPaolo Bonzini# Collect sourcesets.
200a81df1b6SPaolo Bonzini
201a81df1b6SPaolo Bonziniutil_ss = ss.source_set()
202a81df1b6SPaolo Bonzinistub_ss = ss.source_set()
203a81df1b6SPaolo Bonzinitrace_ss = ss.source_set()
204a81df1b6SPaolo Bonzini
205a81df1b6SPaolo Bonzini###############
206a81df1b6SPaolo Bonzini# Trace files #
207a81df1b6SPaolo Bonzini###############
208a81df1b6SPaolo Bonzini
209a81df1b6SPaolo Bonzinitrace_events_subdirs = [
210a81df1b6SPaolo Bonzini  'accel/kvm',
211a81df1b6SPaolo Bonzini  'accel/tcg',
212a81df1b6SPaolo Bonzini  'crypto',
213a81df1b6SPaolo Bonzini  'monitor',
214a81df1b6SPaolo Bonzini]
215a81df1b6SPaolo Bonziniif have_user
216a81df1b6SPaolo Bonzini  trace_events_subdirs += [ 'linux-user' ]
217a81df1b6SPaolo Bonziniendif
218a81df1b6SPaolo Bonziniif have_block
219a81df1b6SPaolo Bonzini  trace_events_subdirs += [
220a81df1b6SPaolo Bonzini    'authz',
221a81df1b6SPaolo Bonzini    'block',
222a81df1b6SPaolo Bonzini    'io',
223a81df1b6SPaolo Bonzini    'nbd',
224a81df1b6SPaolo Bonzini    'scsi',
225a81df1b6SPaolo Bonzini  ]
226a81df1b6SPaolo Bonziniendif
227a81df1b6SPaolo Bonziniif have_system
228a81df1b6SPaolo Bonzini  trace_events_subdirs += [
229a81df1b6SPaolo Bonzini    'audio',
230a81df1b6SPaolo Bonzini    'backends',
231a81df1b6SPaolo Bonzini    'backends/tpm',
232a81df1b6SPaolo Bonzini    'chardev',
233a81df1b6SPaolo Bonzini    'hw/9pfs',
234a81df1b6SPaolo Bonzini    'hw/acpi',
235a81df1b6SPaolo Bonzini    'hw/alpha',
236a81df1b6SPaolo Bonzini    'hw/arm',
237a81df1b6SPaolo Bonzini    'hw/audio',
238a81df1b6SPaolo Bonzini    'hw/block',
239a81df1b6SPaolo Bonzini    'hw/block/dataplane',
240a81df1b6SPaolo Bonzini    'hw/char',
241a81df1b6SPaolo Bonzini    'hw/display',
242a81df1b6SPaolo Bonzini    'hw/dma',
243a81df1b6SPaolo Bonzini    'hw/hppa',
244a81df1b6SPaolo Bonzini    'hw/hyperv',
245a81df1b6SPaolo Bonzini    'hw/i2c',
246a81df1b6SPaolo Bonzini    'hw/i386',
247a81df1b6SPaolo Bonzini    'hw/i386/xen',
248a81df1b6SPaolo Bonzini    'hw/ide',
249a81df1b6SPaolo Bonzini    'hw/input',
250a81df1b6SPaolo Bonzini    'hw/intc',
251a81df1b6SPaolo Bonzini    'hw/isa',
252a81df1b6SPaolo Bonzini    'hw/mem',
253a81df1b6SPaolo Bonzini    'hw/mips',
254a81df1b6SPaolo Bonzini    'hw/misc',
255a81df1b6SPaolo Bonzini    'hw/misc/macio',
256a81df1b6SPaolo Bonzini    'hw/net',
257a81df1b6SPaolo Bonzini    'hw/nvram',
258a81df1b6SPaolo Bonzini    'hw/pci',
259a81df1b6SPaolo Bonzini    'hw/pci-host',
260a81df1b6SPaolo Bonzini    'hw/ppc',
261a81df1b6SPaolo Bonzini    'hw/rdma',
262a81df1b6SPaolo Bonzini    'hw/rdma/vmw',
263a81df1b6SPaolo Bonzini    'hw/rtc',
264a81df1b6SPaolo Bonzini    'hw/s390x',
265a81df1b6SPaolo Bonzini    'hw/scsi',
266a81df1b6SPaolo Bonzini    'hw/sd',
267a81df1b6SPaolo Bonzini    'hw/sparc',
268a81df1b6SPaolo Bonzini    'hw/sparc64',
269a81df1b6SPaolo Bonzini    'hw/ssi',
270a81df1b6SPaolo Bonzini    'hw/timer',
271a81df1b6SPaolo Bonzini    'hw/tpm',
272a81df1b6SPaolo Bonzini    'hw/usb',
273a81df1b6SPaolo Bonzini    'hw/vfio',
274a81df1b6SPaolo Bonzini    'hw/virtio',
275a81df1b6SPaolo Bonzini    'hw/watchdog',
276a81df1b6SPaolo Bonzini    'hw/xen',
277a81df1b6SPaolo Bonzini    'hw/gpio',
278a81df1b6SPaolo Bonzini    'hw/riscv',
279a81df1b6SPaolo Bonzini    'migration',
280a81df1b6SPaolo Bonzini    'net',
281a81df1b6SPaolo Bonzini    'ui',
282a81df1b6SPaolo Bonzini  ]
283a81df1b6SPaolo Bonziniendif
284a81df1b6SPaolo Bonzinitrace_events_subdirs += [
285a81df1b6SPaolo Bonzini  'hw/core',
286a81df1b6SPaolo Bonzini  'qapi',
287a81df1b6SPaolo Bonzini  'qom',
288a81df1b6SPaolo Bonzini  'target/arm',
289a81df1b6SPaolo Bonzini  'target/hppa',
290a81df1b6SPaolo Bonzini  'target/i386',
291a81df1b6SPaolo Bonzini  'target/mips',
292a81df1b6SPaolo Bonzini  'target/ppc',
293a81df1b6SPaolo Bonzini  'target/riscv',
294a81df1b6SPaolo Bonzini  'target/s390x',
295a81df1b6SPaolo Bonzini  'target/sparc',
296a81df1b6SPaolo Bonzini  'util',
297a81df1b6SPaolo Bonzini]
298a81df1b6SPaolo Bonzini
299a81df1b6SPaolo Bonzinisubdir('qapi')
300a81df1b6SPaolo Bonzinisubdir('qobject')
301a81df1b6SPaolo Bonzinisubdir('stubs')
302a81df1b6SPaolo Bonzinisubdir('trace')
303a81df1b6SPaolo Bonzinisubdir('util')
304a81df1b6SPaolo Bonzinisubdir('crypto')
305a81df1b6SPaolo Bonzinisubdir('storage-daemon')
3062d78b56eSMarc-André Lureausubdir('ui')
307a81df1b6SPaolo Bonzini
308a81df1b6SPaolo Bonzini# Build targets from sourcesets
309a81df1b6SPaolo Bonzini
310a81df1b6SPaolo Bonzinistub_ss = stub_ss.apply(config_host, strict: false)
311a81df1b6SPaolo Bonzini
312a81df1b6SPaolo Bonziniutil_ss.add_all(trace_ss)
313a81df1b6SPaolo Bonziniutil_ss = util_ss.apply(config_host, strict: false)
314a81df1b6SPaolo Bonzinilibqemuutil = static_library('qemuutil',
315a81df1b6SPaolo Bonzini                             sources: util_ss.sources() + stub_ss.sources() + genh,
316a81df1b6SPaolo Bonzini                             dependencies: [util_ss.dependencies(), m, glib, socket])
317a81df1b6SPaolo Bonziniqemuutil = declare_dependency(link_with: libqemuutil,
31804c6f1e7SMarc-André Lureau                              sources: genh + version_res)
319a81df1b6SPaolo Bonzini
320ec0d5893SMarc-André Lureausubdir('fsdev')
321ec0d5893SMarc-André Lureau
322931049b4SPaolo Bonzini# Other build targets
323f15bff25SPaolo Bonziniif 'CONFIG_GUEST_AGENT' in config_host
324f15bff25SPaolo Bonzini  subdir('qga')
325f15bff25SPaolo Bonziniendif
326f15bff25SPaolo Bonzini
327931049b4SPaolo Bonziniif have_tools
328a9c9727cSPaolo Bonzini  subdir('contrib/rdmacm-mux')
3291d7bb6abSMarc-André Lureau  subdir('contrib/elf2dmp')
330a9c9727cSPaolo Bonzini
331ade60d4fSMarc-André Lureau  if 'CONFIG_XKBCOMMON' in config_host
332ade60d4fSMarc-André Lureau    executable('qemu-keymap', files('qemu-keymap.c', 'ui/input-keymap.c'),
333ade60d4fSMarc-André Lureau               dependencies: [qemuutil, xkbcommon], install: true)
334ade60d4fSMarc-André Lureau  endif
335ade60d4fSMarc-André Lureau
336157e7b13SMarc-André Lureau  executable('qemu-edid', files('qemu-edid.c', 'hw/display/edid-generate.c'),
337157e7b13SMarc-André Lureau             dependencies: qemuutil,
338157e7b13SMarc-André Lureau             install: true)
339157e7b13SMarc-André Lureau
340931049b4SPaolo Bonzini  if 'CONFIG_VHOST_USER' in config_host
341931049b4SPaolo Bonzini    subdir('contrib/libvhost-user')
3422d7ac0afSPaolo Bonzini    subdir('contrib/vhost-user-blk')
343ea458960SMarc-André Lureau    if 'CONFIG_LINUX' in config_host
344ea458960SMarc-André Lureau      subdir('contrib/vhost-user-gpu')
345ea458960SMarc-André Lureau    endif
34632fcc624SMarc-André Lureau    subdir('contrib/vhost-user-input')
34799650b62SPaolo Bonzini    subdir('contrib/vhost-user-scsi')
348931049b4SPaolo Bonzini  endif
3498f51e01cSMarc-André Lureau
3508f51e01cSMarc-André Lureau  if targetos == 'linux'
3518f51e01cSMarc-André Lureau    executable('qemu-bridge-helper', files('qemu-bridge-helper.c'),
3528f51e01cSMarc-André Lureau               dependencies: [qemuutil, libcap_ng],
3538f51e01cSMarc-André Lureau               install: true,
3548f51e01cSMarc-André Lureau               install_dir: get_option('libexecdir'))
3558f51e01cSMarc-André Lureau  endif
3568f51e01cSMarc-André Lureau
3575ee24e78SMarc-André Lureau  if 'CONFIG_IVSHMEM' in config_host
3585ee24e78SMarc-André Lureau    subdir('contrib/ivshmem-client')
3595ee24e78SMarc-André Lureau    subdir('contrib/ivshmem-server')
3605ee24e78SMarc-André Lureau  endif
361931049b4SPaolo Bonziniendif
362931049b4SPaolo Bonzini
3633f99cf57SPaolo Bonzinisubdir('tools')
3643f99cf57SPaolo Bonzini
365f9332757SPaolo Bonzinisummary_info = {}
366f9332757SPaolo Bonzinisummary_info += {'Install prefix':    config_host['prefix']}
367f9332757SPaolo Bonzinisummary_info += {'BIOS directory':    config_host['qemu_datadir']}
368f9332757SPaolo Bonzinisummary_info += {'firmware path':     config_host['qemu_firmwarepath']}
369f9332757SPaolo Bonzinisummary_info += {'binary directory':  config_host['bindir']}
370f9332757SPaolo Bonzinisummary_info += {'library directory': config_host['libdir']}
371f9332757SPaolo Bonzinisummary_info += {'module directory':  config_host['qemu_moddir']}
372f9332757SPaolo Bonzinisummary_info += {'libexec directory': config_host['libexecdir']}
373f9332757SPaolo Bonzinisummary_info += {'include directory': config_host['includedir']}
374f9332757SPaolo Bonzinisummary_info += {'config directory':  config_host['sysconfdir']}
375f9332757SPaolo Bonziniif targetos != 'windows'
376f9332757SPaolo Bonzini  summary_info += {'local state directory': config_host['qemu_localstatedir']}
377f9332757SPaolo Bonzini  summary_info += {'Manual directory':      config_host['mandir']}
378f9332757SPaolo Bonzinielse
379f9332757SPaolo Bonzini  summary_info += {'local state directory': 'queried at runtime'}
380f9332757SPaolo Bonziniendif
381f9332757SPaolo Bonzinisummary_info += {'Build directory':   meson.current_build_dir()}
382f9332757SPaolo Bonzinisummary_info += {'Source path':       meson.current_source_dir()}
383f9332757SPaolo Bonzinisummary_info += {'GIT binary':        config_host['GIT']}
384f9332757SPaolo Bonzinisummary_info += {'GIT submodules':    config_host['GIT_SUBMODULES']}
385f9332757SPaolo Bonzinisummary_info += {'C compiler':        meson.get_compiler('c').cmd_array()[0]}
386f9332757SPaolo Bonzinisummary_info += {'Host C compiler':   meson.get_compiler('c', native: true).cmd_array()[0]}
387f9332757SPaolo Bonziniif link_language == 'cpp'
388f9332757SPaolo Bonzini  summary_info += {'C++ compiler':      meson.get_compiler('cpp').cmd_array()[0]}
389f9332757SPaolo Bonzinielse
390f9332757SPaolo Bonzini  summary_info += {'C++ compiler':      false}
391f9332757SPaolo Bonziniendif
392f9332757SPaolo Bonziniif targetos == 'darwin'
393f9332757SPaolo Bonzini  summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]}
394f9332757SPaolo Bonziniendif
395f9332757SPaolo Bonzinisummary_info += {'ARFLAGS':           config_host['ARFLAGS']}
396f9332757SPaolo Bonzinisummary_info += {'CFLAGS':            config_host['CFLAGS']}
397f9332757SPaolo Bonzinisummary_info += {'QEMU_CFLAGS':       config_host['QEMU_CFLAGS']}
398f9332757SPaolo Bonzinisummary_info += {'QEMU_LDFLAGS':      config_host['QEMU_LDFLAGS']}
399f9332757SPaolo Bonzinisummary_info += {'make':              config_host['MAKE']}
400f9332757SPaolo Bonzinisummary_info += {'install':           config_host['INSTALL']}
401f9332757SPaolo Bonzinisummary_info += {'python':            '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
402f9332757SPaolo Bonzinisummary_info += {'sphinx-build':      config_host['SPHINX_BUILD']}
403f9332757SPaolo Bonzinisummary_info += {'genisoimage':       config_host['GENISOIMAGE']}
404f9332757SPaolo Bonzini# TODO: add back version
405f9332757SPaolo Bonzinisummary_info += {'slirp support':     config_host.has_key('CONFIG_SLIRP')}
406f9332757SPaolo Bonziniif config_host.has_key('CONFIG_SLIRP')
407f9332757SPaolo Bonzini  summary_info += {'smbd':            config_host['CONFIG_SMBD_COMMAND']}
408f9332757SPaolo Bonziniendif
409f9332757SPaolo Bonzinisummary_info += {'module support':    config_host.has_key('CONFIG_MODULES')}
410f9332757SPaolo Bonziniif config_host.has_key('CONFIG_MODULES')
411f9332757SPaolo Bonzini  summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')}
412f9332757SPaolo Bonziniendif
413f9332757SPaolo Bonzinisummary_info += {'host CPU':          cpu}
414f9332757SPaolo Bonzinisummary_info += {'host endianness':   build_machine.endian()}
415f9332757SPaolo Bonzinisummary_info += {'target list':       config_host['TARGET_DIRS']}
416f9332757SPaolo Bonzinisummary_info += {'gprof enabled':     config_host.has_key('CONFIG_GPROF')}
417f9332757SPaolo Bonzinisummary_info += {'sparse enabled':    meson.get_compiler('c').cmd_array().contains('cgcc')}
418f9332757SPaolo Bonzinisummary_info += {'strip binaries':    get_option('strip')}
419f9332757SPaolo Bonzinisummary_info += {'profiler':          config_host.has_key('CONFIG_PROFILER')}
420f9332757SPaolo Bonzinisummary_info += {'static build':      config_host.has_key('CONFIG_TOOLS')}
421f9332757SPaolo Bonziniif targetos == 'darwin'
422f9332757SPaolo Bonzini  summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
423f9332757SPaolo Bonziniendif
424f9332757SPaolo Bonzini# TODO: add back version
425f9332757SPaolo Bonzinisummary_info += {'SDL support':       config_host.has_key('CONFIG_SDL')}
426f9332757SPaolo Bonzinisummary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
427f9332757SPaolo Bonzini# TODO: add back version
428f9332757SPaolo Bonzinisummary_info += {'GTK support':       config_host.has_key('CONFIG_GTK')}
429f9332757SPaolo Bonzinisummary_info += {'GTK GL support':    config_host.has_key('CONFIG_GTK_GL')}
430f9332757SPaolo Bonzini# TODO: add back version
431f9332757SPaolo Bonzinisummary_info += {'VTE support':       config_host.has_key('CONFIG_VTE')}
432f9332757SPaolo Bonzinisummary_info += {'TLS priority':      config_host['CONFIG_TLS_PRIORITY']}
433f9332757SPaolo Bonzinisummary_info += {'GNUTLS support':    config_host.has_key('CONFIG_GNUTLS')}
434f9332757SPaolo Bonzini# TODO: add back version
435f9332757SPaolo Bonzinisummary_info += {'libgcrypt':         config_host.has_key('CONFIG_GCRYPT')}
436f9332757SPaolo Bonziniif config_host.has_key('CONFIG_GCRYPT')
437f9332757SPaolo Bonzini   summary_info += {'  hmac':            config_host.has_key('CONFIG_GCRYPT_HMAC')}
438f9332757SPaolo Bonzini   summary_info += {'  XTS':             not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
439f9332757SPaolo Bonziniendif
440f9332757SPaolo Bonzini# TODO: add back version
441f9332757SPaolo Bonzinisummary_info += {'nettle':            config_host.has_key('CONFIG_NETTLE')}
442f9332757SPaolo Bonziniif config_host.has_key('CONFIG_NETTLE')
443f9332757SPaolo Bonzini   summary_info += {'  XTS':             not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
444f9332757SPaolo Bonziniendif
445f9332757SPaolo Bonzinisummary_info += {'libtasn1':          config_host.has_key('CONFIG_TASN1')}
446f9332757SPaolo Bonzinisummary_info += {'PAM':               config_host.has_key('CONFIG_AUTH_PAM')}
447f9332757SPaolo Bonzinisummary_info += {'iconv support':     config_host.has_key('CONFIG_ICONV')}
448f9332757SPaolo Bonzinisummary_info += {'curses support':    config_host.has_key('CONFIG_CURSES')}
449f9332757SPaolo Bonzini# TODO: add back version
450f9332757SPaolo Bonzinisummary_info += {'virgl support':     config_host.has_key('CONFIG_VIRGL')}
451f9332757SPaolo Bonzinisummary_info += {'curl support':      config_host.has_key('CONFIG_CURL')}
452f9332757SPaolo Bonzinisummary_info += {'mingw32 support':   targetos == 'windows'}
453f9332757SPaolo Bonzinisummary_info += {'Audio drivers':     config_host['CONFIG_AUDIO_DRIVERS']}
454f9332757SPaolo Bonzinisummary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
455f9332757SPaolo Bonzinisummary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
456f9332757SPaolo Bonzinisummary_info += {'VirtFS support':    config_host.has_key('CONFIG_VIRTFS')}
457f9332757SPaolo Bonzinisummary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
458f9332757SPaolo Bonzinisummary_info += {'VNC support':       config_host.has_key('CONFIG_VNC')}
459f9332757SPaolo Bonziniif config_host.has_key('CONFIG_VNC')
460f9332757SPaolo Bonzini  summary_info += {'VNC SASL support':  config_host.has_key('CONFIG_VNC_SASL')}
461f9332757SPaolo Bonzini  summary_info += {'VNC JPEG support':  config_host.has_key('CONFIG_VNC_JPEG')}
462f9332757SPaolo Bonzini  summary_info += {'VNC PNG support':   config_host.has_key('CONFIG_VNC_PNG')}
463f9332757SPaolo Bonziniendif
464f9332757SPaolo Bonzinisummary_info += {'xen support':       config_host.has_key('CONFIG_XEN_BACKEND')}
465f9332757SPaolo Bonziniif config_host.has_key('CONFIG_XEN_BACKEND')
466f9332757SPaolo Bonzini  summary_info += {'xen ctrl version':  config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
467f9332757SPaolo Bonziniendif
468f9332757SPaolo Bonzinisummary_info += {'brlapi support':    config_host.has_key('CONFIG_BRLAPI')}
469f9332757SPaolo Bonzinisummary_info += {'Documentation':     config_host.has_key('BUILD_DOCS')}
470f9332757SPaolo Bonzinisummary_info += {'PIE':               get_option('b_pie')}
471f9332757SPaolo Bonzinisummary_info += {'vde support':       config_host.has_key('CONFIG_VDE')}
472f9332757SPaolo Bonzinisummary_info += {'netmap support':    config_host.has_key('CONFIG_NETMAP')}
473f9332757SPaolo Bonzinisummary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
474f9332757SPaolo Bonzinisummary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
475f9332757SPaolo Bonzinisummary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
476f9332757SPaolo Bonzinisummary_info += {'Install blobs':     config_host.has_key('INSTALL_BLOBS')}
477f9332757SPaolo Bonzini# TODO: add back KVM/HAX/HVF/WHPX/TCG
478f9332757SPaolo Bonzini#summary_info += {'KVM support':       have_kvm'}
479f9332757SPaolo Bonzini#summary_info += {'HAX support':       have_hax'}
480f9332757SPaolo Bonzini#summary_info += {'HVF support':       have_hvf'}
481f9332757SPaolo Bonzini#summary_info += {'WHPX support':      have_whpx'}
482f9332757SPaolo Bonzini#summary_info += {'TCG support':       have_tcg'}
483f9332757SPaolo Bonzini#if get_option('tcg')
484f9332757SPaolo Bonzini#  summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
485f9332757SPaolo Bonzini#  summary_info += {'TCG interpreter':   config_host.has_key('CONFIG_TCG_INTERPRETER')}
486f9332757SPaolo Bonzini#endif
487f9332757SPaolo Bonzinisummary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')}
488f9332757SPaolo Bonzinisummary_info += {'RDMA support':      config_host.has_key('CONFIG_RDMA')}
489f9332757SPaolo Bonzinisummary_info += {'PVRDMA support':    config_host.has_key('CONFIG_PVRDMA')}
490f9332757SPaolo Bonzinisummary_info += {'fdt support':       config_host.has_key('CONFIG_FDT')}
491f9332757SPaolo Bonzinisummary_info += {'membarrier':        config_host.has_key('CONFIG_MEMBARRIER')}
492f9332757SPaolo Bonzinisummary_info += {'preadv support':    config_host.has_key('CONFIG_PREADV')}
493f9332757SPaolo Bonzinisummary_info += {'fdatasync':         config_host.has_key('CONFIG_FDATASYNC')}
494f9332757SPaolo Bonzinisummary_info += {'madvise':           config_host.has_key('CONFIG_MADVISE')}
495f9332757SPaolo Bonzinisummary_info += {'posix_madvise':     config_host.has_key('CONFIG_POSIX_MADVISE')}
496f9332757SPaolo Bonzinisummary_info += {'posix_memalign':    config_host.has_key('CONFIG_POSIX_MEMALIGN')}
497f9332757SPaolo Bonzinisummary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')}
498f9332757SPaolo Bonzinisummary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')}
499f9332757SPaolo Bonzinisummary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')}
500f9332757SPaolo Bonzinisummary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
501f9332757SPaolo Bonzinisummary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
502f9332757SPaolo Bonzinisummary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')}
503f9332757SPaolo Bonzinisummary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
504f9332757SPaolo Bonzinisummary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
505f9332757SPaolo Bonzinisummary_info += {'Trace backends':    config_host['TRACE_BACKENDS']}
506f9332757SPaolo Bonziniif config_host['TRACE_BACKENDS'].split().contains('simple')
507f9332757SPaolo Bonzini  summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'}
508f9332757SPaolo Bonziniendif
509f9332757SPaolo Bonzini# TODO: add back protocol and server version
510f9332757SPaolo Bonzinisummary_info += {'spice support':     config_host.has_key('CONFIG_SPICE')}
511f9332757SPaolo Bonzinisummary_info += {'rbd support':       config_host.has_key('CONFIG_RBD')}
512f9332757SPaolo Bonzinisummary_info += {'xfsctl support':    config_host.has_key('CONFIG_XFS')}
513f9332757SPaolo Bonzinisummary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
514f9332757SPaolo Bonzinisummary_info += {'libusb':            config_host.has_key('CONFIG_USB_LIBUSB')}
515f9332757SPaolo Bonzinisummary_info += {'usb net redir':     config_host.has_key('CONFIG_USB_REDIR')}
516f9332757SPaolo Bonzinisummary_info += {'OpenGL support':    config_host.has_key('CONFIG_OPENGL')}
517f9332757SPaolo Bonzinisummary_info += {'OpenGL dmabufs':    config_host.has_key('CONFIG_OPENGL_DMABUF')}
518f9332757SPaolo Bonzinisummary_info += {'libiscsi support':  config_host.has_key('CONFIG_LIBISCSI')}
519f9332757SPaolo Bonzinisummary_info += {'libnfs support':    config_host.has_key('CONFIG_LIBNFS')}
520f9332757SPaolo Bonzinisummary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
521f9332757SPaolo Bonziniif targetos == 'windows'
522f9332757SPaolo Bonzini  if 'WIN_SDK' in config_host
523f9332757SPaolo Bonzini    summary_info += {'Windows SDK':       config_host['WIN_SDK']}
524f9332757SPaolo Bonzini  endif
525f9332757SPaolo Bonzini  summary_info += {'QGA VSS support':   config_host.has_key('CONFIG_QGA_VSS')}
526f9332757SPaolo Bonzini  summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
527f9332757SPaolo Bonzini  summary_info += {'QGA MSI support':   config_host.has_key('CONFIG_QGA_MSI_ENABLED')}
528f9332757SPaolo Bonziniendif
529f9332757SPaolo Bonzinisummary_info += {'seccomp support':   config_host.has_key('CONFIG_SECCOMP')}
530f9332757SPaolo Bonzinisummary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
531f9332757SPaolo Bonzinisummary_info += {'coroutine pool':    config_host['CONFIG_COROUTINE_POOL'] == '1'}
532f9332757SPaolo Bonzinisummary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
533f9332757SPaolo Bonzinisummary_info += {'mutex debugging':   config_host.has_key('CONFIG_DEBUG_MUTEX')}
534f9332757SPaolo Bonzinisummary_info += {'crypto afalg':      config_host.has_key('CONFIG_AF_ALG')}
535f9332757SPaolo Bonzinisummary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
536bf0e56a3SMarc-André Lureausummary_info += {'gcov':              get_option('b_coverage')}
537f9332757SPaolo Bonzinisummary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
538f9332757SPaolo Bonzinisummary_info += {'libssh support':    config_host.has_key('CONFIG_LIBSSH')}
539f9332757SPaolo Bonzinisummary_info += {'QOM debugging':     config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
540f9332757SPaolo Bonzinisummary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
541f9332757SPaolo Bonzinisummary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
542f9332757SPaolo Bonzinisummary_info += {'snappy support':    config_host.has_key('CONFIG_SNAPPY')}
543f9332757SPaolo Bonzinisummary_info += {'bzip2 support':     config_host.has_key('CONFIG_BZIP2')}
544f9332757SPaolo Bonzinisummary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
545f9332757SPaolo Bonzinisummary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
546f9332757SPaolo Bonzinisummary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
547f9332757SPaolo Bonzinisummary_info += {'libxml2':           config_host.has_key('CONFIG_LIBXML2')}
548f9332757SPaolo Bonzinisummary_info += {'tcmalloc support':  config_host.has_key('CONFIG_TCMALLOC')}
549f9332757SPaolo Bonzinisummary_info += {'jemalloc support':  config_host.has_key('CONFIG_JEMALLOC')}
550f9332757SPaolo Bonzinisummary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')}
551f9332757SPaolo Bonzinisummary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')}
552f9332757SPaolo Bonzinisummary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')}
553f9332757SPaolo Bonzinisummary_info += {'bochs support':     config_host.has_key('CONFIG_BOCHS')}
554f9332757SPaolo Bonzinisummary_info += {'cloop support':     config_host.has_key('CONFIG_CLOOP')}
555f9332757SPaolo Bonzinisummary_info += {'dmg support':       config_host.has_key('CONFIG_DMG')}
556f9332757SPaolo Bonzinisummary_info += {'qcow v1 support':   config_host.has_key('CONFIG_QCOW1')}
557f9332757SPaolo Bonzinisummary_info += {'vdi support':       config_host.has_key('CONFIG_VDI')}
558f9332757SPaolo Bonzinisummary_info += {'vvfat support':     config_host.has_key('CONFIG_VVFAT')}
559f9332757SPaolo Bonzinisummary_info += {'qed support':       config_host.has_key('CONFIG_QED')}
560f9332757SPaolo Bonzinisummary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')}
561f9332757SPaolo Bonzinisummary_info += {'sheepdog support':  config_host.has_key('CONFIG_SHEEPDOG')}
562f9332757SPaolo Bonzinisummary_info += {'capstone':          config_host.has_key('CONFIG_CAPSTONE')}
563f9332757SPaolo Bonzinisummary_info += {'libpmem support':   config_host.has_key('CONFIG_LIBPMEM')}
564f9332757SPaolo Bonzinisummary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
565f9332757SPaolo Bonzinisummary_info += {'libudev':           config_host.has_key('CONFIG_LIBUDEV')}
566f9332757SPaolo Bonzinisummary_info += {'default devices':   config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
567f9332757SPaolo Bonzinisummary_info += {'plugin support':    config_host.has_key('CONFIG_PLUGIN')}
568f9332757SPaolo Bonzinisummary_info += {'fuzzing support':   config_host.has_key('CONFIG_FUZZ')}
569f9332757SPaolo Bonziniif config_host.has_key('HAVE_GDB_BIN')
570f9332757SPaolo Bonzini  summary_info += {'gdb':             config_host['HAVE_GDB_BIN']}
571f9332757SPaolo Bonziniendif
572f9332757SPaolo Bonzinisummary_info += {'thread sanitizer':  config_host.has_key('CONFIG_TSAN')}
573f9332757SPaolo Bonzinisummary_info += {'rng-none':          config_host.has_key('CONFIG_RNG_NONE')}
574f9332757SPaolo Bonzinisummary_info += {'Linux keyring':     config_host.has_key('CONFIG_SECRET_KEYRING')}
575f9332757SPaolo Bonzinisummary(summary_info, bool_yn: true)
576f9332757SPaolo Bonzini
577f9332757SPaolo Bonziniif not supported_cpus.contains(cpu)
578f9332757SPaolo Bonzini  message()
579f9332757SPaolo Bonzini  warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!')
580f9332757SPaolo Bonzini  message()
581f9332757SPaolo Bonzini  message('CPU host architecture ' + cpu + ' support is not currently maintained.')
582f9332757SPaolo Bonzini  message('The QEMU project intends to remove support for this host CPU in')
583f9332757SPaolo Bonzini  message('a future release if nobody volunteers to maintain it and to')
584f9332757SPaolo Bonzini  message('provide a build host for our continuous integration setup.')
585f9332757SPaolo Bonzini  message('configure has succeeded and you can continue to build, but')
586f9332757SPaolo Bonzini  message('if you care about QEMU on this platform you should contact')
587f9332757SPaolo Bonzini  message('us upstream at qemu-devel@nongnu.org.')
588f9332757SPaolo Bonziniendif
589f9332757SPaolo Bonzini
590f9332757SPaolo Bonziniif not supported_oses.contains(targetos)
591f9332757SPaolo Bonzini  message()
592f9332757SPaolo Bonzini  warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!')
593f9332757SPaolo Bonzini  message()
594f9332757SPaolo Bonzini  message('Host OS ' + targetos + 'support is not currently maintained.')
595f9332757SPaolo Bonzini  message('The QEMU project intends to remove support for this host OS in')
596f9332757SPaolo Bonzini  message('a future release if nobody volunteers to maintain it and to')
597f9332757SPaolo Bonzini  message('provide a build host for our continuous integration setup.')
598f9332757SPaolo Bonzini  message('configure has succeeded and you can continue to build, but')
599f9332757SPaolo Bonzini  message('if you care about QEMU on this platform you should contact')
600f9332757SPaolo Bonzini  message('us upstream at qemu-devel@nongnu.org.')
601f9332757SPaolo Bonziniendif
602