aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-11-29 14:39:14 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-29 14:41:27 -0800
commit59317a350ce54d8f883c359b620d6b9505c2b3b4 (patch)
tree8a418974f6d5065c31709f7674c06cdb3288038b /src/test/java
parent485c32b71bac0e049f7f5735541c27b67112a92c (diff)
Add C++ Make variables to cc_binary, cc_library, and cc_test automatically when
Make variables are derived from toolchain. This will allow c++ targets to use c++ Make variables once platforms are activated without declaring an explicit dependency on the c++ toolchain. PiperOrigin-RevId: 177365568
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java b/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
index 91ad343ce6..86170607d1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.analysis.util.ScratchAttributeWriter;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.util.MockPlatformSupport;
import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
+import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
import com.google.devtools.build.lib.testutil.TestConstants;
import java.util.Map;
import org.junit.Test;
@@ -103,4 +104,45 @@ public class ToolchainTypeTest extends BuildViewTestCase {
assertThat(glibcVersion).isEqualTo(targetLibc);
}
}
+
+ @Test
+ public void testCcTargetsDependOnCcToolchainAutomatically() throws Exception {
+ MockPlatformSupport.addMockPiiiPlatform(
+ mockToolsConfig, analysisMock.ccSupport().getMockCrosstoolLabel());
+ useConfiguration(
+ "--enabled_toolchain_types="
+ + TestConstants.TOOLS_REPOSITORY
+ + "//tools/cpp:toolchain_type",
+ "--experimental_platforms=//mock_platform:mock-piii-platform",
+ "--extra_toolchains=//mock_platform:toolchain_cc-compiler-piii",
+ "--make_variables_source=toolchain");
+
+ // for cc_library, cc_binary, and cc_test, we check that $(TARGET_CPU) is a valid Make variable
+ ConfiguredTarget cclibrary =
+ ScratchAttributeWriter.fromLabelString(this, "cc_library", "//cclib")
+ .setList("srcs", "a.cc")
+ .setList("copts", "foobar$(TARGET_CPU)")
+ .write();
+ CppCompileAction compileAction =
+ (CppCompileAction) getGeneratingAction(getBinArtifact("_objs/cclib/cclib/a.o", cclibrary));
+ assertThat(compileAction.getArgv()).contains("foobarpiii");
+
+ ConfiguredTarget ccbinary =
+ ScratchAttributeWriter.fromLabelString(this, "cc_binary", "//ccbin")
+ .setList("srcs", "a.cc")
+ .setList("copts", "foobar$(TARGET_CPU)")
+ .write();
+ compileAction =
+ (CppCompileAction) getGeneratingAction(getBinArtifact("_objs/ccbin/ccbin/a.o", ccbinary));
+ assertThat(compileAction.getArgv()).contains("foobarpiii");
+
+ ConfiguredTarget cctest =
+ ScratchAttributeWriter.fromLabelString(this, "cc_test", "//cctest")
+ .setList("srcs", "a.cc")
+ .setList("copts", "foobar$(TARGET_CPU)")
+ .write();
+ compileAction =
+ (CppCompileAction) getGeneratingAction(getBinArtifact("_objs/cctest/cctest/a.o", cctest));
+ assertThat(compileAction.getArgv()).contains("foobarpiii");
+ }
}