libxkbcommon: Add a "USE flag" for Wayland support (#110693)

This can be used to enable the optional "interactive-wayland" subcommand
of xkbcli.
This commit is contained in:
Michael Weiss 2021-01-25 14:52:05 +01:00 committed by GitHub
parent 464a247e93
commit 428e0fdc54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 3 deletions

View file

@ -2,6 +2,8 @@
, xkeyboard_config, libxcb, libxml2
, python3
, libX11
# To enable the "interactive-wayland" subcommand of xkbcli:
, withWaylandSupport ? false, wayland, wayland-protocols
}:
stdenv.mkDerivation rec {
@ -13,18 +15,24 @@ stdenv.mkDerivation rec {
sha256 = "0lmwglj16anhpaq0h830xsl1ivknv75i4lir9bk88aq73s2jy852";
};
patches = [
./fix-cross-compilation.patch
];
outputs = [ "out" "dev" "doc" ];
nativeBuildInputs = [ meson ninja pkg-config yacc doxygen ];
buildInputs = [ xkeyboard_config libxcb libxml2 ];
nativeBuildInputs = [ meson ninja pkg-config yacc doxygen ]
++ lib.optional withWaylandSupport wayland;
buildInputs = [ xkeyboard_config libxcb libxml2 ]
++ lib.optionals withWaylandSupport [ wayland wayland-protocols ];
checkInputs = [ python3 ];
mesonFlags = [
"-Dxkb-config-root=${xkeyboard_config}/etc/X11/xkb"
"-Dxkb-config-extra-path=/etc/xkb" # default=$sysconfdir/xkb ($out/etc)
"-Dx-locale-root=${libX11.out}/share/X11/locale"
"-Denable-wayland=false"
"-Denable-xkbregistry=false" # Optional, separate library (TODO: Install into extra output)
"-Denable-wayland=${lib.boolToString withWaylandSupport}"
];
doCheck = true;

View file

@ -0,0 +1,20 @@
diff --git a/meson.build b/meson.build
index 47c436f..536c60b 100644
--- a/meson.build
+++ b/meson.build
@@ -440,13 +440,12 @@ if build_tools
if get_option('enable-wayland')
wayland_client_dep = dependency('wayland-client', version: '>=1.2.0', required: false)
wayland_protocols_dep = dependency('wayland-protocols', version: '>=1.12', required: false)
- wayland_scanner_dep = dependency('wayland-scanner', required: false, native: true)
- if not wayland_client_dep.found() or not wayland_protocols_dep.found() or not wayland_scanner_dep.found()
+ if not wayland_client_dep.found() or not wayland_protocols_dep.found()
error('''The Wayland xkbcli programs require wayland-client >= 1.2.0, wayland-protocols >= 1.7 which were not found.
You can disable the Wayland xkbcli programs with -Denable-wayland=false.''')
endif
- wayland_scanner = find_program(wayland_scanner_dep.get_pkgconfig_variable('wayland_scanner'))
+ wayland_scanner = find_program('wayland-scanner', native: true)
wayland_scanner_code_gen = generator(
wayland_scanner,
output: '@BASENAME@-protocol.c',