blob: 5b9e4c4cdee8732ccdc25d5eba5118015a67966c [file] [log] [blame]
# Copyright 2021 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/rust/config.gni")
declare_args() {
# Controls whether the rust compiler uses v0 symbol mangling scheme
# (see https://github.com/rust-lang/rfcs/blob/HEAD/text/2603-rust-symbol-name-mangling-v0.md).
# The v0 symbol mangling scheme requires upstream LLVM support when demangling,
# so it is not on by default.
# TODO(fxbug.dev/57302): Enable v0 mangling by default.
rust_v0_symbol_mangling = false
# Enable incremental rust compilation. Takes a path to the directory to use
# as the cache.
rust_incremental = ""
}
# Defines a Rust cfg flag with the value of the rust_panic build arg.
# Useful for changing behavior of code based on panic behavior.
config("panic_cfg") {
rustflags = [ "--cfg=rust_panic=\"${rust_panic}\"" ]
}
# Turns on the rust compilation analysis generator. This will produce a
# directory $OUT/save-analysis-temp, which will dump all the source analysis
# that the compiler collected while analyzing the source. This config is
# included conditionally, see //build/config/BUILDCONFIG.gn for details.
config("analysis") {
rustflags = [ "-Zsave-analysis" ]
}
config("edition_2018") {
rustflags = [ "--edition=2018" ]
}
config("edition_2015") {
rustflags = [ "--edition=2015" ]
}
config("opt_level_z") {
rustflags = [ "-Copt-level=z" ]
}
config("no_features") {
rustflags = [ "-Zallow-features=" ]
}
config("incremental") {
if (rust_incremental != "") {
rustflags = [ "-Cincremental=" + rust_incremental ]
}
}
config("netstack3_only_specialization_feature") {
rustflags = [
"-Zallow-features=min_specialization,specialization",
"-Aincomplete-features",
]
}
config("2018_idioms") {
rustflags = [ "-Wrust-2018-idioms" ]
}
config("target") {
rustflags = [
"--target",
rust_target,
"--cap-lints=$rust_cap_lints",
]
}
config("panic_abort") {
rustflags = [
"-Cpanic=abort",
"-Cforce-unwind-tables=yes",
"-Zpanic_abort_tests",
]
}
config("v0_symbol_mangling") {
if (rust_v0_symbol_mangling) {
rustflags = [ "-Zsymbol-mangling-version=v0" ]
}
}
config("allow_unknown_lints") {
rustflags = [ "-Aunknown-lints" ]
}
# TODO(fxbug.dev/67118) remove this allowance
config("allow_redundant_semicolons") {
rustflags = [ "-Aredundant-semicolons" ]
}
# TODO(fxbug.dev/68148) remove this allowance
config("allow_unused_extern_crates") {
rustflags = [ "-Aunused-extern-crates" ]
}
# TODO(fxbug.dev/69442) remove this allowance
config("allow_legacy_derive_helpers") {
rustflags = [ "-Alegacy-derive-helpers" ]
}
config("deny_unused_results") {
rustflags = [ "-Dunused_results" ]
}
config("allow_unused_results") {
rustflags = [ "-Aunused_results" ]
# This visibility list allows for targets to opt out of allowing unused results.
#
# There is currently no platform mandate to adopt the unused_results lint and it's opt-in for
# developers that want to use it. See https://fxbug.dev/73468 for more context.
#
# To adopt the lint, add the following to your rust target:
# configs -= ["//build/config/rust:allow_unused_results"]
# The visibility list below can be used to enforce the list on certain areas of the tree while
# we evaluate wider adoption.
#
# To update this list run:
# $ scripts/gn/gen_visibility_globs.py \
# --all=//build/config/rust:deny_unused_results \
# --allow=//build/config/rust:allow_unused_results
#
# TODO(https://fxbug.dev/73468): remove all references to src/connectivity/network and friends.
visibility = [
"//build/*",
"//examples/*",
"//garnet/*",
"//sdk/*",
"//src/bringup/*",
"//src/camera/*",
"//src/cobalt/*",
"//src/connectivity/bluetooth/*",
"//src/connectivity/ethernet/*",
"//src/connectivity/lib/*",
"//src/connectivity/location/*",
"//src/connectivity/lowpan/*",
"//src/connectivity/management/*",
"//src/connectivity/network/http-client/*",
"//src/connectivity/network/lib/*",
"//src/connectivity/network/netstack/*",
"//src/connectivity/network/netstack3/*",
"//src/connectivity/network/testing/netemul/*",
"//src/connectivity/network/tests/connect/*",
"//src/connectivity/network/tests/dhcp_interop/*",
"//src/connectivity/network/tools/*",
"//src/connectivity/openthread/*",
"//src/connectivity/overnet/*",
"//src/connectivity/ppp/*",
"//src/connectivity/telephony/*",
"//src/connectivity/weave/*",
"//src/connectivity/wlan/*",
"//src/developer/*",
"//src/devices/*",
"//src/diagnostics/*",
"//src/experiences/*",
"//src/factory/*",
"//src/fonts/*",
"//src/graphics/*",
"//src/hwinfo/*",
"//src/identity/*",
"//src/intl/*",
"//src/lib/*",
"//src/media/*",
"//src/modular/*",
"//src/power/*",
"//src/proc/*",
"//src/recovery/*",
"//src/security/*",
"//src/session/*",
"//src/storage/*",
"//src/sys/*",
"//src/testing/*",
"//src/tests/*",
"//src/ui/*",
"//src/virtualization/*",
"//third_party/*",
"//tools/*",
"//vendor/*",
"//zircon/*",
]
}