Skip to content

Implement unifies Windows ARM64X dll(s) for Windows ARM64 platform. - #140

Merged
tregubovav-dev merged 27 commits into
mainfrom
arm64X
Aug 31, 2026
Merged

tregubovav-dev merged 27 commits into
mainfrom
arm64X

Conversation

@tregubovav-dev

Copy link
Copy Markdown
Contributor

This PR implements building and packaging Windows ARM64X binaries that can be used by ARM64 and ARM64EC applications

  • The libcrypto-3-arm64.dll, libssl-3-arm64.dll engines\*.dll and providers\legacy.dll are now ARM64X libraries that export OpenSSL routines for native arm64 and arm64ec applications
  • The openssl.exe is native arm64 application.

arm64X binaries constists of native arm64 and arm64ec code
"cleanup-artifacts" job must delete "slice-*" artifacts together with other temporary artifacts
Use linker .rsp file instead of command-line parameters
This ensures that the internal directory structure of providers/ (separating common/, implementations/, and standalone provider drivers) is preserved during the slice staging phase
1. Core DLLs: Links libcrypto-3-arm64.dll and libssl-3-arm64.dll using both /DEF: and /DEFARM64NATIVE: to generate dual-mode import thunks in libcrypto.lib

2. Selective Provider Linking: Isolates module-specific drivers (*legacy*.obj), implementations (liblegacy-lib-*.obj), and common provider context objects (providers\common\*.obj) while strictly excluding unneeded default/base provider objects.

3. Selective Engine Linking: Fuses engine-specific object files (*<engine>*.obj) with libcrypto.lib
For legacy.dll: Select only *legacy*.obj files, and exclude any files starting with libdefault- or libcrypto-

For engines: Select only *<engine_name>*.obj
1. Stage liblegacy.lib and libcommon.lib during compile-windows-arm64x-slices

2.1 Merge liblegacy.lib and libcommon.lib into ARM64X static libraries using lib.exe /MACHINE:ARM64X

2.2 Link legacy.dll using legacy-dso-*.obj, the merged liblegacy.lib, the merged libcommon.lib, and libcrypto.lib

2.3 Link each engine using its specific *-dso-*.obj and libcrypto.lib
Stage all engine DSO objects across the build tree
@tregubovav-dev tregubovav-dev self-assigned this Aug 31, 2026
@tregubovav-dev
tregubovav-dev merged commit 94fa2cd into main Aug 31, 2026
80 checks passed
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.

2 participants