mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-23 05:40:09 +00:00
5e57f1bf52
Followup to D147354. Using src/conditions is discouraged in favor of using rules from the `@platforms` repository directly. This replaces three conditions: * `@bazel_tools//src/conditions:windows` -> `@platforms//os:windows` * `@bazel_tools//src/conditions:darwin` -> `@platforms//os:macos` * `@bazel_tools//src/conditions:freebsd` -> `@platforms//os:freebsd` `llvm/config.bzl` has a non-trivial OS+CPU selection config, so that is omitted from this patch. There is intentionally no equivalent for that in `@platforms` because every project will have their own opinions about what a platform is, and it is not feasible for the bazel selection list to include every possible combination. The recommended idiom there is for projects to define their own supported platforms list, e.g. in a separate BUILD file or platform mapping. Reviewed By: GMNGeoffrey Differential Revision: https://reviews.llvm.org/D147948
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({
|
|
"@platforms//os: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,
|
|
)
|