aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Marcel Hlopko <hlopko@google.com>2017-01-05 15:31:04 +0000
committerGravatar John Cater <jcater@google.com>2017-01-05 16:20:47 +0000
commit2919950691c61086c1678d3ae181ff381e67ffdb (patch)
tree0bbe1a40967e794bb1948e54d7fffbb58cbfd8ad /src
parent116d039ccb49ec71c2ea9626d8a0a0aee5cbabc0 (diff)
Introduce is_cc_test_link_action build variable
-- PiperOrigin-RevId: 143664295 MOS_MIGRATED_REVID=143664295
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java20
2 files changed, 27 insertions, 0 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 1aa41edb0f..f82c35b162 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
@@ -112,6 +112,9 @@ public class CppLinkActionBuilder {
/** A build variable whose presence indicates that PIC code should be generated. */
public static final String FORCE_PIC_VARIABLE = "force_pic";
+ /** A build variable whose presence indicates that this action is a cc_test linking action. */
+ public static final String IS_CC_TEST_LINK_ACTION_VARIABLE = "is_cc_test_link_action";
+
// Builder-only
// Null when invoked from tests (e.g. via createTestBuilder).
@Nullable private final RuleContext ruleContext;
@@ -1281,6 +1284,10 @@ public class CppLinkActionBuilder {
buildVariables.addStringVariable(FORCE_PIC_VARIABLE, "");
}
+ if (useTestOnlyFlags()) {
+ buildVariables.addStringVariable(IS_CC_TEST_LINK_ACTION_VARIABLE, "");
+ }
+
// rpath
if (linkArgCollector.getRpathRoot() != null) {
buildVariables.addStringVariable(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java
index f789163ecd..633ae48b5c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java
@@ -225,4 +225,24 @@ public class LinkBuildVariablesTest extends BuildViewTestCase {
assertThat(interfaceLibraryOutput).endsWith("ignored");
assertThat(interfaceLibraryBuilder).endsWith("ignored");
}
+
+ @Test
+ public void testIsCcTestLinkActionBuildVariable() throws Exception {
+ scratch.file("x/BUILD",
+ "cc_test(name = 'foo_test', srcs = ['a.cc'])",
+ "cc_binary(name = 'foo', srcs = ['a.cc'])");
+ scratch.file("x/a.cc");
+
+ ConfiguredTarget testTarget = getConfiguredTarget("//x:foo_test");
+ Variables testVariables = getLinkBuildVariables(testTarget, LinkTargetType.EXECUTABLE);
+
+ assertThat(testVariables.isAvailable(CppLinkActionBuilder.IS_CC_TEST_LINK_ACTION_VARIABLE))
+ .isTrue();
+
+ ConfiguredTarget binaryTarget = getConfiguredTarget("//x:foo");
+ Variables binaryVariables = getLinkBuildVariables(binaryTarget, LinkTargetType.EXECUTABLE);
+
+ assertThat(binaryVariables.isAvailable(CppLinkActionBuilder.IS_CC_TEST_LINK_ACTION_VARIABLE))
+ .isFalse();
+ }
}