
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
44 lines
1.3 KiB
Python
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,
|
|
)
|