Skip to content

Commit cd2f5f9

Browse files
committed
Expose bindgen toolchain through bzlmod
1 parent 5ebdd47 commit cd2f5f9

File tree

5 files changed

+51
-13
lines changed

5 files changed

+51
-13
lines changed

MODULE.bazel

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,11 @@ register_toolchains(
174174
"//proto/prost:default_prost_toolchain",
175175
)
176176

177+
bindgen = use_extension("//bindgen:extension.bzl", "bindgen")
178+
use_repo(bindgen, "bindgen_toolchains")
179+
177180
register_toolchains(
178-
"//bindgen:default_bindgen_toolchain",
181+
"@bindgen_toolchains//:default_bindgen_toolchain",
179182
)
180183

181184
rust_host_tools = use_extension("//rust:extensions.bzl", "rust_host_tools")

bindgen/BUILD.bazel

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
2-
load("//bindgen:defs.bzl", "rust_bindgen_toolchain")
32

43
package(default_visibility = ["//visibility:public"])
54

@@ -11,21 +10,18 @@ bzl_library(
1110
name = "bzl_lib",
1211
srcs = glob(["**/*.bzl"]),
1312
deps = [
14-
"//bindgen/3rdparty:bzl_lib",
15-
"//bindgen/private:bzl_lib",
16-
"//rust:bzl_lib",
13+
"@rules_rust//bindgen/3rdparty:bzl_lib",
14+
"@rules_rust//bindgen/private:bzl_lib",
15+
"@rules_rust//rust:bzl_lib",
1716
],
1817
)
1918

20-
rust_bindgen_toolchain(
19+
alias(
2120
name = "default_bindgen_toolchain_impl",
22-
bindgen = "//bindgen/3rdparty:bindgen",
23-
clang = "@llvm-project//clang:clang",
24-
libclang = "@llvm-project//clang:libclang",
21+
actual = "//bindgen/toolchain:default_bindgen_toolchain_impl",
2522
)
2623

27-
toolchain(
24+
alias(
2825
name = "default_bindgen_toolchain",
29-
toolchain = "default_bindgen_toolchain_impl",
30-
toolchain_type = "//bindgen:toolchain_type",
26+
actual = "//bindgen/toolchain:default_bindgen_toolchain",
3127
)

bindgen/extension.bzl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""Module extension for accessing a bindgen toolchain"""
2+
3+
load(":repositories.bzl", "rust_bindgen_dependencies")
4+
load(":transitive_repositories.bzl", "rust_bindgen_transitive_dependencies")
5+
6+
def _bindgen_impl(_):
7+
rust_bindgen_transitive_dependencies()
8+
rust_bindgen_dependencies()
9+
bindgen_toolchains(
10+
name = "bindgen_toolchains",
11+
build = "//bindgen/toolchain:BUILD.bazel",
12+
)
13+
14+
bindgen = module_extension(implementation = _bindgen_impl)
15+
16+
def _bindgen_toolchains_impl(ctx):
17+
ctx.file("BUILD.bazel", ctx.read(ctx.attr.build))
18+
19+
bindgen_toolchains = repository_rule(
20+
implementation = _bindgen_toolchains_impl,
21+
attrs = {
22+
"build": attr.label(mandatory = True),
23+
},
24+
)

bindgen/toolchain/BUILD.bazel

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
load("@rules_rust//bindgen:defs.bzl", "rust_bindgen_toolchain")
2+
3+
package(default_visibility = ["//visibility:public"])
4+
5+
rust_bindgen_toolchain(
6+
name = "default_bindgen_toolchain_impl",
7+
bindgen = "@rules_rust//bindgen/3rdparty:bindgen",
8+
clang = "@llvm-project//clang:clang",
9+
libclang = "@llvm-project//clang:libclang",
10+
)
11+
12+
toolchain(
13+
name = "default_bindgen_toolchain",
14+
toolchain = "default_bindgen_toolchain_impl",
15+
toolchain_type = "@rules_rust//bindgen:toolchain_type",
16+
)

bindgen/transitive_repositories.bzl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ def rust_bindgen_transitive_dependencies():
88

99
llvm_configure(
1010
name = "llvm-project",
11-
repo_mapping = {"@llvm_zlib": "@zlib"},
1211
targets = [
1312
"AArch64",
1413
"X86",

0 commit comments

Comments
 (0)