|
|
|
@ -18,7 +18,7 @@ keyval = import('keyval')
|
|
|
|
|
ss = import('sourceset')
|
|
|
|
|
fs = import('fs')
|
|
|
|
|
|
|
|
|
|
targetos = host_machine.system()
|
|
|
|
|
host_os = host_machine.system()
|
|
|
|
|
config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
|
|
|
|
|
|
|
|
|
|
# Temporary directory used for files created while
|
|
|
|
@ -61,11 +61,11 @@ python = import('python').find_installation()
|
|
|
|
|
|
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
|
all_languages = ['c']
|
|
|
|
|
if targetos == 'windows' and add_languages('cpp', required: false, native: false)
|
|
|
|
|
if host_os == 'windows' and add_languages('cpp', required: false, native: false)
|
|
|
|
|
all_languages += ['cpp']
|
|
|
|
|
cxx = meson.get_compiler('cpp')
|
|
|
|
|
endif
|
|
|
|
|
if targetos == 'darwin' and \
|
|
|
|
|
if host_os == 'darwin' and \
|
|
|
|
|
add_languages('objc', required: get_option('cocoa'), native: false)
|
|
|
|
|
all_languages += ['objc']
|
|
|
|
|
objc = meson.get_compiler('objc')
|
|
|
|
@ -120,7 +120,7 @@ if get_option('fuzzing') and get_option('fuzzing_engine') == '' and \
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Tracing backends
|
|
|
|
|
if 'ftrace' in get_option('trace_backends') and targetos != 'linux'
|
|
|
|
|
if 'ftrace' in get_option('trace_backends') and host_os != 'linux'
|
|
|
|
|
error('ftrace is supported only on Linux')
|
|
|
|
|
endif
|
|
|
|
|
if 'syslog' in get_option('trace_backends') and not cc.compiles('''
|
|
|
|
@ -135,30 +135,30 @@ endif
|
|
|
|
|
|
|
|
|
|
# Miscellaneous Linux-only features
|
|
|
|
|
get_option('mpath') \
|
|
|
|
|
.require(targetos == 'linux', error_message: 'Multipath is supported only on Linux')
|
|
|
|
|
.require(host_os == 'linux', error_message: 'Multipath is supported only on Linux')
|
|
|
|
|
|
|
|
|
|
multiprocess_allowed = get_option('multiprocess') \
|
|
|
|
|
.require(targetos == 'linux', error_message: 'Multiprocess QEMU is supported only on Linux') \
|
|
|
|
|
.require(host_os == 'linux', error_message: 'Multiprocess QEMU is supported only on Linux') \
|
|
|
|
|
.allowed()
|
|
|
|
|
|
|
|
|
|
vfio_user_server_allowed = get_option('vfio_user_server') \
|
|
|
|
|
.require(targetos == 'linux', error_message: 'vfio-user server is supported only on Linux') \
|
|
|
|
|
.require(host_os == 'linux', error_message: 'vfio-user server is supported only on Linux') \
|
|
|
|
|
.allowed()
|
|
|
|
|
|
|
|
|
|
have_tpm = get_option('tpm') \
|
|
|
|
|
.require(targetos != 'windows', error_message: 'TPM emulation only available on POSIX systems') \
|
|
|
|
|
.require(host_os != 'windows', error_message: 'TPM emulation only available on POSIX systems') \
|
|
|
|
|
.allowed()
|
|
|
|
|
|
|
|
|
|
# vhost
|
|
|
|
|
have_vhost_user = get_option('vhost_user') \
|
|
|
|
|
.disable_auto_if(targetos != 'linux') \
|
|
|
|
|
.require(targetos != 'windows',
|
|
|
|
|
.disable_auto_if(host_os != 'linux') \
|
|
|
|
|
.require(host_os != 'windows',
|
|
|
|
|
error_message: 'vhost-user is not available on Windows').allowed()
|
|
|
|
|
have_vhost_vdpa = get_option('vhost_vdpa') \
|
|
|
|
|
.require(targetos == 'linux',
|
|
|
|
|
.require(host_os == 'linux',
|
|
|
|
|
error_message: 'vhost-vdpa is only available on Linux').allowed()
|
|
|
|
|
have_vhost_kernel = get_option('vhost_kernel') \
|
|
|
|
|
.require(targetos == 'linux',
|
|
|
|
|
.require(host_os == 'linux',
|
|
|
|
|
error_message: 'vhost-kernel is only available on Linux').allowed()
|
|
|
|
|
have_vhost_user_crypto = get_option('vhost_crypto') \
|
|
|
|
|
.require(have_vhost_user,
|
|
|
|
@ -187,13 +187,13 @@ have_tools = get_option('tools') \
|
|
|
|
|
.allowed()
|
|
|
|
|
have_ga = get_option('guest_agent') \
|
|
|
|
|
.disable_auto_if(not have_system and not have_tools) \
|
|
|
|
|
.require(targetos in ['sunos', 'linux', 'windows', 'freebsd', 'netbsd', 'openbsd'],
|
|
|
|
|
.require(host_os in ['sunos', 'linux', 'windows', 'freebsd', 'netbsd', 'openbsd'],
|
|
|
|
|
error_message: 'unsupported OS for QEMU guest agent') \
|
|
|
|
|
.allowed()
|
|
|
|
|
have_block = have_system or have_tools
|
|
|
|
|
|
|
|
|
|
enable_modules = get_option('modules') \
|
|
|
|
|
.require(targetos != 'windows',
|
|
|
|
|
.require(host_os != 'windows',
|
|
|
|
|
error_message: 'Modules are not available for Windows') \
|
|
|
|
|
.require(not get_option('prefer_static'),
|
|
|
|
|
error_message: 'Modules are incompatible with static linking') \
|
|
|
|
@ -260,7 +260,7 @@ endif
|
|
|
|
|
|
|
|
|
|
modular_tcg = []
|
|
|
|
|
# Darwin does not support references to thread-local variables in modules
|
|
|
|
|
if targetos != 'darwin'
|
|
|
|
|
if host_os != 'darwin'
|
|
|
|
|
modular_tcg = ['i386-softmmu', 'x86_64-softmmu']
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -300,18 +300,18 @@ qemu_common_flags = [
|
|
|
|
|
qemu_cflags = []
|
|
|
|
|
qemu_ldflags = []
|
|
|
|
|
|
|
|
|
|
if targetos == 'darwin'
|
|
|
|
|
if host_os == 'darwin'
|
|
|
|
|
# Disable attempts to use ObjectiveC features in os/object.h since they
|
|
|
|
|
# won't work when we're compiling with gcc as a C compiler.
|
|
|
|
|
if compiler.get_id() == 'gcc'
|
|
|
|
|
qemu_common_flags += '-DOS_OBJECT_USE_OBJC=0'
|
|
|
|
|
endif
|
|
|
|
|
elif targetos == 'sunos'
|
|
|
|
|
elif host_os == 'sunos'
|
|
|
|
|
# needed for CMSG_ macros in sys/socket.h
|
|
|
|
|
qemu_common_flags += '-D_XOPEN_SOURCE=600'
|
|
|
|
|
# needed for TIOCWIN* defines in termios.h
|
|
|
|
|
qemu_common_flags += '-D__EXTENSIONS__'
|
|
|
|
|
elif targetos == 'haiku'
|
|
|
|
|
elif host_os == 'haiku'
|
|
|
|
|
qemu_common_flags += ['-DB_USE_POSITIVE_POSIX_ERRORS', '-D_BSD_SOURCE', '-fPIC']
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -395,10 +395,10 @@ ucontext_probe = '''
|
|
|
|
|
# For POSIX prefer ucontext, but it's not always possible. The fallback
|
|
|
|
|
# is sigcontext.
|
|
|
|
|
supported_backends = []
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
supported_backends += ['windows']
|
|
|
|
|
else
|
|
|
|
|
if targetos != 'darwin' and cc.links(ucontext_probe)
|
|
|
|
|
if host_os != 'darwin' and cc.links(ucontext_probe)
|
|
|
|
|
supported_backends += ['ucontext']
|
|
|
|
|
endif
|
|
|
|
|
supported_backends += ['sigaltstack']
|
|
|
|
@ -469,13 +469,13 @@ endif
|
|
|
|
|
# The combination is known as "full relro", because .got.plt is read-only too.
|
|
|
|
|
qemu_ldflags += cc.get_supported_link_arguments('-Wl,-z,relro', '-Wl,-z,now')
|
|
|
|
|
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
qemu_ldflags += cc.get_supported_link_arguments('-Wl,--no-seh', '-Wl,--nxcompat')
|
|
|
|
|
qemu_ldflags += cc.get_supported_link_arguments('-Wl,--dynamicbase', '-Wl,--high-entropy-va')
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
|
|
|
|
|
if targetos != 'sunos' and not get_option('tsan')
|
|
|
|
|
if host_os != 'sunos' and not get_option('tsan')
|
|
|
|
|
qemu_ldflags += cc.get_supported_link_arguments('-Wl,--warn-common')
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -585,7 +585,7 @@ warn_flags = [
|
|
|
|
|
'-Wshadow=local',
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
if targetos != 'darwin'
|
|
|
|
|
if host_os != 'darwin'
|
|
|
|
|
warn_flags += ['-Wthread-safety']
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -605,7 +605,7 @@ if 'objc' in all_languages
|
|
|
|
|
# Note sanitizer flags are not applied to Objective-C sources!
|
|
|
|
|
add_project_arguments(objc.get_supported_arguments(warn_flags), native: false, language: 'objc')
|
|
|
|
|
endif
|
|
|
|
|
if targetos == 'linux'
|
|
|
|
|
if host_os == 'linux'
|
|
|
|
|
add_project_arguments('-isystem', meson.current_source_dir() / 'linux-headers',
|
|
|
|
|
'-isystem', 'linux-headers',
|
|
|
|
|
language: all_languages)
|
|
|
|
@ -652,7 +652,7 @@ midl = not_found
|
|
|
|
|
widl = not_found
|
|
|
|
|
pathcch = not_found
|
|
|
|
|
host_dsosuf = '.so'
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
midl = find_program('midl', required: false)
|
|
|
|
|
widl = find_program('widl', required: false)
|
|
|
|
|
pathcch = cc.find_library('pathcch')
|
|
|
|
@ -664,19 +664,19 @@ if targetos == 'windows'
|
|
|
|
|
depend_files: files('pc-bios/qemu-nsis.ico'),
|
|
|
|
|
include_directories: include_directories('.'))
|
|
|
|
|
host_dsosuf = '.dll'
|
|
|
|
|
elif targetos == 'darwin'
|
|
|
|
|
elif host_os == 'darwin'
|
|
|
|
|
coref = dependency('appleframeworks', modules: 'CoreFoundation')
|
|
|
|
|
iokit = dependency('appleframeworks', modules: 'IOKit', required: false)
|
|
|
|
|
host_dsosuf = '.dylib'
|
|
|
|
|
elif targetos == 'sunos'
|
|
|
|
|
elif host_os == 'sunos'
|
|
|
|
|
socket = [cc.find_library('socket'),
|
|
|
|
|
cc.find_library('nsl'),
|
|
|
|
|
cc.find_library('resolv')]
|
|
|
|
|
elif targetos == 'haiku'
|
|
|
|
|
elif host_os == 'haiku'
|
|
|
|
|
socket = [cc.find_library('posix_error_mapper'),
|
|
|
|
|
cc.find_library('network'),
|
|
|
|
|
cc.find_library('bsd')]
|
|
|
|
|
elif targetos == 'openbsd'
|
|
|
|
|
elif host_os == 'openbsd'
|
|
|
|
|
if get_option('tcg').allowed() and target_dirs.length() > 0
|
|
|
|
|
# Disable OpenBSD W^X if available
|
|
|
|
|
emulator_link_args = cc.get_supported_link_arguments('-Wl,-z,wxneeded')
|
|
|
|
@ -688,10 +688,10 @@ endif
|
|
|
|
|
###############################################
|
|
|
|
|
|
|
|
|
|
accelerators = []
|
|
|
|
|
if get_option('kvm').allowed() and targetos == 'linux'
|
|
|
|
|
if get_option('kvm').allowed() and host_os == 'linux'
|
|
|
|
|
accelerators += 'CONFIG_KVM'
|
|
|
|
|
endif
|
|
|
|
|
if get_option('whpx').allowed() and targetos == 'windows'
|
|
|
|
|
if get_option('whpx').allowed() and host_os == 'windows'
|
|
|
|
|
if get_option('whpx').enabled() and host_machine.cpu() != 'x86_64'
|
|
|
|
|
error('WHPX requires 64-bit host')
|
|
|
|
|
elif cc.has_header('winhvplatform.h', required: get_option('whpx')) and \
|
|
|
|
@ -710,7 +710,7 @@ if get_option('hvf').allowed()
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
nvmm = not_found
|
|
|
|
|
if targetos == 'netbsd'
|
|
|
|
|
if host_os == 'netbsd'
|
|
|
|
|
nvmm = cc.find_library('nvmm', required: get_option('nvmm'))
|
|
|
|
|
if nvmm.found()
|
|
|
|
|
accelerators += 'CONFIG_NVMM'
|
|
|
|
@ -830,7 +830,7 @@ endif
|
|
|
|
|
have_xen_pci_passthrough = get_option('xen_pci_passthrough') \
|
|
|
|
|
.require(xen.found(),
|
|
|
|
|
error_message: 'Xen PCI passthrough requested but Xen not enabled') \
|
|
|
|
|
.require(targetos == 'linux',
|
|
|
|
|
.require(host_os == 'linux',
|
|
|
|
|
error_message: 'Xen PCI passthrough not available on this platform') \
|
|
|
|
|
.require(cpu == 'x86' or cpu == 'x86_64',
|
|
|
|
|
error_message: 'Xen PCI passthrough not available on this platform') \
|
|
|
|
@ -858,7 +858,7 @@ endif
|
|
|
|
|
|
|
|
|
|
# This workaround is required due to a bug in pkg-config file for glib as it
|
|
|
|
|
# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
|
|
|
|
|
if targetos == 'windows' and get_option('prefer_static')
|
|
|
|
|
if host_os == 'windows' and get_option('prefer_static')
|
|
|
|
|
glib_cflags += ['-DGLIB_STATIC_COMPILATION']
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -1119,12 +1119,12 @@ if vde.found() and not cc.links('''
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
pulse = not_found
|
|
|
|
|
if not get_option('pa').auto() or (targetos == 'linux' and have_system)
|
|
|
|
|
if not get_option('pa').auto() or (host_os == 'linux' and have_system)
|
|
|
|
|
pulse = dependency('libpulse', required: get_option('pa'),
|
|
|
|
|
method: 'pkg-config')
|
|
|
|
|
endif
|
|
|
|
|
alsa = not_found
|
|
|
|
|
if not get_option('alsa').auto() or (targetos == 'linux' and have_system)
|
|
|
|
|
if not get_option('alsa').auto() or (host_os == 'linux' and have_system)
|
|
|
|
|
alsa = dependency('alsa', required: get_option('alsa'),
|
|
|
|
|
method: 'pkg-config')
|
|
|
|
|
endif
|
|
|
|
@ -1134,7 +1134,7 @@ if not get_option('jack').auto() or have_system
|
|
|
|
|
method: 'pkg-config')
|
|
|
|
|
endif
|
|
|
|
|
pipewire = not_found
|
|
|
|
|
if not get_option('pipewire').auto() or (targetos == 'linux' and have_system)
|
|
|
|
|
if not get_option('pipewire').auto() or (host_os == 'linux' and have_system)
|
|
|
|
|
pipewire = dependency('libpipewire-0.3', version: '>=0.3.60',
|
|
|
|
|
required: get_option('pipewire'),
|
|
|
|
|
method: 'pkg-config')
|
|
|
|
@ -1179,7 +1179,7 @@ if not get_option('zstd').auto() or have_block
|
|
|
|
|
endif
|
|
|
|
|
virgl = not_found
|
|
|
|
|
|
|
|
|
|
have_vhost_user_gpu = have_tools and targetos == 'linux' and pixman.found()
|
|
|
|
|
have_vhost_user_gpu = have_tools and host_os == 'linux' and pixman.found()
|
|
|
|
|
if not get_option('virglrenderer').auto() or have_system or have_vhost_user_gpu
|
|
|
|
|
virgl = dependency('virglrenderer',
|
|
|
|
|
method: 'pkg-config',
|
|
|
|
@ -1204,7 +1204,7 @@ if not get_option('curl').auto() or have_block
|
|
|
|
|
required: get_option('curl'))
|
|
|
|
|
endif
|
|
|
|
|
libudev = not_found
|
|
|
|
|
if targetos == 'linux' and (have_system or have_tools)
|
|
|
|
|
if host_os == 'linux' and (have_system or have_tools)
|
|
|
|
|
libudev = dependency('libudev',
|
|
|
|
|
method: 'pkg-config',
|
|
|
|
|
required: get_option('libudev'))
|
|
|
|
@ -1212,7 +1212,7 @@ endif
|
|
|
|
|
|
|
|
|
|
mpathlibs = [libudev]
|
|
|
|
|
mpathpersist = not_found
|
|
|
|
|
if targetos == 'linux' and have_tools and get_option('mpath').allowed()
|
|
|
|
|
if host_os == 'linux' and have_tools and get_option('mpath').allowed()
|
|
|
|
|
mpath_test_source = '''
|
|
|
|
|
#include <libudev.h>
|
|
|
|
|
#include <mpath_persist.h>
|
|
|
|
@ -1283,7 +1283,7 @@ if have_system and get_option('curses').allowed()
|
|
|
|
|
return 0;
|
|
|
|
|
}'''
|
|
|
|
|
|
|
|
|
|
curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncursesw']
|
|
|
|
|
curses_dep_list = host_os == 'windows' ? ['ncurses', 'ncursesw'] : ['ncursesw']
|
|
|
|
|
curses = dependency(curses_dep_list,
|
|
|
|
|
required: false,
|
|
|
|
|
method: 'pkg-config')
|
|
|
|
@ -1300,13 +1300,13 @@ if have_system and get_option('curses').allowed()
|
|
|
|
|
endif
|
|
|
|
|
if not curses.found()
|
|
|
|
|
has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
|
|
|
|
|
if targetos != 'windows' and not has_curses_h
|
|
|
|
|
if host_os != 'windows' and not has_curses_h
|
|
|
|
|
message('Trying with /usr/include/ncursesw')
|
|
|
|
|
curses_compile_args += ['-I/usr/include/ncursesw']
|
|
|
|
|
has_curses_h = cc.has_header('curses.h', args: curses_compile_args)
|
|
|
|
|
endif
|
|
|
|
|
if has_curses_h
|
|
|
|
|
curses_libname_list = (targetos == 'windows' ? ['pdcurses'] : ['ncursesw', 'cursesw'])
|
|
|
|
|
curses_libname_list = (host_os == 'windows' ? ['pdcurses'] : ['ncursesw', 'cursesw'])
|
|
|
|
|
foreach curses_libname : curses_libname_list
|
|
|
|
|
libcurses = cc.find_library(curses_libname,
|
|
|
|
|
required: false)
|
|
|
|
@ -1529,7 +1529,7 @@ oss = not_found
|
|
|
|
|
if get_option('oss').allowed() and have_system
|
|
|
|
|
if not cc.has_header('sys/soundcard.h')
|
|
|
|
|
# not found
|
|
|
|
|
elif targetos == 'netbsd'
|
|
|
|
|
elif host_os == 'netbsd'
|
|
|
|
|
oss = cc.find_library('ossaudio', required: get_option('oss'))
|
|
|
|
|
else
|
|
|
|
|
oss = declare_dependency()
|
|
|
|
@ -1542,7 +1542,7 @@ if get_option('oss').allowed() and have_system
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
dsound = not_found
|
|
|
|
|
if not get_option('dsound').auto() or (targetos == 'windows' and have_system)
|
|
|
|
|
if not get_option('dsound').auto() or (host_os == 'windows' and have_system)
|
|
|
|
|
if cc.has_header('dsound.h')
|
|
|
|
|
dsound = declare_dependency(link_args: ['-lole32', '-ldxguid'])
|
|
|
|
|
endif
|
|
|
|
@ -1555,7 +1555,7 @@ if not get_option('dsound').auto() or (targetos == 'windows' and have_system)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
coreaudio = not_found
|
|
|
|
|
if not get_option('coreaudio').auto() or (targetos == 'darwin' and have_system)
|
|
|
|
|
if not get_option('coreaudio').auto() or (host_os == 'darwin' and have_system)
|
|
|
|
|
coreaudio = dependency('appleframeworks', modules: 'CoreAudio',
|
|
|
|
|
required: get_option('coreaudio'))
|
|
|
|
|
endif
|
|
|
|
@ -1910,7 +1910,7 @@ has_statx = cc.has_header_symbol('sys/stat.h', 'STATX_BASIC_STATS', prefix: gnu_
|
|
|
|
|
has_statx_mnt_id = cc.has_header_symbol('sys/stat.h', 'STATX_MNT_ID', prefix: gnu_source_prefix)
|
|
|
|
|
|
|
|
|
|
have_vhost_user_blk_server = get_option('vhost_user_blk_server') \
|
|
|
|
|
.require(targetos == 'linux',
|
|
|
|
|
.require(host_os == 'linux',
|
|
|
|
|
error_message: 'vhost_user_blk_server requires linux') \
|
|
|
|
|
.require(have_vhost_user,
|
|
|
|
|
error_message: 'vhost_user_blk_server requires vhost-user support') \
|
|
|
|
@ -1938,18 +1938,18 @@ if get_option('fuse_lseek').allowed()
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
have_libvduse = (targetos == 'linux')
|
|
|
|
|
have_libvduse = (host_os == 'linux')
|
|
|
|
|
if get_option('libvduse').enabled()
|
|
|
|
|
if targetos != 'linux'
|
|
|
|
|
if host_os != 'linux'
|
|
|
|
|
error('libvduse requires linux')
|
|
|
|
|
endif
|
|
|
|
|
elif get_option('libvduse').disabled()
|
|
|
|
|
have_libvduse = false
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
have_vduse_blk_export = (have_libvduse and targetos == 'linux')
|
|
|
|
|
have_vduse_blk_export = (have_libvduse and host_os == 'linux')
|
|
|
|
|
if get_option('vduse_blk_export').enabled()
|
|
|
|
|
if targetos != 'linux'
|
|
|
|
|
if host_os != 'linux'
|
|
|
|
|
error('vduse_blk_export requires linux')
|
|
|
|
|
elif not have_libvduse
|
|
|
|
|
error('vduse_blk_export requires libvduse support')
|
|
|
|
@ -2017,7 +2017,7 @@ if have_system
|
|
|
|
|
# Default to native drivers first, OSS second, SDL third
|
|
|
|
|
audio_drivers_priority = \
|
|
|
|
|
[ 'pa', 'coreaudio', 'dsound', 'sndio', 'oss' ] + \
|
|
|
|
|
(targetos == 'linux' ? [] : [ 'sdl' ])
|
|
|
|
|
(host_os == 'linux' ? [] : [ 'sdl' ])
|
|
|
|
|
audio_drivers_default = []
|
|
|
|
|
foreach k: audio_drivers_priority
|
|
|
|
|
if audio_drivers_available[k]
|
|
|
|
@ -2038,7 +2038,7 @@ endif
|
|
|
|
|
config_host_data.set('CONFIG_AUDIO_DRIVERS',
|
|
|
|
|
'"' + '", "'.join(audio_drivers_selected) + '", ')
|
|
|
|
|
|
|
|
|
|
have_host_block_device = (targetos != 'darwin' or
|
|
|
|
|
have_host_block_device = (host_os != 'darwin' or
|
|
|
|
|
cc.has_header('IOKit/storage/IOMedia.h'))
|
|
|
|
|
|
|
|
|
|
dbus_display = get_option('dbus_display') \
|
|
|
|
@ -2049,17 +2049,17 @@ dbus_display = get_option('dbus_display') \
|
|
|
|
|
.allowed()
|
|
|
|
|
|
|
|
|
|
have_virtfs = get_option('virtfs') \
|
|
|
|
|
.require(targetos == 'linux' or targetos == 'darwin',
|
|
|
|
|
.require(host_os == 'linux' or host_os == 'darwin',
|
|
|
|
|
error_message: 'virtio-9p (virtfs) requires Linux or macOS') \
|
|
|
|
|
.require(targetos == 'linux' or cc.has_function('pthread_fchdir_np'),
|
|
|
|
|
.require(host_os == 'linux' or cc.has_function('pthread_fchdir_np'),
|
|
|
|
|
error_message: 'virtio-9p (virtfs) on macOS requires the presence of pthread_fchdir_np') \
|
|
|
|
|
.require(targetos == 'darwin' or libattr.found(),
|
|
|
|
|
.require(host_os == 'darwin' or libattr.found(),
|
|
|
|
|
error_message: 'virtio-9p (virtfs) on Linux requires libattr-devel') \
|
|
|
|
|
.disable_auto_if(not have_tools and not have_system) \
|
|
|
|
|
.allowed()
|
|
|
|
|
|
|
|
|
|
have_virtfs_proxy_helper = get_option('virtfs_proxy_helper') \
|
|
|
|
|
.require(targetos != 'darwin', error_message: 'the virtfs proxy helper is incompatible with macOS') \
|
|
|
|
|
.require(host_os != 'darwin', error_message: 'the virtfs proxy helper is incompatible with macOS') \
|
|
|
|
|
.require(have_virtfs, error_message: 'the virtfs proxy helper requires that virtfs is enabled') \
|
|
|
|
|
.disable_auto_if(not have_tools) \
|
|
|
|
|
.require(libcap_ng.found(), error_message: 'the virtfs proxy helper requires libcap-ng') \
|
|
|
|
@ -2114,12 +2114,12 @@ if enable_modules
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
have_slirp_smbd = get_option('slirp_smbd') \
|
|
|
|
|
.require(targetos != 'windows', error_message: 'Host smbd not supported on this platform.') \
|
|
|
|
|
.require(host_os != 'windows', error_message: 'Host smbd not supported on this platform.') \
|
|
|
|
|
.allowed()
|
|
|
|
|
if have_slirp_smbd
|
|
|
|
|
smbd_path = get_option('smbd')
|
|
|
|
|
if smbd_path == ''
|
|
|
|
|
smbd_path = (targetos == 'sunos' ? '/usr/sfw/sbin/smbd' : '/usr/sbin/smbd')
|
|
|
|
|
smbd_path = (host_os == 'sunos' ? '/usr/sfw/sbin/smbd' : '/usr/sbin/smbd')
|
|
|
|
|
endif
|
|
|
|
|
config_host_data.set_quoted('CONFIG_SMBD_COMMAND', smbd_path)
|
|
|
|
|
endif
|
|
|
|
@ -2127,7 +2127,7 @@ endif
|
|
|
|
|
config_host_data.set('HOST_' + host_arch.to_upper(), 1)
|
|
|
|
|
|
|
|
|
|
kvm_targets_c = '""'
|
|
|
|
|
if get_option('kvm').allowed() and targetos == 'linux'
|
|
|
|
|
if get_option('kvm').allowed() and host_os == 'linux'
|
|
|
|
|
kvm_targets_c = '"' + '" ,"'.join(kvm_targets) + '"'
|
|
|
|
|
endif
|
|
|
|
|
config_host_data.set('CONFIG_KVM_TARGETS', kvm_targets_c)
|
|
|
|
@ -2140,16 +2140,16 @@ config_host_data.set('CONFIG_MODULE_UPGRADES', get_option('module_upgrades'))
|
|
|
|
|
config_host_data.set('CONFIG_ATTR', libattr.found())
|
|
|
|
|
config_host_data.set('CONFIG_BDRV_WHITELIST_TOOLS', get_option('block_drv_whitelist_in_tools'))
|
|
|
|
|
config_host_data.set('CONFIG_BRLAPI', brlapi.found())
|
|
|
|
|
config_host_data.set('CONFIG_BSD', targetos in bsd_oses)
|
|
|
|
|
config_host_data.set('CONFIG_BSD', host_os in bsd_oses)
|
|
|
|
|
config_host_data.set('CONFIG_CAPSTONE', capstone.found())
|
|
|
|
|
config_host_data.set('CONFIG_COCOA', cocoa.found())
|
|
|
|
|
config_host_data.set('CONFIG_DARWIN', targetos == 'darwin')
|
|
|
|
|
config_host_data.set('CONFIG_DARWIN', host_os == 'darwin')
|
|
|
|
|
config_host_data.set('CONFIG_FUZZ', get_option('fuzzing'))
|
|
|
|
|
config_host_data.set('CONFIG_GCOV', get_option('b_coverage'))
|
|
|
|
|
config_host_data.set('CONFIG_LIBUDEV', libudev.found())
|
|
|
|
|
config_host_data.set('CONFIG_LINUX', targetos == 'linux')
|
|
|
|
|
config_host_data.set('CONFIG_POSIX', targetos != 'windows')
|
|
|
|
|
config_host_data.set('CONFIG_WIN32', targetos == 'windows')
|
|
|
|
|
config_host_data.set('CONFIG_LINUX', host_os == 'linux')
|
|
|
|
|
config_host_data.set('CONFIG_POSIX', host_os != 'windows')
|
|
|
|
|
config_host_data.set('CONFIG_WIN32', host_os == 'windows')
|
|
|
|
|
config_host_data.set('CONFIG_LZO', lzo.found())
|
|
|
|
|
config_host_data.set('CONFIG_MPATH', mpathpersist.found())
|
|
|
|
|
config_host_data.set('CONFIG_BLKIO', blkio.found())
|
|
|
|
@ -2207,7 +2207,7 @@ endif
|
|
|
|
|
config_host_data.set('CONFIG_PIXMAN', pixman.found())
|
|
|
|
|
config_host_data.set('CONFIG_SLIRP', slirp.found())
|
|
|
|
|
config_host_data.set('CONFIG_SNAPPY', snappy.found())
|
|
|
|
|
config_host_data.set('CONFIG_SOLARIS', targetos == 'sunos')
|
|
|
|
|
config_host_data.set('CONFIG_SOLARIS', host_os == 'sunos')
|
|
|
|
|
if get_option('tcg').allowed()
|
|
|
|
|
config_host_data.set('CONFIG_TCG', 1)
|
|
|
|
|
config_host_data.set('CONFIG_TCG_INTERPRETER', tcg_arch == 'tci')
|
|
|
|
@ -2308,7 +2308,7 @@ config_host_data.set('HAVE_PTY_H', cc.has_header('pty.h'))
|
|
|
|
|
config_host_data.set('HAVE_SYS_DISK_H', cc.has_header('sys/disk.h'))
|
|
|
|
|
config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_header('sys/ioccom.h'))
|
|
|
|
|
config_host_data.set('HAVE_SYS_KCOV_H', cc.has_header('sys/kcov.h'))
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
config_host_data.set('HAVE_AFUNIX_H', cc.has_header('afunix.h'))
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -2690,7 +2690,7 @@ config_host_data.set('CONFIG_USBFS', have_linux_user and cc.compiles('''
|
|
|
|
|
int main(void) { return 0; }'''))
|
|
|
|
|
|
|
|
|
|
have_keyring = get_option('keyring') \
|
|
|
|
|
.require(targetos == 'linux', error_message: 'keyring is only available on Linux') \
|
|
|
|
|
.require(host_os == 'linux', error_message: 'keyring is only available on Linux') \
|
|
|
|
|
.require(cc.compiles('''
|
|
|
|
|
#include <errno.h>
|
|
|
|
|
#include <asm/unistd.h>
|
|
|
|
@ -2799,9 +2799,9 @@ endif
|
|
|
|
|
|
|
|
|
|
if get_option('membarrier').disabled()
|
|
|
|
|
have_membarrier = false
|
|
|
|
|
elif targetos == 'windows'
|
|
|
|
|
elif host_os == 'windows'
|
|
|
|
|
have_membarrier = true
|
|
|
|
|
elif targetos == 'linux'
|
|
|
|
|
elif host_os == 'linux'
|
|
|
|
|
have_membarrier = cc.compiles('''
|
|
|
|
|
#include <linux/membarrier.h>
|
|
|
|
|
#include <sys/syscall.h>
|
|
|
|
@ -2838,7 +2838,7 @@ config_host_data.set('CONFIG_AF_VSOCK', cc.has_header_symbol(
|
|
|
|
|
|
|
|
|
|
have_vss = false
|
|
|
|
|
have_vss_sdk = false # old xp/2003 SDK
|
|
|
|
|
if targetos == 'windows' and 'cpp' in all_languages
|
|
|
|
|
if host_os == 'windows' and 'cpp' in all_languages
|
|
|
|
|
have_vss = cxx.compiles('''
|
|
|
|
|
#define __MIDL_user_allocate_free_DEFINED__
|
|
|
|
|
#include <vss.h>
|
|
|
|
@ -2849,7 +2849,7 @@ config_host_data.set('HAVE_VSS_SDK', have_vss_sdk)
|
|
|
|
|
|
|
|
|
|
# Older versions of MinGW do not import _lock_file and _unlock_file properly.
|
|
|
|
|
# This was fixed for v6.0.0 with commit b48e3ac8969d.
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
config_host_data.set('HAVE__LOCK_FILE', cc.links('''
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
int main(void) {
|
|
|
|
@ -2859,7 +2859,7 @@ if targetos == 'windows'
|
|
|
|
|
}''', name: '_lock_file and _unlock_file'))
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
mingw_has_setjmp_longjmp = cc.links('''
|
|
|
|
|
#include <setjmp.h>
|
|
|
|
|
int main(void) {
|
|
|
|
@ -2929,7 +2929,7 @@ host_kconfig = \
|
|
|
|
|
(have_vhost_vdpa ? ['CONFIG_VHOST_VDPA=y'] : []) + \
|
|
|
|
|
(have_vhost_kernel ? ['CONFIG_VHOST_KERNEL=y'] : []) + \
|
|
|
|
|
(have_virtfs ? ['CONFIG_VIRTFS=y'] : []) + \
|
|
|
|
|
(targetos == 'linux' ? ['CONFIG_LINUX=y'] : []) + \
|
|
|
|
|
(host_os == 'linux' ? ['CONFIG_LINUX=y'] : []) + \
|
|
|
|
|
(have_pvrdma ? ['CONFIG_PVRDMA=y'] : []) + \
|
|
|
|
|
(multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=y'] : []) + \
|
|
|
|
|
(vfio_user_server_allowed ? ['CONFIG_VFIO_USER_SERVER_ALLOWED=y'] : []) + \
|
|
|
|
@ -2943,7 +2943,7 @@ fdt_required = []
|
|
|
|
|
foreach target : target_dirs
|
|
|
|
|
config_target = { 'TARGET_NAME': target.split('-')[0] }
|
|
|
|
|
if target.endswith('linux-user')
|
|
|
|
|
if targetos != 'linux'
|
|
|
|
|
if host_os != 'linux'
|
|
|
|
|
if default_targets
|
|
|
|
|
continue
|
|
|
|
|
endif
|
|
|
|
@ -2951,7 +2951,7 @@ foreach target : target_dirs
|
|
|
|
|
endif
|
|
|
|
|
config_target += { 'CONFIG_LINUX_USER': 'y' }
|
|
|
|
|
elif target.endswith('bsd-user')
|
|
|
|
|
if targetos not in bsd_oses
|
|
|
|
|
if host_os not in bsd_oses
|
|
|
|
|
if default_targets
|
|
|
|
|
continue
|
|
|
|
|
endif
|
|
|
|
@ -3132,7 +3132,7 @@ endif
|
|
|
|
|
config_host_data.set('CONFIG_FDT', fdt.found())
|
|
|
|
|
|
|
|
|
|
vhost_user = not_found
|
|
|
|
|
if targetos == 'linux' and have_vhost_user
|
|
|
|
|
if host_os == 'linux' and have_vhost_user
|
|
|
|
|
libvhost_user = subproject('libvhost-user')
|
|
|
|
|
vhost_user = libvhost_user.get_variable('vhost_user_dep')
|
|
|
|
|
endif
|
|
|
|
@ -3456,7 +3456,7 @@ if have_block
|
|
|
|
|
|
|
|
|
|
# os-posix.c contains POSIX-specific functions used by qemu-storage-daemon,
|
|
|
|
|
# os-win32.c does not
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
system_ss.add(files('os-win32.c'))
|
|
|
|
|
else
|
|
|
|
|
blockdev_ss.add(files('os-posix.c'))
|
|
|
|
@ -3744,7 +3744,7 @@ common_all = static_library('common',
|
|
|
|
|
|
|
|
|
|
feature_to_c = find_program('scripts/feature_to_c.py')
|
|
|
|
|
|
|
|
|
|
if targetos == 'darwin'
|
|
|
|
|
if host_os == 'darwin'
|
|
|
|
|
entitlement = find_program('scripts/entitlement.sh')
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -3761,7 +3761,7 @@ foreach target : target_dirs
|
|
|
|
|
link_args = emulator_link_args
|
|
|
|
|
|
|
|
|
|
target_inc = [include_directories('target' / config_target['TARGET_BASE_ARCH'])]
|
|
|
|
|
if targetos == 'linux'
|
|
|
|
|
if host_os == 'linux'
|
|
|
|
|
target_inc += include_directories('linux-headers', is_system: true)
|
|
|
|
|
endif
|
|
|
|
|
if target.endswith('-softmmu')
|
|
|
|
@ -3791,7 +3791,7 @@ foreach target : target_dirs
|
|
|
|
|
endif
|
|
|
|
|
if 'CONFIG_BSD_USER' in config_target
|
|
|
|
|
base_dir = 'bsd-user'
|
|
|
|
|
target_inc += include_directories('bsd-user/' / targetos)
|
|
|
|
|
target_inc += include_directories('bsd-user/' / host_os)
|
|
|
|
|
target_inc += include_directories('bsd-user/host/' / host_arch)
|
|
|
|
|
dir = base_dir / abi
|
|
|
|
|
arch_srcs += files(dir / 'signal.c', dir / 'target_arch_cpu.c')
|
|
|
|
@ -3848,7 +3848,7 @@ foreach target : target_dirs
|
|
|
|
|
'sources': files('system/main.c'),
|
|
|
|
|
'dependencies': []
|
|
|
|
|
}]
|
|
|
|
|
if targetos == 'windows' and (sdl.found() or gtk.found())
|
|
|
|
|
if host_os == 'windows' and (sdl.found() or gtk.found())
|
|
|
|
|
execs += [{
|
|
|
|
|
'name': 'qemu-system-' + target_name + 'w',
|
|
|
|
|
'win_subsystem': 'windows',
|
|
|
|
@ -3875,7 +3875,7 @@ foreach target : target_dirs
|
|
|
|
|
endif
|
|
|
|
|
foreach exe: execs
|
|
|
|
|
exe_name = exe['name']
|
|
|
|
|
if targetos == 'darwin'
|
|
|
|
|
if host_os == 'darwin'
|
|
|
|
|
exe_name += '-unsigned'
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -3888,7 +3888,7 @@ foreach target : target_dirs
|
|
|
|
|
link_args: link_args,
|
|
|
|
|
win_subsystem: exe['win_subsystem'])
|
|
|
|
|
|
|
|
|
|
if targetos == 'darwin'
|
|
|
|
|
if host_os == 'darwin'
|
|
|
|
|
icon = 'pc-bios/qemu.rsrc'
|
|
|
|
|
build_input = [emulator, files(icon)]
|
|
|
|
|
install_input = [
|
|
|
|
@ -3944,7 +3944,7 @@ endforeach
|
|
|
|
|
|
|
|
|
|
if get_option('plugins')
|
|
|
|
|
install_headers('include/qemu/qemu-plugin.h')
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
# On windows, we want to deliver the qemu_plugin_api.lib file in the qemu installer,
|
|
|
|
|
# so that plugin authors can compile against it.
|
|
|
|
|
install_data(win32_qemu_plugin_api_lib, install_dir: 'lib')
|
|
|
|
@ -3985,7 +3985,7 @@ if have_tools
|
|
|
|
|
subdir('contrib/vhost-user-scsi')
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
if targetos == 'linux'
|
|
|
|
|
if host_os == 'linux'
|
|
|
|
|
executable('qemu-bridge-helper', files('qemu-bridge-helper.c'),
|
|
|
|
|
dependencies: [qemuutil, libcap_ng],
|
|
|
|
|
install: true,
|
|
|
|
@ -4052,7 +4052,7 @@ summary(summary_info, bool_yn: true, section: 'Build environment')
|
|
|
|
|
# Directories
|
|
|
|
|
summary_info += {'Install prefix': get_option('prefix')}
|
|
|
|
|
summary_info += {'BIOS directory': qemu_datadir}
|
|
|
|
|
pathsep = targetos == 'windows' ? ';' : ':'
|
|
|
|
|
pathsep = host_os == 'windows' ? ';' : ':'
|
|
|
|
|
summary_info += {'firmware path': pathsep.join(get_option('qemu_firmwarepath'))}
|
|
|
|
|
summary_info += {'binary directory': get_option('prefix') / get_option('bindir')}
|
|
|
|
|
summary_info += {'library directory': get_option('prefix') / get_option('libdir')}
|
|
|
|
@ -4060,7 +4060,7 @@ summary_info += {'module directory': qemu_moddir}
|
|
|
|
|
summary_info += {'libexec directory': get_option('prefix') / get_option('libexecdir')}
|
|
|
|
|
summary_info += {'include directory': get_option('prefix') / get_option('includedir')}
|
|
|
|
|
summary_info += {'config directory': get_option('prefix') / get_option('sysconfdir')}
|
|
|
|
|
if targetos != 'windows'
|
|
|
|
|
if host_os != 'windows'
|
|
|
|
|
summary_info += {'local state directory': get_option('prefix') / get_option('localstatedir')}
|
|
|
|
|
summary_info += {'Manual directory': get_option('prefix') / get_option('mandir')}
|
|
|
|
|
else
|
|
|
|
@ -4083,7 +4083,7 @@ if config_host.has_key('GDB')
|
|
|
|
|
endif
|
|
|
|
|
summary_info += {'iasl': iasl}
|
|
|
|
|
summary_info += {'genisoimage': config_host['GENISOIMAGE']}
|
|
|
|
|
if targetos == 'windows' and have_ga
|
|
|
|
|
if host_os == 'windows' and have_ga
|
|
|
|
|
summary_info += {'wixl': wixl}
|
|
|
|
|
endif
|
|
|
|
|
if slirp.found() and have_system
|
|
|
|
@ -4181,7 +4181,7 @@ if get_option('cfi')
|
|
|
|
|
endif
|
|
|
|
|
summary_info += {'strip binaries': get_option('strip')}
|
|
|
|
|
summary_info += {'sparse': sparse}
|
|
|
|
|
summary_info += {'mingw32 support': targetos == 'windows'}
|
|
|
|
|
summary_info += {'mingw32 support': host_os == 'windows'}
|
|
|
|
|
summary(summary_info, bool_yn: true, section: 'Compilation')
|
|
|
|
|
|
|
|
|
|
# snarf the cross-compilation information for tests
|
|
|
|
@ -4280,7 +4280,7 @@ summary(summary_info, bool_yn: true, section: 'Crypto')
|
|
|
|
|
|
|
|
|
|
# UI
|
|
|
|
|
summary_info = {}
|
|
|
|
|
if targetos == 'darwin'
|
|
|
|
|
if host_os == 'darwin'
|
|
|
|
|
summary_info += {'Cocoa support': cocoa}
|
|
|
|
|
endif
|
|
|
|
|
summary_info += {'SDL support': sdl}
|
|
|
|
@ -4304,15 +4304,15 @@ summary(summary_info, bool_yn: true, section: 'User interface')
|
|
|
|
|
|
|
|
|
|
# Audio backends
|
|
|
|
|
summary_info = {}
|
|
|
|
|
if targetos not in ['darwin', 'haiku', 'windows']
|
|
|
|
|
if host_os not in ['darwin', 'haiku', 'windows']
|
|
|
|
|
summary_info += {'OSS support': oss}
|
|
|
|
|
summary_info += {'sndio support': sndio}
|
|
|
|
|
elif targetos == 'darwin'
|
|
|
|
|
elif host_os == 'darwin'
|
|
|
|
|
summary_info += {'CoreAudio support': coreaudio}
|
|
|
|
|
elif targetos == 'windows'
|
|
|
|
|
elif host_os == 'windows'
|
|
|
|
|
summary_info += {'DirectSound support': dsound}
|
|
|
|
|
endif
|
|
|
|
|
if targetos == 'linux'
|
|
|
|
|
if host_os == 'linux'
|
|
|
|
|
summary_info += {'ALSA support': alsa}
|
|
|
|
|
summary_info += {'PulseAudio support': pulse}
|
|
|
|
|
endif
|
|
|
|
@ -4322,7 +4322,7 @@ summary(summary_info, bool_yn: true, section: 'Audio backends')
|
|
|
|
|
|
|
|
|
|
# Network backends
|
|
|
|
|
summary_info = {}
|
|
|
|
|
if targetos == 'darwin'
|
|
|
|
|
if host_os == 'darwin'
|
|
|
|
|
summary_info += {'vmnet.framework support': vmnet}
|
|
|
|
|
endif
|
|
|
|
|
summary_info += {'AF_XDP support': libxdp}
|
|
|
|
@ -4359,7 +4359,7 @@ summary_info += {'OpenGL support (epoxy)': opengl}
|
|
|
|
|
summary_info += {'GBM': gbm}
|
|
|
|
|
summary_info += {'libiscsi support': libiscsi}
|
|
|
|
|
summary_info += {'libnfs support': libnfs}
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if host_os == 'windows'
|
|
|
|
|
if have_ga
|
|
|
|
|
summary_info += {'QGA VSS support': have_qga_vss}
|
|
|
|
|
endif
|
|
|
|
@ -4401,20 +4401,20 @@ if host_arch == 'unknown'
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
if not supported_oses.contains(targetos)
|
|
|
|
|
if not supported_oses.contains(host_os)
|
|
|
|
|
message()
|
|
|
|
|
warning('UNSUPPORTED HOST OS')
|
|
|
|
|
message()
|
|
|
|
|
message('Support for host OS ' + targetos + 'is not currently maintained.')
|
|
|
|
|
message('Support for host OS ' + host_os + 'is not currently maintained.')
|
|
|
|
|
message('configure has succeeded and you can continue to build, but')
|
|
|
|
|
message('the QEMU project does not guarantee that QEMU will compile or')
|
|
|
|
|
message('work on this operating system. You can help by volunteering')
|
|
|
|
|
message('to maintain it and providing a build host for our continuous')
|
|
|
|
|
message('integration setup. This will ensure that future versions of QEMU')
|
|
|
|
|
message('will keep working on ' + targetos + '.')
|
|
|
|
|
message('will keep working on ' + host_os + '.')
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
if host_arch == 'unknown' or not supported_oses.contains(targetos)
|
|
|
|
|
if host_arch == 'unknown' or not supported_oses.contains(host_os)
|
|
|
|
|
message()
|
|
|
|
|
message('If you want to help supporting QEMU on this platform, please')
|
|
|
|
|
message('contact the developers at qemu-devel@nongnu.org.')
|
|
|
|
@ -4428,8 +4428,8 @@ if get_option('relocatable') and \
|
|
|
|
|
warning('bindir not included within prefix, the installation will not be relocatable.')
|
|
|
|
|
actually_reloc = false
|
|
|
|
|
endif
|
|
|
|
|
if not actually_reloc and (targetos == 'windows' or get_option('relocatable'))
|
|
|
|
|
if targetos == 'windows'
|
|
|
|
|
if not actually_reloc and (host_os == 'windows' or get_option('relocatable'))
|
|
|
|
|
if host_os == 'windows'
|
|