mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
docs: The ARM64 fix for PCH build failures is the arm64 MSBuild
PreferredToolArchitecture has no effect; the MSBuild.exe that runs decides the compiler host. The earlier note claimed otherwise, from a build that passed by luck. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
8a24643d4e
commit
a6e8afdb3c
1 file changed
+9
-7
+9
-7
@@ -21,6 +21,14 @@ $msbuild = "$installPath\MSBuild\Current\Bin\MSBuild.exe"
|
||||
|
||||
(swap `/t:UnitTest` for `/t:PPSSPPWindows` or another project name as needed; drop it entirely to build the whole solution).
|
||||
|
||||
On an ARM64 host, use `$installPath\MSBuild\Current\Bin\arm64\MSBuild.exe` instead. The MSBuild in
|
||||
`Bin\` itself runs emulated and picks the 32-bit x86-hosted compiler (`bin\HostX86\arm64\CL.exe`),
|
||||
which can't always map the precompiled headers into its address space. Builds then fail
|
||||
intermittently, every file of a project at line 1, with `C3859: Failed to create virtual memory for
|
||||
PCH` and `C1076: compiler limit: internal heap limit reached`. That looks like running out of
|
||||
memory, but lowering `/m` or `CL_MPCount` doesn't help, and `/p:PreferredToolArchitecture=arm64`
|
||||
has no effect. The build log's `CL.exe` path shows which host compiler ran.
|
||||
|
||||
`<platform>` is `ARM64` or `x64` - whichever the machine actually is, so look it up rather than
|
||||
picking a default. The output directory follows it (`Windows\<platform>\<configuration>\`), which
|
||||
makes building one and running the other an easy mistake. It is easiest to make on Windows-on-ARM,
|
||||
@@ -75,15 +83,9 @@ UWP has its own solution, `UWP\PPSSPP_UWP.sln`. Build the app with `/t:PPSSPP_UW
|
||||
library such as `/t:CoreUWP`), same MSBuild setup as above:
|
||||
|
||||
```powershell
|
||||
& $msbuild "UWP\PPSSPP_UWP.sln" /t:PPSSPP_UWP /p:Configuration=Debug /p:Platform=<platform> /p:PreferredToolArchitecture=arm64 /m
|
||||
& $msbuild "UWP\PPSSPP_UWP.sln" /t:PPSSPP_UWP /p:Configuration=Debug /p:Platform=<platform> /m
|
||||
```
|
||||
|
||||
On an ARM64 host, pass `/p:PreferredToolArchitecture=arm64`. Without it the UWP
|
||||
projects use the 32-bit x86-hosted compiler (`bin\HostX86\arm64\CL.exe`), which runs emulated and
|
||||
can't map the precompiled headers into its address space. Every file then fails at line 1 with
|
||||
`C3859: Failed to create virtual memory for PCH` and `C1076: compiler limit: internal heap limit
|
||||
reached`. That looks like running out of memory, but lowering `/m` or `CL_MPCount` doesn't help.
|
||||
|
||||
## Android assets
|
||||
|
||||
The APK's `assets/` directory is the repo-root `assets/` directory, wired up by
|
||||
|
||||
Reference in new issue
Block a user