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