Skip to content

Commit 5269582

Browse files
chore: handling the case when --generate-only is passed to
`intrinsic-test`
1 parent 38d9038 commit 5269582

File tree

1 file changed

+31
-22
lines changed
  • crates/intrinsic-test/src/arm

1 file changed

+31
-22
lines changed

crates/intrinsic-test/src/arm/mod.rs

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ mod intrinsic;
44
mod json_parser;
55
mod types;
66

7-
use std::fs::File;
7+
use std::fs;
88

99
use rayon::prelude::*;
1010

@@ -68,28 +68,31 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
6868

6969
let (chunk_size, chunk_count) = chunk_info(self.intrinsics.len());
7070

71-
let cpp_compiler = compile::build_cpp_compilation(&self.cli_options).unwrap();
71+
let cpp_compiler_wrapped = compile::build_cpp_compilation(&self.cli_options);
7272

7373
let notice = &build_notices("// ");
74+
fs::create_dir_all("c_programs").unwrap();
7475
self.intrinsics
7576
.par_chunks(chunk_size)
7677
.enumerate()
7778
.map(|(i, chunk)| {
7879
let c_filename = format!("c_programs/mod_{i}.cpp");
79-
let mut file = File::create(&c_filename).unwrap();
80+
let mut file = fs::File::create(&c_filename).unwrap();
8081
write_mod_cpp(&mut file, notice, c_target, platform_headers, chunk).unwrap();
8182

8283
// compile this cpp file into a .o file
83-
let output = cpp_compiler
84-
.compile_object_file(&format!("mod_{i}.cpp"), &format!("mod_{i}.o"))?;
85-
assert!(output.status.success(), "{output:?}");
84+
if let Some(cpp_compiler) = cpp_compiler_wrapped.as_ref() {
85+
let output = cpp_compiler
86+
.compile_object_file(&format!("mod_{i}.cpp"), &format!("mod_{i}.o"))?;
87+
assert!(output.status.success(), "{output:?}");
88+
}
8689

8790
Ok(())
8891
})
8992
.collect::<Result<(), std::io::Error>>()
9093
.unwrap();
9194

92-
let mut file = File::create("c_programs/main.cpp").unwrap();
95+
let mut file = fs::File::create("c_programs/main.cpp").unwrap();
9396
write_main_cpp(
9497
&mut file,
9598
c_target,
@@ -99,20 +102,22 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
99102
.unwrap();
100103

101104
// compile this cpp file into a .o file
102-
info!("compiling main.cpp");
103-
let output = cpp_compiler
104-
.compile_object_file("main.cpp", "intrinsic-test-programs.o")
105-
.unwrap();
106-
assert!(output.status.success(), "{output:?}");
107-
108-
let object_files = (0..chunk_count)
109-
.map(|i| format!("mod_{i}.o"))
110-
.chain(["intrinsic-test-programs.o".to_owned()]);
111-
112-
let output = cpp_compiler
113-
.link_executable(object_files, "intrinsic-test-programs")
114-
.unwrap();
115-
assert!(output.status.success(), "{output:?}");
105+
if let Some(cpp_compiler) = cpp_compiler_wrapped.as_ref() {
106+
info!("compiling main.cpp");
107+
let output = cpp_compiler
108+
.compile_object_file("main.cpp", "intrinsic-test-programs.o")
109+
.unwrap();
110+
assert!(output.status.success(), "{output:?}");
111+
112+
let object_files = (0..chunk_count)
113+
.map(|i| format!("mod_{i}.o"))
114+
.chain(["intrinsic-test-programs.o".to_owned()]);
115+
116+
let output = cpp_compiler
117+
.link_executable(object_files, "intrinsic-test-programs")
118+
.unwrap();
119+
assert!(output.status.success(), "{output:?}");
120+
}
116121

117122
true
118123
}
@@ -137,7 +142,11 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
137142
AARCH_CONFIGURATIONS,
138143
);
139144

140-
compile_rust_programs(intrinsics_name_list, toolchain, target, linker)
145+
if self.cli_options.toolchain.is_some() {
146+
compile_rust_programs(intrinsics_name_list, toolchain, target, linker)
147+
} else {
148+
true
149+
}
141150
}
142151

143152
fn compare_outputs(&self) -> bool {

0 commit comments

Comments
 (0)