diff options
author | 2016-12-19 14:27:37 +0000 | |
---|---|---|
committer | 2016-12-19 16:15:46 +0000 | |
commit | 17380ac67da7860188f778209f144b4c401127a8 (patch) | |
tree | 89c4ce007d621c6f0d61f68d37bc27c9bf3e9cd1 /src/main/java | |
parent | 71536648ac4dbbb68b9cb8f8f87f959343b21d15 (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.java | 8 |
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); |