Merge pull request #69 from nirenjan/rework-to-address-sonarqube-duplicate-code-issue

refactor: Rearrange files to avoid duplicate code issue
lipc-refactor
nirenjan 2026-04-20 10:34:43 -07:00 committed by GitHub
commit e0ab5bbab7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
18 changed files with 52 additions and 46 deletions

View File

@ -6,14 +6,14 @@ libx52dcomm_sources = [
'comm_internal.c' 'comm_internal.c'
] ]
install_headers('x52dcomm.h', subdir: meson.project_name()) root_includes = include_directories('..')
lib_libx52dcomm = library('x52dcomm', libx52dcomm_sources, lib_libx52dcomm = library('x52dcomm', libx52dcomm_sources,
dependencies: [dep_intl, dep_config_h], dependencies: [dep_intl, dep_config_h],
version: libx52dcomm_version, version: libx52dcomm_version,
c_args: sym_hidden_cargs, c_args: sym_hidden_cargs,
install: true, install: true,
include_directories: includes) include_directories: [includes, root_includes])
pkgconfig.generate(lib_libx52dcomm, pkgconfig.generate(lib_libx52dcomm,
name: 'x52dcomm', name: 'x52dcomm',
@ -50,7 +50,7 @@ x52d_cflags = []
exe_x52d = executable('x52d', x52d_sources + libx52dcomm_sources, exe_x52d = executable('x52d', x52d_sources + libx52dcomm_sources,
install: true, install: true,
include_directories: includes, include_directories: [includes, root_includes],
c_args: sym_hidden_cargs + x52d_cflags, c_args: sym_hidden_cargs + x52d_cflags,
dependencies: x52d_deps, dependencies: x52d_deps,
link_with: x52d_linkwith) link_with: x52d_linkwith)
@ -58,7 +58,7 @@ exe_x52d = executable('x52d', x52d_sources + libx52dcomm_sources,
exe_x52ctl = executable('x52ctl', 'daemon_control.c', exe_x52ctl = executable('x52ctl', 'daemon_control.c',
install: true, install: true,
dependencies: [dep_intl, dep_config_h], dependencies: [dep_intl, dep_config_h],
include_directories: includes, include_directories: [includes, root_includes],
link_with: lib_libx52dcomm) link_with: lib_libx52dcomm)
install_data('x52d.conf', install_data('x52d.conf',
@ -82,7 +82,7 @@ test('daemon-communication', files('test_daemon_comm.py')[0],
x52d_mouse_test_sources = ['mouse_test.c', 'mouse.c'] x52d_mouse_test_sources = ['mouse_test.c', 'mouse.c']
x52d_mouse_test = executable('x52d-mouse-test', x52d_mouse_test_sources, x52d_mouse_test = executable('x52d-mouse-test', x52d_mouse_test_sources,
include_directories: includes, include_directories: [includes, root_includes],
dependencies: [dep_pinelog, dep_cmocka, dep_intl, dep_math, dep_config_h]) dependencies: [dep_pinelog, dep_cmocka, dep_intl, dep_math, dep_config_h])
test('x52d-mouse-test', x52d_mouse_test, protocol: 'tap') test('x52d-mouse-test', x52d_mouse_test, protocol: 'tap')
@ -91,14 +91,14 @@ layout_usage_allowlist_test = executable('layout-usage-allowlist-test',
'layout_usage_allowlist_test.c', 'layout_usage_allowlist_test.c',
'layout_usage_allowlist.c', 'layout_usage_allowlist.c',
build_by_default: false, build_by_default: false,
include_directories: includes, include_directories: [includes, root_includes],
dependencies: [dep_cmocka, dep_config_h]) dependencies: [dep_cmocka, dep_config_h])
test('layout-usage-allowlist', layout_usage_allowlist_test, protocol: 'tap') test('layout-usage-allowlist', layout_usage_allowlist_test, protocol: 'tap')
crc32_test = executable('crc32-test', 'crc32_test.c', 'crc32.c', crc32_test = executable('crc32-test', 'crc32_test.c', 'crc32.c',
build_by_default: false, build_by_default: false,
include_directories: includes, include_directories: [includes, root_includes],
dependencies: [dep_cmocka, dep_config_h]) dependencies: [dep_cmocka, dep_config_h])
test('crc32', crc32_test, protocol: 'tap') test('crc32', crc32_test, protocol: 'tap')
@ -109,7 +109,7 @@ layout_load_test = executable('layout-load-test',
'layout_usage_allowlist.c', 'layout_usage_allowlist.c',
'crc32.c', 'crc32.c',
build_by_default: false, build_by_default: false,
include_directories: includes, include_directories: [includes, root_includes],
dependencies: [dep_cmocka, dep_config_h]) dependencies: [dep_cmocka, dep_config_h])
test('layout-load', layout_load_test, protocol: 'tap') test('layout-load', layout_load_test, protocol: 'tap')

View File

@ -0,0 +1,39 @@
#######################################################################
# build-config.h (Meson configuration; template is config.h.meson)
#######################################################################
sym_hidden_cargs = []
if compiler.has_argument('-fvisibility=hidden')
sym_hidden_cargs = ['-fvisibility=hidden']
endif
cdata = configuration_data()
cdata.set_quoted('PACKAGE', meson.project_name())
cdata.set_quoted('PACKAGE_BUGREPORT', 'https://github.com/nirenjan/libx52/issues')
cdata.set_quoted('PACKAGE_NAME', meson.project_name())
cdata.set_quoted('LOCALEDIR', get_option('prefix') / get_option('localedir'))
cdata.set_quoted('SYSCONFDIR', get_option('prefix') / get_option('sysconfdir'))
cdata.set_quoted('LOCALSTATEDIR', get_option('prefix') / get_option('localstatedir'))
cdata.set_quoted('DATADIR', get_option('prefix') / get_option('datadir'))
cdata.set_quoted('PACKAGE_VERSION', meson.project_version())
cdata.set_quoted('VERSION', meson.project_version())
cdata.set10('ENABLE_NLS', not get_option('nls').disabled())
cdata.set10('HAVE_FUNC_ATTRIBUTE_NORETURN', compiler.has_function_attribute('noreturn'))
cdata.set10('HAVE_STRUCT_TM_TM_GMTOFF',
compiler.has_member('struct tm', 'tm_gmtoff', prefix:'#include <time.h>'))
config_h = configure_file(
input: 'build-config.h.meson',
output: 'build-config.h',
configuration: cdata
)
dep_config_h = declare_dependency(sources: config_h)
install_headers(
'libx52/libx52.h',
'libx52/libx52io.h',
'libx52/libx52util.h',
'libx52/x52dcomm.h',
subdir: 'libx52'
)

View File

@ -1 +0,0 @@
../libx52io/libx52io.h

View File

@ -1 +0,0 @@
../libx52util/libx52util.h

View File

@ -16,7 +16,6 @@ lib_libx52 = library('x52', libx52_files,
dependencies: [dep_libusb, dep_intl], dependencies: [dep_libusb, dep_intl],
include_directories: [includes]) include_directories: [includes])
install_headers('libx52.h', subdir: meson.project_name())
pkgconfig.generate(lib_libx52, pkgconfig.generate(lib_libx52,
name: 'libx52', name: 'libx52',
description: 'Linux/Unix library to control Saitek X52/X52Pro joystick extended functionality.', description: 'Linux/Unix library to control Saitek X52/X52Pro joystick extended functionality.',

View File

@ -1 +0,0 @@
../daemon/x52dcomm.h

View File

@ -15,7 +15,6 @@ lib_libx52io = library('x52io', libx52io_files,
dependencies: [dep_hidapi, dep_intl], dependencies: [dep_hidapi, dep_intl],
include_directories: [includes]) include_directories: [includes])
install_headers('libx52io.h', subdir: meson.project_name())
pkgconfig.generate(lib_libx52io, pkgconfig.generate(lib_libx52io,
name: 'libx52io', name: 'libx52io',
description: 'Linux/Unix library to read and parse X52 input', description: 'Linux/Unix library to read and parse X52 input',

View File

@ -18,7 +18,6 @@ lib_libx52util = library('x52util', util_char_map, 'char_map_lookup.c',
include_directories: [includes], include_directories: [includes],
) )
install_headers('libx52util.h', subdir: meson.project_name())
pkgconfig.generate(lib_libx52util, pkgconfig.generate(lib_libx52util,
name: 'libx52util', name: 'libx52util',
description: 'Extra utility functions to manage X52 extended functionality', description: 'Extra utility functions to manage X52 extended functionality',

View File

@ -35,36 +35,7 @@ python = pymod.find_installation('python3')
pyversion = python.language_version().split('.') pyversion = python.language_version().split('.')
assert(pyversion[1].to_int() >= 5, 'Require Python >= 3.5') assert(pyversion[1].to_int() >= 5, 'Require Python >= 3.5')
#######################################################################
# build-config.h (Meson configuration; template is config.h.meson)
#######################################################################
compiler = meson.get_compiler('c') compiler = meson.get_compiler('c')
sym_hidden_cargs = []
if compiler.has_argument('-fvisibility=hidden')
sym_hidden_cargs = ['-fvisibility=hidden']
endif
cdata = configuration_data()
cdata.set_quoted('PACKAGE', meson.project_name())
cdata.set_quoted('PACKAGE_BUGREPORT', 'https://github.com/nirenjan/libx52/issues')
cdata.set_quoted('PACKAGE_NAME', meson.project_name())
cdata.set_quoted('LOCALEDIR', get_option('prefix') / get_option('localedir'))
cdata.set_quoted('SYSCONFDIR', get_option('prefix') / get_option('sysconfdir'))
cdata.set_quoted('LOCALSTATEDIR', get_option('prefix') / get_option('localstatedir'))
cdata.set_quoted('DATADIR', get_option('prefix') / get_option('datadir'))
cdata.set_quoted('PACKAGE_VERSION', meson.project_version())
cdata.set_quoted('VERSION', meson.project_version())
cdata.set10('ENABLE_NLS', not get_option('nls').disabled())
cdata.set10('HAVE_FUNC_ATTRIBUTE_NORETURN', compiler.has_function_attribute('noreturn'))
cdata.set10('HAVE_STRUCT_TM_TM_GMTOFF',
compiler.has_member('struct tm', 'tm_gmtoff', prefix:'#include <time.h>'))
config_h = configure_file(
input: 'config.h.meson',
output: 'build-config.h',
configuration: cdata
)
dep_config_h = declare_dependency(sources: config_h)
####################################################################### #######################################################################
# Internationalization # Internationalization
@ -122,12 +93,15 @@ dep_pinelog = sub_pinelog.get_variable('libpinelog_dep')
# Use system inih # Use system inih
dep_inih = dependency('inih') dep_inih = dependency('inih')
# Local includes
####################################################################### #######################################################################
# Shared libraries and programs # Shared libraries and programs
####################################################################### #######################################################################
# Includes # Includes
includes = include_directories('.') includes = include_directories('include')
subdir('include')
subdir('libx52') subdir('libx52')
subdir('libx52io') subdir('libx52io')
subdir('libx52util') subdir('libx52util')

View File

@ -52,7 +52,7 @@ def main():
) )
def check_vkm_modifier_symbols(): def check_vkm_modifier_symbols():
vkm = (root / "vkm" / "vkm.h").read_text(encoding="utf-8") vkm = (root / "include" / "vkm" / "vkm.h").read_text(encoding="utf-8")
for name in ( for name in (
"VKM_KEY_MOD_LCTRL", "VKM_KEY_MOD_LCTRL",
"VKM_KEY_MOD_LSHIFT", "VKM_KEY_MOD_LSHIFT",

View File

@ -53,7 +53,6 @@ if host_machine.system() == 'linux' and dep_evdev.found()
test('vkm_linux_evdev', vkm_linux_evdev_test) test('vkm_linux_evdev', vkm_linux_evdev_test)
endif endif
install_headers('vkm.h', subdir: 'vkm')
pkgconfig.generate(lib_vkm, pkgconfig.generate(lib_vkm,
name: 'vkm', name: 'vkm',
description: 'Virtual keyboard/mouse interface library for injecting events into the host OS.', description: 'Virtual keyboard/mouse interface library for injecting events into the host OS.',