@@ -5,7 +5,7 @@ mod intrinsic;
55mod json_parser;
66mod types;
77
8- use std:: fs:: File ;
8+ use std:: fs;
99
1010use rayon:: prelude:: * ;
1111
@@ -69,28 +69,31 @@ 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_wrapped = compile:: build_cpp_compilation ( & self . cli_options ) ;
7373
7474 let notice = & build_notices ( "// " ) ;
75+ fs:: create_dir_all ( "c_programs" ) . unwrap ( ) ;
7576 self . intrinsics
7677 . par_chunks ( chunk_size)
7778 . enumerate ( )
7879 . map ( |( i, chunk) | {
7980 let c_filename = format ! ( "c_programs/mod_{i}.cpp" ) ;
80- let mut file = File :: create ( & c_filename) . unwrap ( ) ;
81+ let mut file = fs :: File :: create ( & c_filename) . unwrap ( ) ;
8182 write_mod_cpp ( & mut file, notice, c_target, platform_headers, chunk) . unwrap ( ) ;
8283
8384 // 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:?}" ) ;
85+ if let Some ( cpp_compiler) = cpp_compiler_wrapped. as_ref ( ) {
86+ let output = cpp_compiler
87+ . compile_object_file ( & format ! ( "mod_{i}.cpp" ) , & format ! ( "mod_{i}.o" ) ) ?;
88+ assert ! ( output. status. success( ) , "{output:?}" ) ;
89+ }
8790
8891 Ok ( ( ) )
8992 } )
9093 . collect :: < Result < ( ) , std:: io:: Error > > ( )
9194 . unwrap ( ) ;
9295
93- let mut file = File :: create ( "c_programs/main.cpp" ) . unwrap ( ) ;
96+ let mut file = fs :: File :: create ( "c_programs/main.cpp" ) . unwrap ( ) ;
9497 write_main_cpp (
9598 & mut file,
9699 c_target,
@@ -100,20 +103,22 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
100103 . unwrap ( ) ;
101104
102105 // 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:?}" ) ;
106+ if let Some ( cpp_compiler) = cpp_compiler_wrapped. as_ref ( ) {
107+ info ! ( "compiling main.cpp" ) ;
108+ let output = cpp_compiler
109+ . compile_object_file ( "main.cpp" , "intrinsic-test-programs.o" )
110+ . unwrap ( ) ;
111+ assert ! ( output. status. success( ) , "{output:?}" ) ;
112+
113+ let object_files = ( 0 ..chunk_count)
114+ . map ( |i| format ! ( "mod_{i}.o" ) )
115+ . chain ( [ "intrinsic-test-programs.o" . to_owned ( ) ] ) ;
116+
117+ let output = cpp_compiler
118+ . link_executable ( object_files, "intrinsic-test-programs" )
119+ . unwrap ( ) ;
120+ assert ! ( output. status. success( ) , "{output:?}" ) ;
121+ }
117122
118123 true
119124 }
@@ -138,7 +143,11 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
138143 AARCH_CONFIGURATIONS ,
139144 ) ;
140145
141- compile_rust_programs ( intrinsics_name_list, toolchain, target, linker)
146+ if self . cli_options . toolchain . is_some ( ) {
147+ compile_rust_programs ( intrinsics_name_list, toolchain, target, linker)
148+ } else {
149+ true
150+ }
142151 }
143152
144153 fn compare_outputs ( & self ) -> bool {
0 commit comments