| # Copyright 2022 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") | |
| # Variables and string substitutions don't work here because of course they don't | |
| load("%IREE_REPO_ALIAS%//build_tools/embed_data:build_defs.bzl", "iree_c_embed_data") | |
| package(default_visibility = ["//visibility:public"]) | |
| # The repository rule will perform some substitutions that we use to | |
| # customize the build based on the actually found toolkit. | |
| ENABLED = %ENABLED% | |
| LIBDEVICE_REL_PATH = "%LIBDEVICE_REL_PATH%" | |
| # Note that this BUILD file is overlaid on top of a partial CUDA SDK directory | |
| # as symlinked by the cuda_auto_configure repository rule in | |
| # build_tools/bazel/workspace.bzl | |
| # This flag will be True if the workspace repository rules detected a usable | |
| # SDK. config_settings in the project can join over this in order to | |
| # conditionally enable CUDA features based on pressence of the SDK. | |
| bool_flag( | |
| name = "enabled", | |
| build_setting_default = ENABLED, | |
| ) | |
| # If the SDK was not found, these targets will be missing inputs and will | |
| # error if used. This will happen if someone tries to build them directly | |
| # or transitively. | |
| cc_library( | |
| name = "headers", | |
| hdrs = glob([ | |
| "include/**/*.h", | |
| "include/**/*.hpp", | |
| "include/nv/**/*", | |
| ]), | |
| includes = ["include"], | |
| ) | |
| iree_c_embed_data( | |
| name = "libdevice_embedded", | |
| srcs = [ | |
| LIBDEVICE_REL_PATH, | |
| ], | |
| c_file_output = "iree_cuda/libdevice_embedded.c", | |
| flatten = True, | |
| generator = "%IREE_REPO_ALIAS%//build_tools/embed_data:iree-c-embed-data", | |
| h_file_output = "iree_cuda/libdevice_embedded.h", | |
| includes = [ | |
| "iree_cuda", | |
| ], | |
| ) |