@@ -18,7 +18,7 @@ use build_helper::output;
18
18
19
19
use crate :: { Compiler , Mode , LLVM_TOOLS } ;
20
20
use crate :: channel;
21
- use crate :: util:: { libdir , is_dylib, exe} ;
21
+ use crate :: util:: { is_dylib, exe} ;
22
22
use crate :: builder:: { Builder , RunConfig , ShouldRun , Step } ;
23
23
use crate :: compile;
24
24
use crate :: tool:: { self , Tool } ;
@@ -473,21 +473,23 @@ impl Step for Rustc {
473
473
fn prepare_image ( builder : & Builder < ' _ > , compiler : Compiler , image : & Path ) {
474
474
let host = compiler. host ;
475
475
let src = builder. sysroot ( compiler) ;
476
- let libdir = libdir ( & host ) ;
476
+ let libdir = builder . rustc_libdir ( compiler ) ;
477
477
478
478
// Copy rustc/rustdoc binaries
479
479
t ! ( fs:: create_dir_all( image. join( "bin" ) ) ) ;
480
480
builder. cp_r ( & src. join ( "bin" ) , & image. join ( "bin" ) ) ;
481
481
482
482
builder. install ( & builder. rustdoc ( compiler) , & image. join ( "bin" ) , 0o755 ) ;
483
483
484
+ let libdir_relative = builder. libdir_relative ( compiler) ;
485
+
484
486
// 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) {
487
489
let name = entry. file_name ( ) ;
488
490
if let Some ( s) = name. to_str ( ) {
489
491
if is_dylib ( s) {
490
- builder. install ( & entry. path ( ) , & image. join ( libdir ) , 0o644 ) ;
492
+ builder. install ( & entry. path ( ) , & image. join ( & libdir_relative ) , 0o644 ) ;
491
493
}
492
494
}
493
495
}
@@ -516,7 +518,8 @@ impl Step for Rustc {
516
518
. join ( "bin" )
517
519
. join ( & exe) ;
518
520
// 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" )
520
523
. join ( & * host)
521
524
. join ( "bin" )
522
525
. join ( & exe) ;
0 commit comments