Skip to content

Commit 32da9ea

Browse files
committed
Auto merge of #9252 - ehuss:prefer-dynamic-ws, r=alexcrichton
Fix logic for determining prefer-dynamic for a dylib. The logic for determining if a dylib should use `prefer-dynamic` used to be something like "do not use prefer-dynamic if it is the current package". The current logic has a strange behavior where it works as intended if there is only one package in the workspace, but a workspace with multiple packages will always use `prefer-dynamic`. Instead of using `current_opt`, which isn't a good concept to use in a workspace, I switched this to be "primary" (a package selected on the command-line). **History** * 9879a0a Initial prefer-dynamic behavior. * #3221 changed to the faulty logic (see comments at #3221 (comment)). I think there was some confusion there. * #3478 fixed the logic for one of the changed conditions, but not the one for prefer-dynamic
2 parents c4adfd5 + 48e0306 commit 32da9ea

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/cargo/core/compiler/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@ fn build_base_args(
792792
}
793793

794794
let prefer_dynamic = (unit.target.for_host() && !unit.target.is_custom_build())
795-
|| (crate_types.contains(&CrateType::Dylib) && bcx.ws.members().any(|p| *p != unit.pkg));
795+
|| (crate_types.contains(&CrateType::Dylib) && !cx.is_primary_package(unit));
796796
if prefer_dynamic {
797797
cmd.arg("-C").arg("prefer-dynamic");
798798
}

0 commit comments

Comments
 (0)