1load("@bazel_skylib//rules:common_settings.bzl", "string_flag") 2load("@local_config_cuda//cuda:build_defs.bzl", "enable_cuda_flag") 3 4package(default_visibility = ["//visibility:public"]) 5 6# Build flag to enable CUDA support. 7# 8# Enable with '--@local_config_cuda//:enable_cuda', or indirectly with 9# ./configure or '--config=cuda'. 10enable_cuda_flag( 11 name = "enable_cuda", 12 build_setting_default = False, 13 enable_override = select({ 14 ":define_using_cuda_nvcc": True, 15 "//conditions:default": False, 16 }), 17) 18 19# Config setting whether CUDA support has been requested. 20# 21# Enable path: ./configure > --config=cuda (.tf_configure.bazelrc) 22# > --//tensorflow:enable_cuda (.bazelrc) > :is_cuda_enabled 23config_setting( 24 name = "is_cuda_enabled", 25 flag_values = {":enable_cuda": "True"}, 26) 27 28# Build flag to select CUDA compiler. 29# 30# Set with '--@local_config_cuda//:cuda_compiler=...', or indirectly with 31# ./configure, '--config=cuda' or '--config=cuda_clang'. 32string_flag( 33 name = "cuda_compiler", 34 build_setting_default = "nvcc", 35 values = [ 36 "clang", 37 "nvcc", 38 ], 39) 40 41# Config setting whether CUDA device code should be compiled with clang. 42config_setting( 43 name = "is_cuda_compiler_clang", 44 flag_values = {":cuda_compiler": "clang"}, 45) 46 47# Config setting whether CUDA device code should be compiled with nvcc. 48config_setting( 49 name = "is_cuda_compiler_nvcc", 50 flag_values = {":cuda_compiler": "nvcc"}, 51) 52 53# Config setting to keep `--define=using_cuda_nvcc=true` working. 54# TODO(b/174244321): Remove when downstream projects have been fixed, along 55# with the enable_cuda_flag rule in cuda:build_defs.bzl.tpl. 56config_setting( 57 name = "define_using_cuda_nvcc", 58 define_values = {"using_cuda_nvcc": "true"}, 59 visibility = ["//visibility:private"], 60) 61