diff options
author | hlopko <hlopko@google.com> | 2018-04-27 10:08:39 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-27 10:10:36 -0700 |
commit | fd9a0958a989cac1f08f15ab5643728469f9824e (patch) | |
tree | 0600eeeb986318512cb2b06fab27019293874ab6 /src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java | |
parent | 7afd69d431880ac81d01dc5cfa7e36bab37e7405 (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.java | 16 |
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. |