diff options
author | 2017-11-29 14:39:14 -0800 | |
---|---|---|
committer | 2017-11-29 14:41:27 -0800 | |
commit | 59317a350ce54d8f883c359b620d6b9505c2b3b4 (patch) | |
tree | 8a418974f6d5065c31709f7674c06cdb3288038b /src/test/java | |
parent | 485c32b71bac0e049f7f5735541c27b67112a92c (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.java | 42 |
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"); + } } |