# © 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", ], )