| 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 |