@@ -243,6 +243,7 @@ pub struct Build {
243
243
initial_rustc : PathBuf ,
244
244
initial_cargo : PathBuf ,
245
245
initial_lld : PathBuf ,
246
+ initial_libdir : PathBuf ,
246
247
247
248
// Runtime state filled in later on
248
249
// C/C++ compilers and archiver for all targets
@@ -344,8 +345,8 @@ impl Build {
344
345
// we always try to use git for LLVM builds
345
346
let in_tree_llvm_info = channel:: GitInfo :: new ( false , & src. join ( "src/llvm-project" ) ) ;
346
347
347
- let initial_target_libdir = if config. dry_run {
348
- "/dummy/path/to/lib/" . to_string ( )
348
+ let initial_target_libdir_str = if config. dry_run {
349
+ "/dummy/lib/ path/to/lib/" . to_string ( )
349
350
} else {
350
351
output (
351
352
Command :: new ( & config. initial_rustc )
@@ -355,13 +356,28 @@ impl Build {
355
356
. arg ( "target-libdir" ) ,
356
357
)
357
358
} ;
358
- let initial_lld =
359
- Path :: new ( & initial_target_libdir) . parent ( ) . unwrap ( ) . join ( "bin" ) . join ( "rust-lld" ) ;
359
+ let initial_target_dir = Path :: new ( & initial_target_libdir_str) . parent ( ) . unwrap ( ) ;
360
+ let initial_lld = initial_target_dir. join ( "bin" ) . join ( "rust-lld" ) ;
361
+
362
+ let initial_sysroot = if config. dry_run {
363
+ "/dummy" . to_string ( )
364
+ } else {
365
+ output ( Command :: new ( & config. initial_rustc ) . arg ( "--print" ) . arg ( "sysroot" ) )
366
+ } ;
367
+ let initial_libdir = initial_target_dir
368
+ . parent ( )
369
+ . unwrap ( )
370
+ . parent ( )
371
+ . unwrap ( )
372
+ . strip_prefix ( initial_sysroot. trim ( ) )
373
+ . unwrap ( )
374
+ . to_path_buf ( ) ;
360
375
361
376
let mut build = Build {
362
377
initial_rustc : config. initial_rustc . clone ( ) ,
363
378
initial_cargo : config. initial_cargo . clone ( ) ,
364
379
initial_lld,
380
+ initial_libdir,
365
381
local_rebuild : config. local_rebuild ,
366
382
fail_fast : config. cmd . fail_fast ( ) ,
367
383
doc_tests : config. cmd . doc_tests ( ) ,
0 commit comments