mirror of
https://github.com/mborgerson/xemu.git
synced 2025-12-01 16:10:01 +00:00
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
* x86: re-enable rng seeding via SetupData * x86: reinitialize RNG seed on system reboot and after kernel load * qboot: rebuild based on latest commit * watchdog: remove -watchdog option * update Meson to 0.61.5, move more configure tests # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmM4kiAUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroNfbgf+IHhIHVxtBVWqayVRkwpQC+oAFV/V # 4bvJI90rHmTNPA36n1ocUmQmXyNVTQFW/t7mlln5BhOwNzxnQycVe2idfMa6ntkb # hHpe2NbICF9Crzb9BkK4wnaBLwEWA/X3WlnCqPYtxlxEhjmxu+HPtF7vm12OTkOV # JevH3EN1gMiAfMo+gcRBlrwb5kntLm3nGZTCd218Ope22PoU6MVvxb9ivieJG8kD # xDUGPQNU0mB9pypwLYZAqmu34xJ8Stly9UuJ1M2iQoawIs7W2Qy7svpOrsKZ3W/7 # D7J18QLAjI7Hq6rUWPgK5ugnUvVMdaTXM7MZSuIDIxRJuj5YryIsHRPybQ== # =HEmX # -----END PGP SIGNATURE----- # gpg: Signature made Sat 01 Oct 2022 15:16:48 EDT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: x86: re-initialize RNG seed when selecting kernel target/i386/kvm: fix kvmclock_current_nsec: Assertion `time.tsc_timestamp <= migration_tsc' failed configure, meson: move linker flag detection to meson configure, meson: move C++ compiler detection to meson.build meson: multiple names can be passed to dependency() meson: require 0.61.3 meson: -display dbus and CFI are incompatible ui: fix path to dbus-display1.h watchdog: remove -watchdog option configure: do not invoke as/ld directly for pc-bios/optionrom qboot: rebuild based on latest commit x86: re-enable rng seeding via SetupData x86: reinitialize RNG seed on system reboot x86: use typedef for SetupData struct x86: return modified setup_data only if read as memory, not as file Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
74
meson.build
74
meson.build
@ -1,4 +1,4 @@
|
||||
project('qemu', ['c'], meson_version: '>=0.59.3',
|
||||
project('qemu', ['c'], meson_version: '>=0.61.3',
|
||||
default_options: ['warning_level=1', 'c_std=gnu11', 'cpp_std=gnu++11', 'b_colorout=auto',
|
||||
'b_staticpic=false', 'stdsplit=false', 'optimization=2', 'b_pie=true'],
|
||||
version: files('VERSION'))
|
||||
@ -180,10 +180,17 @@ endif
|
||||
##################
|
||||
|
||||
qemu_cflags = config_host['QEMU_CFLAGS'].split()
|
||||
qemu_cxxflags = config_host['QEMU_CXXFLAGS'].split()
|
||||
qemu_objcflags = config_host['QEMU_OBJCFLAGS'].split()
|
||||
qemu_ldflags = config_host['QEMU_LDFLAGS'].split()
|
||||
|
||||
if enable_static
|
||||
qemu_ldflags += get_option('b_pie') ? '-static-pie' : '-static'
|
||||
endif
|
||||
|
||||
# Detect support for PT_GNU_RELRO + DT_BIND_NOW.
|
||||
# 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'
|
||||
qemu_ldflags += cc.get_supported_link_arguments('-Wl,--no-seh', '-Wl,--nxcompat')
|
||||
# Disable ASLR for debug builds to allow debugging with gdb
|
||||
@ -194,7 +201,6 @@ endif
|
||||
|
||||
if get_option('gprof')
|
||||
qemu_cflags += ['-p']
|
||||
qemu_cxxflags += ['-p']
|
||||
qemu_objcflags += ['-p']
|
||||
qemu_ldflags += ['-p']
|
||||
endif
|
||||
@ -240,8 +246,38 @@ if get_option('fuzzing')
|
||||
endif
|
||||
|
||||
add_global_arguments(qemu_cflags, native: false, language: ['c'])
|
||||
add_global_arguments(qemu_cxxflags, native: false, language: ['cpp'])
|
||||
add_global_arguments(qemu_objcflags, native: false, language: ['objc'])
|
||||
|
||||
# Check that the C++ compiler exists and works with the C compiler.
|
||||
link_language = 'c'
|
||||
linker = cc
|
||||
qemu_cxxflags = []
|
||||
if add_languages('cpp', required: false, native: false)
|
||||
cxx = meson.get_compiler('cpp')
|
||||
add_global_arguments(['-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-D__STDC_FORMAT_MACROS'],
|
||||
native: false, language: 'cpp')
|
||||
foreach k: qemu_cflags
|
||||
if k not in ['-Wstrict-prototypes', '-Wmissing-prototypes', '-Wnested-externs',
|
||||
'-Wold-style-declaration', '-Wold-style-definition', '-Wredundant-decls']
|
||||
qemu_cxxflags += [k]
|
||||
endif
|
||||
endforeach
|
||||
add_global_arguments(qemu_cxxflags, native: false, language: 'cpp')
|
||||
|
||||
if cxx.links(files('scripts/main.c'), args: qemu_cflags)
|
||||
link_language = 'cpp'
|
||||
linker = cxx
|
||||
else
|
||||
message('C++ compiler does not work with C compiler')
|
||||
message('Disabling C++-specific optional code')
|
||||
endif
|
||||
endif
|
||||
|
||||
# Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
|
||||
if targetos != 'sunos' and not config_host.has_key('CONFIG_TSAN')
|
||||
qemu_ldflags += linker.get_supported_link_arguments('-Wl,--warn-common')
|
||||
endif
|
||||
|
||||
add_global_link_arguments(qemu_ldflags, native: false, language: ['c', 'cpp', 'objc'])
|
||||
|
||||
if targetos == 'linux'
|
||||
@ -255,14 +291,6 @@ add_project_arguments('-iquote', '.',
|
||||
'-iquote', meson.current_source_dir() / 'include',
|
||||
language: ['c', 'cpp', 'objc'])
|
||||
|
||||
link_language = meson.get_external_property('link_language', 'cpp')
|
||||
if link_language == 'cpp'
|
||||
add_languages('cpp', required: true, native: false)
|
||||
cxx = meson.get_compiler('cpp')
|
||||
linker = cxx
|
||||
else
|
||||
linker = cc
|
||||
endif
|
||||
if host_machine.system() == 'darwin'
|
||||
add_languages('objc', required: false, native: false)
|
||||
endif
|
||||
@ -487,6 +515,7 @@ meson.override_dependency('glib-2.0', glib)
|
||||
|
||||
gio = not_found
|
||||
gdbus_codegen = not_found
|
||||
gdbus_codegen_error = '@0@ requires gdbus-codegen, please install libgio'
|
||||
if not get_option('gio').auto() or have_system
|
||||
gio = dependency('gio-2.0', required: get_option('gio'),
|
||||
method: 'pkg-config', kwargs: static_kwargs)
|
||||
@ -511,6 +540,10 @@ if not get_option('gio').auto() or have_system
|
||||
version: gio.version())
|
||||
endif
|
||||
endif
|
||||
if gdbus_codegen.found() and get_option('cfi')
|
||||
gdbus_codegen = not_found
|
||||
gdbus_codegen_error = '@0@ uses gdbus-codegen, which does not support control flow integrity'
|
||||
endif
|
||||
|
||||
lttng = not_found
|
||||
if 'ust' in get_option('trace_backends')
|
||||
@ -844,14 +877,10 @@ if have_system and get_option('curses').allowed()
|
||||
}'''
|
||||
|
||||
curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncursesw']
|
||||
foreach curses_dep : curses_dep_list
|
||||
if not curses.found()
|
||||
curses = dependency(curses_dep,
|
||||
required: false,
|
||||
method: 'pkg-config',
|
||||
kwargs: static_kwargs)
|
||||
endif
|
||||
endforeach
|
||||
curses = dependency(curses_dep_list,
|
||||
required: false,
|
||||
method: 'pkg-config',
|
||||
kwargs: static_kwargs)
|
||||
msg = get_option('curses').enabled() ? 'curses library not found' : ''
|
||||
curses_compile_args = ['-DNCURSES_WIDECHAR=1']
|
||||
if curses.found()
|
||||
@ -1689,14 +1718,11 @@ endif
|
||||
have_host_block_device = (targetos != 'darwin' or
|
||||
cc.has_header('IOKit/storage/IOMedia.h'))
|
||||
|
||||
# FIXME enable_modules shouldn't be necessary, but: https://github.com/mesonbuild/meson/issues/8333
|
||||
dbus_display = get_option('dbus_display') \
|
||||
.require(gio.version().version_compare('>=2.64'),
|
||||
error_message: '-display dbus requires glib>=2.64') \
|
||||
.require(enable_modules,
|
||||
error_message: '-display dbus requires --enable-modules') \
|
||||
.require(gdbus_codegen.found(),
|
||||
error_message: '-display dbus requires gdbus-codegen') \
|
||||
error_message: gdbus_codegen_error.format('-display dbus')) \
|
||||
.require(opengl.found() and gbm.found(),
|
||||
error_message: '-display dbus requires epoxy/egl and gbm') \
|
||||
.allowed()
|
||||
|
||||
Reference in New Issue
Block a user