From d852e484d8114829ad2d7a98f075a823889f5469 Mon Sep 17 00:00:00 2001 From: cpeyser Date: Thu, 7 Sep 2017 22:16:06 +0200 Subject: Add a new toolchain type for c++. In order to do this, PlatformConfiguration is made a legal configuration fragment for every rule class. Add a default "dummy" c++ toolchain to prevent resolution errors when legacy toolchain selection logic is used. Add toolchain mocks to java and shell tests. PiperOrigin-RevId: 167901210 --- .../lib/packages/util/BazelMockCcSupport.java | 27 ++++++++++++++++++---- .../lib/packages/util/MockPlatformSupport.java | 6 ++--- 2 files changed, 26 insertions(+), 7 deletions(-) (limited to 'src/test/java/com/google/devtools/build/lib/packages') diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java index 0defa523b1..b938e5fe93 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java @@ -77,7 +77,6 @@ public final class BazelMockCcSupport extends MockCcSupport { config.create( "/bazel_tools_workspace/tools/cpp/BUILD", "package(default_visibility=['//visibility:public'])", - "toolchain_type(name = 'toolchain_type')", "cc_library(name = 'stl')", "cc_library(name = 'malloc')", "cc_toolchain_suite(", @@ -123,7 +122,7 @@ public final class BazelMockCcSupport extends MockCcSupport { " linker_files = ':empty',", " module_map = 'crosstool.cppmap', supports_header_parsing = 1,", " objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',", - ")", + ")", "cc_toolchain(name = 'cc-compiler-armeabi-v7a', all_files = ':empty', ", " compiler_files = ':empty',", " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ", @@ -145,8 +144,27 @@ public final class BazelMockCcSupport extends MockCcSupport { "filegroup(", " name = 'link_dynamic_library',", " srcs = ['link_dynamic_library.sh'],", - ")"); - + ")", + "toolchain_type(name = 'toolchain_type')", + "toolchain(", + " name = 'toolchain_cc-compiler-piii',", + " toolchain_type = ':toolchain_type',", + " toolchain = '//third_party/crosstool/mock:cc-compiler-piii',", + " target_compatible_with = [':mock_value'],", + ")", + "toolchain(", + " name = 'dummy_cc_toolchain',", + " toolchain_type = ':toolchain_type',", + " toolchain = ':dummy_cc_toolchain_impl',", + ")", + "load(':dummy_toolchain.bzl', 'dummy_toolchain')", + "dummy_toolchain(name = 'dummy_cc_toolchain_impl')"); + config.create( + "/bazel_tools_workspace/tools/cpp/dummy_toolchain.bzl", + "def _dummy_toolchain_impl(ctx):", + " toolchain = platform_common.ToolchainInfo()", + " return [toolchain]", + "dummy_toolchain = rule(_dummy_toolchain_impl, attrs = {})"); config.create( "/bazel_tools_workspace/tools/cpp/CROSSTOOL", readCrosstoolFile()); @@ -156,6 +174,7 @@ public final class BazelMockCcSupport extends MockCcSupport { config.create("tools/cpp/link_dynamic_library.sh", ""); } MockObjcSupport.setup(config); + MockPlatformSupport.setup(config, "/bazel_tools_workspace/platforms"); } @Override diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockPlatformSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockPlatformSupport.java index dd0b5463dd..f2d89fbbe4 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/MockPlatformSupport.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockPlatformSupport.java @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. - package com.google.devtools.build.lib.packages.util; import java.io.IOException; @@ -20,9 +19,10 @@ import java.io.IOException; public class MockPlatformSupport { /** Adds mocks for basic host and target platform. */ - public static void setup(MockToolsConfig mockToolsConfig) throws IOException { + public static void setup(MockToolsConfig mockToolsConfig, String platformsPath) + throws IOException { mockToolsConfig.create( - "buildenv/platforms/BUILD", + platformsPath + "/BUILD", "package(default_visibility=['//visibility:public'])", "platform(", " name = 'target_platform',", -- cgit v1.2.3