From 57bc201346e61c62a921c1cbf32ad24f185c10c9 Mon Sep 17 00:00:00 2001 From: hlopko Date: Wed, 16 May 2018 02:15:04 -0700 Subject: Do not autodetect C++ toolchain when BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 is present This is useful e.g. when all C++ builds happen remotely and there's no C++ toolchain installed on the host machine. Fixes #5133. RELNOTES: None. PiperOrigin-RevId: 196798471 --- tools/cpp/BUILD.empty | 48 ++++++++++++++++++++++++++++++++++++++++++++++ tools/cpp/CROSSTOOL.empty | 15 +++++++++++++++ tools/cpp/cc_configure.bzl | 6 +++++- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 tools/cpp/BUILD.empty create mode 100644 tools/cpp/CROSSTOOL.empty (limited to 'tools') diff --git a/tools/cpp/BUILD.empty b/tools/cpp/BUILD.empty new file mode 100644 index 0000000000..1335d5d224 --- /dev/null +++ b/tools/cpp/BUILD.empty @@ -0,0 +1,48 @@ +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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(default_visibility = ["//visibility:public"]) + +cc_library( + name = "malloc", +) + +cc_library( + name = "stl", +) + +filegroup( + name = "empty", + srcs = [], +) + +cc_toolchain_suite( + name = "toolchain", + toolchains = { + "local|local": ":local", + }, +) + +cc_toolchain( + name = "local", + all_files = ":empty", + compiler_files = ":empty", + cpu = "local", + dwp_files = ":empty", + dynamic_runtime_libs = [":empty"], + linker_files = ":empty", + objcopy_files = ":empty", + static_runtime_libs = [":empty"], + strip_files = ":empty", +) diff --git a/tools/cpp/CROSSTOOL.empty b/tools/cpp/CROSSTOOL.empty new file mode 100644 index 0000000000..945d98785d --- /dev/null +++ b/tools/cpp/CROSSTOOL.empty @@ -0,0 +1,15 @@ +major_version: "local" +minor_version: "" +default_target_cpu: "local" + +toolchain { + abi_version: "local" + abi_libc_version: "local" + compiler: "local" + host_system_name: "local" + target_libc: "local" + target_cpu: "local" + target_system_name: "local" + toolchain_identifier: "local" +} + diff --git a/tools/cpp/cc_configure.bzl b/tools/cpp/cc_configure.bzl index 88c16cca1d..037860cb9f 100644 --- a/tools/cpp/cc_configure.bzl +++ b/tools/cpp/cc_configure.bzl @@ -23,7 +23,10 @@ def cc_autoconf_impl(repository_ctx, overriden_tools = dict()): Label("@bazel_tools//tools/cpp:dummy_toolchain.bzl"), "dummy_toolchain.bzl") env = repository_ctx.os.environ cpu_value = get_cpu_value(repository_ctx) - if cpu_value == "freebsd": + if "BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN" in env and env["BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN"] == "1": + repository_ctx.symlink(Label("@bazel_tools//tools/cpp:CROSSTOOL.empty"), "CROSSTOOL") + repository_ctx.symlink(Label("@bazel_tools//tools/cpp:BUILD.empty"), "BUILD") + elif cpu_value == "freebsd": # This is defaulting to the static crosstool, we should eventually # autoconfigure this platform too. Theorically, FreeBSD should be # straightforward to add but we cannot run it in a docker container so @@ -53,6 +56,7 @@ cc_autoconf = repository_rule( "BAZEL_TARGET_LIBC", "BAZEL_TARGET_SYSTEM", "BAZEL_USE_CPP_ONLY_TOOLCHAIN", + "BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN", "BAZEL_USE_LLVM_NATIVE_COVERAGE", "BAZEL_VC", "BAZEL_VS", -- cgit v1.2.3