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