@@ -187,8 +187,6 @@ if defined nosnapshot set configure_flags=%configure_flags% --without-snap
187187if defined nonpm set configure_flags = %configure_flags% --without-npm
188188if defined nocorepack set configure_flags = %configure_flags% --without-corepack
189189if defined ltcg set configure_flags = %configure_flags% --with-ltcg
190- :: If clang-cl build is requested, set it to 17.0, which is the version shipped with VS 2022.
191- if defined clang_cl set configure_flags = %configure_flags% --clang-cl=17.0
192190if defined release_urlbase set configure_flags = %configure_flags% --release-urlbase=%release_urlbase%
193191if defined download_arg set configure_flags = %configure_flags% %download_arg%
194192if defined enable_vtune_arg set configure_flags = %configure_flags% --enable-vtune-profiling
@@ -256,7 +254,7 @@ echo Looking for Visual Studio 2022
256254@ rem cleared first as vswhere_usability_wrapper.cmd doesn't when it fails to
257255@ rem detect the version searched for
258256if not defined target_env set " VCINSTALLDIR = "
259- call tools\msvs\vswhere_usability_wrapper.cmd " [17.6,18.0)" %target_arch% " prerelease"
257+ call tools\msvs\vswhere_usability_wrapper.cmd " [17.6,18.0)" %target_arch% " prerelease" %clang_cl%
260258if " _%VCINSTALLDIR% _" == " __" goto msbuild-not-found
261259@ rem check if VS2022 is already setup, and for the requested arch
262260if " _%VisualStudioVersion% _" == " _17.0_" if " _%VSCMD_ARG_TGT_ARCH% _" == " _%target_arch% _" goto found_vs2022
@@ -276,13 +274,34 @@ set PLATFORM_TOOLSET=v143
276274goto msbuild-found
277275
278276:msbuild-not-found
279- echo Failed to find a suitable Visual Studio installation.
277+ set " clang_echo = "
278+ if defined clang_cl set " clang_echo = or Clang compiler/LLVM toolset"
279+ echo Failed to find a suitable Visual Studio installation%clang_echo% .
280280echo Try to run in a " Developer Command Prompt" or consult
281281echo https://github.com/nodejs/node/blob/HEAD/BUILDING.md#windows
282282goto exit
283283
284284:msbuild-found
285285
286+ @ rem check if the clang-cl build is requested
287+ if not defined clang_cl goto clang-skip
288+ @ rem x64 is hard coded as it is used for both cross and native compilation.
289+ set " clang_path = %VCINSTALLDIR% \Tools\Llvm\x64\bin\clang.exe"
290+ for /F " tokens=3" %%i in ('" %clang_path% " --version') do (
291+ set clang_version = %%i
292+ goto clang-found
293+ )
294+
295+ :clang-not-found
296+ echo Failed to find Clang compiler in %clang_path% .
297+ goto exit
298+
299+ :clang-found
300+ echo Found Clang version %clang_version%
301+ set configure_flags = %configure_flags% --clang-cl=%clang_version%
302+
303+ :clang-skip
304+
286305set project_generated =
287306:project-gen
288307@ rem Skip project generation if requested.
0 commit comments