Skip to content

Find the ARM64 toolset by its libraries in build_native.bat - #98

Merged
sambvfx merged 1 commit into
NVIDIAGameWorks:mainfrom
sambvfx:arm64-toolset
Nov 6, 2026
Merged

sambvfx merged 1 commit into
NVIDIAGameWorks:mainfrom
sambvfx:arm64-toolset

Conversation

@sambvfx

@sambvfx sambvfx commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator

The first run of the release workflow (run 42147449740) failed while compiling the ARM64 bridge:

LINK : fatal error LNK1104: cannot open file 'libcpmt.lib'

build_native.bat pinned MSVC 14.44 for ARM64 builds, because a Visual Studio 2022 default such as 14.34 has no ARM64 C++ libraries. windows-latest is now windows-2025-vs2026. Its Visual Studio 2026 installs the 14.44 toolset for x86 and x64 only (VC.14.44.17.14.x86.x64) and the ARM64 libraries for its default toolset (VC.Tools.ARM64). So the pinned build found 14.44's cross-compiler but no ARM64 runtime to link against. The regular CI only builds the x64 bridge, which is why nothing caught this earlier.

The script now picks the ARM64 toolset by whether it has lib\arm64\libcpmt.lib:

  • It uses the default toolset when that has the libraries, as on the Visual Studio 2026 runner.
  • Otherwise it uses the newest installed toolset that does, pinned through -vcvars_ver, as on a Visual Studio 2022 machine with 14.44's ARM64 tools.
  • When no toolset has them, it stops with a message saying which Visual Studio component to add.

The x64 build is unchanged. docs/GETTING_STARTED.md no longer names 14.44.

Testing

  • x64 builds as before on this machine (Visual Studio 2022).
  • ARM64 on this machine, which has no ARM64 libraries, now stops early with the new message instead of failing at link.
  • The toolset picker against three fake Visual Studio layouts: VS 2026 picks its default, VS 2022 falls back to 14.44, and a machine with none fails with the message.
  • Not yet run on the GitHub runner. The release workflow is the only job that builds ARM64, so a rerun after merge is the real check.

🤖 Generated with Claude Code

The ARM64 bridge build pinned MSVC 14.44, since a Visual Studio 2022 default
such as 14.34 has no ARM64 C++ libraries. GitHub's windows-latest is now
Visual Studio 2026, which installs 14.44 for x86 and x64 only and the ARM64
libraries for its default toolset, so the first release run failed to link
with LNK1104 on libcpmt.lib.

The script now uses the default toolset when it has lib\arm64\libcpmt.lib,
otherwise the newest installed toolset that does, and stops with a clear
message when none has them.

Signed-off-by: Sam Bourne <sbourne@nvidia.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sambvfx
sambvfx merged commit 7d2ba9f into NVIDIAGameWorks:main Nov 6, 2026
4 checks passed
kazumasa200 pushed a commit to kazumasa200/rtx-remix-minecraft-26-3 that referenced this pull request Nov 8, 2026
…meWorks#98)

The first run of the release workflow ([run
42147449740](https://github.com/NVIDIAGameWorks/rtx-remix-minecraft/actions/runs/42147449740))
failed while compiling the ARM64 bridge:

```
LINK : fatal error LNK1104: cannot open file 'libcpmt.lib'
```

`build_native.bat` pinned MSVC 14.44 for ARM64 builds, because a Visual
Studio 2022 default such as 14.34 has no ARM64 C++ libraries.
`windows-latest` is now `windows-2025-vs2026`. Its Visual Studio 2026
installs the 14.44 toolset for x86 and x64 only
(`VC.14.44.17.14.x86.x64`) and the ARM64 libraries for its default
toolset (`VC.Tools.ARM64`). So the pinned build found 14.44's
cross-compiler but no ARM64 runtime to link against. The regular CI only
builds the x64 bridge, which is why nothing caught this earlier.

The script now picks the ARM64 toolset by whether it has
`lib\arm64\libcpmt.lib`:
- It uses the default toolset when that has the libraries, as on the
Visual Studio 2026 runner.
- Otherwise it uses the newest installed toolset that does, pinned
through `-vcvars_ver`, as on a Visual Studio 2022 machine with 14.44's
ARM64 tools.
- When no toolset has them, it stops with a message saying which Visual
Studio component to add.

The x64 build is unchanged. `docs/GETTING_STARTED.md` no longer names
14.44.

**Testing**
- x64 builds as before on this machine (Visual Studio 2022).
- ARM64 on this machine, which has no ARM64 libraries, now stops early
with the new message instead of failing at link.
- The toolset picker against three fake Visual Studio layouts: VS 2026
picks its default, VS 2022 falls back to 14.44, and a machine with none
fails with the message.
- Not yet run on the GitHub runner. The release workflow is the only job
that builds ARM64, so a rerun after merge is the real check.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Sam Bourne <sbourne@nvidia.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 7d2ba9f)
Signed-off-by: kazumasa200 <100530291+kazumasa200@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant