From e3ca95fbaee30343ad853ac1b90b67c86c6f6306 Mon Sep 17 00:00:00 2001 From: Mark Schofield Date: Wed, 11 Oct 2023 18:56:25 -0700 Subject: [PATCH 1/5] Windows.Clang.toolchain.cmake doesn't need to set CMAKE_CXX_COMPILER_ID, CMAKE_CXX_COMPILER_FRONTEND_VARIANT --- Windows.Clang.toolchain.cmake | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Windows.Clang.toolchain.cmake b/Windows.Clang.toolchain.cmake index 51cfba7..ba9c8fc 100644 --- a/Windows.Clang.toolchain.cmake +++ b/Windows.Clang.toolchain.cmake @@ -105,12 +105,6 @@ find_program(CMAKE_CXX_COMPILER REQUIRED ) -set(CMAKE_CXX_COMPILER_ID "Clang") -set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") - -set(CMAKE_C_COMPILER_ID "Clang") -set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") - if(CLANG_TIDY_CHECKS) get_filename_component(CLANG_PATH ${CMAKE_CXX_COMPILER} DIRECTORY CACHE) set(CMAKE_CXX_CLANG_TIDY "${CLANG_PATH}/clang-tidy.exe;-checks=${CLANG_TIDY_CHECKS}") From 196ff01745c58ce70681645d24d6e4f4d1e812df Mon Sep 17 00:00:00 2001 From: Mark Schofield Date: Wed, 11 Oct 2023 19:18:10 -0700 Subject: [PATCH 2/5] Convert UTF-16LE files with UTF8 --- .../WindowsApplication/WindowsApplication.rc | Bin 9110 -> 4429 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/example/WindowsApplication/WindowsApplication.rc b/example/WindowsApplication/WindowsApplication.rc index 8da0264eefafdd410af19c4f6d04e09bfdac4e29..7578616bc31e0f2fd9bf88b0fa364607f5521d7c 100644 GIT binary patch literal 4429 zcmc&%TW_N}5Ps)Z%yFe^E3vutvb#@54tA(jZo+1pN|jJHaZ)4-6_D+&)E~b#Bn@ej zbF@z&aLyC#-IS(;^aL2yG)x>3{gmx0l`|jUS(n73e#Y$E`WuYO@WVT3_hrqXt5bCvH zx9fRLvPJ${)^peUsy@#7Fnq99y;%6C+0x<@o=nwtxF3ZUjfvx2z}p+N2L%r8n0nEL z;b6~>uub8c2}7eZBlY{h=6Tk&et1o)CrI;GSysRZ{G6q02`}kvE*G#&3e{WXAhU8^ zNSM96q{)0%C3yx(vv?@v^DN0qP|Y$aE16ZGMrUaX+F`Y6|&!ryOL%o&h%YUPu z;~)9Df?lt;2dz=@*pGIw8oINyRPKrAbD7FwR^>%!%Q#_DY+2NyAr^kfTc$<-?j5P} z=gpaZup#CaW2z53&1s|l-_PsXIwYB;`Km+1kcO^fe+q%SHb>Nr_9ltAsr+fLMY(P7X; zMy=|r3CQKZpQMV!Bwe8vP4*(E@@z)J*u~7N7iDV7aiK!AWe%_OI~tm!LG9#@pi|Kb z1xI4G3EyQ=>I-7n8=yAW)u_f(fL~3{W6uvls`h>y*vemi7s=|Wf=}}c7!5|lk65D{ zbEvWE`Gih_h~JJQA?hmy`FC30zf&@o=GD-=9%$w2eC^PW0;6;C$}(AHEL-NC5m=>9 zM^imJVuU)(qZ|n3%=Q#7{5E;Wj`-$=`Lzx9ZxM%1gsXBc=9%!N9@o4HnSJ}-J-oSm z9}s?UC_VO-Io)ml^>r<+O{YIi?x{g_sNSZu+k{nThex;9RZgxJDdew;HJNZ{Rv&_P zVdhy*L}<&ZtxDl>fExc8osvCOCOj68S#$TJT?vBP6$5IE)Wt))qsiBI#@sIn+LG@D z4%$@|d)ObUhm%O}o4q`>*_PUO;s4=YhaBTokz^|nvmdGKjAUGd%(Dd^J1vTx$YcP} zVQEm4h^f0$l?$<8LfxXR=g6(IVeF%{Hnz-kHmU2XB7cVJNwzts3aL%4 R-kII@Xr1NN&J(v`^$(R()0O}L literal 9110 zcmeHNZExE)5Wdd^_8(LQC|V$M;=Humr@^ru$EY0}mfR&kfWT{<)Ij1Cw$paNe*4zv zIf|iVQ>v1ER3XG7De`!{yXWpm=D&Y;WJi9j%=3%9z_Pf?`?B9@~L=wwbTGEw)T*^q=XlI`1^E@N@5gf$k1r!-C+R?5X7qL?uc4!3IZN~vLDFMr zu8Fl@LIOQJZ=jcd@C3OdW6&5$2O}u4F-CC49$HV)I>x($FM<3n+xV^PSN5o;hY4U^ zA7LkRl|$8K5CAVTp!O3i<5tl_ud_mp7z}{siFzgan9nFp)E8Z$M&GkY`mQiCP@FH- zU$OTD{W)TW5ff0Hsmuedr==f&%2e*qhdywLkw!a9)X53G2l?R`QoY3!;LG31*E_sx zs!MX*1q%Me?H9 zwxP&%^n9hF*_SF0t~5JGl~LPQOL(X#YH3}~(ze}CA_48?2<466EqfPO{RrNJ)oq@wxb!$g3mYIyh zwyg7f0)B6SOoKn$>*+kd0$%@ue|bE|1>9Sn8=6UtbGdf>R~fYpcyng2w5^54 zfqT5GDUqjPxB*cYx5?Z6HXh0!1$Jv9I??7Vw-})f%+>@hy9tsR)v_23 zkwX^Yd=o3ro$)7{cHm1}@T|;$?y=XZE{0ke8|HrYOl8y6ylbGl9k%SM-J0LJyi4kD zWlv?t-SWAji*k)XGXm0LL_+3-F~)PxWxn*$)>7)nibY1g^!H<6eU3l#joIfV zBCLzFq-a{1iw-f1%|_i9L&3&YYI(hHh_NnSmC001gmf$WO(hc|_LA2K**`rr^Xe9U zZ<2`W_cHl;tBJtG{0Qr27R)@{No*T+lf_W>CKqplle!!{{_df+4GryPasm3CHY7}~ z_?~k4I(^RvjYHg9nEgZ@v3^&5n4h-;@ZvZ$oKkv`>h@H1%QFCD0o0b|@5ekh!NX_l zV;11%20Gv_=QW}wcl?w9WkK&+#Mz#_RsJkzX%2XTa;#ZiBqzvLn5)EU-G;{y<@b*> zu*{X#WgqVY)x)7;#?Ur)+ktL*Mln?V{PfDkD|63G9nPVvId;bP74^6`XioP&E(b0=~Mu6XLo6DFG% ztiQ|ctjru)-<(Df*PQ-)st2y7{TNJjfFJsNb9y>OcFnuD1@;(sDDmcw@xUKv&D~n| czX+-+%d|CG8#nTuLz3KiZ${K?7C^au2bNab>;M1& From 033df491206cbad8e6f7ad2366d4ecb063cf79f4 Mon Sep 17 00:00:00 2001 From: Mark Schofield Date: Wed, 11 Oct 2023 19:22:26 -0700 Subject: [PATCH 3/5] Add support for 'CMAKE_CXX_COMPILER_FRONTEND_VARIANT' to select the clang frontend variant --- Windows.Clang.toolchain.cmake | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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" From 0217cfb72931cddc9d55bce73ae118031b6aebc9 Mon Sep 17 00:00:00 2001 From: Mark Schofield Date: Wed, 11 Oct 2023 19:22:59 -0700 Subject: [PATCH 4/5] Add 'clangcl' presets to compile with clang-cl.exe --- example/CMakePresets.json | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) 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" From 5a32aca86be59f662232dbb9370310372fa53952 Mon Sep 17 00:00:00 2001 From: Mark Schofield Date: Wed, 11 Oct 2023 21:51:14 -0700 Subject: [PATCH 5/5] Include 'clangcl' presets in .github/workflows/ci.yaml --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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