From c29c5b86eb33244d4ef5dce478e24ea33ce7e4d6 Mon Sep 17 00:00:00 2001 From: Thomas Clery Date: Tue, 30 Sep 2025 12:50:13 +0100 Subject: [PATCH 1/3] fix: avoid -C prefer-dynamic for test harnesses of proc-macro crates --- src/cargo/core/compiler/mod.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cargo/core/compiler/mod.rs b/src/cargo/core/compiler/mod.rs index 90a8bd0a893..f9a40f2aca1 100644 --- a/src/cargo/core/compiler/mod.rs +++ b/src/cargo/core/compiler/mod.rs @@ -1214,9 +1214,12 @@ fn build_base_args( cmd.arg("--emit=dep-info,link"); } } + let prefer_dynamic = + (unit.target.for_host() && !unit.target.is_custom_build()) + || (contains_dy_lib + && !build_runner.is_primary_package(unit) + && !unit.mode.is_any_test()); - let prefer_dynamic = (unit.target.for_host() && !unit.target.is_custom_build()) - || (contains_dy_lib && !build_runner.is_primary_package(unit)); if prefer_dynamic { cmd.arg("-C").arg("prefer-dynamic"); } From e841026cb71a2505585c17102927f400a730a196 Mon Sep 17 00:00:00 2001 From: Thomas Clery Date: Tue, 30 Sep 2025 13:37:12 +0100 Subject: [PATCH 2/3] Update mod.rs --- src/cargo/core/compiler/mod.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/cargo/core/compiler/mod.rs b/src/cargo/core/compiler/mod.rs index f9a40f2aca1..ae7f9988c93 100644 --- a/src/cargo/core/compiler/mod.rs +++ b/src/cargo/core/compiler/mod.rs @@ -1214,11 +1214,9 @@ fn build_base_args( cmd.arg("--emit=dep-info,link"); } } - let prefer_dynamic = - (unit.target.for_host() && !unit.target.is_custom_build()) - || (contains_dy_lib - && !build_runner.is_primary_package(unit) - && !unit.mode.is_any_test()); + + let prefer_dynamic = (unit.target.for_host() && !unit.target.is_custom_build()) + || (contains_dy_lib && !build_runner.is_primary_package(unit) && !unit.mode.is_any_test()); if prefer_dynamic { cmd.arg("-C").arg("prefer-dynamic"); From 6abb78560c33546859b11a344270b917fc5d5f73 Mon Sep 17 00:00:00 2001 From: Thomas Clery Date: Tue, 30 Sep 2025 13:39:11 +0100 Subject: [PATCH 3/3] Ensuring rustfmt test passes --- src/cargo/core/compiler/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cargo/core/compiler/mod.rs b/src/cargo/core/compiler/mod.rs index ae7f9988c93..102e21551ed 100644 --- a/src/cargo/core/compiler/mod.rs +++ b/src/cargo/core/compiler/mod.rs @@ -1214,7 +1214,7 @@ fn build_base_args( cmd.arg("--emit=dep-info,link"); } } - + let prefer_dynamic = (unit.target.for_host() && !unit.target.is_custom_build()) || (contains_dy_lib && !build_runner.is_primary_package(unit) && !unit.mode.is_any_test());