blob: f95d5ef133d58e429564a375acc6b5ba9aa194a4 [file]
load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
load("@rules_cc//cc:defs.bzl", "cc_library")
MODULES_LC = glob(["modules/lc/**/*.c"])
MODULES_OM = glob(["modules/om/**/*.c"])
MODULES_IM = [
"modules/im/ximcp/imCallbk.c",
"modules/im/ximcp/imDefFlt.c",
"modules/im/ximcp/imDefIc.c",
"modules/im/ximcp/imDefIm.c",
"modules/im/ximcp/imDefLkup.c",
"modules/im/ximcp/imDispch.c",
"modules/im/ximcp/imEvToWire.c",
"modules/im/ximcp/imExten.c",
"modules/im/ximcp/imImSw.c",
"modules/im/ximcp/imInt.c",
"modules/im/ximcp/imInsClbk.c",
"modules/im/ximcp/imLcFlt.c",
"modules/im/ximcp/imLcGIc.c",
"modules/im/ximcp/imLcIc.c",
"modules/im/ximcp/imLcIm.c",
"modules/im/ximcp/imLcLkup.c",
"modules/im/ximcp/imLcPrs.c",
"modules/im/ximcp/imLcSIc.c",
"modules/im/ximcp/imRm.c",
"modules/im/ximcp/imRmAttr.c",
"modules/im/ximcp/imThaiFlt.c",
"modules/im/ximcp/imThaiIc.c",
"modules/im/ximcp/imThaiIm.c",
"modules/im/ximcp/imTrans.c",
"modules/im/ximcp/imTransR.c",
"modules/im/ximcp/imTrX.c",
]
LIBI18N_SRCS = glob(
[
"src/xlibi18n/**/*.c",
"src/xlibi18n/**/*.h",
],
exclude = [
"src/xlibi18n/lcUniConv/8bit_tab_to_h.c",
"src/xlibi18n/lcUniConv/cjk_tab_to_h.c",
],
)
XCMS_SRCS = glob([
"src/xcms/**/*.c",
"src/xcms/**/*.h",
])
XKB_SRCS = glob([
"src/xkb/**/*.c",
"src/xkb/**/*.h",
])
expand_template(
name = "xlibconf_h",
out = "include/X11/XlibConf.h",
substitutions = {
"#undef XTHREADS": "#define XTHREADS 1",
"#undef XUSE_MTSAFE_API": "#define XUSE_MTSAFE_API 1",
},
template = "include/X11/XlibConf.h.in",
)
cc_binary(
name = "makekeys",
srcs = ["src/util/makekeys.c"],
)
genrule(
name = "ks_tables",
srcs = ["@xorgproto//:include/X11/" + x for x in [
"keysymdef.h",
"XF86keysym.h",
"Sunkeysym.h",
"DECkeysym.h",
"HPkeysym.h",
]],
outs = ["ks_tables.h"],
cmd = "$(location :makekeys) $(SRCS) > $@",
tools = [":makekeys"],
)
UPSTREAM_VERSION = module_version().split(".bcr.", 1)[0]
UPSTREAM_VERSION_MAJOR = UPSTREAM_VERSION.split(".")[0]
UPSTREAM_VERSION_MINOR = UPSTREAM_VERSION.split(".")[1]
UPSTREAM_VERSION_PATCH = UPSTREAM_VERSION.split(".")[2]
expand_template(
name = "config_h",
out = "src/config.h",
substitutions = {
"{LIBX11_VERSION}": UPSTREAM_VERSION,
"{LIBX11_VERSION_MAJOR}": UPSTREAM_VERSION_MAJOR,
"{LIBX11_VERSION_MINOR}": UPSTREAM_VERSION_MINOR,
"{LIBX11_VERSION_PATCH}": UPSTREAM_VERSION_PATCH,
} | select({
"@platforms//os:macos": {},
"//conditions:default": {
"#define BSD44SOCKETS 1": "/* #undef BSD44SOCKETS */",
"#define HAVE_SYS_FILIO_H 1": "/* #undef HAVE_SYS_FILIO_H */",
},
}),
template = "src/config.h.in",
)
cc_library(
name = "x11",
srcs = glob(
[
"src/*.c",
"src/*.h",
],
exclude = ["src/os2Stubs.c"],
) + XCMS_SRCS + XKB_SRCS + LIBI18N_SRCS + MODULES_LC + MODULES_OM + MODULES_IM,
hdrs = glob(["include/X11/**/*.h"]) + [
"//:config_h",
"//:ks_tables",
"//:xlibconf_h",
],
copts = [
"-Wno-implicit-function-declaration",
"-Wno-int-conversion",
"-DHAVE_CONFIG_H",
],
defines = [
"XCMSDIR=\\\"src/xcms\\\"",
"XLOCALELIBDIR=\\\"/tmp\\\"",
],
includes = [
"include",
"include/X11",
"src",
"src/xcms",
"src/xkb",
"src/xlibi18n",
],
visibility = ["//visibility:public"],
deps = [
"@libxau",
"@libxcb",
"@libxtrans",
"@xorgproto",
],
)
alias(
name = "libx11",
actual = ":x11",
visibility = ["//visibility:public"],
)