load("@rules_bison//bison:bison.bzl", "bison") load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("@rules_cc_autoconf//autoconf:autoconf.bzl", "autoconf") load("@rules_cc_autoconf//autoconf:autoconf_hdr.bzl", "autoconf_hdr") load("@rules_license//rules:license.bzl", "license") load(":xkbcommon_config_checks.bzl", "XKBCOMMON_CONFIG_CHECKS") package( default_applicable_licenses = [":license"], ) license( name = "license", license_kinds = [ "@rules_license//licenses/spdx:DEC-3-Clause", "@rules_license//licenses/spdx:HPND", "@rules_license//licenses/spdx:HPND-sell-variant", "@rules_license//licenses/spdx:MIT", "@rules_license//licenses/spdx:MIT-open-group", ], license_text = "LICENSE", ) exports_files(["LICENSE"]) autoconf( name = "xkbcommon_config_checks", checks = XKBCOMMON_CONFIG_CHECKS, ) autoconf_hdr( name = "config_h", out = "generated/config.h", # Upstream Meson only defines PATH_MAX when the platform headers do not. # Its fallback is 260 on Windows and 4096 everywhere else. substitutions = select({ "@platforms//os:windows": { "@PATH_MAX_VALUE@": "260", }, "//conditions:default": { "@PATH_MAX_VALUE@": "4096", }, }), template = "config.h.in", deps = [":xkbcommon_config_checks"], ) bison( name = "parser", src = "src/xkbcomp/parser.y", bison_options = [ "-p", "_xkbcommon_", ], visibility = ["//visibility:private"], ) CORE_SRCS = [ "src/atom.c", "src/compose/parser.c", "src/compose/paths.c", "src/compose/state.c", "src/compose/table.c", "src/context-priv.c", "src/context.c", "src/keymap-priv.c", "src/keymap.c", "src/keysym-case-mappings.c", "src/keysym-utf.c", "src/keysym.c", "src/scanner-utils.c", "src/state.c", "src/text.c", "src/utf8-decoding.c", "src/utf8.c", "src/utils-paths.c", "src/utils.c", "src/xkbcomp/action.c", "src/xkbcomp/ast-build.c", "src/xkbcomp/compat.c", "src/xkbcomp/expr.c", "src/xkbcomp/include.c", "src/xkbcomp/keycodes.c", "src/xkbcomp/keymap.c", "src/xkbcomp/keymap-dump.c", "src/xkbcomp/keywords.c", "src/xkbcomp/rules.c", "src/xkbcomp/scanner.c", "src/xkbcomp/symbols.c", "src/xkbcomp/types.c", "src/xkbcomp/vmod.c", "src/xkbcomp/xkbcomp.c", ] + [":parser"] COMMON_COPTS = select({ "@platforms//os:windows": [], "//conditions:default": [ "-fno-strict-aliasing", "-Wno-unused-parameter", "-Wno-missing-field-initializers", ], }) cc_library( name = "xkbcommon_headers", hdrs = [ "include/xkbcommon/xkbcommon.h", "include/xkbcommon/xkbcommon-compat.h", "include/xkbcommon/xkbcommon-compose.h", "include/xkbcommon/xkbcommon-keysyms.h", "include/xkbcommon/xkbcommon-names.h", ], strip_include_prefix = "include", visibility = ["//visibility:public"], ) cc_library( name = "xkbcommon_private_headers", hdrs = glob( ["src/**/*.h"], exclude = ["src/x11/**/*.h"], ) + [ ":config_h", ":parser", ], includes = [ ".", "generated", "src", ], visibility = ["//visibility:private"], deps = [":xkbcommon_headers"], ) cc_library( name = "xkbcommon", srcs = CORE_SRCS, copts = COMMON_COPTS, implementation_deps = [":xkbcommon_private_headers"], visibility = ["//visibility:public"], deps = [ ":xkbcommon_headers", ], ) cc_test( name = "xkbcommon_headers_consumer_compile_test", srcs = ["xkbcommon_headers_consumer_compile_test.cc"], deps = [":xkbcommon_headers"], ) cc_test( name = "xkbcommon_consumer_link_test", srcs = ["xkbcommon_consumer_link_test.cc"], deps = [":xkbcommon"], ) cc_test( name = "xkbcommon_compose_from_buffer_test", srcs = ["xkbcommon_compose_from_buffer_test.cc"], deps = [":xkbcommon"], )