feat: add windows arm64 platform support - #266
Merged
devopvoid merged 5 commits intoSep 6, 2026
Merged
Conversation
Signed-off-by: Joshua Castle <[email protected]>
Signed-off-by: Joshua Castle <[email protected]>
The parent pom sets the classifier and the module name. The jni pom selects the ARM64 generator platform, the multi config build type, and the arm64 toolchain file. The new profiles have the same structure as the linux cross profiles. They follow the host-activated windows profiles in the pom, so their properties win on the amd64 cross runner. The macos cross profile uses the same declaration order. The CI lane has the same shape as the linux_arm lane: the cross build skips the tests, because arm64 binaries cannot run on the x86_64 runner. The JNI shim keeps the ClangCL toolset of the x86_64 build, so the ABI stays consistent with the clang-built engine.
The release workflow gains the windows_arm64 lane. The release action builds it with the windows-aarch64 profile and skips the tests on the cross runner, like the linux arm lanes. The publish job verifies the new classifier and the release profile of the webrtc module attaches it to the deployment bundle.
Owner
|
Thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds windows-aarch64 as a seventh platform. The natives cross compile on the windows-2022 runners, in the same pattern as the linux arm lanes. The build pipeline and the release pipeline both produce the new classifier.
The platform support was written by Joshua Castle (Kas-tle) for a downstream fork of this library, where Windows ARM64 natives have shipped since late 2025. His two commits are included with authorship preserved:
-Wno-nullability-completenessas an MSVC warning level option. The fix adds the/clang:prefix.The three commits on top adapt his work to this repository:
attach-natives-allprofile, so the single Central deployment includes it.No Java change is needed. The native loader already derives the library name from the OS and the architecture, so a Windows ARM64 JVM picks up the new DLL as is.
Validation on my fork: this run on current main builds all seven platforms, and the six existing ones build as before. A windows-11-arm runner also executed the new natives: it installed the exact jar from the build lane and ran the complete test suite with an arm64 JDK. All 122 tests passed, and the PE header of the DLL shows ARM64. That test job is not part of this PR, because the current convention is that cross lanes skip tests. Another PR by me can add native test lanes for the existing cross compiled platforms, and the Windows ARM64 lane can follow the same way. The validation run carries the changes of that PR as well, which is how the natives were executed.