module( name = "musl_cross_compiling_example", version = "0.0.0", ) bazel_dep(name = "rules_rust", version = "0.0.0") local_path_override( module_name = "rules_rust", path = "../..", ) bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "rules_shell", version = "0.4.0") bazel_dep(name = "bazel_skylib", version = "1.8.1") RUST_EDITION = "2021" RUST_VERSION = "1.80.0" rust = use_extension("@rules_rust//rust:extensions.bzl", "rust") rust.toolchain( edition = RUST_EDITION, versions = [RUST_VERSION], ) # This overrides a default rust_repository_set created by rust_register_toolchain. # It must be named exactly this. # Each exec triple needs one of these calls per target triple it supports. # The first call needs all of the attrs, the subsequent calls should only set name, target_triple, and target_compatible_with. rust.repository_set( name = "rust_linux_x86_64", edition = RUST_EDITION, exec_triple = "x86_64-unknown-linux-gnu", target_compatible_with = [ "@//linker_config:unknown", "@platforms//cpu:x86_64", "@platforms//os:linux", ], target_triple = "x86_64-unknown-linux-gnu", versions = [RUST_VERSION], ) rust.repository_set( name = "rust_linux_x86_64", target_compatible_with = [ "@//linker_config:musl", "@platforms//cpu:arm64", "@platforms//os:linux", ], target_triple = "aarch64-unknown-linux-musl", ) rust.repository_set( name = "rust_linux_x86_64", target_compatible_with = [ "@//linker_config:musl", "@platforms//cpu:x86_64", "@platforms//os:linux", ], target_triple = "x86_64-unknown-linux-musl", ) # We don't need to register a repository_set for exec_triple == target_triple if we're not customising it in any way: # one will get registered by default. # But we do for the Linux case above, because we want to add the "@//linker_config:unknown" constraint in that case. rust.repository_set( name = "rust_darwin_x86_64", edition = RUST_EDITION, exec_triple = "x86_64-apple-darwin", target_compatible_with = [ "@//linker_config:musl", "@platforms//cpu:x86_64", "@platforms//os:linux", ], target_triple = "x86_64-unknown-linux-musl", versions = [RUST_VERSION], ) rust.repository_set( name = "rust_darwin_x86_64", target_compatible_with = [ "@//linker_config:musl", "@platforms//cpu:arm64", "@platforms//os:linux", ], target_triple = "aarch64-unknown-linux-musl", ) rust.repository_set( name = "rust_darwin_aarch64", edition = RUST_EDITION, exec_triple = "aarch64-apple-darwin", target_compatible_with = [ "@//linker_config:musl", "@platforms//cpu:x86_64", "@platforms//os:linux", ], target_triple = "x86_64-unknown-linux-musl", versions = [RUST_VERSION], ) rust.repository_set( name = "rust_darwin_aarch64", target_compatible_with = [ "@//linker_config:musl", "@platforms//cpu:arm64", "@platforms//os:linux", ], target_triple = "aarch64-unknown-linux-musl", ) use_repo(rust, "rust_toolchains") register_toolchains("@rust_toolchains//:all") crate = use_extension( "@rules_rust//crate_universe:extensions.bzl", "crate", ) crate.from_cargo( name = "cu", cargo_lockfile = "//:Cargo.Bazel.lock", manifests = [ "//:Cargo.toml", "//:local_proc_macro/Cargo.toml", ], ) use_repo(crate, "cu") bazel_dep(name = "toolchains_musl", version = "0.1.20", dev_dependency = True) toolchains_musl = use_extension("@toolchains_musl//:toolchains_musl.bzl", "toolchains_musl", dev_dependency = True) toolchains_musl.config( extra_target_compatible_with = ["@//linker_config:musl"], )