@@ -18,7 +18,7 @@ use build_helper::output;
1818
1919use crate :: { Compiler , Mode , LLVM_TOOLS } ;
2020use crate :: channel;
21- use crate :: util:: { libdir , is_dylib, exe} ;
21+ use crate :: util:: { is_dylib, exe} ;
2222use crate :: builder:: { Builder , RunConfig , ShouldRun , Step } ;
2323use crate :: compile;
2424use crate :: tool:: { self , Tool } ;
@@ -473,21 +473,23 @@ 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 = libdir ( & host ) ;
476+ let libdir = builder . rustc_libdir ( compiler ) ;
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+
484486 // Copy runtime DLLs needed by the compiler
485- if libdir != "bin" {
486- for entry in builder. read_dir ( & src . join ( libdir) ) {
487+ if libdir_relative . to_str ( ) != Some ( "bin" ) {
488+ for entry in builder. read_dir ( & libdir) {
487489 let name = entry. file_name ( ) ;
488490 if let Some ( s) = name. to_str ( ) {
489491 if is_dylib ( s) {
490- builder. install ( & entry. path ( ) , & image. join ( libdir ) , 0o644 ) ;
492+ builder. install ( & entry. path ( ) , & image. join ( & libdir_relative ) , 0o644 ) ;
491493 }
492494 }
493495 }
@@ -516,7 +518,8 @@ impl Step for Rustc {
516518 . join ( "bin" )
517519 . join ( & exe) ;
518520 // for the rationale about this rename check `compile::copy_lld_to_sysroot`
519- let dst = image. join ( "lib/rustlib" )
521+ let dst = image. join ( libdir_relative)
522+ . join ( "rustlib" )
520523 . join ( & * host)
521524 . join ( "bin" )
522525 . join ( & exe) ;
0 commit comments