@@ -116,51 +116,73 @@ jobs:
116116 pnpm store prune || true
117117 pnpm config set store-dir ~/.pnpm-store
118118 continue-on-error : true
119+ - name : Install ARM64 Build Tools (Windows)
120+ if : ${{ contains(matrix.settings.host, 'windows') && matrix.settings.target == 'aarch64-pc-windows-msvc' }}
121+ run : |
122+ echo "Installing ARM64 Build Tools for aarch64-pc-windows-msvc target..."
123+ curl -o vs_buildtools.exe https://aka.ms/vs/17/release/vs_buildtools.exe
124+ .\vs_buildtools.exe --quiet --wait --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64
125+ shell : cmd
126+ continue-on-error : true
119127 - name : Setup MSVC Environment (Windows)
120128 if : ${{ contains(matrix.settings.host, 'windows') }}
121129 run : |
122- echo "Looking for Visual Studio installation... "
130+ echo "Setting up MSVC environment for target: ${{ matrix.settings.target }} "
123131
124- REM Try different Visual Studio paths
132+ # For ARM64 targets, we need to set up cross-compilation environment
133+ if "%{{ matrix.settings.target }}"=="aarch64-pc-windows-msvc" (
134+ echo "Setting up ARM64 cross-compilation environment..."
135+ REM Try to find ARM64 toolchain
136+ if exist "C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\*\bin\Hostx64\arm64\cl.exe" (
137+ echo "Found ARM64 toolchain in VS2022 BuildTools"
138+ for /d %%i in ("C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\*") do (
139+ set "VCToolsVersion=%%~ni"
140+ set "VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC"
141+ set "PATH=%%i\bin\Hostx64\arm64;%PATH%"
142+ goto :arm64_found
143+ )
144+ )
145+ if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\*\bin\Hostx64\arm64\cl.exe" (
146+ echo "Found ARM64 toolchain in VS2019 BuildTools"
147+ for /d %%i in ("C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\*") do (
148+ set "VCToolsVersion=%%~ni"
149+ set "VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC"
150+ set "PATH=%%i\bin\Hostx64\arm64;%PATH%"
151+ goto :arm64_found
152+ )
153+ )
154+ echo "ARM64 toolchain not found, falling back to x64 toolchain"
155+ goto :setup_x64
156+ :arm64_found
157+ echo "ARM64 toolchain setup completed"
158+ goto :done
159+ )
160+
161+ :setup_x64
162+ echo "Setting up x64 MSVC environment..."
163+ REM Try different Visual Studio paths for x64
125164 if exist "C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" (
126165 echo "Found Visual Studio 2022 BuildTools"
127166 call "C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
128- goto :found
167+ goto :done
129168 )
130-
131169 if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" (
132170 echo "Found Visual Studio 2019 BuildTools"
133171 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
134- goto :found
172+ goto :done
135173 )
136-
137- if exist "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" (
138- echo "Found Visual Studio 2022 Community"
139- call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
140- goto :found
141- )
142-
143- if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" (
144- echo "Found Visual Studio 2019 Community"
145- call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
146- goto :found
147- )
148-
149- echo "Visual Studio not found in standard locations"
150- echo "Trying to find vcvarsall.bat using where command..."
174+ echo "Visual Studio not found, trying to find vcvarsall.bat..."
151175 for /f "tokens=*" %%i in ('where vcvarsall.bat 2^>nul') do (
152176 echo "Found vcvarsall.bat at: %%i"
153177 call "%%i" x64
154- goto :found
178+ goto :done
155179 )
180+ echo "Warning: Visual Studio Build Tools not found"
156181
157- echo "Error: Visual Studio Build Tools not found"
158- echo "Please install Visual Studio Build Tools with C++ workload"
159- exit /b 1
160-
161- :found
162- echo "Visual Studio environment setup completed"
182+ :done
183+ echo "MSVC environment setup completed"
163184 shell : cmd
185+ continue-on-error : true
164186
165187 - name : Install Rust (Windows)
166188 if : ${{ contains(matrix.settings.host, 'windows') }}
0 commit comments