'warning_level=2',
'b_lundef=true',
],
- meson_version : '>= 0.51.0',
+ meson_version : '>= 0.52.0',
)
pkgconfig = import('pkgconfig')
cc = meson.get_compiler('c')
# libxkbcommon.
# Note: we use some yacc extensions, which work with either GNU bison
# (preferred) or byacc (with backtracking enabled).
-bison = find_program('bison', 'win_bison', required: false)
+bison = find_program('bison', 'win_bison', required: false, version: '>= 2.3a')
if bison.found()
+ yacc = bison
yacc_gen = generator(
bison,
output: ['@BASENAME@.c', '@BASENAME@.h'],
else
byacc = find_program('byacc', required: false)
if byacc.found()
+ yacc = byacc
yacc_gen = generator(
byacc,
output: ['@BASENAME@.c', '@BASENAME@.h'],
'src/keymap.c',
'src/keymap.h',
'src/keymap-priv.c',
+ 'src/messages-codes.h',
'src/scanner-utils.h',
'src/state.c',
'src/text.c',
# Tools
build_tools = get_option('enable-tools') and cc.has_header_symbol('getopt.h', 'getopt_long', prefix: '#define _GNU_SOURCE')
if build_tools
- libxkbcommon_tools_internal = static_library(
- 'tools-internal',
+ libxkbcommon_tools_internal_sources = [
'tools/tools-common.h',
'tools/tools-common.c',
+ ]
+ libxkbcommon_tools_internal = static_library(
+ 'tools-internal',
+ libxkbcommon_tools_internal_sources,
dependencies: dep_libxkbcommon,
)
tools_dep = declare_dependency(
include_directories: [include_directories('tools', 'include')],
link_with: libxkbcommon_tools_internal,
+ dependencies: dep_libxkbcommon,
)
executable('xkbcli', 'tools/xkbcli.c',
install_dir: dir_libexec)
configh_data.set10('HAVE_XKBCLI_INTERACTIVE_EVDEV', true)
install_man('tools/xkbcli-interactive-evdev.1')
+ # The same tool again, but with access to some private APIs.
+ executable('interactive-evdev',
+ 'tools/interactive-evdev.c',
+ libxkbcommon_sources,
+ libxkbcommon_tools_internal_sources,
+ dependencies: [tools_dep],
+ c_args: ['-DENABLE_PRIVATE_APIS'],
+ include_directories: [include_directories('src', 'include')],
+ install: false)
endif
if get_option('enable-x11')
x11_tools_dep = declare_dependency(
install_dir: dir_libexec)
install_man('tools/xkbcli-list.1')
endif
+
+ executable('xkb-check-messages',
+ 'tools/check-messages.c',
+ 'tools/messages.c',
+ 'tools/messages.h',
+ 'src/messages-codes.h',
+ dependencies: [tools_dep],
+ include_directories: [include_directories('src', 'include', 'tools')],
+ install: false)
endif
link_with: libxkbcommon_test_internal,
)
if get_option('enable-x11')
- libxkbcommon_x11_internal = static_library(
+ libxkbcommon_x11_test_internal = static_library(
'xkbcommon-x11-internal',
libxkbcommon_x11_sources,
+ 'test/xvfb-wrapper.c',
+ 'test/xvfb-wrapper.h',
include_directories: include_directories('src', 'include'),
link_with: libxkbcommon_test_internal,
dependencies: [
],
)
x11_test_dep = declare_dependency(
- link_with: libxkbcommon_x11_internal,
+ link_with: libxkbcommon_x11_test_internal,
dependencies: [
test_dep,
xcb_dep,
executable('test-modifiers', 'test/modifiers.c', dependencies: test_dep),
env: test_env,
)
+test(
+ 'messages',
+ executable(
+ 'test-messages',
+ 'test/messages.c',
+ 'tools/messages.c',
+ 'tools/messages.h',
+ include_directories: include_directories('src', 'include', 'tools'),
+ dependencies: test_dep),
+ env: test_env,
+)
if get_option('enable-x11')
test(
'x11',
executable('test-x11', 'test/x11.c', dependencies: x11_test_dep),
env: test_env,
)
- # test/x11comp is meant to be run, but it is (temporarily?) disabled.
- # See: https://github.com/xkbcommon/libxkbcommon/issues/30
- executable('test-x11comp', 'test/x11comp.c', dependencies: x11_test_dep)
+ test(
+ 'x11comp',
+ executable('test-x11comp', 'test/x11comp.c', dependencies: x11_test_dep),
+ env: test_env,
+ )
endif
if get_option('enable-xkbregistry')
test(
doxygen_input = [
'README.md',
+ 'doc/diagrams/xkb-configuration.dot',
'doc/doxygen-extra.css',
+ 'doc/introduction-to-xkb.md',
'doc/quick-guide.md',
- 'doc/compat.md',
+ 'doc/compatibility.md',
'doc/user-configuration.md',
'doc/rules-format.md',
'doc/keymap-format-text-v1.md',
+ 'doc/message-registry.md',
'include/xkbcommon/xkbcommon.h',
'include/xkbcommon/xkbcommon-compose.h',
'include/xkbcommon/xkbcommon-keysyms.h',
)
# TODO: Meson should provide this.
docdir = get_option('datadir')/'doc'/meson.project_name()
- custom_target(
+ doc_gen = custom_target(
'doc',
input: [doxyfile] + doxygen_input,
output: 'html',
- command: [doxygen_wrapper, doxygen, meson.current_build_dir()/'Doxyfile', meson.current_source_dir()],
+ command: [
+ doxygen_wrapper,
+ doxygen,
+ meson.current_build_dir()/'Doxyfile',
+ meson.current_source_dir(),
+ ],
install: true,
install_dir: docdir,
build_by_default: true,
)
+ if get_option('enable-cool-uris')
+ ensure_stable_urls = find_program('scripts'/'ensure-stable-doc-urls.py')
+ custom_target(
+ 'doc-cool-uris',
+ input: [doc_gen, 'doc'/'cool-uris.yaml'],
+ output: 'html-xtra',
+ command: [
+ ensure_stable_urls,
+ 'generate-redirections',
+ meson.current_source_dir()/'doc'/'cool-uris.yaml',
+ meson.current_build_dir()/'html'
+ ],
+ install: false,
+ build_by_default: true,
+ )
+ endif
endif
configure_file(output: 'config.h', configuration: configh_data)
if get_option('enable-xkbregistry')
libxkbregistry_dep = dep_libxkbregistry
endif
+
+if meson.version().version_compare('>=0.62.0')
+ summary({
+ 'backend': meson.backend(),
+ 'buildtype': get_option('buildtype'),
+ 'c_args': get_option('c_args'),
+ 'c_link_args': get_option('c_link_args'),
+ 'yacc': yacc.full_path() + ' ' + yacc.version(),
+ }, section: 'Compiler')
+ summary({
+ 'prefix': get_option('prefix'),
+ 'bindir': get_option('bindir'),
+ 'libdir': get_option('libdir'),
+ 'datadir': get_option('datadir'),
+ 'xkb-config-root': XKBCONFIGROOT,
+ 'xkb-config-extra-path': XKBCONFIGEXTRAPATH,
+ 'xlocaledir': XLOCALEDIR,
+ }, section: 'Directories')
+ summary({
+ 'docs': get_option('enable-docs'),
+ 'tools': get_option('enable-tools'),
+ 'wayland': get_option('enable-wayland'),
+ 'x11': get_option('enable-x11'),
+ }, section: 'Features')
+ summary({
+ 'layout': get_option('default-layout'),
+ 'model': get_option('default-model'),
+ 'options': get_option('default-options'),
+ 'rules': get_option('default-rules'),
+ 'variant': get_option('default-variant'),
+ }, section: 'Defaults')
+endif