Introduce is_cc_test_link_action build variable
--
PiperOrigin-RevId: 143664295
MOS_MIGRATED_REVID=143664295
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 1aa41ed..f82c35b 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 @@
/** 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 @@
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 f789163..633ae48 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 @@
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();
+ }
}