blob: aeb56038984a24daf5e95e4da1fd3403fa9543eb [file] [log] [blame]
load("@local_xla//xla/tsl/platform:build_config_root.bzl", "if_pywrap")
load("//tensorflow:strict.default.bzl", "py_strict_library")
load("//tensorflow:tensorflow.default.bzl", "tf_python_pybind_extension")
load("//tensorflow/core/platform:rules_cc.bzl", "cc_library")
licenses(["notice"])
package(
# copybara:uncomment default_applicable_licenses = ["//tensorflow:license"],
default_visibility = [
":friends",
"//tensorflow:__pkg__",
],
)
package_group(
name = "friends",
packages = [
"//learning/brain/mobile/lite/tooling/model_analyzer/...",
"//learning/brain/mobile/lite/tools/analyzer/...",
"//tensorflow/lite/python/...",
"//tensorflow/lite/python/converter/...",
"//tensorflow/lite/toco/...",
],
)
cc_library(
name = "tf_tfl_flatbuffer_helpers",
srcs = ["tf_tfl_flatbuffer_helpers.cc"],
hdrs = ["tf_tfl_flatbuffer_helpers.h"],
deps = [
"//tensorflow/compiler/mlir/lite:common",
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:tensorflow_lite",
"//tensorflow/compiler/mlir/lite:tf_to_tfl_flatbuffer",
"//tensorflow/compiler/mlir/lite:types_proto_cc",
"//tensorflow/compiler/mlir/lite/quantization/common/quantization_lib:quantization_config",
"//tensorflow/compiler/mlir/lite/tools/optimize:reduced_precision_metadata",
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib",
"//tensorflow/compiler/mlir/tensorflow:tensorflow_ops",
"//tensorflow/core:core_cpu_base",
"//tensorflow/core:framework",
"//tensorflow/core:lib",
"//tensorflow/core:protos_all_cc",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "graphdef_to_tfl_flatbuffer",
srcs = ["graphdef_to_tfl_flatbuffer.cc"],
hdrs = [
"graphdef_to_tfl_flatbuffer.h",
],
deps = [
":tf_tfl_flatbuffer_helpers",
"//tensorflow/compiler/mlir/lite:common",
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:types_proto_cc",
"//tensorflow/compiler/mlir/lite/quantization/common/quantization_lib:quantization_config",
"//tensorflow/compiler/mlir/tensorflow:mlir_roundtrip_flags",
"//tensorflow/compiler/mlir/tensorflow/translate/tools:parsers",
"//tensorflow/compiler/mlir/tf2xla/api/v2:graph_to_tf_executor",
"//tensorflow/core:core_cpu_base",
"//tensorflow/core:framework",
"//tensorflow/core:lib",
"//tensorflow/core:protos_all_cc",
"@com_google_absl//absl/status",
"@llvm-project//mlir:IR",
],
)
cc_library(
name = "saved_model_to_tfl_flatbuffer",
srcs = ["saved_model_to_tfl_flatbuffer.cc"],
hdrs = [
"saved_model_to_tfl_flatbuffer.h",
],
deps = [
":tf_tfl_flatbuffer_helpers",
"//tensorflow/compiler/mlir/lite:common",
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:tensorflow_lite",
"//tensorflow/compiler/mlir/lite:tf_to_tfl_flatbuffer",
"//tensorflow/compiler/mlir/lite:types_proto_cc",
"//tensorflow/compiler/mlir/lite/quantization/common/quantization_lib:quantization_config",
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib",
"//tensorflow/compiler/mlir/tensorflow:mlir_roundtrip_flags",
"//tensorflow/core:lib",
"//tensorflow/core:protos_all_cc",
"@com_google_absl//absl/status",
"@com_google_absl//absl/types:span",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
],
)
cc_library(
name = "jax_to_tfl_flatbuffer",
srcs = ["jax_to_tfl_flatbuffer.cc"],
hdrs = [
"jax_to_tfl_flatbuffer.h",
],
deps = [
":tf_tfl_flatbuffer_helpers",
"//tensorflow/compiler/mlir/lite:common",
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:tensorflow_lite",
"//tensorflow/compiler/mlir/lite:types_proto_cc",
"//tensorflow/compiler/mlir/lite/quantization/common/quantization_lib:quantization_config",
"//tensorflow/core:lib",
"//tensorflow/core:protos_all_cc",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/utility",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:FuncDialect",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
"@local_xla//xla/hlo/parser:hlo_parser",
"@local_xla//xla/hlo/translate:stablehlo",
"@local_xla//xla/service:hlo_proto_cc",
],
)
# Smaller version of flatbuffer_translate which only converts flatbuffer to MLIR.
cc_library(
name = "flatbuffer_to_mlir",
srcs = [
"flatbuffer_to_mlir.cc",
],
hdrs = [
"flatbuffer_to_mlir.h",
],
deps = [
"//tensorflow/compiler/mlir/lite:flatbuffer_import",
"@com_google_absl//absl/strings:string_view",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
"@llvm-project//mlir:Support",
"@llvm-project//mlir:TranslateLib",
],
)
py_strict_library(
name = "wrap_converter",
srcs = [
"wrap_converter.py",
],
visibility = ["//visibility:public"],
deps = [
":_pywrap_converter_api",
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib_py",
"//tensorflow/python:pywrap_tensorflow",
],
)
config_setting(
name = "tflite_convert_with_select_tf_ops",
define_values = {"tflite_convert_with_select_tf_ops": "true"},
visibility = ["//visibility:private"],
)
filegroup(
name = "converter_python_api_hdrs",
srcs = [
"converter_python_api.h",
],
visibility = ["//visibility:private"],
)
cc_library(
name = "converter_python_api",
srcs = ["converter_python_api.cc"],
hdrs = ["converter_python_api.h"],
features = ["-parse_headers"],
visibility = [
"//tensorflow/python:__subpackages__",
],
deps = [
":flatbuffer_to_mlir",
":graphdef_to_tfl_flatbuffer",
":jax_to_tfl_flatbuffer",
":saved_model_to_tfl_flatbuffer",
"//tensorflow/c:kernels",
"//tensorflow/c:tf_status_headers",
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
"//tensorflow/compiler/mlir/lite:types_proto_cc",
"//tensorflow/compiler/mlir/lite/core:absl_error_model_builder",
"//tensorflow/compiler/mlir/lite/debug:debug_options_proto_cc",
"//tensorflow/compiler/mlir/lite/metrics:error_collector",
"//tensorflow/compiler/mlir/lite/python/interpreter_wrapper:python_error_reporter",
"//tensorflow/compiler/mlir/lite/python/interpreter_wrapper:python_utils",
"//tensorflow/compiler/mlir/lite/quantization/lite:quantize_model",
"//tensorflow/compiler/mlir/lite/schema:schema_fbs",
"//tensorflow/compiler/mlir/lite/sparsity:sparsify_model",
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib",
"//tensorflow/core:framework",
"//tensorflow/core:lib",
"//tensorflow/core:protos_all_cc",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:string_view",
"@com_google_protobuf//:protobuf",
"@com_google_protobuf//:protobuf_headers",
"@flatbuffers//:runtime_cc",
"@local_xla//third_party/python_runtime:headers", # build_cleaner: keep; DNR: b/35864863
"@local_xla//xla/tsl/platform:status",
] + select({
# This is required when running `tflite_convert` from `bazel`.
# It requires to link with TensorFlow Ops to get the op definitions.
":tflite_convert_with_select_tf_ops": [
"//tensorflow/core:ops",
],
"//conditions:default": [],
}),
alwayslink = True,
)
tf_python_pybind_extension(
name = "_pywrap_converter_api",
srcs = [
"converter_python_api_wrapper.cc",
],
hdrs = [":converter_python_api_hdrs"],
enable_stub_generation = True,
pytype_srcs = [
"_pywrap_converter_api.pyi",
],
visibility = [
"//tensorflow/python:__pkg__",
],
deps = [
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib",
"//tensorflow/python/lib/core:pybind11_lib",
"@local_xla//third_party/python_runtime:headers",
"@pybind11",
] + if_pywrap([":converter_python_api"]),
)