Files
tensorflow--tensorflow/tensorflow/lite/c/BUILD
T
wehub-resource-sync 8a852e4b4e
cffconvert / validate (push) Has been skipped
License Check / license-check (push) Failing after 2s
chore: import upstream snapshot with attribution
2026-07-13 12:14:16 +08:00

484 lines
16 KiB
Python

load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
load("//tensorflow:tensorflow.default.bzl", "get_compatible_with_portable")
load(
"//tensorflow/lite:build_def.bzl",
"tflite_cc_library_with_c_headers_test",
"tflite_cc_shared_object",
"tflite_copts",
"tflite_copts_warnings",
"tflite_custom_c_library",
"tflite_linkopts_no_undefined",
"tflite_self_contained_libs_test_suite",
)
load("//tensorflow/lite:special_rules.bzl", "c_api_opaque_internal_visibility_allowlist", "tflite_portable_test_suite")
load("//tensorflow/lite/core/shims:cc_library_with_tflite.bzl", "cc_library_with_tflite_with_c_headers_test")
package(
# copybara:uncomment default_applicable_licenses = ["//tensorflow:LICENSE"],
default_visibility = ["//visibility:public"],
licenses = ["notice"],
)
# Generates a platform-specific shared library containing the TensorFlow Lite C
# API implementation as define in `c_api.h`. The exact output library name
# is platform dependent:
# - Linux/Android: `libtensorflowlite_c.so`
# - Mac: `libtensorflowlite_c.dylib`
# - Windows: `tensorflowlite_c.dll`
tflite_cc_shared_object(
name = "tensorflowlite_c",
linkopts = tflite_linkopts_no_undefined() + select({
"//tensorflow:ios": [
"-Wl,-exported_symbols_list,$(location //tensorflow/lite/c:exported_symbols.lds)",
],
"//tensorflow:macos": [
"-Wl,-exported_symbols_list,$(location //tensorflow/lite/c:exported_symbols.lds)",
],
"//tensorflow:windows": [],
"//conditions:default": [
"-Wl,--version-script,$(location //tensorflow/lite/c:version_script.lds)",
],
}),
per_os_targets = True,
deps = [
":c_api",
":c_api_experimental",
":exported_symbols.lds",
":version_script.lds",
],
)
cc_library_with_tflite_with_c_headers_test(
name = "c_api",
hdrs = [
"c_api.h",
],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts(),
generate_opaque_delegate_target = True,
deps = [
":c_api_without_op_resolver",
"//tensorflow/lite/core/async/c:types",
"//tensorflow/lite/core/c:c_api",
],
)
tflite_cc_library_with_c_headers_test(
name = "c_api_for_testing",
testonly = True,
srcs = ["c_api_for_testing.cc"],
hdrs = ["c_api_for_testing.h"],
deps = [
":c_api",
":c_api_internal",
"//tensorflow/lite/core/c:c_api",
],
)
# TODO(b/248514738): Deprecate this target in favour
# of //third_party/tensorflow/lite/core/c:c_api_without_op_resolver after all known existing uses of
# those targets have been changed to instead refer to the new target.
# Same as ":c_api", but doesn't link in the default CreateOpResolver implementation.
cc_library_with_tflite_with_c_headers_test(
name = "c_api_without_op_resolver",
hdrs = ["c_api.h"],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts(),
tags = ["allow_undefined_symbols"], # For tflite::CreateOpResolver().
deps = [
":c_api_types",
"//tensorflow/lite/core/c:c_api_without_op_resolver",
],
)
# TODO(b/248514738): Deprecate this target in favour
# of //third_party/tensorflow/lite/core/c:c_api_without_op_resolver_without_alwayslink after all
# known existing uses of those targets have been changed to instead refer to the new target.
# Same as ":c_api_without_op_resolver", but without alwayslink=1.
cc_library_with_tflite_with_c_headers_test(
name = "c_api_without_op_resolver_without_alwayslink",
hdrs = ["c_api.h"],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts(),
tags = ["allow_undefined_symbols"], # For tflite::CreateOpResolver().
deps = ["//tensorflow/lite/core/c:c_api_without_op_resolver_without_alwayslink"],
)
cc_library_with_tflite_with_c_headers_test(
name = "c_api_experimental",
hdrs = [
"c_api_experimental.h",
# ':c_api_opaque' was promoted to the 'mostly stable' API.
# Please explicitly add a dependency on ':c_api_opaque' if your target
# needs both ':c_api_experimental' and ':c_api_opaque' dependencies.
# We plan to remove 'c_api_opaque.h' from the list of exposed headers and
# will remove the dependency from this target on ':c_api_opaque' in the future.
"c_api_opaque.h",
],
copts = tflite_copts() + tflite_copts_warnings(),
generate_opaque_delegate_target = True,
tflite_deps = [
":c_api",
],
deps = [
"//tensorflow/lite/core/c:c_api_experimental",
"//tensorflow/lite/core/c:c_api_opaque",
],
)
# Same as ":c_api_experimental", but without linking in the default CreateOpResolver implementation.
cc_library_with_tflite_with_c_headers_test(
name = "c_api_experimental_without_op_resolver",
hdrs = [
"c_api_experimental.h",
# DEPRECATED
# ':c_api_opaque_without_op_resolver' was promoted to the 'mostly stable' API.
# Please explicitly add a dependency on ':c_api_opaque_without_op_resolver' if your target
# needs both ':c_api_experimental_without_op_resolver' and ':c_api_opaque_without_op_resolver' dependencies.
# We plan to remove 'c_api_opaque.h' from the list of exposed headers and
# will remove the dependency from this target on ':c_api_opaque_without_op_resolver' in the future.
"c_api_opaque.h",
],
copts = tflite_copts() + tflite_copts_warnings(),
tags = ["allow_undefined_symbols"], # For tflite::CreateOpResolver().
tflite_deps = [
":c_api_without_op_resolver",
],
deps = [
"//tensorflow/lite/core/c:c_api_experimental_without_op_resolver",
"//tensorflow/lite/core/c:c_api_opaque_without_op_resolver",
],
)
# Same as ":c_api_experimental", but without linking in the default CreateOpResolver implementation,
# and without depending on targets that use alwayslink=1.
cc_library_with_tflite_with_c_headers_test(
name = "c_api_experimental_without_op_resolver_without_alwayslink",
hdrs = [
"c_api_experimental.h",
# DEPRECATED
# ':c_api_opaque_without_op_resolver_without_alwayslink' was promoted to the 'mostly stable' API.
# Please explicitly add a dependency on ':c_api_opaque_without_op_resolver_without_alwayslink'
# if your target needs both ':c_api_experimental_without_op_resolver_without_alwayslink' and
# ':c_api_opaque_without_op_resolver_without_alwayslink' dependencies.
# We plan to remove 'c_api_opaque.h' from the list of exposed headers and
# will remove the dependency from this target on
# ':c_api_opaque_without_op_resolver_without_alwayslink' in the future.
"c_api_opaque.h",
],
copts = tflite_copts() + tflite_copts_warnings(),
tags = ["allow_undefined_symbols"], # For tflite::CreateOpResolver().
tflite_deps = [":c_api_without_op_resolver_without_alwayslink"],
deps = [
"//tensorflow/lite/core/c:c_api_experimental_without_op_resolver_without_alwayslink",
"//tensorflow/lite/core/c:c_api_opaque_without_op_resolver_without_alwayslink",
],
)
cc_library_with_tflite_with_c_headers_test(
name = "c_api_opaque",
hdrs = [
"c_api_opaque.h",
],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts() + tflite_copts_warnings(),
generate_opaque_delegate_target = True,
tflite_deps = [":c_api"],
deps = ["//tensorflow/lite/core/c:c_api_opaque"],
)
cc_library_with_tflite_with_c_headers_test(
name = "c_api_opaque_without_op_resolver",
hdrs = [
"c_api_opaque.h",
],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts() + tflite_copts_warnings(),
tags = ["allow_undefined_symbols"], # For tflite::CreateOpResolver().
tflite_deps = [":c_api_without_op_resolver"],
deps = ["//tensorflow/lite/core/c:c_api_opaque_without_op_resolver"],
)
cc_library_with_tflite_with_c_headers_test(
name = "c_api_opaque_without_op_resolver_without_alwayslink",
hdrs = [
"c_api_opaque.h",
],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts() + tflite_copts_warnings(),
tags = ["allow_undefined_symbols"], # For tflite::CreateOpResolver().
tflite_deps = [
":c_api_without_op_resolver_without_alwayslink",
],
deps = ["//tensorflow/lite/core/c:c_api_opaque_without_op_resolver_without_alwayslink"],
)
cc_library_with_tflite_with_c_headers_test(
name = "c_api_types",
hdrs = ["c_api_types.h"],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts() + tflite_copts_warnings(),
generate_opaque_delegate_target = True,
deps = ["//tensorflow/lite/core/c:c_api_types"],
)
cc_library(
name = "c_api_internal",
hdrs = ["c_api_internal.h"],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts(),
visibility = [
"//tensorflow/lite/core/async/c:__subpackages__",
"//tensorflow/lite/core/c:__subpackages__",
],
deps = [
":common_internal",
"//tensorflow/lite:builtin_ops",
"//tensorflow/lite:framework",
"//tensorflow/lite/core:framework",
"//tensorflow/lite/core/api",
"//tensorflow/lite/core/c:common",
"//tensorflow/lite/profiling/telemetry/c:profiler",
],
)
filegroup(
name = "c_api_test_builtin_op_models",
testonly = 1,
srcs = [
"//tensorflow/lite:testdata/add.bin",
"//tensorflow/lite:testdata/add_quantized.bin",
],
)
# TODO(b/248514738): Deprecate this target in favour
# of //third_party/tensorflow/lite/core/c:c_api_test after all known existing uses of those targets
# have been changed to instead refer to the new target.
test_suite(
name = "c_api_test",
tests = [
"//tensorflow/lite/core/c:c_api_test",
],
)
tflite_custom_c_library(
name = "selectively_built_c_api_test_lib",
testonly = 1,
experimental = True,
models = [":c_api_test_builtin_op_models"],
visibility = [
"//tensorflow/lite/core/c:__subpackages__",
],
)
# TODO(b/248514738): Deprecate this target in favour
# of //third_party/tensorflow/lite/core/c:selectively_built_c_api_test after all known existing uses
# of those targets have been changed to instead refer to the new target.
test_suite(
name = "selectively_built_c_api_test",
tests = [
"//tensorflow/lite/core/c:selectively_built_c_api_test",
],
)
test_suite(
name = "c_api_experimental_test",
tests = [
"//tensorflow/lite/core/c:c_api_experimental_test",
],
)
cc_test(
name = "c_api_signature_runner_test",
size = "small",
srcs = ["c_api_signature_runner_test.cc"],
copts = tflite_copts(),
data = [
"//tensorflow/lite:testdata/multi_signatures.bin",
"//tensorflow/lite:testdata/no_signatures.bin",
],
deps = [
":c_api",
"//tensorflow/lite/core/c:c_api",
"//tensorflow/lite/core/c:common",
"@com_google_googletest//:gtest_main",
],
)
cc_library_with_tflite_with_c_headers_test(
name = "common",
hdrs = [
"builtin_op_data.h",
"common.h",
],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts() + tflite_copts_warnings(),
generate_opaque_delegate_target = True,
tflite_deps = [
":c_api_types",
],
deps = [
"//tensorflow/lite:tflite_kernel_use_xnnpack_optional",
"//tensorflow/lite/core/c:c_api_types",
"//tensorflow/lite/core/c:common",
] + select({
"//tensorflow/lite:tensorflow_profiler_config": [
"//tensorflow/lite:macros",
"//tensorflow/lite:tensorflow_profiler_logger_shim",
],
"//conditions:default": [],
}),
)
cc_library(
name = "common_internal",
srcs = ["common_internal.cc"],
hdrs = ["common_internal.h"],
compatible_with = get_compatible_with_portable(),
copts = tflite_copts(),
visibility = [
"//tensorflow/lite:__subpackages__",
],
deps = [
"//tensorflow/lite/core/c:c_api_types",
"//tensorflow/lite/core/c:common",
],
)
cc_library(
name = "c_api_opaque_internal",
srcs = ["c_api_opaque_internal.cc"],
hdrs = ["c_api_opaque_internal.h"],
compatible_with = get_compatible_with_portable(),
tags = ["allow_undefined_symbols"], # For tflite::CreateOpResolver().
visibility = [
"//tensorflow/lite:__subpackages__",
] + c_api_opaque_internal_visibility_allowlist(),
deps = [
":c_api_types",
"//tensorflow/lite:framework",
"//tensorflow/lite/c:c_api_internal",
"//tensorflow/lite/core/api:op_resolver",
"//tensorflow/lite/core/c:common",
"//tensorflow/lite/core/c:operator",
],
)
cc_test(
name = "c_api_opaque_internal_test",
srcs = ["c_api_opaque_internal_test.cc"],
data = [
"//tensorflow/lite:testdata/add.bin",
],
deps = [
":c_api_internal",
":c_api_opaque_internal",
"//tensorflow/lite:builtin_ops",
"//tensorflow/lite:framework",
"//tensorflow/lite/kernels:builtin_ops",
"@com_google_googletest//:gtest_main",
],
)
# Same as c_api_opaque_internal, but depends on the
# '_without_alwayslink' variant of ':c_api_without_op_resolver'.
cc_library(
name = "c_api_opaque_internal_without_alwayslink",
srcs = ["c_api_opaque_internal.cc"],
hdrs = ["c_api_opaque_internal.h"],
compatible_with = get_compatible_with_portable(),
tags = ["allow_undefined_symbols"], # For tflite::CreateOpResolver().
visibility = [
"//tensorflow/lite:__subpackages__",
],
deps = [
":c_api_types",
"//tensorflow/lite:framework",
"//tensorflow/lite/c:c_api_internal",
"//tensorflow/lite/core/api:op_resolver",
"//tensorflow/lite/core/c:common",
"//tensorflow/lite/core/c:operator_without_alwayslink",
],
)
# For use with library targets that can't use relative paths.
# LINT.IfChange(exported_headers)
exports_files([
"builtin_op_data.h",
"c_api.h",
"c_api_experimental.h",
"c_api_opaque.h",
"c_api_types.h",
"common.h",
])
filegroup(
name = "tensorflowlite_c_api_hdrs_filegroup",
srcs = [
"builtin_op_data.h",
"c_api.h",
"c_api_types.h",
"common.h",
],
)
alias(
name = "tensorflowlite_c_impl_hdrs_filegroup",
actual = "//tensorflow/lite/core/c:headers_filegroup",
)
# LINT.ThenChange(../java/BUILD:TFLITE_HEADERS)
# Test the C extension API code.
test_suite(
name = "common_test",
tests = [
"//tensorflow/lite/core/c:common_test",
],
)
test_suite(
name = "builtin_op_data_test",
tests = [
"//tensorflow/lite/core/c:builtin_op_data_test",
],
)
cc_test(
name = "c_test",
size = "small",
srcs = ["c_test.c"],
copts = tflite_copts(),
data = [
"//tensorflow/lite:testdata/add.bin",
"//tensorflow/lite:testdata/multi_signatures.bin",
],
tags = [
# Testing on Android uses "--gunit_output=xml:test.xml" runtime flag,
# but this test is C code, not C++, and hence doesn't use GUnit,
# so doesn't support that flag.
"tflite_not_portable_android",
],
deps = [
":c_api",
":c_api_experimental",
"//tensorflow/lite/core/c:c_api",
"//tensorflow/lite/core/c:c_api_experimental",
"//tensorflow/lite/core/c:c_api_opaque",
"//tensorflow/lite/core/c:c_api_types",
"//tensorflow/lite/core/c:common",
],
)
cc_library_with_tflite_with_c_headers_test(
name = "test_util",
testonly = True,
srcs = ["test_util.cc"],
hdrs = ["test_util.h"],
generate_opaque_delegate_target = True,
)
tflite_self_contained_libs_test_suite(name = "self_contained_libs_test_suite")
tflite_portable_test_suite()