[llvm] [Bazel] Add support for Bzlmod (PR #88927)
Aaron Siddhartha Mondal via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 31 17:07:20 PST 2025
================
@@ -0,0 +1,127 @@
+# 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
+
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("@bazel_tools//tools/build_defs/repo:local.bzl", "new_local_repository")
+load(":vulkan_sdk.bzl", "vulkan_sdk_setup")
+load(":configure.bzl", "llvm_configure", "DEFAULT_TARGETS")
+
+def _llvm_configure_extension_impl(ctx):
+ targets = []
+ patches = []
+ commit = ""
+ sha256 = ""
+
+ for module in ctx.modules:
+
+ # Aggregate targets and patches across imports.
+ for config in module.tags.configure:
+ for target in config.targets:
+ if target not in targets:
+ targets.append(target)
+ for patch in config.patches:
+ if patch not in patches:
+ patches.append(patch)
+
+ # Use the first nonempty commit/sha configuration, starting from the
+ # top-level import and working down to the MODULE.bazel of the
+ # llvm-project-overlay itself, which does not specify these values.
+ # This way in-tree builds will always use the current sources and not
+ # fetch the llvm repository from a hardcoded commit.
+ if module.tags.configure != [] and commit == "":
+ commit = module.tags.configure[0].commit
+ sha256 = module.tags.configure[0].sha256
+
+ if commit == "":
+ if patches != []:
+ fail("""Cannot apply patches when `commit` is unspecified. Patches
+ would modify some unknown version of the LLVM sources, making
+ the build irreproducible.
+ """,
+ )
+ new_local_repository(
+ name = "llvm-raw",
+ path = "../../",
+ build_file_content = "#Empty.",
+ )
+ else:
+ http_archive(
+ name = "llvm-raw",
+ build_file_content = "# Empty.",
+ sha256 = sha256,
+ strip_prefix = "llvm-project-" + commit,
+ urls = [
+ "https://github.com/llvm/llvm-project/archive/{}.tar.gz".format(
+ commit,
+ ),
+ ],
+ patches = patches,
+ patch_args = ["-p1"],
+ )
+
+ # Fall back to the default targets if all configurations of this extension
+ # omit the `target` attribute.
+ if targets == []:
+ targets = DEFAULT_TARGETS
+
+ llvm_configure(name = "llvm-project", targets = targets)
+
+ http_archive(
+ name = "llvm_zlib",
----------------
aaronmondal wrote:
Done.
https://github.com/llvm/llvm-project/pull/88927
More information about the llvm-commits
mailing list