From ddcf607fa3d6881cf0286a9b88a40fde265cbe37 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Mon, 24 Aug 2020 09:40:57 +0200 Subject: [PATCH 1/3] meson: drop keymaps symlink We are building the keymaps by default now. Drop the keymaps symlink so the generated files are actually written to the build tree not the source tree. Signed-off-by: Gerd Hoffmann Reviewed-by: Alistair Francis Tested-by: Klaus Jensen Tested-by: Bin Meng Message-id: 20200824074057.3673-1-kraxel@redhat.com --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index b8f5b81a67..377aafa2ac 100755 --- a/configure +++ b/configure @@ -8120,7 +8120,7 @@ DIRS="$DIRS roms/seabios" LINKS="Makefile" LINKS="$LINKS tests/tcg/lm32/Makefile" LINKS="$LINKS tests/tcg/Makefile.target" -LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps" +LINKS="$LINKS pc-bios/optionrom/Makefile" LINKS="$LINKS pc-bios/s390-ccw/Makefile" LINKS="$LINKS roms/seabios/Makefile" LINKS="$LINKS pc-bios/qemu-icon.bmp" From 4113f4cfeea57774d492af48aec97a043d82a32e Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Mon, 24 Aug 2020 17:24:29 +0200 Subject: [PATCH 2/3] meson: move xkbcommon to meson Signed-off-by: Laurent Vivier Message-id: 20200824152430.1844159-2-laurent@vivier.eu Signed-off-by: Gerd Hoffmann --- configure | 29 ++++------------------------- meson.build | 11 ++++++----- meson_options.txt | 1 + ui/meson.build | 2 +- 4 files changed, 12 insertions(+), 31 deletions(-) diff --git a/configure b/configure index 377aafa2ac..b1e11397a8 100755 --- a/configure +++ b/configure @@ -432,7 +432,7 @@ vde="" vnc_sasl="auto" vnc_jpeg="auto" vnc_png="auto" -xkbcommon="" +xkbcommon="auto" xen="" xen_ctrl_version="" xen_pci_passthrough="" @@ -1631,9 +1631,9 @@ for opt do ;; --disable-libpmem) libpmem=no ;; - --enable-xkbcommon) xkbcommon=yes + --enable-xkbcommon) xkbcommon="enabled" ;; - --disable-xkbcommon) xkbcommon=no + --disable-xkbcommon) xkbcommon="disabled" ;; --enable-plugins) plugins="yes" ;; @@ -3446,22 +3446,6 @@ EOF fi fi -########################################## -# xkbcommon probe -if test "$xkbcommon" != "no" ; then - if $pkg_config xkbcommon --exists; then - xkbcommon_cflags=$($pkg_config xkbcommon --cflags) - xkbcommon_libs=$($pkg_config xkbcommon --libs) - xkbcommon=yes - else - if test "$xkbcommon" = "yes" ; then - feature_not_found "xkbcommon" "Install libxkbcommon-devel" - fi - xkbcommon=no - fi -fi - - ########################################## # xfsctl() probe, used for file-posix.c if test "$xfs" != "no" ; then @@ -6827,11 +6811,6 @@ if test "$audio_win_int" = "yes" ; then fi echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak -if test "$xkbcommon" = "yes" ; then - echo "CONFIG_XKBCOMMON=y" >> $config_host_mak - echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak - echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak -fi if test "$xfs" = "yes" ; then echo "CONFIG_XFS=y" >> $config_host_mak fi @@ -8251,7 +8230,7 @@ NINJA=$PWD/ninjatool $meson setup \ -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \ -Dsdl=$sdl -Dsdl_image=$sdl_image \ -Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \ - -Dgettext=$gettext \ + -Dgettext=$gettext -Dxkbcommon=$xkbcommon \ $cross_arg \ "$PWD" "$source_path" diff --git a/meson.build b/meson.build index df5bf728b5..f6e346af1a 100644 --- a/meson.build +++ b/meson.build @@ -152,10 +152,10 @@ 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 = not_found -if 'CONFIG_XKBCOMMON' in config_host - xkbcommon = declare_dependency(compile_args: config_host['XKBCOMMON_CFLAGS'].split(), - link_args: config_host['XKBCOMMON_LIBS'].split()) +xkbcommon = dependency('xkbcommon', required: get_option('xkbcommon'), static: enable_static, + include_type: 'system') +if xkbcommon.found() + xkbcommon = declare_dependency(dependencies: xkbcommon) endif slirp = not_found if config_host.has_key('CONFIG_SLIRP') @@ -389,6 +389,7 @@ config_host_data.set('CONFIG_VNC', vnc.found()) config_host_data.set('CONFIG_VNC_JPEG', jpeg.found()) config_host_data.set('CONFIG_VNC_PNG', png.found()) config_host_data.set('CONFIG_VNC_SASL', sasl.found()) +config_host_data.set('CONFIG_XKBCOMMON', xkbcommon.found()) config_host_data.set('QEMU_VERSION', '"@0@"'.format(meson.project_version())) config_host_data.set('QEMU_VERSION_MAJOR', meson.project_version().split('.')[0]) config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1]) @@ -1062,7 +1063,7 @@ if 'CONFIG_GUEST_AGENT' in config_host subdir('qga') endif -if 'CONFIG_XKBCOMMON' in config_host +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, dependencies: [qemuutil, xkbcommon], install: have_tools) diff --git a/meson_options.txt b/meson_options.txt index e5f45243ce..c55f9cd94c 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -5,3 +5,4 @@ option('vnc', type : 'feature', value : 'enabled') option('vnc_jpeg', type : 'feature', value : 'auto') option('vnc_png', type : 'feature', value : 'auto') option('vnc_sasl', type : 'feature', value : 'auto') +option('xkbcommon', type : 'feature', value : 'auto') diff --git a/ui/meson.build b/ui/meson.build index 81fd393432..018c5698bf 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -95,7 +95,7 @@ keymaps = [ ['osx', 'qcode'], ] -if have_system or 'CONFIG_XKBCOMMON' in config_host +if have_system or xkbcommon.found() foreach e : keymaps output = 'input-keymap-@0@-to-@1@.c.inc'.format(e[0], e[1]) genh += custom_target(output, From 9755c94a50c8b845ad133a6e660f55ca131b9c7a Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Mon, 24 Aug 2020 17:24:30 +0200 Subject: [PATCH 3/3] meson: avoid compiling qemu-keymap by default qemu-keymap is not needed with linux-user, so disable it by default if tools and system are disabled (tools are disabled by default with linux-user). Avoid this error with statically linked binaries: Linking target qemu-keymap /usr/bin/ld: cannot find -lxkbcommon Signed-off-by: Laurent Vivier Message-id: 20200824152430.1844159-3-laurent@vivier.eu Signed-off-by: Gerd Hoffmann --- meson.build | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meson.build b/meson.build index f6e346af1a..f0fe5f8799 100644 --- a/meson.build +++ b/meson.build @@ -1063,6 +1063,11 @@ if 'CONFIG_GUEST_AGENT' in config_host subdir('qga') 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,