blob: 9a10079dce495df69922c14cbfdd4f56f0181a5f [file] [log] [blame] [edit]
# Copyright 2022 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Top level BUILD.bazel in the @fuchsia_rust_toolchain repository."""
load("@//:fuchsia_build_config.bzl", "build_config")
load("@rules_rust//rust:toolchain.bzl", "rust_stdlib_filegroup", "rust_toolchain")
host_os = build_config.host_os
host_arch = build_config.host_arch
host_triple = build_config.host_target_triple
filegroup(
name = "rustc_lib",
srcs = glob(["lib/*.so"]),
)
# Define the host Rust toolchain.
rust_stdlib_filegroup(
name = "rust_std_host",
srcs = glob(["lib/rustlib/%s/lib/*" % host_triple]),
)
rust_toolchain(
name = "rust_%s_%s_toolchain" % (host_os, host_arch),
rustc = "//:bin/rustc",
rustc_lib = "//:rustc_lib",
rust_std = "//:rust_std_host",
rust_doc = "//:bin/rustdoc",
binary_ext = "",
staticlib_ext = ".a",
dylib_ext = ".so",
stdlib_linkflags = ["-lpthread", "-ldl"],
os = "linux",
exec_triple = host_triple, # e.g. "x86_64-unknown-linux-gnu",
target_triple = host_triple, # e.g. "x86_64-unknown-linux-gnu",
)
toolchain(
name = "rust_%s_%s" % (host_os, host_arch),
exec_compatible_with = [
build_config.host_platform_cpu_constraint,
build_config.host_platform_os_constraint,
],
target_compatible_with = [
build_config.host_platform_cpu_constraint, # e.g. "@platforms//cpu:x86_64",
build_config.host_platform_os_constraint, # e.g. "@platforms//os:linux",
],
toolchain = ":rust_%s_%s_toolchain" % (host_os, host_arch),
toolchain_type = "@rules_rust//rust:toolchain",
)
# Define the Fuchsia/x64 Rust toolchain
rust_stdlib_filegroup(
name = "rust_std_fuchsia_x64",
srcs = glob(["lib/rustlib/x86_64-fuchsia/lib/*"]),
)
rust_toolchain(
name = "rust_fuchsia_x64_toolchain",
rustc = "//:bin/rustc",
rustc_lib = "//:rustc_lib",
rust_std = "//:rust_std_fuchsia_x64",
rust_doc = "//:bin/rustdoc",
binary_ext = "",
staticlib_ext = ".a",
dylib_ext = ".so",
stdlib_linkflags = [],
os = "fuchsia",
exec_triple = "x86_64-unknown-fuchsia",
target_triple = "x86_64-fuchsia",
)
toolchain(
name = "rust_fuchsia_x64",
exec_compatible_with = [
build_config.host_platform_cpu_constraint,
build_config.host_platform_os_constraint,
],
target_compatible_with = [
"@platforms//cpu:x86_64",
"@platforms//os:fuchsia",
],
toolchain = ":rust_fuchsia_x64_toolchain",
toolchain_type = "@rules_rust//rust:toolchain",
)
# Define the Fuchsia/arm64 Rust toolchain
rust_stdlib_filegroup(
name = "rust_std_fuchsia_arm64",
srcs = glob(["lib/rustlib/aarch64-fuchsia/lib/*"]),
)
rust_toolchain(
name = "rust_fuchsia_arm64_toolchain",
rustc = "//:bin/rustc",
rustc_lib = "//:rustc_lib",
rust_std = "//:rust_std_fuchsia_arm64",
rust_doc = "//:bin/rustdoc",
binary_ext = "",
staticlib_ext = ".a",
dylib_ext = ".so",
stdlib_linkflags = [],
os = "fuchsia",
exec_triple = "aarch64-unknown-fuchsia",
target_triple = "aarch64-fuchsia",
)
toolchain(
name = "rust_fuchsia_arm64",
exec_compatible_with = [
build_config.host_platform_cpu_constraint,
build_config.host_platform_os_constraint,
],
target_compatible_with = [
"@platforms//cpu:aarch64",
"@platforms//os:fuchsia",
],
toolchain = ":rust_fuchsia_arm64_toolchain",
toolchain_type = "@rules_rust//rust:toolchain",
)