diff options
author | cpeyser <cpeyser@google.com> | 2017-09-13 21:24:40 +0200 |
---|---|---|
committer | Philipp Wollermann <philwo@google.com> | 2017-09-14 18:46:43 +0200 |
commit | ca216f5eb4b1f1892219db0f578495bbbdbaa875 (patch) | |
tree | 2cd1853f5424c44dc57e986ee0bd5e3f4ad3bc50 /src | |
parent | d1bd9d6637a7201e31e94683a9bc12cc59ac3651 (diff) |
Introduce empty "toolchain_category" rule for labels that will be used as
categories of toolchains for the purpose of toolchain selection.
Up to now, we've used the native toolchain_type rule for this purpose. That rule depends on a number of configuration fragments that supply build variables - we don't want toolchains to need to depend on those fragments as well. E.g. toolchain_type depends on JvmConfiguration, but we would like toolchains to work with --experimental_disable_jvm.
PiperOrigin-RevId: 168577759
Diffstat (limited to 'src')
3 files changed, 14 insertions, 4 deletions
diff --git a/src/create_embedded_tools.py b/src/create_embedded_tools.py index 699edd09f5..8b013cee44 100644 --- a/src/create_embedded_tools.py +++ b/src/create_embedded_tools.py @@ -31,6 +31,8 @@ output_paths = [ ('*tools/jdk/BUILD*', lambda x: 'tools/jdk/BUILD'), ('*tools/platforms/platforms.BUILD', lambda x: 'platforms/BUILD'), ('*tools/platforms/*', lambda x: 'platforms/' + os.path.basename(x)), + ('*tools/build_defs/toolchains/*', + lambda x: 'tools/build_defs/toolchains/' + os.path.basename(x)), ('*JavaBuilder*_deploy.jar', lambda x: 'tools/jdk/' + os.path.basename(x)), ('*JacocoCoverage*_deploy.jar', lambda x: 'tools/jdk/JacocoCoverage_deploy.jar'), diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java index 87f43cc057..5273d32226 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java @@ -89,7 +89,7 @@ public class CppHelper { /** Returns label used to select resolved cc_toolchain instances based on platform. */ public static Label getCcToolchainType(String toolsRepository) { - return Label.parseAbsoluteUnchecked(toolsRepository + "//tools/cpp:toolchain_type"); + return Label.parseAbsoluteUnchecked(toolsRepository + "//tools/cpp:toolchain_category"); } private CppHelper() { 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 b938e5fe93..2cf84b62d6 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 @@ -78,6 +78,7 @@ public final class BazelMockCcSupport extends MockCcSupport { "/bazel_tools_workspace/tools/cpp/BUILD", "package(default_visibility=['//visibility:public'])", "cc_library(name = 'stl')", + "toolchain_type(name = 'toolchain_type')", "cc_library(name = 'malloc')", "cc_toolchain_suite(", " name = 'toolchain',", @@ -145,16 +146,17 @@ public final class BazelMockCcSupport extends MockCcSupport { " name = 'link_dynamic_library',", " srcs = ['link_dynamic_library.sh'],", ")", - "toolchain_type(name = 'toolchain_type')", + "load('//tools/build_defs/toolchains:toolchain_category.bzl', 'toolchain_category')", + "toolchain_category(name = 'toolchain_category')", "toolchain(", " name = 'toolchain_cc-compiler-piii',", - " toolchain_type = ':toolchain_type',", + " toolchain_type = ':toolchain_category',", " toolchain = '//third_party/crosstool/mock:cc-compiler-piii',", " target_compatible_with = [':mock_value'],", ")", "toolchain(", " name = 'dummy_cc_toolchain',", - " toolchain_type = ':toolchain_type',", + " toolchain_type = ':toolchain_category',", " toolchain = ':dummy_cc_toolchain_impl',", ")", "load(':dummy_toolchain.bzl', 'dummy_toolchain')", @@ -165,6 +167,12 @@ public final class BazelMockCcSupport extends MockCcSupport { " toolchain = platform_common.ToolchainInfo()", " return [toolchain]", "dummy_toolchain = rule(_dummy_toolchain_impl, attrs = {})"); + config.create("/bazel_tools_workspace/tools/build_defs/toolchains/BUILD"); + config.create( + "/bazel_tools_workspace/tools/build_defs/toolchains/toolchain_category.bzl", + "def _toolchain_category_impl(ctx):", + " ctx = ctx", + "toolchain_category = rule(_toolchain_category_impl, attrs = {})"); config.create( "/bazel_tools_workspace/tools/cpp/CROSSTOOL", readCrosstoolFile()); |