Skip to content

Commit

Permalink
Auto merge of #97529 - Urgau:bootstrap-check-cfg-features, r=Mark-Sim…
Browse files Browse the repository at this point in the history
…ulacrum

Use new cargo argument in bootstrap for cfg checking

This PR use new cargo argument in bootstrap for doing cfg checking.

Follow-up to #97044 and #97214.

r? `@Mark-Simulacrum`
  • Loading branch information
bors committed Jun 4, 2022
2 parents 6364179 + ff33001 commit 3a8e713
Showing 1 changed file with 17 additions and 20 deletions.
37 changes: 17 additions & 20 deletions src/bootstrap/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1364,29 +1364,26 @@ impl<'a> Builder<'a> {
// get some support for setting `--check-cfg` within build script, it's the least invasive
// hack that still let's us have cfg checking for the vast majority of the codebase.
if stage != 0 {
// Enable cfg checking of cargo features for everything but std.
// Enable cfg checking of cargo features for everything but std and also enable cfg
// checking of names and values.
//
// Note: `std`, `alloc` and `core` imports some dependencies by #[path] (like
// backtrace, core_simd, std_float, ...), those dependencies have their own features
// but cargo isn't involved in the #[path] and so cannot pass the complete list of
// features, so for that reason we don't enable checking of features for std.
// backtrace, core_simd, std_float, ...), those dependencies have their own
// features but cargo isn't involved in the #[path] process and so cannot pass the
// complete list of features, so for that reason we don't enable checking of
// features for std crates.
cargo.arg(if mode != Mode::Std {
"-Zcheck-cfg=names,values,features"
} else {
"-Zcheck-cfg=names,values"
});

// Add extra cfg not defined in/by rustc
//
// FIXME: Re-enable this after the beta bump as apperently rustc-perf doesn't use the
// beta cargo. See https://github.com/rust-lang/rust/pull/96984#issuecomment-1126678773
// #[cfg(not(bootstrap))]
// if mode != Mode::Std {
// cargo.arg("-Zcheck-cfg-features"); // -Zcheck-cfg=features after bump
// }

// Enable cfg checking of well known names/values
rustflags
.arg("-Zunstable-options")
// Enable checking of well known names
.arg("--check-cfg=names()")
// Enable checking of well known values
.arg("--check-cfg=values()");

// Add extra cfg not defined in rustc
// Note: Altrough it would seems that "-Zunstable-options" to `rustflags` is useless as
// cargo would implicitly add it, it was discover that sometimes bootstrap only use
// `rustflags` without `cargo` making it required.
rustflags.arg("-Zunstable-options");
for (restricted_mode, name, values) in EXTRA_CHECK_CFGS {
if *restricted_mode == None || *restricted_mode == Some(mode) {
// Creating a string of the values by concatenating each value:
Expand Down

0 comments on commit 3a8e713

Please sign in to comment.