meson: add version.o
[qemu/ar7.git] / meson.build
blobfeb3c8a30c2e6901bfa30a650a53c719566e53da
1 project('qemu', ['c'], meson_version: '>=0.55.0',
2         default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_lundef=false'],
3         version: run_command('head', meson.source_root() / 'VERSION').stdout().strip())
5 not_found = dependency('', required: false)
6 keyval = import('unstable-keyval')
7 ss = import('sourceset')
9 cc = meson.get_compiler('c')
10 config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
12 add_project_arguments(config_host['QEMU_CFLAGS'].split(),
13                       native: false, language: ['c', 'objc'])
14 add_project_arguments(config_host['QEMU_CXXFLAGS'].split(),
15                       native: false, language: 'cpp')
16 add_project_link_arguments(config_host['QEMU_LDFLAGS'].split(),
17                            native: false, language: ['c', 'cpp', 'objc'])
18 add_project_arguments(config_host['QEMU_INCLUDES'].split(),
19                       language: ['c', 'cpp', 'objc'])
21 python = import('python').find_installation()
23 link_language = meson.get_external_property('link_language', 'cpp')
24 if link_language == 'cpp'
25   add_languages('cpp', required: true, native: false)
26 endif
27 if host_machine.system() == 'darwin'
28   add_languages('objc', required: false, native: false)
29 endif
31 if 'SPARSE_CFLAGS' in config_host
32   run_target('sparse',
33              command: [find_program('scripts/check_sparse.py'),
34                        config_host['SPARSE_CFLAGS'].split(),
35                        'compile_commands.json'])
36 endif
38 configure_file(input: files('scripts/ninjatool.py'),
39                output: 'ninjatool',
40                configuration: config_host)
42 supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux']
43 supported_cpus = ['ppc', 'ppc64', 's390x', 'sparc64', 'riscv32', 'riscv64', 'x86', 'x86_64',
44   'arm', 'aarch64', 'mips', 'mips64', 'sparc', 'sparc64']
46 cpu = host_machine.cpu_family()
47 targetos = host_machine.system()
49 m = cc.find_library('m', required: false)
50 util = cc.find_library('util', required: false)
51 socket = []
52 version_res = []
53 if targetos == 'windows'
54   socket = cc.find_library('ws2_32')
56   win = import('windows')
57   version_res = win.compile_resources('version.rc',
58                                       depend_files: files('pc-bios/qemu-nsis.ico'),
59                                       include_directories: include_directories('.'))
60 endif
61 glib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(),
62                           link_args: config_host['GLIB_LIBS'].split())
63 gio = not_found
64 if 'CONFIG_GIO' in config_host
65   gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
66                            link_args: config_host['GIO_LIBS'].split())
67 endif
68 lttng = not_found
69 if 'CONFIG_TRACE_UST' in config_host
70   lttng = declare_dependency(link_args: config_host['LTTNG_UST_LIBS'].split())
71 endif
72 urcubp = not_found
73 if 'CONFIG_TRACE_UST' in config_host
74   urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
75 endif
76 nettle = not_found
77 if 'CONFIG_NETTLE' in config_host
78   nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
79                               link_args: config_host['NETTLE_LIBS'].split())
80 endif
81 gnutls = not_found
82 if 'CONFIG_GNUTLS' in config_host
83   gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(),
84                               link_args: config_host['GNUTLS_LIBS'].split())
85 endif
87 target_dirs = config_host['TARGET_DIRS'].split()
88 have_user = false
89 have_system = false
90 foreach target : target_dirs
91   have_user = have_user or target.endswith('-user')
92   have_system = have_system or target.endswith('-softmmu')
93 endforeach
94 have_tools = 'CONFIG_TOOLS' in config_host
95 have_block = have_system or have_tools
97 # Generators
99 qapi_gen = find_program('scripts/qapi-gen.py')
100 qapi_gen_depends = [ meson.source_root() / 'scripts/qapi/__init__.py',
101                      meson.source_root() / 'scripts/qapi/commands.py',
102                      meson.source_root() / 'scripts/qapi/common.py',
103                      meson.source_root() / 'scripts/qapi/doc.py',
104                      meson.source_root() / 'scripts/qapi/error.py',
105                      meson.source_root() / 'scripts/qapi/events.py',
106                      meson.source_root() / 'scripts/qapi/expr.py',
107                      meson.source_root() / 'scripts/qapi/gen.py',
108                      meson.source_root() / 'scripts/qapi/introspect.py',
109                      meson.source_root() / 'scripts/qapi/parser.py',
110                      meson.source_root() / 'scripts/qapi/schema.py',
111                      meson.source_root() / 'scripts/qapi/source.py',
112                      meson.source_root() / 'scripts/qapi/types.py',
113                      meson.source_root() / 'scripts/qapi/visit.py',
114                      meson.source_root() / 'scripts/qapi/common.py',
115                      meson.source_root() / 'scripts/qapi/doc.py',
116                      meson.source_root() / 'scripts/qapi-gen.py'
119 tracetool = [
120   python, files('scripts/tracetool.py'),
121    '--backend=' + config_host['TRACE_BACKENDS']
124 # Collect sourcesets.
126 util_ss = ss.source_set()
127 stub_ss = ss.source_set()
128 trace_ss = ss.source_set()
130 ###############
131 # Trace files #
132 ###############
134 trace_events_subdirs = [
135   'accel/kvm',
136   'accel/tcg',
137   'crypto',
138   'monitor',
140 if have_user
141   trace_events_subdirs += [ 'linux-user' ]
142 endif
143 if have_block
144   trace_events_subdirs += [
145     'authz',
146     'block',
147     'io',
148     'nbd',
149     'scsi',
150   ]
151 endif
152 if have_system
153   trace_events_subdirs += [
154     'audio',
155     'backends',
156     'backends/tpm',
157     'chardev',
158     'hw/9pfs',
159     'hw/acpi',
160     'hw/alpha',
161     'hw/arm',
162     'hw/audio',
163     'hw/block',
164     'hw/block/dataplane',
165     'hw/char',
166     'hw/display',
167     'hw/dma',
168     'hw/hppa',
169     'hw/hyperv',
170     'hw/i2c',
171     'hw/i386',
172     'hw/i386/xen',
173     'hw/ide',
174     'hw/input',
175     'hw/intc',
176     'hw/isa',
177     'hw/mem',
178     'hw/mips',
179     'hw/misc',
180     'hw/misc/macio',
181     'hw/net',
182     'hw/nvram',
183     'hw/pci',
184     'hw/pci-host',
185     'hw/ppc',
186     'hw/rdma',
187     'hw/rdma/vmw',
188     'hw/rtc',
189     'hw/s390x',
190     'hw/scsi',
191     'hw/sd',
192     'hw/sparc',
193     'hw/sparc64',
194     'hw/ssi',
195     'hw/timer',
196     'hw/tpm',
197     'hw/usb',
198     'hw/vfio',
199     'hw/virtio',
200     'hw/watchdog',
201     'hw/xen',
202     'hw/gpio',
203     'hw/riscv',
204     'migration',
205     'net',
206     'ui',
207   ]
208 endif
209 trace_events_subdirs += [
210   'hw/core',
211   'qapi',
212   'qom',
213   'target/arm',
214   'target/hppa',
215   'target/i386',
216   'target/mips',
217   'target/ppc',
218   'target/riscv',
219   'target/s390x',
220   'target/sparc',
221   'util',
224 genh = []
226 subdir('qapi')
227 subdir('qobject')
228 subdir('stubs')
229 subdir('trace')
230 subdir('util')
231 subdir('crypto')
232 subdir('storage-daemon')
234 # Build targets from sourcesets
236 stub_ss = stub_ss.apply(config_host, strict: false)
238 util_ss.add_all(trace_ss)
239 util_ss = util_ss.apply(config_host, strict: false)
240 libqemuutil = static_library('qemuutil',
241                              sources: util_ss.sources() + stub_ss.sources() + genh,
242                              dependencies: [util_ss.dependencies(), m, glib, socket])
243 qemuutil = declare_dependency(link_with: libqemuutil,
244                               sources: genh + version_res)
246 summary_info = {}
247 summary_info += {'Install prefix':    config_host['prefix']}
248 summary_info += {'BIOS directory':    config_host['qemu_datadir']}
249 summary_info += {'firmware path':     config_host['qemu_firmwarepath']}
250 summary_info += {'binary directory':  config_host['bindir']}
251 summary_info += {'library directory': config_host['libdir']}
252 summary_info += {'module directory':  config_host['qemu_moddir']}
253 summary_info += {'libexec directory': config_host['libexecdir']}
254 summary_info += {'include directory': config_host['includedir']}
255 summary_info += {'config directory':  config_host['sysconfdir']}
256 if targetos != 'windows'
257   summary_info += {'local state directory': config_host['qemu_localstatedir']}
258   summary_info += {'Manual directory':      config_host['mandir']}
259 else
260   summary_info += {'local state directory': 'queried at runtime'}
261 endif
262 summary_info += {'Build directory':   meson.current_build_dir()}
263 summary_info += {'Source path':       meson.current_source_dir()}
264 summary_info += {'GIT binary':        config_host['GIT']}
265 summary_info += {'GIT submodules':    config_host['GIT_SUBMODULES']}
266 summary_info += {'C compiler':        meson.get_compiler('c').cmd_array()[0]}
267 summary_info += {'Host C compiler':   meson.get_compiler('c', native: true).cmd_array()[0]}
268 if link_language == 'cpp'
269   summary_info += {'C++ compiler':      meson.get_compiler('cpp').cmd_array()[0]}
270 else
271   summary_info += {'C++ compiler':      false}
272 endif
273 if targetos == 'darwin'
274   summary_info += {'Objective-C compiler': meson.get_compiler('objc').cmd_array()[0]}
275 endif
276 summary_info += {'ARFLAGS':           config_host['ARFLAGS']}
277 summary_info += {'CFLAGS':            config_host['CFLAGS']}
278 summary_info += {'QEMU_CFLAGS':       config_host['QEMU_CFLAGS']}
279 summary_info += {'QEMU_LDFLAGS':      config_host['QEMU_LDFLAGS']}
280 summary_info += {'make':              config_host['MAKE']}
281 summary_info += {'install':           config_host['INSTALL']}
282 summary_info += {'python':            '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
283 summary_info += {'sphinx-build':      config_host['SPHINX_BUILD']}
284 summary_info += {'genisoimage':       config_host['GENISOIMAGE']}
285 # TODO: add back version
286 summary_info += {'slirp support':     config_host.has_key('CONFIG_SLIRP')}
287 if config_host.has_key('CONFIG_SLIRP')
288   summary_info += {'smbd':            config_host['CONFIG_SMBD_COMMAND']}
289 endif
290 summary_info += {'module support':    config_host.has_key('CONFIG_MODULES')}
291 if config_host.has_key('CONFIG_MODULES')
292   summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')}
293 endif
294 summary_info += {'host CPU':          cpu}
295 summary_info += {'host endianness':   build_machine.endian()}
296 summary_info += {'target list':       config_host['TARGET_DIRS']}
297 summary_info += {'gprof enabled':     config_host.has_key('CONFIG_GPROF')}
298 summary_info += {'sparse enabled':    meson.get_compiler('c').cmd_array().contains('cgcc')}
299 summary_info += {'strip binaries':    get_option('strip')}
300 summary_info += {'profiler':          config_host.has_key('CONFIG_PROFILER')}
301 summary_info += {'static build':      config_host.has_key('CONFIG_TOOLS')}
302 if targetos == 'darwin'
303   summary_info += {'Cocoa support': config_host.has_key('CONFIG_COCOA')}
304 endif
305 # TODO: add back version
306 summary_info += {'SDL support':       config_host.has_key('CONFIG_SDL')}
307 summary_info += {'SDL image support': config_host.has_key('CONFIG_SDL_IMAGE')}
308 # TODO: add back version
309 summary_info += {'GTK support':       config_host.has_key('CONFIG_GTK')}
310 summary_info += {'GTK GL support':    config_host.has_key('CONFIG_GTK_GL')}
311 # TODO: add back version
312 summary_info += {'VTE support':       config_host.has_key('CONFIG_VTE')}
313 summary_info += {'TLS priority':      config_host['CONFIG_TLS_PRIORITY']}
314 summary_info += {'GNUTLS support':    config_host.has_key('CONFIG_GNUTLS')}
315 # TODO: add back version
316 summary_info += {'libgcrypt':         config_host.has_key('CONFIG_GCRYPT')}
317 if config_host.has_key('CONFIG_GCRYPT')
318    summary_info += {'  hmac':            config_host.has_key('CONFIG_GCRYPT_HMAC')}
319    summary_info += {'  XTS':             not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
320 endif
321 # TODO: add back version
322 summary_info += {'nettle':            config_host.has_key('CONFIG_NETTLE')}
323 if config_host.has_key('CONFIG_NETTLE')
324    summary_info += {'  XTS':             not config_host.has_key('CONFIG_QEMU_PRIVATE_XTS')}
325 endif
326 summary_info += {'libtasn1':          config_host.has_key('CONFIG_TASN1')}
327 summary_info += {'PAM':               config_host.has_key('CONFIG_AUTH_PAM')}
328 summary_info += {'iconv support':     config_host.has_key('CONFIG_ICONV')}
329 summary_info += {'curses support':    config_host.has_key('CONFIG_CURSES')}
330 # TODO: add back version
331 summary_info += {'virgl support':     config_host.has_key('CONFIG_VIRGL')}
332 summary_info += {'curl support':      config_host.has_key('CONFIG_CURL')}
333 summary_info += {'mingw32 support':   targetos == 'windows'}
334 summary_info += {'Audio drivers':     config_host['CONFIG_AUDIO_DRIVERS']}
335 summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
336 summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
337 summary_info += {'VirtFS support':    config_host.has_key('CONFIG_VIRTFS')}
338 summary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
339 summary_info += {'VNC support':       config_host.has_key('CONFIG_VNC')}
340 if config_host.has_key('CONFIG_VNC')
341   summary_info += {'VNC SASL support':  config_host.has_key('CONFIG_VNC_SASL')}
342   summary_info += {'VNC JPEG support':  config_host.has_key('CONFIG_VNC_JPEG')}
343   summary_info += {'VNC PNG support':   config_host.has_key('CONFIG_VNC_PNG')}
344 endif
345 summary_info += {'xen support':       config_host.has_key('CONFIG_XEN_BACKEND')}
346 if config_host.has_key('CONFIG_XEN_BACKEND')
347   summary_info += {'xen ctrl version':  config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
348 endif
349 summary_info += {'brlapi support':    config_host.has_key('CONFIG_BRLAPI')}
350 summary_info += {'Documentation':     config_host.has_key('BUILD_DOCS')}
351 summary_info += {'PIE':               get_option('b_pie')}
352 summary_info += {'vde support':       config_host.has_key('CONFIG_VDE')}
353 summary_info += {'netmap support':    config_host.has_key('CONFIG_NETMAP')}
354 summary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
355 summary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
356 summary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
357 summary_info += {'Install blobs':     config_host.has_key('INSTALL_BLOBS')}
358 # TODO: add back KVM/HAX/HVF/WHPX/TCG
359 #summary_info += {'KVM support':       have_kvm'}
360 #summary_info += {'HAX support':       have_hax'}
361 #summary_info += {'HVF support':       have_hvf'}
362 #summary_info += {'WHPX support':      have_whpx'}
363 #summary_info += {'TCG support':       have_tcg'}
364 #if get_option('tcg')
365 #  summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
366 #  summary_info += {'TCG interpreter':   config_host.has_key('CONFIG_TCG_INTERPRETER')}
367 #endif
368 summary_info += {'malloc trim support': config_host.has_key('CONFIG_MALLOC_TRIM')}
369 summary_info += {'RDMA support':      config_host.has_key('CONFIG_RDMA')}
370 summary_info += {'PVRDMA support':    config_host.has_key('CONFIG_PVRDMA')}
371 summary_info += {'fdt support':       config_host.has_key('CONFIG_FDT')}
372 summary_info += {'membarrier':        config_host.has_key('CONFIG_MEMBARRIER')}
373 summary_info += {'preadv support':    config_host.has_key('CONFIG_PREADV')}
374 summary_info += {'fdatasync':         config_host.has_key('CONFIG_FDATASYNC')}
375 summary_info += {'madvise':           config_host.has_key('CONFIG_MADVISE')}
376 summary_info += {'posix_madvise':     config_host.has_key('CONFIG_POSIX_MADVISE')}
377 summary_info += {'posix_memalign':    config_host.has_key('CONFIG_POSIX_MEMALIGN')}
378 summary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')}
379 summary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')}
380 summary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')}
381 summary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
382 summary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
383 summary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_KERNEL')}
384 summary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
385 summary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
386 summary_info += {'Trace backends':    config_host['TRACE_BACKENDS']}
387 if config_host['TRACE_BACKENDS'].split().contains('simple')
388   summary_info += {'Trace output file': config_host['CONFIG_TRACE_FILE'] + '-<pid>'}
389 endif
390 # TODO: add back protocol and server version
391 summary_info += {'spice support':     config_host.has_key('CONFIG_SPICE')}
392 summary_info += {'rbd support':       config_host.has_key('CONFIG_RBD')}
393 summary_info += {'xfsctl support':    config_host.has_key('CONFIG_XFS')}
394 summary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
395 summary_info += {'libusb':            config_host.has_key('CONFIG_USB_LIBUSB')}
396 summary_info += {'usb net redir':     config_host.has_key('CONFIG_USB_REDIR')}
397 summary_info += {'OpenGL support':    config_host.has_key('CONFIG_OPENGL')}
398 summary_info += {'OpenGL dmabufs':    config_host.has_key('CONFIG_OPENGL_DMABUF')}
399 summary_info += {'libiscsi support':  config_host.has_key('CONFIG_LIBISCSI')}
400 summary_info += {'libnfs support':    config_host.has_key('CONFIG_LIBNFS')}
401 summary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
402 if targetos == 'windows'
403   if 'WIN_SDK' in config_host
404     summary_info += {'Windows SDK':       config_host['WIN_SDK']}
405   endif
406   summary_info += {'QGA VSS support':   config_host.has_key('CONFIG_QGA_VSS')}
407   summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
408   summary_info += {'QGA MSI support':   config_host.has_key('CONFIG_QGA_MSI_ENABLED')}
409 endif
410 summary_info += {'seccomp support':   config_host.has_key('CONFIG_SECCOMP')}
411 summary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
412 summary_info += {'coroutine pool':    config_host['CONFIG_COROUTINE_POOL'] == '1'}
413 summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
414 summary_info += {'mutex debugging':   config_host.has_key('CONFIG_DEBUG_MUTEX')}
415 summary_info += {'crypto afalg':      config_host.has_key('CONFIG_AF_ALG')}
416 summary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
417 summary_info += {'gcov':              get_option('b_coverage')}
418 summary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
419 summary_info += {'libssh support':    config_host.has_key('CONFIG_LIBSSH')}
420 summary_info += {'QOM debugging':     config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
421 summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
422 summary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
423 summary_info += {'snappy support':    config_host.has_key('CONFIG_SNAPPY')}
424 summary_info += {'bzip2 support':     config_host.has_key('CONFIG_BZIP2')}
425 summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
426 summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
427 summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
428 summary_info += {'libxml2':           config_host.has_key('CONFIG_LIBXML2')}
429 summary_info += {'tcmalloc support':  config_host.has_key('CONFIG_TCMALLOC')}
430 summary_info += {'jemalloc support':  config_host.has_key('CONFIG_JEMALLOC')}
431 summary_info += {'avx2 optimization': config_host.has_key('CONFIG_AVX2_OPT')}
432 summary_info += {'avx512f optimization': config_host.has_key('CONFIG_AVX512F_OPT')}
433 summary_info += {'replication support': config_host.has_key('CONFIG_REPLICATION')}
434 summary_info += {'bochs support':     config_host.has_key('CONFIG_BOCHS')}
435 summary_info += {'cloop support':     config_host.has_key('CONFIG_CLOOP')}
436 summary_info += {'dmg support':       config_host.has_key('CONFIG_DMG')}
437 summary_info += {'qcow v1 support':   config_host.has_key('CONFIG_QCOW1')}
438 summary_info += {'vdi support':       config_host.has_key('CONFIG_VDI')}
439 summary_info += {'vvfat support':     config_host.has_key('CONFIG_VVFAT')}
440 summary_info += {'qed support':       config_host.has_key('CONFIG_QED')}
441 summary_info += {'parallels support': config_host.has_key('CONFIG_PARALLELS')}
442 summary_info += {'sheepdog support':  config_host.has_key('CONFIG_SHEEPDOG')}
443 summary_info += {'capstone':          config_host.has_key('CONFIG_CAPSTONE')}
444 summary_info += {'libpmem support':   config_host.has_key('CONFIG_LIBPMEM')}
445 summary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
446 summary_info += {'libudev':           config_host.has_key('CONFIG_LIBUDEV')}
447 summary_info += {'default devices':   config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
448 summary_info += {'plugin support':    config_host.has_key('CONFIG_PLUGIN')}
449 summary_info += {'fuzzing support':   config_host.has_key('CONFIG_FUZZ')}
450 if config_host.has_key('HAVE_GDB_BIN')
451   summary_info += {'gdb':             config_host['HAVE_GDB_BIN']}
452 endif
453 summary_info += {'thread sanitizer':  config_host.has_key('CONFIG_TSAN')}
454 summary_info += {'rng-none':          config_host.has_key('CONFIG_RNG_NONE')}
455 summary_info += {'Linux keyring':     config_host.has_key('CONFIG_SECRET_KEYRING')}
456 summary(summary_info, bool_yn: true)
458 if not supported_cpus.contains(cpu)
459   message()
460   warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!')
461   message()
462   message('CPU host architecture ' + cpu + ' support is not currently maintained.')
463   message('The QEMU project intends to remove support for this host CPU in')
464   message('a future release if nobody volunteers to maintain it and to')
465   message('provide a build host for our continuous integration setup.')
466   message('configure has succeeded and you can continue to build, but')
467   message('if you care about QEMU on this platform you should contact')
468   message('us upstream at qemu-devel@nongnu.org.')
469 endif
471 if not supported_oses.contains(targetos)
472   message()
473   warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!')
474   message()
475   message('Host OS ' + targetos + 'support is not currently maintained.')
476   message('The QEMU project intends to remove support for this host OS in')
477   message('a future release if nobody volunteers to maintain it and to')
478   message('provide a build host for our continuous integration setup.')
479   message('configure has succeeded and you can continue to build, but')
480   message('if you care about QEMU on this platform you should contact')
481   message('us upstream at qemu-devel@nongnu.org.')
482 endif