blob: 0b817bf842954c905e655506ae904f1aa475d0a7 [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")
default_rust_sysroot =
rebase_path("//prebuilt/third_party/rust/${host_platform}", root_build_dir)
default_rustc_prefix =
rebase_path("//prebuilt/third_party/rust/${host_platform}/bin",
root_build_dir)
declare_args() {
# Sets a custom base directory for `rustc` and `cargo`.
# This can be used to test custom Rust toolchains.
rustc_prefix = default_rustc_prefix
# Sets a custom base directory for where rust tooling
# looks for the standard library
rust_sysroot = default_rust_sysroot
# Sets the default LTO type for rustc bulids.
rust_lto = ""
# DEPRECATED: Sets the panic type for Rust on fuchsia.
# Valid values are "unwind" and "abort".
# This arg will be removed soon, and we will always use "abort".
rust_panic = "abort"
# Sets the fuchsia toolchain target triple suffix (after arch)
rust_toolchain_triple_suffix = "fuchsia"
# Sets the maximum lint level.
# "deny" will make all warnings into errors, "warn" preserves them as warnings, and "allow" will
# ignore warnings.
rust_cap_lints = "deny"
# Overrides the optimization level for all Rust builds, regardless of
# debug/release flags or the `force_opt` arg to the rustc_ templates.
# Valid values are 0-3, o, and z.
rust_override_opt = ""
# Overrides the LTO setting for all Rust builds, regardless of
# debug/release flags or the `with_lto` arg to the rustc_ templates.
# Valid values are "none", "thin", and "fat".
rust_override_lto = ""
}
assert(rust_panic == "unwind" || rust_panic == "abort",
"rust_panic was neither 'unwind' nor 'panic'")
# Always use panic=unwind on host, or proc macros won't work.
if (!is_fuchsia) {
rust_panic = "unwind"
}
std_deps = []
if (is_fuchsia) {
std_deps += [
# These libraries are required by libstd.
"//zircon/public/lib/fdio",
]
}
assert(
current_os == "mac" || current_os == "linux" || current_os == "fuchsia" ||
(current_os == "unknown" && current_cpu == "wasm32"),
"current_os was neither mac, linux, unknown, nor fuchsia")
assert(
current_cpu == "x64" || current_cpu == "arm64" || current_cpu == "wasm32")
if (current_os == "mac") {
_suffix = "apple-darwin"
} else if (current_os == "linux") {
_suffix = "unknown-linux-gnu"
} else if (current_os == "fuchsia") {
_suffix = rust_toolchain_triple_suffix
}
if (current_cpu == "x64") {
rust_target = "x86_64-${_suffix}"
} else if (current_cpu == "arm64") {
rust_target = "aarch64-${_suffix}"
} else if (current_cpu == "wasm32" && current_os == "unknown") {
rust_target = "wasm32-unknown-unknown"
}