aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-12-19 14:27:37 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-12-19 16:15:46 +0000
commit17380ac67da7860188f778209f144b4c401127a8 (patch)
tree89c4ce007d621c6f0d61f68d37bc27c9bf3e9cd1 /src/main/java
parent71536648ac4dbbb68b9cb8f8f87f959343b21d15 (diff)
Fix bug introduced when pulling out test sources into their own library for
linking. This can lead to conflicts if done for non-test binary targets. -- PiperOrigin-RevId: 142441056 MOS_MIGRATED_REVID=142441056
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 9b190eff72..5e3a0639ce 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -164,6 +164,8 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
CcCommon common = new CcCommon(ruleContext);
CppConfiguration cppConfiguration = ruleContext.getFragment(CppConfiguration.class);
PrecompiledFiles precompiledFiles = new PrecompiledFiles(ruleContext);
+ LinkTargetType linkType =
+ isLinkShared(ruleContext) ? LinkTargetType.DYNAMIC_LIBRARY : LinkTargetType.EXECUTABLE;
semantics.validateAttributes(ruleContext);
if (ruleContext.hasErrors()) {
@@ -176,9 +178,11 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
.addSources(common.getSources())
.addDeps(ImmutableList.of(CppHelper.mallocForTarget(ruleContext)))
.setFake(fake)
- .setLinkType(LinkTargetType.STATIC_LIBRARY)
.addPrecompiledFiles(precompiledFiles)
.enableInterfaceSharedObjects();
+ // Always treat test targets as static libraries so that their code can be compiled into a
+ // dynamic library and profit from optimizations like interface so.
+ helper.setLinkType(ruleContext.isTestTarget() ? LinkTargetType.STATIC_LIBRARY : linkType);
CcLibraryHelper.Info info = helper.build();
CppCompilationContext cppCompilationContext = info.getCppCompilationContext();
@@ -201,8 +205,6 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
return null;
}
- LinkTargetType linkType =
- isLinkShared(ruleContext) ? LinkTargetType.DYNAMIC_LIBRARY : LinkTargetType.EXECUTABLE;
List<String> linkopts = common.getLinkopts();
LinkStaticness linkStaticness = getLinkStaticness(ruleContext, linkopts, cppConfiguration);