@@ -187,8 +187,6 @@ if defined nosnapshot set configure_flags=%configure_flags% --without-snap
187
187
if defined nonpm set configure_flags = %configure_flags% --without-npm
188
188
if defined nocorepack set configure_flags = %configure_flags% --without-corepack
189
189
if 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
192
190
if defined release_urlbase set configure_flags = %configure_flags% --release-urlbase=%release_urlbase%
193
191
if defined download_arg set configure_flags = %configure_flags% %download_arg%
194
192
if defined enable_vtune_arg set configure_flags = %configure_flags% --enable-vtune-profiling
@@ -256,7 +254,7 @@ echo Looking for Visual Studio 2022
256
254
@ rem cleared first as vswhere_usability_wrapper.cmd doesn't when it fails to
257
255
@ rem detect the version searched for
258
256
if 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%
260
258
if " _%VCINSTALLDIR% _" == " __" goto msbuild-not-found
261
259
@ rem check if VS2022 is already setup, and for the requested arch
262
260
if " _%VisualStudioVersion% _" == " _17.0_" if " _%VSCMD_ARG_TGT_ARCH% _" == " _%target_arch% _" goto found_vs2022
@@ -276,13 +274,34 @@ set PLATFORM_TOOLSET=v143
276
274
goto msbuild-found
277
275
278
276
: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% .
280
280
echo Try to run in a " Developer Command Prompt" or consult
281
281
echo https://github.com/nodejs/node/blob/HEAD/BUILDING.md#windows
282
282
goto exit
283
283
284
284
:msbuild-found
285
285
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
+
286
305
set project_generated =
287
306
:project-gen
288
307
@ rem Skip project generation if requested.
0 commit comments