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