aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2018-04-27 10:08:39 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-27 10:10:36 -0700
commitfd9a0958a989cac1f08f15ab5643728469f9824e (patch)
tree0600eeeb986318512cb2b06fab27019293874ab6 /src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
parent7afd69d431880ac81d01dc5cfa7e36bab37e7405 (diff)
Do not add flags from linking_mode_flags section when the toolchain defines
corresponding features. Therefore when both linking_mode_flags { mode: DYNAMIC } and feature { name: "dynamic_linking_mode" } are provided, bazel will only take flags from the feature. The same applies to mode: STATIC and static_linkin_mode feature respectively. mode: MOSTLY_STATIC_LIBRARIES is covered under dynamic_linking_mode for action "c++-link-dynamic-library". mode: FULLY_STATIC is handled separately. This is needed to provide a way of incremental migration towards legacy-flags-free crosstool. RELNOTES: None. PiperOrigin-RevId: 194556688
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java16
1 files changed, 11 insertions, 5 deletions
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 6662968cb3..73b8bea0d3 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
@@ -708,12 +708,18 @@ public class CppLinkActionBuilder {
result.addAll(
CppHelper.getFullyStaticLinkOptions(cppConfiguration, toolchain, sharedLinkopts));
} else if (mostlyStatic) {
- result.addAll(
- CppHelper.getMostlyStaticLinkOptions(
- cppConfiguration, toolchain, sharedLinkopts,
- featureConfiguration.isEnabled(CppRuleClasses.STATIC_LINK_CPP_RUNTIMES)));
+ if (!featureConfiguration.isEnabled(CppRuleClasses.STATIC_LINKING_MODE)) {
+ result.addAll(
+ CppHelper.getMostlyStaticLinkOptions(
+ cppConfiguration,
+ toolchain,
+ sharedLinkopts,
+ featureConfiguration.isEnabled(CppRuleClasses.STATIC_LINK_CPP_RUNTIMES)));
+ }
} else {
- result.addAll(CppHelper.getDynamicLinkOptions(cppConfiguration, toolchain, sharedLinkopts));
+ if (!featureConfiguration.isEnabled(CppRuleClasses.DYNAMIC_LINKING_MODE)) {
+ result.addAll(CppHelper.getDynamicLinkOptions(cppConfiguration, toolchain, sharedLinkopts));
+ }
}
// Extra test-specific link options.