From c4ca519a86dce8f5e3775ae8606d866204bb5ce4 Mon Sep 17 00:00:00 2001 From: Rodrigo Queiro Date: Wed, 2 Mar 2022 12:22:16 +0100 Subject: [PATCH] Add CI job for clang-cl on Windows This should catch issues like #801. This uses the new `tasks` syntax to define multiple Windows tasks: https://github.com/bazelbuild/continuous-integration/blob/master/buildkite/README.md#basic-syntax --- .bazelci/presubmit.yml | 32 +++++++++++++++++++++++++++++--- BUILD.bazel | 19 +++++++++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index 31c5690..de80b11 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -1,6 +1,8 @@ --- -platforms: +tasks: ubuntu1804: + name: "Ubuntu 18.04" + platform: ubuntu1804 build_flags: - "--features=layering_check" - "--copt=-Werror" @@ -12,6 +14,8 @@ platforms: test_targets: - "//..." macos: + name: "macOS: latest Xcode" + platform: macos build_flags: - "--features=layering_check" - "--copt=-Werror" @@ -22,8 +26,9 @@ platforms: - "--copt=-Werror" test_targets: - "//..." - windows: - # Optional: use VS 2017 instead of 2015. + windows-msvc: + name: "Windows: MSVC 2017" + platform: windows environment: BAZEL_VC: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC" build_flags: @@ -36,3 +41,24 @@ platforms: - "--copt=/WX" test_targets: - "//..." + windows-clang-cl: + name: "Windows: Clang" + platform: windows + environment: + BAZEL_VC: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC" + build_flags: + - "--incompatible_enable_cc_toolchain_resolution" + - "--extra_toolchains=@local_config_cc//:cc-toolchain-x64_windows-clang-cl" + - "--extra_execution_platforms=//:x64_windows-clang-cl" + - "--features=layering_check" + - "--copt=/WX" + build_targets: + - "//..." + test_flags: + - "--incompatible_enable_cc_toolchain_resolution" + - "--extra_toolchains=@local_config_cc//:cc-toolchain-x64_windows-clang-cl" + - "--extra_execution_platforms=//:x64_windows-clang-cl" + - "--features=layering_check" + - "--copt=/WX" + test_targets: + - "//..." diff --git a/BUILD.bazel b/BUILD.bazel index 50df620..0acdc72 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,7 +1,22 @@ -licenses(['notice']) +licenses(["notice"]) exports_files(["COPYING"]) -load(':bazel/glog.bzl', 'glog_library') +load(":bazel/glog.bzl", "glog_library") glog_library() + +# platform() to build with clang-cl on Bazel CI. This is enabled with +# the flags in .bazelci/presubmit.yml: +# +# --incompatible_enable_cc_toolchain_resolution +# --extra_toolchains=@local_config_cc//:cc-toolchain-x64_windows-clang-cl +# --extra_execution_platforms=//:x64_windows-clang-cl +platform( + name = "x64_windows-clang-cl", + constraint_values = [ + "@platforms//cpu:x86_64", + "@platforms//os:windows", + "@bazel_tools//tools/cpp:clang-cl", + ], +)