@@ -278,14 +278,31 @@ fn runtime_dll_dist(rust_root: &Path, target: TargetSelection, builder: &Builder
278
278
return ;
279
279
}
280
280
281
- let ( bin_path, _) = get_cc_search_dirs ( target, builder) ;
282
-
283
- let mut rustc_dlls = vec ! [ "libwinpthread-1.dll" ] ;
284
- if target. starts_with ( "i686-" ) {
285
- rustc_dlls. push ( "libgcc_s_dw2-1.dll" ) ;
281
+ let ( bin_path, libs_path) = get_cc_search_dirs ( target, builder) ;
282
+
283
+ let mut rustc_dlls = vec ! [ ] ;
284
+ // windows-gnu and windows-gnullvm require different runtime libs
285
+ if target. ends_with ( "windows-gnu" ) {
286
+ rustc_dlls. push ( "libwinpthread-1.dll" ) ;
287
+ if target. starts_with ( "i686-" ) {
288
+ rustc_dlls. push ( "libgcc_s_dw2-1.dll" ) ;
289
+ } else {
290
+ rustc_dlls. push ( "libgcc_s_seh-1.dll" ) ;
291
+ }
292
+ } else if target. ends_with ( "windows-gnullvm" ) {
293
+ rustc_dlls. push ( "libunwind.dll" ) ;
286
294
} else {
287
- rustc_dlls . push ( "libgcc_s_seh-1.dll ") ;
295
+ panic ! ( "Vendoring of runtime DLLs for `{target}` is not supported` ") ;
288
296
}
297
+ // FIXME(#144656): Remove this whole `let ...`
298
+ let bin_path = if target. ends_with ( "windows-gnullvm" ) && builder. host_target != target {
299
+ bin_path
300
+ . into_iter ( )
301
+ . chain ( libs_path. iter ( ) . map ( |path| path. with_file_name ( "bin" ) ) )
302
+ . collect ( )
303
+ } else {
304
+ bin_path
305
+ } ;
289
306
let rustc_dlls = find_files ( & rustc_dlls, & bin_path) ;
290
307
291
308
// Copy runtime dlls next to rustc.exe
@@ -408,7 +425,7 @@ impl Step for Rustc {
408
425
// anything requiring us to distribute a license, but it's likely the
409
426
// install will *also* include the rust-mingw package, which also needs
410
427
// licenses, so to be safe we just include it here in all MinGW packages.
411
- if host. ends_with ( "pc-windows-gnu" ) && builder. config . dist_include_mingw_linker {
428
+ if host. contains ( "pc-windows-gnu" ) && builder. config . dist_include_mingw_linker {
412
429
runtime_dll_dist ( tarball. image_dir ( ) , host, builder) ;
413
430
tarball. add_dir ( builder. src . join ( "src/etc/third-party" ) , "share/doc" ) ;
414
431
}
0 commit comments