xref: /qemu/meson.build (revision 7fcfd456)
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
9ce1c1e7aSPaolo Bonzinish = find_program('sh')
10a81df1b6SPaolo Bonzinicc = meson.get_compiler('c')
11a5665051SPaolo Bonziniconfig_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
12a5665051SPaolo Bonzini
13a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_CFLAGS'].split(),
14a5665051SPaolo Bonzini                      native: false, language: ['c', 'objc'])
15a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_CXXFLAGS'].split(),
16a5665051SPaolo Bonzini                      native: false, language: 'cpp')
17a5665051SPaolo Bonziniadd_project_link_arguments(config_host['QEMU_LDFLAGS'].split(),
18a5665051SPaolo Bonzini                           native: false, language: ['c', 'cpp', 'objc'])
19a5665051SPaolo Bonziniadd_project_arguments(config_host['QEMU_INCLUDES'].split(),
20a5665051SPaolo Bonzini                      language: ['c', 'cpp', 'objc'])
21a5665051SPaolo Bonzini
22fc929892SMarc-André Lureaupython = import('python').find_installation()
23fc929892SMarc-André Lureau
24fc929892SMarc-André Lureaulink_language = meson.get_external_property('link_language', 'cpp')
25fc929892SMarc-André Lureauif link_language == 'cpp'
26fc929892SMarc-André Lureau  add_languages('cpp', required: true, native: false)
27fc929892SMarc-André Lureauendif
28a5665051SPaolo Bonziniif host_machine.system() == 'darwin'
29a5665051SPaolo Bonzini  add_languages('objc', required: false, native: false)
30a5665051SPaolo Bonziniendif
31a5665051SPaolo Bonzini
32968b4db3SPaolo Bonziniif 'SPARSE_CFLAGS' in config_host
33968b4db3SPaolo Bonzini  run_target('sparse',
34968b4db3SPaolo Bonzini             command: [find_program('scripts/check_sparse.py'),
35968b4db3SPaolo Bonzini                       config_host['SPARSE_CFLAGS'].split(),
36968b4db3SPaolo Bonzini                       'compile_commands.json'])
37968b4db3SPaolo Bonziniendif
38968b4db3SPaolo Bonzini
39a5665051SPaolo Bonziniconfigure_file(input: files('scripts/ninjatool.py'),
40a5665051SPaolo Bonzini               output: 'ninjatool',
41a5665051SPaolo Bonzini               configuration: config_host)
42f9332757SPaolo Bonzini
43f9332757SPaolo Bonzinisupported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux']
44f9332757SPaolo Bonzinisupported_cpus = ['ppc', 'ppc64', 's390x', 'sparc64', 'riscv32', 'riscv64', 'x86', 'x86_64',
45f9332757SPaolo Bonzini  'arm', 'aarch64', 'mips', 'mips64', 'sparc', 'sparc64']
46f9332757SPaolo Bonzini
47f9332757SPaolo Bonzinicpu = host_machine.cpu_family()
48f9332757SPaolo Bonzinitargetos = host_machine.system()
49f9332757SPaolo Bonzini
50a81df1b6SPaolo Bonzinim = cc.find_library('m', required: false)
51a81df1b6SPaolo Bonziniutil = cc.find_library('util', required: false)
52a81df1b6SPaolo Bonzinisocket = []
5304c6f1e7SMarc-André Lureauversion_res = []
54d92989aaSMarc-André Lureaucoref = []
55d92989aaSMarc-André Lureauiokit = []
56d92989aaSMarc-André Lureaucocoa = []
57d92989aaSMarc-André Lureauhvf = []
58a81df1b6SPaolo Bonziniif targetos == 'windows'
59a81df1b6SPaolo Bonzini  socket = cc.find_library('ws2_32')
6004c6f1e7SMarc-André Lureau
6104c6f1e7SMarc-André Lureau  win = import('windows')
6204c6f1e7SMarc-André Lureau  version_res = win.compile_resources('version.rc',
6304c6f1e7SMarc-André Lureau                                      depend_files: files('pc-bios/qemu-nsis.ico'),
6404c6f1e7SMarc-André Lureau                                      include_directories: include_directories('.'))
65d92989aaSMarc-André Lureauelif targetos == 'darwin'
66d92989aaSMarc-André Lureau  coref = dependency('appleframeworks', modules: 'CoreFoundation')
67d92989aaSMarc-André Lureau  iokit = dependency('appleframeworks', modules: 'IOKit')
68d92989aaSMarc-André Lureau  cocoa = dependency('appleframeworks', modules: 'Cocoa')
69d92989aaSMarc-André Lureau  hvf = dependency('appleframeworks', modules: 'Hypervisor')
70cfad62f1SPaolo Bonzinielif targetos == 'sunos'
71cfad62f1SPaolo Bonzini  socket = [cc.find_library('socket'),
72cfad62f1SPaolo Bonzini            cc.find_library('nsl'),
73cfad62f1SPaolo Bonzini            cc.find_library('resolv')]
74cfad62f1SPaolo Bonzinielif targetos == 'haiku'
75cfad62f1SPaolo Bonzini  socket = [cc.find_library('posix_error_mapper'),
76cfad62f1SPaolo Bonzini            cc.find_library('network'),
77cfad62f1SPaolo Bonzini            cc.find_library('bsd')]
78a81df1b6SPaolo Bonziniendif
79a81df1b6SPaolo Bonziniglib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(),
80a81df1b6SPaolo Bonzini                          link_args: config_host['GLIB_LIBS'].split())
81a81df1b6SPaolo Bonzinigio = not_found
82a81df1b6SPaolo Bonziniif 'CONFIG_GIO' in config_host
83a81df1b6SPaolo Bonzini  gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
84a81df1b6SPaolo Bonzini                           link_args: config_host['GIO_LIBS'].split())
85a81df1b6SPaolo Bonziniendif
86a81df1b6SPaolo Bonzinilttng = not_found
87a81df1b6SPaolo Bonziniif 'CONFIG_TRACE_UST' in config_host
88a81df1b6SPaolo Bonzini  lttng = declare_dependency(link_args: config_host['LTTNG_UST_LIBS'].split())
89a81df1b6SPaolo Bonziniendif
90a81df1b6SPaolo Bonziniurcubp = not_found
91a81df1b6SPaolo Bonziniif 'CONFIG_TRACE_UST' in config_host
92a81df1b6SPaolo Bonzini  urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
93a81df1b6SPaolo Bonziniendif
94a81df1b6SPaolo Bonzininettle = not_found
95a81df1b6SPaolo Bonziniif 'CONFIG_NETTLE' in config_host
96a81df1b6SPaolo Bonzini  nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
97a81df1b6SPaolo Bonzini                              link_args: config_host['NETTLE_LIBS'].split())
98a81df1b6SPaolo Bonziniendif
99a81df1b6SPaolo Bonzinignutls = not_found
100a81df1b6SPaolo Bonziniif 'CONFIG_GNUTLS' in config_host
101a81df1b6SPaolo Bonzini  gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(),
102a81df1b6SPaolo Bonzini                              link_args: config_host['GNUTLS_LIBS'].split())
103a81df1b6SPaolo Bonziniendif
104ea458960SMarc-André Lureaupixman = declare_dependency(compile_args: config_host['PIXMAN_CFLAGS'].split(),
105ea458960SMarc-André Lureau                            link_args: config_host['PIXMAN_LIBS'].split())
1065e7fbd25SMarc-André Lureaupam = not_found
1075e7fbd25SMarc-André Lureauif 'CONFIG_AUTH_PAM' in config_host
1085e7fbd25SMarc-André Lureau  pam = cc.find_library('pam')
1095e7fbd25SMarc-André Lureauendif
110ec0d5893SMarc-André Lureaulibattr = not_found
111ec0d5893SMarc-André Lureauif 'CONFIG_ATTR' in config_host
112ec0d5893SMarc-André Lureau  libattr = declare_dependency(link_args: config_host['LIBATTR_LIBS'].split())
113ec0d5893SMarc-André Lureauendif
1143f99cf57SPaolo Bonziniseccomp = not_found
1153f99cf57SPaolo Bonziniif 'CONFIG_SECCOMP' in config_host
1163f99cf57SPaolo Bonzini  seccomp = declare_dependency(compile_args: config_host['SECCOMP_CFLAGS'].split(),
1173f99cf57SPaolo Bonzini                               link_args: config_host['SECCOMP_LIBS'].split())
1183f99cf57SPaolo Bonziniendif
1193f99cf57SPaolo Bonzinilibcap_ng = not_found
1203f99cf57SPaolo Bonziniif 'CONFIG_LIBCAP_NG' in config_host
1213f99cf57SPaolo Bonzini  libcap_ng = declare_dependency(link_args: config_host['LIBCAP_NG_LIBS'].split())
1223f99cf57SPaolo Bonziniendif
123ade60d4fSMarc-André Lureauxkbcommon = not_found
124ade60d4fSMarc-André Lureauif 'CONFIG_XKBCOMMON' in config_host
125ade60d4fSMarc-André Lureau  xkbcommon = declare_dependency(compile_args: config_host['XKBCOMMON_CFLAGS'].split(),
126ade60d4fSMarc-André Lureau                                 link_args: config_host['XKBCOMMON_LIBS'].split())
127ade60d4fSMarc-André Lureauendif
1285ee24e78SMarc-André Lureaurt = cc.find_library('rt', required: false)
12999650b62SPaolo Bonzinilibiscsi = not_found
13099650b62SPaolo Bonziniif 'CONFIG_LIBISCSI' in config_host
13199650b62SPaolo Bonzini  libiscsi = declare_dependency(compile_args: config_host['LIBISCSI_CFLAGS'].split(),
13299650b62SPaolo Bonzini                                link_args: config_host['LIBISCSI_LIBS'].split())
13399650b62SPaolo Bonziniendif
134ea458960SMarc-André Lureaugbm = not_found
135ea458960SMarc-André Lureauif 'CONFIG_GBM' in config_host
136ea458960SMarc-André Lureau  gbm = declare_dependency(compile_args: config_host['GBM_CFLAGS'].split(),
137ea458960SMarc-André Lureau                           link_args: config_host['GBM_LIBS'].split())
138ea458960SMarc-André Lureauendif
139ea458960SMarc-André Lureauvirgl = not_found
140ea458960SMarc-André Lureauif 'CONFIG_VIRGL' in config_host
141ea458960SMarc-André Lureau  virgl = declare_dependency(compile_args: config_host['VIRGL_CFLAGS'].split(),
142ea458960SMarc-André Lureau                             link_args: config_host['VIRGL_LIBS'].split())
143ea458960SMarc-André Lureauendif
1441d7bb6abSMarc-André Lureaucurl = not_found
1451d7bb6abSMarc-André Lureauif 'CONFIG_CURL' in config_host
1461d7bb6abSMarc-André Lureau  curl = declare_dependency(compile_args: config_host['CURL_CFLAGS'].split(),
1471d7bb6abSMarc-André Lureau                            link_args: config_host['CURL_LIBS'].split())
1481d7bb6abSMarc-André Lureauendif
149f15bff25SPaolo Bonzinilibudev = not_found
150f15bff25SPaolo Bonziniif 'CONFIG_LIBUDEV' in config_host
151f15bff25SPaolo Bonzini  libudev = declare_dependency(link_args: config_host['LIBUDEV_LIBS'].split())
152f15bff25SPaolo Bonziniendif
153a81df1b6SPaolo Bonzini
154a81df1b6SPaolo Bonzinitarget_dirs = config_host['TARGET_DIRS'].split()
155a81df1b6SPaolo Bonzinihave_user = false
156a81df1b6SPaolo Bonzinihave_system = false
157a81df1b6SPaolo Bonziniforeach target : target_dirs
158a81df1b6SPaolo Bonzini  have_user = have_user or target.endswith('-user')
159a81df1b6SPaolo Bonzini  have_system = have_system or target.endswith('-softmmu')
160a81df1b6SPaolo Bonziniendforeach
161a81df1b6SPaolo Bonzinihave_tools = 'CONFIG_TOOLS' in config_host
162a81df1b6SPaolo Bonzinihave_block = have_system or have_tools
163a81df1b6SPaolo Bonzini
164a81df1b6SPaolo Bonzini# Generators
165a81df1b6SPaolo Bonzini
1662c273f32SMarc-André Lureaugenh = []
1673f885659SMarc-André Lureauhxtool = find_program('scripts/hxtool')
168650b5d54SMarc-André Lureaushaderinclude = find_program('scripts/shaderinclude.pl')
169a81df1b6SPaolo Bonziniqapi_gen = find_program('scripts/qapi-gen.py')
170a81df1b6SPaolo Bonziniqapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py',
171a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/commands.py',
172a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/common.py',
173a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/doc.py',
174a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/error.py',
175a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/events.py',
176a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/expr.py',
177a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/gen.py',
178a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/introspect.py',
179a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/parser.py',
180a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/schema.py',
181a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/source.py',
182a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/types.py',
183a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/visit.py',
184a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/common.py',
185a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi/doc.py',
186a81df1b6SPaolo Bonzini                     meson.source_root() / 'scripts/qapi-gen.py'
187a81df1b6SPaolo Bonzini]
188a81df1b6SPaolo Bonzini
189a81df1b6SPaolo Bonzinitracetool = [
190a81df1b6SPaolo Bonzini  python, files('scripts/tracetool.py'),
191a81df1b6SPaolo Bonzini   '--backend=' + config_host['TRACE_BACKENDS']
192a81df1b6SPaolo Bonzini]
193a81df1b6SPaolo Bonzini
1942c273f32SMarc-André Lureauqemu_version_cmd = [find_program('scripts/qemu-version.sh'),
1952c273f32SMarc-André Lureau                    meson.current_source_dir(),
1962c273f32SMarc-André Lureau                    config_host['PKGVERSION'], config_host['VERSION']]
1972c273f32SMarc-André Lureauqemu_version = custom_target('qemu-version.h',
1982c273f32SMarc-André Lureau                             output: 'qemu-version.h',
1992c273f32SMarc-André Lureau                             command: qemu_version_cmd,
2002c273f32SMarc-André Lureau                             capture: true,
2012c273f32SMarc-André Lureau                             build_by_default: true,
2022c273f32SMarc-André Lureau                             build_always_stale: true)
2032c273f32SMarc-André Lureaugenh += qemu_version
2042c273f32SMarc-André Lureau
2053f885659SMarc-André Lureauhxdep = []
2063f885659SMarc-André Lureauhx_headers = [
2073f885659SMarc-André Lureau  ['qemu-options.hx', 'qemu-options.def'],
2083f885659SMarc-André Lureau  ['qemu-img-cmds.hx', 'qemu-img-cmds.h'],
2093f885659SMarc-André Lureau]
2103f885659SMarc-André Lureauif have_system
2113f885659SMarc-André Lureau  hx_headers += [
2123f885659SMarc-André Lureau    ['hmp-commands.hx', 'hmp-commands.h'],
2133f885659SMarc-André Lureau    ['hmp-commands-info.hx', 'hmp-commands-info.h'],
2143f885659SMarc-André Lureau  ]
2153f885659SMarc-André Lureauendif
2163f885659SMarc-André Lureauforeach d : hx_headers
2173f885659SMarc-André Lureau  custom_target(d[1],
2183f885659SMarc-André Lureau                input: files(d[0]),
2193f885659SMarc-André Lureau                output: d[1],
2203f885659SMarc-André Lureau                capture: true,
2213f885659SMarc-André Lureau                build_by_default: true, # to be removed when added to a target
2223f885659SMarc-André Lureau                command: [hxtool, '-h', '@INPUT0@'])
2233f885659SMarc-André Lureauendforeach
2243f885659SMarc-André Lureaugenh += hxdep
2253f885659SMarc-André Lureau
226a81df1b6SPaolo Bonzini# Collect sourcesets.
227a81df1b6SPaolo Bonzini
228a81df1b6SPaolo Bonziniutil_ss = ss.source_set()
229a81df1b6SPaolo Bonzinistub_ss = ss.source_set()
230a81df1b6SPaolo Bonzinitrace_ss = ss.source_set()
231a81df1b6SPaolo Bonzini
232a81df1b6SPaolo Bonzini###############
233a81df1b6SPaolo Bonzini# Trace files #
234a81df1b6SPaolo Bonzini###############
235a81df1b6SPaolo Bonzini
236a81df1b6SPaolo Bonzinitrace_events_subdirs = [
237a81df1b6SPaolo Bonzini  'accel/kvm',
238a81df1b6SPaolo Bonzini  'accel/tcg',
239a81df1b6SPaolo Bonzini  'crypto',
240a81df1b6SPaolo Bonzini  'monitor',
241a81df1b6SPaolo Bonzini]
242a81df1b6SPaolo Bonziniif have_user
243a81df1b6SPaolo Bonzini  trace_events_subdirs += [ 'linux-user' ]
244a81df1b6SPaolo Bonziniendif
245a81df1b6SPaolo Bonziniif have_block
246a81df1b6SPaolo Bonzini  trace_events_subdirs += [
247a81df1b6SPaolo Bonzini    'authz',
248a81df1b6SPaolo Bonzini    'block',
249a81df1b6SPaolo Bonzini    'io',
250a81df1b6SPaolo Bonzini    'nbd',
251a81df1b6SPaolo Bonzini    'scsi',
252a81df1b6SPaolo Bonzini  ]
253a81df1b6SPaolo Bonziniendif
254a81df1b6SPaolo Bonziniif have_system
255a81df1b6SPaolo Bonzini  trace_events_subdirs += [
256a81df1b6SPaolo Bonzini    'audio',
257a81df1b6SPaolo Bonzini    'backends',
258a81df1b6SPaolo Bonzini    'backends/tpm',
259a81df1b6SPaolo Bonzini    'chardev',
260a81df1b6SPaolo Bonzini    'hw/9pfs',
261a81df1b6SPaolo Bonzini    'hw/acpi',
262a81df1b6SPaolo Bonzini    'hw/alpha',
263a81df1b6SPaolo Bonzini    'hw/arm',
264a81df1b6SPaolo Bonzini    'hw/audio',
265a81df1b6SPaolo Bonzini    'hw/block',
266a81df1b6SPaolo Bonzini    'hw/block/dataplane',
267a81df1b6SPaolo Bonzini    'hw/char',
268a81df1b6SPaolo Bonzini    'hw/display',
269a81df1b6SPaolo Bonzini    'hw/dma',
270a81df1b6SPaolo Bonzini    'hw/hppa',
271a81df1b6SPaolo Bonzini    'hw/hyperv',
272a81df1b6SPaolo Bonzini    'hw/i2c',
273a81df1b6SPaolo Bonzini    'hw/i386',
274a81df1b6SPaolo Bonzini    'hw/i386/xen',
275a81df1b6SPaolo Bonzini    'hw/ide',
276a81df1b6SPaolo Bonzini    'hw/input',
277a81df1b6SPaolo Bonzini    'hw/intc',
278a81df1b6SPaolo Bonzini    'hw/isa',
279a81df1b6SPaolo Bonzini    'hw/mem',
280a81df1b6SPaolo Bonzini    'hw/mips',
281a81df1b6SPaolo Bonzini    'hw/misc',
282a81df1b6SPaolo Bonzini    'hw/misc/macio',
283a81df1b6SPaolo Bonzini    'hw/net',
284a81df1b6SPaolo Bonzini    'hw/nvram',
285a81df1b6SPaolo Bonzini    'hw/pci',
286a81df1b6SPaolo Bonzini    'hw/pci-host',
287a81df1b6SPaolo Bonzini    'hw/ppc',
288a81df1b6SPaolo Bonzini    'hw/rdma',
289a81df1b6SPaolo Bonzini    'hw/rdma/vmw',
290a81df1b6SPaolo Bonzini    'hw/rtc',
291a81df1b6SPaolo Bonzini    'hw/s390x',
292a81df1b6SPaolo Bonzini    'hw/scsi',
293a81df1b6SPaolo Bonzini    'hw/sd',
294a81df1b6SPaolo Bonzini    'hw/sparc',
295a81df1b6SPaolo Bonzini    'hw/sparc64',
296a81df1b6SPaolo Bonzini    'hw/ssi',
297a81df1b6SPaolo Bonzini    'hw/timer',
298a81df1b6SPaolo Bonzini    'hw/tpm',
299a81df1b6SPaolo Bonzini    'hw/usb',
300a81df1b6SPaolo Bonzini    'hw/vfio',
301a81df1b6SPaolo Bonzini    'hw/virtio',
302a81df1b6SPaolo Bonzini    'hw/watchdog',
303a81df1b6SPaolo Bonzini    'hw/xen',
304a81df1b6SPaolo Bonzini    'hw/gpio',
305a81df1b6SPaolo Bonzini    'hw/riscv',
306a81df1b6SPaolo Bonzini    'migration',
307a81df1b6SPaolo Bonzini    'net',
308a81df1b6SPaolo Bonzini    'ui',
309a81df1b6SPaolo Bonzini  ]
310a81df1b6SPaolo Bonziniendif
311a81df1b6SPaolo Bonzinitrace_events_subdirs += [
312a81df1b6SPaolo Bonzini  'hw/core',
313a81df1b6SPaolo Bonzini  'qapi',
314a81df1b6SPaolo Bonzini  'qom',
315a81df1b6SPaolo Bonzini  'target/arm',
316a81df1b6SPaolo Bonzini  'target/hppa',
317a81df1b6SPaolo Bonzini  'target/i386',
318a81df1b6SPaolo Bonzini  'target/mips',
319a81df1b6SPaolo Bonzini  'target/ppc',
320a81df1b6SPaolo Bonzini  'target/riscv',
321a81df1b6SPaolo Bonzini  'target/s390x',
322a81df1b6SPaolo Bonzini  'target/sparc',
323a81df1b6SPaolo Bonzini  'util',
324a81df1b6SPaolo Bonzini]
325a81df1b6SPaolo Bonzini
326a81df1b6SPaolo Bonzinisubdir('qapi')
327a81df1b6SPaolo Bonzinisubdir('qobject')
328a81df1b6SPaolo Bonzinisubdir('stubs')
329a81df1b6SPaolo Bonzinisubdir('trace')
330a81df1b6SPaolo Bonzinisubdir('util')
3315582c58fSMarc-André Lureausubdir('qom')
3325582c58fSMarc-André Lureausubdir('authz')
333a81df1b6SPaolo Bonzinisubdir('crypto')
334a81df1b6SPaolo Bonzinisubdir('storage-daemon')
3352d78b56eSMarc-André Lureausubdir('ui')
336a81df1b6SPaolo Bonzini
337a81df1b6SPaolo Bonzini# Build targets from sourcesets
338a81df1b6SPaolo Bonzini
339a81df1b6SPaolo Bonzinistub_ss = stub_ss.apply(config_host, strict: false)
340a81df1b6SPaolo Bonzini
341a81df1b6SPaolo Bonziniutil_ss.add_all(trace_ss)
342a81df1b6SPaolo Bonziniutil_ss = util_ss.apply(config_host, strict: false)
343a81df1b6SPaolo Bonzinilibqemuutil = static_library('qemuutil',
344a81df1b6SPaolo Bonzini                             sources: util_ss.sources() + stub_ss.sources() + genh,
345a81df1b6SPaolo Bonzini                             dependencies: [util_ss.dependencies(), m, glib, socket])
346a81df1b6SPaolo Bonziniqemuutil = declare_dependency(link_with: libqemuutil,
34704c6f1e7SMarc-André Lureau                              sources: genh + version_res)
348a81df1b6SPaolo Bonzini
349*7fcfd456SMarc-André Lureausubdir('io')
350ec0d5893SMarc-André Lureausubdir('fsdev')
351ec0d5893SMarc-André Lureau
352931049b4SPaolo Bonzini# Other build targets
353f15bff25SPaolo Bonziniif 'CONFIG_GUEST_AGENT' in config_host
354f15bff25SPaolo Bonzini  subdir('qga')
355f15bff25SPaolo Bonziniendif
356f15bff25SPaolo Bonzini
357931049b4SPaolo Bonziniif have_tools
358a9c9727cSPaolo Bonzini  subdir('contrib/rdmacm-mux')
3591d7bb6abSMarc-André Lureau  subdir('contrib/elf2dmp')
360a9c9727cSPaolo Bonzini
361ade60d4fSMarc-André Lureau  if 'CONFIG_XKBCOMMON' in config_host
362ade60d4fSMarc-André Lureau    executable('qemu-keymap', files('qemu-keymap.c', 'ui/input-keymap.c'),
363ade60d4fSMarc-André Lureau               dependencies: [qemuutil, xkbcommon], install: true)
364ade60d4fSMarc-André Lureau  endif
365ade60d4fSMarc-André Lureau
366157e7b13SMarc-André Lureau  executable('qemu-edid', files('qemu-edid.c', 'hw/display/edid-generate.c'),
367157e7b13SMarc-André Lureau             dependencies: qemuutil,
368157e7b13SMarc-André Lureau             install: true)
369157e7b13SMarc-André Lureau
370931049b4SPaolo Bonzini  if 'CONFIG_VHOST_USER' in config_host
371931049b4SPaolo Bonzini    subdir('contrib/libvhost-user')
3722d7ac0afSPaolo Bonzini    subdir('contrib/vhost-user-blk')
373ea458960SMarc-André Lureau    if 'CONFIG_LINUX' in config_host
374ea458960SMarc-André Lureau      subdir('contrib/vhost-user-gpu')
375ea458960SMarc-André Lureau    endif
37632fcc624SMarc-André Lureau    subdir('contrib/vhost-user-input')
37799650b62SPaolo Bonzini    subdir('contrib/vhost-user-scsi')
378931049b4SPaolo Bonzini  endif
3798f51e01cSMarc-André Lureau
3808f51e01cSMarc-André Lureau  if targetos == 'linux'
3818f51e01cSMarc-André Lureau    executable('qemu-bridge-helper', files('qemu-bridge-helper.c'),
3828f51e01cSMarc-André Lureau               dependencies: [qemuutil, libcap_ng],
3838f51e01cSMarc-André Lureau               install: true,
3848f51e01cSMarc-André Lureau               install_dir: get_option('libexecdir'))
3858f51e01cSMarc-André Lureau  endif
3868f51e01cSMarc-André Lureau
3875ee24e78SMarc-André Lureau  if 'CONFIG_IVSHMEM' in config_host
3885ee24e78SMarc-André Lureau    subdir('contrib/ivshmem-client')
3895ee24e78SMarc-André Lureau    subdir('contrib/ivshmem-server')
3905ee24e78SMarc-André Lureau  endif
391931049b4SPaolo Bonziniendif
392931049b4SPaolo Bonzini
3933f99cf57SPaolo Bonzinisubdir('tools')
394bdcbea7aSMarc-André Lureausubdir('pc-bios')
395ce1c1e7aSPaolo Bonzinisubdir('tests')
3963f99cf57SPaolo Bonzini
397f9332757SPaolo Bonzinisummary_info = {}
398f9332757SPaolo Bonzinisummary_info += {'Install prefix':    config_host['prefix']}
399f9332757SPaolo Bonzinisummary_info += {'BIOS directory':    config_host['qemu_datadir']}
400f9332757SPaolo Bonzinisummary_info += {'firmware path':     config_host['qemu_firmwarepath']}
401f9332757SPaolo Bonzinisummary_info += {'binary directory':  config_host['bindir']}
402f9332757SPaolo Bonzinisummary_info += {'library directory': config_host['libdir']}
403f9332757SPaolo Bonzinisummary_info += {'module directory':  config_host['qemu_moddir']}
404f9332757SPaolo Bonzinisummary_info += {'libexec directory': config_host['libexecdir']}
405f9332757SPaolo Bonzinisummary_info += {'include directory': config_host['includedir']}
406f9332757SPaolo Bonzinisummary_info += {'config directory':  config_host['sysconfdir']}
407f9332757SPaolo Bonziniif targetos != 'windows'
408f9332757SPaolo Bonzini  summary_info += {'local state directory': config_host['qemu_localstatedir']}
409f9332757SPaolo Bonzini  summary_info += {'Manual directory':      config_host['mandir']}
410f9332757SPaolo Bonzinielse
411f9332757SPaolo Bonzini  summary_info += {'local state directory': 'queried at runtime'}
412f9332757SPaolo Bonziniendif
413f9332757SPaolo Bonzinisummary_info += {'Build directory':   meson.current_build_dir()}
414f9332757SPaolo Bonzinisummary_info += {'Source path':       meson.current_source_dir()}
415f9332757SPaolo Bonzinisummary_info += {'GIT binary':        config_host['GIT']}
416f9332757SPaolo Bonzinisummary_info += {'GIT submodules':    config_host['GIT_SUBMODULES']}
417f9332757SPaolo Bonzinisummary_info += {'C compiler':        meson.get_compiler('c').cmd_array()[0]}
418f9332757SPaolo Bonzinisummary_info += {'Host C compiler':   meson.get_compiler('c', native: true).cmd_array()[0]}
419f9332757SPaolo Bonziniif link_language == 'cpp'
420f9332757SPaolo Bonzini  summary_info += {'C++ compiler':      meson.get_compiler('cpp').cmd_array()[0]}
421f9332757SPaolo Bonzinielse
422f9332757SPaolo Bonzini  summary_info += {'C++ compiler':      false}
423f9332757SPaolo Bonziniendif
424f9332757SPaolo Bonziniif targetos == 'darwin'
425f9332757SPaolo Bonzini  summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]}
426f9332757SPaolo Bonziniendif
427f9332757SPaolo Bonzinisummary_info += {'ARFLAGS':           config_host['ARFLAGS']}
428f9332757SPaolo Bonzinisummary_info += {'CFLAGS':            config_host['CFLAGS']}
429f9332757SPaolo Bonzinisummary_info += {'QEMU_CFLAGS':       config_host['QEMU_CFLAGS']}
430f9332757SPaolo Bonzinisummary_info += {'QEMU_LDFLAGS':      config_host['QEMU_LDFLAGS']}
431f9332757SPaolo Bonzinisummary_info += {'make':              config_host['MAKE']}
432f9332757SPaolo Bonzinisummary_info += {'install':           config_host['INSTALL']}
433f9332757SPaolo Bonzinisummary_info += {'python':            '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
434f9332757SPaolo Bonzinisummary_info += {'sphinx-build':      config_host['SPHINX_BUILD']}
435f9332757SPaolo Bonzinisummary_info += {'genisoimage':       config_host['GENISOIMAGE']}
436f9332757SPaolo Bonzini# TODO: add back version
437f9332757SPaolo Bonzinisummary_info += {'slirp support':     config_host.has_key('CONFIG_SLIRP')}
438f9332757SPaolo Bonziniif config_host.has_key('CONFIG_SLIRP')
439f9332757SPaolo Bonzini  summary_info += {'smbd':            config_host['CONFIG_SMBD_COMMAND']}
440f9332757SPaolo Bonziniendif
441f9332757SPaolo Bonzinisummary_info += {'module support':    config_host.has_key('CONFIG_MODULES')}
442f9332757SPaolo Bonziniif config_host.has_key('CONFIG_MODULES')
443f9332757SPaolo Bonzini  summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')}
444f9332757SPaolo Bonziniendif
445f9332757SPaolo Bonzinisummary_info += {'host CPU':          cpu}
446f9332757SPaolo Bonzinisummary_info += {'host endianness':   build_machine.endian()}
447f9332757SPaolo Bonzinisummary_info += {'target list':       config_host['TARGET_DIRS']}
448f9332757SPaolo Bonzinisummary_info += {'gprof enabled':     config_host.has_key('CONFIG_GPROF')}
449f9332757SPaolo Bonzinisummary_info += {'sparse enabled':    meson.get_compiler('c').cmd_array().contains('cgcc')}
450f9332757SPaolo Bonzinisummary_info += {'strip binaries':    get_option('strip')}
451f9332757SPaolo Bonzinisummary_info += {'profiler':          config_host.has_key('CONFIG_PROFILER')}
452f9332757SPaolo Bonzinisummary_info += {'static build':      config_host.has_key('CONFIG_TOOLS')}
453f9332757SPaolo Bonziniif targetos == 'darwin'
454f9332757SPaolo Bonzini  summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
455f9332757SPaolo Bonziniendif
456f9332757SPaolo Bonzini# TODO: add back version
457f9332757SPaolo Bonzinisummary_info += {'SDL support':       config_host.has_key('CONFIG_SDL')}
458f9332757SPaolo Bonzinisummary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
459f9332757SPaolo Bonzini# TODO: add back version
460f9332757SPaolo Bonzinisummary_info += {'GTK support':       config_host.has_key('CONFIG_GTK')}
461f9332757SPaolo Bonzinisummary_info += {'GTK GL support':    config_host.has_key('CONFIG_GTK_GL')}
462f9332757SPaolo Bonzini# TODO: add back version
463f9332757SPaolo Bonzinisummary_info += {'VTE support':       config_host.has_key('CONFIG_VTE')}
464f9332757SPaolo Bonzinisummary_info += {'TLS priority':      config_host['CONFIG_TLS_PRIORITY']}
465f9332757SPaolo Bonzinisummary_info += {'GNUTLS support':    config_host.has_key('CONFIG_GNUTLS')}
466f9332757SPaolo Bonzini# TODO: add back version
467f9332757SPaolo Bonzinisummary_info += {'libgcrypt':         config_host.has_key('CONFIG_GCRYPT')}
468f9332757SPaolo Bonziniif config_host.has_key('CONFIG_GCRYPT')
469f9332757SPaolo Bonzini   summary_info += {'  hmac':            config_host.has_key('CONFIG_GCRYPT_HMAC')}
470f9332757SPaolo Bonzini   summary_info += {'  XTS':             not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
471f9332757SPaolo Bonziniendif
472f9332757SPaolo Bonzini# TODO: add back version
473f9332757SPaolo Bonzinisummary_info += {'nettle':            config_host.has_key('CONFIG_NETTLE')}
474f9332757SPaolo Bonziniif config_host.has_key('CONFIG_NETTLE')
475f9332757SPaolo Bonzini   summary_info += {'  XTS':             not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
476f9332757SPaolo Bonziniendif
477f9332757SPaolo Bonzinisummary_info += {'libtasn1':          config_host.has_key('CONFIG_TASN1')}
478f9332757SPaolo Bonzinisummary_info += {'PAM':               config_host.has_key('CONFIG_AUTH_PAM')}
479f9332757SPaolo Bonzinisummary_info += {'iconv support':     config_host.has_key('CONFIG_ICONV')}
480f9332757SPaolo Bonzinisummary_info += {'curses support':    config_host.has_key('CONFIG_CURSES')}
481f9332757SPaolo Bonzini# TODO: add back version
482f9332757SPaolo Bonzinisummary_info += {'virgl support':     config_host.has_key('CONFIG_VIRGL')}
483f9332757SPaolo Bonzinisummary_info += {'curl support':      config_host.has_key('CONFIG_CURL')}
484f9332757SPaolo Bonzinisummary_info += {'mingw32 support':   targetos == 'windows'}
485f9332757SPaolo Bonzinisummary_info += {'Audio drivers':     config_host['CONFIG_AUDIO_DRIVERS']}
486f9332757SPaolo Bonzinisummary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
487f9332757SPaolo Bonzinisummary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
488f9332757SPaolo Bonzinisummary_info += {'VirtFS support':    config_host.has_key('CONFIG_VIRTFS')}
489f9332757SPaolo Bonzinisummary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
490f9332757SPaolo Bonzinisummary_info += {'VNC support':       config_host.has_key('CONFIG_VNC')}
491f9332757SPaolo Bonziniif config_host.has_key('CONFIG_VNC')
492f9332757SPaolo Bonzini  summary_info += {'VNC SASL support':  config_host.has_key('CONFIG_VNC_SASL')}
493f9332757SPaolo Bonzini  summary_info += {'VNC JPEG support':  config_host.has_key('CONFIG_VNC_JPEG')}
494f9332757SPaolo Bonzini  summary_info += {'VNC PNG support':   config_host.has_key('CONFIG_VNC_PNG')}
495f9332757SPaolo Bonziniendif
496f9332757SPaolo Bonzinisummary_info += {'xen support':       config_host.has_key('CONFIG_XEN_BACKEND')}
497f9332757SPaolo Bonziniif config_host.has_key('CONFIG_XEN_BACKEND')
498f9332757SPaolo Bonzini  summary_info += {'xen ctrl version':  config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
499f9332757SPaolo Bonziniendif
500f9332757SPaolo Bonzinisummary_info += {'brlapi support':    config_host.has_key('CONFIG_BRLAPI')}
501f9332757SPaolo Bonzinisummary_info += {'Documentation':     config_host.has_key('BUILD_DOCS')}
502f9332757SPaolo Bonzinisummary_info += {'PIE':               get_option('b_pie')}
503f9332757SPaolo Bonzinisummary_info += {'vde support':       config_host.has_key('CONFIG_VDE')}
504f9332757SPaolo Bonzinisummary_info += {'netmap support':    config_host.has_key('CONFIG_NETMAP')}
505f9332757SPaolo Bonzinisummary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
506f9332757SPaolo Bonzinisummary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
507f9332757SPaolo Bonzinisummary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
508f9332757SPaolo Bonzinisummary_info += {'Install blobs':     config_host.has_key('INSTALL_BLOBS')}
509f9332757SPaolo Bonzini# TODO: add back KVM/HAX/HVF/WHPX/TCG
510f9332757SPaolo Bonzini#summary_info += {'KVM support':       have_kvm'}
511f9332757SPaolo Bonzini#summary_info += {'HAX support':       have_hax'}
512f9332757SPaolo Bonzini#summary_info += {'HVF support':       have_hvf'}
513f9332757SPaolo Bonzini#summary_info += {'WHPX support':      have_whpx'}
514f9332757SPaolo Bonzini#summary_info += {'TCG support':       have_tcg'}
515f9332757SPaolo Bonzini#if get_option('tcg')
516f9332757SPaolo Bonzini#  summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
517f9332757SPaolo Bonzini#  summary_info += {'TCG interpreter':   config_host.has_key('CONFIG_TCG_INTERPRETER')}
518f9332757SPaolo Bonzini#endif
519f9332757SPaolo Bonzinisummary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')}
520f9332757SPaolo Bonzinisummary_info += {'RDMA support':      config_host.has_key('CONFIG_RDMA')}
521f9332757SPaolo Bonzinisummary_info += {'PVRDMA support':    config_host.has_key('CONFIG_PVRDMA')}
522f9332757SPaolo Bonzinisummary_info += {'fdt support':       config_host.has_key('CONFIG_FDT')}
523f9332757SPaolo Bonzinisummary_info += {'membarrier':        config_host.has_key('CONFIG_MEMBARRIER')}
524f9332757SPaolo Bonzinisummary_info += {'preadv support':    config_host.has_key('CONFIG_PREADV')}
525f9332757SPaolo Bonzinisummary_info += {'fdatasync':         config_host.has_key('CONFIG_FDATASYNC')}
526f9332757SPaolo Bonzinisummary_info += {'madvise':           config_host.has_key('CONFIG_MADVISE')}
527f9332757SPaolo Bonzinisummary_info += {'posix_madvise':     config_host.has_key('CONFIG_POSIX_MADVISE')}
528f9332757SPaolo Bonzinisummary_info += {'posix_memalign':    config_host.has_key('CONFIG_POSIX_MEMALIGN')}
529f9332757SPaolo Bonzinisummary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')}
530f9332757SPaolo Bonzinisummary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')}
531f9332757SPaolo Bonzinisummary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')}
532f9332757SPaolo Bonzinisummary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
533f9332757SPaolo Bonzinisummary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
534f9332757SPaolo Bonzinisummary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')}
535f9332757SPaolo Bonzinisummary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
536f9332757SPaolo Bonzinisummary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
537f9332757SPaolo Bonzinisummary_info += {'Trace backends':    config_host['TRACE_BACKENDS']}
538f9332757SPaolo Bonziniif config_host['TRACE_BACKENDS'].split().contains('simple')
539f9332757SPaolo Bonzini  summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'}
540f9332757SPaolo Bonziniendif
541f9332757SPaolo Bonzini# TODO: add back protocol and server version
542f9332757SPaolo Bonzinisummary_info += {'spice support':     config_host.has_key('CONFIG_SPICE')}
543f9332757SPaolo Bonzinisummary_info += {'rbd support':       config_host.has_key('CONFIG_RBD')}
544f9332757SPaolo Bonzinisummary_info += {'xfsctl support':    config_host.has_key('CONFIG_XFS')}
545f9332757SPaolo Bonzinisummary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
546f9332757SPaolo Bonzinisummary_info += {'libusb':            config_host.has_key('CONFIG_USB_LIBUSB')}
547f9332757SPaolo Bonzinisummary_info += {'usb net redir':     config_host.has_key('CONFIG_USB_REDIR')}
548f9332757SPaolo Bonzinisummary_info += {'OpenGL support':    config_host.has_key('CONFIG_OPENGL')}
549f9332757SPaolo Bonzinisummary_info += {'OpenGL dmabufs':    config_host.has_key('CONFIG_OPENGL_DMABUF')}
550f9332757SPaolo Bonzinisummary_info += {'libiscsi support':  config_host.has_key('CONFIG_LIBISCSI')}
551f9332757SPaolo Bonzinisummary_info += {'libnfs support':    config_host.has_key('CONFIG_LIBNFS')}
552f9332757SPaolo Bonzinisummary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
553f9332757SPaolo Bonziniif targetos == 'windows'
554f9332757SPaolo Bonzini  if 'WIN_SDK' in config_host
555f9332757SPaolo Bonzini    summary_info += {'Windows SDK':       config_host['WIN_SDK']}
556f9332757SPaolo Bonzini  endif
557f9332757SPaolo Bonzini  summary_info += {'QGA VSS support':   config_host.has_key('CONFIG_QGA_VSS')}
558f9332757SPaolo Bonzini  summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
559f9332757SPaolo Bonzini  summary_info += {'QGA MSI support':   config_host.has_key('CONFIG_QGA_MSI_ENABLED')}
560f9332757SPaolo Bonziniendif
561f9332757SPaolo Bonzinisummary_info += {'seccomp support':   config_host.has_key('CONFIG_SECCOMP')}
562f9332757SPaolo Bonzinisummary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
563f9332757SPaolo Bonzinisummary_info += {'coroutine pool':    config_host['CONFIG_COROUTINE_POOL'] == '1'}
564f9332757SPaolo Bonzinisummary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
565f9332757SPaolo Bonzinisummary_info += {'mutex debugging':   config_host.has_key('CONFIG_DEBUG_MUTEX')}
566f9332757SPaolo Bonzinisummary_info += {'crypto afalg':      config_host.has_key('CONFIG_AF_ALG')}
567f9332757SPaolo Bonzinisummary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
568bf0e56a3SMarc-André Lureausummary_info += {'gcov':              get_option('b_coverage')}
569f9332757SPaolo Bonzinisummary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
570f9332757SPaolo Bonzinisummary_info += {'libssh support':    config_host.has_key('CONFIG_LIBSSH')}
571f9332757SPaolo Bonzinisummary_info += {'QOM debugging':     config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
572f9332757SPaolo Bonzinisummary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
573f9332757SPaolo Bonzinisummary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
574f9332757SPaolo Bonzinisummary_info += {'snappy support':    config_host.has_key('CONFIG_SNAPPY')}
575f9332757SPaolo Bonzinisummary_info += {'bzip2 support':     config_host.has_key('CONFIG_BZIP2')}
576f9332757SPaolo Bonzinisummary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
577f9332757SPaolo Bonzinisummary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
578f9332757SPaolo Bonzinisummary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
579f9332757SPaolo Bonzinisummary_info += {'libxml2':           config_host.has_key('CONFIG_LIBXML2')}
580f9332757SPaolo Bonzinisummary_info += {'tcmalloc support':  config_host.has_key('CONFIG_TCMALLOC')}
581f9332757SPaolo Bonzinisummary_info += {'jemalloc support':  config_host.has_key('CONFIG_JEMALLOC')}
582f9332757SPaolo Bonzinisummary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')}
583f9332757SPaolo Bonzinisummary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')}
584f9332757SPaolo Bonzinisummary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')}
585f9332757SPaolo Bonzinisummary_info += {'bochs support':     config_host.has_key('CONFIG_BOCHS')}
586f9332757SPaolo Bonzinisummary_info += {'cloop support':     config_host.has_key('CONFIG_CLOOP')}
587f9332757SPaolo Bonzinisummary_info += {'dmg support':       config_host.has_key('CONFIG_DMG')}
588f9332757SPaolo Bonzinisummary_info += {'qcow v1 support':   config_host.has_key('CONFIG_QCOW1')}
589f9332757SPaolo Bonzinisummary_info += {'vdi support':       config_host.has_key('CONFIG_VDI')}
590f9332757SPaolo Bonzinisummary_info += {'vvfat support':     config_host.has_key('CONFIG_VVFAT')}
591f9332757SPaolo Bonzinisummary_info += {'qed support':       config_host.has_key('CONFIG_QED')}
592f9332757SPaolo Bonzinisummary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')}
593f9332757SPaolo Bonzinisummary_info += {'sheepdog support':  config_host.has_key('CONFIG_SHEEPDOG')}
594f9332757SPaolo Bonzinisummary_info += {'capstone':          config_host.has_key('CONFIG_CAPSTONE')}
595f9332757SPaolo Bonzinisummary_info += {'libpmem support':   config_host.has_key('CONFIG_LIBPMEM')}
596f9332757SPaolo Bonzinisummary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
597f9332757SPaolo Bonzinisummary_info += {'libudev':           config_host.has_key('CONFIG_LIBUDEV')}
598f9332757SPaolo Bonzinisummary_info += {'default devices':   config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
599f9332757SPaolo Bonzinisummary_info += {'plugin support':    config_host.has_key('CONFIG_PLUGIN')}
600f9332757SPaolo Bonzinisummary_info += {'fuzzing support':   config_host.has_key('CONFIG_FUZZ')}
601f9332757SPaolo Bonziniif config_host.has_key('HAVE_GDB_BIN')
602f9332757SPaolo Bonzini  summary_info += {'gdb':             config_host['HAVE_GDB_BIN']}
603f9332757SPaolo Bonziniendif
604f9332757SPaolo Bonzinisummary_info += {'thread sanitizer':  config_host.has_key('CONFIG_TSAN')}
605f9332757SPaolo Bonzinisummary_info += {'rng-none':          config_host.has_key('CONFIG_RNG_NONE')}
606f9332757SPaolo Bonzinisummary_info += {'Linux keyring':     config_host.has_key('CONFIG_SECRET_KEYRING')}
607f9332757SPaolo Bonzinisummary(summary_info, bool_yn: true)
608f9332757SPaolo Bonzini
609f9332757SPaolo Bonziniif not supported_cpus.contains(cpu)
610f9332757SPaolo Bonzini  message()
611f9332757SPaolo Bonzini  warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!')
612f9332757SPaolo Bonzini  message()
613f9332757SPaolo Bonzini  message('CPU host architecture ' + cpu + ' support is not currently maintained.')
614f9332757SPaolo Bonzini  message('The QEMU project intends to remove support for this host CPU in')
615f9332757SPaolo Bonzini  message('a future release if nobody volunteers to maintain it and to')
616f9332757SPaolo Bonzini  message('provide a build host for our continuous integration setup.')
617f9332757SPaolo Bonzini  message('configure has succeeded and you can continue to build, but')
618f9332757SPaolo Bonzini  message('if you care about QEMU on this platform you should contact')
619f9332757SPaolo Bonzini  message('us upstream at qemu-devel@nongnu.org.')
620f9332757SPaolo Bonziniendif
621f9332757SPaolo Bonzini
622f9332757SPaolo Bonziniif not supported_oses.contains(targetos)
623f9332757SPaolo Bonzini  message()
624f9332757SPaolo Bonzini  warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!')
625f9332757SPaolo Bonzini  message()
626f9332757SPaolo Bonzini  message('Host OS ' + targetos + 'support is not currently maintained.')
627f9332757SPaolo Bonzini  message('The QEMU project intends to remove support for this host OS in')
628f9332757SPaolo Bonzini  message('a future release if nobody volunteers to maintain it and to')
629f9332757SPaolo Bonzini  message('provide a build host for our continuous integration setup.')
630f9332757SPaolo Bonzini  message('configure has succeeded and you can continue to build, but')
631f9332757SPaolo Bonzini  message('if you care about QEMU on this platform you should contact')
632f9332757SPaolo Bonzini  message('us upstream at qemu-devel@nongnu.org.')
633f9332757SPaolo Bonziniendif
634