Skip to content

Commit 886504f

Browse files
Blackhexdanielleadams
authored andcommitted
build: fix Visual Studio installation detection for Arm64
PR-URL: #46420 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Richard Lau <[email protected]>
1 parent 36ea9e7 commit 886504f

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

tools/msvs/vswhere_usability_wrapper.cmd

+6-2
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@
55

66
@if not defined DEBUG_HELPER @ECHO OFF
77
setlocal
8-
if "%~2"=="prerelease" set VSWHERE_WITH_PRERELEASE=1
8+
if "%~3"=="prerelease" set VSWHERE_WITH_PRERELEASE=1
99
set "InstallerPath=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
1010
if not exist "%InstallerPath%" set "InstallerPath=%ProgramFiles%\Microsoft Visual Studio\Installer"
1111
if not exist "%InstallerPath%" goto :no-vswhere
1212
:: Manipulate %Path% for easier " handeling
1313
set "Path=%Path%;%InstallerPath%"
1414
where vswhere 2> nul > nul
1515
if errorlevel 1 goto :no-vswhere
16-
set VSWHERE_REQ=-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64
16+
if "%2"=="arm64" (
17+
set VSWHERE_REQ=-requires Microsoft.VisualStudio.Component.VC.Tools.ARM64
18+
) else (
19+
set VSWHERE_REQ=-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64
20+
)
1721
set VSWHERE_PRP=-property installationPath
1822
set VSWHERE_LMT=-version %1
1923
vswhere -prerelease > nul

vcbuild.bat

+5-5
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,12 @@ if defined noprojgen if defined nobuild goto :after-build
246246
set msvs_host_arch=x86
247247
if _%PROCESSOR_ARCHITECTURE%_==_AMD64_ set msvs_host_arch=amd64
248248
if _%PROCESSOR_ARCHITEW6432%_==_AMD64_ set msvs_host_arch=amd64
249+
if _%PROCESSOR_ARCHITECTURE%_==_ARM64_ set msvs_host_arch=arm64
249250
@rem usually vcvarsall takes an argument: host + '_' + target
250251
set vcvarsall_arg=%msvs_host_arch%_%target_arch%
251-
@rem unless both host and target are x64
252+
@rem unless both the host and the target are the same
252253
if %target_arch%==x64 if %msvs_host_arch%==amd64 set vcvarsall_arg=amd64
253-
@rem also if both are x86
254-
if %target_arch%==x86 if %msvs_host_arch%==x86 set vcvarsall_arg=x86
254+
if %target_arch%==%msvs_host_arch% set vcvarsall_arg=%target_arch%
255255

256256
@rem Look for Visual Studio 2022
257257
:vs-set-2022
@@ -261,7 +261,7 @@ echo Looking for Visual Studio 2022
261261
@rem cleared first as vswhere_usability_wrapper.cmd doesn't when it fails to
262262
@rem detect the version searched for
263263
if not defined target_env set "VCINSTALLDIR="
264-
call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" "prerelease"
264+
call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" %target_arch% "prerelease"
265265
if "_%VCINSTALLDIR%_" == "__" goto vs-set-2019
266266
set "WIXSDKDIR=%WIX%\SDK\VS2017"
267267
if defined msi (
@@ -301,7 +301,7 @@ echo Looking for Visual Studio 2019
301301
@rem cleared first as vswhere_usability_wrapper.cmd doesn't when it fails to
302302
@rem detect the version searched for
303303
if not defined target_env set "VCINSTALLDIR="
304-
call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" "prerelease"
304+
call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" %target_arch% "prerelease"
305305
if "_%VCINSTALLDIR%_" == "__" goto msbuild-not-found
306306
set "WIXSDKDIR=%WIX%\SDK\VS2017"
307307
if defined msi (

0 commit comments

Comments
 (0)