From ce5eb1ac6d542bea11222670ec8438cdd074a833 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 24 Jul 2020 13:31:03 +1000 Subject: [PATCH] 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 --- meson.build | 12 +++++++++++- tools/compile-keymap.c | 8 ++++++++ tools/xkbcli-compile-keymap.1 | 4 ---- 3 files changed, 19 insertions(+), 5 deletions(-) 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 .