@@ -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