From d0d774f72c27e989daff0472b37bac55a07c359c Mon Sep 17 00:00:00 2001 From: Eberhard Beilharz Date: Thu, 17 Jul 2025 19:22:24 +0200 Subject: [PATCH] refactor(linux): move defines to common header files Fixes: #13281 Test-bot: skip --- linux/ibus-keyman/meson.build | 4 ++++ linux/ibus-keyman/src/engine.c | 6 ++---- linux/ibus-keyman/src/meson.build | 1 + linux/ibus-keyman/tests/DbusTestHelper.cpp | 7 +------ linux/ibus-keyman/tests/meson.build | 1 + linux/ibus-keyman/tests/testfixture.h | 5 +---- linux/include/km_linux_common.h | 7 +++++++ linux/include/km_linux_test_common.h | 9 +++++++++ linux/keyman-system-service/meson.build | 4 ++++ linux/keyman-system-service/src/OrderedOutputDevice.cpp | 5 +---- linux/keyman-system-service/src/meson.build | 2 +- .../tests/OrderedOutputDeviceMock.cpp | 7 +------ linux/keyman-system-service/tests/meson.build | 2 +- 13 files changed, 34 insertions(+), 26 deletions(-) create mode 100644 linux/include/km_linux_common.h create mode 100644 linux/include/km_linux_test_common.h diff --git a/linux/ibus-keyman/meson.build b/linux/ibus-keyman/meson.build index e18cb6111e..3d0bbf0fce 100644 --- a/linux/ibus-keyman/meson.build +++ b/linux/ibus-keyman/meson.build @@ -55,6 +55,10 @@ core_include_dirs = [ include_directories('../../core/build/arch' / get_option('buildtype') / 'include'), ] +linux_include_dirs = [ + include_directories('../include') +] + subdir('icons') subdir('src') subdir('tests') diff --git a/linux/ibus-keyman/src/engine.c b/linux/ibus-keyman/src/engine.c index 770ffcd877..f47ffe4dab 100644 --- a/linux/ibus-keyman/src/engine.c +++ b/linux/ibus-keyman/src/engine.c @@ -32,6 +32,8 @@ #include #include +#include + #include "config.h" #include "keymanutil.h" #include "keyman-service.h" @@ -51,10 +53,6 @@ #define KEYMAN_RCTRL 97 // 0x61 #define KEYMAN_RALT 100 // 0x64 -// TODO: Move to a common header file. Also defined in tests/testfixture.h -// and keyman-system-service/src/OrderedOutputDevice.cpp -#define KEYMAN_F24_KEYCODE_OUTPUT_SENTINEL 194 // 0xC2 - typedef struct _IBusKeymanEngine IBusKeymanEngine; typedef struct _IBusKeymanEngineClass IBusKeymanEngineClass; diff --git a/linux/ibus-keyman/src/meson.build b/linux/ibus-keyman/src/meson.build index 1f77fdb765..d6404ac2bc 100644 --- a/linux/ibus-keyman/src/meson.build +++ b/linux/ibus-keyman/src/meson.build @@ -13,6 +13,7 @@ engine_files = files( include_dirs = [ core_include_dirs, + linux_include_dirs, include_directories('..'), include_directories(meson.current_build_dir() / '..'), ] diff --git a/linux/ibus-keyman/tests/DbusTestHelper.cpp b/linux/ibus-keyman/tests/DbusTestHelper.cpp index a657055eeb..e1b23ffd15 100644 --- a/linux/ibus-keyman/tests/DbusTestHelper.cpp +++ b/linux/ibus-keyman/tests/DbusTestHelper.cpp @@ -2,18 +2,13 @@ #include #include #include +#include #include "EventSource.h" #include "KeyHandling.h" #include "KeymanSystemServiceClient.h" #include "kmx_test_source.hpp" #include "DbusTestHelper.h" -// TODO: move these to a common header. Also defined in -// keyman-system-service/tests/OrderedOutputDeviceMock.cpp -#define KEYMAN_TESTHELPER_BUS_NAME "com.keyman.TestService" -#define KEYMAN_TESTHELPER_OBJECT_PATH "/com/keyman/TestService/TestHelper" -#define KEYMAN_TESTHELPER_INTERFACE_NAME "com.keyman.TestService.TestHelper" - static sd_bus* bus = NULL; static EventSource *source = NULL; diff --git a/linux/ibus-keyman/tests/meson.build b/linux/ibus-keyman/tests/meson.build index 22f16ef975..24f4bca851 100644 --- a/linux/ibus-keyman/tests/meson.build +++ b/linux/ibus-keyman/tests/meson.build @@ -25,6 +25,7 @@ test_env = [ test_include_dirs = [ core_include_dirs, + linux_include_dirs, include_directories('../../../core/tests/kmx_test_source'), include_directories('../src'), include_directories('..'), diff --git a/linux/ibus-keyman/tests/testfixture.h b/linux/ibus-keyman/tests/testfixture.h index bb317618a4..5d0e2f8eaf 100644 --- a/linux/ibus-keyman/tests/testfixture.h +++ b/linux/ibus-keyman/tests/testfixture.h @@ -4,12 +4,9 @@ #include #include #include +#include #include "ibusimcontext.h" -// TODO: Move to a common header file. Also defined in engine.c and -// keyman-system-service/src/OrderedOutputDevice.cpp -#define KEYMAN_F24_KEYCODE_OUTPUT_SENTINEL 194 // 0xC2 - typedef struct { IBusBus* bus; GtkIMContext* context; diff --git a/linux/include/km_linux_common.h b/linux/include/km_linux_common.h new file mode 100644 index 0000000000..374ae01251 --- /dev/null +++ b/linux/include/km_linux_common.h @@ -0,0 +1,7 @@ +// Keyman is copyright(C) SIL Global.MIT License. +#ifndef __KM_LINUX_COMMON_H__ +#define __KM_LINUX_COMMON_H__ + +#define KEYMAN_F24_KEYCODE_OUTPUT_SENTINEL 194 // 0xC2 + +#endif // __KM_LINUX_COMMON_H__ diff --git a/linux/include/km_linux_test_common.h b/linux/include/km_linux_test_common.h new file mode 100644 index 0000000000..83fef7db2f --- /dev/null +++ b/linux/include/km_linux_test_common.h @@ -0,0 +1,9 @@ +// Keyman is copyright(C) SIL Global.MIT License. +#ifndef __KM_LINUX_TEST_COMMON_H__ +#define __KM_LINUX_TEST_COMMON_H__ + +#define KEYMAN_TESTHELPER_BUS_NAME "com.keyman.TestService" +#define KEYMAN_TESTHELPER_OBJECT_PATH "/com/keyman/TestService/TestHelper" +#define KEYMAN_TESTHELPER_INTERFACE_NAME "com.keyman.TestService.TestHelper" + +#endif // __KM_LINUX_TEST_COMMON_H__ diff --git a/linux/keyman-system-service/meson.build b/linux/keyman-system-service/meson.build index 82ef06d0e9..b6f16e82f8 100644 --- a/linux/keyman-system-service/meson.build +++ b/linux/keyman-system-service/meson.build @@ -19,6 +19,10 @@ endif configure_file(output : 'config.h', configuration : conf) +linux_include_dirs = [ + include_directories('../include') +] + subdir('resources') subdir('src') subdir('tests') diff --git a/linux/keyman-system-service/src/OrderedOutputDevice.cpp b/linux/keyman-system-service/src/OrderedOutputDevice.cpp index 5d388769ff..bc1d1546fc 100644 --- a/linux/keyman-system-service/src/OrderedOutputDevice.cpp +++ b/linux/keyman-system-service/src/OrderedOutputDevice.cpp @@ -5,14 +5,11 @@ #include #include #include +#include #include "OrderedOutputDevice.h" using namespace std; -// TODO: Move to a common header file. Also defined in ibus-keyman/src/engine.c -// and ibus-keyman/tests/testfixture.h -#define KEYMAN_F24_KEYCODE_OUTPUT_SENTINEL 194 // 0xC2 - #ifndef KEYMAN_TESTING OrderedOutputDevice* CreateOrderedOutputDevice() { return new OrderedOutputDevice(); diff --git a/linux/keyman-system-service/src/meson.build b/linux/keyman-system-service/src/meson.build index a99c977efb..1a1532deed 100644 --- a/linux/keyman-system-service/src/meson.build +++ b/linux/keyman-system-service/src/meson.build @@ -11,7 +11,7 @@ exe = executable( 'keyman-system-service', sources: [service_files], dependencies: deps, - include_directories: ['..'], + include_directories: [linux_include_dirs, '..'], install: true, install_dir: get_option('libexecdir'), ) diff --git a/linux/keyman-system-service/tests/OrderedOutputDeviceMock.cpp b/linux/keyman-system-service/tests/OrderedOutputDeviceMock.cpp index ca5db30ae6..152dbab5a7 100644 --- a/linux/keyman-system-service/tests/OrderedOutputDeviceMock.cpp +++ b/linux/keyman-system-service/tests/OrderedOutputDeviceMock.cpp @@ -4,14 +4,9 @@ #else #include #endif +#include #include "OrderedOutputDevice.h" -// TODO: move these to a common header. Also defined in -// ibus-keyman/tests/DBusTestHelper.cpp -#define KEYMAN_TESTHELPER_BUS_NAME "com.keyman.TestService" -#define KEYMAN_TESTHELPER_OBJECT_PATH "/com/keyman/TestService/TestHelper" -#define KEYMAN_TESTHELPER_INTERFACE_NAME "com.keyman.TestService.TestHelper" - #ifndef KEYMAN_TESTING #warning KEYMAN_TESTING should be defined when compiling tests #endif diff --git a/linux/keyman-system-service/tests/meson.build b/linux/keyman-system-service/tests/meson.build index b180b73a18..b984747427 100644 --- a/linux/keyman-system-service/tests/meson.build +++ b/linux/keyman-system-service/tests/meson.build @@ -19,7 +19,7 @@ exe = executable( c_args: test_c_args, cpp_args: test_c_args, dependencies: deps, - include_directories: [ '..', '../src' ] + include_directories: [ linux_include_dirs, '..', '../src' ] ) # we currently don't have any real unit tests for keyman-system-service.