| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Provides per-crate and overall configuration options to gnrt. |
| |
| [all] |
| # force-unstable-if-unmarked prevents normal crates from inadvertently using |
| # symbols from std-internal dependencies in the sysroot. This is normally passed |
| # during an x.py build, but we have to do it manually. |
| rustflags = ['-Zforce-unstable-if-unmarked'] |
| |
| # Override the GN output dir. We direct std targets to output directly to the |
| # sysroot we'll use later. This must stay in sync with `local_rustc_sysroot` in |
| # //build/rust/std/BUILD.gn |
| output_dir = '$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/' |
| |
| # This target provides setup needed for building std. |
| extra_gn_deps = ['//build/rust/std:std_build_deps'] |
| |
| [crate.libc] |
| # Many flags are set by libc's build.rs based on new enough rustc but we don't |
| # run build scripts for std crates. |
| # See https://github.com/rust-lang/libc/blob/master/build.rs |
| cfg = ['libc_priv_mod_use', 'libc_union', 'libc_const_size_of', 'libc_align', |
| 'libc_int128', 'libc_core_cvoid', 'libc_packedN', 'libc_cfg_target_vendor', |
| 'libc_non_exhaustive', 'libc_long_array', 'libc_ptr_addr_of', |
| 'libc_underscore_const_names', 'libc_const_extern_fn' |
| ] |
| |
| [crate.std] |
| # Requires: |
| # * cfg(backtrace_in_libstd) because it directly includes .rs files from the |
| # backtrace code rather than including it as a dependency. backtrace's |
| # implementation has special-purpose code to handle this. |
| # * STD_ENV_ARCH is referenced in architecture-dependent code. Note this is the |
| # target arch, and as such `$rust_target_arch` is passed literally to GN. This |
| # variable is set at build time in build/config/rust.gni |
| # |
| # See https://github.com/rust-lang/rust/blob/master/library/std/build.rs |
| cfg = ['backtrace_in_libstd'] |
| env = ['STD_ENV_ARCH=$rust_target_arch'] |
| |
| [crate.test] |
| # Requires: |
| # * CFG_DISABLE_UNSTABLE_FEATURES=0 to match how it's built by x.py. |
| env = ['CFG_DISABLE_UNSTABLE_FEATURES=0'] |
| |
| # test only depends on proc_macro as an internal detail of the Rust build, so |
| # it's implicitly included with std/test. However, we list the std crates and |
| # construct the sysroot explicitly. We don't need this, and we don't even want |
| # it during cross-compiles (since we will only build host proc_macro crates). |
| exclude_deps_in_gn = ['proc_macro'] |
| |
| [crate.unwind] |
| # The unwind crate has #[link] directives to the native unwind library, but we |
| # either get that automatically by linking with clang++, or build and link the |
| # lib from //buildtools/third_party/libunsind explicitly. Disable -lfoo linker |
| # flags from this crate. |
| rustflags = ['-Zlink-directives=false'] |