@@ -18,7 +18,7 @@ use build_helper::output;
1818
1919use crate :: { Compiler , Mode , LLVM_TOOLS } ;
2020use crate :: channel;
21- use crate :: util:: { is_dylib, exe} ;
21+ use crate :: util:: { libdir , is_dylib, exe} ;
2222use crate :: builder:: { Builder , RunConfig , ShouldRun , Step } ;
2323use crate :: compile;
2424use crate :: tool:: { self , Tool } ;
@@ -473,23 +473,21 @@ impl Step for Rustc {
473473 fn prepare_image ( builder : & Builder < ' _ > , compiler : Compiler , image : & Path ) {
474474 let host = compiler. host ;
475475 let src = builder. sysroot ( compiler) ;
476- let libdir = builder . rustc_libdir ( compiler ) ;
476+ let libdir = libdir ( & host ) ;
477477
478478 // Copy rustc/rustdoc binaries
479479 t ! ( fs:: create_dir_all( image. join( "bin" ) ) ) ;
480480 builder. cp_r ( & src. join ( "bin" ) , & image. join ( "bin" ) ) ;
481481
482482 builder. install ( & builder. rustdoc ( compiler) , & image. join ( "bin" ) , 0o755 ) ;
483483
484- let libdir_relative = builder. libdir_relative ( compiler) ;
485-
486484 // Copy runtime DLLs needed by the compiler
487- if libdir_relative . to_str ( ) != Some ( "bin" ) {
488- for entry in builder. read_dir ( & libdir) {
485+ if libdir != "bin" {
486+ for entry in builder. read_dir ( & src . join ( libdir) ) {
489487 let name = entry. file_name ( ) ;
490488 if let Some ( s) = name. to_str ( ) {
491489 if is_dylib ( s) {
492- builder. install ( & entry. path ( ) , & image. join ( & libdir_relative ) , 0o644 ) ;
490+ builder. install ( & entry. path ( ) , & image. join ( libdir ) , 0o644 ) ;
493491 }
494492 }
495493 }
@@ -518,8 +516,7 @@ impl Step for Rustc {
518516 . join ( "bin" )
519517 . join ( & exe) ;
520518 // for the rationale about this rename check `compile::copy_lld_to_sysroot`
521- let dst = image. join ( libdir_relative)
522- . join ( "rustlib" )
519+ let dst = image. join ( "lib/rustlib" )
523520 . join ( & * host)
524521 . join ( "bin" )
525522 . join ( & exe) ;
0 commit comments