Skip to content

Commit a321ab4

Browse files
Support generate_files option to skip file compilation and execution
1 parent 1d89c29 commit a321ab4

File tree

2 files changed

+40
-26
lines changed

2 files changed

+40
-26
lines changed

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

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

8-
use std::fs::File;
8+
use std::fs;
99

1010
use rayon::prelude::*;
1111

@@ -69,28 +69,35 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
6969

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

72-
let cpp_compiler = compile::build_cpp_compilation(&self.cli_options).unwrap();
72+
let cpp_compiler = compile::build_cpp_compilation(&self.cli_options);
73+
74+
match fs::exists("c_programs") {
75+
Ok(false) => fs::create_dir("c_programs").unwrap(),
76+
Ok(true) => {}
77+
_ => return false,
78+
}
7379

7480
let notice = &build_notices("// ");
7581
self.intrinsics
7682
.par_chunks(chunk_size)
7783
.enumerate()
7884
.map(|(i, chunk)| {
7985
let c_filename = format!("c_programs/mod_{i}.cpp");
80-
let mut file = File::create(&c_filename).unwrap();
86+
let mut file = fs::File::create(&c_filename).unwrap();
8187
write_mod_cpp(&mut file, notice, c_target, platform_headers, chunk).unwrap();
8288

8389
// compile this cpp file into a .o file
84-
let output = cpp_compiler
85-
.compile_object_file(&format!("mod_{i}.cpp"), &format!("mod_{i}.o"))?;
86-
assert!(output.status.success(), "{output:?}");
87-
90+
if let Some(compiler) = cpp_compiler.as_ref() {
91+
let output = compiler
92+
.compile_object_file(&format!("mod_{i}.cpp"), &format!("mod_{i}.o"))?;
93+
assert!(output.status.success(), "{output:?}");
94+
}
8895
Ok(())
8996
})
9097
.collect::<Result<(), std::io::Error>>()
9198
.unwrap();
9299

93-
let mut file = File::create("c_programs/main.cpp").unwrap();
100+
let mut file = fs::File::create("c_programs/main.cpp").unwrap();
94101
write_main_cpp(
95102
&mut file,
96103
c_target,
@@ -100,20 +107,22 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
100107
.unwrap();
101108

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

118127
true
119128
}

crates/intrinsic-test/src/common/gen_rust.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,15 @@ pub fn compile_rust_programs(
8888
let mut cargo_command = Command::new("cargo");
8989
cargo_command.current_dir("rust_programs");
9090

91-
if let Some(toolchain) = toolchain {
92-
if !toolchain.is_empty() {
93-
cargo_command.arg(toolchain);
91+
match toolchain {
92+
None => return true,
93+
Some(toolchain) => {
94+
if !toolchain.is_empty() {
95+
cargo_command.arg(toolchain);
96+
}
9497
}
95-
}
98+
};
99+
96100
cargo_command.args(["build", "--target", target, "--release"]);
97101

98102
let mut rust_flags = "-Cdebuginfo=0".to_string();
@@ -105,6 +109,7 @@ pub fn compile_rust_programs(
105109
}
106110

107111
cargo_command.env("RUSTFLAGS", rust_flags);
112+
108113
let output = cargo_command.output();
109114

110115
if let Ok(output) = output {

0 commit comments

Comments
 (0)