Skip to content

Add Windows ARM64 native build support - #443

Merged
SpaiR merged 1 commit into
SpaiR:mainfrom
Enaium:feat/windows-arm64
Oct 27, 2026
Merged

SpaiR merged 1 commit into
SpaiR:mainfrom
Enaium:feat/windows-arm64

Conversation

@Enaium

@Enaium Enaium commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a windowsarm64 native build target to generateLibs, using gdx-jnigen's Windows ARM64 target and the LLVM-MinGW aarch64-w64-mingw32-* wrappers. The x86_64 Windows path is refactored into a shared createWindowsTarget() helper and keeps its current output filename.

Also:

  • applies a vendor patch adding <exception> to imgui-node-editor's crude_json.cpp, required by the libc++ used by LLVM-MinGW;
  • adds LWJGL natives-windows-arm64 classifiers to imgui-app;
  • documents the direct Gradle build path for Windows ARM64.

Type of change

  • New feature (non-breaking change which adds functionality)

Notes for reviewer

  • Tested on Windows 11 ARM64 (Apple Silicon VM): generateLibs -Denvs=windowsarm64 -Dlocal succeeds; output windowsarm64/imgui-java64.dll has PE machine 0xAA64. The existing windows64 target still builds (0x8664).
  • JNI smoke on the ARM64 DLL produced a font atlas and draw data successfully. On a combined test branch with the SDL_Renderer backend, the example rendered through SDL's software renderer (no GPU): 640x360 readback with the expected text pixels.
  • imgui-app now carries ARM64 LWJGL natives, but bin/ and the published app jar still contain only the x64 ImGui DLL; shipping/bundling the ARM64 DLL is left to the release/CI path.
  • buildSrc/scripts/build.sh windowsarm64 / FreeType vendoring is not wired: a FreeType Windows ARM64 build needs a native autotools environment. The documented direct Gradle path builds without FreeType, like the other direct paths.

Add a windowsarm64 target to generateLibs using the LLVM-MinGW clang
wrappers, with a shared createWindowsTarget() helper keeping the
existing x86_64 path intact.

LLVM-MinGW builds against libc++, which does not pull <exception>
transitively, so patch imgui-node-editor's crude_json.cpp through the
existing vendor patch flow.

Bundle the LWJGL natives-windows-arm64 classifiers in imgui-app and
document the direct Gradle build path.

Co-authored-by: DeepSeek <noreply@deepseek.com>
@SpaiR SpaiR added feat New feature or request build Build system, Gradle, CI, publishing, native toolchain labels Oct 27, 2026
@SpaiR
SpaiR merged commit 8fb3e10 into SpaiR:main Oct 27, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Build system, Gradle, CI, publishing, native toolchain feat New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants