blob: e8df50f37dfeb636acc51ce1499fca33e256b0ed [file] [log] [blame]
# Memorymappable, WASM compilable, implementation of the encoder.
#
load("@flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
load("@org_tensorflow//tensorflow:tensorflow.bzl", "tf_gen_op_wrapper_py")
load(":native.bzl", "micore_tf_copts", "micore_tf_deps")
package(
default_visibility = [
"//tensorflow_lite_support:users",
],
licenses = ["notice"], # Apache 2.0
)
filegroup(
name = "testdata",
srcs = glob([
"testdata/**",
]),
)
filegroup(
name = "config_fbs",
srcs = ["config.fbs"],
)
flatbuffer_cc_library(
name = "config",
srcs = [
"config.fbs",
],
)
flatbuffer_cc_library(
name = "encoder_config",
srcs = [
"encoder_config.fbs",
],
includes = [":config_fbs"],
)
flatbuffer_cc_library(
name = "decoder_config",
srcs = [
"decoder_config.fbs",
],
includes = [":config_fbs"],
)
cc_library(
name = "utils",
srcs = [
],
hdrs = [
"utils.h",
],
)
cc_library(
name = "double_array_trie",
srcs = [
],
hdrs = [
"double_array_trie.h",
],
deps = [
":config",
":utils",
],
)
cc_library(
name = "double_array_trie_builder",
srcs = [
"double_array_trie_builder.cc",
],
hdrs = [
"double_array_trie_builder.h",
],
deps = [
":config",
":utils",
"@darts_clone",
],
)
cc_test(
name = "double_array_trie_test",
srcs = [
"double_array_trie_test.cc",
],
deps = [
":double_array_trie",
":double_array_trie_builder",
":encoder_config",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "sentencepiece_constants",
srcs = [],
hdrs = ["sentencepiece_constants.h"],
)
cc_library(
name = "model_converter",
srcs = [
"model_converter.cc",
],
hdrs = [
"model_converter.h",
],
deps = [
":config",
":decoder_config",
":double_array_trie_builder",
":encoder_config",
":sentencepiece_constants",
"//tensorflow_lite_support/cc/port:statusor",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_sentencepiece//src:sentencepiece_model_cc_proto",
],
)
cc_library(
name = "optimized_encoder",
srcs = [
"optimized_encoder.cc",
],
hdrs = [
"optimized_encoder.h",
],
deps = [
":config",
":double_array_trie",
":encoder_config",
],
)
cc_library(
name = "optimized_decoder",
srcs = [
"optimized_decoder.cc",
],
hdrs = [
"optimized_decoder.h",
],
deps = [
"config",
":decoder_config",
":double_array_trie",
],
)
cc_library(
name = "sentencepiece_tokenizer_h",
hdrs = [
"sentencepiece_tokenizer.h",
],
)
cc_library(
name = "sentencepiece_detokenizer_h",
hdrs = [
"sentencepiece_detokenizer.h",
],
)
cc_library(
name = "sentencepiece_tokenizer_op",
srcs = ["sentencepiece_tokenizer_op.cc"],
copts = micore_tf_copts(),
visibility = [
"//visibility:public",
],
deps = [
":sentencepiece_tokenizer_h",
":optimized_encoder",
] + micore_tf_deps(),
alwayslink = 1,
)
cc_binary(
name = "sentencepiece_tokenizer_op.so",
srcs = [
"sentencepiece_tokenizer_op.cc",
],
copts = micore_tf_copts(),
linkshared = 1,
deps = [
":sentencepiece_tokenizer_h",
":optimized_encoder",
] + micore_tf_deps(),
)
cc_library(
name = "sentencepiece_detokenizer_op",
srcs = ["sentencepiece_detokenizer_op.cc"],
copts = micore_tf_copts(),
visibility = [
"//visibility:public",
],
deps = [
":sentencepiece_detokenizer_h",
":optimized_decoder",
] + micore_tf_deps(),
alwayslink = 1,
)
cc_binary(
name = "sentencepiece_detokenizer_op.so",
srcs = [
"sentencepiece_detokenizer_op.cc",
],
copts = micore_tf_copts(),
linkshared = 1,
deps = [
":sentencepiece_detokenizer_h",
":optimized_decoder",
] + micore_tf_deps(),
)
cc_library(
name = "sentencepiece_tokenizer_tflite",
srcs = ["sentencepiece_tokenizer_tflite.cc"],
visibility = [
"//visibility:public",
],
deps =
[
":optimized_encoder",
":sentencepiece_tokenizer_h",
"@flatbuffers",
"@org_tensorflow//tensorflow/lite:framework",
"@org_tensorflow//tensorflow/lite:string_util",
"@org_tensorflow//tensorflow/lite/c:common",
"@org_tensorflow//tensorflow/lite/kernels:kernel_util",
"@org_tensorflow//tensorflow/lite/kernels/internal:tensor",
],
)
cc_library(
name = "sentencepiece_detokenizer_tflite",
srcs = ["sentencepiece_detokenizer_tflite.cc"],
visibility = [
"//visibility:public",
],
deps =
[
":optimized_decoder",
":sentencepiece_detokenizer_h",
"@flatbuffers",
"@org_tensorflow//tensorflow/lite:framework",
"@org_tensorflow//tensorflow/lite:string_util",
"@org_tensorflow//tensorflow/lite/c:common",
"@org_tensorflow//tensorflow/lite/kernels:kernel_util",
"@org_tensorflow//tensorflow/lite/kernels/internal:tensor",
],
)
cc_test(
name = "optimized_encoder_test",
srcs = [
"optimized_encoder_test.cc",
],
data = [
":testdata",
],
deps = [
":double_array_trie_builder",
":encoder_config",
":model_converter",
":optimized_encoder",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:str_format",
"@com_google_googletest//:gtest_main",
"@com_google_sentencepiece//src:sentencepiece_cc_proto",
"@com_google_sentencepiece//src:sentencepiece_processor",
"@org_tensorflow//tensorflow/core:lib",
],
)
cc_test(
name = "optimized_decoder_test",
srcs = [
"optimized_decoder_test.cc",
],
data = [
":testdata",
],
deps = [
":decoder_config",
":double_array_trie_builder",
":model_converter",
":optimized_decoder",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:str_format",
"@com_google_googletest//:gtest_main",
"@com_google_sentencepiece//src:sentencepiece_cc_proto",
"@com_google_sentencepiece//src:sentencepiece_processor",
"@org_tensorflow//tensorflow/core:lib",
],
)
cc_library(
name = "py_tflite_registerer",
srcs = ["py_tflite_registerer.cc"],
hdrs = ["py_tflite_registerer.h"],
deps = [
":sentencepiece_detokenizer_tflite",
":sentencepiece_tokenizer_tflite",
"@org_tensorflow//tensorflow/lite:framework",
"@org_tensorflow//tensorflow/lite/kernels:builtin_ops",
],
alwayslink = 1,
)
config_setting(
name = "armeabi_v7a_and_fastbuild",
values = {
"cpu": "armeabi-v7a",
"compilation_mode": "fastbuild",
},
visibility = ["//visibility:public"],
)
config_setting(
name = "armeabi_v7a_and_dbg",
values = {
"cpu": "armeabi-v7a",
"compilation_mode": "dbg",
},
visibility = ["//visibility:public"],
)
config_setting(
name = "android",
values = {"crosstool_top": "//external:android/crosstool"},
visibility = ["//visibility:public"],
)
config_setting(
name = "macos_i386",
values = {
"apple_platform_type": "macos",
"cpu": "darwin",
},
visibility = ["//visibility:public"],
)
config_setting(
name = "macos_x86_64",
values = {
"apple_platform_type": "macos",
"cpu": "darwin_x86_64",
},
visibility = ["//visibility:public"],
)
alias(
name = "macos",
actual = select({
":macos_i386": ":macos_i386",
":macos_x86_64": ":macos_x86_64",
"//conditions:default": ":macos_i386", # Arbitrarily chosen from above.
}),
visibility = ["//visibility:public"],
)
config_setting(
name = "ios",
values = {
"crosstool_top": "@bazel_tools//tools/cpp:toolchain",
"apple_platform_type": "ios",
},
visibility = ["//visibility:public"],
)
alias(
name = "apple",
actual = select({
":macos": ":macos",
":ios": ":ios",
"//conditions:default": ":ios", # Arbitrarily chosen from above.
}),
visibility = ["//visibility:public"],
)