toolchain config release for Bazel 0.14.1 (#81)
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 620a95d..4e6f09c 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -11,8 +11,8 @@
- "//test/configs:debian8_clang_autoconfig_test"
- "//configs/debian8_clang:debian8-clang-0.3.0-bazel_0.13.0-autoconfig_test"
- "//configs/debian8_clang:msan-debian8-clang-0.3.0-bazel_0.13.0-autoconfig_test"
- - "//configs/ubuntu16_04_clang:ubuntu16_04-clang-0.3.0-bazel_0.13.0-autoconfig_test"
- - "//configs/ubuntu16_04_clang:msan-ubuntu16_04-clang-0.3.0-bazel_0.13.0-autoconfig_test"
+ - "//configs/ubuntu16_04_clang:ubuntu16_04-clang-1.0-bazel_0.13.0-autoconfig_test"
+ - "//configs/ubuntu16_04_clang:msan-ubuntu16_04-clang-1.0-bazel_0.13.0-autoconfig_test"
- "//container/debian8/builders/rbe-debian8:toolchain-test"
- "//container/ubuntu16_04/builders/rbe-ubuntu16_04:toolchain-test"
- "//container/experimental/rbe-debian9:toolchain-test"
@@ -31,8 +31,8 @@
- "//test/configs:debian8_clang_autoconfig_test"
- "//configs/debian8_clang:debian8-clang-0.3.0-bazel_0.13.0-autoconfig_test"
- "//configs/debian8_clang:msan-debian8-clang-0.3.0-bazel_0.13.0-autoconfig_test"
- - "//configs/ubuntu16_04_clang:ubuntu16_04-clang-0.3.0-bazel_0.13.0-autoconfig_test"
- - "//configs/ubuntu16_04_clang:msan-ubuntu16_04-clang-0.3.0-bazel_0.13.0-autoconfig_test"
+ - "//configs/ubuntu16_04_clang:ubuntu16_04-clang-1.0-bazel_0.13.0-autoconfig_test"
+ - "//configs/ubuntu16_04_clang:msan-ubuntu16_04-clang-1.0-bazel_0.13.0-autoconfig_test"
- "//container/debian8/builders/rbe-debian8:toolchain-test"
- "//container/ubuntu16_04/builders/rbe-ubuntu16_04:toolchain-test"
- "//container/experimental/rbe-debian9:toolchain-test"
diff --git a/bazelrc/bazel-0.14.1.bazelrc b/bazelrc/bazel-0.14.1.bazelrc
new file mode 100644
index 0000000..a34be04
--- /dev/null
+++ b/bazelrc/bazel-0.14.1.bazelrc
@@ -0,0 +1,91 @@
+# Copyright 2016 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.
+
+# This .bazelrc file contains all of the flags required for the toolchain,
+# Remote Build Execution, and the Bazel Build Results UI. Specific flags in
+# your Bazel command allow you to use only the remote build, to use only the
+# results UI, or to use them both together.
+
+# Remote Build Execution requires a strong hash function, such as SHA256.
+startup --host_jvm_args=-Dbazel.DigestFunction=SHA256
+
+# Depending on how many machines are in the remote execution instance, setting
+# this higher can make builds faster by allowing more jobs to run in parallel.
+# Setting it too high can result in jobs that timeout, however, while waiting
+# for a remote machine to execute them.
+build:remote --jobs=50
+
+# Set several flags related to specifying the toolchain and java properties.
+# These flags are duplicated rather than imported from (for example)
+# %workspace%/configs/ubuntu16_04_clang/1.0/toolchain.bazelrc to make this
+# bazelrc a standalone file that can be copied more easily.
+build:remote --host_javabase=@bazel_toolchains//configs/ubuntu16_04_clang/1.0:jdk8
+build:remote --javabase=@bazel_toolchains//configs/ubuntu16_04_clang/1.0:jdk8
+build:remote --crosstool_top=@bazel_toolchains//configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default:toolchain
+build:remote --experimental_remote_platform_override='properties:{ name:"container-image" value:"docker://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:59bf0e191a6b5cc1ab62c2224c810681d1326bad5a27b1d36c9f40113e79da7f" }'
+
+# Set various strategies so that all actions execute remotely. Mixing remote
+# and local execution will lead to errors unless the toolchain and remote
+# machine exactly match the host machine.
+build:remote --spawn_strategy=remote
+build:remote --strategy=Javac=remote
+build:remote --strategy=Closure=remote
+build:remote --genrule_strategy=remote
+build:remote --define=EXECUTOR=remote
+
+# Enable the remote cache so action results can be shared across machines,
+# developers, and workspaces.
+build:remote --remote_cache=remotebuildexecution.googleapis.com
+
+# Enable remote execution so actions are performed on the remote systems.
+build:remote --remote_executor=remotebuildexecution.googleapis.com
+
+# Enable encryption.
+build:remote --tls_enabled=true
+
+# Enforce stricter environment rules, which eliminates some non-hermetic
+# behavior and therefore improves both the remote cache hit rate and the
+# correctness and repeatability of the build.
+build:remote --experimental_strict_action_env=true
+
+# Set a higher timeout value, just in case.
+build:remote --remote_timeout=3600
+
+# Enable authentication. This will pick up application default credentials by
+# default. You can use --auth_credentials=some_file.json to use a service
+# account credential instead.
+build:remote --auth_enabled=true
+
+# Set flags for uploading to BES in order to view results in the Bazel Build
+# Results UI.
+build:results --bes_backend="buildeventservice.googleapis.com"
+build:results --bes_timeout=60s
+
+# If the upload to BES fails, the build will fail.
+build:results --bes_best_effort=false
+
+# Output BES results url
+build:results --bes_results_url="https://source.cloud.google.com/results/invocations/"
+
+# Set flags for uploading to BES without Remote Build Execution.
+build:results-local --bes_backend="buildeventservice.googleapis.com"
+build:results-local --bes_timeout=60s
+build:results-local --bes_best_effort=false
+build:results-local --tls_enabled=true
+build:results-local --auth_enabled=true
+build:results-local --spawn_strategy=local
+build:results-local --experimental_remote_spawn_cache
+build:results-local --remote_cache=remotebuildexecution.googleapis.com
+build:results-local --remote_timeout=3600
+build:results-local --bes_results_url="https://source.cloud.google.com/results/invocations/"
diff --git a/bazelrc/latest.bazelrc b/bazelrc/latest.bazelrc
index 19f5a14..3e584e4 120000
--- a/bazelrc/latest.bazelrc
+++ b/bazelrc/latest.bazelrc
@@ -1 +1 @@
-bazel-0.13.0.bazelrc
\ No newline at end of file
+bazel-0.14.1.bazelrc
\ No newline at end of file
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/cpp/BUILD b/configs/debian8_clang/0.3.0/bazel_0.14.1/cpp/BUILD
new file mode 100644
index 0000000..e90521d
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/cpp/BUILD
@@ -0,0 +1,50 @@
+# Copyright 2017 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.
+
+licenses(["notice"]) # Apache 2.0
+
+package(default_visibility = ["//visibility:public"])
+
+toolchain(
+ name = "cc-toolchain-clang-x86_64-default",
+ exec_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ "@bazel_tools//tools/cpp:clang",
+ "//constraints:jessie",
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ ],
+ toolchain = "//configs/debian8_clang/0.3.0/bazel_0.14.1/default:cc-compiler-k8",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+toolchain(
+ name = "cc-toolchain-clang-x86_64-msan",
+ exec_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ "@bazel_tools//tools/cpp:clang",
+ "//constraints:jessie",
+ "//constraints/sanitizers:support_msan",
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ ],
+ toolchain = "//configs/debian8_clang/0.3.0/bazel_0.14.1/msan:cc-compiler-k8",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/default/BUILD b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/BUILD
new file mode 100755
index 0000000..5bba7ae
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/BUILD
@@ -0,0 +1,139 @@
+# Copyright 2016 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.
+
+# This becomes the BUILD file for @local_config_cc// under non-FreeBSD unixes.
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache 2.0
+
+cc_library(
+ name = "malloc",
+)
+
+cc_library(
+ name = "stl",
+)
+
+filegroup(
+ name = "empty",
+ srcs = [],
+)
+
+filegroup(
+ name = "cc_wrapper",
+ srcs = ["cc_wrapper.sh"],
+)
+
+filegroup(
+ name = "compiler_deps",
+ srcs = glob(["extra_tools/**"]) + [":empty"],
+)
+
+# This is the entry point for --crosstool_top. Toolchains are found
+# by lopping off the name of --crosstool_top and searching for
+# the "${CPU}" entry in the toolchains attribute.
+cc_toolchain_suite(
+ name = "toolchain",
+ toolchains = {
+ "k8|clang": ":cc-compiler-k8",
+ "armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
+ "ios_x86_64|compiler": ":cc-compiler-ios_x86_64",
+ },
+)
+
+cc_toolchain(
+ name = "cc-compiler-k8",
+ all_files = ":compiler_deps",
+ compiler_files = ":compiler_deps",
+ cpu = "k8",
+ dwp_files = ":empty",
+ dynamic_runtime_libs = [":empty"],
+ linker_files = ":compiler_deps",
+ objcopy_files = ":empty",
+ static_runtime_libs = [":empty"],
+ strip_files = ":empty",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-k8",
+ exec_compatible_with = [
+ # This toolchain will only work with the local autoconfigured platforms.
+ "@bazel_tools//platforms:autoconfigured",
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ toolchain = ":cc-compiler-k8",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+# Android tooling requires a default toolchain for the armeabi-v7a cpu.
+cc_toolchain(
+ name = "cc-compiler-armeabi-v7a",
+ 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",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-armeabi-v7a",
+ exec_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:arm",
+ "@bazel_tools//platforms:android",
+ ],
+ toolchain = ":cc-compiler-armabi-v7a",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+# ios crosstool configuration requires a default toolchain for the
+# ios_x86_64 cpu.
+cc_toolchain(
+ name = "cc-compiler-ios_x86_64",
+ 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",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-ios_x86_64",
+ exec_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:x86_64",
+ "@bazel_tools//platforms:ios",
+ ],
+ toolchain = ":cc-compiler-ios_x86_64",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/default/CROSSTOOL b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/CROSSTOOL
new file mode 100755
index 0000000..6c71c1d
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/CROSSTOOL
@@ -0,0 +1,1155 @@
+# Copyright 2016 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.
+
+major_version: "local"
+minor_version: ""
+default_target_cpu: "same_as_host"
+
+default_toolchain {
+ cpu: "k8"
+ toolchain_identifier: "linux_gnu_x86"
+}
+
+default_toolchain {
+ cpu: "local"
+ toolchain_identifier: "stub_armeabi-v7a"
+}
+
+default_toolchain {
+ cpu: "armeabi-v7a"
+ toolchain_identifier: "stub_armeabi-v7a"
+}
+
+default_toolchain {
+ cpu: "x64_windows"
+ toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+ cpu: "x64_windows_msvc"
+ toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+ cpu: "x64_windows_msys"
+ toolchain_identifier: "msys_x64"
+}
+
+default_toolchain {
+ cpu: "s390x"
+ toolchain_identifier: "linux_gnu_x86"
+}
+
+default_toolchain {
+ cpu: "local"
+ toolchain_identifier: "ios_x86_64"
+}
+
+default_toolchain {
+ cpu: "ios_x86_64"
+ toolchain_identifier: "ios_x86_64"
+}
+
+# Android tooling requires a default toolchain for the armeabi-v7a cpu.
+toolchain {
+ abi_version: "armeabi-v7a"
+ abi_libc_version: "armeabi-v7a"
+ builtin_sysroot: ""
+ compiler: "compiler"
+ host_system_name: "armeabi-v7a"
+ needsPic: true
+ supports_gold_linker: false
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: false
+ target_libc: "armeabi-v7a"
+ target_cpu: "armeabi-v7a"
+ target_system_name: "armeabi-v7a"
+ toolchain_identifier: "stub_armeabi-v7a"
+
+ tool_path { name: "ar" path: "/bin/false" }
+ tool_path { name: "compat-ld" path: "/bin/false" }
+ tool_path { name: "cpp" path: "/bin/false" }
+ tool_path { name: "dwp" path: "/bin/false" }
+ tool_path { name: "gcc" path: "/bin/false" }
+ tool_path { name: "gcov" path: "/bin/false" }
+ tool_path { name: "ld" path: "/bin/false" }
+
+ tool_path { name: "nm" path: "/bin/false" }
+ tool_path { name: "objcopy" path: "/bin/false" }
+ tool_path { name: "objdump" path: "/bin/false" }
+ tool_path { name: "strip" path: "/bin/false" }
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "ios_x86_64"
+ host_system_name: "x86_64-apple-macosx"
+ target_system_name: "x86_64-apple-ios"
+ target_cpu: "ios_x86_64"
+ target_libc: "ios"
+ compiler: "compiler"
+ abi_version: "local"
+ abi_libc_version: "local"
+ supports_gold_linker: false
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: false
+
+ tool_path { name: "ar" path: "/bin/false" }
+ tool_path { name: "compat-ld" path: "/bin/false" }
+ tool_path { name: "cpp" path: "/bin/false" }
+ tool_path { name: "dwp" path: "/bin/false" }
+ tool_path { name: "gcc" path: "/bin/false" }
+ tool_path { name: "gcov" path: "/bin/false" }
+ tool_path { name: "ld" path: "/bin/false" }
+
+ tool_path { name: "nm" path: "/bin/false" }
+ tool_path { name: "objcopy" path: "/bin/false" }
+ tool_path { name: "objdump" path: "/bin/false" }
+ tool_path { name: "strip" path: "/bin/false" }
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "linux_gnu_x86"
+ abi_version: "clang"
+ abi_libc_version: "glibc_2.19"
+ builtin_sysroot: ""
+ compiler: "clang"
+ host_system_name: "i686-unknown-linux-gnu"
+ needsPic: true
+ supports_gold_linker: true
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: true
+ target_libc: "glibc_2.19"
+ target_cpu: "k8"
+ target_system_name: "x86_64-unknown-linux-gnu"
+ cxx_flag: "-std=c++0x"
+ linker_flag: "-fuse-ld=gold"
+ linker_flag: "-B/usr/local/bin"
+ linker_flag: "-B/usr/bin"
+ linker_flag: "-lstdc++"
+ linker_flag: "-lm"
+ cxx_builtin_include_directory: "/usr/local/include"
+ cxx_builtin_include_directory: "/usr/local/lib/clang/7.0.0/include"
+ cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu"
+ cxx_builtin_include_directory: "/usr/include"
+ cxx_builtin_include_directory: "/usr/include/c++/4.9"
+ cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu/c++/4.9"
+ cxx_builtin_include_directory: "/usr/include/c++/4.9/backward"
+ objcopy_embed_flag: "-I"
+ objcopy_embed_flag: "binary"
+ unfiltered_cxx_flag: "-no-canonical-prefixes"
+ unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
+ unfiltered_cxx_flag: "-D__DATE__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIME__=\"redacted\""
+ compiler_flag: "-U_FORTIFY_SOURCE"
+ compiler_flag: "-fstack-protector"
+ compiler_flag: "-Wall"
+ compiler_flag: "-B/usr/local/bin"
+ compiler_flag: "-B/usr/bin"
+ compiler_flag: "-fcolor-diagnostics"
+ compiler_flag: "-fno-omit-frame-pointer"
+ tool_path {name: "ar" path: "/usr/bin/ar" }
+ tool_path {name: "ld" path: "/usr/bin/ld" }
+ tool_path {name: "cpp" path: "/usr/bin/cpp" }
+ tool_path {name: "gcc" path: "/usr/local/bin/clang" }
+ tool_path {name: "dwp" path: "/usr/bin/dwp" }
+ tool_path {name: "gcov" path: "/usr/bin/gcov" }
+ tool_path {name: "nm" path: "/usr/bin/nm" }
+ tool_path {name: "objcopy" path: "/usr/bin/objcopy" }
+ tool_path {name: "objdump" path: "/usr/bin/objdump" }
+ tool_path {name: "strip" path: "/usr/bin/strip" }
+
+ compilation_mode_flags {
+ mode: DBG
+ compiler_flag: "-g"
+ }
+ compilation_mode_flags {
+ mode: OPT
+ compiler_flag: "-g0"
+ compiler_flag: "-O2"
+ compiler_flag: "-D_FORTIFY_SOURCE=1"
+ compiler_flag: "-DNDEBUG"
+ compiler_flag: "-ffunction-sections"
+ compiler_flag: "-fdata-sections"
+ linker_flag: "-Wl,--gc-sections"
+ }
+ linking_mode_flags { mode: DYNAMIC }
+
+
+ feature {
+ name: 'coverage'
+ provides: 'profile'
+ flag_set {
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ flag_group {
+ flag: '--coverage'
+ }
+ }
+ flag_set {
+ action: 'c++-link-dynamic-library'
+ action: 'c++-link-nodeps-dynamic-library'
+ action: 'c++-link-executable'
+ flag_group {
+ flag: '--coverage'
+ }
+ }
+ }
+
+
+ feature {
+ name: 'fdo_optimize'
+ provides: 'profile'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ expand_if_all_available: 'fdo_profile_path'
+ flag_group {
+ flag: '-fprofile-use=%{fdo_profile_path}'
+ flag: '-fprofile-correction',
+ }
+ }
+ }
+}
+
+toolchain {
+ toolchain_identifier: "msys_x64_mingw"
+ abi_version: "local"
+ abi_libc_version: "local"
+ builtin_sysroot: ""
+ compiler: "mingw-gcc"
+ host_system_name: "local"
+ needsPic: false
+ target_libc: "mingw"
+ target_cpu: "x64_windows"
+ target_system_name: "local"
+
+
+
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "msvc_x64"
+ host_system_name: "local"
+ target_system_name: "local"
+
+ abi_version: "local"
+ abi_libc_version: "local"
+ target_cpu: "x64_windows"
+ compiler: "msvc-cl"
+ target_libc: "msvcrt"
+ default_python_version: "python2.7"
+
+
+
+ tool_path {
+ name: "ar"
+ path: ""
+ }
+ tool_path {
+ name: "ml"
+ path: ""
+ }
+ tool_path {
+ name: "cpp"
+ path: ""
+ }
+ tool_path {
+ name: "gcc"
+ path: ""
+ }
+ tool_path {
+ name: "gcov"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "ld"
+ path: ""
+ }
+ tool_path {
+ name: "nm"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "objcopy"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "objdump"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "strip"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ supports_gold_linker: false
+ supports_start_end_lib: false
+ supports_interface_shared_objects: true
+ supports_incremental_linker: false
+ supports_normalizing_ar: true
+ needsPic: false
+
+ # TODO(pcloudy): Review those flags below, they should be defined by cl.exe
+ compiler_flag: "/DCOMPILER_MSVC"
+
+ # Don't define min/max macros in windows.h.
+ compiler_flag: "/DNOMINMAX"
+
+ # Platform defines.
+ compiler_flag: "/D_WIN32_WINNT=0x0600"
+ # Turn off warning messages.
+ compiler_flag: "/D_CRT_SECURE_NO_DEPRECATE"
+ compiler_flag: "/D_CRT_SECURE_NO_WARNINGS"
+ compiler_flag: "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS"
+
+ # Useful options to have on for compilation.
+ # Increase the capacity of object files to 2^32 sections.
+ compiler_flag: "/bigobj"
+ # Allocate 500MB for precomputed headers.
+ compiler_flag: "/Zm500"
+ # Use unsigned char by default.
+ compiler_flag: "/J"
+ # Use function level linking.
+ compiler_flag: "/Gy"
+ # Use string pooling.
+ compiler_flag: "/GF"
+ # Catch C++ exceptions only and tell the compiler to assume that functions declared
+ # as extern "C" never throw a C++ exception.
+ compiler_flag: "/EHsc"
+
+ # Globally disabled warnings.
+ # Don't warn about elements of array being be default initialized.
+ compiler_flag: "/wd4351"
+ # Don't warn about no matching delete found.
+ compiler_flag: "/wd4291"
+ # Don't warn about diamond inheritance patterns.
+ compiler_flag: "/wd4250"
+ # Don't warn about insecure functions (e.g. non _s functions).
+ compiler_flag: "/wd4996"
+
+ linker_flag: "/MACHINE:X64"
+
+ feature {
+ name: "no_legacy_features"
+ }
+
+ # Suppress startup banner.
+ feature {
+ name: "nologo"
+ flag_set {
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ action: "c++-link-static-library"
+ flag_group {
+ flag: "/nologo"
+ }
+ }
+ }
+
+ feature {
+ name: 'has_configured_linker_path'
+ }
+
+ # This feature indicates strip is not supported, building stripped binary will just result a copy of orignial binary
+ feature {
+ name: 'no_stripping'
+ }
+
+ # This feature indicates this is a toolchain targeting Windows.
+ feature {
+ name: 'targets_windows'
+ implies: 'copy_dynamic_libraries_to_binary'
+ enabled: true
+ }
+
+ feature {
+ name: 'copy_dynamic_libraries_to_binary'
+ }
+
+ action_config {
+ config_name: 'assemble'
+ action_name: 'assemble'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ flag: '/Zi'
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'sysroot'
+ }
+
+ action_config {
+ config_name: 'c-compile'
+ action_name: 'c-compile'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ flag_group {
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_assembly_file'
+ flag_group {
+ flag: '/Fa%{output_assembly_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_preprocess_file'
+ flag_group {
+ flag: '/P'
+ flag: '/Fi%{output_preprocess_file}'
+ }
+ }
+ implies: 'legacy_compile_flags'
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'parse_showincludes'
+ implies: 'user_compile_flags'
+ implies: 'sysroot'
+ implies: 'unfiltered_compile_flags'
+ }
+
+ action_config {
+ config_name: 'c++-compile'
+ action_name: 'c++-compile'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ flag_group {
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_assembly_file'
+ flag_group {
+ flag: '/Fa%{output_assembly_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_preprocess_file'
+ flag_group {
+ flag: '/P'
+ flag: '/Fi%{output_preprocess_file}'
+ }
+ }
+ implies: 'legacy_compile_flags'
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'parse_showincludes'
+ implies: 'user_compile_flags'
+ implies: 'sysroot'
+ implies: 'unfiltered_compile_flags'
+ }
+
+ action_config {
+ config_name: 'c++-link-executable'
+ action_name: 'c++-link-executable'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ }
+
+ action_config {
+ config_name: 'c++-link-dynamic-library'
+ action_name: 'c++-link-dynamic-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'shared_flag'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ implies: 'has_configured_linker_path'
+ implies: 'def_file'
+ }
+
+ action_config {
+ config_name: 'c++-link-nodeps-dynamic-library'
+ action_name: 'c++-link-nodeps-dynamic-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'shared_flag'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ implies: 'has_configured_linker_path'
+ implies: 'def_file'
+ }
+
+ action_config {
+ config_name: 'c++-link-static-library'
+ action_name: 'c++-link-static-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'archiver_flags'
+ implies: 'input_param_flags'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ }
+
+ # TODO(b/65151735): Remove legacy_compile_flags feature when legacy fields are
+ # not used in this crosstool
+ feature {
+ name: 'legacy_compile_flags'
+ flag_set {
+ expand_if_all_available: 'legacy_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'legacy_compile_flags'
+ flag: '%{legacy_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: "msvc_env"
+ env_set {
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ action: "c++-link-static-library"
+ env_entry {
+ key: "PATH"
+ value: ""
+ }
+ env_entry {
+ key: "INCLUDE"
+ value: ""
+ }
+ env_entry {
+ key: "LIB"
+ value: ""
+ }
+ env_entry {
+ key: "TMP"
+ value: ""
+ }
+ env_entry {
+ key: "TEMP"
+ value: ""
+ }
+ }
+ }
+
+ feature {
+ name: "use_linker"
+ env_set {
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ env_entry {
+ key: "USE_LINKER"
+ value: "1"
+ }
+ }
+ }
+
+ feature {
+ name: 'include_paths'
+ flag_set {
+ action: "assemble"
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ flag_group {
+ iterate_over: 'quote_include_paths'
+ flag: '/I%{quote_include_paths}'
+ }
+ flag_group {
+ iterate_over: 'include_paths'
+ flag: '/I%{include_paths}'
+ }
+ flag_group {
+ iterate_over: 'system_include_paths'
+ flag: '/I%{system_include_paths}'
+ }
+ }
+ }
+
+ feature {
+ name: "preprocessor_defines"
+ flag_set {
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "c++-module-compile"
+ flag_group {
+ flag: "/D%{preprocessor_defines}"
+ iterate_over: "preprocessor_defines"
+ }
+ }
+ }
+
+ # Tell Bazel to parse the output of /showIncludes
+ feature {
+ name: 'parse_showincludes'
+ flag_set {
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-module-compile'
+ action: 'c++-header-preprocessing'
+ action: 'c++-header-parsing'
+ flag_group {
+ flag: "/showIncludes"
+ }
+ }
+ }
+
+
+ feature {
+ name: 'generate_pdb_file'
+ requires: {
+ feature: 'dbg'
+ }
+ requires: {
+ feature: 'fastbuild'
+ }
+ }
+
+ feature {
+ name: 'shared_flag'
+ flag_set {
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/DLL'
+ }
+ }
+ }
+
+ feature {
+ name: 'linkstamps'
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ expand_if_all_available: 'linkstamp_paths'
+ flag_group {
+ iterate_over: 'linkstamp_paths'
+ flag: '%{linkstamp_paths}'
+ }
+ }
+ }
+
+ feature {
+ name: 'output_execpath_flags'
+ flag_set {
+ expand_if_all_available: 'output_execpath'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/OUT:%{output_execpath}'
+ }
+ }
+ }
+
+ feature {
+ name: 'archiver_flags'
+ flag_set {
+ expand_if_all_available: 'output_execpath'
+ action: 'c++-link-static-library'
+ flag_group {
+ flag: '/OUT:%{output_execpath}'
+ }
+ }
+ }
+
+ feature {
+ name: 'input_param_flags'
+ flag_set {
+ expand_if_all_available: 'interface_library_output_path'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/IMPLIB:%{interface_library_output_path}"
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'libopts'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'libopts'
+ flag: '%{libopts}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'libraries_to_link'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ action: 'c++-link-static-library'
+ flag_group {
+ iterate_over: 'libraries_to_link'
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file_group'
+ }
+ iterate_over: 'libraries_to_link.object_files'
+ flag_group {
+ flag: '%{libraries_to_link.object_files}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file'
+ }
+ flag_group {
+ flag: '%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'interface_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'static_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'dynamic_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'versioned_dynamic_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ }
+ }
+ }
+
+ # Since this feature is declared earlier in the CROSSTOOL than
+ # "legacy_link_flags", this feature will be applied prior to it anwyhere they
+ # are both implied. And since "legacy_link_flags" contains the linkopts from
+ # the build rule, this allows the user to override the /SUBSYSTEM in the BUILD
+ # file.
+ feature {
+ name: 'linker_subsystem_flag'
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/SUBSYSTEM:CONSOLE'
+ }
+ }
+ }
+
+ # The "legacy_link_flags" may contain user-defined linkopts (from build rules)
+ # so it should be defined after features that declare user-overridable flags.
+ # For example the "linker_subsystem_flag" defines a default "/SUBSYSTEM" flag
+ # but we want to let the user override it, therefore "link_flag_subsystem" is
+ # defined earlier in the CROSSTOOL file than "legacy_link_flags".
+ feature {
+ name: 'legacy_link_flags'
+ flag_set {
+ expand_if_all_available: 'legacy_link_flags'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'legacy_link_flags'
+ flag: '%{legacy_link_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: 'linker_param_file'
+ flag_set {
+ expand_if_all_available: 'linker_param_file'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ action: 'c++-link-static-library'
+ flag_group {
+ flag: '@%{linker_param_file}'
+ }
+ }
+ }
+
+ feature {
+ name: 'static_link_msvcrt'
+ }
+
+ feature {
+ name: 'static_link_msvcrt_no_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MT"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:libcmt.lib"
+ }
+ }
+ requires: { feature: 'fastbuild'}
+ requires: { feature: 'opt'}
+ }
+
+ feature {
+ name: 'dynamic_link_msvcrt_no_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MD"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:msvcrt.lib"
+ }
+ }
+ requires: { feature: 'fastbuild'}
+ requires: { feature: 'opt'}
+ }
+
+ feature {
+ name: 'static_link_msvcrt_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MTd"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:libcmtd.lib"
+ }
+ }
+ requires: { feature: 'dbg'}
+ }
+
+ feature {
+ name: 'dynamic_link_msvcrt_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MDd"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:msvcrtd.lib"
+ }
+ }
+ requires: { feature: 'dbg'}
+ }
+
+ feature {
+ name: 'dbg'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/Od"
+ flag: "/Z7"
+ flag: "/DDEBUG"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: ""
+ flag: "/INCREMENTAL:NO"
+ }
+ }
+ implies: 'generate_pdb_file'
+ }
+
+ feature {
+ name: 'fastbuild'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/Od"
+ flag: "/Z7"
+ flag: "/DDEBUG"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: ""
+ flag: "/INCREMENTAL:NO"
+ }
+ }
+ implies: 'generate_pdb_file'
+ }
+
+ feature {
+ name: 'opt'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/O2"
+ flag: "/DNDEBUG"
+ }
+ }
+ }
+
+ feature {
+ name: 'user_compile_flags'
+ flag_set {
+ expand_if_all_available: 'user_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'user_compile_flags'
+ flag: '%{user_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: 'sysroot'
+ flag_set {
+ expand_if_all_available: 'sysroot'
+ action: 'assemble'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'sysroot'
+ flag: '--sysroot=%{sysroot}'
+ }
+ }
+ }
+
+ feature {
+ name: 'unfiltered_compile_flags'
+ flag_set {
+ expand_if_all_available: 'unfiltered_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'unfiltered_compile_flags'
+ flag: '%{unfiltered_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name : 'def_file',
+ flag_set {
+ expand_if_all_available: 'def_file_path'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEF:%{def_file_path}"
+ # We can specify a different DLL name in DEF file, /ignore:4070 suppresses
+ # the warning message about DLL name doesn't match the default one.
+ # See https://msdn.microsoft.com/en-us/library/sfkk2fz7.aspx
+ flag: "/ignore:4070"
+ }
+ }
+ }
+
+ feature {
+ name: 'windows_export_all_symbols'
+ }
+
+ feature {
+ name: 'no_windows_export_all_symbols'
+ }
+
+ linking_mode_flags { mode: DYNAMIC }
+
+
+
+}
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/default/METADATA b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/METADATA
new file mode 100644
index 0000000..c710b35
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/METADATA
@@ -0,0 +1 @@
+gcr.io/cloud-marketplace/google/clang-debian8@sha256:8bb65bf0a0da8be48bbac07ebe743805f3dc5259203e19517098162bd23a768f
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/default/cc_wrapper.sh b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/cc_wrapper.sh
new file mode 100755
index 0000000..42a751d
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/cc_wrapper.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+#
+# Copyright 2015 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.
+#
+# Ship the environment to the C++ action
+#
+set -eu
+
+# Set-up the environment
+
+
+# Call the C++ compiler
+/usr/local/bin/clang "$@"
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/default/dummy_toolchain.bzl b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/dummy_toolchain.bzl
new file mode 100755
index 0000000..45c0285
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/default/dummy_toolchain.bzl
@@ -0,0 +1,23 @@
+# pylint: disable=g-bad-file-header
+# Copyright 2017 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.
+
+"""Skylark rule that stubs a toolchain."""
+
+def _dummy_toolchain_impl(ctx):
+ ctx = ctx # unused argument
+ toolchain = platform_common.ToolchainInfo()
+ return [toolchain]
+
+dummy_toolchain = rule(_dummy_toolchain_impl, attrs = {})
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/BUILD b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/BUILD
new file mode 100755
index 0000000..5bba7ae
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/BUILD
@@ -0,0 +1,139 @@
+# Copyright 2016 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.
+
+# This becomes the BUILD file for @local_config_cc// under non-FreeBSD unixes.
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache 2.0
+
+cc_library(
+ name = "malloc",
+)
+
+cc_library(
+ name = "stl",
+)
+
+filegroup(
+ name = "empty",
+ srcs = [],
+)
+
+filegroup(
+ name = "cc_wrapper",
+ srcs = ["cc_wrapper.sh"],
+)
+
+filegroup(
+ name = "compiler_deps",
+ srcs = glob(["extra_tools/**"]) + [":empty"],
+)
+
+# This is the entry point for --crosstool_top. Toolchains are found
+# by lopping off the name of --crosstool_top and searching for
+# the "${CPU}" entry in the toolchains attribute.
+cc_toolchain_suite(
+ name = "toolchain",
+ toolchains = {
+ "k8|clang": ":cc-compiler-k8",
+ "armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
+ "ios_x86_64|compiler": ":cc-compiler-ios_x86_64",
+ },
+)
+
+cc_toolchain(
+ name = "cc-compiler-k8",
+ all_files = ":compiler_deps",
+ compiler_files = ":compiler_deps",
+ cpu = "k8",
+ dwp_files = ":empty",
+ dynamic_runtime_libs = [":empty"],
+ linker_files = ":compiler_deps",
+ objcopy_files = ":empty",
+ static_runtime_libs = [":empty"],
+ strip_files = ":empty",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-k8",
+ exec_compatible_with = [
+ # This toolchain will only work with the local autoconfigured platforms.
+ "@bazel_tools//platforms:autoconfigured",
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ toolchain = ":cc-compiler-k8",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+# Android tooling requires a default toolchain for the armeabi-v7a cpu.
+cc_toolchain(
+ name = "cc-compiler-armeabi-v7a",
+ 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",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-armeabi-v7a",
+ exec_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:arm",
+ "@bazel_tools//platforms:android",
+ ],
+ toolchain = ":cc-compiler-armabi-v7a",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+# ios crosstool configuration requires a default toolchain for the
+# ios_x86_64 cpu.
+cc_toolchain(
+ name = "cc-compiler-ios_x86_64",
+ 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",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-ios_x86_64",
+ exec_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:x86_64",
+ "@bazel_tools//platforms:ios",
+ ],
+ toolchain = ":cc-compiler-ios_x86_64",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/CROSSTOOL b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/CROSSTOOL
new file mode 100755
index 0000000..17356f5
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/CROSSTOOL
@@ -0,0 +1,1156 @@
+# Copyright 2016 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.
+
+major_version: "local"
+minor_version: ""
+default_target_cpu: "same_as_host"
+
+default_toolchain {
+ cpu: "k8"
+ toolchain_identifier: "linux_gnu_x86"
+}
+
+default_toolchain {
+ cpu: "local"
+ toolchain_identifier: "stub_armeabi-v7a"
+}
+
+default_toolchain {
+ cpu: "armeabi-v7a"
+ toolchain_identifier: "stub_armeabi-v7a"
+}
+
+default_toolchain {
+ cpu: "x64_windows"
+ toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+ cpu: "x64_windows_msvc"
+ toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+ cpu: "x64_windows_msys"
+ toolchain_identifier: "msys_x64"
+}
+
+default_toolchain {
+ cpu: "s390x"
+ toolchain_identifier: "linux_gnu_x86"
+}
+
+default_toolchain {
+ cpu: "local"
+ toolchain_identifier: "ios_x86_64"
+}
+
+default_toolchain {
+ cpu: "ios_x86_64"
+ toolchain_identifier: "ios_x86_64"
+}
+
+# Android tooling requires a default toolchain for the armeabi-v7a cpu.
+toolchain {
+ abi_version: "armeabi-v7a"
+ abi_libc_version: "armeabi-v7a"
+ builtin_sysroot: ""
+ compiler: "compiler"
+ host_system_name: "armeabi-v7a"
+ needsPic: true
+ supports_gold_linker: false
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: false
+ target_libc: "armeabi-v7a"
+ target_cpu: "armeabi-v7a"
+ target_system_name: "armeabi-v7a"
+ toolchain_identifier: "stub_armeabi-v7a"
+
+ tool_path { name: "ar" path: "/bin/false" }
+ tool_path { name: "compat-ld" path: "/bin/false" }
+ tool_path { name: "cpp" path: "/bin/false" }
+ tool_path { name: "dwp" path: "/bin/false" }
+ tool_path { name: "gcc" path: "/bin/false" }
+ tool_path { name: "gcov" path: "/bin/false" }
+ tool_path { name: "ld" path: "/bin/false" }
+
+ tool_path { name: "nm" path: "/bin/false" }
+ tool_path { name: "objcopy" path: "/bin/false" }
+ tool_path { name: "objdump" path: "/bin/false" }
+ tool_path { name: "strip" path: "/bin/false" }
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "ios_x86_64"
+ host_system_name: "x86_64-apple-macosx"
+ target_system_name: "x86_64-apple-ios"
+ target_cpu: "ios_x86_64"
+ target_libc: "ios"
+ compiler: "compiler"
+ abi_version: "local"
+ abi_libc_version: "local"
+ supports_gold_linker: false
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: false
+
+ tool_path { name: "ar" path: "/bin/false" }
+ tool_path { name: "compat-ld" path: "/bin/false" }
+ tool_path { name: "cpp" path: "/bin/false" }
+ tool_path { name: "dwp" path: "/bin/false" }
+ tool_path { name: "gcc" path: "/bin/false" }
+ tool_path { name: "gcov" path: "/bin/false" }
+ tool_path { name: "ld" path: "/bin/false" }
+
+ tool_path { name: "nm" path: "/bin/false" }
+ tool_path { name: "objcopy" path: "/bin/false" }
+ tool_path { name: "objdump" path: "/bin/false" }
+ tool_path { name: "strip" path: "/bin/false" }
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "linux_gnu_x86"
+ abi_version: "clang"
+ abi_libc_version: "glibc_2.19"
+ builtin_sysroot: ""
+ compiler: "clang"
+ host_system_name: "i686-unknown-linux-gnu"
+ needsPic: true
+ supports_gold_linker: true
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: true
+ target_libc: "glibc_2.19"
+ target_cpu: "k8"
+ target_system_name: "x86_64-unknown-linux-gnu"
+ cxx_flag: "-std=c++0x"
+ linker_flag: "-fuse-ld=gold"
+ linker_flag: "-B/usr/local/bin"
+ linker_flag: "-B/usr/bin"
+ linker_flag: "-lc++"
+ linker_flag: "-lc++abi"
+ linker_flag: "-lm"
+ cxx_builtin_include_directory: "/usr/local/include"
+ cxx_builtin_include_directory: "/usr/local/lib/clang/7.0.0/include"
+ cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu"
+ cxx_builtin_include_directory: "/usr/include"
+ cxx_builtin_include_directory: "/usr/include/c++/4.9"
+ cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu/c++/4.9"
+ cxx_builtin_include_directory: "/usr/include/c++/4.9/backward"
+ objcopy_embed_flag: "-I"
+ objcopy_embed_flag: "binary"
+ unfiltered_cxx_flag: "-no-canonical-prefixes"
+ unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
+ unfiltered_cxx_flag: "-D__DATE__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIME__=\"redacted\""
+ compiler_flag: "-U_FORTIFY_SOURCE"
+ compiler_flag: "-fstack-protector"
+ compiler_flag: "-Wall"
+ compiler_flag: "-B/usr/local/bin"
+ compiler_flag: "-B/usr/bin"
+ compiler_flag: "-fcolor-diagnostics"
+ compiler_flag: "-fno-omit-frame-pointer"
+ tool_path {name: "ar" path: "/usr/bin/ar" }
+ tool_path {name: "ld" path: "/usr/bin/ld" }
+ tool_path {name: "cpp" path: "/usr/bin/cpp" }
+ tool_path {name: "gcc" path: "/usr/local/bin/clang" }
+ tool_path {name: "dwp" path: "/usr/bin/dwp" }
+ tool_path {name: "gcov" path: "/usr/bin/gcov" }
+ tool_path {name: "nm" path: "/usr/bin/nm" }
+ tool_path {name: "objcopy" path: "/usr/bin/objcopy" }
+ tool_path {name: "objdump" path: "/usr/bin/objdump" }
+ tool_path {name: "strip" path: "/usr/bin/strip" }
+
+ compilation_mode_flags {
+ mode: DBG
+ compiler_flag: "-g"
+ }
+ compilation_mode_flags {
+ mode: OPT
+ compiler_flag: "-g0"
+ compiler_flag: "-O2"
+ compiler_flag: "-D_FORTIFY_SOURCE=1"
+ compiler_flag: "-DNDEBUG"
+ compiler_flag: "-ffunction-sections"
+ compiler_flag: "-fdata-sections"
+ linker_flag: "-Wl,--gc-sections"
+ }
+ linking_mode_flags { mode: DYNAMIC }
+
+
+ feature {
+ name: 'coverage'
+ provides: 'profile'
+ flag_set {
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ flag_group {
+ flag: '--coverage'
+ }
+ }
+ flag_set {
+ action: 'c++-link-dynamic-library'
+ action: 'c++-link-nodeps-dynamic-library'
+ action: 'c++-link-executable'
+ flag_group {
+ flag: '--coverage'
+ }
+ }
+ }
+
+
+ feature {
+ name: 'fdo_optimize'
+ provides: 'profile'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ expand_if_all_available: 'fdo_profile_path'
+ flag_group {
+ flag: '-fprofile-use=%{fdo_profile_path}'
+ flag: '-fprofile-correction',
+ }
+ }
+ }
+}
+
+toolchain {
+ toolchain_identifier: "msys_x64_mingw"
+ abi_version: "local"
+ abi_libc_version: "local"
+ builtin_sysroot: ""
+ compiler: "mingw-gcc"
+ host_system_name: "local"
+ needsPic: false
+ target_libc: "mingw"
+ target_cpu: "x64_windows"
+ target_system_name: "local"
+
+
+
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "msvc_x64"
+ host_system_name: "local"
+ target_system_name: "local"
+
+ abi_version: "local"
+ abi_libc_version: "local"
+ target_cpu: "x64_windows"
+ compiler: "msvc-cl"
+ target_libc: "msvcrt"
+ default_python_version: "python2.7"
+
+
+
+ tool_path {
+ name: "ar"
+ path: ""
+ }
+ tool_path {
+ name: "ml"
+ path: ""
+ }
+ tool_path {
+ name: "cpp"
+ path: ""
+ }
+ tool_path {
+ name: "gcc"
+ path: ""
+ }
+ tool_path {
+ name: "gcov"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "ld"
+ path: ""
+ }
+ tool_path {
+ name: "nm"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "objcopy"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "objdump"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "strip"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ supports_gold_linker: false
+ supports_start_end_lib: false
+ supports_interface_shared_objects: true
+ supports_incremental_linker: false
+ supports_normalizing_ar: true
+ needsPic: false
+
+ # TODO(pcloudy): Review those flags below, they should be defined by cl.exe
+ compiler_flag: "/DCOMPILER_MSVC"
+
+ # Don't define min/max macros in windows.h.
+ compiler_flag: "/DNOMINMAX"
+
+ # Platform defines.
+ compiler_flag: "/D_WIN32_WINNT=0x0600"
+ # Turn off warning messages.
+ compiler_flag: "/D_CRT_SECURE_NO_DEPRECATE"
+ compiler_flag: "/D_CRT_SECURE_NO_WARNINGS"
+ compiler_flag: "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS"
+
+ # Useful options to have on for compilation.
+ # Increase the capacity of object files to 2^32 sections.
+ compiler_flag: "/bigobj"
+ # Allocate 500MB for precomputed headers.
+ compiler_flag: "/Zm500"
+ # Use unsigned char by default.
+ compiler_flag: "/J"
+ # Use function level linking.
+ compiler_flag: "/Gy"
+ # Use string pooling.
+ compiler_flag: "/GF"
+ # Catch C++ exceptions only and tell the compiler to assume that functions declared
+ # as extern "C" never throw a C++ exception.
+ compiler_flag: "/EHsc"
+
+ # Globally disabled warnings.
+ # Don't warn about elements of array being be default initialized.
+ compiler_flag: "/wd4351"
+ # Don't warn about no matching delete found.
+ compiler_flag: "/wd4291"
+ # Don't warn about diamond inheritance patterns.
+ compiler_flag: "/wd4250"
+ # Don't warn about insecure functions (e.g. non _s functions).
+ compiler_flag: "/wd4996"
+
+ linker_flag: "/MACHINE:X64"
+
+ feature {
+ name: "no_legacy_features"
+ }
+
+ # Suppress startup banner.
+ feature {
+ name: "nologo"
+ flag_set {
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ action: "c++-link-static-library"
+ flag_group {
+ flag: "/nologo"
+ }
+ }
+ }
+
+ feature {
+ name: 'has_configured_linker_path'
+ }
+
+ # This feature indicates strip is not supported, building stripped binary will just result a copy of orignial binary
+ feature {
+ name: 'no_stripping'
+ }
+
+ # This feature indicates this is a toolchain targeting Windows.
+ feature {
+ name: 'targets_windows'
+ implies: 'copy_dynamic_libraries_to_binary'
+ enabled: true
+ }
+
+ feature {
+ name: 'copy_dynamic_libraries_to_binary'
+ }
+
+ action_config {
+ config_name: 'assemble'
+ action_name: 'assemble'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ flag: '/Zi'
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'sysroot'
+ }
+
+ action_config {
+ config_name: 'c-compile'
+ action_name: 'c-compile'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ flag_group {
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_assembly_file'
+ flag_group {
+ flag: '/Fa%{output_assembly_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_preprocess_file'
+ flag_group {
+ flag: '/P'
+ flag: '/Fi%{output_preprocess_file}'
+ }
+ }
+ implies: 'legacy_compile_flags'
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'parse_showincludes'
+ implies: 'user_compile_flags'
+ implies: 'sysroot'
+ implies: 'unfiltered_compile_flags'
+ }
+
+ action_config {
+ config_name: 'c++-compile'
+ action_name: 'c++-compile'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ flag_group {
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_assembly_file'
+ flag_group {
+ flag: '/Fa%{output_assembly_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_preprocess_file'
+ flag_group {
+ flag: '/P'
+ flag: '/Fi%{output_preprocess_file}'
+ }
+ }
+ implies: 'legacy_compile_flags'
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'parse_showincludes'
+ implies: 'user_compile_flags'
+ implies: 'sysroot'
+ implies: 'unfiltered_compile_flags'
+ }
+
+ action_config {
+ config_name: 'c++-link-executable'
+ action_name: 'c++-link-executable'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ }
+
+ action_config {
+ config_name: 'c++-link-dynamic-library'
+ action_name: 'c++-link-dynamic-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'shared_flag'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ implies: 'has_configured_linker_path'
+ implies: 'def_file'
+ }
+
+ action_config {
+ config_name: 'c++-link-nodeps-dynamic-library'
+ action_name: 'c++-link-nodeps-dynamic-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'shared_flag'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ implies: 'has_configured_linker_path'
+ implies: 'def_file'
+ }
+
+ action_config {
+ config_name: 'c++-link-static-library'
+ action_name: 'c++-link-static-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'archiver_flags'
+ implies: 'input_param_flags'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ }
+
+ # TODO(b/65151735): Remove legacy_compile_flags feature when legacy fields are
+ # not used in this crosstool
+ feature {
+ name: 'legacy_compile_flags'
+ flag_set {
+ expand_if_all_available: 'legacy_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'legacy_compile_flags'
+ flag: '%{legacy_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: "msvc_env"
+ env_set {
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ action: "c++-link-static-library"
+ env_entry {
+ key: "PATH"
+ value: ""
+ }
+ env_entry {
+ key: "INCLUDE"
+ value: ""
+ }
+ env_entry {
+ key: "LIB"
+ value: ""
+ }
+ env_entry {
+ key: "TMP"
+ value: ""
+ }
+ env_entry {
+ key: "TEMP"
+ value: ""
+ }
+ }
+ }
+
+ feature {
+ name: "use_linker"
+ env_set {
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ env_entry {
+ key: "USE_LINKER"
+ value: "1"
+ }
+ }
+ }
+
+ feature {
+ name: 'include_paths'
+ flag_set {
+ action: "assemble"
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ flag_group {
+ iterate_over: 'quote_include_paths'
+ flag: '/I%{quote_include_paths}'
+ }
+ flag_group {
+ iterate_over: 'include_paths'
+ flag: '/I%{include_paths}'
+ }
+ flag_group {
+ iterate_over: 'system_include_paths'
+ flag: '/I%{system_include_paths}'
+ }
+ }
+ }
+
+ feature {
+ name: "preprocessor_defines"
+ flag_set {
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "c++-module-compile"
+ flag_group {
+ flag: "/D%{preprocessor_defines}"
+ iterate_over: "preprocessor_defines"
+ }
+ }
+ }
+
+ # Tell Bazel to parse the output of /showIncludes
+ feature {
+ name: 'parse_showincludes'
+ flag_set {
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-module-compile'
+ action: 'c++-header-preprocessing'
+ action: 'c++-header-parsing'
+ flag_group {
+ flag: "/showIncludes"
+ }
+ }
+ }
+
+
+ feature {
+ name: 'generate_pdb_file'
+ requires: {
+ feature: 'dbg'
+ }
+ requires: {
+ feature: 'fastbuild'
+ }
+ }
+
+ feature {
+ name: 'shared_flag'
+ flag_set {
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/DLL'
+ }
+ }
+ }
+
+ feature {
+ name: 'linkstamps'
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ expand_if_all_available: 'linkstamp_paths'
+ flag_group {
+ iterate_over: 'linkstamp_paths'
+ flag: '%{linkstamp_paths}'
+ }
+ }
+ }
+
+ feature {
+ name: 'output_execpath_flags'
+ flag_set {
+ expand_if_all_available: 'output_execpath'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/OUT:%{output_execpath}'
+ }
+ }
+ }
+
+ feature {
+ name: 'archiver_flags'
+ flag_set {
+ expand_if_all_available: 'output_execpath'
+ action: 'c++-link-static-library'
+ flag_group {
+ flag: '/OUT:%{output_execpath}'
+ }
+ }
+ }
+
+ feature {
+ name: 'input_param_flags'
+ flag_set {
+ expand_if_all_available: 'interface_library_output_path'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/IMPLIB:%{interface_library_output_path}"
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'libopts'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'libopts'
+ flag: '%{libopts}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'libraries_to_link'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ action: 'c++-link-static-library'
+ flag_group {
+ iterate_over: 'libraries_to_link'
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file_group'
+ }
+ iterate_over: 'libraries_to_link.object_files'
+ flag_group {
+ flag: '%{libraries_to_link.object_files}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file'
+ }
+ flag_group {
+ flag: '%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'interface_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'static_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'dynamic_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'versioned_dynamic_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ }
+ }
+ }
+
+ # Since this feature is declared earlier in the CROSSTOOL than
+ # "legacy_link_flags", this feature will be applied prior to it anwyhere they
+ # are both implied. And since "legacy_link_flags" contains the linkopts from
+ # the build rule, this allows the user to override the /SUBSYSTEM in the BUILD
+ # file.
+ feature {
+ name: 'linker_subsystem_flag'
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/SUBSYSTEM:CONSOLE'
+ }
+ }
+ }
+
+ # The "legacy_link_flags" may contain user-defined linkopts (from build rules)
+ # so it should be defined after features that declare user-overridable flags.
+ # For example the "linker_subsystem_flag" defines a default "/SUBSYSTEM" flag
+ # but we want to let the user override it, therefore "link_flag_subsystem" is
+ # defined earlier in the CROSSTOOL file than "legacy_link_flags".
+ feature {
+ name: 'legacy_link_flags'
+ flag_set {
+ expand_if_all_available: 'legacy_link_flags'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'legacy_link_flags'
+ flag: '%{legacy_link_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: 'linker_param_file'
+ flag_set {
+ expand_if_all_available: 'linker_param_file'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ action: 'c++-link-static-library'
+ flag_group {
+ flag: '@%{linker_param_file}'
+ }
+ }
+ }
+
+ feature {
+ name: 'static_link_msvcrt'
+ }
+
+ feature {
+ name: 'static_link_msvcrt_no_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MT"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:libcmt.lib"
+ }
+ }
+ requires: { feature: 'fastbuild'}
+ requires: { feature: 'opt'}
+ }
+
+ feature {
+ name: 'dynamic_link_msvcrt_no_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MD"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:msvcrt.lib"
+ }
+ }
+ requires: { feature: 'fastbuild'}
+ requires: { feature: 'opt'}
+ }
+
+ feature {
+ name: 'static_link_msvcrt_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MTd"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:libcmtd.lib"
+ }
+ }
+ requires: { feature: 'dbg'}
+ }
+
+ feature {
+ name: 'dynamic_link_msvcrt_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MDd"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:msvcrtd.lib"
+ }
+ }
+ requires: { feature: 'dbg'}
+ }
+
+ feature {
+ name: 'dbg'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/Od"
+ flag: "/Z7"
+ flag: "/DDEBUG"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: ""
+ flag: "/INCREMENTAL:NO"
+ }
+ }
+ implies: 'generate_pdb_file'
+ }
+
+ feature {
+ name: 'fastbuild'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/Od"
+ flag: "/Z7"
+ flag: "/DDEBUG"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: ""
+ flag: "/INCREMENTAL:NO"
+ }
+ }
+ implies: 'generate_pdb_file'
+ }
+
+ feature {
+ name: 'opt'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/O2"
+ flag: "/DNDEBUG"
+ }
+ }
+ }
+
+ feature {
+ name: 'user_compile_flags'
+ flag_set {
+ expand_if_all_available: 'user_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'user_compile_flags'
+ flag: '%{user_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: 'sysroot'
+ flag_set {
+ expand_if_all_available: 'sysroot'
+ action: 'assemble'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'sysroot'
+ flag: '--sysroot=%{sysroot}'
+ }
+ }
+ }
+
+ feature {
+ name: 'unfiltered_compile_flags'
+ flag_set {
+ expand_if_all_available: 'unfiltered_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'unfiltered_compile_flags'
+ flag: '%{unfiltered_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name : 'def_file',
+ flag_set {
+ expand_if_all_available: 'def_file_path'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEF:%{def_file_path}"
+ # We can specify a different DLL name in DEF file, /ignore:4070 suppresses
+ # the warning message about DLL name doesn't match the default one.
+ # See https://msdn.microsoft.com/en-us/library/sfkk2fz7.aspx
+ flag: "/ignore:4070"
+ }
+ }
+ }
+
+ feature {
+ name: 'windows_export_all_symbols'
+ }
+
+ feature {
+ name: 'no_windows_export_all_symbols'
+ }
+
+ linking_mode_flags { mode: DYNAMIC }
+
+
+
+}
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/METADATA b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/METADATA
new file mode 100644
index 0000000..c710b35
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/METADATA
@@ -0,0 +1 @@
+gcr.io/cloud-marketplace/google/clang-debian8@sha256:8bb65bf0a0da8be48bbac07ebe743805f3dc5259203e19517098162bd23a768f
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/cc_wrapper.sh b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/cc_wrapper.sh
new file mode 100755
index 0000000..42a751d
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/cc_wrapper.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+#
+# Copyright 2015 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.
+#
+# Ship the environment to the C++ action
+#
+set -eu
+
+# Set-up the environment
+
+
+# Call the C++ compiler
+/usr/local/bin/clang "$@"
diff --git a/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/dummy_toolchain.bzl b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/dummy_toolchain.bzl
new file mode 100755
index 0000000..45c0285
--- /dev/null
+++ b/configs/debian8_clang/0.3.0/bazel_0.14.1/msan/dummy_toolchain.bzl
@@ -0,0 +1,23 @@
+# pylint: disable=g-bad-file-header
+# Copyright 2017 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.
+
+"""Skylark rule that stubs a toolchain."""
+
+def _dummy_toolchain_impl(ctx):
+ ctx = ctx # unused argument
+ toolchain = platform_common.ToolchainInfo()
+ return [toolchain]
+
+dummy_toolchain = rule(_dummy_toolchain_impl, attrs = {})
diff --git a/configs/debian8_clang/0.3.0/toolchain.bazelrc b/configs/debian8_clang/0.3.0/toolchain.bazelrc
index 99f2a7c..7da432f 100644
--- a/configs/debian8_clang/0.3.0/toolchain.bazelrc
+++ b/configs/debian8_clang/0.3.0/toolchain.bazelrc
@@ -1,7 +1,7 @@
# Toolchain related flags to append at the end of your .bazelrc file.
build:remote --host_javabase=@bazel_toolchains//configs/debian8_clang/0.3.0:jdk8
build:remote --javabase=@bazel_toolchains//configs/debian8_clang/0.3.0:jdk8
-build:remote --crosstool_top=@bazel_toolchains//configs/debian8_clang/0.3.0/bazel_0.13.0/default:toolchain
+build:remote --crosstool_top=@bazel_toolchains//configs/debian8_clang/0.3.0/bazel_0.14.1/default:toolchain
build:remote --experimental_remote_platform_override='properties:{ name:"container-image" value:"docker://gcr.io/cloud-marketplace/google/rbe-debian8@sha256:0d5db936f8fa04638ca31e4fc117415068dca43dc343d605c0db2a15f433a327" }'
# Experimental configs for sanitizers, use --config=remote,remote-xxsan,remote-<asan/tsan/msan> (in that order)
@@ -18,7 +18,5 @@
build:remote-msan --linkopt=-fsanitize=memory
build:remote-msan --cxxopt=--stdlib=libc++
build:remote-msan --copt=-fsanitize-memory-track-origins
-build:remote-msan --host_crosstool_top=@bazel_toolchains//configs/debian8_clang/0.3.0/bazel_0.13.0/default:toolchain
-build:remote-msan --crosstool_top=@bazel_toolchains//configs/debian8_clang/0.3.0/bazel_0.13.0/msan:toolchain
-# TODO: experimental container to be removed once rbe-debian8 includes msan instrumented libc++
-build:remote-msan --experimental_remote_platform_override='properties:{ name:"container-image" value:"docker://gcr.io/asci-toolchain/nosla-debian8-clang-msan@sha256:8f381d55c0456fb65821c90ada902c2584977e03a1eaca8fba8ce77e644c775b" }'
+build:remote-msan --host_crosstool_top=@bazel_toolchains//configs/debian8_clang/0.3.0/bazel_0.14.1/default:toolchain
+build:remote-msan --crosstool_top=@bazel_toolchains//configs/debian8_clang/0.3.0/bazel_0.14.1/msan:toolchain
diff --git a/configs/debian8_clang/BUILD b/configs/debian8_clang/BUILD
index f3ff7d8..05c7664 100644
--- a/configs/debian8_clang/BUILD
+++ b/configs/debian8_clang/BUILD
@@ -168,3 +168,33 @@
tags = ["manual"],
test = True,
)
+
+# Created on 2018.06.08
+# Container: gcr.io/cloud-marketplace/google/clang-debian8@sha256:8bb65bf0a0da8be48bbac07ebe743805f3dc5259203e19517098162bd23a768f
+docker_toolchain_autoconfig(
+ name = "debian8-clang-0.3.0-bazel_0.14.1-autoconfig",
+ additional_repos = debian8_clang_default_repos(),
+ base = "@debian8-clang//image",
+ bazel_version = "0.14.1",
+ env = clang_env(),
+ keys = debian8_clang_default_keys(),
+ packages = debian8_clang_default_packages(),
+ tags = ["manual"],
+ test = True,
+)
+
+# Created on 2018.06.08
+# Container: gcr.io/cloud-marketplace/google/clang-debian8@sha256:8bb65bf0a0da8be48bbac07ebe743805f3dc5259203e19517098162bd23a768f
+docker_toolchain_autoconfig(
+ name = "msan-debian8-clang-0.3.0-bazel_0.14.1-autoconfig",
+ additional_repos = debian8_clang_default_repos(),
+ base = "@debian8-clang//image",
+ bazel_version = "0.14.1",
+ env = clang_env() + {
+ "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+ },
+ keys = debian8_clang_default_keys(),
+ packages = debian8_clang_default_packages(),
+ tags = ["manual"],
+ test = True,
+)
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/cpp/BUILD b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/cpp/BUILD
new file mode 100644
index 0000000..9d39213
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/cpp/BUILD
@@ -0,0 +1,50 @@
+# Copyright 2017 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.
+
+licenses(["notice"]) # Apache 2.0
+
+package(default_visibility = ["//visibility:public"])
+
+toolchain(
+ name = "cc-toolchain-clang-x86_64-default",
+ exec_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ "@bazel_tools//tools/cpp:clang",
+ "//constraints:xenial",
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ ],
+ toolchain = "//configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default:cc-compiler-k8",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+toolchain(
+ name = "cc-toolchain-clang-x86_64-msan",
+ exec_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ "@bazel_tools//tools/cpp:clang",
+ "//constraints:xenial",
+ "//constraints/sanitizers:support_msan",
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ ],
+ toolchain = "//configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan:cc-compiler-k8",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/BUILD b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/BUILD
new file mode 100755
index 0000000..5bba7ae
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/BUILD
@@ -0,0 +1,139 @@
+# Copyright 2016 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.
+
+# This becomes the BUILD file for @local_config_cc// under non-FreeBSD unixes.
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache 2.0
+
+cc_library(
+ name = "malloc",
+)
+
+cc_library(
+ name = "stl",
+)
+
+filegroup(
+ name = "empty",
+ srcs = [],
+)
+
+filegroup(
+ name = "cc_wrapper",
+ srcs = ["cc_wrapper.sh"],
+)
+
+filegroup(
+ name = "compiler_deps",
+ srcs = glob(["extra_tools/**"]) + [":empty"],
+)
+
+# This is the entry point for --crosstool_top. Toolchains are found
+# by lopping off the name of --crosstool_top and searching for
+# the "${CPU}" entry in the toolchains attribute.
+cc_toolchain_suite(
+ name = "toolchain",
+ toolchains = {
+ "k8|clang": ":cc-compiler-k8",
+ "armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
+ "ios_x86_64|compiler": ":cc-compiler-ios_x86_64",
+ },
+)
+
+cc_toolchain(
+ name = "cc-compiler-k8",
+ all_files = ":compiler_deps",
+ compiler_files = ":compiler_deps",
+ cpu = "k8",
+ dwp_files = ":empty",
+ dynamic_runtime_libs = [":empty"],
+ linker_files = ":compiler_deps",
+ objcopy_files = ":empty",
+ static_runtime_libs = [":empty"],
+ strip_files = ":empty",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-k8",
+ exec_compatible_with = [
+ # This toolchain will only work with the local autoconfigured platforms.
+ "@bazel_tools//platforms:autoconfigured",
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ toolchain = ":cc-compiler-k8",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+# Android tooling requires a default toolchain for the armeabi-v7a cpu.
+cc_toolchain(
+ name = "cc-compiler-armeabi-v7a",
+ 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",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-armeabi-v7a",
+ exec_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:arm",
+ "@bazel_tools//platforms:android",
+ ],
+ toolchain = ":cc-compiler-armabi-v7a",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+# ios crosstool configuration requires a default toolchain for the
+# ios_x86_64 cpu.
+cc_toolchain(
+ name = "cc-compiler-ios_x86_64",
+ 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",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-ios_x86_64",
+ exec_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:x86_64",
+ "@bazel_tools//platforms:ios",
+ ],
+ toolchain = ":cc-compiler-ios_x86_64",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/CROSSTOOL b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/CROSSTOOL
new file mode 100755
index 0000000..37f149e
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/CROSSTOOL
@@ -0,0 +1,1155 @@
+# Copyright 2016 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.
+
+major_version: "local"
+minor_version: ""
+default_target_cpu: "same_as_host"
+
+default_toolchain {
+ cpu: "k8"
+ toolchain_identifier: "linux_gnu_x86"
+}
+
+default_toolchain {
+ cpu: "local"
+ toolchain_identifier: "stub_armeabi-v7a"
+}
+
+default_toolchain {
+ cpu: "armeabi-v7a"
+ toolchain_identifier: "stub_armeabi-v7a"
+}
+
+default_toolchain {
+ cpu: "x64_windows"
+ toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+ cpu: "x64_windows_msvc"
+ toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+ cpu: "x64_windows_msys"
+ toolchain_identifier: "msys_x64"
+}
+
+default_toolchain {
+ cpu: "s390x"
+ toolchain_identifier: "linux_gnu_x86"
+}
+
+default_toolchain {
+ cpu: "local"
+ toolchain_identifier: "ios_x86_64"
+}
+
+default_toolchain {
+ cpu: "ios_x86_64"
+ toolchain_identifier: "ios_x86_64"
+}
+
+# Android tooling requires a default toolchain for the armeabi-v7a cpu.
+toolchain {
+ abi_version: "armeabi-v7a"
+ abi_libc_version: "armeabi-v7a"
+ builtin_sysroot: ""
+ compiler: "compiler"
+ host_system_name: "armeabi-v7a"
+ needsPic: true
+ supports_gold_linker: false
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: false
+ target_libc: "armeabi-v7a"
+ target_cpu: "armeabi-v7a"
+ target_system_name: "armeabi-v7a"
+ toolchain_identifier: "stub_armeabi-v7a"
+
+ tool_path { name: "ar" path: "/bin/false" }
+ tool_path { name: "compat-ld" path: "/bin/false" }
+ tool_path { name: "cpp" path: "/bin/false" }
+ tool_path { name: "dwp" path: "/bin/false" }
+ tool_path { name: "gcc" path: "/bin/false" }
+ tool_path { name: "gcov" path: "/bin/false" }
+ tool_path { name: "ld" path: "/bin/false" }
+
+ tool_path { name: "nm" path: "/bin/false" }
+ tool_path { name: "objcopy" path: "/bin/false" }
+ tool_path { name: "objdump" path: "/bin/false" }
+ tool_path { name: "strip" path: "/bin/false" }
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "ios_x86_64"
+ host_system_name: "x86_64-apple-macosx"
+ target_system_name: "x86_64-apple-ios"
+ target_cpu: "ios_x86_64"
+ target_libc: "ios"
+ compiler: "compiler"
+ abi_version: "local"
+ abi_libc_version: "local"
+ supports_gold_linker: false
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: false
+
+ tool_path { name: "ar" path: "/bin/false" }
+ tool_path { name: "compat-ld" path: "/bin/false" }
+ tool_path { name: "cpp" path: "/bin/false" }
+ tool_path { name: "dwp" path: "/bin/false" }
+ tool_path { name: "gcc" path: "/bin/false" }
+ tool_path { name: "gcov" path: "/bin/false" }
+ tool_path { name: "ld" path: "/bin/false" }
+
+ tool_path { name: "nm" path: "/bin/false" }
+ tool_path { name: "objcopy" path: "/bin/false" }
+ tool_path { name: "objdump" path: "/bin/false" }
+ tool_path { name: "strip" path: "/bin/false" }
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "linux_gnu_x86"
+ abi_version: "clang"
+ abi_libc_version: "glibc_2.19"
+ builtin_sysroot: ""
+ compiler: "clang"
+ host_system_name: "i686-unknown-linux-gnu"
+ needsPic: true
+ supports_gold_linker: true
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: true
+ target_libc: "glibc_2.19"
+ target_cpu: "k8"
+ target_system_name: "x86_64-unknown-linux-gnu"
+ cxx_flag: "-std=c++0x"
+ linker_flag: "-fuse-ld=gold"
+ linker_flag: "-B/usr/local/bin"
+ linker_flag: "-B/usr/bin"
+ linker_flag: "-lstdc++"
+ linker_flag: "-lm"
+ cxx_builtin_include_directory: "/usr/local/include"
+ cxx_builtin_include_directory: "/usr/local/lib/clang/7.0.0/include"
+ cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu"
+ cxx_builtin_include_directory: "/usr/include"
+ cxx_builtin_include_directory: "/usr/include/c++/5.4.0"
+ cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu/c++/5.4.0"
+ cxx_builtin_include_directory: "/usr/include/c++/5.4.0/backward"
+ objcopy_embed_flag: "-I"
+ objcopy_embed_flag: "binary"
+ unfiltered_cxx_flag: "-no-canonical-prefixes"
+ unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
+ unfiltered_cxx_flag: "-D__DATE__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIME__=\"redacted\""
+ compiler_flag: "-U_FORTIFY_SOURCE"
+ compiler_flag: "-fstack-protector"
+ compiler_flag: "-Wall"
+ compiler_flag: "-B/usr/local/bin"
+ compiler_flag: "-B/usr/bin"
+ compiler_flag: "-fcolor-diagnostics"
+ compiler_flag: "-fno-omit-frame-pointer"
+ tool_path {name: "ar" path: "/usr/bin/ar" }
+ tool_path {name: "ld" path: "/usr/bin/ld" }
+ tool_path {name: "cpp" path: "/usr/bin/cpp" }
+ tool_path {name: "gcc" path: "/usr/local/bin/clang" }
+ tool_path {name: "dwp" path: "/usr/bin/dwp" }
+ tool_path {name: "gcov" path: "/usr/bin/gcov" }
+ tool_path {name: "nm" path: "/usr/bin/nm" }
+ tool_path {name: "objcopy" path: "/usr/bin/objcopy" }
+ tool_path {name: "objdump" path: "/usr/bin/objdump" }
+ tool_path {name: "strip" path: "/usr/bin/strip" }
+
+ compilation_mode_flags {
+ mode: DBG
+ compiler_flag: "-g"
+ }
+ compilation_mode_flags {
+ mode: OPT
+ compiler_flag: "-g0"
+ compiler_flag: "-O2"
+ compiler_flag: "-D_FORTIFY_SOURCE=1"
+ compiler_flag: "-DNDEBUG"
+ compiler_flag: "-ffunction-sections"
+ compiler_flag: "-fdata-sections"
+ linker_flag: "-Wl,--gc-sections"
+ }
+ linking_mode_flags { mode: DYNAMIC }
+
+
+ feature {
+ name: 'coverage'
+ provides: 'profile'
+ flag_set {
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ flag_group {
+ flag: '--coverage'
+ }
+ }
+ flag_set {
+ action: 'c++-link-dynamic-library'
+ action: 'c++-link-nodeps-dynamic-library'
+ action: 'c++-link-executable'
+ flag_group {
+ flag: '--coverage'
+ }
+ }
+ }
+
+
+ feature {
+ name: 'fdo_optimize'
+ provides: 'profile'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ expand_if_all_available: 'fdo_profile_path'
+ flag_group {
+ flag: '-fprofile-use=%{fdo_profile_path}'
+ flag: '-fprofile-correction',
+ }
+ }
+ }
+}
+
+toolchain {
+ toolchain_identifier: "msys_x64_mingw"
+ abi_version: "local"
+ abi_libc_version: "local"
+ builtin_sysroot: ""
+ compiler: "mingw-gcc"
+ host_system_name: "local"
+ needsPic: false
+ target_libc: "mingw"
+ target_cpu: "x64_windows"
+ target_system_name: "local"
+
+
+
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "msvc_x64"
+ host_system_name: "local"
+ target_system_name: "local"
+
+ abi_version: "local"
+ abi_libc_version: "local"
+ target_cpu: "x64_windows"
+ compiler: "msvc-cl"
+ target_libc: "msvcrt"
+ default_python_version: "python2.7"
+
+
+
+ tool_path {
+ name: "ar"
+ path: ""
+ }
+ tool_path {
+ name: "ml"
+ path: ""
+ }
+ tool_path {
+ name: "cpp"
+ path: ""
+ }
+ tool_path {
+ name: "gcc"
+ path: ""
+ }
+ tool_path {
+ name: "gcov"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "ld"
+ path: ""
+ }
+ tool_path {
+ name: "nm"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "objcopy"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "objdump"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "strip"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ supports_gold_linker: false
+ supports_start_end_lib: false
+ supports_interface_shared_objects: true
+ supports_incremental_linker: false
+ supports_normalizing_ar: true
+ needsPic: false
+
+ # TODO(pcloudy): Review those flags below, they should be defined by cl.exe
+ compiler_flag: "/DCOMPILER_MSVC"
+
+ # Don't define min/max macros in windows.h.
+ compiler_flag: "/DNOMINMAX"
+
+ # Platform defines.
+ compiler_flag: "/D_WIN32_WINNT=0x0600"
+ # Turn off warning messages.
+ compiler_flag: "/D_CRT_SECURE_NO_DEPRECATE"
+ compiler_flag: "/D_CRT_SECURE_NO_WARNINGS"
+ compiler_flag: "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS"
+
+ # Useful options to have on for compilation.
+ # Increase the capacity of object files to 2^32 sections.
+ compiler_flag: "/bigobj"
+ # Allocate 500MB for precomputed headers.
+ compiler_flag: "/Zm500"
+ # Use unsigned char by default.
+ compiler_flag: "/J"
+ # Use function level linking.
+ compiler_flag: "/Gy"
+ # Use string pooling.
+ compiler_flag: "/GF"
+ # Catch C++ exceptions only and tell the compiler to assume that functions declared
+ # as extern "C" never throw a C++ exception.
+ compiler_flag: "/EHsc"
+
+ # Globally disabled warnings.
+ # Don't warn about elements of array being be default initialized.
+ compiler_flag: "/wd4351"
+ # Don't warn about no matching delete found.
+ compiler_flag: "/wd4291"
+ # Don't warn about diamond inheritance patterns.
+ compiler_flag: "/wd4250"
+ # Don't warn about insecure functions (e.g. non _s functions).
+ compiler_flag: "/wd4996"
+
+ linker_flag: "/MACHINE:X64"
+
+ feature {
+ name: "no_legacy_features"
+ }
+
+ # Suppress startup banner.
+ feature {
+ name: "nologo"
+ flag_set {
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ action: "c++-link-static-library"
+ flag_group {
+ flag: "/nologo"
+ }
+ }
+ }
+
+ feature {
+ name: 'has_configured_linker_path'
+ }
+
+ # This feature indicates strip is not supported, building stripped binary will just result a copy of orignial binary
+ feature {
+ name: 'no_stripping'
+ }
+
+ # This feature indicates this is a toolchain targeting Windows.
+ feature {
+ name: 'targets_windows'
+ implies: 'copy_dynamic_libraries_to_binary'
+ enabled: true
+ }
+
+ feature {
+ name: 'copy_dynamic_libraries_to_binary'
+ }
+
+ action_config {
+ config_name: 'assemble'
+ action_name: 'assemble'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ flag: '/Zi'
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'sysroot'
+ }
+
+ action_config {
+ config_name: 'c-compile'
+ action_name: 'c-compile'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ flag_group {
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_assembly_file'
+ flag_group {
+ flag: '/Fa%{output_assembly_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_preprocess_file'
+ flag_group {
+ flag: '/P'
+ flag: '/Fi%{output_preprocess_file}'
+ }
+ }
+ implies: 'legacy_compile_flags'
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'parse_showincludes'
+ implies: 'user_compile_flags'
+ implies: 'sysroot'
+ implies: 'unfiltered_compile_flags'
+ }
+
+ action_config {
+ config_name: 'c++-compile'
+ action_name: 'c++-compile'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ flag_group {
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_assembly_file'
+ flag_group {
+ flag: '/Fa%{output_assembly_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_preprocess_file'
+ flag_group {
+ flag: '/P'
+ flag: '/Fi%{output_preprocess_file}'
+ }
+ }
+ implies: 'legacy_compile_flags'
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'parse_showincludes'
+ implies: 'user_compile_flags'
+ implies: 'sysroot'
+ implies: 'unfiltered_compile_flags'
+ }
+
+ action_config {
+ config_name: 'c++-link-executable'
+ action_name: 'c++-link-executable'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ }
+
+ action_config {
+ config_name: 'c++-link-dynamic-library'
+ action_name: 'c++-link-dynamic-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'shared_flag'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ implies: 'has_configured_linker_path'
+ implies: 'def_file'
+ }
+
+ action_config {
+ config_name: 'c++-link-nodeps-dynamic-library'
+ action_name: 'c++-link-nodeps-dynamic-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'shared_flag'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ implies: 'has_configured_linker_path'
+ implies: 'def_file'
+ }
+
+ action_config {
+ config_name: 'c++-link-static-library'
+ action_name: 'c++-link-static-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'archiver_flags'
+ implies: 'input_param_flags'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ }
+
+ # TODO(b/65151735): Remove legacy_compile_flags feature when legacy fields are
+ # not used in this crosstool
+ feature {
+ name: 'legacy_compile_flags'
+ flag_set {
+ expand_if_all_available: 'legacy_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'legacy_compile_flags'
+ flag: '%{legacy_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: "msvc_env"
+ env_set {
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ action: "c++-link-static-library"
+ env_entry {
+ key: "PATH"
+ value: ""
+ }
+ env_entry {
+ key: "INCLUDE"
+ value: ""
+ }
+ env_entry {
+ key: "LIB"
+ value: ""
+ }
+ env_entry {
+ key: "TMP"
+ value: ""
+ }
+ env_entry {
+ key: "TEMP"
+ value: ""
+ }
+ }
+ }
+
+ feature {
+ name: "use_linker"
+ env_set {
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ env_entry {
+ key: "USE_LINKER"
+ value: "1"
+ }
+ }
+ }
+
+ feature {
+ name: 'include_paths'
+ flag_set {
+ action: "assemble"
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ flag_group {
+ iterate_over: 'quote_include_paths'
+ flag: '/I%{quote_include_paths}'
+ }
+ flag_group {
+ iterate_over: 'include_paths'
+ flag: '/I%{include_paths}'
+ }
+ flag_group {
+ iterate_over: 'system_include_paths'
+ flag: '/I%{system_include_paths}'
+ }
+ }
+ }
+
+ feature {
+ name: "preprocessor_defines"
+ flag_set {
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "c++-module-compile"
+ flag_group {
+ flag: "/D%{preprocessor_defines}"
+ iterate_over: "preprocessor_defines"
+ }
+ }
+ }
+
+ # Tell Bazel to parse the output of /showIncludes
+ feature {
+ name: 'parse_showincludes'
+ flag_set {
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-module-compile'
+ action: 'c++-header-preprocessing'
+ action: 'c++-header-parsing'
+ flag_group {
+ flag: "/showIncludes"
+ }
+ }
+ }
+
+
+ feature {
+ name: 'generate_pdb_file'
+ requires: {
+ feature: 'dbg'
+ }
+ requires: {
+ feature: 'fastbuild'
+ }
+ }
+
+ feature {
+ name: 'shared_flag'
+ flag_set {
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/DLL'
+ }
+ }
+ }
+
+ feature {
+ name: 'linkstamps'
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ expand_if_all_available: 'linkstamp_paths'
+ flag_group {
+ iterate_over: 'linkstamp_paths'
+ flag: '%{linkstamp_paths}'
+ }
+ }
+ }
+
+ feature {
+ name: 'output_execpath_flags'
+ flag_set {
+ expand_if_all_available: 'output_execpath'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/OUT:%{output_execpath}'
+ }
+ }
+ }
+
+ feature {
+ name: 'archiver_flags'
+ flag_set {
+ expand_if_all_available: 'output_execpath'
+ action: 'c++-link-static-library'
+ flag_group {
+ flag: '/OUT:%{output_execpath}'
+ }
+ }
+ }
+
+ feature {
+ name: 'input_param_flags'
+ flag_set {
+ expand_if_all_available: 'interface_library_output_path'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/IMPLIB:%{interface_library_output_path}"
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'libopts'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'libopts'
+ flag: '%{libopts}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'libraries_to_link'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ action: 'c++-link-static-library'
+ flag_group {
+ iterate_over: 'libraries_to_link'
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file_group'
+ }
+ iterate_over: 'libraries_to_link.object_files'
+ flag_group {
+ flag: '%{libraries_to_link.object_files}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file'
+ }
+ flag_group {
+ flag: '%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'interface_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'static_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'dynamic_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'versioned_dynamic_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ }
+ }
+ }
+
+ # Since this feature is declared earlier in the CROSSTOOL than
+ # "legacy_link_flags", this feature will be applied prior to it anwyhere they
+ # are both implied. And since "legacy_link_flags" contains the linkopts from
+ # the build rule, this allows the user to override the /SUBSYSTEM in the BUILD
+ # file.
+ feature {
+ name: 'linker_subsystem_flag'
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/SUBSYSTEM:CONSOLE'
+ }
+ }
+ }
+
+ # The "legacy_link_flags" may contain user-defined linkopts (from build rules)
+ # so it should be defined after features that declare user-overridable flags.
+ # For example the "linker_subsystem_flag" defines a default "/SUBSYSTEM" flag
+ # but we want to let the user override it, therefore "link_flag_subsystem" is
+ # defined earlier in the CROSSTOOL file than "legacy_link_flags".
+ feature {
+ name: 'legacy_link_flags'
+ flag_set {
+ expand_if_all_available: 'legacy_link_flags'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'legacy_link_flags'
+ flag: '%{legacy_link_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: 'linker_param_file'
+ flag_set {
+ expand_if_all_available: 'linker_param_file'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ action: 'c++-link-static-library'
+ flag_group {
+ flag: '@%{linker_param_file}'
+ }
+ }
+ }
+
+ feature {
+ name: 'static_link_msvcrt'
+ }
+
+ feature {
+ name: 'static_link_msvcrt_no_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MT"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:libcmt.lib"
+ }
+ }
+ requires: { feature: 'fastbuild'}
+ requires: { feature: 'opt'}
+ }
+
+ feature {
+ name: 'dynamic_link_msvcrt_no_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MD"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:msvcrt.lib"
+ }
+ }
+ requires: { feature: 'fastbuild'}
+ requires: { feature: 'opt'}
+ }
+
+ feature {
+ name: 'static_link_msvcrt_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MTd"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:libcmtd.lib"
+ }
+ }
+ requires: { feature: 'dbg'}
+ }
+
+ feature {
+ name: 'dynamic_link_msvcrt_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MDd"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:msvcrtd.lib"
+ }
+ }
+ requires: { feature: 'dbg'}
+ }
+
+ feature {
+ name: 'dbg'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/Od"
+ flag: "/Z7"
+ flag: "/DDEBUG"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: ""
+ flag: "/INCREMENTAL:NO"
+ }
+ }
+ implies: 'generate_pdb_file'
+ }
+
+ feature {
+ name: 'fastbuild'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/Od"
+ flag: "/Z7"
+ flag: "/DDEBUG"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: ""
+ flag: "/INCREMENTAL:NO"
+ }
+ }
+ implies: 'generate_pdb_file'
+ }
+
+ feature {
+ name: 'opt'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/O2"
+ flag: "/DNDEBUG"
+ }
+ }
+ }
+
+ feature {
+ name: 'user_compile_flags'
+ flag_set {
+ expand_if_all_available: 'user_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'user_compile_flags'
+ flag: '%{user_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: 'sysroot'
+ flag_set {
+ expand_if_all_available: 'sysroot'
+ action: 'assemble'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'sysroot'
+ flag: '--sysroot=%{sysroot}'
+ }
+ }
+ }
+
+ feature {
+ name: 'unfiltered_compile_flags'
+ flag_set {
+ expand_if_all_available: 'unfiltered_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'unfiltered_compile_flags'
+ flag: '%{unfiltered_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name : 'def_file',
+ flag_set {
+ expand_if_all_available: 'def_file_path'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEF:%{def_file_path}"
+ # We can specify a different DLL name in DEF file, /ignore:4070 suppresses
+ # the warning message about DLL name doesn't match the default one.
+ # See https://msdn.microsoft.com/en-us/library/sfkk2fz7.aspx
+ flag: "/ignore:4070"
+ }
+ }
+ }
+
+ feature {
+ name: 'windows_export_all_symbols'
+ }
+
+ feature {
+ name: 'no_windows_export_all_symbols'
+ }
+
+ linking_mode_flags { mode: DYNAMIC }
+
+
+
+}
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/METADATA b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/METADATA
new file mode 100644
index 0000000..8f18ea6
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/METADATA
@@ -0,0 +1 @@
+gcr.io/cloud-marketplace/google/clang-ubuntu@sha256:d553634f23f7c437ca35bbc4b6f1f38bb81be32b9ef2df4329dcd36762277bf7
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/cc_wrapper.sh b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/cc_wrapper.sh
new file mode 100755
index 0000000..42a751d
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/cc_wrapper.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+#
+# Copyright 2015 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.
+#
+# Ship the environment to the C++ action
+#
+set -eu
+
+# Set-up the environment
+
+
+# Call the C++ compiler
+/usr/local/bin/clang "$@"
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/dummy_toolchain.bzl b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/dummy_toolchain.bzl
new file mode 100755
index 0000000..45c0285
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default/dummy_toolchain.bzl
@@ -0,0 +1,23 @@
+# pylint: disable=g-bad-file-header
+# Copyright 2017 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.
+
+"""Skylark rule that stubs a toolchain."""
+
+def _dummy_toolchain_impl(ctx):
+ ctx = ctx # unused argument
+ toolchain = platform_common.ToolchainInfo()
+ return [toolchain]
+
+dummy_toolchain = rule(_dummy_toolchain_impl, attrs = {})
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/BUILD b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/BUILD
new file mode 100755
index 0000000..5bba7ae
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/BUILD
@@ -0,0 +1,139 @@
+# Copyright 2016 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.
+
+# This becomes the BUILD file for @local_config_cc// under non-FreeBSD unixes.
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache 2.0
+
+cc_library(
+ name = "malloc",
+)
+
+cc_library(
+ name = "stl",
+)
+
+filegroup(
+ name = "empty",
+ srcs = [],
+)
+
+filegroup(
+ name = "cc_wrapper",
+ srcs = ["cc_wrapper.sh"],
+)
+
+filegroup(
+ name = "compiler_deps",
+ srcs = glob(["extra_tools/**"]) + [":empty"],
+)
+
+# This is the entry point for --crosstool_top. Toolchains are found
+# by lopping off the name of --crosstool_top and searching for
+# the "${CPU}" entry in the toolchains attribute.
+cc_toolchain_suite(
+ name = "toolchain",
+ toolchains = {
+ "k8|clang": ":cc-compiler-k8",
+ "armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
+ "ios_x86_64|compiler": ":cc-compiler-ios_x86_64",
+ },
+)
+
+cc_toolchain(
+ name = "cc-compiler-k8",
+ all_files = ":compiler_deps",
+ compiler_files = ":compiler_deps",
+ cpu = "k8",
+ dwp_files = ":empty",
+ dynamic_runtime_libs = [":empty"],
+ linker_files = ":compiler_deps",
+ objcopy_files = ":empty",
+ static_runtime_libs = [":empty"],
+ strip_files = ":empty",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-k8",
+ exec_compatible_with = [
+ # This toolchain will only work with the local autoconfigured platforms.
+ "@bazel_tools//platforms:autoconfigured",
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ toolchain = ":cc-compiler-k8",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+# Android tooling requires a default toolchain for the armeabi-v7a cpu.
+cc_toolchain(
+ name = "cc-compiler-armeabi-v7a",
+ 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",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-armeabi-v7a",
+ exec_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:arm",
+ "@bazel_tools//platforms:android",
+ ],
+ toolchain = ":cc-compiler-armabi-v7a",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+# ios crosstool configuration requires a default toolchain for the
+# ios_x86_64 cpu.
+cc_toolchain(
+ name = "cc-compiler-ios_x86_64",
+ 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",
+ supports_param_files = 1,
+)
+
+toolchain(
+ name = "cc-toolchain-ios_x86_64",
+ exec_compatible_with = [
+ # TODO(katre): add autodiscovered constraints for host CPU and OS.
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:x86_64",
+ "@bazel_tools//platforms:ios",
+ ],
+ toolchain = ":cc-compiler-ios_x86_64",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/CROSSTOOL b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/CROSSTOOL
new file mode 100755
index 0000000..45280fa
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/CROSSTOOL
@@ -0,0 +1,1156 @@
+# Copyright 2016 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.
+
+major_version: "local"
+minor_version: ""
+default_target_cpu: "same_as_host"
+
+default_toolchain {
+ cpu: "k8"
+ toolchain_identifier: "linux_gnu_x86"
+}
+
+default_toolchain {
+ cpu: "local"
+ toolchain_identifier: "stub_armeabi-v7a"
+}
+
+default_toolchain {
+ cpu: "armeabi-v7a"
+ toolchain_identifier: "stub_armeabi-v7a"
+}
+
+default_toolchain {
+ cpu: "x64_windows"
+ toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+ cpu: "x64_windows_msvc"
+ toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+ cpu: "x64_windows_msys"
+ toolchain_identifier: "msys_x64"
+}
+
+default_toolchain {
+ cpu: "s390x"
+ toolchain_identifier: "linux_gnu_x86"
+}
+
+default_toolchain {
+ cpu: "local"
+ toolchain_identifier: "ios_x86_64"
+}
+
+default_toolchain {
+ cpu: "ios_x86_64"
+ toolchain_identifier: "ios_x86_64"
+}
+
+# Android tooling requires a default toolchain for the armeabi-v7a cpu.
+toolchain {
+ abi_version: "armeabi-v7a"
+ abi_libc_version: "armeabi-v7a"
+ builtin_sysroot: ""
+ compiler: "compiler"
+ host_system_name: "armeabi-v7a"
+ needsPic: true
+ supports_gold_linker: false
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: false
+ target_libc: "armeabi-v7a"
+ target_cpu: "armeabi-v7a"
+ target_system_name: "armeabi-v7a"
+ toolchain_identifier: "stub_armeabi-v7a"
+
+ tool_path { name: "ar" path: "/bin/false" }
+ tool_path { name: "compat-ld" path: "/bin/false" }
+ tool_path { name: "cpp" path: "/bin/false" }
+ tool_path { name: "dwp" path: "/bin/false" }
+ tool_path { name: "gcc" path: "/bin/false" }
+ tool_path { name: "gcov" path: "/bin/false" }
+ tool_path { name: "ld" path: "/bin/false" }
+
+ tool_path { name: "nm" path: "/bin/false" }
+ tool_path { name: "objcopy" path: "/bin/false" }
+ tool_path { name: "objdump" path: "/bin/false" }
+ tool_path { name: "strip" path: "/bin/false" }
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "ios_x86_64"
+ host_system_name: "x86_64-apple-macosx"
+ target_system_name: "x86_64-apple-ios"
+ target_cpu: "ios_x86_64"
+ target_libc: "ios"
+ compiler: "compiler"
+ abi_version: "local"
+ abi_libc_version: "local"
+ supports_gold_linker: false
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: false
+
+ tool_path { name: "ar" path: "/bin/false" }
+ tool_path { name: "compat-ld" path: "/bin/false" }
+ tool_path { name: "cpp" path: "/bin/false" }
+ tool_path { name: "dwp" path: "/bin/false" }
+ tool_path { name: "gcc" path: "/bin/false" }
+ tool_path { name: "gcov" path: "/bin/false" }
+ tool_path { name: "ld" path: "/bin/false" }
+
+ tool_path { name: "nm" path: "/bin/false" }
+ tool_path { name: "objcopy" path: "/bin/false" }
+ tool_path { name: "objdump" path: "/bin/false" }
+ tool_path { name: "strip" path: "/bin/false" }
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "linux_gnu_x86"
+ abi_version: "clang"
+ abi_libc_version: "glibc_2.19"
+ builtin_sysroot: ""
+ compiler: "clang"
+ host_system_name: "i686-unknown-linux-gnu"
+ needsPic: true
+ supports_gold_linker: true
+ supports_incremental_linker: false
+ supports_fission: false
+ supports_interface_shared_objects: false
+ supports_normalizing_ar: false
+ supports_start_end_lib: true
+ target_libc: "glibc_2.19"
+ target_cpu: "k8"
+ target_system_name: "x86_64-unknown-linux-gnu"
+ cxx_flag: "-std=c++0x"
+ linker_flag: "-fuse-ld=gold"
+ linker_flag: "-B/usr/local/bin"
+ linker_flag: "-B/usr/bin"
+ linker_flag: "-lc++"
+ linker_flag: "-lc++abi"
+ linker_flag: "-lm"
+ cxx_builtin_include_directory: "/usr/local/include"
+ cxx_builtin_include_directory: "/usr/local/lib/clang/7.0.0/include"
+ cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu"
+ cxx_builtin_include_directory: "/usr/include"
+ cxx_builtin_include_directory: "/usr/include/c++/5.4.0"
+ cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu/c++/5.4.0"
+ cxx_builtin_include_directory: "/usr/include/c++/5.4.0/backward"
+ objcopy_embed_flag: "-I"
+ objcopy_embed_flag: "binary"
+ unfiltered_cxx_flag: "-no-canonical-prefixes"
+ unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
+ unfiltered_cxx_flag: "-D__DATE__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIME__=\"redacted\""
+ compiler_flag: "-U_FORTIFY_SOURCE"
+ compiler_flag: "-fstack-protector"
+ compiler_flag: "-Wall"
+ compiler_flag: "-B/usr/local/bin"
+ compiler_flag: "-B/usr/bin"
+ compiler_flag: "-fcolor-diagnostics"
+ compiler_flag: "-fno-omit-frame-pointer"
+ tool_path {name: "ar" path: "/usr/bin/ar" }
+ tool_path {name: "ld" path: "/usr/bin/ld" }
+ tool_path {name: "cpp" path: "/usr/bin/cpp" }
+ tool_path {name: "gcc" path: "/usr/local/bin/clang" }
+ tool_path {name: "dwp" path: "/usr/bin/dwp" }
+ tool_path {name: "gcov" path: "/usr/bin/gcov" }
+ tool_path {name: "nm" path: "/usr/bin/nm" }
+ tool_path {name: "objcopy" path: "/usr/bin/objcopy" }
+ tool_path {name: "objdump" path: "/usr/bin/objdump" }
+ tool_path {name: "strip" path: "/usr/bin/strip" }
+
+ compilation_mode_flags {
+ mode: DBG
+ compiler_flag: "-g"
+ }
+ compilation_mode_flags {
+ mode: OPT
+ compiler_flag: "-g0"
+ compiler_flag: "-O2"
+ compiler_flag: "-D_FORTIFY_SOURCE=1"
+ compiler_flag: "-DNDEBUG"
+ compiler_flag: "-ffunction-sections"
+ compiler_flag: "-fdata-sections"
+ linker_flag: "-Wl,--gc-sections"
+ }
+ linking_mode_flags { mode: DYNAMIC }
+
+
+ feature {
+ name: 'coverage'
+ provides: 'profile'
+ flag_set {
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ flag_group {
+ flag: '--coverage'
+ }
+ }
+ flag_set {
+ action: 'c++-link-dynamic-library'
+ action: 'c++-link-nodeps-dynamic-library'
+ action: 'c++-link-executable'
+ flag_group {
+ flag: '--coverage'
+ }
+ }
+ }
+
+
+ feature {
+ name: 'fdo_optimize'
+ provides: 'profile'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ expand_if_all_available: 'fdo_profile_path'
+ flag_group {
+ flag: '-fprofile-use=%{fdo_profile_path}'
+ flag: '-fprofile-correction',
+ }
+ }
+ }
+}
+
+toolchain {
+ toolchain_identifier: "msys_x64_mingw"
+ abi_version: "local"
+ abi_libc_version: "local"
+ builtin_sysroot: ""
+ compiler: "mingw-gcc"
+ host_system_name: "local"
+ needsPic: false
+ target_libc: "mingw"
+ target_cpu: "x64_windows"
+ target_system_name: "local"
+
+
+
+ linking_mode_flags { mode: DYNAMIC }
+}
+
+toolchain {
+ toolchain_identifier: "msvc_x64"
+ host_system_name: "local"
+ target_system_name: "local"
+
+ abi_version: "local"
+ abi_libc_version: "local"
+ target_cpu: "x64_windows"
+ compiler: "msvc-cl"
+ target_libc: "msvcrt"
+ default_python_version: "python2.7"
+
+
+
+ tool_path {
+ name: "ar"
+ path: ""
+ }
+ tool_path {
+ name: "ml"
+ path: ""
+ }
+ tool_path {
+ name: "cpp"
+ path: ""
+ }
+ tool_path {
+ name: "gcc"
+ path: ""
+ }
+ tool_path {
+ name: "gcov"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "ld"
+ path: ""
+ }
+ tool_path {
+ name: "nm"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "objcopy"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "objdump"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ tool_path {
+ name: "strip"
+ path: "wrapper/bin/msvc_nop.bat"
+ }
+ supports_gold_linker: false
+ supports_start_end_lib: false
+ supports_interface_shared_objects: true
+ supports_incremental_linker: false
+ supports_normalizing_ar: true
+ needsPic: false
+
+ # TODO(pcloudy): Review those flags below, they should be defined by cl.exe
+ compiler_flag: "/DCOMPILER_MSVC"
+
+ # Don't define min/max macros in windows.h.
+ compiler_flag: "/DNOMINMAX"
+
+ # Platform defines.
+ compiler_flag: "/D_WIN32_WINNT=0x0600"
+ # Turn off warning messages.
+ compiler_flag: "/D_CRT_SECURE_NO_DEPRECATE"
+ compiler_flag: "/D_CRT_SECURE_NO_WARNINGS"
+ compiler_flag: "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS"
+
+ # Useful options to have on for compilation.
+ # Increase the capacity of object files to 2^32 sections.
+ compiler_flag: "/bigobj"
+ # Allocate 500MB for precomputed headers.
+ compiler_flag: "/Zm500"
+ # Use unsigned char by default.
+ compiler_flag: "/J"
+ # Use function level linking.
+ compiler_flag: "/Gy"
+ # Use string pooling.
+ compiler_flag: "/GF"
+ # Catch C++ exceptions only and tell the compiler to assume that functions declared
+ # as extern "C" never throw a C++ exception.
+ compiler_flag: "/EHsc"
+
+ # Globally disabled warnings.
+ # Don't warn about elements of array being be default initialized.
+ compiler_flag: "/wd4351"
+ # Don't warn about no matching delete found.
+ compiler_flag: "/wd4291"
+ # Don't warn about diamond inheritance patterns.
+ compiler_flag: "/wd4250"
+ # Don't warn about insecure functions (e.g. non _s functions).
+ compiler_flag: "/wd4996"
+
+ linker_flag: "/MACHINE:X64"
+
+ feature {
+ name: "no_legacy_features"
+ }
+
+ # Suppress startup banner.
+ feature {
+ name: "nologo"
+ flag_set {
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ action: "c++-link-static-library"
+ flag_group {
+ flag: "/nologo"
+ }
+ }
+ }
+
+ feature {
+ name: 'has_configured_linker_path'
+ }
+
+ # This feature indicates strip is not supported, building stripped binary will just result a copy of orignial binary
+ feature {
+ name: 'no_stripping'
+ }
+
+ # This feature indicates this is a toolchain targeting Windows.
+ feature {
+ name: 'targets_windows'
+ implies: 'copy_dynamic_libraries_to_binary'
+ enabled: true
+ }
+
+ feature {
+ name: 'copy_dynamic_libraries_to_binary'
+ }
+
+ action_config {
+ config_name: 'assemble'
+ action_name: 'assemble'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ flag: '/Zi'
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'sysroot'
+ }
+
+ action_config {
+ config_name: 'c-compile'
+ action_name: 'c-compile'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ flag_group {
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_assembly_file'
+ flag_group {
+ flag: '/Fa%{output_assembly_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_preprocess_file'
+ flag_group {
+ flag: '/P'
+ flag: '/Fi%{output_preprocess_file}'
+ }
+ }
+ implies: 'legacy_compile_flags'
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'parse_showincludes'
+ implies: 'user_compile_flags'
+ implies: 'sysroot'
+ implies: 'unfiltered_compile_flags'
+ }
+
+ action_config {
+ config_name: 'c++-compile'
+ action_name: 'c++-compile'
+ tool {
+ tool_path: ''
+ }
+ flag_set {
+ flag_group {
+ flag: '/c'
+ flag: '%{source_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_object_file'
+ flag_group {
+ flag: '/Fo%{output_object_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_assembly_file'
+ flag_group {
+ flag: '/Fa%{output_assembly_file}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'output_preprocess_file'
+ flag_group {
+ flag: '/P'
+ flag: '/Fi%{output_preprocess_file}'
+ }
+ }
+ implies: 'legacy_compile_flags'
+ implies: 'nologo'
+ implies: 'msvc_env'
+ implies: 'parse_showincludes'
+ implies: 'user_compile_flags'
+ implies: 'sysroot'
+ implies: 'unfiltered_compile_flags'
+ }
+
+ action_config {
+ config_name: 'c++-link-executable'
+ action_name: 'c++-link-executable'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ }
+
+ action_config {
+ config_name: 'c++-link-dynamic-library'
+ action_name: 'c++-link-dynamic-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'shared_flag'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ implies: 'has_configured_linker_path'
+ implies: 'def_file'
+ }
+
+ action_config {
+ config_name: 'c++-link-nodeps-dynamic-library'
+ action_name: 'c++-link-nodeps-dynamic-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'shared_flag'
+ implies: 'linkstamps'
+ implies: 'output_execpath_flags'
+ implies: 'input_param_flags'
+ implies: 'legacy_link_flags'
+ implies: 'linker_subsystem_flag'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ implies: 'use_linker'
+ implies: 'no_stripping'
+ implies: 'has_configured_linker_path'
+ implies: 'def_file'
+ }
+
+ action_config {
+ config_name: 'c++-link-static-library'
+ action_name: 'c++-link-static-library'
+ tool {
+ tool_path: ''
+ }
+ implies: 'nologo'
+ implies: 'archiver_flags'
+ implies: 'input_param_flags'
+ implies: 'linker_param_file'
+ implies: 'msvc_env'
+ }
+
+ # TODO(b/65151735): Remove legacy_compile_flags feature when legacy fields are
+ # not used in this crosstool
+ feature {
+ name: 'legacy_compile_flags'
+ flag_set {
+ expand_if_all_available: 'legacy_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'legacy_compile_flags'
+ flag: '%{legacy_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: "msvc_env"
+ env_set {
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-module-compile"
+ action: "c++-module-codegen"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ action: "c++-link-static-library"
+ env_entry {
+ key: "PATH"
+ value: ""
+ }
+ env_entry {
+ key: "INCLUDE"
+ value: ""
+ }
+ env_entry {
+ key: "LIB"
+ value: ""
+ }
+ env_entry {
+ key: "TMP"
+ value: ""
+ }
+ env_entry {
+ key: "TEMP"
+ value: ""
+ }
+ }
+ }
+
+ feature {
+ name: "use_linker"
+ env_set {
+ action: "c++-link-executable"
+ action: "c++-link-dynamic-library"
+ action: "c++-link-nodeps-dynamic-library"
+ env_entry {
+ key: "USE_LINKER"
+ value: "1"
+ }
+ }
+ }
+
+ feature {
+ name: 'include_paths'
+ flag_set {
+ action: "assemble"
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ flag_group {
+ iterate_over: 'quote_include_paths'
+ flag: '/I%{quote_include_paths}'
+ }
+ flag_group {
+ iterate_over: 'include_paths'
+ flag: '/I%{include_paths}'
+ }
+ flag_group {
+ iterate_over: 'system_include_paths'
+ flag: '/I%{system_include_paths}'
+ }
+ }
+ }
+
+ feature {
+ name: "preprocessor_defines"
+ flag_set {
+ action: "assemble"
+ action: "preprocess-assemble"
+ action: "c-compile"
+ action: "c++-compile"
+ action: "c++-header-parsing"
+ action: "c++-header-preprocessing"
+ action: "c++-module-compile"
+ flag_group {
+ flag: "/D%{preprocessor_defines}"
+ iterate_over: "preprocessor_defines"
+ }
+ }
+ }
+
+ # Tell Bazel to parse the output of /showIncludes
+ feature {
+ name: 'parse_showincludes'
+ flag_set {
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-module-compile'
+ action: 'c++-header-preprocessing'
+ action: 'c++-header-parsing'
+ flag_group {
+ flag: "/showIncludes"
+ }
+ }
+ }
+
+
+ feature {
+ name: 'generate_pdb_file'
+ requires: {
+ feature: 'dbg'
+ }
+ requires: {
+ feature: 'fastbuild'
+ }
+ }
+
+ feature {
+ name: 'shared_flag'
+ flag_set {
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/DLL'
+ }
+ }
+ }
+
+ feature {
+ name: 'linkstamps'
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ expand_if_all_available: 'linkstamp_paths'
+ flag_group {
+ iterate_over: 'linkstamp_paths'
+ flag: '%{linkstamp_paths}'
+ }
+ }
+ }
+
+ feature {
+ name: 'output_execpath_flags'
+ flag_set {
+ expand_if_all_available: 'output_execpath'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/OUT:%{output_execpath}'
+ }
+ }
+ }
+
+ feature {
+ name: 'archiver_flags'
+ flag_set {
+ expand_if_all_available: 'output_execpath'
+ action: 'c++-link-static-library'
+ flag_group {
+ flag: '/OUT:%{output_execpath}'
+ }
+ }
+ }
+
+ feature {
+ name: 'input_param_flags'
+ flag_set {
+ expand_if_all_available: 'interface_library_output_path'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/IMPLIB:%{interface_library_output_path}"
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'libopts'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'libopts'
+ flag: '%{libopts}'
+ }
+ }
+ flag_set {
+ expand_if_all_available: 'libraries_to_link'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ action: 'c++-link-static-library'
+ flag_group {
+ iterate_over: 'libraries_to_link'
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file_group'
+ }
+ iterate_over: 'libraries_to_link.object_files'
+ flag_group {
+ flag: '%{libraries_to_link.object_files}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file'
+ }
+ flag_group {
+ flag: '%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'interface_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'static_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'dynamic_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'versioned_dynamic_library'
+ }
+ flag_group {
+ expand_if_false: 'libraries_to_link.is_whole_archive'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_true: 'libraries_to_link.is_whole_archive'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ }
+ }
+ }
+
+ # Since this feature is declared earlier in the CROSSTOOL than
+ # "legacy_link_flags", this feature will be applied prior to it anwyhere they
+ # are both implied. And since "legacy_link_flags" contains the linkopts from
+ # the build rule, this allows the user to override the /SUBSYSTEM in the BUILD
+ # file.
+ feature {
+ name: 'linker_subsystem_flag'
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: '/SUBSYSTEM:CONSOLE'
+ }
+ }
+ }
+
+ # The "legacy_link_flags" may contain user-defined linkopts (from build rules)
+ # so it should be defined after features that declare user-overridable flags.
+ # For example the "linker_subsystem_flag" defines a default "/SUBSYSTEM" flag
+ # but we want to let the user override it, therefore "link_flag_subsystem" is
+ # defined earlier in the CROSSTOOL file than "legacy_link_flags".
+ feature {
+ name: 'legacy_link_flags'
+ flag_set {
+ expand_if_all_available: 'legacy_link_flags'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'legacy_link_flags'
+ flag: '%{legacy_link_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: 'linker_param_file'
+ flag_set {
+ expand_if_all_available: 'linker_param_file'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ action: 'c++-link-static-library'
+ flag_group {
+ flag: '@%{linker_param_file}'
+ }
+ }
+ }
+
+ feature {
+ name: 'static_link_msvcrt'
+ }
+
+ feature {
+ name: 'static_link_msvcrt_no_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MT"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:libcmt.lib"
+ }
+ }
+ requires: { feature: 'fastbuild'}
+ requires: { feature: 'opt'}
+ }
+
+ feature {
+ name: 'dynamic_link_msvcrt_no_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MD"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:msvcrt.lib"
+ }
+ }
+ requires: { feature: 'fastbuild'}
+ requires: { feature: 'opt'}
+ }
+
+ feature {
+ name: 'static_link_msvcrt_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MTd"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:libcmtd.lib"
+ }
+ }
+ requires: { feature: 'dbg'}
+ }
+
+ feature {
+ name: 'dynamic_link_msvcrt_debug'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/MDd"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEFAULTLIB:msvcrtd.lib"
+ }
+ }
+ requires: { feature: 'dbg'}
+ }
+
+ feature {
+ name: 'dbg'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/Od"
+ flag: "/Z7"
+ flag: "/DDEBUG"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: ""
+ flag: "/INCREMENTAL:NO"
+ }
+ }
+ implies: 'generate_pdb_file'
+ }
+
+ feature {
+ name: 'fastbuild'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/Od"
+ flag: "/Z7"
+ flag: "/DDEBUG"
+ }
+ }
+ flag_set {
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: ""
+ flag: "/INCREMENTAL:NO"
+ }
+ }
+ implies: 'generate_pdb_file'
+ }
+
+ feature {
+ name: 'opt'
+ flag_set {
+ action: 'c-compile'
+ action: 'c++-compile'
+ flag_group {
+ flag: "/O2"
+ flag: "/DNDEBUG"
+ }
+ }
+ }
+
+ feature {
+ name: 'user_compile_flags'
+ flag_set {
+ expand_if_all_available: 'user_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'user_compile_flags'
+ flag: '%{user_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name: 'sysroot'
+ flag_set {
+ expand_if_all_available: 'sysroot'
+ action: 'assemble'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ iterate_over: 'sysroot'
+ flag: '--sysroot=%{sysroot}'
+ }
+ }
+ }
+
+ feature {
+ name: 'unfiltered_compile_flags'
+ flag_set {
+ expand_if_all_available: 'unfiltered_compile_flags'
+ action: 'preprocess-assemble'
+ action: 'c-compile'
+ action: 'c++-compile'
+ action: 'c++-header-parsing'
+ action: 'c++-header-preprocessing'
+ action: 'c++-module-compile'
+ action: 'c++-module-codegen'
+ flag_group {
+ iterate_over: 'unfiltered_compile_flags'
+ flag: '%{unfiltered_compile_flags}'
+ }
+ }
+ }
+
+ feature {
+ name : 'def_file',
+ flag_set {
+ expand_if_all_available: 'def_file_path'
+ action: 'c++-link-executable'
+ action: 'c++-link-dynamic-library'
+ action: "c++-link-nodeps-dynamic-library"
+ flag_group {
+ flag: "/DEF:%{def_file_path}"
+ # We can specify a different DLL name in DEF file, /ignore:4070 suppresses
+ # the warning message about DLL name doesn't match the default one.
+ # See https://msdn.microsoft.com/en-us/library/sfkk2fz7.aspx
+ flag: "/ignore:4070"
+ }
+ }
+ }
+
+ feature {
+ name: 'windows_export_all_symbols'
+ }
+
+ feature {
+ name: 'no_windows_export_all_symbols'
+ }
+
+ linking_mode_flags { mode: DYNAMIC }
+
+
+
+}
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/METADATA b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/METADATA
new file mode 100644
index 0000000..76f7ea7
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/METADATA
@@ -0,0 +1 @@
+ gcr.io/cloud-marketplace/google/clang-ubuntu@sha256:d553634f23f7c437ca35bbc4b6f1f38bb81be32b9ef2df4329dcd36762277bf7
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/cc_wrapper.sh b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/cc_wrapper.sh
new file mode 100755
index 0000000..42a751d
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/cc_wrapper.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+#
+# Copyright 2015 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.
+#
+# Ship the environment to the C++ action
+#
+set -eu
+
+# Set-up the environment
+
+
+# Call the C++ compiler
+/usr/local/bin/clang "$@"
diff --git a/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/dummy_toolchain.bzl b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/dummy_toolchain.bzl
new file mode 100755
index 0000000..45c0285
--- /dev/null
+++ b/configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan/dummy_toolchain.bzl
@@ -0,0 +1,23 @@
+# pylint: disable=g-bad-file-header
+# Copyright 2017 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.
+
+"""Skylark rule that stubs a toolchain."""
+
+def _dummy_toolchain_impl(ctx):
+ ctx = ctx # unused argument
+ toolchain = platform_common.ToolchainInfo()
+ return [toolchain]
+
+dummy_toolchain = rule(_dummy_toolchain_impl, attrs = {})
diff --git a/configs/ubuntu16_04_clang/1.0/toolchain.bazelrc b/configs/ubuntu16_04_clang/1.0/toolchain.bazelrc
index 68361e4..9eccec4 100644
--- a/configs/ubuntu16_04_clang/1.0/toolchain.bazelrc
+++ b/configs/ubuntu16_04_clang/1.0/toolchain.bazelrc
@@ -1,7 +1,7 @@
# Toolchain related flags to append at the end of your .bazelrc file.
build:remote --host_javabase=@bazel_toolchains//configs/ubuntu16_04_clang/1.0:jdk8
build:remote --javabase=@bazel_toolchains//configs/ubuntu16_04_clang/1.0:jdk8
-build:remote --crosstool_top=@bazel_toolchains//configs/ubuntu16_04_clang/1.0/bazel_0.13.0/default:toolchain
+build:remote --crosstool_top=@bazel_toolchains//configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default:toolchain
build:remote --experimental_remote_platform_override='properties:{ name:"container-image" value:"docker://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:59bf0e191a6b5cc1ab62c2224c810681d1326bad5a27b1d36c9f40113e79da7f" }'
# Experimental configs for sanitizers, use --config=remote,remote-xxsan,remote-<asan/tsan/msan> (in that order)
@@ -18,5 +18,5 @@
build:remote-msan --linkopt=-fsanitize=memory
build:remote-msan --cxxopt=--stdlib=libc++
build:remote-msan --copt=-fsanitize-memory-track-origins
-build:remote-msan --host_crosstool_top=@bazel_toolchains//configs/ubuntu16_04_clang/1.0/bazel_0.13.0/default:toolchain
-build:remote-msan --crosstool_top=@bazel_toolchains//configs/ubuntu16_04_clang/1.0/bazel_0.13.0/msan:toolchain
+build:remote-msan --host_crosstool_top=@bazel_toolchains//configs/ubuntu16_04_clang/1.0/bazel_0.14.1/default:toolchain
+build:remote-msan --crosstool_top=@bazel_toolchains//configs/ubuntu16_04_clang/1.0/bazel_0.14.1/msan:toolchain
diff --git a/configs/ubuntu16_04_clang/BUILD b/configs/ubuntu16_04_clang/BUILD
index 19150b9..e1599fc 100644
--- a/configs/ubuntu16_04_clang/BUILD
+++ b/configs/ubuntu16_04_clang/BUILD
@@ -28,7 +28,7 @@
# Created on 2018.05.09
# Container: gcr.io/cloud-marketplace/google/clang-ubuntu@sha256:d553634f23f7c437ca35bbc4b6f1f38bb81be32b9ef2df4329dcd36762277bf7
docker_toolchain_autoconfig(
- name = "ubuntu16_04-clang-0.3.0-bazel_0.13.0-autoconfig",
+ name = "ubuntu16_04-clang-1.0-bazel_0.13.0-autoconfig",
additional_repos = ubuntu16_04_clang_default_repos(),
base = "@ubuntu16_04-clang//image",
bazel_version = "0.13.0",
@@ -42,7 +42,7 @@
# Created on 2018.05.09
# Container: gcr.io/cloud-marketplace/google/clang-ubuntu@sha256:d553634f23f7c437ca35bbc4b6f1f38bb81be32b9ef2df4329dcd36762277bf7
docker_toolchain_autoconfig(
- name = "msan-ubuntu16_04-clang-0.3.0-bazel_0.13.0-autoconfig",
+ name = "msan-ubuntu16_04-clang-1.0-bazel_0.13.0-autoconfig",
additional_repos = ubuntu16_04_clang_default_repos(),
base = "@ubuntu16_04-clang//image",
bazel_version = "0.13.0",
@@ -54,3 +54,33 @@
tags = ["manual"],
test = True,
)
+
+# Created on 2018.06.08
+# Container: gcr.io/cloud-marketplace/google/clang-ubuntu@sha256:d553634f23f7c437ca35bbc4b6f1f38bb81be32b9ef2df4329dcd36762277bf7
+docker_toolchain_autoconfig(
+ name = "ubuntu16_04-clang-1.0-bazel_0.14.1-autoconfig",
+ additional_repos = ubuntu16_04_clang_default_repos(),
+ base = "@ubuntu16_04-clang//image",
+ bazel_version = "0.14.1",
+ env = clang_env(),
+ keys = ubuntu16_04_clang_default_keys(),
+ packages = ubuntu16_04_clang_default_packages(),
+ tags = ["manual"],
+ test = True,
+)
+
+# Created on 2018.06.08
+# Container: gcr.io/cloud-marketplace/google/clang-ubuntu@sha256:d553634f23f7c437ca35bbc4b6f1f38bb81be32b9ef2df4329dcd36762277bf7
+docker_toolchain_autoconfig(
+ name = "msan-ubuntu16_04-clang-1.0-bazel_0.14.1-autoconfig",
+ additional_repos = ubuntu16_04_clang_default_repos(),
+ base = "@ubuntu16_04-clang//image",
+ bazel_version = "0.14.1",
+ env = clang_env() + {
+ "BAZEL_LINKOPTS": "-lc++:-lc++abi:-lm",
+ },
+ keys = ubuntu16_04_clang_default_keys(),
+ packages = ubuntu16_04_clang_default_packages(),
+ tags = ["manual"],
+ test = True,
+)