llvm-project/utils/bazel/vulkan_sdk.bzl
Geoffrey Martin-Noble 4aeb2e60df Introduce a Bazel build configuration
This patch introduces configuration for a Bazel BUILD in a side
directory in the monorepo.

This is following the approval of
https://github.com/llvm/llvm-www/blob/main/proposals/LP0002-BazelBuildConfiguration.md

As detailed in the README, the Bazel BUILD is not supported
by the community in general, and is maintained only by interested
parties. It follows the requirements of the LLVM peripheral tier:
https://llvm.org/docs/SupportPolicy.html#peripheral-tier.

This is largely copied from https://github.com/google/llvm-bazel,
with a few filepath tweaks and the addition of the README.

Reviewed By: echristo, keith, dblaikie, kuhar

Differential Revision: https://reviews.llvm.org/D90352
2021-06-22 12:47:43 -07:00

44 lines
1.3 KiB
Python

# This file is 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
"""Repository rule to statically link against the Vulkan SDK.
Requires installing the Vulkan SDK from https://vulkan.lunarg.com/.
If the Vulkan SDK is not installed, this generates an empty rule and you may
encounter linker errors like `error: undefined reference to 'vkCreateInstance'`.
"""
def _impl(repository_ctx):
if "VULKAN_SDK" in repository_ctx.os.environ:
sdk_path = repository_ctx.os.environ["VULKAN_SDK"]
repository_ctx.symlink(sdk_path, "vulkan-sdk")
repository_ctx.file("BUILD", """
cc_library(
name = "sdk",
srcs = select({
"@bazel_tools//src/conditions:windows": [
"vulkan-sdk/Lib/vulkan-1.lib"
],
"//conditions:default": [
"vulkan-sdk/lib/libvulkan.so.1",
],
}),
visibility = ["//visibility:public"],
)""")
else:
# Empty rule. Will fail to link for just targets that use Vulkan.
repository_ctx.file("BUILD", """
cc_library(
name = "sdk",
srcs = [],
visibility = ["//visibility:public"],
)""")
vulkan_sdk_setup = repository_rule(
implementation = _impl,
local = True,
)