Skip to content

Commit

Permalink
Rollup merge of rust-lang#71775 - petrochenkov:crtcfg, r=matthewjasper
Browse files Browse the repository at this point in the history
Enable `cfg` predicate for `target_feature = "crt-static"` only if the target supports it

That's what all other `target_feature`s do.
  • Loading branch information
Dylan-DPC authored May 9, 2020
2 parents eeacf8d + 33b6631 commit af700fb
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/librustc_interface/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ pub fn add_configuration(

cfg.extend(codegen_backend.target_features(sess).into_iter().map(|feat| (tf, Some(feat))));

if sess.crt_static_feature(None) {
if sess.crt_static(None) {
cfg.insert((tf, Some(Symbol::intern("crt-static"))));
}
}
Expand Down
11 changes: 3 additions & 8 deletions src/librustc_session/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -598,16 +598,11 @@ impl Session {

/// Check whether this compile session and crate type use static crt.
pub fn crt_static(&self, crate_type: Option<CrateType>) -> bool {
// If the target does not opt in to crt-static support, use its default.
if self.target.target.options.crt_static_respected {
self.crt_static_feature(crate_type)
} else {
self.target.target.options.crt_static_default
if !self.target.target.options.crt_static_respected {
// If the target does not opt in to crt-static support, use its default.
return self.target.target.options.crt_static_default;
}
}

/// Check whether this compile session and crate type use `crt-static` feature.
pub fn crt_static_feature(&self, crate_type: Option<CrateType>) -> bool {
let requested_features = self.opts.cg.target_feature.split(',');
let found_negative = requested_features.clone().any(|r| r == "-crt-static");
let found_positive = requested_features.clone().any(|r| r == "+crt-static");
Expand Down
7 changes: 2 additions & 5 deletions src/test/ui/crt-static-on-works.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
// run-pass

#![allow(stable_features)]
// compile-flags:-C target-feature=+crt-static -Z unstable-options

#![feature(cfg_target_feature)]
// compile-flags:-C target-feature=+crt-static
// only-msvc

#[cfg(target_feature = "crt-static")]
fn main() {}

0 comments on commit af700fb

Please sign in to comment.