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