diff --git a/src/cargo/core/compiler/compilation.rs b/src/cargo/core/compiler/compilation.rs index c31ee9ee4eb..7531f0fa61b 100644 --- a/src/cargo/core/compiler/compilation.rs +++ b/src/cargo/core/compiler/compilation.rs @@ -315,7 +315,10 @@ impl<'gctx> Compilation<'gctx> { // libs from the sysroot that ships with rustc. This may not be // required (at least I cannot craft a situation where it // matters), but is here to be safe. - if self.gctx.cli_unstable().build_std.is_none() { + if self.gctx.cli_unstable().build_std.is_none() || + // Proc macros dynamically link to std, so set it anyway. + pkg.proc_macro() + { search_path.push(self.sysroot_target_libdir[&kind].clone()); } } diff --git a/tests/build-std/main.rs b/tests/build-std/main.rs index 07c6919fb77..9906d0a890f 100644 --- a/tests/build-std/main.rs +++ b/tests/build-std/main.rs @@ -386,15 +386,7 @@ fn test_proc_macro() { [COMPILING] foo v0.0.0 ([ROOT]/foo) [FINISHED] `test` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s [RUNNING] unittests src/lib.rs (target/debug/deps/foo-[HASH]) -dyld[[..]]: Library not loaded: @rpath/libstd-[HASH].dylib - Referenced from: <[..]> [ROOT]/foo/target/debug/deps/foo-[HASH] - Reason: tried: '[ROOT]/foo/target/debug/deps/libstd-[HASH].dylib' (no such file), '[ROOT]/foo/target/debug/libstd-[HASH].dylib' (no such file), '/usr/local/lib/libstd-[HASH].dylib' (no such file), '/usr/lib/libstd-[HASH].dylib' (no such file, not in dyld cache) -[ERROR] test failed, to rerun pass `--lib` - -Caused by: - process didn't exit successfully: `[ROOT]/foo/target/debug/deps/foo-[HASH]` ([..]) "#]]) - .with_status(101) .run(); }