X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=meson.build;h=a8650c12c47da53a2a0ce860258bfb0a488bd8d5;hb=7654799e4bca986361dcd93fe9e275e046966a68;hp=9971dc0a2f1ed192c4ff8122dfc695eba1ff6a08;hpb=80be81e5ce58aca8484ef7c670a11062e38a9a76;p=platform%2Fupstream%2Flibxkbcommon.git diff --git a/meson.build b/meson.build index 9971dc0..a8650c1 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project( 'libxkbcommon', 'c', - version: '1.5.0', + version: '1.6.0', default_options: [ 'c_std=c11', 'warning_level=2', @@ -156,6 +156,7 @@ map_to_def = find_program('scripts/map-to-def') # (preferred) or byacc (with backtracking enabled). 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'], @@ -164,6 +165,7 @@ if bison.found() else byacc = find_program('byacc', required: false) if byacc.found() + yacc = byacc yacc_gen = generator( byacc, output: ['@BASENAME@.c', '@BASENAME@.h'], @@ -219,6 +221,7 @@ libxkbcommon_sources = [ 'src/keymap.c', 'src/keymap.h', 'src/keymap-priv.c', + 'src/messages-codes.h', 'src/scanner-utils.h', 'src/state.c', 'src/text.c', @@ -242,6 +245,7 @@ elif cc.get_argument_syntax() == 'msvc' libxkbcommon_link_deps += libxkbcommon_def libxkbcommon_link_args += '/DEF:' + libxkbcommon_def.full_path() endif + libxkbcommon = library( 'xkbcommon', 'include/xkbcommon/xkbcommon.h', @@ -412,12 +416,21 @@ endif man_pages = [] # Tools +if get_option('enable-tools') build_tools = get_option('enable-tools') and cc.has_header_symbol('getopt.h', 'getopt_long', prefix: '#define _GNU_SOURCE') +else +build_tools = false +endif + if build_tools - libxkbcommon_tools_internal = static_library( - 'tools-internal', + # Common resources + 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( @@ -426,10 +439,27 @@ if build_tools dependencies: dep_libxkbcommon, ) + # Tool: xkbcli executable('xkbcli', 'tools/xkbcli.c', dependencies: tools_dep, install: true) install_man('tools/xkbcli.1') + if get_option('enable-bash-completion') + bash_completion_path = get_option('bash-completion-path') + if bash_completion_path == '' + bash_completion = dependency('bash-completion', required: false) + if bash_completion.found() + bash_completion_path = bash_completion.get_variable(pkgconfig: 'completionsdir') + else + bash_completion_path = get_option('datadir') / 'bash-completion/completions' + endif + endif + install_data('tools/xkbcli-bash-completion.sh', + rename: 'xkbcli', + install_dir: bash_completion_path) + endif + + # Tool: compile-keymap xkbcli_compile_keymap = executable('xkbcli-compile-keymap', 'tools/compile-keymap.c', dependencies: tools_dep, @@ -444,12 +474,16 @@ if build_tools c_args: ['-DENABLE_PRIVATE_APIS'], include_directories: [include_directories('src', 'include')], install: false) + + # Tool: compose executable('compose', 'tools/compose.c', dependencies: tools_dep, include_directories: [include_directories('src', 'include')], install: false) configh_data.set10('HAVE_XKBCLI_COMPILE_KEYMAP', true) + + # Tool: how-to-type executable('xkbcli-how-to-type', 'tools/how-to-type.c', dependencies: tools_dep, @@ -457,6 +491,8 @@ if build_tools install_dir: dir_libexec) install_man('tools/xkbcli-how-to-type.1') configh_data.set10('HAVE_XKBCLI_HOW_TO_TYPE', true) + + # Tool: interactive-evdev if cc.has_header('linux/input.h') executable('xkbcli-interactive-evdev', 'tools/interactive-evdev.c', @@ -465,7 +501,18 @@ if build_tools 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 + + # Tool: interactive-x11 if get_option('enable-x11') x11_tools_dep = declare_dependency( link_with: libxkbcommon_x11, @@ -483,6 +530,8 @@ if build_tools install_man('tools/xkbcli-interactive-x11.1') configh_data.set10('HAVE_XKBCLI_INTERACTIVE_X11', true) endif + + # Tool: interactive-wayland 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) @@ -519,6 +568,7 @@ You can disable the Wayland xkbcli programs with -Denable-wayland=false.''') configh_data.set10('HAVE_XKBCLI_INTERACTIVE_WAYLAND', true) endif + # Tool: list if get_option('enable-xkbregistry') configh_data.set10('HAVE_XKBCLI_LIST', true) executable('xkbcli-list', @@ -528,6 +578,16 @@ You can disable the Wayland xkbcli programs with -Denable-wayland=false.''') install_dir: dir_libexec) install_man('tools/xkbcli-list.1') endif + + # Tool: check-messages + 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 @@ -571,9 +631,11 @@ test_dep = declare_dependency( 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: [ @@ -582,7 +644,7 @@ if get_option('enable-x11') ], ) x11_test_dep = declare_dependency( - link_with: libxkbcommon_x11_internal, + link_with: libxkbcommon_x11_test_internal, dependencies: [ test_dep, xcb_dep, @@ -681,15 +743,28 @@ test( 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( @@ -766,6 +841,11 @@ benchmark( env: bench_env, ) benchmark( + 'compose-traversal', + executable('bench-compose-traversal', 'bench/compose-traversal.c', dependencies: test_dep), + env: bench_env, +) +benchmark( 'atom', executable('bench-atom', 'bench/atom.c', dependencies: test_dep), env: bench_env, @@ -790,12 +870,15 @@ You can disable the documentation with -Denable-docs=false.''') 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', @@ -815,15 +898,36 @@ You can disable the documentation with -Denable-docs=false.''') ) # 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) @@ -838,3 +942,35 @@ endif 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