diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8420bb7..9e6a793 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -31,7 +31,7 @@ jobs: fail-fast: false matrix: configuration: [ Debug, Release ] - buildPreset: [ windows-msvc-x64, windows-msvc-amd64, windows-msvc-x86, windows-msvc-arm64, windows-clang-x64, windows-clang-amd64 ] + buildPreset: [ windows-msvc-x64, windows-msvc-amd64, windows-msvc-x86, windows-msvc-arm64, windows-clang-x64, windows-clang-amd64, windows-clangcl-x64, windows-clangcl-amd64 ] runs-on: windows-latest steps: - name: Checkout diff --git a/Windows.Clang.toolchain.cmake b/Windows.Clang.toolchain.cmake index ba9c8fc..a2da18a 100644 --- a/Windows.Clang.toolchain.cmake +++ b/Windows.Clang.toolchain.cmake @@ -89,16 +89,26 @@ findVisualStudio( installationPath VS_INSTALLATION_PATH ) +set(TOOLCHAIN_C_COMPILER_EXE clang.exe) +if(CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL MSVC) + set(TOOLCHAIN_C_COMPILER_EXE clang-cl.exe) +endif() + find_program(CMAKE_C_COMPILER - clang.exe + ${TOOLCHAIN_C_COMPILER_EXE} HINTS "${VS_INSTALLATION_PATH}/VC/Tools/Llvm/x64/bin" "$ENV{ProgramFiles}/LLVM/bin" REQUIRED ) +set(TOOLCHAIN_CXX_COMPILER_EXE clang++.exe) +if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL MSVC) + set(TOOLCHAIN_CXX_COMPILER_EXE clang-cl.exe) +endif() + find_program(CMAKE_CXX_COMPILER - clang++.exe + ${TOOLCHAIN_CXX_COMPILER_EXE} HINTS "${VS_INSTALLATION_PATH}/VC/Tools/Llvm/x64/bin" "$ENV{ProgramFiles}/LLVM/bin" diff --git a/example/CMakePresets.json b/example/CMakePresets.json index 2d92eea..b613c47 100644 --- a/example/CMakePresets.json +++ b/example/CMakePresets.json @@ -43,6 +43,22 @@ }, "binaryDir": "${sourceDir}/__output/${presetName}" }, + { + "name": "windows-clangcl", + "inherits": "windows", + "hidden": true, + "displayName": "Windows-only configuration", + "description": "This build is only available on Windows", + "generator": "Ninja Multi-Config", + "cacheVariables": { + "CMAKE_C_COMPILER_FRONTEND_VARIANT": "MSVC", + "CMAKE_CXX_COMPILER_FRONTEND_VARIANT": "MSVC", + "CMAKE_TOOLCHAIN_FILE": "../Windows.Clang.toolchain.cmake", + "CMAKE_VS_VERSION_RANGE": "[16.0,18.0)", + "CMAKE_VS_VERSION_PRERELEASE": "ON" + }, + "binaryDir": "${sourceDir}/__output/${presetName}" + }, { "name": "ewdk", "displayName": "EWDK configuration", @@ -110,6 +126,24 @@ "CMAKE_SYSTEM_PROCESSOR": "AMD64", "CLANG_TIDY_CHECKS": "bugprone*,-bugprone-easily-swappable-parameters" } + }, + { + "name": "windows-clangcl-x64", + "inherits": "windows-clangcl", + "displayName": "Configure for 'windows-clangcl-x64'", + "binaryDir": "${sourceDir}/__output/${presetName}", + "cacheVariables": { + "CMAKE_SYSTEM_PROCESSOR": "x64" + } + }, + { + "name": "windows-clangcl-amd64", + "inherits": "windows-clangcl", + "displayName": "Configure for 'windows-clangcl-amd64'", + "binaryDir": "${sourceDir}/__output/${presetName}", + "cacheVariables": { + "CMAKE_SYSTEM_PROCESSOR": "AMD64" + } } ], "buildPresets": [ @@ -137,6 +171,14 @@ "name": "windows-clang-amd64", "configurePreset": "windows-clang-amd64" }, + { + "name": "windows-clangcl-x64", + "configurePreset": "windows-clangcl-x64" + }, + { + "name": "windows-clangcl-amd64", + "configurePreset": "windows-clangcl-amd64" + }, { "name": "ewdk", "configurePreset": "ewdk" diff --git a/example/WindowsApplication/WindowsApplication.rc b/example/WindowsApplication/WindowsApplication.rc index 8da0264..7578616 100644 Binary files a/example/WindowsApplication/WindowsApplication.rc and b/example/WindowsApplication/WindowsApplication.rc differ