blob: 5140d4506d9c66ce9eb32fb91c66bf63a5aed728 [file] [log] [blame]
# Description:
# TensorFlow Base libraries.
# This package contains the following libraries:
# - Platform dependent libraries that require different implementations
# across different OSs or environments.
# - STL replacement libraries rest of TensorFlow should depend on.
#
# The libraries in this package are not allowed to have ANY dependencies
# to any TensorFlow code outside this package.
load("//tensorflow/core/platform:build_config_root.bzl", "if_static")
load(
"//tensorflow/core/platform:build_config.bzl",
"tf_additional_lib_hdrs",
"tf_additional_lib_srcs",
"tf_additional_monitoring_srcs",
"tf_additional_proto_hdrs",
"tf_additional_tensor_coding_deps",
"tf_additional_test_srcs",
"tf_fingerprint_deps",
"tf_protobuf_compiler_deps",
"tf_protobuf_deps",
)
load(
"//tensorflow/core/platform:default/build_refactor.bzl",
"tf_instantiate_platform_libraries",
"tf_logging_deps",
"tf_mobile_aware_deps",
"tf_platform_helper_deps",
)
load(
"//tensorflow:tensorflow.bzl",
"if_not_android",
"tf_copts", # @unused
)
load(
"@local_config_rocm//rocm:build_defs.bzl",
"if_rocm_is_configured",
)
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
package(
default_visibility = [
"//tensorflow:__subpackages__",
],
licenses = ["notice"], # Apache 2.0
)
# Note(bmzhao): These are temporary BUILD rule helpers for
# platform-specific library dependencies. These temporarily
# exist to allow us incrementally add granular targets
# to tf/core/platform/BUILD. We will remove these helpers,
# after we finish refactoring tf/core/platform/BUILD.
tf_instantiate_platform_libraries(names = [
"context",
"cord",
"cuda_libdevice_path",
"dynamic_annotations",
"env",
"env_time",
"human_readable_json",
"logging",
"load_library",
"mutex",
"net",
"notification",
"platform_port",
"rocm_rocdl_path",
"stacktrace",
"stacktrace_handler",
"strong_hash",
"subprocess",
"test",
"tracing",
"types",
"unbounded_work_queue",
"wide_char",
])
cc_library(
name = "abi",
srcs = ["abi.cc"],
hdrs = ["abi.h"],
deps = [":types"],
)
cc_library(
name = "byte_order",
hdrs = ["byte_order.h"],
)
cc_library(
name = "context",
textual_hdrs = ["context.h"],
# See call to tf_instantiate_platform_libraries() above.
deps = tf_mobile_aware_deps("context_impl"),
)
cc_library(
name = "cord",
hdrs = ["cord.h"],
deps = [
":platform",
] + tf_mobile_aware_deps("cord_impl"),
)
cc_library(
name = "cpu_feature_guard",
srcs = ["cpu_feature_guard.cc"],
hdrs = ["cpu_feature_guard.h"],
deps = [
":byte_order",
":logging",
":platform_port",
],
)
cc_library(
name = "cuda",
hdrs = ["cuda.h"],
deps = [
":platform",
"//tensorflow/stream_executor/cuda:cuda_activation_header",
],
)
cc_library(
name = "cuda_libdevice_path",
textual_hdrs = ["cuda_libdevice_path.h"],
deps = tf_mobile_aware_deps("cuda_libdevice_path_impl"),
)
cc_library(
name = "denormal",
srcs = ["denormal.cc"],
hdrs = ["denormal.h"],
deps = [
":byte_order",
":logging",
":macros",
":platform",
":platform_port",
],
)
cc_library(
name = "dynamic_annotations",
hdrs = ["dynamic_annotations.h"],
deps = [
":platform",
] + tf_mobile_aware_deps("dynamic_annotations_impl"),
)
cc_library(
name = "env",
textual_hdrs = [
"env.h",
"file_system.h",
"file_system_helper.h",
"threadpool.h",
],
deps = tf_platform_helper_deps("env_impl"),
)
cc_library(
name = "env_time",
textual_hdrs = ["env_time.h"],
deps = tf_platform_helper_deps("env_time_impl"),
)
cc_library(
name = "error",
srcs = ["error.cc"],
hdrs = ["error.h"],
deps = [
":platform",
":types",
"//tensorflow/core/lib/core:status",
"//tensorflow/core/platform:strcat",
],
)
cc_library(
name = "file_statistics",
hdrs = ["file_statistics.h"],
deps = [":types"],
)
cc_library(
name = "fingerprint",
hdrs = ["fingerprint.h"],
deps = [
":stringpiece",
":types",
] + tf_fingerprint_deps(),
)
cc_library(
name = "gif",
hdrs = ["gif.h"],
deps = [
"@gif",
],
)
cc_library(
name = "grpc_services",
hdrs = ["grpc_services.h"],
deps = [
":platform",
"//tensorflow/core/profiler:profiler_analysis_proto_cc",
"//tensorflow/core/profiler:profiler_service_proto_cc",
],
)
cc_library(
name = "human_readable_json",
textual_hdrs = ["human_readable_json.h"],
deps = tf_mobile_aware_deps("human_readable_json_impl"),
)
cc_library(
name = "jpeg",
hdrs = ["jpeg.h"],
deps = [
"@libjpeg_turbo//:jpeg",
],
)
cc_library(
name = "load_library",
textual_hdrs = ["load_library.h"],
deps = tf_platform_helper_deps("load_library_impl"),
)
cc_library(
name = "logger",
srcs = ["logger.cc"],
hdrs = ["logger.h"],
deps = [
":env",
":logging",
":protobuf",
"@com_google_absl//absl/base",
"@com_google_absl//absl/synchronization",
],
alwayslink = 1,
)
cc_library(
name = "logging",
textual_hdrs = ["logging.h"],
deps = tf_logging_deps(),
)
cc_library(
name = "macros",
hdrs = ["macros.h"],
)
cc_library(
name = "mutex",
textual_hdrs = ["mutex.h"],
deps = tf_mobile_aware_deps("mutex_impl"),
)
cc_library(
name = "net",
textual_hdrs = ["net.h"],
deps = tf_platform_helper_deps("net_impl"),
)
cc_library(
name = "notification",
hdrs = ["notification.h"],
deps = [
":platform",
] + tf_mobile_aware_deps("notification_impl"),
)
cc_library(
name = "null_file_system",
hdrs = ["null_file_system.h"],
deps = [
":env",
],
)
cc_library(
name = "numbers",
srcs = ["numbers.cc"],
hdrs = ["numbers.h"],
deps = [
":logging",
":macros",
":str_util",
":stringpiece",
":stringprintf",
":types",
"@double_conversion//:double-conversion",
],
)
cc_library(
name = "platform",
hdrs = ["platform.h"],
)
cc_library(
name = "platform_port",
textual_hdrs = [
"cpu_info.h",
"demangle.h",
"host_info.h",
"init_main.h",
"mem.h",
"numa.h",
"snappy.h",
],
deps = tf_platform_helper_deps("platform_port_impl"),
)
cc_library(
name = "platform_strings",
srcs = [
"platform_strings.cc",
"platform_strings_computed.h",
],
hdrs = ["platform_strings.h"],
)
cc_library(
name = "png",
hdrs = ["png.h"],
deps = [
":platform",
"@png",
],
)
cc_library(
name = "prefetch",
hdrs = ["prefetch.h"],
deps = [":platform"],
)
cc_library(
name = "protobuf",
srcs = [
"protobuf.cc",
"protobuf_util.cc",
],
hdrs = ["protobuf.h"],
deps = [
":platform",
":types",
] + tf_protobuf_deps(),
)
cc_library(
name = "protobuf_compiler",
hdrs = ["protobuf_compiler.h"],
deps = tf_protobuf_compiler_deps(),
)
cc_library(
name = "protobuf_internal",
hdrs = ["protobuf_internal.h"],
deps = [
":platform",
":protobuf",
":types",
"//tensorflow/core/lib/core:errors",
] + if_static(["@com_google_protobuf//:protobuf"]),
)
cc_library(
name = "raw_coding",
hdrs = ["raw_coding.h"],
deps = [
":byte_order",
":types",
],
)
cc_library(
name = "refcount",
hdrs = ["refcount.h"],
deps = [
":logging",
],
)
cc_library(
name = "regexp",
hdrs = ["regexp.h"],
deps = [
":platform",
":types",
"@com_google_absl//absl/strings",
"@com_googlesource_code_re2//:re2",
],
)
cc_library(
name = "rocm_rocdl_path",
textual_hdrs = ["rocm_rocdl_path.h"],
deps = tf_mobile_aware_deps("rocm_rocdl_path_impl"),
)
cc_library(
name = "rocm",
hdrs = if_rocm_is_configured(["rocm.h"]),
deps = if_rocm_is_configured([
":platform",
"//tensorflow/stream_executor/rocm:rocm_activation",
]),
)
cc_library(
name = "scanner",
srcs = ["scanner.cc"],
hdrs = ["scanner.h"],
deps = [
":macros",
":str_util",
":stringpiece",
],
)
cc_library(
name = "setround",
srcs = ["setround.cc"],
hdrs = ["setround.h"],
deps = [
":logging",
":macros",
],
)
cc_library(
name = "stacktrace",
hdrs = ["stacktrace.h"],
deps = [
":platform",
] + tf_platform_helper_deps("stacktrace_impl"),
)
filegroup(
name = "stacktrace_handler_hdrs",
srcs = [
"stacktrace_handler.h",
],
visibility = [
"//tensorflow/core:__pkg__",
"//tensorflow/python:__pkg__",
],
)
cc_library(
name = "stacktrace_handler",
textual_hdrs = ["stacktrace_handler.h"],
deps = tf_platform_helper_deps("stacktrace_handler_impl"),
)
cc_library(
name = "status",
srcs = ["status.cc"],
hdrs = ["status.h"],
deps = [
":logging",
":macros",
":mutex",
":stacktrace",
":str_util",
":strcat",
":stringpiece",
":stringprintf",
":types",
"//tensorflow/core:error_codes_proto_impl_cc",
"@com_google_absl//absl/base",
],
)
cc_library(
name = "str_util",
srcs = ["str_util.cc"],
hdrs = ["str_util.h"],
deps = [
":logging",
":macros",
":stringpiece",
":types",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "strcat",
srcs = ["strcat.cc"],
hdrs = ["strcat.h"],
deps = [
":logging",
":macros",
":numbers",
":stringpiece",
":types",
"@com_google_absl//absl/meta:type_traits",
],
)
cc_library(
name = "stringpiece",
hdrs = ["stringpiece.h"],
deps = [
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "stringprintf",
srcs = ["stringprintf.cc"],
hdrs = ["stringprintf.h"],
deps = [
":macros",
":types",
],
)
cc_library(
name = "strong_hash",
hdrs = ["strong_hash.h"],
deps = [
":platform",
":types",
] + tf_mobile_aware_deps("strong_hash_impl"),
)
cc_library(
name = "subprocess",
textual_hdrs = [
"subprocess.h",
],
deps = tf_platform_helper_deps("subprocess_impl"),
)
cc_library(
name = "tensor_coding",
srcs = ["tensor_coding.cc"],
hdrs = ["tensor_coding.h"],
deps = [
":platform",
":protobuf",
":stringpiece",
":strcat",
":types",
"//tensorflow/core/lib/core:coding",
"//tensorflow/core/lib/core:refcount",
] + tf_additional_tensor_coding_deps(),
)
cc_library(
name = "test",
testonly = True,
textual_hdrs = ["test.h"],
deps = tf_mobile_aware_deps("test_impl"),
)
cc_library(
name = "thread_annotations",
hdrs = ["thread_annotations.h"],
)
cc_library(
name = "threadpool_interface",
hdrs = ["threadpool_interface.h"],
deps = [
":mutex",
":types",
"//third_party/eigen3",
],
)
cc_library(
name = "threadpool_options",
hdrs = ["threadpool_options.h"],
deps = [
":threadpool_interface",
],
)
cc_library(
name = "tracing",
textual_hdrs = ["tracing.h"],
deps = tf_mobile_aware_deps("tracing_impl"),
)
cc_library(
name = "tstring",
hdrs = ["tstring.h"],
)
cc_library(
name = "types",
hdrs = ["types.h"],
deps = [
":platform",
":tstring",
] + tf_mobile_aware_deps("types_impl"),
)
cc_library(
name = "unbounded_work_queue",
hdrs = ["unbounded_work_queue.h"],
deps = [
":platform",
] + tf_mobile_aware_deps("unbounded_work_queue_impl"),
)
# This is a hacky, do-nothing, binary that makes it easy to verify ability to
# build, link, and in some cases run all of the libraries under platform.
# Realistically, most of this would be covered by tests but at this point
# keeping things building correctly is step one.
cc_binary(
name = "build_test",
testonly = 1,
srcs = ["build_test.cc"],
visibility = ["//visibility:private"],
deps = [
":abi",
":byte_order",
":cord",
":cpu_feature_guard",
":denormal",
":dynamic_annotations",
":env_time",
":file_statistics",
":fingerprint",
":gif",
":jpeg",
":macros",
":mutex",
":net",
":numbers",
":platform",
":platform_port",
":platform_strings",
":png",
":prefetch",
":protobuf",
":scanner",
":setround",
":stacktrace",
":stacktrace_handler",
":str_util",
":strcat",
":stringpiece",
":stringprintf",
":subprocess",
":tensor_coding",
":test",
":thread_annotations",
":threadpool_interface",
":threadpool_options",
":tstring",
":types",
] + if_not_android([":rocm_rocdl_path"]),
)
# --------------------------------------------------------------------------
# Below libraries are here only to make sure the legacy build rules
# in tensorflow/core/BUILD are working!
#
# DO NOT add any new dependencies on these rules!
#
# --------------------------------------------------------------------------
filegroup(
name = "legacy_platform_lib_hdrs",
srcs = tf_additional_lib_hdrs(),
visibility = ["//tensorflow/core:__pkg__"],
)
filegroup(
name = "legacy_platform_lib_srcs",
srcs = tf_additional_lib_srcs(
exclude = [
"*test*",
"**/*test*",
"**/cuda.h",
"**/cuda_libdevice_path.cc",
"**/rocm.h",
"**/monitoring.cc",
"**/stream_executor.h",
"**/env.cc",
"**/env_time.cc",
"**/load_library.cc",
"**/mutex.cc",
"**/net.cc",
"**/logging.cc",
"**/port.cc",
"**/posix_file_system.cc",
"**/human_readable_json.cc",
"**/rocm.h",
"**/rocm_rocdl_path.cc",
"**/subprocess.cc",
"**/tracing.cc",
"**/unbounded_work_queue.cc",
"**/windows_file_system.cc",
"abi.cc",
"cpu_info.cc",
"numbers.cc",
"platform_strings.cc",
"protobuf.cc",
"scanner.cc",
"strcat.cc",
"stringprintf.cc",
],
),
visibility = ["//tensorflow/core:__pkg__"],
)
filegroup(
name = "legacy_proto_hdrs",
srcs = tf_additional_proto_hdrs(),
visibility = ["//tensorflow/core:__pkg__"],
)
filegroup(
name = "legacy_srcs_no_runtime",
srcs = glob(
[
"**/*.h",
"**/*.cc",
],
exclude = [
"*test.*",
"*testutil*",
"*testlib*",
"*main.cc",
"**/*test.*",
"**/*testutil*",
"**/*testlib*",
"**/*main.cc",
"**/cuda_libdevice_path.*",
# Exclude env_time and logging to avoid collisions with
# :platform_base, a common dependency for downstream targets.
"**/env_time.cc",
"**/logging.cc",
"**/mutex.cc",
"**/rocm_rocdl_path.*",
"default/test_benchmark.*",
"cuda.h",
"rocm.h",
"google/**/*",
"hadoop/**/*",
"gif.h",
"jpeg.h",
"png.h",
"logger.cc",
"stream_executor.*",
"windows/**/*",
],
),
visibility = ["//tensorflow/core:__pkg__"],
)
filegroup(
name = "legacy_lib_internal_headers",
srcs = glob(
[
"*.h",
"profile_utils/**/*.h",
],
exclude = [
"dynamic_annotations.h",
"denormal.h",
"gif.h",
"jpeg.h",
"png.h",
"setround.h",
"stringprintf.h",
"strong_hash.h",
"str_util.h",
"thread_annotations.h",
"**/cuda.h",
"**/rocm.h",
"**/stream_executor.h",
],
),
visibility = ["//tensorflow/core:__pkg__"],
)
filegroup(
name = "legacy_lib_internal_srcs",
srcs = glob(
[
"*.cc",
"profile_utils/**/*.cc",
],
exclude = [
"*test*",
"**/*test*",
"**/env_time.cc",
"**/monitoring.cc",
"**/cuda_libdevice_path.cc",
"**/load_library.cc",
"**/mutex.cc",
"**/logging.cc",
"**/port.cc",
"**/human_readable_json.cc",
"**/rocm_rocdl_path.cc",
"abi.cc",
"cpu_info.cc",
"cpu_feature_guard.cc",
"denormal.cc",
"env.cc",
"error.cc",
"file_system.cc",
"file_system_helper.cc",
"logger.cc",
"numbers.cc",
"platform_strings.cc",
"protobuf.cc",
"protobuf_util.cc",
"scanner.cc",
"setround.cc",
"status.cc",
"strcat.cc",
"stringprintf.cc",
"str_util.cc",
"tensor_coding.cc",
"threadpool.cc",
"tracing.cc",
],
),
visibility = ["//tensorflow/core:__pkg__"],
)
filegroup(
name = "legacy_test_srcs",
srcs = tf_additional_test_srcs(),
visibility = ["//tensorflow/core:__pkg__"],
)
filegroup(
name = "legacy_monitoring_srcs",
srcs = tf_additional_monitoring_srcs(),
visibility = ["//tensorflow/core:__pkg__"],
)
# TODO(gunan): Remove the following once references in core/BUILD is removed.
exports_files(
glob(
[
"*",
"**",
],
exclude = [
"abi.h",
"byte_order.h",
"cpu_info.cc",
"cpu_info.h",
"logging.h",
"macros.h",
"platform.h",
"types.h",
"stacktrace.h",
],
),
)
bzl_library(
name = "build_config_root_bzl",
srcs = [
"build_config_root.bzl",
"default/build_config_root.bzl",
],
)
bzl_library(
name = "cuda_build_defs_bzl",
srcs = ["default/cuda_build_defs.bzl"],
)
exports_files(
[
"stacktrace.h",
"cpu_info.h",
"types.h",
"macros.h",
"abi.h",
"logging.h",
"platform.h",
"byte_order.h",
],
visibility = ["//tensorflow:__subpackages__"],
)