@@ -2301,7 +2301,8 @@ impl Build {
23012301 if target. contains ( "msvc" ) {
23022302 msvc. to_string ( )
23032303 } else {
2304- format ! ( "{}.exe" , gnu)
2304+ let cc = if target. contains ( "llvm" ) { clang } else { gnu } ;
2305+ format ! ( "{}.exe" , cc)
23052306 }
23062307 } else if target. contains ( "apple-ios" ) {
23072308 clang. to_string ( )
@@ -2329,7 +2330,10 @@ impl Build {
23292330 } else if self . get_host ( ) ? != target {
23302331 let prefix = self . prefix_for_target ( & target) ;
23312332 match prefix {
2332- Some ( prefix) => format ! ( "{}-{}" , prefix, gnu) ,
2333+ Some ( prefix) => {
2334+ let cc = if target. contains ( "llvm" ) { clang } else { gnu } ;
2335+ format ! ( "{}-{}" , prefix, cc)
2336+ }
23332337 None => default. to_string ( ) ,
23342338 }
23352339 } else {
@@ -2634,7 +2638,8 @@ impl Build {
26342638 let cc_env = self . getenv ( "CROSS_COMPILE" ) ;
26352639 let cross_compile = cc_env. as_ref ( ) . map ( |s| s. trim_end_matches ( '-' ) . to_owned ( ) ) ;
26362640 cross_compile. or ( match & target[ ..] {
2637- "aarch64-pc-windows-gnu" => Some ( "aarch64-w64-mingw32" ) ,
2641+ // Note: there is no `aarch64-pc-windows-gnu` target, only `-gnullvm`
2642+ "aarch64-pc-windows-gnullvm" => Some ( "aarch64-w64-mingw32" ) ,
26382643 "aarch64-uwp-windows-gnu" => Some ( "aarch64-w64-mingw32" ) ,
26392644 "aarch64-unknown-linux-gnu" => Some ( "aarch64-linux-gnu" ) ,
26402645 "aarch64-unknown-linux-musl" => Some ( "aarch64-linux-musl" ) ,
@@ -2737,6 +2742,7 @@ impl Build {
27372742 "thumbv8m.main-none-eabi" => Some ( "arm-none-eabi" ) ,
27382743 "thumbv8m.main-none-eabihf" => Some ( "arm-none-eabi" ) ,
27392744 "x86_64-pc-windows-gnu" => Some ( "x86_64-w64-mingw32" ) ,
2745+ "x86_64-pc-windows-gnullvm" => Some ( "x86_64-w64-mingw32" ) ,
27402746 "x86_64-uwp-windows-gnu" => Some ( "x86_64-w64-mingw32" ) ,
27412747 "x86_64-rumprun-netbsd" => Some ( "x86_64-rumprun-netbsd" ) ,
27422748 "x86_64-unknown-linux-gnu" => self . find_working_gnu_prefix ( & [
0 commit comments