Skip to content

Commit bb1b37c

Browse files
authored
Merge pull request #294 from dtolnay/encoded
Recognize CARGO_ENCODED_RUSTFLAGS
2 parents e71bc70 + 3f29657 commit bb1b37c

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

build.rs

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
// location inside spans is a performance hit.
3636

3737
use std::env;
38+
use std::iter;
3839
use std::process::{self, Command};
3940
use std::str;
4041

@@ -132,15 +133,33 @@ fn feature_allowed(feature: &str) -> bool {
132133
//
133134
// -Zallow-features=feature1,feature2
134135

135-
if let Some(rustflags) = env::var_os("RUSTFLAGS") {
136-
for mut flag in rustflags.to_string_lossy().split(' ') {
137-
if flag.starts_with("-Z") {
138-
flag = &flag["-Z".len()..];
139-
}
140-
if flag.starts_with("allow-features=") {
141-
flag = &flag["allow-features=".len()..];
142-
return flag.split(',').any(|allowed| allowed == feature);
143-
}
136+
let flags_var;
137+
let flags_var_string;
138+
let mut flags_var_split;
139+
let mut flags_none;
140+
let flags: &mut dyn Iterator<Item = &str> =
141+
if let Some(encoded_rustflags) = env::var_os("CARGO_ENCODED_RUSTFLAGS") {
142+
flags_var = encoded_rustflags;
143+
flags_var_string = flags_var.to_string_lossy();
144+
flags_var_split = flags_var_string.split('\x1f');
145+
&mut flags_var_split
146+
} else if let Some(rustflags) = env::var_os("RUSTFLAGS") {
147+
flags_var = rustflags;
148+
flags_var_string = flags_var.to_string_lossy();
149+
flags_var_split = flags_var_string.split(' ');
150+
&mut flags_var_split
151+
} else {
152+
flags_none = iter::empty();
153+
&mut flags_none
154+
};
155+
156+
for mut flag in flags {
157+
if flag.starts_with("-Z") {
158+
flag = &flag["-Z".len()..];
159+
}
160+
if flag.starts_with("allow-features=") {
161+
flag = &flag["allow-features=".len()..];
162+
return flag.split(',').any(|allowed| allowed == feature);
144163
}
145164
}
146165

0 commit comments

Comments
 (0)