blob: 2d85cdb180e1284048ec961ca33abf03404a920a [file] [log] [blame]
# © 2021 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
# This file defines Bazel targets for a subset of the ICU4C "i18n" library header and source files.
# The configuration of dependencies among targets is strongly assisted by the
# file in depstest that maintains such information, at
# icu4c/source/test/depstest/dependencies.txt .
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
package(
default_visibility = ["//visibility:public"],
)
# When compiling code in the `common` dir, the constant
# `U_I18n_IMPLEMENTATION` needs to be defined. See
# https://unicode-org.github.io/icu/userguide/howtouseicu#c-with-your-own-build-system .
# If linker errors occur, then this may be a sign that the dependencies were
# not specified correctly. Use dependencies.txt in depstest for assistance. See
# https://stackoverflow.com/q/66111709/2077918 .
cc_library(
name = "headers",
hdrs = glob([
"unicode/*.h", # public
"*.h", # internal
]),
# We need to add includes in order to preserve existing source files'
# include directives that use traditional paths, not paths relative to
# Bazel workspace:
# https://stackoverflow.com/a/65635893/2077918
includes = ["."],
local_defines = [
"U_I18N_IMPLEMENTATION",
],
)
cc_library(
name = "collation",
srcs = [
"bocsu.cpp",
"coleitr.cpp",
"coll.cpp",
"collation.cpp",
"collationcompare.cpp",
"collationdata.cpp",
"collationdatareader.cpp",
"collationdatawriter.cpp",
"collationfastlatin.cpp",
# collationfcd.cpp is generated by genuca;
# probably hard to build genuca without depending on the old version.
"collationfcd.cpp",
"collationiterator.cpp",
"collationkeys.cpp",
"collationroot.cpp",
"collationrootelements.cpp",
"collationsets.cpp",
"collationsettings.cpp",
"collationtailoring.cpp",
"rulebasedcollator.cpp",
"sortkey.cpp",
"ucol.cpp",
"ucol_res.cpp",
"ucol_sit.cpp",
"ucoleitr.cpp",
"uitercollationiterator.cpp",
"utf16collationiterator.cpp",
"utf8collationiterator.cpp",
],
includes = ["."],
deps = [
":headers",
":uclean_i18n",
"//icu4c/source/common:bytestream",
"//icu4c/source/common:normalizer2",
"//icu4c/source/common:platform",
"//icu4c/source/common:propname",
"//icu4c/source/common:resourcebundle",
"//icu4c/source/common:service_registration",
"//icu4c/source/common:ucharstrieiterator",
"//icu4c/source/common:uiter",
"//icu4c/source/common:ulist",
"//icu4c/source/common:unifiedcache",
"//icu4c/source/common:uset",
"//icu4c/source/common:usetiter",
"//icu4c/source/common:utrie2",
"//icu4c/source/common:uvector32",
"//icu4c/source/common:uvector64",
],
local_defines = [
"U_I18N_IMPLEMENTATION",
],
)
cc_library(
name = "collation_builder",
srcs = [
"collationbuilder.cpp",
"collationdatabuilder.cpp",
"collationfastlatinbuilder.cpp",
"collationruleparser.cpp",
"collationweights.cpp",
],
includes = ["."],
deps = [
":collation",
"//icu4c/source/common:canonical_iterator",
"//icu4c/source/common:ucharstriebuilder",
"//icu4c/source/common:uset_props"
],
local_defines = [
"U_I18N_IMPLEMENTATION",
],
)
cc_library(
name = "uclean_i18n",
srcs = [
"ucln_in.cpp",
],
hdrs = ["ucln_in.h"],
includes = ["."],
deps = [
"//icu4c/source/common:platform",
],
local_defines = [
"U_I18N_IMPLEMENTATION",
],
)