249 lines
6.7 KiB
Python
249 lines
6.7 KiB
Python
# Copyright 2019 The TensorFlow Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# ==============================================================================
|
|
|
|
load("@flatbuffers//:build_defs.bzl", "flatbuffer_android_library", "flatbuffer_cc_library", "flatbuffer_java_library")
|
|
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
|
|
load("@rules_cc//cc:cc_library.bzl", "cc_library")
|
|
load("@rules_cc//cc:cc_test.bzl", "cc_test")
|
|
load("@xla//third_party/rules_python/python:py_binary.bzl", "py_binary")
|
|
load("//tensorflow/core/platform:build_config_root.bzl", "tf_gpu_tests_tags")
|
|
load("//tensorflow/lite:special_rules.bzl", "gpu_compatibility_without_gl_deps_internal_visibility_allowlist", "tflite_extra_gles_deps", "tflite_portable_test_suite")
|
|
|
|
package(
|
|
# copybara:uncomment default_applicable_licenses = ["//tensorflow:LICENSE"],
|
|
default_visibility = [
|
|
"//visibility:public",
|
|
],
|
|
licenses = ["notice"],
|
|
)
|
|
|
|
flatbuffer_cc_library(
|
|
name = "database_fbs",
|
|
srcs = ["database.fbs"],
|
|
)
|
|
|
|
exports_files(srcs = ["database.fbs"])
|
|
|
|
flatbuffer_java_library(
|
|
name = "database_fbs_java",
|
|
srcs = ["database.fbs"],
|
|
package_prefix = "org.tensorflow",
|
|
)
|
|
|
|
flatbuffer_android_library(
|
|
name = "database_fbs_android",
|
|
srcs = ["database.fbs"],
|
|
package_prefix = "org.tensorflow",
|
|
)
|
|
|
|
cc_library(
|
|
name = "canonicalize_value",
|
|
srcs = ["canonicalize_value.cc"],
|
|
hdrs = ["canonicalize_value.h"],
|
|
deps = [
|
|
":devicedb",
|
|
"@com_google_absl//absl/algorithm:container",
|
|
"@com_google_absl//absl/strings",
|
|
"@com_googlesource_code_re2//:re2",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "canonicalize_value_test",
|
|
srcs = ["canonicalize_value_test.cc"],
|
|
deps = [
|
|
":canonicalize_value",
|
|
":devicedb",
|
|
"@com_google_googletest//:gtest_main",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "devicedb",
|
|
srcs = [
|
|
"devicedb.cc",
|
|
],
|
|
hdrs = [
|
|
"devicedb.h",
|
|
"variables.h",
|
|
],
|
|
deps = [
|
|
":database_fbs",
|
|
],
|
|
)
|
|
|
|
cc_binary(
|
|
name = "json_to_fb",
|
|
srcs = ["json_to_fb.cc"],
|
|
deps = [
|
|
"//tensorflow/lite/tools:command_line_flags",
|
|
"@flatbuffers",
|
|
],
|
|
)
|
|
|
|
genrule(
|
|
name = "devicedb-sample_bin",
|
|
srcs = [
|
|
"database.fbs",
|
|
"devicedb-sample.json",
|
|
],
|
|
outs = ["devicedb-sample.bin"],
|
|
cmd = """
|
|
$(location :json_to_fb) \
|
|
--fbs=$(location :database.fbs) \
|
|
--json_input=$(location :devicedb-sample.json) \
|
|
--fb_output=$(@)
|
|
""",
|
|
tools = [":json_to_fb"],
|
|
)
|
|
|
|
py_binary(
|
|
name = "convert_binary_to_cc_source",
|
|
srcs = ["convert_binary_to_cc_source.py"],
|
|
strict_deps = True,
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
genrule(
|
|
name = "devicedb-sample_cc",
|
|
srcs = ["devicedb-sample.bin"],
|
|
outs = [
|
|
"devicedb-sample.cc",
|
|
"devicedb-sample.h",
|
|
],
|
|
# convert_file_to_c_source for some reason doesn't define the global with
|
|
# 'extern', which is needed for global const variables in C++.
|
|
cmd = """
|
|
$(location :convert_binary_to_cc_source) \
|
|
--input_binary_file $(location :devicedb-sample.bin) \
|
|
--output_header_file $(location :devicedb-sample.h) \
|
|
--output_source_file $(location :devicedb-sample.cc) \
|
|
--array_variable_name g_tflite_acceleration_devicedb_sample_binary
|
|
""",
|
|
tools = [":convert_binary_to_cc_source"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "devicedb_sample",
|
|
srcs = ["devicedb-sample.cc"],
|
|
hdrs = [
|
|
"devicedb-sample.h",
|
|
"variables.h",
|
|
],
|
|
deps = [":database_fbs"],
|
|
)
|
|
|
|
cc_test(
|
|
name = "devicedb_test",
|
|
srcs = [
|
|
"devicedb_test.cc",
|
|
],
|
|
deps = [
|
|
":database_fbs",
|
|
":devicedb",
|
|
":devicedb_sample",
|
|
"//tensorflow/lite/testing:util",
|
|
"@com_google_googletest//:gtest_main",
|
|
"@flatbuffers",
|
|
],
|
|
)
|
|
|
|
exports_files([
|
|
"database.fbs",
|
|
"gpu_compatibility.bin",
|
|
])
|
|
|
|
genrule(
|
|
name = "gpu_compatibility_binary",
|
|
srcs = ["gpu_compatibility.bin"],
|
|
outs = [
|
|
"gpu_compatibility_binary.h",
|
|
"gpu_compatibility_binary.cc",
|
|
],
|
|
# convert_file_to_c_source for some reason doesn't define the global with
|
|
# 'extern', which is needed for global const variables in C++.
|
|
cmd = """
|
|
$(location :convert_binary_to_cc_source) \
|
|
--input_binary_file $(location :gpu_compatibility.bin) \
|
|
--output_header_file $(location :gpu_compatibility_binary.h) \
|
|
--output_source_file $(location :gpu_compatibility_binary.cc) \
|
|
--array_variable_name g_tflite_acceleration_gpu_compatibility_binary
|
|
""",
|
|
tools = [":convert_binary_to_cc_source"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "android_info",
|
|
srcs = ["android_info.cc"],
|
|
hdrs = ["android_info.h"],
|
|
deps = [
|
|
"@com_google_absl//absl/status",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "gpu_compatibility_binary_embed",
|
|
srcs = [":gpu_compatibility_binary.cc"],
|
|
hdrs = [":gpu_compatibility_binary.h"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "gpu_compatibility",
|
|
hdrs = ["gpu_compatibility.h"],
|
|
deps = [
|
|
":android_info",
|
|
":database_fbs",
|
|
":devicedb_sample",
|
|
":gpu_compatibility_without_gl_deps",
|
|
"//tensorflow/lite/delegates/gpu:delegate_options",
|
|
"//tensorflow/lite/delegates/gpu/common:gpu_info",
|
|
"@com_google_absl//absl/strings:string_view",
|
|
] + tflite_extra_gles_deps(),
|
|
)
|
|
|
|
cc_library(
|
|
name = "gpu_compatibility_without_gl_deps",
|
|
srcs = ["gpu_compatibility.cc"],
|
|
hdrs = ["gpu_compatibility.h"],
|
|
visibility = gpu_compatibility_without_gl_deps_internal_visibility_allowlist(),
|
|
deps = [
|
|
":android_info",
|
|
":canonicalize_value",
|
|
":database_fbs",
|
|
":devicedb",
|
|
":gpu_compatibility_binary_embed",
|
|
"//tensorflow/lite/delegates/gpu:delegate_options",
|
|
"//tensorflow/lite/delegates/gpu/common:gpu_info",
|
|
"@com_google_absl//absl/memory",
|
|
"@com_google_absl//absl/strings",
|
|
"@flatbuffers",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "gpu_compatibility_test",
|
|
srcs = ["gpu_compatibility_test.cc"],
|
|
tags = tf_gpu_tests_tags() + [
|
|
"no_cuda_asan", # TODO(b/181032551).
|
|
],
|
|
deps = [
|
|
":devicedb_sample",
|
|
":gpu_compatibility",
|
|
"@com_google_googletest//:gtest_main",
|
|
],
|
|
)
|
|
|
|
tflite_portable_test_suite()
|