blob: da15e3cf07d8921cfef375f837d205c4b3c35850 [file] [log] [blame]
load("tsl.bzl", "if_google", "if_oss")
load("@bazel_skylib//lib:selects.bzl", "selects")
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "bool_setting")
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
# copybara:uncomment package(default_applicable_licenses = ["//tensorflow:license"])
# Config setting to use in select()s to distinguish open source build from
# google internal build on configurable attributes.
#
# For non-configurable distinction between OSS and Google builds, see
# `if_oss()` and `if_google()` macros in tsl.bzl.
config_setting(
name = "oss",
flag_values = {":oss_setting": "True"},
visibility = ["//visibility:public"],
)
# Non-configurable setting to indicate open source build.
bool_setting(
name = "oss_setting",
build_setting_default = if_oss(True, False),
visibility = ["//visibility:private"],
)
# Config setting that is satisfied when TSL is being built with CUDA
# support through e.g. `--config=cuda` (or `--config=cuda_clang` in OSS).
alias(
name = "is_cuda_enabled",
actual = if_oss(
"@local_config_cuda//:is_cuda_enabled",
"@local_config_cuda//cuda:using_clang",
),
visibility = ["//visibility:public"],
)
selects.config_setting_group(
name = "is_cuda_enabled_and_oss",
match_all = [
":is_cuda_enabled",
":oss",
],
visibility = ["//visibility:public"],
)
# Crosses between framework_shared_object and a bunch of other configurations
# due to limitations in nested select() statements.
config_setting(
name = "framework_shared_object",
define_values = {"framework_shared_object": "true"},
visibility = ["//visibility:public"],
)
config_setting(
name = "macos_x86_64_with_framework_shared_object",
define_values = {
"framework_shared_object": "true",
},
values = {
"apple_platform_type": "macos",
"cpu": "darwin",
},
visibility = ["//visibility:public"],
)
config_setting(
name = "macos_arm64_with_framework_shared_object",
define_values = {
"framework_shared_object": "true",
},
values = {
"apple_platform_type": "macos",
"cpu": "darwin_arm64",
},
visibility = ["//visibility:public"],
)
selects.config_setting_group(
name = "macos_with_framework_shared_object",
match_any = [
":macos_x86_64_with_framework_shared_object",
":macos_arm64_with_framework_shared_object",
],
visibility = ["//visibility:public"],
)
# This should be removed after Tensorflow moves to cc_shared_library
config_setting(
name = "tsl_protobuf_header_only",
define_values = {"tsl_protobuf_header_only": "true"},
visibility = ["//visibility:public"],
)
# Config setting for determining if we are building for Android.
config_setting(
name = "android",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "android"},
{},
),
values = if_oss(
{"crosstool_top": "//external:android/crosstool"},
{},
),
visibility = ["//visibility:public"],
)
config_setting(
name = "emscripten",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "emscripten"},
{},
),
values = if_oss(
{"crosstool_top": "//external:android/emscripten"},
{},
),
visibility = ["//visibility:public"],
)
# Sometimes Bazel reports darwin_x86_64 as "darwin" and sometimes as
# "darwin_x86_64". The former shows up when building on a Mac x86_64 host for a Mac x86_64 target.
# The latter shows up when cross-compiling for Mac x86_64 from a Mac ARM machine and in internal
# Google builds.
config_setting(
name = "macos_x86_64_default",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "apple"},
{},
),
values = {
"apple_platform_type": "macos",
"cpu": "darwin",
},
)
config_setting(
name = "macos_x86_64_crosscompile",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "apple"},
{},
),
values = {
"apple_platform_type": "macos",
"cpu": "darwin_x86_64",
},
)
selects.config_setting_group(
name = "macos_x86_64",
match_any = [
":macos_x86_64_default",
":macos_x86_64_crosscompile",
],
visibility = ["//visibility:public"],
)
config_setting(
name = "macos_arm64",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "apple"},
{},
),
values = {
"apple_platform_type": "macos",
"cpu": "darwin_arm64",
},
visibility = ["//visibility:public"],
)
selects.config_setting_group(
name = "macos",
match_any = [
":macos_x86_64",
":macos_arm64",
],
visibility = ["//visibility:public"],
)
config_setting(
name = "windows",
# Internal builds query the target OS.
flag_values = if_google(
{"//tools/cpp:cc_target_os": "windows"},
{},
),
# OSS builds query the CPU type.
values = if_oss(
{"cpu": "x64_windows"},
{},
),
visibility = ["//visibility:public"],
)
# TODO(jakeharmon): Remove equivalent from tensorflow/BUILD
config_setting(
name = "ios",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "apple"},
{},
),
values = if_oss(
{"apple_platform_type": "ios"},
{},
),
visibility = ["//visibility:public"],
)
# TODO(jakeharmon): Remove equivalent from tensorflow/BUILD
# Config setting used when building for products
# which requires restricted licenses to be avoided.
config_setting(
name = "no_lgpl_deps",
define_values = {"__TENSORFLOW_NO_LGPL_DEPS__": "1"},
visibility = ["//visibility:public"],
)
config_setting(
name = "with_xla_support",
define_values = {"with_xla_support": "true"},
visibility = ["//visibility:public"],
)
config_setting(
name = "android_arm",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "android"},
{},
),
values = dict(
if_oss(
{"crosstool_top": "//external:android/crosstool"},
),
cpu = "armeabi-v7a",
),
visibility = ["//visibility:public"],
)
config_setting(
name = "linux_aarch64",
values = {"cpu": "aarch64"},
visibility = ["//visibility:public"],
)
config_setting(
name = "linux_armhf",
values = {"cpu": "armhf"},
visibility = ["//visibility:public"],
)
config_setting(
name = "linux_x86_64",
values = {"cpu": "k8"},
visibility = ["//visibility:public"],
)
config_setting(
name = "linux_ppc64le",
values = {"cpu": "ppc"},
visibility = ["//visibility:public"],
)
config_setting(
name = "linux_s390x",
values = {"cpu": "s390x"},
visibility = ["//visibility:public"],
)
selects.config_setting_group(
name = "linux_x86_64_with_onednn_v2",
match_all = [
":linux_x86_64",
"@org_tensorflow//third_party/mkl_dnn:build_with_onednn_v2",
],
visibility = ["//visibility:public"],
)
selects.config_setting_group(
name = "linux_x86_64_with_onednn_v3",
match_all = [
":linux_x86_64",
"@org_tensorflow//third_party/mkl_dnn:build_with_onednn_v3",
],
visibility = ["//visibility:public"],
)
config_setting(
name = "ios_x86_64",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "apple"},
{},
),
values = dict(
if_oss(
{"crosstool_top": "//tools/osx/crosstool:crosstool"},
),
cpu = "ios_x86_64",
),
visibility = ["//visibility:public"],
)
# Config setting that disables the default logger, only logging
# to registered TFLogSinks
config_setting(
name = "no_default_logger",
define_values = {"no_default_logger": "true"},
visibility = ["//visibility:public"],
)
config_setting(
name = "with_numa_support",
define_values = {"with_numa_support": "true"},
visibility = ["//visibility:public"],
)
config_setting(
name = "fuchsia",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "fuchsia"},
{},
),
values = if_oss(
# TODO(b/149248802) When we have a Fuchsia Bazel SDK update to use the values it sets.
{"cpu": "fuchsia"},
{},
),
visibility = ["//visibility:public"],
)
# TODO(jakeharmon): Remove equivalent from tensorflow/BUILD
config_setting(
name = "android_x86",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "android"},
{},
),
values = dict(
if_oss(
{"crosstool_top": "//external:android/crosstool"},
),
cpu = "x86",
),
visibility = ["//visibility:public"],
)
config_setting(
name = "arm",
values = {"cpu": "arm"},
visibility = ["//visibility:public"],
)
config_setting(
name = "armeabi",
values = {"cpu": "armeabi"},
visibility = ["//visibility:public"],
)
config_setting(
name = "armeabi-v7a",
values = {"cpu": "armeabi-v7a"},
visibility = ["//visibility:public"],
)
config_setting(
name = "arm64-v8a",
values = {"cpu": "arm64-v8a"},
visibility = ["//visibility:public"],
)
selects.config_setting_group(
name = "arm_any",
match_any = [
":arm",
":armeabi",
":armeabi-v7a",
":arm64-v8a",
":linux_aarch64",
":linux_armhf",
],
visibility = ["//visibility:public"],
)
# TODO(jakeharmon): Remove equivalent from tensorflow/BUILD
config_setting(
name = "fuchsia_x86_64",
flag_values = if_google(
{"//tools/cpp:cc_target_os": "fuchsia"},
{},
),
values = {
"cpu": "x86_64",
},
visibility = ["//visibility:public"],
)
# This flag enables experimental TPU support
bool_flag(
name = "enable_tpu_support",
build_setting_default = False,
)
config_setting(
name = "with_tpu_support_define",
define_values = {"with_tpu_support": "true"},
visibility = ["//visibility:public"],
)
config_setting(
name = "with_tpu_support_flag",
flag_values = {":enable_tpu_support": "True"},
visibility = ["//visibility:public"],
)
selects.config_setting_group(
name = "with_tpu_support",
match_any = [
":with_tpu_support_define",
":with_tpu_support_flag",
],
visibility = ["//visibility:public"],
)
config_setting(
name = "freebsd",
values = {"cpu": "freebsd"},
visibility = ["//visibility:public"],
)
config_setting(
name = "no_nccl_support",
define_values = dict(
if_google({"GOOGLE_CUDA_COMPILER": "clang"}),
no_nccl_support = "true",
),
visibility = ["//visibility:public"],
)
# DO NOT ADD ANY NEW EXCEPTIONS TO THIS LIST!
# Instead, please use public APIs or public build rules TF provides.
# If you need functionality that is not exposed, we will work with you to expand our public APIs.
# TODO(b/173549186): Move Google-internal TF code out of learning/brain
# TODO(jakeharmon): Prune this for use in TSL
package_group(
name = "internal",
packages = [
"//devtools/python/indexer/...",
"//learning/brain/keras/...",
"//learning/brain/mlir/...",
"//learning/brain/tfrt/...",
"//learning/lib/ami/simple_ml/...",
"//learning/pathways/...",
"//smartass/brain/configure/...",
"//tensorflow/...",
"//tensorflow/tsl/...",
"//tensorflow_decision_forests/...",
"//tensorflow_federated/...",
"//third_party/cloud_tpu/convergence_tools/sdc_monitoring/...",
"//third_party/cloud_tpu/inference_converter/...",
"//third_party/py/cloud_ml_autoflow/...",
"//third_party/py/envlogger/...",
"//third_party/py/keras/...",
"//third_party/yggdrasil_decision_forests/...",
],
)
bzl_library(
name = "tsl_bzl",
srcs = ["tsl.bzl"],
visibility = ["//visibility:public"],
deps = [
"//tensorflow/tsl/mkl:build_defs_bzl",
"//tensorflow/tsl/platform:rules_cc_bzl",
"//third_party/compute_library:build_defs_bzl",
"//third_party/mkl:build_defs_bzl",
"//third_party/mkl_dnn:build_defs_bzl",
"@bazel_skylib//lib:new_sets",
"@local_config_cuda//cuda:build_defs_bzl",
"@local_config_rocm//rocm:build_defs_bzl",
"@local_config_tensorrt//:build_defs_bzl",
],
)
# copybara:comment_begin(oss-only)
cc_library(
name = "grpc++",
visibility = ["//visibility:public"],
deps = select({
":linux_s390x": ["@com_github_grpc_grpc//:grpc++_unsecure"],
"//conditions:default": ["@com_github_grpc_grpc//:grpc++"],
}),
)
# copybara:comment_end