Skip to content

Commit 3aca22a

Browse files
committed
build: fix Visual Studio installation detection for Arm64
1 parent 9e7093f commit 3aca22a

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

tools/msvs/vswhere_usability_wrapper.cmd

Lines changed: 6 additions & 2 deletions
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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,11 @@ if defined noprojgen if defined nobuild goto :after-build
242242
set msvs_host_arch=x86
243243
if _%PROCESSOR_ARCHITECTURE%_==_AMD64_ set msvs_host_arch=amd64
244244
if _%PROCESSOR_ARCHITEW6432%_==_AMD64_ set msvs_host_arch=amd64
245+
if _%PROCESSOR_ARCHITECTURE%_==_ARM64_ set msvs_host_arch=arm64
245246
@rem usually vcvarsall takes an argument: host + '_' + target
246247
set vcvarsall_arg=%msvs_host_arch%_%target_arch%
247-
@rem unless both host and target are x64
248-
if %target_arch%==x64 if %msvs_host_arch%==amd64 set vcvarsall_arg=amd64
249-
@rem also if both are x86
250-
if %target_arch%==x86 if %msvs_host_arch%==x86 set vcvarsall_arg=x86
248+
@rem unless both the host and the target are the same
249+
if %target_arch%==%msvs_host_arch% set vcvarsall_arg=%target_arch%
251250

252251
@rem Look for Visual Studio 2022
253252
:vs-set-2022
@@ -257,7 +256,7 @@ echo Looking for Visual Studio 2022
257256
@rem cleared first as vswhere_usability_wrapper.cmd doesn't when it fails to
258257
@rem detect the version searched for
259258
if not defined target_env set "VCINSTALLDIR="
260-
call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" "prerelease"
259+
call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" %target_arch%
261260
if "_%VCINSTALLDIR%_" == "__" goto vs-set-2019
262261
set "WIXSDKDIR=%WIX%\SDK\VS2017"
263262
if defined msi (
@@ -297,7 +296,7 @@ echo Looking for Visual Studio 2019
297296
@rem cleared first as vswhere_usability_wrapper.cmd doesn't when it fails to
298297
@rem detect the version searched for
299298
if not defined target_env set "VCINSTALLDIR="
300-
call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" "prerelease"
299+
call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" %target_arch%
301300
if "_%VCINSTALLDIR%_" == "__" goto msbuild-not-found
302301
set "WIXSDKDIR=%WIX%\SDK\VS2017"
303302
if defined msi (

0 commit comments

Comments
 (0)