blob: 65dfc1036ee61d0807ba1c651140321deb552820 [file] [edit]
# Copyright 2024 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
load("@org_tensorflow//tensorflow/lite:build_def.bzl", "tflite_cc_shared_object")
load("@org_tensorflow//tensorflow/lite/core/shims:cc_library_with_tflite.bzl", "cc_library_with_tflite")
load("@rules_cc//cc:defs.bzl", "cc_binary")
exports_files(["settings.json"])
cc_library_with_tflite(
name = "neuron_implementation",
srcs = [
"neuron_implementation.cc",
"neuron_types.h",
],
hdrs = [
"neuron_implementation.h",
],
generate_opaque_delegate_target = True,
deps = [
"//common:minimal_logging",
],
)
cc_library_with_tflite(
name = "neuron_delegate",
srcs = [
"mtk/mtk_minimal_logging.h",
"mtk/mtk_utils.cc",
"mtk/mtk_utils.h",
"mtk/mtkext_ops.h",
"neuron_async_kernel.cc",
"neuron_async_kernel.h",
"neuron_delegate.cc",
"neuron_delegate_builder.h",
"neuron_delegate_kernel.cc",
"neuron_delegate_kernel.h",
"neuron_delegate_options.h",
"neuron_delegate_utils.h",
"neuron_delegate_validation.cc",
"neuron_delegate_validation.h",
"neuron_types.h",
"neuron_version.h",
],
hdrs = [
"neuron_delegate.h",
],
generate_opaque_delegate_target = True,
tflite_deps = [
"@org_tensorflow//tensorflow/lite/c:common",
"@org_tensorflow//tensorflow/lite/c:c_api",
"@org_tensorflow//tensorflow/lite/c:c_api_experimental",
"@org_tensorflow//tensorflow/lite/c:c_api_types",
"@org_tensorflow//tensorflow/lite/delegates/utils:simple_opaque_delegate",
"//common:simple_async_delegate",
],
deps = [
":neuron_implementation",
"//android:hardware_buffer",
"//common:minimal_logging",
"@farmhash_archive//:farmhash",
"@org_tensorflow//tensorflow/lite/async:backend_async_kernel_interface",
"@org_tensorflow//tensorflow/lite/async/c:async_kernel",
"@org_tensorflow//tensorflow/lite/async/c:types",
"@org_tensorflow//tensorflow/lite/async/interop/c:attribute_map",
"@org_tensorflow//tensorflow/lite/async/interop/c:types",
"@org_tensorflow//tensorflow/lite/core/async/c:async_kernel",
"@org_tensorflow//tensorflow/lite/core/async/c:task",
"@org_tensorflow//tensorflow/lite/core/async/interop/c:attribute_map",
"@org_tensorflow//tensorflow/lite/core/async/interop/c:constants",
"@org_tensorflow//tensorflow/lite/delegates/utils",
"@org_tensorflow//tensorflow/lite/delegates/utils:async_type_helpers",
"@org_tensorflow//tensorflow/lite/delegates/utils:ret_macros",
"@org_tensorflow//tensorflow/lite/delegates/utils:sync_fence",
],
)
cc_library_with_tflite(
name = "neuron_delegate_external",
srcs = [
"neuron_delegate_external.cc",
],
generate_opaque_delegate_target = True,
tflite_deps = [
":neuron_delegate",
"//common:simple_async_delegate",
"@org_tensorflow//tensorflow/lite/acceleration/configuration/c:delegate_plugin",
"@org_tensorflow//tensorflow/lite/acceleration/configuration/c:stable_delegate",
"@org_tensorflow//tensorflow/lite/c:common",
"@org_tensorflow//tensorflow/lite/delegates/utils/experimental/stable_delegate:stable_delegate_interface",
],
)
tflite_cc_shared_object(
name = "tensorflowlite_mtk_neuron_delegate",
srcs = ["//android:libnativewindow.so"],
linkopts = [
"-Wl,--no-undefined",
# Expose necessary symbols only.
"-Wl,--version-script,$(location @org_tensorflow//tensorflow/lite/delegates/utils/experimental/stable_delegate:version_script.lds)",
],
visibility = ["//:__pkg__"],
deps = [
":neuron_delegate_external_opaque_delegate",
"@org_tensorflow//tensorflow/lite/delegates/utils/experimental/stable_delegate:version_script.lds",
],
)
cc_binary(
name = "neuron_delegate_test",
testonly = True,
srcs = [
"neuron_delegate_test.cc",
],
deps = [
"//common:simple_model_builder",
"//common:sync_driver",
"//common/test_util:aligned_tflite_buffer_allocator",
"//common/test_util:fp16_compare",
"@com_google_absl//absl/random",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/time",
"@com_google_googletest//:gtest",
"@org_tensorflow//tensorflow/lite:framework",
"@org_tensorflow//tensorflow/lite/delegates/utils/experimental/stable_delegate:delegate_loader",
"@org_tensorflow//tensorflow/lite/kernels:builtin_ops",
],
)