diff --git a/src/cargo/ops/cargo_rustc/mod.rs b/src/cargo/ops/cargo_rustc/mod.rs index c18756968c4..ab0887864c9 100644 --- a/src/cargo/ops/cargo_rustc/mod.rs +++ b/src/cargo/ops/cargo_rustc/mod.rs @@ -605,7 +605,7 @@ fn build_base_args(cx: &Context, cmd.arg("--crate-type").arg(crate_type); } - let prefer_dynamic = target.for_host() || + let prefer_dynamic = (target.for_host() && !target.is_custom_build()) || (crate_types.contains(&"dylib") && pkg.package_id() != cx.resolve.root()); if prefer_dynamic { diff --git a/tests/test_cargo_compile_custom_build.rs b/tests/test_cargo_compile_custom_build.rs index 28aed813b85..f172e34be49 100644 --- a/tests/test_cargo_compile_custom_build.rs +++ b/tests/test_cargo_compile_custom_build.rs @@ -761,7 +761,7 @@ test!(build_cmd_with_a_build_cmd { -L [..]target[..]deps -L [..]target[..]deps` {compiling} foo v0.5.0 (file://[..]) {running} `rustc build.rs --crate-name build_script_build --crate-type bin \ - -C prefer-dynamic -g \ + -g \ --out-dir [..]build[..]foo-[..] --emit=dep-info,link \ -L [..]target[..]debug -L [..]target[..]deps \ --extern a=[..]liba-[..].rlib` @@ -1109,6 +1109,7 @@ test!(build_script_with_dynamic_native_dependency { [lib] name = "builder" crate-type = ["dylib"] + plugin = true "#) .file("src/lib.rs", r#" #[no_mangle]