Disallow whole archive for cc_shared_library RELNOTES:none PiperOrigin-RevId: 513219096 Change-Id: I75571974cd71622a4fac1cf837bd7db5b36fa75d
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java index aa32ea8..e2e61c0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -1077,6 +1077,11 @@ // is not needed). return false; } + if (featureConfiguration + .getRequestedFeatures() + .contains(CppRuleClasses.FORCE_NO_WHOLE_ARCHIVE)) { + return false; + } if (cppConfig.removeLegacyWholeArchive()) { // --incompatible_remove_legacy_whole_archive has been flipped, no --whole-archive for the // entire build.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java index 967055d..c21de5d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
@@ -461,6 +461,9 @@ /** A feature marking that the target needs to link its deps in --whole-archive block. */ public static final String LEGACY_WHOLE_ARCHIVE = "legacy_whole_archive"; + /** A feature for force disabling whole-archive on a per target and per rule type basis. */ + public static final String FORCE_NO_WHOLE_ARCHIVE = "force_no_whole_archive"; + /** * A feature marking that the target generates libraries that should not be put in a * --whole-archive block.
diff --git a/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl b/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl index 2c2070c..bd4b0e8 100644 --- a/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl +++ b/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl
@@ -398,7 +398,7 @@ feature_configuration = cc_common.configure_features( ctx = ctx, cc_toolchain = cc_toolchain, - requested_features = ctx.features, + requested_features = ctx.features + ["force_no_whole_archive"], unsupported_features = ctx.disabled_features, )