tools: link the tools against libxkbcommon.so only The tools previously linked against a static version (by simply recompiling everythiong). This isn't necessary, we can link them against libxkbcommon.so. Only exception: The xbkcli-compile-keymap tool needs a private API for the --kccgst flag. Avoid this by disabling this flag in the installed tool and building the same tool, statically linked but not-installed. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
diff --git a/meson.build b/meson.build
index 8c809f4..268925d 100644
--- a/meson.build
+++ b/meson.build
@@ -241,6 +241,9 @@ install_headers(
'xkbcommon/xkbcommon-names.h',
subdir: 'xkbcommon',
)
+libxkbcommon_dep = declare_dependency(
+ link_with: libxkbcommon,
+)
pkgconfig.generate(
libxkbcommon,
name: 'xkbcommon',
@@ -532,8 +535,8 @@ if build_tools
'tools-internal',
'tools/tools-common.h',
'tools/tools-common.c',
- libxkbcommon_sources,
include_directories: include_directories('src'),
+ dependencies: libxkbcommon_dep,
)
tools_dep = declare_dependency(
include_directories: [include_directories('src'), include_directories('tools')],
@@ -550,6 +553,13 @@ if build_tools
install: true,
install_dir: dir_libexec)
install_man('tools/xkbcli-compile-keymap.1')
+ # The same tool again, but with access to some private APIS
+ executable('compile-keymap',
+ 'tools/compile-keymap.c',
+ libxkbcommon_sources,
+ dependencies: [tools_dep],
+ c_args: ['-DENABLE_PRIVATE_APIS'],
+ install: false)
configh_data.set10('HAVE_XKBCLI_COMPILE_KEYMAP', true)
executable('xkbcli-how-to-type',
'tools/how-to-type.c',
diff --git a/tools/compile-keymap.c b/tools/compile-keymap.c
index be2eaeb..370a67c 100644
--- a/tools/compile-keymap.c
+++ b/tools/compile-keymap.c
@@ -56,8 +56,10 @@ usage(char **argv)
"Options:\n"
" --verbose\n"
" Enable verbose debugging output\n"
+#if ENABLE_PRIVATE_APIS
" --kccgst\n"
" Print a keymap which only includes the KcCGST component names instead of the full keymap\n"
+#endif
" --rmlvo\n"
" Print the full RMLVO with the defaults filled in for missing elements\n"
" --from-xkb\n"
@@ -111,7 +113,9 @@ parse_options(int argc, char **argv, struct xkb_rule_names *names)
static struct option opts[] = {
{"help", no_argument, 0, 'h'},
{"verbose", no_argument, 0, OPT_VERBOSE},
+#if ENABLE_PRIVATE_APIS
{"kccgst", no_argument, 0, OPT_KCCGST},
+#endif
{"rmlvo", no_argument, 0, OPT_RMLVO},
{"from-xkb", no_argument, 0, OPT_FROM_XKB},
{"include", required_argument, 0, OPT_INCLUDE},
@@ -191,6 +195,7 @@ print_rmlvo(struct xkb_context *ctx, const struct xkb_rule_names *rmlvo)
static bool
print_kccgst(struct xkb_context *ctx, const struct xkb_rule_names *rmlvo)
{
+#if ENABLE_PRIVATE_APIS
struct xkb_component_names kccgst;
if (!xkb_components_from_rules(ctx, rmlvo, &kccgst))
@@ -209,6 +214,9 @@ print_kccgst(struct xkb_context *ctx, const struct xkb_rule_names *rmlvo)
free(kccgst.symbols);
return true;
+#else
+ return false;
+#endif
}
static bool
diff --git a/tools/xkbcli-compile-keymap.1 b/tools/xkbcli-compile-keymap.1
index eb4b0d3..64c4263 100644
--- a/tools/xkbcli-compile-keymap.1
+++ b/tools/xkbcli-compile-keymap.1
@@ -20,10 +20,6 @@ Print help and exit
Enable verbose debugging output
.
.TP
-\fB\-\-kccgst\fR
-Print a keymap which only includes the KcCGST component names instead of the full keymap
-.
-.TP
\fB\-\-rmlvo\fR
Print the full RMLVO with the defaults filled in for missing elements
.