Repository navigation
[openssl] Support arm64ec - #54329
Merged
Billy O'Neal (BillyONeal) merged 2 commits intoOct 6, 2026
Merged
Billy O'Neal (BillyONeal) merged 2 commits into
Billy O'Neal (BillyONeal) merged 2 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The architecture mapping, required no-asm option, and version metadata are consistent and narrowly scoped.
Review effort: Balanced
Findings: None
What changed in this PR
Adds native ARM64EC support to the OpenSSL port while preserving existing architecture behavior.
Changes:
- Maps ARM64EC to
VC-WIN64-ARMwith assembly disabled. - Increments the OpenSSL port revision and version metadata.
| File | Description |
|---|---|
ports/openssl/windows/portfile.cmake |
Configures ARM64EC builds. |
ports/openssl/vcpkg.json |
Increments the port version. |
versions/baseline.json |
Updates the baseline revision. |
versions/o-/openssl.json |
Registers the new port revision. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
opensslfails on the nativearm64ecarchitecture (for exampletriplets/community/arm64ec-windows.cmake) becausewindows/portfile.cmakedoes not map it to an OpenSSL target:OpenSSL has no ARM64EC configure target (openssl/openssl#16482 was closed as not planned). The usual approach is to build the
VC-WIN64-ARMtarget with/arm64ECandno-asm(see openssl/openssl#30361). This PR does the same:VC-WIN64-ARMis the targetarm64-windowsused before [OpenSSL] Enabling Arm64 assembly on Windows by using clang #34711 switched it toVC-WIN64-CLANGASM-ARM. The vcpkg toolchain already supplies/arm64ECinCFLAGSand CMake's detected/machine:ARM64EC(shared) and/machine:ARM64X(static) inLDFLAGSandARFLAGS, so no extra flags are needed.no-asmis explicit.VC-WIN64-ARMhas noasm_archtoday, but OpenSSL's AArch64 assembly uses registers that the ARM64EC ABI does not allow (x13, x14, x23, x24, x28, v16-v31), so it must stay off even if the target changes.VC-WIN64-ARMdefinesOPENSSL_SYS_WIN_COREand linksonecore.lib. That only changesOPENSSL_isservice()andOPENSSL_showfatal()(no message box or event log). The resulting DLLs import the usual desktop DLLs (KERNEL32,WS2_32,ADVAPI32,CRYPT32).libcrypto-3-arm64.dllandlibssl-3-arm64.dll(OpenSSL's-arm64multilib suffix, as onarm64-windows). Ambiguous Windows ARM DLL naming (arm64 vs arm64ec) causes incompatibility and confusion openssl/openssl#30495 tracks the naming ambiguity upstream.x86, x64, arm and arm64 are unchanged.
Tested with MSVC 19.42.34439 (x64-hosted ARM64 cross tools), using overlay triplets that include
triplets/community/arm64ec-windows.cmakeand chainload a toolchain for that toolset. My local Visual Studio does not have the ARM64EC component.Before:
vcpkg install openssl:arm64ec-windowsfails with the error above.After:
openssl[core,tools]builds for dynamicarm64ec-windowsand for a static-library variant (VCPKG_LIBRARY_LINKAGE static, dynamic CRT). Configure reportsVC-WIN64-ARM. There are no post-build warnings, so vcpkg'sarm64ecarchitecture checks pass.dumpbin:libcrypto-3-arm64.dll,libssl-3-arm64.dll,legacy.dllandopenssl.exeare AMD64 images with ARM64EC hybrid metadata. All import library members and all static library objects areA641 (ARM64EC).curl[core,openssl,tool]builds and links against it for both triplets.The build machine is x64, so the binaries were not run on ARM64 hardware. We ship a
no-asmARM64EC OpenSSL from an overlay port today; this would let us use the upstream port once our triplets move to nativearm64ec.Changes comply with the maintainer guide.
SHA512s are updated for each updated download. (No downloads changed.)
The "supports" clause reflects platforms that may be fixed by this new version. (No "supports" clause; unchanged.)
Any fixed CI baseline entries are removed from that file. (None; CI does not test
arm64ec.)Any patches that are no longer applied are deleted from the port's directory. (None.)
The version database is fixed by rerunning
./vcpkg x-add-version --alland committing the result.Only one version is added to each modified port's versions file.
This change was prepared with help from GitHub Copilot.