build: move tests to after tools
So tests can refer to stuff set by the tools section. Signed-off-by: Ran Benita <ran@unusedvar.com>master
parent
d327475282
commit
737030ad5b
259
meson.build
259
meson.build
|
@ -369,6 +369,130 @@ if get_option('enable-xkbregistry')
|
|||
)
|
||||
endif
|
||||
|
||||
man_pages = []
|
||||
|
||||
# Tools
|
||||
build_tools = have_getopt_long
|
||||
if build_tools
|
||||
libxkbcommon_tools_internal = static_library(
|
||||
'tools-internal',
|
||||
'tools/tools-common.h',
|
||||
'tools/tools-common.c',
|
||||
dependencies: libxkbcommon_dep,
|
||||
)
|
||||
tools_dep = declare_dependency(
|
||||
include_directories: [include_directories('tools')],
|
||||
link_with: libxkbcommon_tools_internal,
|
||||
)
|
||||
|
||||
executable('xkbcli', 'tools/xkbcli.c',
|
||||
dependencies: tools_dep, install: true)
|
||||
install_man('tools/xkbcli.1')
|
||||
|
||||
executable('xkbcli-compile-keymap',
|
||||
'tools/compile-keymap.c',
|
||||
dependencies: tools_dep,
|
||||
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'],
|
||||
include_directories: [include_directories('src')],
|
||||
install: false)
|
||||
configh_data.set10('HAVE_XKBCLI_COMPILE_KEYMAP', true)
|
||||
executable('xkbcli-how-to-type',
|
||||
'tools/how-to-type.c',
|
||||
dependencies: tools_dep,
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
install_man('tools/xkbcli-how-to-type.1')
|
||||
configh_data.set10('HAVE_XKBCLI_HOW_TO_TYPE', true)
|
||||
if cc.has_header('linux/input.h')
|
||||
executable('xkbcli-interactive-evdev',
|
||||
'tools/interactive-evdev.c',
|
||||
dependencies: tools_dep,
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
configh_data.set10('HAVE_XKBCLI_INTERACTIVE_EVDEV', true)
|
||||
install_man('tools/xkbcli-interactive-evdev.1')
|
||||
endif
|
||||
if get_option('enable-x11')
|
||||
x11_tools_dep = declare_dependency(
|
||||
link_with: libxkbcommon_x11,
|
||||
dependencies: [
|
||||
tools_dep,
|
||||
xcb_dep,
|
||||
xcb_xkb_dep,
|
||||
],
|
||||
)
|
||||
executable('xkbcli-interactive-x11',
|
||||
'tools/interactive-x11.c',
|
||||
dependencies: x11_tools_dep,
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
install_man('tools/xkbcli-interactive-x11.1')
|
||||
configh_data.set10('HAVE_XKBCLI_INTERACTIVE_X11', true)
|
||||
endif
|
||||
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()
|
||||
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_code_gen = generator(
|
||||
wayland_scanner,
|
||||
output: '@BASENAME@-protocol.c',
|
||||
arguments: ['code', '@INPUT@', '@OUTPUT@'],
|
||||
)
|
||||
wayland_scanner_client_header_gen = generator(
|
||||
wayland_scanner,
|
||||
output: '@BASENAME@-client-protocol.h',
|
||||
arguments: ['client-header', '@INPUT@', '@OUTPUT@'],
|
||||
)
|
||||
wayland_protocols_datadir = wayland_protocols_dep.get_pkgconfig_variable('pkgdatadir')
|
||||
xdg_shell_xml = wayland_protocols_datadir/'stable/xdg-shell/xdg-shell.xml'
|
||||
xdg_shell_sources = [
|
||||
wayland_scanner_code_gen.process(xdg_shell_xml),
|
||||
wayland_scanner_client_header_gen.process(xdg_shell_xml),
|
||||
]
|
||||
executable('xkbcli-interactive-wayland',
|
||||
'tools/interactive-wayland.c',
|
||||
xdg_shell_sources,
|
||||
dependencies: [tools_dep, wayland_client_dep],
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
install_man('tools/xkbcli-interactive-wayland.1')
|
||||
configh_data.set10('HAVE_XKBCLI_INTERACTIVE_WAYLAND', true)
|
||||
endif
|
||||
|
||||
if get_option('enable-xkbregistry')
|
||||
configh_data.set10('HAVE_XKBCLI_LIST', true)
|
||||
executable('xkbcli-list',
|
||||
'tools/registry-list.c',
|
||||
dependencies: dep_libxkbregistry,
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
install_man('tools/xkbcli-list.1')
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
# xkeyboard-config "verifier"
|
||||
xkct_config = configuration_data()
|
||||
xkct_config.set('MESON_BUILD_ROOT', meson.build_root())
|
||||
xkct_config.set('XKB_CONFIG_ROOT', XKBCONFIGROOT)
|
||||
configure_file(input: 'test/xkeyboard-config-test.py.in',
|
||||
output: 'xkeyboard-config-test',
|
||||
configuration: xkct_config)
|
||||
|
||||
# Tests
|
||||
test_env = environment()
|
||||
test_env.set('XKB_LOG_LEVEL', 'debug')
|
||||
|
@ -522,6 +646,12 @@ if get_option('enable-xkbregistry')
|
|||
env: test_env,
|
||||
)
|
||||
endif
|
||||
if build_tools
|
||||
test('tool-option-parsing',
|
||||
find_program('test/tool-option-parsing.py'),
|
||||
env: test_env,
|
||||
suite: ['python-tests'])
|
||||
endif
|
||||
|
||||
valgrind = find_program('valgrind', required: false)
|
||||
if valgrind.found()
|
||||
|
@ -541,135 +671,6 @@ endif
|
|||
executable('fuzz-keymap', 'fuzz/keymap/target.c', dependencies: test_dep)
|
||||
executable('fuzz-compose', 'fuzz/compose/target.c', dependencies: test_dep)
|
||||
|
||||
man_pages = []
|
||||
|
||||
# Tools
|
||||
build_tools = have_getopt_long
|
||||
if build_tools
|
||||
libxkbcommon_tools_internal = static_library(
|
||||
'tools-internal',
|
||||
'tools/tools-common.h',
|
||||
'tools/tools-common.c',
|
||||
dependencies: libxkbcommon_dep,
|
||||
)
|
||||
tools_dep = declare_dependency(
|
||||
include_directories: [include_directories('tools')],
|
||||
link_with: libxkbcommon_tools_internal,
|
||||
)
|
||||
|
||||
executable('xkbcli', 'tools/xkbcli.c',
|
||||
dependencies: tools_dep, install: true)
|
||||
install_man('tools/xkbcli.1')
|
||||
|
||||
executable('xkbcli-compile-keymap',
|
||||
'tools/compile-keymap.c',
|
||||
dependencies: tools_dep,
|
||||
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'],
|
||||
include_directories: [include_directories('src')],
|
||||
install: false)
|
||||
configh_data.set10('HAVE_XKBCLI_COMPILE_KEYMAP', true)
|
||||
executable('xkbcli-how-to-type',
|
||||
'tools/how-to-type.c',
|
||||
dependencies: tools_dep,
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
install_man('tools/xkbcli-how-to-type.1')
|
||||
configh_data.set10('HAVE_XKBCLI_HOW_TO_TYPE', true)
|
||||
if cc.has_header('linux/input.h')
|
||||
executable('xkbcli-interactive-evdev',
|
||||
'tools/interactive-evdev.c',
|
||||
dependencies: tools_dep,
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
configh_data.set10('HAVE_XKBCLI_INTERACTIVE_EVDEV', true)
|
||||
install_man('tools/xkbcli-interactive-evdev.1')
|
||||
endif
|
||||
if get_option('enable-x11')
|
||||
x11_tools_dep = declare_dependency(
|
||||
link_with: libxkbcommon_x11,
|
||||
dependencies: [
|
||||
tools_dep,
|
||||
xcb_dep,
|
||||
xcb_xkb_dep,
|
||||
],
|
||||
)
|
||||
executable('xkbcli-interactive-x11',
|
||||
'tools/interactive-x11.c',
|
||||
dependencies: x11_tools_dep,
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
install_man('tools/xkbcli-interactive-x11.1')
|
||||
configh_data.set10('HAVE_XKBCLI_INTERACTIVE_X11', true)
|
||||
endif
|
||||
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()
|
||||
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_code_gen = generator(
|
||||
wayland_scanner,
|
||||
output: '@BASENAME@-protocol.c',
|
||||
arguments: ['code', '@INPUT@', '@OUTPUT@'],
|
||||
)
|
||||
wayland_scanner_client_header_gen = generator(
|
||||
wayland_scanner,
|
||||
output: '@BASENAME@-client-protocol.h',
|
||||
arguments: ['client-header', '@INPUT@', '@OUTPUT@'],
|
||||
)
|
||||
wayland_protocols_datadir = wayland_protocols_dep.get_pkgconfig_variable('pkgdatadir')
|
||||
xdg_shell_xml = wayland_protocols_datadir/'stable/xdg-shell/xdg-shell.xml'
|
||||
xdg_shell_sources = [
|
||||
wayland_scanner_code_gen.process(xdg_shell_xml),
|
||||
wayland_scanner_client_header_gen.process(xdg_shell_xml),
|
||||
]
|
||||
executable('xkbcli-interactive-wayland',
|
||||
'tools/interactive-wayland.c',
|
||||
xdg_shell_sources,
|
||||
dependencies: [tools_dep, wayland_client_dep],
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
install_man('tools/xkbcli-interactive-wayland.1')
|
||||
configh_data.set10('HAVE_XKBCLI_INTERACTIVE_WAYLAND', true)
|
||||
endif
|
||||
|
||||
if get_option('enable-xkbregistry')
|
||||
configh_data.set10('HAVE_XKBCLI_LIST', true)
|
||||
executable('xkbcli-list',
|
||||
'tools/registry-list.c',
|
||||
dependencies: dep_libxkbregistry,
|
||||
install: true,
|
||||
install_dir: dir_libexec)
|
||||
install_man('tools/xkbcli-list.1')
|
||||
endif
|
||||
|
||||
test('tool-option-parsing',
|
||||
find_program('test/tool-option-parsing.py'),
|
||||
env: test_env,
|
||||
suite: ['python-tests'])
|
||||
endif
|
||||
|
||||
|
||||
# xkeyboard-config "verifier"
|
||||
xkct_config = configuration_data()
|
||||
xkct_config.set('MESON_BUILD_ROOT', meson.build_root())
|
||||
xkct_config.set('XKB_CONFIG_ROOT', XKBCONFIGROOT)
|
||||
configure_file(input: 'test/xkeyboard-config-test.py.in',
|
||||
output: 'xkeyboard-config-test',
|
||||
configuration: xkct_config)
|
||||
|
||||
|
||||
# Benchmarks.
|
||||
libxkbcommon_bench_internal = static_library(
|
||||
|
|
Loading…
Reference in New Issue