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