From bd5f973ac22046d1cd532847630e9ee10ebd8d76 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Tue, 25 Aug 2020 08:49:53 +0200 Subject: trace: fix creation of systemtap files The "exe_name" variable was renamed to exe['name'], so systemtap files fail to build. Reported-by: Peter Maydell Signed-off-by: Stefan Hajnoczi Signed-off-by: Paolo Bonzini --- meson.build | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index f0fe5f8..f2aa5a7 100644 --- a/meson.build +++ b/meson.build @@ -1029,14 +1029,14 @@ foreach target : target_dirs if 'CONFIG_TRACE_SYSTEMTAP' in config_host foreach stp: [ - {'ext': '.stp-build', 'fmt': 'stap', 'bin': meson.current_build_dir() / exe_name, 'install': false}, - {'ext': '.stp', 'fmt': 'stap', 'bin': get_option('prefix') / get_option('bindir') / exe_name, 'install': true}, + {'ext': '.stp-build', 'fmt': 'stap', 'bin': meson.current_build_dir() / exe['name'], 'install': false}, + {'ext': '.stp', 'fmt': 'stap', 'bin': get_option('prefix') / get_option('bindir') / exe['name'], 'install': true}, {'ext': '-simpletrace.stp', 'fmt': 'simpletrace-stap', 'bin': '', 'install': true}, {'ext': '-log.stp', 'fmt': 'log-stap', 'bin': '', 'install': true}, ] - custom_target(exe_name + stp['ext'], + custom_target(exe['name'] + stp['ext'], input: trace_events_all, - output: exe_name + stp['ext'], + output: exe['name'] + stp['ext'], capture: true, install: stp['install'], install_dir: config_host['qemu_datadir'] / '../systemtap/tapset', -- cgit v1.1 From 5f7e966b2748cab6f734a8b7347be8f77a35e2b3 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Sun, 23 Aug 2020 10:32:15 +0200 Subject: meson: Build qemu-nbd on macOS again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before switching to the meson build system, we used to compile qemu-nbd for macOS, too, which is especially important for running the iotests there. Commit b7c70bf2c5 disabled it by accident, since it did not take into consideration that the $bsd variable in the configure script was also set to "yes" on macOS. Fix it by enabling qemu-nbd on all systems but Windows now instead (which was likely the original intention of the old code in the configure script). Fixes: b7c70bf2c5 ("meson: qemu-{img,io,nbd}") Signed-off-by: Thomas Huth Acked-by: Eric Blake Reviewed-by: Marc-André Lureau Signed-off-by: Paolo Bonzini --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index f2aa5a7..38d0abc 100644 --- a/meson.build +++ b/meson.build @@ -1081,7 +1081,7 @@ if have_tools qemu_io = executable('qemu-io', files('qemu-io.c'), dependencies: [block, qemuutil], install: true) qemu_block_tools += [qemu_img, qemu_io] - if targetos == 'linux' or targetos == 'sunos' or targetos.endswith('bsd') + if targetos != 'windows' qemu_nbd = executable('qemu-nbd', files('qemu-nbd.c'), dependencies: [block, qemuutil], install: true) qemu_block_tools += [qemu_nbd] -- cgit v1.1 From 568ac779a4111484d9bf9fa7364a62d5d5cf9079 Mon Sep 17 00:00:00 2001 From: Roman Bolshakov Date: Sun, 23 Aug 2020 12:05:47 +0300 Subject: meson: Don't make object files for dtrace on macOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dtrace on macOS uses unresolved symbols with a special prefix to define probes [1], only headers should be generated for USDT (dtrace(1)). But it doesn't support backwards compatible no-op -G flag [2] and implicit build rules fail. 1. https://markmail.org/message/6grq2ygr5nwdwsnb 2. https://markmail.org/message/5xrxt2w5m42nojkz Cc: Daniel P. Berrangé Cc: Cameron Esfahani Signed-off-by: Roman Bolshakov Reviewed-by: Daniel P. Berrangé Signed-off-by: Paolo Bonzini --- trace/meson.build | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/trace/meson.build b/trace/meson.build index 56e8708..1c1fb31 100644 --- a/trace/meson.build +++ b/trace/meson.build @@ -39,12 +39,15 @@ foreach dir : [ '.' ] + trace_events_subdirs output: fmt.format('trace-dtrace', 'h'), input: trace_dtrace, command: [ 'dtrace', '-o', '@OUTPUT@', '-h', '-s', '@INPUT@' ]) - trace_dtrace_o = custom_target(fmt.format('trace-dtrace', 'o'), - output: fmt.format('trace-dtrace', 'o'), - input: trace_dtrace, - command: [ 'dtrace', '-o', '@OUTPUT@', '-G', '-s', '@INPUT@' ]) + trace_ss.add(trace_dtrace_h) + if host_machine.system() != 'darwin' + trace_dtrace_o = custom_target(fmt.format('trace-dtrace', 'o'), + output: fmt.format('trace-dtrace', 'o'), + input: trace_dtrace, + command: [ 'dtrace', '-o', '@OUTPUT@', '-G', '-s', '@INPUT@' ]) + trace_ss.add(trace_dtrace_o) + endif - trace_ss.add(trace_dtrace_h, trace_dtrace_o) genh += trace_dtrace_h endif endforeach -- cgit v1.1 From 72bfe8ea63f98bbe3e4d709462cc543fb0187d32 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Sun, 23 Aug 2020 12:26:17 +0200 Subject: scripts/qemu-version.sh: Add missing space before ']' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When configure has been run with --with-pkgversion=xyz, the shell complains about a missing ']' in this script. Fixes: 2c273f32d3 ("meson: generate qemu-version.h") Signed-off-by: Thomas Huth Reviewed-by: Marc-André Lureau Signed-off-by: Paolo Bonzini --- scripts/qemu-version.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/qemu-version.sh b/scripts/qemu-version.sh index 4847385..03128c5 100755 --- a/scripts/qemu-version.sh +++ b/scripts/qemu-version.sh @@ -6,7 +6,7 @@ dir="$1" pkgversion="$2" version="$3" -if [ -z "$pkgversion"]; then +if [ -z "$pkgversion" ]; then cd "$dir" if [ -e .git ]; then pkgversion=$(git describe --match 'v*' --dirty | echo "") -- cgit v1.1 From c7c91a749b33412fe2a0a973799b6c44a3f73613 Mon Sep 17 00:00:00 2001 From: Bruce Rogers Date: Mon, 24 Aug 2020 09:52:12 -0600 Subject: meson: Fix meson build with --enable-libdaxctl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The daxctl library needs to be linked against when daxctl is asked for in configure. Signed-off-by: Bruce Rogers Reviewed-by: Marc-André Lureau Signed-off-by: Paolo Bonzini --- configure | 1 + meson.build | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/configure b/configure index b1e1139..a3f95f2 100755 --- a/configure +++ b/configure @@ -7467,6 +7467,7 @@ fi if test "$libdaxctl" = "yes" ; then echo "CONFIG_LIBDAXCTL=y" >> $config_host_mak + echo "LIBDAXCTL_LIBS=$libdaxctl_libs" >> $config_host_mak fi if test "$bochs" = "yes" ; then diff --git a/meson.build b/meson.build index 38d0abc..b44901d 100644 --- a/meson.build +++ b/meson.build @@ -380,6 +380,10 @@ if 'CONFIG_LIBPMEM' in config_host libpmem = declare_dependency(compile_args: config_host['LIBPMEM_CFLAGS'].split(), link_args: config_host['LIBPMEM_LIBS'].split()) endif +libdaxctl = not_found +if 'CONFIG_LIBDAXCTL' in config_host + libdaxctl = declare_dependency(link_args: config_host['LIBDAXCTL_LIBS'].split()) +endif # Create config-host.h @@ -787,7 +791,7 @@ common_ss.add(files('cpus-common.c')) subdir('softmmu') -specific_ss.add(files('disas.c', 'exec.c', 'gdbstub.c'), capstone, libpmem) +specific_ss.add(files('disas.c', 'exec.c', 'gdbstub.c'), capstone, libpmem, libdaxctl) specific_ss.add(files('exec-vary.c')) specific_ss.add(when: 'CONFIG_TCG', if_true: files( 'fpu/softfloat.c', -- cgit v1.1 From 48e33de58f2d22cf7d30d3854cd0364fd809983d Mon Sep 17 00:00:00 2001 From: Bruce Rogers Date: Mon, 24 Aug 2020 09:52:36 -0600 Subject: meson: Fix chardev-baum.so name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Somehow in the conversion to meson, the module named chardev-baum got renamed to chardev-brlapi. Change it back. Signed-off-by: Bruce Rogers Reviewed-by: Marc-André Lureau Signed-off-by: Paolo Bonzini --- chardev/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chardev/meson.build b/chardev/meson.build index a46a623..7726837 100644 --- a/chardev/meson.build +++ b/chardev/meson.build @@ -39,7 +39,7 @@ chardev_modules = {} if config_host.has_key('CONFIG_BRLAPI') and sdl.found() module_ss = ss.source_set() module_ss.add(when: [sdl, brlapi], if_true: files('baum.c')) - chardev_modules += { 'brlapi': module_ss } + chardev_modules += { 'baum': module_ss } endif modules += { 'chardev': chardev_modules } -- cgit v1.1 From fb648e9cacf4209ddaa8ee67d1a87a9b78a001c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 24 Aug 2020 17:31:09 +0100 Subject: configure: default to PIE disabled on Windows platforms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If Windows EXE files are built with -pie/-fpie they will fail to launch. Historically QEMU defaulted to disabling PIE for Windows, but this setting was accidentally lost when the configure summary text was removed in commit f9332757898a764d85e19d339ec421236e885b68 Author: Paolo Bonzini Date: Mon Feb 3 13:28:38 2020 +0100 meson: move summary to meson.build Signed-off-by: Paolo Bonzini Fixes: f9332757898a764d85e19d339ec421236e885b68 Signed-off-by: Daniel P. Berrangé Reviewed-by: Marc-André Lureau Reviewed-by: Thomas Huth Signed-off-by: Paolo Bonzini --- configure | 1 + 1 file changed, 1 insertion(+) diff --git a/configure b/configure index a3f95f2..0b78577 100755 --- a/configure +++ b/configure @@ -857,6 +857,7 @@ MINGW32*) audio_drv_list="" fi supported_os="yes" + pie="no" ;; GNU/kFreeBSD) bsd="yes" -- cgit v1.1 From b7612f45da9ea3ff3488a34f2ffd39d0d94713fb Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 26 Aug 2020 08:22:58 +0200 Subject: meson: move pixman detection to meson MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When pixman is not installed (or too old), but virglrenderer is available and "configure" has been run with "--disable-system", the build currently aborts when trying to compile vhost-user-gpu (since it requires pixman). Let's skip the build of vhost-user-gpu when pixman is not installed or too old. Instead of adding CONFIG_PIXMAN, it is simpler to move the detection to pixman. Based on a patch by Thomas Huth. Fixes: 9b52b17ba5 ("configure: Allow to build tools without pixman") Reported-by: Rafael Kitover Reported-by: Philippe Mathieu-Daudé Signed-off-by: Paolo Bonzini --- configure | 21 ++------------------- contrib/vhost-user-gpu/meson.build | 3 ++- meson.build | 13 ++++++++----- ui/meson.build | 4 +++- 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/configure b/configure index 0b78577..9db9bb8 100755 --- a/configure +++ b/configure @@ -3924,20 +3924,6 @@ if test "$modules" = yes; then fi ########################################## -# pixman support probe - -if test "$softmmu" = "no"; then - pixman_cflags= - pixman_libs= -elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then - pixman_cflags=$($pkg_config --cflags pixman-1) - pixman_libs=$($pkg_config --libs pixman-1) -else - error_exit "pixman >= 0.21.8 not present." \ - "Please install the pixman devel package." -fi - -########################################## # libmpathpersist probe if test "$mpath" != "no" ; then @@ -6649,8 +6635,8 @@ echo_version() { fi } -# prepend pixman and ftd flags after all config tests are done -QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" +# prepend ftd flags after all config tests are done +QEMU_CFLAGS="$fdt_cflags $QEMU_CFLAGS" QEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS" config_host_mak="config-host.mak" @@ -8056,9 +8042,6 @@ fi done # for target in $targets -echo "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak -echo "PIXMAN_LIBS=$pixman_libs" >> $config_host_mak - if [ "$fdt" = "git" ]; then subdirs="$subdirs dtc" fi diff --git a/contrib/vhost-user-gpu/meson.build b/contrib/vhost-user-gpu/meson.build index 6c1459f..12d608c 100644 --- a/contrib/vhost-user-gpu/meson.build +++ b/contrib/vhost-user-gpu/meson.build @@ -1,5 +1,6 @@ if 'CONFIG_TOOLS' in config_host and 'CONFIG_VIRGL' in config_host \ - and 'CONFIG_GBM' in config_host and 'CONFIG_LINUX' in config_host + and 'CONFIG_GBM' in config_host and 'CONFIG_LINUX' in config_host \ + and pixman.found() executable('vhost-user-gpu', files('vhost-user-gpu.c', 'virgl.c', 'vugbm.c'), link_with: libvhost_user, dependencies: [qemuutil, pixman, gbm, virgl], diff --git a/meson.build b/meson.build index b44901d..86a6d13 100644 --- a/meson.build +++ b/meson.build @@ -113,8 +113,11 @@ if 'CONFIG_GNUTLS' in config_host gnutls = declare_dependency(compile_args: config_host['GNUTLS_CFLAGS'].split(), link_args: config_host['GNUTLS_LIBS'].split()) endif -pixman = declare_dependency(compile_args: config_host['PIXMAN_CFLAGS'].split(), - link_args: config_host['PIXMAN_LIBS'].split()) +pixman = not_found +if have_system or have_tools + pixman = dependency('pixman-1', required: have_system, version:'>=0.21.8', + static: enable_static) +endif pam = not_found if 'CONFIG_AUTH_PAM' in config_host pam = cc.find_library('pam') @@ -981,6 +984,7 @@ foreach target : target_dirs lib = static_library('qemu-' + target, sources: arch_srcs + genh, + dependencies: arch_deps, objects: objects, include_directories: target_inc, c_args: c_args, @@ -1102,9 +1106,7 @@ if have_tools if 'CONFIG_VHOST_USER' in config_host subdir('contrib/libvhost-user') subdir('contrib/vhost-user-blk') - if 'CONFIG_LINUX' in config_host - subdir('contrib/vhost-user-gpu') - endif + subdir('contrib/vhost-user-gpu') subdir('contrib/vhost-user-input') subdir('contrib/vhost-user-scsi') endif @@ -1285,6 +1287,7 @@ summary_info += {'SDL image support': sdl_image.found()} # TODO: add back version summary_info += {'GTK support': config_host.has_key('CONFIG_GTK')} summary_info += {'GTK GL support': config_host.has_key('CONFIG_GTK_GL')} +summary_info += {'pixman': pixman.found()} # TODO: add back version summary_info += {'VTE support': config_host.has_key('CONFIG_VTE')} summary_info += {'TLS priority': config_host['CONFIG_TLS_PRIORITY']} diff --git a/ui/meson.build b/ui/meson.build index 018c569..393c9bc 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -1,3 +1,6 @@ +softmmu_ss.add(pixman) +specific_ss.add(pixman) # for the include path + softmmu_ss.add(files( 'console.c', 'cursor.c', @@ -9,7 +12,6 @@ softmmu_ss.add(files( 'keymaps.c', 'qemu-pixman.c', )) -softmmu_ss.add(pixman) softmmu_ss.add(when: 'CONFIG_LINUX', if_true: files('input-linux.c')) softmmu_ss.add(when: 'CONFIG_SPICE', if_true: files('spice-core.c', 'spice-input.c', 'spice-display.c')) -- cgit v1.1 From 760e4327cd88a079a0688a46b13746eda0d7da23 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 26 Aug 2020 08:09:48 +0200 Subject: meson: skip SDL2 detection if --disable-system SDL is only used for system emulation; avoid spurious warnings for static --disable-system emulation by skipping the detection of the library if there are no system emulation targets. Reported-by: Peter Maydell Signed-off-by: Paolo Bonzini --- meson.build | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/meson.build b/meson.build index 86a6d13..a3baa2d 100644 --- a/meson.build +++ b/meson.build @@ -20,6 +20,16 @@ build_docs = 'BUILD_DOCS' in config_host config_host_data = configuration_data() genh = [] +target_dirs = config_host['TARGET_DIRS'].split() +have_user = false +have_system = false +foreach target : target_dirs + have_user = have_user or target.endswith('-user') + have_system = have_system or target.endswith('-softmmu') +endforeach +have_tools = 'CONFIG_TOOLS' in config_host +have_block = have_system or have_tools + add_project_arguments(config_host['QEMU_CFLAGS'].split(), native: false, language: ['c', 'objc']) add_project_arguments(config_host['QEMU_CXXFLAGS'].split(), @@ -227,9 +237,12 @@ if 'CONFIG_BRLAPI' in config_host brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split()) endif -sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static, - include_type: 'system') -sdl_image = not_found +sdl = not_found +if have_system + sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static, + include_type: 'system') + sdl_image = not_found +endif if sdl.found() # work around 2.0.8 bug sdl = declare_dependency(compile_args: '-Wno-undef', @@ -426,9 +439,6 @@ endforeach genh += configure_file(output: 'config-host.h', configuration: config_host_data) minikconf = find_program('scripts/minikconf.py') -target_dirs = config_host['TARGET_DIRS'].split() -have_user = false -have_system = false config_devices_mak_list = [] config_devices_h = {} config_target_h = {} @@ -449,7 +459,6 @@ kconfig_external_symbols = [ ] ignored = ['TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_DIRS'] foreach target : target_dirs - have_user = have_user or target.endswith('-user') config_target = keyval.load(meson.current_build_dir() / target / 'config-target.mak') config_target_data = configuration_data() @@ -472,8 +481,6 @@ foreach target : target_dirs configuration: config_target_data)} if target.endswith('-softmmu') - have_system = true - base_kconfig = [] foreach sym : kconfig_external_symbols if sym in config_target or sym in config_host @@ -503,8 +510,6 @@ foreach target : target_dirs endif config_target_mak += {target: config_target} endforeach -have_tools = 'CONFIG_TOOLS' in config_host -have_block = have_system or have_tools grepy = find_program('scripts/grepy.sh') # This configuration is used to build files that are shared by -- cgit v1.1 From 48328880fddf0145bdccc499160fb24dfabfbd41 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 26 Aug 2020 08:04:15 +0200 Subject: configure: add --ninja option On Windows it is not possible to invoke a Python script as $NINJA. If ninja is present use it directly, while if it is not we can keep using ninjatool. Reported-by: Mark Cave-Ayland Signed-off-by: Paolo Bonzini --- configure | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 9db9bb8..6ecaff4 100755 --- a/configure +++ b/configure @@ -568,6 +568,7 @@ rng_none="no" secret_keyring="" libdaxctl="" meson="" +ninja="" skip_meson=no gettext="" @@ -1052,6 +1053,8 @@ for opt do ;; --meson=*) meson="$optarg" ;; + --ninja=*) ninja="$optarg" + ;; --smbd=*) smbd="$optarg" ;; --extra-cflags=*) @@ -1820,6 +1823,7 @@ Advanced options (experts only): --python=PYTHON use specified python [$python] --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build] --meson=MESON use specified meson [$meson] + --ninja=NINJA use specified ninja [$ninja] --smbd=SMBD use specified smbd [$smbd] --with-git=GIT use specified git [$git] --static enable static build [$static] @@ -2058,6 +2062,16 @@ case "$meson" in *) meson=$(command -v meson) ;; esac +# Probe for ninja (used for compdb) + +if test -z "$ninja"; then + for c in ninja ninja-build samu; do + if has $c; then + ninja=$(command -v "$c") + break + fi + done +fi # Check that the C compiler works. Doing this here before testing # the host CPU ensures that we had a valid CC to autodetect the @@ -8197,7 +8211,7 @@ fi mv $cross config-meson.cross rm -rf meson-private meson-info meson-logs -NINJA=$PWD/ninjatool $meson setup \ +NINJA=${ninja:-$PWD/ninjatool} $meson setup \ --prefix "${pre_prefix}$prefix" \ --libdir "${pre_prefix}$libdir" \ --libexecdir "${pre_prefix}$libexecdir" \ -- cgit v1.1 From 1917ec6d564d3fae404adedcbb6e8a724fba8894 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 26 Aug 2020 03:24:11 -0400 Subject: meson: cleanup xkbcommon detection Signed-off-by: Paolo Bonzini --- meson.build | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/meson.build b/meson.build index a3baa2d..9012861 100644 --- a/meson.build +++ b/meson.build @@ -165,10 +165,11 @@ libcap_ng = not_found if 'CONFIG_LIBCAP_NG' in config_host libcap_ng = declare_dependency(link_args: config_host['LIBCAP_NG_LIBS'].split()) endif -xkbcommon = dependency('xkbcommon', required: get_option('xkbcommon'), static: enable_static, - include_type: 'system') -if xkbcommon.found() - xkbcommon = declare_dependency(dependencies: xkbcommon) +if get_option('xkbcommon').auto() and not have_system and not have_tools + xkbcommon = not_found +else + xkbcommon = dependency('xkbcommon', required: get_option('xkbcommon'), + static: enable_static) endif slirp = not_found if config_host.has_key('CONFIG_SLIRP') @@ -1078,9 +1079,6 @@ endif # Don't build qemu-keymap if xkbcommon is not explicitly enabled # when we don't build tools or system -if get_option('xkbcommon').auto() and not have_system and not have_tools - xkbcommon = not_found -endif if xkbcommon.found() # used for the update-keymaps target, so include rules even if !have_tools qemu_keymap = executable('qemu-keymap', files('qemu-keymap.c', 'ui/input-keymap.c') + genh, -- cgit v1.1 From ec14f888b875943cceefda214eeed27c6c6440a6 Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Tue, 25 Aug 2020 23:23:10 +0100 Subject: meson: don't require CONFIG_VTE for the GTK UI Prevously CONFIG_VTE was not required to build QEMU with GTK UI support as not all platforms have VTE available (in particular Windows). Remove this requirement from the meson build system to enable QEMU to be built with GTK UI support for Windows once again. Signed-off-by: Mark Cave-Ayland Reviewed-by: Gerd Hoffmann Signed-off-by: Paolo Bonzini --- ui/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/meson.build b/ui/meson.build index 393c9bc..962e776 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -44,7 +44,7 @@ if config_host.has_key('CONFIG_CURSES') ui_modules += {'curses' : curses_ss} endif -if config_host.has_key('CONFIG_GTK') and config_host.has_key('CONFIG_VTE') +if config_host.has_key('CONFIG_GTK') softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('win32-kbd-hook.c')) gtk_ss = ss.source_set() -- cgit v1.1 From 1a4db552d8ee7efe9202f712de874e52900a5915 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 26 Aug 2020 17:02:03 +0200 Subject: ninjatool: quote dollars in variables Otherwise, dollars (such as in the special $ORIGIN rpath) are eaten by Make. Reported-by: Laurent Vivier Signed-off-by: Paolo Bonzini --- scripts/ninjatool.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/ninjatool.py b/scripts/ninjatool.py index cc77d51..c33eafb 100755 --- a/scripts/ninjatool.py +++ b/scripts/ninjatool.py @@ -834,7 +834,8 @@ class Ninja2Make(NinjaParserEventsWithVars): self.print() for targets in self.build_vars: for name, value in self.build_vars[targets].items(): - self.print('%s: private .var.%s := %s' % (targets, name, value)) + self.print('%s: private .var.%s := %s' % + (targets, name, value.replace('$', '$$'))) self.print() if not self.seen_default: default_targets = sorted(self.all_outs - self.all_ins, key=natural_sort_key) -- cgit v1.1 From cb23fd474035f7232a462dbcad8e61e6b1fa12f1 Mon Sep 17 00:00:00 2001 From: Yonggang Luo Date: Wed, 26 Aug 2020 23:10:02 +0800 Subject: meson: fix relpath failure on Win32 On win32, os.path.relpath can raise an exception when computing for example C:/msys64/mingw64/x.exe relative to E:/path/qemu-build. Use try...except to avoid this, just using an absolute path in this case. Signed-off-by: Yonggang Luo Signed-off-by: Paolo Bonzini --- scripts/mtest2make.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py index bdb257b..d7a51bf 100644 --- a/scripts/mtest2make.py +++ b/scripts/mtest2make.py @@ -53,9 +53,16 @@ i = 0 for test in json.load(sys.stdin): env = ' '.join(('%s=%s' % (shlex.quote(k), shlex.quote(v)) for k, v in test['env'].items())) - executable = os.path.relpath(test['cmd'][0]) + executable = test['cmd'][0] + try: + executable = os.path.relpath(executable) + except: + pass if test['workdir'] is not None: - test['cmd'][0] = os.path.relpath(test['cmd'][0], test['workdir']) + try: + test['cmd'][0] = os.path.relpath(executable, test['workdir']) + except: + test['cmd'][0] = executable else: test['cmd'][0] = executable cmd = '$(.test.env) %s %s' % (env, ' '.join((shlex.quote(x) for x in test['cmd']))) -- cgit v1.1 From 363743dacb5e6b0949dd2bc305bafc9594d2c799 Mon Sep 17 00:00:00 2001 From: Yonggang Luo Date: Wed, 26 Aug 2020 23:10:03 +0800 Subject: meson: Mingw64 gcc doesn't recognize system include_type for sdl2 Windows paths result in command lines like "-isystemC:/msys64/..." that are not recognized by GCC. "include_type: 'system'" was only included in an attempt to fix the -Wundef warnings in SDL 2.0.8, but it was not effective. Therefore we can fix this by remove the include_type. Signed-off-by: Yonggang Luo Signed-off-by: Paolo Bonzini --- meson.build | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 9012861..e6aa44b 100644 --- a/meson.build +++ b/meson.build @@ -240,8 +240,7 @@ endif sdl = not_found if have_system - sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static, - include_type: 'system') + sdl = dependency('sdl2', required: get_option('sdl'), static: enable_static) sdl_image = not_found endif if sdl.found() -- cgit v1.1 From 90756b2fb3b95df754008024e84e7f164718bf2f Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 25 Aug 2020 08:43:42 +0200 Subject: meson: set colorout to auto MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dunno why the default is set to "always". IMHO it should be "auto", i.e. only colorize in case stdout goes to a terminal. Cluttering logfiles and confusing compiler message parsers with terminal control sequences is not nice ... Signed-off-by: Gerd Hoffmann Reviewed-by: Marc-André Lureau Signed-off-by: Paolo Bonzini --- meson.build | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index e6aa44b..74f8ea0 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,6 @@ project('qemu', ['c'], meson_version: '>=0.55.0', - default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_lundef=false'], + default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', + 'b_lundef=false','b_colorout=auto'], version: run_command('head', meson.source_root() / 'VERSION').stdout().strip()) not_found = dependency('', required: false) -- cgit v1.1 From 74938f0645e25f191247af55d7bf27d9c62f4768 Mon Sep 17 00:00:00 2001 From: Yonggang Luo Date: Wed, 26 Aug 2020 23:10:01 +0800 Subject: ninjatool: Fixes E$$: in generated Makefile.ninja Even though SIMPLE_PATH_RE is used with re.match (which anchors the match implictly to the beginning of the string) it also needs an end-of-string anchor in order to match the full path token. Otherwise, the match would succeed incorrectly for $ and : characters contained in the path, for example if the path starts with C:/ or E:/. Signed-off-by: Yonggang Luo Tested-by: Mark Cave-Ayland Signed-off-by: Paolo Bonzini --- scripts/ninjatool.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ninjatool.py b/scripts/ninjatool.py index c33eafb..ba6bd9a 100755 --- a/scripts/ninjatool.py +++ b/scripts/ninjatool.py @@ -55,7 +55,7 @@ else: PATH_RE = r"[^$\s:|]+|\$[$ :]|\$[a-zA-Z0-9_-]+|\$\{[a-zA-Z0-9_.-]+\}" -SIMPLE_PATH_RE = re.compile(r"[^$\s:|]+") +SIMPLE_PATH_RE = re.compile(r"^[^$\s:|]+$") IDENT_RE = re.compile(r"[a-zA-Z0-9_.-]+$") STRING_RE = re.compile(r"(" + PATH_RE + r"|[\s:|])(?:\r?\n)?|.") TOPLEVEL_RE = re.compile(r"([=:#]|\|\|?|^ +|(?:" + PATH_RE + r")+)\s*|.") -- cgit v1.1