From 25a59b59f2074614da4c4188e184a87b366dd02d Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 14 Jul 2020 14:15:24 +0200 Subject: [PATCH] Github Actions: Add ClangCL on Windows MS Visual Studio 2019 has builtin support for other compiler toolsets [1]. This commit adds support for compiling using LLVM/Clang 10 using Visual Studio. ClangCL pretends to be MSVC so the usual MSVC flags apply, see also [2]. For detecting if ClangCL is used, newer cmake verisons (>= 3.15) have builtin support using CMAKE_CXX_COMPILER_FRONTEND_VARIANT [3], for older ones a workaround is available using CMAKE_CXX_SIMULATE_ID [4]. [1]: https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/ [2]: https://clang.llvm.org/docs/UsersManual.html#clang-cl [3]: https://stackoverflow.com/a/10055571 [4]: https://github.com/microsoft/CMake/commit/4fe34b2d29ca67ea91b2545b223dad8abbcad282 --- .github/workflows/windows_clang_cl.yml | 30 ++++++++++++++++++++++++++ README.md | 1 + 2 files changed, 31 insertions(+) create mode 100644 .github/workflows/windows_clang_cl.yml diff --git a/.github/workflows/windows_clang_cl.yml b/.github/workflows/windows_clang_cl.yml new file mode 100644 index 00000000..4b5a5f5a --- /dev/null +++ b/.github/workflows/windows_clang_cl.yml @@ -0,0 +1,30 @@ +name: Windows + +on: [push, pull_request] + +jobs: + clang-cl-10-x64: + + runs-on: windows-latest + + steps: + - uses: actions/checkout@v1 + - name: cmake + run: cmake -S . -B build -G "Visual Studio 16 2019" -A x64 -T ClangCL -DJSON_BuildTests=On + - name: build + run: cmake --build build --config Debug --parallel 10 + - name: test + run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure + + clang-cl-10-x86: + + runs-on: windows-latest + + steps: + - uses: actions/checkout@v1 + - name: cmake + run: cmake -S . -B build -G "Visual Studio 16 2019" -A Win32 -T ClangCL -DJSON_BuildTests=On + - name: build + run: cmake --build build --config Debug --parallel 10 + - name: test + run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure diff --git a/README.md b/README.md index 2233b554..c1463349 100644 --- a/README.md +++ b/README.md @@ -1254,6 +1254,7 @@ The following compilers are currently used in continuous integration at [Travis] | MSVC 19.16.27035.0 (15.9.21+g9802d43bc3 for .NET Framework) | Windows-10.0.14393 | AppVeyor | | MSVC 19.25.28614.0 (Build Engine version 16.5.0+d4cbfca49 for .NET Framework) | Windows-10.0.17763 | AppVeyor | | MSVC 19.25.28614.0 (Build Engine version 16.5.0+d4cbfca49 for .NET Framework) | Windows-10.0.17763 | GitHub Actions | +| MSVC 19.25.28614.0 (Build Engine version 16.5.0+d4cbfca49 for .NET Framework) with ClangCL 10.0.0 | Windows-10.0.17763 | GitHub Actions | ## License