# 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",
    ],
)
