fix loading target specs in compiletest not working with custom targets

This commit is contained in:
Pietro Albini 2023-06-30 14:36:14 +02:00
parent af9df2fd91
commit 00cc815e57
No known key found for this signature in database
GPG Key ID: CD76B35F7734769E

View File

@ -439,7 +439,7 @@ pub struct TargetCfgs {
impl TargetCfgs { impl TargetCfgs {
fn new(config: &Config) -> TargetCfgs { fn new(config: &Config) -> TargetCfgs {
let targets: HashMap<String, TargetCfg> = serde_json::from_str(&rustc_output( let mut targets: HashMap<String, TargetCfg> = serde_json::from_str(&rustc_output(
config, config,
&["--print=all-target-specs-json", "-Zunstable-options"], &["--print=all-target-specs-json", "-Zunstable-options"],
)) ))
@ -454,6 +454,18 @@ fn new(config: &Config) -> TargetCfgs {
let mut all_families = HashSet::new(); let mut all_families = HashSet::new();
let mut all_pointer_widths = HashSet::new(); let mut all_pointer_widths = HashSet::new();
// Handle custom target specs, which are not included in `--print=all-target-specs-json`.
if config.target.ends_with(".json") {
targets.insert(
config.target.clone(),
serde_json::from_str(&rustc_output(
config,
&["--print=target-spec-json", "-Zunstable-options", "--target", &config.target],
))
.unwrap(),
);
}
for (target, cfg) in targets.iter() { for (target, cfg) in targets.iter() {
all_archs.insert(cfg.arch.clone()); all_archs.insert(cfg.arch.clone());
all_oses.insert(cfg.os.clone()); all_oses.insert(cfg.os.clone());