blob: c6b5179985d6e55cbd3a08b517ec7e0a2e668650 [file] [log] [blame]
# Copyright 2018 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.
import("//build/config/clang/clang.gni")
import("//build/config/compiler.gni")
import("//build/config/sysroot.gni")
import("//build/fidl/toolchain.gni")
if (is_mac) {
# For mac_sdk_min:
import("//build/config/mac/config.gni")
}
declare_args() {
# Sets a custom base directory for `rustc` and `cargo`.
# This can be used to test custom Rust toolchains.
rustc_prefix = "//buildtools/${host_platform}/rust/bin"
# Sets the default LTO type for rustc bulids.
rust_lto = "unset"
# Sets the fuchsia toolchain target triple suffix (after arch)
rust_toolchain_triple_suffix = "fuchsia"
}
_sysroot = sysroot
_sysroot_deps = []
# TODO(BLD-230): sysroot.gni should provide the correct label and path to the Fuchsia sysroot.
if (is_fuchsia) {
_sysroot_deps = [ "//garnet/public/sdk:zircon_sysroot_export" ]
_sysroot = rebase_path(
"$root_out_dir/sdk/exported/zircon_sysroot/arch/$target_cpu/sysroot")
}
_std_deps = []
if (is_fuchsia) {
_std_deps += [
# These libraries are required by libstd.
"//zircon/public/lib/backtrace",
"//zircon/public/lib/fdio",
]
}
_platform_args = []
if (is_mac) {
_platform_args += [
"--mmacosx-version-min",
mac_sdk_min,
]
}
assert(current_os == "mac" || current_os == "linux" || current_os == "fuchsia",
"current_os was neither mac, linux, nor fuchsia")
if (current_os == "mac") {
_target = "x86_64-apple-darwin"
assert(current_cpu == "x64")
} else if (current_os == "linux") {
assert(current_cpu == "x64")
_target = "x86_64-unknown-linux-gnu"
} else if (current_os == "fuchsia") {
assert(current_cpu == "x64" || current_cpu == "arm64")
if (current_cpu == "x64") {
_target = "x86_64-$rust_toolchain_triple_suffix"
} else if (current_cpu == "arm64") {
_target = "aarch64-$rust_toolchain_triple_suffix"
}
}
if (is_debug) {
_rust_opt_level = "0"
} else {
_rust_opt_level = "z"
}
# rust_config collects common arguments and dependencies for rustc builds
rust_build_args = [
"--rustc",
rebase_path("$rustc_prefix/rustc"),
"--cmake-dir",
rebase_path("//buildtools/cmake/bin"),
"--shared-libs-root",
rebase_path(get_label_info("//default($shlib_toolchain)",
"root_out_dir")),
"--target",
_target,
"--sysroot",
_sysroot,
"--clang_prefix",
rebase_path(clang_prefix, "", root_build_dir),
"--opt-level",
_rust_opt_level,
"--symbol-level",
"$symbol_level",
] + _platform_args
rust_build_deps = _sysroot_deps + _std_deps
# We want to force a recompile of the Rust world whenever Rust toolchain
# changes since artifacts from an older version of the toolchain may or
# may not be compatible with newer ones.
# To achieve this, we insert a build dependency on the rust version.
rust_build_inputs =
[ "//buildtools/${host_platform}/rust/.versions/rust.cipd_version" ]