Skip to content

Release an iOS xcframework SDK; release 0.7.1 - #57

Merged
adamski merged 3 commits into
mainfrom
adam/ios-prebuilt
Oct 3, 2026
Merged

adamski merged 3 commits into
mainfrom
adam/ios-prebuilt

Conversation

@adamski

@adamski adamski commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

Adds an iOS prebuilt SDK to the release, so iOS apps can link a released libreplicant_client instead of a local cargo build.

Changes

  • release.yml: the macOS job also builds aarch64-apple-ios and aarch64-apple-ios-sim (IPHONEOS_DEPLOYMENT_TARGET=16.0). It packages them as a static libreplicant_client.xcframework (slices ios-arm64 and ios-arm64-simulator) with the usual headers, in replicant-sdk-<version>-ios-xcframework.tar.gz.
  • release.yml: adds workflow_dispatch for dry runs. A manual run uploads artifacts but doesn't publish a release (create-release runs only on tag pushes). Archive names use SDK_VERSION: the tag name for tag builds, as before, and dev-<sha> for manual runs.
  • FetchReplicant.cmake: on CMAKE_SYSTEM_NAME=iOS it selects the xcframework asset and links it into replicant_client. It needs CMake 3.28+ on iOS, supports static linking only, and gives a clear error for releases without an iOS asset (the first ones with it are 0.6.5 and 0.7.1). Behaviour on macOS, Linux and Windows is unchanged.
  • Releases 0.7.1. The same CI change is on release/0.6 for a 0.6.5 backport.

Simulator note

CMake picks the xcframework slice from CMAKE_OSX_SYSROOT at configure time. To switch device and simulator with xcodebuild -sdk on one project, set CMAKE_XCODE_LINK_BUILD_PHASE_MODE=KNOWN_LOCATION. There is no x86_64 simulator slice.

Verification

  • Device and simulator Release builds succeed locally for 0.7.1 and 0.6.5. All slices are thin arm64, platform 2 (device) or 7 (simulator), minos 16.0.
  • A throwaway iOS CMake project (Xcode generator) links through the real FetchReplicant.cmake download and extract path, for device and arm64 simulator, on both versions.
  • The macOS fetch still returns the universal asset with an unchanged hash.
  • actionlint shows only the existing softprops/action-gh-release@v1 warning.

Only CI can verify the GitHub job and the release upload. After merge, run gh workflow run release.yml --ref main and check the replicant-sdk-macos artifact before tagging v0.7.1.

The macOS release job also builds aarch64-apple-ios and aarch64-apple-ios-sim
at IPHONEOS_DEPLOYMENT_TARGET 16.0 and publishes
replicant-sdk-<tag>-ios-xcframework.tar.gz: include/ plus a static
lib/libreplicant_client.xcframework.

workflow_dispatch builds and uploads every archive as workflow artifacts
(named dev-<sha>) without publishing a release.
On CMAKE_SYSTEM_NAME iOS, fetch_replicant() selects the ios-xcframework
asset and links libreplicant_client.xcframework (CMake 3.28+). A release
without the asset fails naming 0.6.5 and 0.7.1 as the first with one.
Other platforms are unchanged.
@adamski
adamski merged commit ea23514 into main Oct 3, 2026
7 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.

1 participant